// ESAF : Euso Simulation and Analysis Framework // $Id: TestGround.hh,v 1.13 2005/09/21 15:52:25 moreggia Exp $ // S. Moreggia created 27 October 2003 // A test class for ground description // Albedo = (nb of outgoing photons) / (nb of incoming photons) is used to get nb of outgoing photons // then they are distributed assuming ground is lambertian, i.e. BRDF is independant of outgoing angles // i.e. outgoing phase function follows a cos(theta) law #ifndef __TESTGROUND_HH__ #define __TESTGROUND_HH__ #include "Ground.hh" class TF1; class TestGround : public Ground { public: // ctor TestGround(); //dtor virtual ~TestGround(); // Get an impact form starting position and direction in atmosphere virtual EarthVector GetImpact(const EarthVector&,const EarthVector&) const; // Phase function of the outgoing light, emitted from pos1 toward pos2 // earth sphericity taken into account virtual Double_t Outgoing_phase_function(const EarthVector& pos1, const EarthVector& pos2) const; // Get albedo for a given position virtual Double_t Albedo(const EarthVector&) const {return fAlbedo;} // Get ground altitude at the vertical of the given point inline virtual Double_t Altitude(const EarthVector&) const {return fAltitude;} // Configure data members virtual void Configure(); // set incom_dir to the outgoing direction of scattering, sampling Outgoing phase function virtual void RandomDir(const EarthVector& pos, EarthVector& incom_dir) const; // get ready for next event void Reset() {} EsafConfigClass(RadiativeTransfer,TestGround) private: string fType; // lambertian or isotropic Double_t fAltitude; // from sea level Double_t fAlbedo; // between 0..1 ClassDef(TestGround,0) }; #endif /* __TESTGROUND_HH__ */