source: JEM-EUSO/esaf_cc_at_lal/packages/simulation/radiativetransfer/include/BunchRadiativeTransfer.hh @ 114

Last change on this file since 114 was 114, checked in by moretto, 11 years ago

actual version of ESAF at CCin2p3

File size: 3.3 KB
Line 
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
19class PhotonsInAtmosphere;
20class ListPhotonsInAtmosphere;
21class ListPhotonsOnPupil;
22class BunchOfPhotons;
23class Ground;
24class LowtranRadiativeProcessesCalculator;
25
26class EEvent;
27
28
29class BunchRadiativeTransfer : public RadiativeTransfer {
30public:
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
45private:
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
86inline 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
Note: See TracBrowser for help on using the repository browser.