#include "SimpleDetector.hh"

SimpleDetector


class description - header file - source file - inheritance tree (.pdf)

class SimpleDetector : public Detector, public EsafConfigurable, public EsafMsgSource

Inheritance Chart:
Detector
EsafConfigurable
EsafMsgSource
<-
SimpleDetector

    public:
SimpleDetector() virtual ~SimpleDetector() Int_t AddBackground() Int_t ApplyDQE(const Photon& ph) const Int_t ApplyOpticsFilter(const Photon& ph) const Int_t ApplyTrigger() static TClass* Class() virtual const char* ClassName() const virtual const char* ClassType() const virtual Bool_t ClearMemory() Bool_t FindPixelID(const EarthVector&, UInt_t&) const virtual Telemetry* Get(PhotonsOnPupil*) UInt_t GetNbPhotoElectrons() const void InitDetector() Double_t InterpolateBG3(Double_t) const Double_t InterpolateQE(Double_t) const virtual TClass* IsA() const Double_t MeanBgndPerPixelPerGTU(Double_t) Bool_t Pos2D_Z0plane(UInt_t, EarthVector&) const virtual void Reset() virtual void ShowMembers(TMemberInspector& insp, char* parent) void SpaceTimePEinfos(const vector<PhotoElectron*>&) virtual void Streamer(TBuffer& b) void StreamerNVirtual(TBuffer& b)

Data Members

    private:
Double_t fReducedSurf factor of reduction of collecting surface Double_t fBG3filter[400] tabulated value for BG3 filter Double_t fPMQE[51] tabulated values for PM Quantum Efficiency Double_t fGTUlength GTU length Double_t fPixelSideLength pixel side length projected on the MES plane Z=0 Double_t fFirstPixelX pixel high left corner X-position projected on the MES plane Z=0 Double_t fFirstPixelY pixel high left corner Y-position projected on the MES plane Z=0 UInt_t fNbPixelOnSide nb of pixels on a side of the square FS Double_t fMeanBgnd value in ph-on-pupil/m2/ns/sr Double_t fSNRtrigg nb of background sigma considered for SNR treatment UInt_t fNpersTrigg persistency = nb of GTU with adjacents hitted pixels string fBgndWl RedBook (within 300-400nm) or Extended (extrapolation within 200-600nm) string fBgndMode standard (added all along track, all GTU), minimized (around fluo pixel only, at one GTU) string fBG3type BG3 (long tail above 400nm), or BG3_coated (RedBook config, sharp cut above 400nm) UInt_t fNbMaxLateralPixels define maximum area around track to be considered in the simulation UInt_t fMaxLateralDist2 = fNbMaxLateralPixels * fNbMaxLateralPixels Bool_t fCloudStatus false : photon absorbed by cloud are kept for simu map<UInt_t,vector<PhotoElectron*>*> fPhotoElectrons list of photoelectrons, stored per GTU (index=0 <--> GTUnb=0) Bool_t fEvIsTriggered tells if event is triggered UInt_t fNbGTUs nb of GTUs containing pe- (GTU id within [0,fNbGTUs-1]) UInt_t fNbSignalPE nb of pe- coming from signal photons Double_t fFirstGTUTime time of first GTU (raising time) Double_t fFirstPETime time of first pe- Double_t fLastPETime time of last pe- EarthVector fStartPosShowPt MES 3D position of shower point at fFirstGTUTime EarthVector fEndPosShowPt MES 3D position of shower point at end of track (earth impact or Fov bounds) EarthVector fDirShowPt shower track 3D direction in MES UInt_t fStartPixelID define first corner of covered rectangular area (bgnd generation) UInt_t fEndPixelID define second corner of covered rectangular area (bgnd generation)

Class Description

_____________________________________________________________________________

 SimpleDetector

 <extensive class description>


 ******* WARNING ********
 Data members of Photon and ParentPhoton have not the std meaning

 - ParentPhoton.fType      = type of photon
                           1: fluo
                           2: ckov

 - Photon.history          = their history IN ATMOSPHERE
                          -1: none
                           0: direct
                           1: reflected
                           2: rayleigh scat
                           3: clouds scat
                           4: aerosols scat

 - Photon.fate             = their history IN DETECTOR
                          -1: outFoV
                           0: alive
                           1: absorbed by optics
                           2: absorbed by BG3
                           3: absorbed by DQE

 - Photon.iterations       = NB of INTERACTIONS in atmosphere (not in detector)


 NB : within detector, distance on "focal surface" is in (nb pixels)² unit

SimpleDetector()
 Constructor

 NB : position is set in SimuApplication.cc by reading General/Euso.cfg file

~SimpleDetector()
 Destructor

void Reset()
 get ready for next event

void InitDetector()
 initialization

Telemetry* Get( PhotonsOnPupil* photons )
 Simulate one event

Int_t ApplyOpticsFilter(const Photon& ph)
 Total optical efficiency + BG3
 return photon's fate value

Int_t ApplyDQE(const Photon& ph)
 Detection Quantum Efficiency rules the creation of photoelectrons from incident photons
 return photon's fate value

Double_t InterpolateQE(Double_t wl)
 interpolate using tabulated values

Double_t InterpolateBG3(Double_t wl)
 interpolate using tabulated values

void SpaceTimePEinfos(const vector<PhotoElectron*>& templist)
 - orders pe- chronologically
   then find the time of first GTU and ranges them in the map using GTU info
 - set pixel ID
 - find pixels rectangular area involved in the event

Bool_t FindPixelID(const EarthVector& atmopos, UInt_t& rtn)
 find pixel according to position in atmosphere
 - pixel nb 0 is at left-up corner (X<0 and Y>0)
 - using sqrt(x*x + y*y) value in the MES Z=0 plane
 - i,j in [0..n-1]  (i<-->row    j<-->column)
 - pixelID = N --> i,j coordinates found back using N / n = i  and  N % n = j

 return kFALSE if position is out of FoV

Bool_t Pos2D_Z0plane(UInt_t pixID, EarthVector& rtn)
 get pixel 2D position in the Mes Z=0 plane
 Invert method of FindPixelID()

 return kTRUE if pixel is in the FoV, kFALSE otherwise

Double_t MeanBgndPerPixelPerGTU(Double_t bckgnd_photon)
 input : bckgnd_photon is in ph / m2 / ns / sr
 Calculate mean (over wl) background in pe/pixel/GTU (at Nadir)
 Background wl spectrum is assumed FLAT

 NB : for a detector of 2.5m diameter
      500 ph/ns/sr/m2 within 300-400nm           --> ~1.7 pe/pixel/GTU
      500 ph/ns/sr/m2 EXTENDED within 200-600nm  --> ~2.8 pe/pixel/GTU (BG3)  ~2.35 (coated BG3)

Int_t AddBackground()
 At every GTU, add background around showerPOINT  (not all around shower track)
 For every pe-, set the spatial shift w.r.t. shower point of all pe- (signal and bgnd)

 NB : looking at shower point at GTU start and GTU end could miss an intermediate pixel
      not so important if the intermediate pixel is considered in simu analysis or reconstruction

Int_t ApplyTrigger()
 trigger simulation :
 ==================
 1. pixels with SNR > fSNRtrig are considered hitted, SNR =  (S + B - <B>) / sqrt(<B>)
 2. persistency = from one GTU to the next one, if adjacent hitted pixels exist, Npers is incremented
    when Npers = fNpersTrigg --> event is triggered

 NB : pe- hold in pixels without bgnd have been set to SNR = -1000, thus not considered for trigger simu
 NB : pe- in pixels with SNR > fSNRtrig are tagged "triggered"

UInt_t GetNbPhotoElectrons()
 getters
Bool_t ClearMemory()
 physically release the memory allocated by the arrays of this object

Author: Sylvain Moreggia 2006/03/16
Last update: Mon Nov 27 14:57:05 2006


ROOT page - Class index - Class Hierarchy - Top of the page

This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.