source: JEM-EUSO/esaf_cc_at_lal/packages/simulation/radiativetransfer/include/Ground.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// $Id: Ground.hh 2672 2006-04-18 12:26:23Z moreggia $
2// Author: S.Moreggia   Oct, 27 2003
3
4/*****************************************************************************
5 * ESAF: Euso Simulation and Analysis Framework                              *
6 *                                                                           *
7 *  Id: Ground                                                               *
8 *  Package: RadiativeTransfer                                               *
9 *  Coordinator: Sylvain Moreggia                                            *
10 *                                                                           *
11 *****************************************************************************/
12
13
14#ifndef __GROUND_HH__
15#define __GROUND_HH__
16
17#include "EsafConfigurable.hh"
18#include "EarthVector.hh"
19#include "BunchOfPhotons.hh"
20#include "EsafMsgSource.hh"
21
22class ListPhotonsInAtmosphere;
23
24
25////////////////////////////////////////////////////////////////////////////////
26//                                                                            //
27// Ground                                                                     //
28//                                                                            //
29// Interface for ground description                                           //
30//                                                                            //
31////////////////////////////////////////////////////////////////////////////////
32
33class Ground : public EsafConfigurable, public EsafMsgSource {
34public:
35   
36    // ctor
37    Ground();
38
39    // dtor
40    virtual ~Ground();
41       
42    virtual EarthVector GetImpact(const EarthVector&, const EarthVector&) const = 0;
43
44    // Get an impact form starting position and direction in atmosphere
45    // NB : if no impact,               return (0,0,HUGE)
46    //      if track is underground,    return (0,0,-HUGE)
47    inline EarthVector GetImpact(const BunchOfPhotons& b) const {return GetImpact(b.GetPos(),b.GetDir());}
48
49    // Phase function of the outgoing light (earth sphericity taken into account)
50    // - pos      = position on ground (MES frame)
51    // - incomdir = incident direction (MES frame)
52    // - outgodir = outgoing position  (MES frame)
53    virtual Double_t Outgoing_phase_function(const EarthVector& pos, const EarthVector& incomdir, const EarthVector& outgodir) const = 0;
54   
55    virtual Double_t GetMaxOutgoing_phase_function() const = 0;
56   
57    // change incom_dir to the outgoing direction of scattering, sampling Outgoing phase function
58    virtual void RandomDir(const EarthVector& pos, EarthVector& incom_dir) const = 0;
59
60    // Get albedo for a given position
61    virtual Double_t Albedo(const EarthVector&) const = 0;
62   
63    // Get ground altitude at the vertical of the given point
64    virtual Double_t Altitude(const EarthVector&) const = 0;
65   
66    // Get ground specular component intensity at given position
67    virtual Double_t Specular(const EarthVector&) const = 0;
68   
69    // to know if position is underground
70    Bool_t IsUnderGround(const EarthVector& pos) const;
71   
72    // Configure
73    virtual void Configure() = 0;
74   
75    // get ready for next event
76    virtual void Reset() = 0;
77   
78    EsafConfigClass(RadiativeTransfer,Ground)
79
80protected:
81   
82    ClassDef(Ground,0)
83}; 
84
85#endif /* __GROUND_HH__ */
Note: See TracBrowser for help on using the repository browser.