// ESAF : Euso Simulation and Analysis Framework // $Id: TestClouds.hh,v 1.11 2005/10/19 12:10:26 moreggia Exp $ // Sylvain Moreggia created Apr, 8 2004 #ifndef __TESTCLOUDS_HH_ #define __TESTCLOUDS_HH_ #include "euso.hh" #include "Clouds.hh" /******************************************************************************* * * TestClouds : class description * * Vertical OD is homogeneously distributed * * in BUNCH mode : treated as a simple single scattering volume (lambertian or isotropic) * in MonteCarlo mode : a uniform cloud made of a single layer * ******************************************************************************/ class EarthVector; class BunchOfPhotons; class EVector; class TestCloudsData; class TestClouds : public Clouds { public: // ctor TestClouds(); // dtor virtual ~TestClouds(); // Return impact of a bunchofphotons virtual EarthVector GetCloudImpact(const EarthVector&, const EarthVector&,string opt = "default") const; // to know if pos is in clouds virtual Bool_t IsInClouds(const EarthVector& pos) const; // Returns the total OD along a direction virtual Double_t TotalOD(const EarthVector&,const EarthVector&) const; // returns a scattering position along a given track // cloud is uniform so scattering length is independent of direction virtual EarthVector RandomScatPos(const EarthVector&,const EarthVector&) const; // set incoming direction to the outgoing direction after scattering virtual void RandomDir(EarthVector&) const; // clouds scattering phase function - Normalized when integrated over full solid angle virtual Double_t PhaseFunction(const EarthVector&,const EarthVector&) const; inline Double_t GetAlbedo() const {return fAlbedo;} inline string GetType() const {return fType;} // reset virtual void Reset(); EsafConfigClass(Atmosphere,TestClouds) private: // read config files virtual void Configure(); // build the configured object virtual void Build(); // true if track going locally downward Bool_t GoingDownward(const EarthVector&,const EarthVector&) const; Double_t fG; // phase function assymetry parameter (used in HG parametrization) string fType; // lambertian or isotropic (in bunch mode only) Double_t fAlbedo; // between [0,1] (in bunch mode only) ClassDef(TestClouds,0) }; #endif /* __TESTCLOUDS_HH_ */