#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;
Bool_t fStoreOnlyConvertedPhotonTrackIds;
Bool_t fUseDeltaElectrons;
Bool_t fUseDeltaMomSelection;
Int_t fIonID;
Float_t fMomMaxDeltaElecCut;
Float_t fMomMinDeltaCut[6];
Float_t fProbDeltaAccepted;
map<HGeantKine*,Float_t> fmDeltaTrackProb;
map<HGeantKine*,Float_t>::iterator fitDelta;
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;}
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