1 | // $Id: NoAerosol.hh 2794 2008-02-11 07:56:34Z naumov $ |
---|
2 | // Author: Sylvain Moreggia 2006/04/24 |
---|
3 | |
---|
4 | /***************************************************************************** |
---|
5 | * ESAF: Euso Simulation and Analysis Framework * |
---|
6 | * * |
---|
7 | * Id: NoAerosol * |
---|
8 | * Package: <packagename> * |
---|
9 | * Coordinator: <coordinator> * |
---|
10 | * * |
---|
11 | *****************************************************************************/ |
---|
12 | |
---|
13 | #ifndef __NOAEROSOL_HH__ |
---|
14 | #define __NOAEROSOL_HH__ |
---|
15 | |
---|
16 | #include "euso.hh" |
---|
17 | #include "Aerosol.hh" |
---|
18 | #include "EarthVector.hh" |
---|
19 | #include <TMath.h> |
---|
20 | |
---|
21 | //////////////////////////////////////////////////////////////////////////////// |
---|
22 | // // |
---|
23 | // NoAerosol // |
---|
24 | // // |
---|
25 | // <brief class description> // |
---|
26 | // // |
---|
27 | //////////////////////////////////////////////////////////////////////////////// |
---|
28 | |
---|
29 | class NoAerosol : public Aerosol { |
---|
30 | public: |
---|
31 | // ctor |
---|
32 | NoAerosol(string name) : Aerosol(name) {} |
---|
33 | // dtor |
---|
34 | virtual ~NoAerosol(); |
---|
35 | |
---|
36 | // Return impact for given position and direction |
---|
37 | // Convention : - if already within aerosol, returns pos |
---|
38 | // - no impact, returns (0,0,HUGE) |
---|
39 | virtual EarthVector GetImpact(const EarthVector& pos, const EarthVector& dir,string opt = "default") const {return EarthVector(0,0,HUGE);} |
---|
40 | |
---|
41 | // to know if a position is within aerosol |
---|
42 | virtual Bool_t IsInAerosol(const EarthVector&) const {return kFALSE;} |
---|
43 | |
---|
44 | // Returns the transmission at given wl, along given track |
---|
45 | // set "scat" to the scattering rate along a direction |
---|
46 | virtual Double_t Trans(const EarthVector&,const EarthVector&,Double_t, Double_t& scat) const {return 1.;} |
---|
47 | |
---|
48 | |
---|
49 | // returns a scattering position along a given track |
---|
50 | // depends on wavelength |
---|
51 | virtual Bool_t RandomScatPos(const EarthVector&,const EarthVector&,Double_t,EarthVector& rtn) const {rtn.SetXYZ(0,0,HUGE); return kTRUE;} |
---|
52 | |
---|
53 | // set incoming direction to the outgoing direction after scattering |
---|
54 | // depends on wavelength |
---|
55 | virtual void RandomDir(EarthVector&,Double_t) const {} |
---|
56 | |
---|
57 | // aerosol scattering phase function - Normalized when integrated over full solid angle |
---|
58 | // depends on wavelength |
---|
59 | virtual Double_t PhaseFunction(const EarthVector&,const EarthVector&,Double_t) const {return 0.;} |
---|
60 | |
---|
61 | // returns maximum value of currently used scattering phase function |
---|
62 | // depends on wavelength range |
---|
63 | virtual Double_t GetMaxPhaseFunction(Double_t wlmin,Double_t wlmax) const {return 0;} |
---|
64 | |
---|
65 | // reset the instance |
---|
66 | virtual void Reset() {} |
---|
67 | |
---|
68 | EsafConfigClass(Atmosphere,NoAerosol) |
---|
69 | |
---|
70 | protected: |
---|
71 | |
---|
72 | // read config files |
---|
73 | virtual void Configure() {} |
---|
74 | |
---|
75 | // build the configured object |
---|
76 | virtual void Build() {} |
---|
77 | |
---|
78 | |
---|
79 | ClassDef(NoAerosol,0) |
---|
80 | }; |
---|
81 | |
---|
82 | #endif /* __NOAEROSOL_HH__ */ |
---|
83 | |
---|