PandaRoot
BSEmcIdealDigitizationProcess.h
Go to the documentation of this file.
1 #ifndef BSEMCIDEALDIGITIZATIONPROCESS_HH
2 #define BSEMCIDEALDIGITIZATIONPROCESS_HH
3 
4 #include <string>
5 #include <vector>
6 
7 #include "Rtypes.h"
8 #include "RtypesCore.h"
9 
10 #include "PndContainerI.h"
11 #include "PndProcess.h"
12 
13 class FairParGenericSet;
14 class BSEmcMCDeposit;
15 class BSEmcDigi;
17 class TBuffer;
18 class TClass;
19 class TMemberInspector;
20 template <class T>
21 class PndContainerI;
22 template <class T>
24 
36  public:
39  virtual void RequestDataContainer(PndContainerRegister *t_register) /*override*/;
40  virtual void GetDataContainer(PndContainerRegister *t_register) /*override*/;
41  virtual void SetDetectorName(const std::string &t_detectorName) /*override*/;
42  virtual void SetupParameters(const PndParameterRegister *t_paramRegister) /*override*/;
43  virtual void Process() /*override*/;
44  std::vector<BSEmcDigi *> DigitizeDeposits(const std::vector<const BSEmcMCDeposit *> &t_mcdepCont);
45  BSEmcDigi *DigitizeDeposit(const BSEmcMCDeposit *t_dep, Int_t t_depIndex);
46  void SetReadoutType(const std::string &t_readout) { fReadOut = t_readout; }
47  void SetDigiParName(const std::string &t_parName) { fDigiParName = t_parName; }
48  void SetMCDepositBranchName(const TString &t_branchname) { fMCDepositBranchname = t_branchname; }
49  void SetDigiBranchName(const TString &t_branchname) { fDigiBranchname = t_branchname; }
50 
51  protected:
52  TString fMCDepositBranchname{""};
53  TString fDigiBranchname{""};
54 
55  std::string fDigiParName{""};
56  std::string fReadOut{""};
58  Double_t fEnergyDigiThreshold{-1};
59  Double_t fDetectedPhotonsPerMeV{-1};
60  Double_t fQuantumEfficiency{-1};
61  Double_t fExcessNoiseFactor{-1};
62  Double_t fIncoherentElecNoiseWidthGeV{-1}; // GeV
63  Double_t fNPhotoElectronsPerMeV{-1};
64  Double_t fNoiseOverNElectrons{-1};
65  std::string fMCDepositBranchName{""};
68 
69 private:
70  BSEmcDigi *AddDigi(Int_t t_detID, Double_t t_energy, Float_t t_time, Int_t t_depIndex);
71 
72  virtual Double_t SmearEnergy(Double_t t_energy) const;
73  virtual Double_t GausSmearing(Double_t t_energy) const;
74  virtual Double_t PhotonStatisticSmearing(Double_t t_energy) const;
75 
76  virtual Double_t DigitizedEnergy(Double_t t_energy, Int_t t_detId) const;
77  virtual Double_t GetGain(Int_t t_detId) const;
78 
79  ClassDef(BSEmcIdealDigitizationProcess, 1);
80 };
81 
82 #endif /*BSEMCIDEALDIGITIZATIONPROCESS_HH*/
Base Process class.
Definition: PndProcess.h:24
virtual void SetupParameters(const PndParameterRegister *t_paramRegister)
Fetch all parameters from the PndParameterRegister.
Smears BSEmcMCDeposit energy and forms BSEmcDigi if energy above threshold.
virtual void Process()
The actual data transformation (digitizing, clustering, etc.) should be defined here.
void SetDigiParName(const std::string &t_parName)
represents the deposited energy of one emc crystal from simulation
void SetMCDepositBranchName(const TString &t_branchname)
std::vector< BSEmcDigi * > DigitizeDeposits(const std::vector< const BSEmcMCDeposit *> &t_mcdepCont)
BSEmcDigi * DigitizeDeposit(const BSEmcMCDeposit *t_dep, Int_t t_depIndex)
PndMutableContainerI< BSEmcDigi > * fDigiArray
represents the reconstructed hit of one emc crystal
Definition: BSEmcDigi.h:47
void SetReadoutType(const std::string &t_readout)
void SetDigiBranchName(const TString &t_branchname)
virtual void GetDataContainer(PndContainerRegister *t_register)
Pass the container register to the process, and set the processes container requirements.
Interface to a datacontainer to be used in PandaROOT.
Helper class to indirect the Parameter fetching via the FairRuntimeDb.
virtual void SetDetectorName(const std::string &t_detectorName)
Set the Detector name. Important, as most EmcParameter need to know for which detector they need to b...
PndContainerI< BSEmcMCDeposit > * fMCDepositArray
virtual void RequestDataContainer(PndContainerRegister *t_register)
Pass the container register to the process, and get the processes container requirements.