5#ifndef CBMTRDMODULESIMR_H
6#define CBMTRDMODULESIMR_H
27 void GetCounters(Int_t& nEl, Int_t& nLattice, Int_t& nOverThr)
const
63 void AddDigitoPulseBuffer(Int_t address, Double_t reldrift, Double_t charge, Double_t chargeTR, Double_t time,
64 Int_t trigger, Int_t epoints, Int_t ipoint);
65 std::vector<Double_t>
MakePulse(Double_t charge, std::vector<Double_t> pulse, Int_t address);
66 void AddToPulse(Int_t address, Double_t charge, Double_t reldrift, std::vector<Double_t> pulse);
67 Bool_t
CheckMulti(Int_t address, std::vector<Double_t> pulse);
70 void ProcessPulseBuffer(Int_t address, Bool_t FNcall, Bool_t MultiCall, Bool_t down, Bool_t up);
74 void AddDigi(Int_t address, Double_t charge, Double_t chargeTR, Double_t time, Int_t trigger);
77 void AddDigitoBuffer(Int_t address, Double_t charge, Double_t chargeTR, Double_t time, Int_t trigger);
85 Bool_t
DistributeCharge(Double_t pointin[3], Double_t pointout[3], Double_t delta[3], Double_t
pos[3], Int_t ipoints);
89 Double_t
GetStep(Double_t dist, Int_t roll);
90 std::pair<Int_t, std::vector<Double_t>>
GetTotalSteps(Double_t In[3], Double_t Out[3], Double_t dist);
92 Int_t
AddCrosstalk(Double_t address, Int_t i, Int_t sec, Int_t row, Int_t col, Int_t ncols);
93 Double_t
CalcPRF(Double_t
x, Double_t W, Double_t
h);
100 void ScanPadPlane(
const Double_t* local_point, Double_t reldrift, Double_t clusterELoss, Double_t clusterELossTR,
101 Int_t epoints, Int_t ipoint);
156 std::map<Int_t, std::vector<std::pair<CbmTrdDigi*, CbmMatch*>>>
fAnalogBuffer;
161 std::map<Int_t, std::vector<std::map<TString, Int_t>>>
fLinkQA;
163 std::map<Int_t, std::vector<std::vector<Int_t>>>
fMCBuffer;
Generates beam ions for transport simulation.
Bookkeeping of time-slice content.
Simulation module implementation for rectangular pad geometry.
void SetPulsePars(Int_t mode)
void SetQA(CbmTrdCheckUtil *qa)
std::pair< Int_t, std::vector< Double_t > > GetTotalSteps(Double_t In[3], Double_t Out[3], Double_t dist)
void GetCounters(Int_t &nEl, Int_t &nLattice, Int_t &nOverThr) const
Int_t FlushBuffer(ULong64_t time=0)
Flush local digi buffer.
void SetSpadicResponse(Double_t calibration, Double_t tau)
Bool_t MakeRaw()
Steering routine for converting MC point to raw format.
void SetNoiseLevel(Double_t sigma_keV)
Bool_t MakeDigi(CbmTrdPoint *p, Double_t time, Bool_t TR)
Steering routine for converting MC point to digits.
Double_t fMinimumChargeTH
void AddDigi(Int_t address, Double_t charge, Double_t chargeTR, Double_t time, Int_t trigger)
Double_t AddNoise(Double_t charge)
Double_t CalcPRF(Double_t x, Double_t W, Double_t h)
Double_t CalcResponse(Double_t t)
void AddDigitoBuffer(Int_t address, Double_t charge, Double_t chargeTR, Double_t time, Int_t trigger)
void ProcessBuffer(Int_t address)
std::map< Int_t, std::vector< std::vector< Int_t > > > fMCBuffer
void NoiseTime(ULong64_t eventTime)
void ScanPadPlane(const Double_t *local_point, Double_t reldrift, Double_t clusterELoss, Double_t clusterELossTR, Int_t epoints, Int_t ipoint)
std::vector< Double_t > AddCorrelatedNoise(std::vector< Double_t > pulse)
CbmTrdRawToDigiR * fMessageConverter
void SetGamma(Double_t gamma)
virtual ~CbmTrdModuleSimR()
CbmTrdModuleSimR(Int_t mod, Int_t ly, Int_t rot)
std::map< Int_t, std::vector< std::pair< CbmTrdDigi *, CbmMatch * > > > fAnalogBuffer
void SetTriggerThreshold(Double_t minCharge)
CbmTimeSlice * fTimeSlice
link to CBM time slice
Int_t CheckTrigger(std::vector< Double_t > pulse)
void AddDigitoPulseBuffer(Int_t address, Double_t reldrift, Double_t charge, Double_t chargeTR, Double_t time, Int_t trigger, Int_t epoints, Int_t ipoint)
std::map< Int_t, Double_t > fShiftQA
std::map< Int_t, Double_t > fMCQA
Int_t AddCrosstalk(Double_t address, Int_t i, Int_t sec, Int_t row, Int_t col, Int_t ncols)
void SetAsicPar(CbmTrdParModAsic *p=NULL)
Double_t fSigma_noise_keV
std::vector< Double_t > MakePulse(Double_t charge, std::vector< Double_t > pulse, Int_t address)
Double_t AddDrifttime(Double_t x, Double_t z)
void SetMessageConverter(CbmTrdRawToDigiR *conv)
std::map< Int_t, std::vector< std::map< TString, Int_t > > > fLinkQA
void CheckTime(Int_t address)
CbmTrdModuleSimR & operator=(const CbmTrdModuleSimR &)
Int_t GetMultiBin(std::vector< Double_t > pulse)
Bool_t CheckMulti(Int_t address, std::vector< Double_t > pulse)
void SetNCluster(Int_t nCluster)
std::map< Int_t, std::pair< Double_t, Int_t > > fMultiBuffer
std::map< Int_t, std::pair< std::vector< Double_t >, CbmMatch * > > fPulseBuffer
std::map< Int_t, Double_t > fTimeBuffer
void ProcessPulseBuffer(Int_t address, Bool_t FNcall, Bool_t MultiCall, Bool_t down, Bool_t up)
void SetPadPlaneScanArea(Int_t row)
void SetDistributionPoints(Int_t points)
Int_t nofPointsAboveThreshold
void SetPulseMode(Bool_t pulsed)
void GetModuleType(CbmTrdRawToDigiR *conv)
Double_t GetStep(Double_t dist, Int_t roll)
void AddToPulse(Int_t address, Double_t charge, Double_t reldrift, std::vector< Double_t > pulse)
void CheckBuffer(Bool_t EB)
Bool_t DistributeCharge(Double_t pointin[3], Double_t pointout[3], Double_t delta[3], Double_t pos[3], Int_t ipoints)
CbmTrdModuleSimR(const CbmTrdModuleSimR &)
Abstract class for module wise digitization and raw format producing.
Describe TRD module ASIC settings (electronic gain, delays, etc)
Describe TRD module ASIC settings (electronic gain, delays, etc)