// $Id: ShowerStep.hh,v 1.4 2005/04/19 00:10:02 thea Exp $ // Author: A.Thea 2004/12/08 /***************************************************************************** * ESAF: Euso Simulation and Analysis Framework * * * * Id: ShowerStep * * Package: Shower * * Coordinator: Sergio.Bottai, Dmitry.Naumov * * * *****************************************************************************/ #ifndef __SHOWERSTEP_HH__ #define __SHOWERSTEP_HH__ #include "euso.hh" #include "EVector.hh" #include "EsafMsgSource.hh" #include #include class UnisimFileShowerGenerator; class SlastShowerGenerator; class SlastLightToEuso; class ShowerTrack; //////////////////////////////////////////////////////////////////////////////// // // // ShowerStep // // // // // // // //////////////////////////////////////////////////////////////////////////////// class ShowerStep { public: ShowerStep(); // ctor ShowerStep(const ShowerStep&); // copy ctor virtual ~ShowerStep(); // dtor void Clear(); // clear inline Double_t GetXi() const { return fXi; } // return the Slant Depth of the first point of the step inline Double_t GetXf() const { return fXf; } // return the Slant Depth of the last point of the step inline EVector GetXYZi() const { return fXYZi; } // return the 3D coordinates in MES of the first point of the step inline EVector GetXYZf() const { return fXYZf; } // return the 3D coordinates in MES of the last point of the step inline Double_t GetTimei() const { return fTimei; } // return the Time of the passage of shower axis in fXYZi inline Double_t GetTimef() const { return fTimef; } // return the Time of the passage of shower axis in fXYZf inline Double_t GetAgei() const { return fAgei; } // return the age of the shower at fXYZi inline Double_t GetAgef() const { return fAgef; } // return the age of the shower at fXYZf inline Double_t GetNelectrons() const { return fNelectrons; } // return the Number of electrons at (fXf+fXi)/2 inline Double_t GetNcharged() const { return fNcharged; } // return the Number of charged part. at (fXf+fXi)/2 inline Double_t GetEloss() const { return fEloss; } // return the Energy loss by ionization during the Step inline Double_t GetNcherenkov() const { return fNcherenkov; } // return the Number of Cherenov photons produced in the Step const TH1F* GetHistoEnergy(); // return the pointer to histogram of energy distribution of fNelectrons const TH1F* GetHistoEnergy() const; // const version of GetHistoEnergy const TH1F* GetHistoLateral(); // return the pointer to histogram of lateral distribution of fNelectrons const TH1F* GetHistoLateral() const; // const version of GetHistoLateral inline const TH2F* GetHistoRadPhiEle() const { return fHistoRadPhiEle; } // return the pointer to histogram of Electrons radial and phi distribution inline const TH2F* GetHistoRadDTimeEle() const { return fHistoRadDTimeEle; } // return the pointer to histogram of Radial and Delta-Time respecto to axis Time for fNelectrons inline const TH2F* GetHistoRadPhiEloss() const { return fHistoRadPhiEloss; } // return the pointer to histogram of Energy loss radial and phi distribution inline const TH1F* GetHistoAngCher() const { return fHistoAngCher; } // return the pointer to histogram of polar angular distribution of Cherenkov photons ShowerTrack* GetParentTrack() const { return fParentTrack;} // Get pointer to the parent ShowerTrack container inline Int_t GetStepID() const {return fStepID;} // Get current step number inline void SetStepID(Int_t n) {fStepID = n;} // Set current step number inline void SetParentTrack(ShowerTrack* track) {fParentTrack = track;} // Seting pointer to the parent ShowerTrack container private: // information always present Double_t fXi; // Slant Depth of the first point of the step Double_t fXf; // Slant Depth of the last point of the step EVector fXYZi; // 3D coordinates in MES of the first point of the step EVector fXYZf; // 3D coordinates in MES of the last point of the step Double_t fTimei; // Time of the passage of shower axis in fXYZi Double_t fTimef; // Time of the passage of shower axis in fXYZf Double_t fAgei; // age of the shower at fXYZi Double_t fAgef; // age of the shower at fXYZf Double_t fNelectrons; // Number of electrons at (fXf+fXi)/2 // additional information , could be filled or NULL Double_t fNcharged; // Number of charged part. at (fXf+fXi)/2 Double_t fEloss; // Energy loss by ionization during the Step Double_t fNcherenkov; // Number of Cherenov photons produced in the Step TH1F* fHistoEnergy; // histogram of energy distribution of fNelectrons TH1F* fHistoLateral; // histogram of lateral distribution of fNelectrons TH2F* fHistoEneAng; // histogram of energy and polar angular distribution of fNelectrons TH2F* fHistoRadPhiEle; // histogram of Electron radial and phi distribution along axis (phi=0 is the // direction perpendicular to the track and pointing versus the higher // density atmospheric region) TH2F* fHistoRadDTimeEle; // histogram of Radial and Delta-Time respecto to axis Time for fNelectrons TH2F* fHistoRadPhiEloss; // histogram of Energy loss radial and phi distribution along axis (phi=0 is // the direction perpendicular to the track and pointing versus the higher // density atmospheric region) TH1F* fHistoAngCher; // histogram of polar angular distribution of Cherenkov photons fNcherenkov ShowerTrack* fParentTrack; // pointer to the ShowerStep container Int_t fStepID; // number of the current step friend class UnisimFileShowerGenerator; friend class CorsikaFileShowerGenerator; friend class SlastShowerGenerator; friend class SlastLightToEuso; friend class ShowerTrack; ClassDef(ShowerStep,0) }; #endif /* __SHOWERSTEP_HH__ */