// $Id: MCTruth.hh,v 1.10 2005/10/02 14:17:55 thea Exp $ // Author: M. Pallavicini /***************************************************************************** * ESAF: Euso Simulation and Analysis Framework * * * * Id: MCTruth * * Package: GenBase * * Coordinator: Sergio.Bottai, D.Naumov * * * *****************************************************************************/ #ifndef __MCTRUTH_HH_ #define __MCTRUTH_HH_ #include #include "EVector.hh" #include "EsafMsgSource.hh" class ETruth; class LightToEuso; //////////////////////////////////////////////////////////////////////////////// // // // MCTruth // // // // MonteCarlo Truth for an event // // // //////////////////////////////////////////////////////////////////////////////// class MCTruth : public EsafMsgSource { public: MCTruth(); virtual ~MCTruth(); void Clear(); // dump info on string const string& Dump(); // pointer to LightToEuso object inline LightToEuso* GetLightToEuso() { return pLight;} inline void SetLightToEuso(LightToEuso* p) { pLight = p; } inline void SetEnergy(const Double_t& e) {fEnergy=e;} inline void SetThetaPhi(const Double_t& th, const Double_t& ph) {fTheta=th;fPhi=ph;} inline void SetParticle(Int_t code) { fParticleCode = code; BuildName(); } inline void SetFirstInt(const EVector& p, const Double_t& x1) { fInitPos=p; fX1=x1;} inline void SetEarthImpact(const EVector& p, const Double_t& ea) { fEarthImpact=p; fEarthAge=ea;} inline void SetShowerMax(const EVector& p, const Double_t& mx) { fShowerMaxPos=p; fShowerXMax=mx;} inline void SetHclouds( Double_t h ) { fHclouds = h; } inline void SetCloudsthick( Double_t t ) { fCloudsthick = t; } inline void SetCloudsOD( Double_t od ) { fCloudsOD = od; } inline void SetLatitude(Double_t lat) { fLatitude = lat;} inline void SetLongitude(Double_t longi) { fLongitude = longi;} inline void SetDate(Double_t date) { fDate = date;} inline Double_t GetEnergy() const { return fEnergy; } inline Double_t GetTheta() const { return fTheta; } inline Double_t GetPhi() const { return fPhi; } inline const string& GetParticleName() { return fParticleName; } inline Int_t GetParticleCode() const { return fParticleCode; } inline const EVector& GetInitPos() { return fInitPos; } inline Double_t GetX1() const { return fX1; } inline const EVector& GetEarthImpact() { return fEarthImpact; } inline Double_t GetEarthAge() const { return fEarthAge; } inline const EVector& GetShowerMaxPos() { return fShowerMaxPos; } inline Double_t GetShowerXMax() const { return fShowerXMax; } inline Double_t GetHclouds() const { return fHclouds; } inline Double_t GetCloudsthick() const { return fCloudsthick; } inline Double_t GetCloudsOD() const { return fCloudsOD; } inline Double_t GetLatitude() const { return fLatitude;} inline Double_t GetLongitude() const { return fLongitude;} inline Double_t GetDate() const { return fDate;} private: LightToEuso *pLight; Double_t fEnergy; // primary EECR energy (eV) Double_t fTheta; // incidence angle (rad) Double_t fPhi; // azimuth; Phi=0 corresponds Y=0 string fParticleName; // particle name (see above) Int_t fParticleCode; // same as name with code instead of strings EVector fInitPos; // first interaction point (3D coord, Km) Double_t fX1; // interaction depth in g/cm^2 EVector fEarthImpact; // impact point of shower on earth (clouds ignored) Double_t fEarthAge; // age of the shower at impact EVector fShowerMaxPos; // shower max position (3D coord, Km) Double_t fShowerXMax; // shower max depth (g/cm^2) Double_t fHclouds; // altitude of the clouds Double_t fCloudsthick; // clouds thickness Double_t fCloudsOD; // clouds optical depth Double_t fLatitude; // geodetic latitude Double_t fLongitude; // geodetic longitude Double_t fDate; // event date (in sec from 1st Jan 00:00:00) - UT (year not taken into account) string fDumpText; // string used to Dump data on ASCII void BuildName(); // fill particle name according to code ClassDef(MCTruth,0) }; #endif