1 #ifndef _evt_ShowerSimData_h_
2 #define _evt_ShowerSimData_h_
4 #include <utl/CoordinateSystemPtr.h>
5 #include <utl/ShowerParticleIterator.h>
6 #include <utl/ShowerParticleList.h>
7 #include <utl/VParticleProperties.h>
8 #include <utl/MultiTabulatedFunction.h>
9 #include <utl/Vector.h>
10 #include <utl/Point.h>
11 #include <utl/TimeStamp.h>
12 #include <utl/AugerUnits.h>
13 #include <utl/LameShadowPtr.h>
14 #include <utl/config.h>
15 #include <utl/ShadowPtr.h>
16 #include <utl/Branch.h>
17 #include <utl/IteratorRange.h>
19 #include <evt/VShowerGeometryProducer.h>
20 #include <evt/VGaisserHillasParameter.h>
21 #include <evt/AtmosphereParameters.h>
22 #include <evt/GenParticle.h>
29 class ShowerSimData_ROOT;
35 class RadioSimulation;
309 {
return fPrimaryCherenkovPhotons.GetTabulatedFunction(wavelength); }
311 {
return fPrimaryCherenkovPhotons.GetTabulatedFunction(wavelength); }
313 bool HasPrimaryCherenkovPhotons(
const int wavelength)
const
314 {
return fPrimaryCherenkovPhotons.HasLabel(wavelength); }
317 { fPrimaryCherenkovPhotons.AddTabulatedFunction(cp, wavelength); }
321 {
return fPrimaryCherenkovBeamPhotons.GetTabulatedFunction(wavelength); }
323 {
return fPrimaryCherenkovBeamPhotons.GetTabulatedFunction(wavelength); }
324 bool HasPrimaryCherenkovBeamPhotons(
const int wavelength)
const
325 {
return fPrimaryCherenkovBeamPhotons.HasLabel(wavelength); }
327 { fPrimaryCherenkovBeamPhotons.AddTabulatedFunction(cp, wavelength); }
bool HasDirection() const
Check initialization of shower geometry.
PhotonIterator LastCherenkovBeamProductionWavelength()
double GetEnergyCutoff(const ProfileType type=eElectron) const
Get the energy cutoff for which the profile of charged particles was calculated.
pointer with built-in initialization, deletion, deep copying
utl::CoordinateSystemPtr GetLocalCoordinateSystem() const
Get the Auger coordinate system associated to the shower core position.
double fMagneticFieldInclination
int GetPrimaryParticle() const
Get the type of the shower primary particle.
Iterator to retrieve particles from utl::VShowerParticlList.
LaserData & GetLaserData()
Get the laser data.
ShowerParticleIterator ParticlesEnd(const CoordinateSystemPtr cs) const
boost::transform_iterator< LabeledObjectFunctor, typename MultiObjectContainer::iterator, LabeledTabulatedFunction > Iterator
void SetMagneticFieldDeclination(const double magneticFieldDeclination)
Set the declination of the Earth's magnetic field used in CORSIKA/REAS simulation.
utl::CoordinateSystemPtr fShowerCS
const utl::TabulatedFunction & GetdEdX() const
Get the energy deposit of the shower.
void SetMaxCherenkovWavelength(const double wl)
Set the maximum Cherenkov wavelength for photons in longitudinal profile.
const evt::AtmosphereParameters & GetAtmosphereParameters() const
Get the Atmosphere profile used to simulate the shower.
PhotonIterator LastCherenkovBeamWavelength()
bool HasLaserData() const
Check initialization of the LaserData.
utl::TabulatedFunction & GetCherenkovBeamProductionPhotons(const int wavelength)
charged particles profile
std::vector< utl::Point > fSimCores
const utl::TimeStamp & GetTimeStamp() const
Get the TimeStamp of the absolute shower core-time.
void SetMuonNumber(const double nmuon)
Set the number of muons which reach ground level.
utl::ShowerParticleIterator GroundParticlesEnd() const
ShowerSimData(const evt::VShowerGeometryProducer &p)
double GetMinRadiusCut() const
Get the minimum radius from shower axis for which there are valid particles in the shower...
double GetMinCherenkovWavelength() const
Get the minimal Cherenkov wavelength for photons in longitudinal profile.
const utl::TabulatedFunction & GetCherenkovBeamProductionPhotons(const int wavelength) const
Get the cherenkov beam production along the shower axis.
void MakeLaserData()
Make the LaserData.
utl::ShadowPtr< evt::VGaisserHillasParameter > fGHParameters
bool HasCherenkovBeamProductionPhotons(const int wavelength) const
const evt::VGaisserHillasParameter & GetGHParameters() const
Get the Gaisser-Hillas parameters of the shower.
void AddCherenkovBeamPhotons(const utl::TabulatedFunction &cp, const int wavelength)
void MakeRadioSimulation()
Make the RadioSimulation.
double GetMuonNumber() const
Get the number of muons which reach ground level.
utl::ShadowPtr< evt::VShowerGeometryProducer > fShowerGeometryProducer
utl::ShowerParticleIterator GroundCherenkovEnd(const utl::AttributeMap &am) const
std::map< utl::AttributeMap, utl::ShadowPtr< utl::ShowerParticleList > > fGroundCherenkov
Iterator TabulatedFunctionsBegin()
double fCalorimetricEnergy
Class to hold collection (x,y) points and provide interpolation between them.
bool HasCherenkovPhotons(const int wavelength) const
Iterator TabulatedFunctionsEnd()
std::map< utl::AttributeMap, utl::ShadowPtr< utl::ShowerParticleList > >::const_iterator GetGroundCherenkovDataEnd() const
void SetEnergyCutoff(const double energy, const ProfileType type=eElectron)
Set the enegy cutoff for which the profile of charged particles was calculated.
bool HasGroundParticles() const
std::map< std::string, std::string > AttributeMap
Data structure for a radio simulation (including several SimRadioPulses)
void SetMaxRadiusCut(const double maxR)
const utl::TabulatedFunction & GetFluorescencePhotons(const int wavelength) const
Get the fluorescence photons generated along the shower axis.
double fElectromagneticEnergy
bool HasFluorescencePhotons(const int wavelength) const
ConstPhotonIterator FirstCherenkovWavelength() const
double GetElectromagneticEnergy() const
Get the electromagnetic energy of the shower.
const utl::TabulatedFunction & GetCherenkovBeamPhotons(const int wavelength) const
Get the beam of Cherenkov beam photons along the shower axis.
ConstPhotonIterator LastCherenkovWavelength() const
void AddTabulatedFunction(const int label)
void SetGroundParticleCoordinateSystemAzimuth(const double azimuth)
Set the azimuth angle of the shower. Angle in x-y plane wrt. to the x axis (0 is from east)...
utl::ShowerParticleList & GetGroundCherenkov(const utl::AttributeMap &am)
bool HasRadioSimulation() const
Check initialization of the RadioSimulation.
const utl::Point & GetSimCore(const int i) const
double fMagneticFieldDeclination
utl::ShadowPtr< utl::Vector > fCachedDirection
void MakeGHParameters(const evt::VGaisserHillasParameter &ghPar)
Make the Gaisser-Hillas parameters of the shower.
double GetCalorimetricEnergy() const
Get the calorimetric energy of the shower.
bool HasCherenkovBeamPhotons(const int wavelength) const
double GetMaxCherenkovWavelength() const
Get the maximal Cherenkov wavelength for photons in longitudinal profile.
boost::shared_ptr< const VParticleProperties > ParticlePropertiesPtr
PhotonIterator FirstFluorescenceWavelength()
void MakedEdX(const utl::TabulatedFunction &dEdX)
Make the energy deposit of the shower.
utl::TabulatedFunction & GetFluorescencePhotons(const int wavelength)
utl::CoordinateSystemPtr fParticleCS
boost::transform_iterator< LabeledObjectFunctor, typename MultiObjectContainer::const_iterator, LabeledTabulatedFunction > ConstIterator
const utl::ShowerParticleList & GetGroundCherenkov(const utl::AttributeMap &am) const
PhotonIterator FirstCherenkovBeamProductionWavelength()
ShowerParticleIterator ParticlesBegin(const CoordinateSystemPtr cs) const
A TimeStamp holds GPS second and nanosecond for some event.
bool HasPosition() const
Check initialization of shower geometry.
Interface class to access Shower Simulated parameters.
PhotonIterator FirstCherenkovWavelength()
const LaserData & GetLaserData() const
boost::shared_ptr< const CoordinateTransformer > CoordinateSystemPtr
Shared pointer for coordinate systems.
const utl::TabulatedFunction & GetCherenkovPhotons(const int wavelength) const
Get the Cherenkov photon production along the shower axis.
int GetShowerNumber() const
Get the number of the shower in the file.
double GetXFirst() const
Get depth of first interaction.
void MakeLongitudinalProfile(const utl::TabulatedFunction &lp, const ProfileType type=eCharged)
Make the longitudinal charge profile of the shower.
double GetDistanceOfShowerMaximum() const
Get the geometrical distance of the shower maximum from the core.
bool HasGroundCherenkov(const utl::AttributeMap &am) const
double GetMagneticFieldStrength() const
Get the absolute strength of the Earth's magnetic field used in CORSIKA/REAS simulation.
const utl::Vector & GetDirection() const
Get the direction of the shower axis. This is the true direction of shower movement.
utl::TabulatedFunction & GetLongitudinalProfile(const ProfileType type=eCharged)
void SetMagneticFieldAzimuth(const double magneticFieldAzimuth)
Set the azimuth angle of the Earth's magnetic field used in CORSIKA/REAS simulation.
TabulatedFunction & GetTabulatedFunction(const int label=0)
Returns the TabulatedFunction for /par source, throws an exception if na.
utl::CoordinateSystemPtr GetGroundParticleCoordinateSystem() const
RadioSimulation & GetRadioSimulation()
Get the radio simulation data.
double GetMagneticFieldZenith() const
Get the zenith angle (Auger convention, limited btw. 0 and 90 deg) of the Earth's magnetic field used...
utl::MultiTabulatedFunction::ConstIterator ConstPhotonIterator
PhotonIterator LastFluorescenceWavelength()
const utl::Point & GetPosition() const
Get the position of the shower core.
utl::MultiTabulatedFunction fCherenkovPhotons
void SetCalorimetricEnergy(const double energy)
Set the calorimetric energy of the shower.
double GetMaxRadiusCut() const
Get the maximum radius cut used during shower generation.
Cherenkov photon production (differential)
utl::LameShadowPtr< LaserData > fLaserData
void MakeAtmosphereParameters(const evt::AtmosphereParameters &par)
Provide the parameters of the atmospheric profile used to simulate the shower.
void SetEnergy(const double theEnergy)
Set the energy of the shower primary particle.
void SetXmaxMu(const double XmaxMu)
void SetElectromagneticEnergy(const double energy)
Set the electromagnetic energy of the shower.
#define OFFLINE_MAKE_CONST_ITERATOR_RANGE(_ConstIterator_, _NamePrefix_)
utl::ShowerParticleList & GetGroundParticles()
Get particle list Proxy.
void CheckGeometry() const
double GetEnergy() const
Get the energy of the shower primary particle.
double fMagneticFieldStrength
void SetMinCherenkovWavelength(const double wl)
Set the maximum Cherenkov wavelength for photons in longitudinal profile.
PhotonIterator FirstCherenkovBeamWavelength()
utl::MultiTabulatedFunction fCherenkovBeamPhotons
double GetMuonWeightScale() const
Get the muon weight scale.
void AddCherenkovBeamProductionPhotons(const utl::TabulatedFunction &fp, const int wavelength)
void MakeGroundParticles()
void MakeGroundCherenkov(const utl::AttributeMap &am)
void SetXFirst(const double xFirst)
Set depth of first interaction.
PhotonIterator LastCherenkovWavelength()
utl::LameShadowPtr< RadioSimulation > fRadioSimulation
ConstPhotonIterator LastCherenkovBeamProductionWavelength() const
bool HasdEdX() const
Check initialization of the energy deposit.
void MakeLongitudinalProfile(const ProfileType type=eCharged)
double fGroundParticleCoordinateSystemAzimuth
ConstPhotonIterator FirstFluorescenceWavelength() const
double fMinCherenkovWavelength
Data structure for Laser simulation and reconstruction.
std::map< utl::AttributeMap, utl::ShadowPtr< utl::ShowerParticleList > >::const_iterator GetGroundCherenkovDataBegin() const
Get cherenkov ground photons list Proxy.
void AddCherenkovPhotons(const utl::TabulatedFunction &cp, const int wavelength)
void SetNmu(const double Nmu)
utl::ShadowPtr< utl::ShowerParticleList > fGroundParticles
double fMaxCherenkovWavelength
utl::CoordinateSystemPtr fLocalCS
ROOT wise implementation of streaming for class ShowerSimData.
ConstPhotonIterator FirstCherenkovBeamWavelength() const
void SetPrimaryParticle(const int type)
Set the type of the shower primary particle.
bool HasAtmosphereParameters() const
Check if the Atmosphere profile used to simulate the shower is known.
void AddSimCore(const utl::Point &pos)
double GetMagneticFieldDeclination() const
Get the declination of the Earth's magnetic field used in CORSIKA/REAS simulation.
utl::ShadowPtr< utl::Point > fCachedPosition
utl::MultiTabulatedFunction fLongitudinalProfile
utl::ParticlePropertiesPtr fPrimaryProperties
void SetGroundParticleCoordinateSystemZenith(const double zenith)
Set the zenith angle of the shower. Room angle between z-axis and direction from where the shower is ...
bool HasGeometry() const
check initialization of shower geometry
electron/positron profile
double GetMagneticFieldInclination() const
Get the inclination of the Earth's magnetic field used in CORSIKA/REAS simulation.
const RadioSimulation & GetRadioSimulation() const
std::string GetShowerRunId() const
Get the run id for the shower.
void MakeGeometry(const utl::Point &pointOnShowerAxis)
initialize the shower geometry. Pos is a point on the shower axis, but not necessarily the core ...
void SetShowerNumber(const int sid)
utl::MultiTabulatedFunction::Iterator PhotonIterator
An iterator over the photon traces of the different wavelengths.
bool HasGHParameters() const
Check initialization of the Gaisser-Hillas parameters.
double fDistanceOfShowerMaximum
utl::TabulatedFunction & GetCherenkovBeamPhotons(const int wavelength)
Interface class for access to the Gaisser-Hillas parameters.
void AddFluorescencePhotons(const utl::TabulatedFunction &fp, const int wavelength)
void SetMinRadiusCut(const double minR)
Set the minimum radius cut.
void SetDistanceOfShowerMaximum(const double parDistance)
Set the geometrical distance of the shower maximum from the core.
evt::GenParticle fParticleTree
double fGroundParticleCoordinateSystemZenith
const utl::ShowerParticleList & GetGroundParticles() const
ConstPhotonIterator FirstCherenkovBeamProductionWavelength() const
ConstPhotonIterator LastFluorescenceWavelength() const
bool HasTimeStamp() const
Check initialization of the TimeStamp.
void MakeTimeStamp(const utl::TimeStamp &ts)
Make the TimeStamp of the shower.
utl::MultiTabulatedFunction fFluorescencePhotons
void SetParticleTree(const evt::GenParticle &partTree)
Set the tree of particles in the first few generations.
A collection of TabulatedFunction.
void SetMuonWeightScale(const double scale)
Set the muon weight scale.
void SetMagneticFieldStrength(const double magneticFieldStrength)
Set the absolute strength of the Earth's magnetic field used in CORSIKA/REAS simulation.
utl::ShadowPtr< evt::AtmosphereParameters > fAtmosphereParameters
double GetMagneticFieldAzimuth() const
Get the azimuth angle of the Earth's magnetic field used in CORSIKA/REAS simulation.
Interface class for accessing a list of particles from a shower file.
const evt::GenParticle & GetParticleTree() const
Get the tree of particles in the first few generations as simulated by the MC.
double GetGroundParticleCoordinateSystemZenith() const
Get the zenith angle of the shower. Room angle between z-axis and direction from where the shower is ...
void SetShowerRunId(const std::string srid)
void SetXInject(const double xInject)
Set depth of particle injection.
double GetGroundParticleCoordinateSystemAzimuth() const
Get the azimuth angle of the shower. Angle in x-y plane wrt. to the x axis (0 is from east)...
void SetMagneticFieldInclination(const double magneticFieldInclination)
Set the inclination of the Earth's magnetic field used in CORSIKA/REAS simulation.
utl::ShowerParticleIterator GroundParticlesBegin() const
utl::ShadowPtr< utl::TimeStamp > fTimeStamp
utl::ShowerParticleIterator GroundCherenkovBegin(const utl::AttributeMap &am) const
bool HasLabel(const int label) const
bool HasLongitudinalProfile(const ProfileType type=eCharged) const
Check initialization of the longitudinal profile.
Class to hold the standard parameters used to specify an atmospheric profile.
ConstPhotonIterator LastCherenkovBeamWavelength() const
utl::CoordinateSystemPtr GetShowerCoordinateSystem() const
utl::TabulatedFunction & GetCherenkovPhotons(const int wavelength)
double GetXInject() const
Get depth particle injection.
const utl::TabulatedFunction & GetLongitudinalProfile(const ProfileType type=eCharged) const
Get the longitudinal charge profile of the shower.
bool HasParticleTree() const
Check if the MC data have been filled in.
utl::MultiTabulatedFunction fCherenkovBeamProductionPhotons