ShowerSimData.h
Go to the documentation of this file.
1 #ifndef _evt_ShowerSimData_h_
2 #define _evt_ShowerSimData_h_
3 
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>
18 
19 #include <evt/VShowerGeometryProducer.h>
20 #include <evt/VGaisserHillasParameter.h>
21 #include <evt/AtmosphereParameters.h>
22 #include <evt/GenParticle.h>
23 
24 #include <string>
25 #include <cmath>
26 
27 
28 namespace io {
29  class ShowerSimData_ROOT;
30 }
31 
32 namespace evt {
33 
34  class LaserData;
35  class RadioSimulation;
36  class Event;
37 
38 
49  class ShowerSimData {
50 
51  public:
52  enum ProfileType {
54  eCharged = 0,
69  };
70 
72  int GetShowerNumber() const { return fShowerNumber; }
75  void SetShowerNumber(const int sid) { fShowerNumber = sid; }
76 
78  std::string GetShowerRunId() const { return fShowerRunId; }
81  void SetShowerRunId(const std::string srid) { fShowerRunId = srid; }
82 
84  int GetPrimaryParticle() const { return fPrimaryProperties->GetType(); }
86  void SetPrimaryParticle(const int type);
87 
89  double GetEnergy() const { return fEnergy; }
91  void SetEnergy(const double theEnergy) { fEnergy = theEnergy; }
92 
94  double GetMuonNumber() const { return fMuonNumber; }
96  void SetMuonNumber(const double nmuon) { fMuonNumber = nmuon; }
97 
99  double GetMuonWeightScale() const { return fMuonWeightScale; }
101  void SetMuonWeightScale(const double scale) { fMuonWeightScale = scale; }
102 
104  double GetCalorimetricEnergy() const { return fCalorimetricEnergy; }
106  void SetCalorimetricEnergy(const double energy)
107  { fCalorimetricEnergy = energy; }
108 
112  void SetElectromagneticEnergy(const double energy)
113  { fElectromagneticEnergy = energy; }
114 
116  double GetEnergyCutoff(const ProfileType type = eElectron) const;
118  void SetEnergyCutoff(const double energy, const ProfileType type = eElectron);
119 
123  void SetMinCherenkovWavelength(const double wl) { fMinCherenkovWavelength = wl; }
124 
128  void SetMaxCherenkovWavelength(const double wl) { fMaxCherenkovWavelength = wl; }
129 
131  void SetGroundParticleCoordinateSystemAzimuth(const double azimuth);
132 
135 
137  void SetGroundParticleCoordinateSystemZenith(const double zenith);
138 
141 
143  bool HasGeometry() const { return bool(fParticleCS); }
145  void MakeGeometry(const utl::Point& pointOnShowerAxis);
146  void CheckGeometry() const;
147 
149 
154  double GetMinRadiusCut() const { return fMinRadiusCut; }
156  void SetMinRadiusCut(const double minR) { fMinRadiusCut = minR; }
157 
159 
163  double GetMaxRadiusCut() const { return fMaxRadiusCut; }
164  // Set the maximum radius cut
165  void SetMaxRadiusCut(const double maxR) { fMaxRadiusCut = maxR; }
166 
168 
172  double GetMagneticFieldZenith() const { return 90*utl::deg - std::fabs(fMagneticFieldInclination); }
173 
177  void SetMagneticFieldAzimuth(const double magneticFieldAzimuth) { fMagneticFieldDeclination = magneticFieldAzimuth - 90*utl::degree; }
178 
182  void SetMagneticFieldInclination(const double magneticFieldInclination) { fMagneticFieldInclination = magneticFieldInclination; }
183 
187  void SetMagneticFieldDeclination(const double magneticFieldDeclination) { fMagneticFieldDeclination = magneticFieldDeclination; }
188 
192  void SetMagneticFieldStrength(const double magneticFieldStrength) { fMagneticFieldStrength = magneticFieldStrength; }
193 
194  void AddSimCore(const utl::Point& pos);
195  int GetNSimCores() const { return fSimCores.size(); }
196  const utl::Point& GetSimCore(const int i) const { return fSimCores[i]; }
197 
199  const utl::Vector& GetDirection() const;
201  bool HasDirection() const { return HasGeometry(); }
202 
204  const utl::Point& GetPosition() const;
206  bool HasPosition() const { return HasGeometry(); }
207 
210 
228 
243 
249 
251  bool HasLongitudinalProfile(const ProfileType type = eCharged) const
252  { return fLongitudinalProfile.HasLabel(type); }
254 
259 
266 
268  const utl::TabulatedFunction& GetFluorescencePhotons(const int wavelength) const
269  { return fFluorescencePhotons.GetTabulatedFunction(wavelength); }
271  { return fFluorescencePhotons.GetTabulatedFunction(wavelength); }
272  bool HasFluorescencePhotons(const int wavelength) const
273  { return fFluorescencePhotons.HasLabel(wavelength); }
274  void AddFluorescencePhotons(const utl::TabulatedFunction& fp, const int wavelength)
275  { fFluorescencePhotons.AddTabulatedFunction(fp, wavelength); }
276 
278  const utl::TabulatedFunction& GetCherenkovPhotons(const int wavelength) const
279  { return fCherenkovPhotons.GetTabulatedFunction(wavelength); }
281  { return fCherenkovPhotons.GetTabulatedFunction(wavelength); }
282  bool HasCherenkovPhotons(const int wavelength) const
283  { return fCherenkovPhotons.HasLabel(wavelength); }
284  void AddCherenkovPhotons(const utl::TabulatedFunction& cp, const int wavelength)
285  { fCherenkovPhotons.AddTabulatedFunction(cp, wavelength); }
286 
288  const utl::TabulatedFunction& GetCherenkovBeamPhotons(const int wavelength) const
289  { return fCherenkovBeamPhotons.GetTabulatedFunction(wavelength); }
291  { return fCherenkovBeamPhotons.GetTabulatedFunction(wavelength); }
292  bool HasCherenkovBeamPhotons(const int wavelength) const
293  { return fCherenkovBeamPhotons.HasLabel(wavelength); }
294  void AddCherenkovBeamPhotons(const utl::TabulatedFunction& cp, const int wavelength)
295  { fCherenkovBeamPhotons.AddTabulatedFunction(cp, wavelength); }
296 
302  bool HasCherenkovBeamProductionPhotons(const int wavelength) const
303  { return fCherenkovBeamProductionPhotons.HasLabel(wavelength); }
304  void AddCherenkovBeamProductionPhotons(const utl::TabulatedFunction& fp, const int wavelength)
306 
307 #ifdef PRIM_CHER
308  const utl::TabulatedFunction& GetPrimaryCherenkovPhotons(const int wavelength) const
309  { return fPrimaryCherenkovPhotons.GetTabulatedFunction(wavelength); }
310  utl::TabulatedFunction& GetPrimaryCherenkovPhotons(const int wavelength)
311  { return fPrimaryCherenkovPhotons.GetTabulatedFunction(wavelength); }
313  bool HasPrimaryCherenkovPhotons(const int wavelength) const
314  { return fPrimaryCherenkovPhotons.HasLabel(wavelength); }
316  void AddPrimaryCherenkovPhotons(const utl::TabulatedFunction& cp, const int wavelength)
317  { fPrimaryCherenkovPhotons.AddTabulatedFunction(cp, wavelength); }
318 
320  const utl::TabulatedFunction& GetPrimaryCherenkovBeamPhotons(const int wavelength) const
321  { return fPrimaryCherenkovBeamPhotons.GetTabulatedFunction(wavelength); }
322  utl::TabulatedFunction& GetPrimaryCherenkovBeamPhotons(const int wavelength)
323  { return fPrimaryCherenkovBeamPhotons.GetTabulatedFunction(wavelength); }
324  bool HasPrimaryCherenkovBeamPhotons(const int wavelength) const
325  { return fPrimaryCherenkovBeamPhotons.HasLabel(wavelength); }
326  void AddPrimaryCherenkovBeamPhotons(const utl::TabulatedFunction& cp, const int wavelength)
327  { fPrimaryCherenkovBeamPhotons.AddTabulatedFunction(cp, wavelength); }
328 #endif
329 
333 
342 
351 
360 
369 
373  bool HasGHParameters() const { return bool(fGHParameters); }
376 
380  bool HasAtmosphereParameters() const { return bool(fAtmosphereParameters); }
384  double GetXFirst() const { return fXFirst; }
386  void SetXFirst(const double xFirst) { fXFirst = xFirst; }
388  double GetXInject() const { return fXInject; }
390  void SetXInject(const double xInject) { fXInject = xInject; }
391 
392  double GetNmu() const { return fNmu; }
393  void SetNmu(const double Nmu) { fNmu = Nmu; }
394 
395  double GetXmaxMu() const { return fXmaxMu; }
396  void SetXmaxMu(const double XmaxMu) { fXmaxMu = XmaxMu; }
397 
399  const utl::TimeStamp& GetTimeStamp() const { return *fTimeStamp; }
401  bool HasTimeStamp() const { return bool(fTimeStamp); }
403  void MakeTimeStamp(const utl::TimeStamp& ts);
404 
407  { return *fGroundParticles; }
409  { return *fGroundParticles; }
410  bool HasGroundParticles() const { return bool(fGroundParticles); }
411  void MakeGroundParticles();
417 
418 
419  std::map<utl::AttributeMap, utl::ShadowPtr<utl::ShowerParticleList>>::const_iterator GetGroundCherenkovDataBegin() const { return fGroundCherenkov.begin(); }
420  std::map<utl::AttributeMap, utl::ShadowPtr<utl::ShowerParticleList>>::const_iterator GetGroundCherenkovDataEnd() const { return fGroundCherenkov.end(); }
422  const utl::ShowerParticleList& GetGroundCherenkov(const utl::AttributeMap& am) const { return *fGroundCherenkov.find(am)->second; }
423  bool HasGroundCherenkov(const utl::AttributeMap& am) const { return bool(fGroundCherenkov.count(am)) && bool(fGroundCherenkov.find(am)->second); }
424  void MakeGroundCherenkov(const utl::AttributeMap& am);
426  { return fGroundCherenkov.find(am)->second->ParticlesBegin(GetGroundParticleCoordinateSystem()); }
428  { return fGroundCherenkov.find(am)->second->ParticlesEnd(GetGroundParticleCoordinateSystem()); }
429 
432  const LaserData& GetLaserData() const { return *fLaserData; }
433 
435  bool HasLaserData() const { return bool(fLaserData); }
437  void MakeLaserData();
438 
442 
444  bool HasRadioSimulation() const { return bool(fRadioSimulation); }
445 
447  void MakeRadioSimulation();
448 
451 
453  void SetDistanceOfShowerMaximum(const double parDistance) { fDistanceOfShowerMaximum = parDistance; }
454 
456  const evt::GenParticle& GetParticleTree() const { return fParticleTree; }
457 
459  void SetParticleTree(const evt::GenParticle& partTree)
460  { fParticleTree = partTree; }
461 
463  bool HasParticleTree() const { return bool(fParticleTree.GetParentId()); }
464 
465  private:
467  : fShowerGeometryProducer(p.Clone()) { }
468 
469  ~ShowerSimData() = default;
470 
473  std::map<utl::AttributeMap, utl::ShadowPtr<utl::ShowerParticleList>> fGroundCherenkov; // no root streaming
474 
476  double fEnergy = 0;
477  double fMuonNumber = 0;
478  double fMuonWeightScale = 0;
483  double fEnergyCutoff = 0;
484  double fEnergyCutoffMuon = 0;
487  double fMinRadiusCut = 0;
488  double fMaxRadiusCut = 0;
492  int fShowerNumber = 0;
493  std::string fShowerRunId;
494  double fXFirst = 0;
495  double fXInject = 0;
496  double fDistanceOfShowerMaximum = std::numeric_limits<double>::quiet_NaN();
497 
498  std::vector<utl::Point> fSimCores;
499 
500  double fNmu = 0;
501  double fXmaxMu = 0;
502 
506 
513 #ifdef PRIM_CHER
514  utl::MultiTabulatedFunction fPrimaryCherenkovPhotons;
515  utl::MultiTabulatedFunction fPrimaryCherenkovBeamPhotons;
516 #endif
519 
521 
523 
525 
528 
529  friend class evt::Event;
532 
533  };
534 
535 }
536 
537 
538 #endif
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
Definition: ShadowPtr.h:163
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.
Definition: ShowerSimData.h:84
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
Definition: MultiObject.h:78
void SetMagneticFieldDeclination(const double magneticFieldDeclination)
Set the declination of the Earth&#39;s magnetic field used in CORSIKA/REAS simulation.
utl::CoordinateSystemPtr fShowerCS
T * Clone(const T &src)
Clone a given object.
Definition: ShadowPtr.h:69
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()
Point object.
Definition: Point.h:32
bool HasLaserData() const
Check initialization of the LaserData.
utl::TabulatedFunction & GetCherenkovBeamProductionPhotons(const int wavelength)
charged particles profile
Definition: ShowerSimData.h:54
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.
Definition: ShowerSimData.h:96
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.
Definition: ShowerSimData.h:94
utl::ShadowPtr< evt::VShowerGeometryProducer > fShowerGeometryProducer
utl::ShowerParticleIterator GroundCherenkovEnd(const utl::AttributeMap &am) const
std::map< utl::AttributeMap, utl::ShadowPtr< utl::ShowerParticleList > > fGroundCherenkov
Class to hold collection (x,y) points and provide interpolation between them.
bool HasCherenkovPhotons(const int wavelength) const
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
Definition: Branch.h:24
Data structure for a radio simulation (including several SimRadioPulses)
void SetMaxRadiusCut(const double maxR)
~ShowerSimData()=default
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
Definition: MultiObject.h:81
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.
Definition: TimeStamp.h:110
bool HasPosition() const
Check initialization of shower geometry.
constexpr double deg
Definition: AugerUnits.h:140
Interface class to access Shower Simulated parameters.
Definition: ShowerSimData.h:49
int GetParentId() const
Definition: GenParticle.h:15
int GetNSimCores() const
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.
Definition: ShowerSimData.h:72
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&#39;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&#39;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&#39;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)
Definition: ShowerSimData.h:68
utl::LameShadowPtr< LaserData > fLaserData
void MakeAtmosphereParameters(const evt::AtmosphereParameters &par)
Provide the parameters of the atmospheric profile used to simulate the shower.
constexpr double degree
void SetEnergy(const double theEnergy)
Set the energy of the shower primary particle.
Definition: ShowerSimData.h:91
void SetXmaxMu(const double XmaxMu)
void SetElectromagneticEnergy(const double energy)
Set the electromagnetic energy of the shower.
std::string fShowerRunId
#define OFFLINE_MAKE_CONST_ITERATOR_RANGE(_ConstIterator_, _NamePrefix_)
Definition: IteratorRange.h:28
utl::ShowerParticleList & GetGroundParticles()
Get particle list Proxy.
void CheckGeometry() const
double GetEnergy() const
Get the energy of the shower primary particle.
Definition: ShowerSimData.h:89
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.
Definition: ShowerSimData.h:99
void AddCherenkovBeamProductionPhotons(const utl::TabulatedFunction &fp, const int wavelength)
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.
Definition: LaserData.h:29
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&#39;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
Definition: ShowerSimData.h:62
double GetMagneticFieldInclination() const
Get the inclination of the Earth&#39;s magnetic field used in CORSIKA/REAS simulation.
const RadioSimulation & GetRadioSimulation() const
std::string GetShowerRunId() const
Get the run id for the shower.
Definition: ShowerSimData.h:78
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)
Definition: ShowerSimData.h:75
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.
Vector object.
Definition: Vector.h:30
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&#39;s magnetic field used in CORSIKA/REAS simulation.
utl::ShadowPtr< evt::AtmosphereParameters > fAtmosphereParameters
gammas from shower
Definition: ShowerSimData.h:58
double GetMagneticFieldAzimuth() const
Get the azimuth angle of the Earth&#39;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)
Definition: ShowerSimData.h:81
void SetXInject(const double xInject)
Set depth of particle injection.
double GetNmu() const
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&#39;s magnetic field used in CORSIKA/REAS simulation.
utl::ShowerParticleIterator GroundParticlesBegin() const
utl::ShadowPtr< utl::TimeStamp > fTimeStamp
muon production profile
Definition: ShowerSimData.h:66
utl::ShowerParticleIterator GroundCherenkovBegin(const utl::AttributeMap &am) const
bool HasLabel(const int label) const
Definition: MultiObject.h:91
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 GetXmaxMu() const
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

, generated on Tue Sep 26 2023.