ROOT logo
#ifndef HRICH700DIGITIZER_H
#define HRICH700DIGITIZER_H

#include "hlocation.h"
#include "hreconstructor.h"
#include "hcategory.h"
#include "hiterator.h"
#include "hgeantrich.h"
#include "hrich700pmt.h"

#include <map>
#include <vector>
using namespace std;

class HGeantKine;
class HRich700DigiPar;

class HRich700Digitizer : public HReconstructor {

private:

   HCategory* fCatKine;       //!
   HCategory* fCatRichPhoton; //!
   HCategory* fCatRichDirect; //!
   HCategory* fCatRichCal;    //!
   HRich700DigiPar* fDigiPar; //!

   static HRich700Digitizer* fDigitizer; //!

   // if true: we store trackIds only for the converted photons
   // This can influence efficiency
   // Must be set to true when ideal ring finder is used
   Bool_t  fStoreOnlyConvertedPhotonTrackIds;

   //------------------------------------------------------
   // delta electron handling
   Bool_t  fUseDeltaElectrons;      //! switch for use/not use delta electron time smearing
   Bool_t  fUseDeltaMomSelection;   //! switch for use/not use momentum below momMaxDeltaElecCut for primary electrons to identify delta electrons
   Int_t   fIonID;                  //! beam ion (au ==109)
   Float_t fMomMaxDeltaElecCut;     //! delta electron smearing : primary electrons below this mom are considdered to be delta electrons  [MeV/c]
   Float_t fMomMinDeltaCut[6];      //! min mom cut per sector (account for different mirror materials) [MeV/c]
   Float_t fProbDeltaAccepted;      //! 0 - 1 probability to accept a delta electron (yield adjustment)
   map<HGeantKine*,Float_t> fmDeltaTrackProb;  //! map delta electron candidates to prob
   map<HGeantKine*,Float_t>::iterator fitDelta;//! map delta electron candidates to prob
   //------------------------------------------------------

   HRich700Pmt fPmt;

   void processEvent();

   void setProbabilityForDeltaElectrons();

   Bool_t workOnDeltaElectrons(HGeantKine* primary, Int_t sector);

   void processRichPhoton(HGeantRichPhoton* photon);

   void processRichDirect(HGeantRichDirect* direct);

   void addRichCal(Int_t sector, Int_t col, Int_t row, Int_t trackId);

   void addAllTrackIds();

   void addTrackId(Int_t sector, Int_t col, Int_t row, Int_t trackId);

   void addCrossTalkHit(Int_t sector, Int_t col, Int_t row, Int_t trackId);

   void addNoiseHits();

public:
   HRich700Digitizer(const Text_t* name ="Rich700Digitizer",  const Text_t* title= "Rich700Digitizer");

   ~HRich700Digitizer();

   Bool_t init();
   Bool_t reinit();
   Int_t  execute();
   Bool_t finalize();
   static HRich700Digitizer* getDigitizer() { return fDigitizer;}

   void setStoreOnlyConvertedPhotonTrackIds(Bool_t s){fStoreOnlyConvertedPhotonTrackIds = s;}

   //----------- using delta electrons -----------------
   void   setDeltaElectronUse(Bool_t use, Bool_t useDeltaMomSel=kFALSE, Int_t ionId=109,Float_t momCut=20.,Float_t probDelta=2.){ fProbDeltaAccepted = probDelta; fUseDeltaElectrons = use;fUseDeltaMomSelection = useDeltaMomSel; fIonID=ionId; fMomMaxDeltaElecCut = momCut; }
   Bool_t getDeltaElectronUse() { return fUseDeltaElectrons;}
   void   setDeltaElectronMinMomCut(Float_t s0=2.,Float_t s1=2.,Float_t s2=4.,Float_t s3=2.,Float_t s4=2.,Float_t s5=4.) { fMomMinDeltaCut[0]=s0; fMomMinDeltaCut[1]=s1; fMomMinDeltaCut[2]=s2;  fMomMinDeltaCut[3]=s3;  fMomMinDeltaCut[4]=s4; fMomMinDeltaCut[5]=s5; }

   ClassDef(HRich700Digitizer, 0)

};

#endif // HRICH700DIGITIZER_H
 hrich700digitizer.h:1
 hrich700digitizer.h:2
 hrich700digitizer.h:3
 hrich700digitizer.h:4
 hrich700digitizer.h:5
 hrich700digitizer.h:6
 hrich700digitizer.h:7
 hrich700digitizer.h:8
 hrich700digitizer.h:9
 hrich700digitizer.h:10
 hrich700digitizer.h:11
 hrich700digitizer.h:12
 hrich700digitizer.h:13
 hrich700digitizer.h:14
 hrich700digitizer.h:15
 hrich700digitizer.h:16
 hrich700digitizer.h:17
 hrich700digitizer.h:18
 hrich700digitizer.h:19
 hrich700digitizer.h:20
 hrich700digitizer.h:21
 hrich700digitizer.h:22
 hrich700digitizer.h:23
 hrich700digitizer.h:24
 hrich700digitizer.h:25
 hrich700digitizer.h:26
 hrich700digitizer.h:27
 hrich700digitizer.h:28
 hrich700digitizer.h:29
 hrich700digitizer.h:30
 hrich700digitizer.h:31
 hrich700digitizer.h:32
 hrich700digitizer.h:33
 hrich700digitizer.h:34
 hrich700digitizer.h:35
 hrich700digitizer.h:36
 hrich700digitizer.h:37
 hrich700digitizer.h:38
 hrich700digitizer.h:39
 hrich700digitizer.h:40
 hrich700digitizer.h:41
 hrich700digitizer.h:42
 hrich700digitizer.h:43
 hrich700digitizer.h:44
 hrich700digitizer.h:45
 hrich700digitizer.h:46
 hrich700digitizer.h:47
 hrich700digitizer.h:48
 hrich700digitizer.h:49
 hrich700digitizer.h:50
 hrich700digitizer.h:51
 hrich700digitizer.h:52
 hrich700digitizer.h:53
 hrich700digitizer.h:54
 hrich700digitizer.h:55
 hrich700digitizer.h:56
 hrich700digitizer.h:57
 hrich700digitizer.h:58
 hrich700digitizer.h:59
 hrich700digitizer.h:60
 hrich700digitizer.h:61
 hrich700digitizer.h:62
 hrich700digitizer.h:63
 hrich700digitizer.h:64
 hrich700digitizer.h:65
 hrich700digitizer.h:66
 hrich700digitizer.h:67
 hrich700digitizer.h:68
 hrich700digitizer.h:69
 hrich700digitizer.h:70
 hrich700digitizer.h:71
 hrich700digitizer.h:72
 hrich700digitizer.h:73
 hrich700digitizer.h:74
 hrich700digitizer.h:75
 hrich700digitizer.h:76
 hrich700digitizer.h:77
 hrich700digitizer.h:78
 hrich700digitizer.h:79
 hrich700digitizer.h:80
 hrich700digitizer.h:81
 hrich700digitizer.h:82
 hrich700digitizer.h:83
 hrich700digitizer.h:84
 hrich700digitizer.h:85
 hrich700digitizer.h:86
 hrich700digitizer.h:87
 hrich700digitizer.h:88
 hrich700digitizer.h:89
 hrich700digitizer.h:90
 hrich700digitizer.h:91