// $Id: RecoShowerTrack.hh,v 1.4 2005/11/01 11:08:59 naumov Exp $ // Author: Dmitry.Naumov 2005/10/11 /***************************************************************************** * ESAF: Euso Simulation and Analysis Framework * * * * Id: RecoShowerTrack * * Package: * * Coordinator: * * * *****************************************************************************/ #ifndef __RECOSHOWERTRACK_HH__ #define __RECOSHOWERTRACK_HH__ #include "euso.hh" #include "EsafMsgSource.hh" #include "RecoShowerStep.hh" #include #include #include //////////////////////////////////////////////////////////////////////////////// // // // RecoShowerTrack // // // // // // // //////////////////////////////////////////////////////////////////////////////// class SlastShowerGenerator; class TCanvas; class FluoCalculator; class EsafSpectrum; class SlastShowerGenerator; class O1_ClearSkyPropagator; class DetectorGeometry; class Ground; class EnergyModule; class RecoShowerTrack: public EsafMsgSource { public: RecoShowerTrack(); RecoShowerTrack(Float_t t, Float_t p, Float_t h, Float_t tfov, Float_t pfov); void Constructor(); virtual ~RecoShowerTrack(); inline void SetThetaPhi(Float_t t, Float_t p); inline void SetHmax(Float_t h); inline void SetThetaPhiFoV(Float_t t, Float_t p); inline void SetEnergyModule(EnergyModule* e) { fEnergyModule = e; } void MakeTrack(); inline void Add(RecoShowerStep); void Clear(); void Debug(TCanvas*,Int_t); const vector& GetSteps( ) const { return fSteps; } UInt_t const GetSize() const { return fSteps.size(); } inline const RecoShowerStep& GetStep( UInt_t ) const; const RecoShowerStep& GetStepThetaPhi(Float_t Theta, Float_t Phi) const; inline TVector3 GetShowerDir() { return fShowerDir; } inline TVector3 GetEusoDir() { return fEusoDir; } inline Float_t GetHmax() { return fHmax; } private: EnergyModule *fEnergyModule; // pointer to energy module object // Fluorescence and Radiative Transfer DetectorGeometry *fDetectorGeometry; // detector geometry object FluoCalculator *fFluoCalculator; // Fluorescent calculator O1_ClearSkyPropagator *fClearSkyPropagator; // Clear Sky propagator EsafSpectrum *fEsafSpectrum; // pointer to EsafSpectrum object // Ground Ground *fGround; // Ground object SlastShowerGenerator *fShowerGenerator; // ShowerGenerator TVector3 fShowerDir; // unit vector against the shower direction TVector3 fEusoDir; // unit vector into the Euso direction Float_t fHmax; // estimate of the shower altitude Float_t fEusoAlt; // Euso Altitude string fEnergyDistributionName; vector fSteps; // steps of the shower ClassDef(RecoShowerTrack,0) }; inline void RecoShowerTrack::SetThetaPhi(Float_t t, Float_t p) { fShowerDir.SetMagThetaPhi(1.,t,p); } inline void RecoShowerTrack::SetThetaPhiFoV(Float_t t, Float_t p) { fEusoDir.SetMagThetaPhi(1.,t,p); } inline void RecoShowerTrack::SetHmax(Float_t h) { fHmax = h; } inline void RecoShowerTrack::Add(RecoShowerStep s) { fSteps.push_back(s); } inline const RecoShowerStep& RecoShowerTrack::GetStep( UInt_t i ) const { // // Return the i-th step of the shower // if ( i >= fSteps.size() ) Error("RecoShowerTrack::GetStep","Index out of range in RecoShowerTrack::GetStep"); return (fSteps[i]); } #endif /* __RECOSHOWERTRACK_HH__ */