source: JEM-EUSO/esaf_lal/tags/v1_r0/esaf/packages/common/atmosphere/include/Aerosol.hh @ 117

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

ESAF version compilable on mac OS

File size: 3.2 KB
Line 
1// $Id: Aerosol.hh 2676 2006-04-28 15:22:49Z moreggia $
2// Author: Sylvain Moreggia   2006/04/24
3
4/*****************************************************************************
5 * ESAF: Euso Simulation and Analysis Framework                              *
6 *                                                                           *
7 *  Id: Aerosol                                                           *
8 *  Package: <packagename>                                                   *
9 *  Coordinator: <coordinator>                                               *
10 *                                                                           *
11 *****************************************************************************/
12
13#ifndef __AEROSOL_HH__
14#define __AEROSOL_HH__
15
16#include "euso.hh"
17#include "EsafConfigurable.hh"
18#include "EsafMsgSource.hh"
19
20class EarthVector;
21
22////////////////////////////////////////////////////////////////////////////////
23//                                                                            //
24// Aerosol                                                                    //
25//                                                                            // 
26// Boundary layers aerosol, between altitude [0-2km]                          // 
27//                                                                            // 
28////////////////////////////////////////////////////////////////////////////////
29
30class Aerosol : public EsafConfigurable, public EsafMsgSource {
31public:
32    // ctor
33    Aerosol(string);
34    // dtor
35    virtual ~Aerosol();
36
37    // Return impact for given position and direction
38    // Convention :    - if already within aerosol, returns pos
39    //                 - no impact, returns (0,0,HUGE)
40    virtual EarthVector GetImpact(const EarthVector& pos, const EarthVector& dir,string opt = "default") const = 0;
41
42    // to know if a position is within aerosol
43    virtual Bool_t IsInAerosol(const EarthVector&) const = 0;
44
45    // Returns the transmission at given wl, along given track
46    // set "scat" to the scattering rate along a direction
47    virtual Double_t Trans(const EarthVector&,const EarthVector&,Double_t, Double_t& scat) const = 0;
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&) const = 0;
52   
53    // set incoming direction to the outgoing direction after scattering
54    // depends on  wavelength
55    virtual void RandomDir(EarthVector&,Double_t) const = 0;
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 = 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 = 0;
64   
65    // reset the instance
66    virtual void Reset() = 0;
67
68
69protected:
70   
71    // read config files
72    virtual void Configure() = 0;
73
74    // build the configured object
75    virtual void Build() = 0;
76   
77    string fName;
78   
79    ClassDef(Aerosol,0)
80};
81
82#endif  /* __AEROSOL_HH__ */
83
Note: See TracBrowser for help on using the repository browser.