1 | // ESAF : Euso Simulation and Analysis Framework |
---|
2 | // $Id: BunchRadiativeTransfer.hh 2968 2011-07-20 00:43:14Z fenu $ |
---|
3 | // Sylvain Moreggia created Jan, 15 2004 |
---|
4 | // |
---|
5 | // Transfers bunches of photons |
---|
6 | // |
---|
7 | |
---|
8 | |
---|
9 | #ifndef __BUNCHRADIATIVETRANSFER_HH_ |
---|
10 | #define __BUNCHRADIATIVETRANSFER_HH_ |
---|
11 | |
---|
12 | #include "euso.hh" |
---|
13 | #include "RadiativeTransfer.hh" |
---|
14 | #include "DetectorGeometry.hh" |
---|
15 | #include "EarthVector.hh" |
---|
16 | #include "ClearSkyPropagator.hh" |
---|
17 | #include "InCloudsPropagator.hh" |
---|
18 | |
---|
19 | class PhotonsInAtmosphere; |
---|
20 | class ListPhotonsInAtmosphere; |
---|
21 | class ListPhotonsOnPupil; |
---|
22 | class BunchOfPhotons; |
---|
23 | class Ground; |
---|
24 | class LowtranRadiativeProcessesCalculator; |
---|
25 | |
---|
26 | class EEvent; |
---|
27 | |
---|
28 | |
---|
29 | class BunchRadiativeTransfer : public RadiativeTransfer { |
---|
30 | public: |
---|
31 | // ctor |
---|
32 | BunchRadiativeTransfer(); |
---|
33 | |
---|
34 | // dtor |
---|
35 | virtual ~BunchRadiativeTransfer(); |
---|
36 | |
---|
37 | // Transfer photons in atmosphere, return a list of photons on Euso pupil |
---|
38 | virtual PhotonsOnPupil* Get(PhotonsInAtmosphere*, const DetectorGeometry* dg); |
---|
39 | |
---|
40 | // get ready for next event |
---|
41 | void Reset(); |
---|
42 | |
---|
43 | EsafConfigClass(RadiativeTransfer,BunchRadiativeTransfer) |
---|
44 | |
---|
45 | private: |
---|
46 | // Get photons directly emitted within the Euso solid angle |
---|
47 | void DirectToEuso(const BunchOfPhotons&) const; |
---|
48 | |
---|
49 | // Propagation of a bunch through the atmosphere |
---|
50 | void BunchPropagation( BunchOfPhotons& ); |
---|
51 | |
---|
52 | virtual void GroundReflection(const BunchOfPhotons&) const; |
---|
53 | // Process of a bunch reaching ground |
---|
54 | |
---|
55 | // Final phase of the transfer : propagation of the SinglePhotons |
---|
56 | void PropagationOfSingles(); |
---|
57 | |
---|
58 | // SinglePhoton generation (BunchOfPhotons portion which is created within EUSO solid angle) |
---|
59 | void GenerateDirectSingles(const BunchOfPhotons&,Int_t) const; |
---|
60 | |
---|
61 | // Creates SinglePhoton objects (called by the Reflect(..) method) |
---|
62 | virtual void GenerateReflectedSingles(Int_t,const BunchOfPhotons&) const; |
---|
63 | EarthVector DistributeToDensity(EarthVector,EarthVector) const; |
---|
64 | |
---|
65 | virtual Bool_t ClearMemory(); |
---|
66 | // release all the mem hold in the buffers |
---|
67 | |
---|
68 | ListPhotonsOnPupil* fPhotons; // keep in memory the list returned to detector |
---|
69 | ListPhotonsInAtmosphere* fTotalList; // pointer on the list created by LightSource module |
---|
70 | // _must not be reset nor deleted_ by the present class |
---|
71 | |
---|
72 | ClearSkyPropagator* fCSpropag; // propagator for clear sky conditions |
---|
73 | InCloudsPropagator* fICpropag; // propagator for cloudy conditions |
---|
74 | RadiativeProcessesCalculator* fTransToDetec; // calculator for last transmission to detector |
---|
75 | size_t fNbBunch; // number of bunches to handle |
---|
76 | Double_t fNbTot; // total number of photons to handle |
---|
77 | |
---|
78 | Bool_t fCloudStatus; // status of cloud simulation (false : just transmission effect) |
---|
79 | |
---|
80 | // copy of detector geometry defined in Detector part |
---|
81 | inline virtual void CopyDetectorGeometry(const DetectorGeometry* dg); |
---|
82 | |
---|
83 | ClassDef(BunchRadiativeTransfer,0) |
---|
84 | }; |
---|
85 | |
---|
86 | inline void BunchRadiativeTransfer::CopyDetectorGeometry(const DetectorGeometry* dg) { |
---|
87 | // |
---|
88 | // set DetectorGeometry for the propagator |
---|
89 | // |
---|
90 | fDetGeom = dg; |
---|
91 | fCSpropag->CopyDetectorGeometry(fDetGeom,fDecoupled); |
---|
92 | fICpropag->CopyDetectorGeometry(fDetGeom,fDecoupled); |
---|
93 | } |
---|
94 | |
---|
95 | |
---|
96 | #endif /* __BUNCHRADIATIVETRANSFER_HH_ */ |
---|
97 | |
---|