// ESAF : Euso Simulation and Analysis Framework // $Id: RadiativeProcessesCalculator.hh,v 1.17 2005/10/27 13:54:35 moreggia Exp $ // Sylvain Moreggia created Jan, 9 2004 #ifndef __RADIATIVEPROCESSESCALCULATOR_HH_ #define __RADIATIVEPROCESSESCALCULATOR_HH_ #include "euso.hh" #include #include #include "EarthVector.hh" #include "EsafMsgSource.hh" class BunchOfPhotons; class SinglePhoton; class TF1; class RadiativeProcessesCalculator : public EsafMsgSource { public: // ctor RadiativeProcessesCalculator(); // dtor virtual ~RadiativeProcessesCalculator(); // Total transmission between photon position and finalpos virtual Double_t Trans(const SinglePhoton&, const EarthVector&, Double_t*) const = 0; // Total transmission between bunch and a final position virtual void Trans(const BunchOfPhotons&,const EarthVector&,vector&) const = 0; // Scattering phase function virtual Double_t RayleighPhaseFunction(const EarthVector&,const EarthVector&) const; virtual Double_t Mie_HG_PhaseFunction(const EarthVector&,const EarthVector&,Double_t) const; // get a random direction, sampling relevant scattering phase function virtual void RandomDir(string type,EarthVector& dir,Double_t g=-10) const; // get ready for next event virtual void Reset() = 0; // Get methods inline string GetName() {return fName;} protected: string fName; ClassDef(RadiativeProcessesCalculator,0) }; #endif /* __RADIATIVEPROCESSESCALCULATOR_HH_ */