// ESAF : Euso Simulation and Analysis Framework // $Id: O2_ClearSkyPropagator.hh,v 1.13 2005/07/24 18:39:19 moreggia Exp $ // Sylvain Moreggia created Jun, 2 2004 // // what's done by O1_ClearSky.. + cerenkov backscattering (only rayleigh so far) //TOFIX // #ifndef __O2_CLEARSKYPROPAGATOR_HH_ #define __O2_CLEARSKYPROPAGATOR_HH_ #include "euso.hh" #include "ClearSkyPropagator.hh" class O2_ClearSkyPropagator : public ClearSkyPropagator { private: // Preprocess run once for each bunch, called before Propagate() Medium BunchPreProcess(BunchOfPhotons&) const; public: // ctor (should not be used) O2_ClearSkyPropagator(); // ctor, copy RadiatvieTransfer ground description O2_ClearSkyPropagator(const Ground*); // dtor virtual ~O2_ClearSkyPropagator(); // Transport a BunchOfPhotons in the relevant medium, // generating SinglePhotons all along the travel (ListPhotonsInAtmosphere filled) virtual Medium Go(BunchOfPhotons&,ListPhotonsInAtmosphere&) const; // get ready for next event virtual void Reset(); EsafConfigClass(RadiativeTransfer,BunchRadiativeTransfer) protected: // Propagate the bunch void Propagate(BunchOfPhotons&,ListPhotonsInAtmosphere&) const; // Creates SinglePhoton list (called by the Go(..) method) void GenerateRayleighSingles(Int_t,Int_t,Double_t,const EarthVector&,const BunchOfPhotons&,ListPhotonsInAtmosphere&,Double_t,Double_t) const; void GenerateAerosolSingles(Int_t,Int_t,Double_t,const EarthVector&,const BunchOfPhotons&,ListPhotonsInAtmosphere&,Double_t,Double_t) const; mutable Medium fFinal_medium; // medium for final impact of the bunch (needed when clouds+ClearSky) mutable Double_t fNbSinglesCorrected; // nb of singles that undergoes the "end-track-correction" (DEBUG var.) ClassDef(O2_ClearSkyPropagator,0) }; #endif /* __O2_CLEARSKYPROPAGATOR_HH_ */