source: JEM-EUSO/esaf_cc_at_lal/packages/simulation/radiativetransfer/include/AlongTrack_CSPropagator.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.4 KB
Line 
1// $Id: AlongTrack_CSPropagator.hh 1807 2005-05-02 17:21:53Z moreggia $
2// Author: Sylvain Moreggia   2004/09/29
3
4/*****************************************************************************
5 * ESAF: Euso Simulation and Analysis Framework                              *
6 *                                                                           *
7 *  Id: AlongTrack_CSPropagator                                              *
8 *  Package: RadiativeTransfer                                               *
9 *  Coordinator: Sylvain Moreggia                                            *
10 *                                                                           *
11 *****************************************************************************/
12
13#ifndef __ALONGTRACK_CSPROPAGATOR_HH__
14#define __ALONGTRACK_CSPROPAGATOR_HH__
15
16#include "euso.hh"
17#include "O2_ClearSkyPropagator.hh"
18
19
20////////////////////////////////////////////////////////////////////////////////
21//                                                                            //
22// AlongTrack_CSPropagator                                                    //
23//                                                                            // 
24// same as O2_ClearSkyPropagator, but considers that all the bunches have the //
25// same direction, which is track direction                                   //
26//                                                                            // 
27// MUST BE CALLED if light created ALONG A TRACK, otherwise it fails          //
28// FIRST BUNCH propagated MUST BE at the track origin, otherwise it fails too //
29//                                                                            // 
30// Cerenkov backscattering is thus simulated, and lowtran tables calculated   //
31// only once along the shower track                                           // 
32//                                                                            // 
33////////////////////////////////////////////////////////////////////////////////
34
35class AlongTrack_CSPropagator : public O2_ClearSkyPropagator {
36public:
37    // ctor (should not be used)
38    AlongTrack_CSPropagator();
39   
40    // ctor, copy RadiatvieTransfer ground description
41    AlongTrack_CSPropagator(const Ground*);
42   
43    // dtor
44    virtual ~AlongTrack_CSPropagator();
45   
46    // Transport a BunchOfPhotons in clear sky conditions
47    // generates SinglePhotons all along the travel (filling ListPhotonsInAtmosphere)
48    virtual Medium Go(BunchOfPhotons&,ListPhotonsInAtmosphere&) const;
49   
50    // get ready for next event
51    virtual void Reset();
52   
53private:
54    // Called for the first treated bunch, set fFlag and fImpact, Call RadiativeProcessesCalculator::PreProcess()
55    void PreProcess(const BunchOfPhotons&) const;
56   
57    // Propagate the bunch
58    void Propagate(BunchOfPhotons&,ListPhotonsInAtmosphere&) const;
59   
60    // Check if bunches are along a track, with first at the track beginning
61    Bool_t IsAlongTrack(const BunchOfPhotons&) const;
62
63    mutable Bool_t fFlag;                      // flag to know if preprocess has been run
64    mutable Medium fFinal_medium;              // medium where final impact occurs
65    mutable BunchOfPhotons* fFirstBunch;       // copy the first bunch to run IsAlongTrack() method
66                                               // contains the calculated FinalImpact
67
68    ClassDef(AlongTrack_CSPropagator,0)
69};
70
71#endif  /* __ALONGTRACK_CSPROPAGATOR_HH__ */
72
Note: See TracBrowser for help on using the repository browser.