35 Info(
"Constructor",
"Use default GainMM %g",
fRatioYX);
41 Info(
"Constructor",
"Use default GainMM %g",
fGainMM);
47 Info(
"Constructor",
"Use default GainGEM1 %g",
fGainGEM1);
53 Info(
"Constructor",
"Use default GainGEM2 %g",
fGainGEM2);
59 Info(
"Constructor",
"Use default Polya %g",
fPolya);
74 Info(
"Constructor",
"Use default SigmaPrf %g",
fSigmaPrf);
80 Info(
"Constructor",
"Use default StripWidth %g",
fStripWidth);
85 Info(
"HarpoSimReadout",
"SigmaPrf: %g",
fSigmaPrf);
133 Double_t rndm = gRandom->Rndm();
134 charge *= 4*(1.-
fPolya)*rndm*rndm*rndm + gRandom->Exp(
fPolya);
137 if(charge<=0)
return 0;
144 if(
gHarpoDebug>4) Info(
"ProcessElectron",
"AddCharge(%f %f %f %f %f)",charge,sigma,x,y,t);
163 if(charge<0.1)
return 0;
169 if(iX<0 || iX >=
NCHAN)
return 0;
170 if(iY<0 || iY >=
NCHAN)
return 0;
172 Double_t chargeSum = 0;
175 for(Int_t i = iX - nbins; i<iX+nbins+1; i++){
180 Double_t chXstrip = 0, chXpads = 0;
183 chXstrip = (TMath::Abs(TMath::Erf((x-Xi1)/sigma) - TMath::Erf((x-Xi2)/sigma)))/2;
185 chXpads = (TMath::Abs(TMath::Erf((x-Xi3)/sigma) - TMath::Erf((x-Xi4)/sigma)))/2;
187 if(x>Xi3 && x<Xi4) chXstrip = 1;
188 if(x>Xi1 && x<Xi2) chXpads = 1;
195 chargeSum += chXstrip;
197 if(chXpads<0.1)
continue;
198 for(Int_t j = iY - nbins; j<iY+nbins+1; j++){
204 chY = (TMath::Abs(TMath::Erf((y-Yj1)/sigma) - TMath::Erf((y-Yj2)/sigma)))/2;
206 if(y>Yj1 && y<Yj2) chY = 1;
219 if(
gHarpoDebug>3) Info(
"AddCharge",
"### In: %.3g, OUT: %.3g => %.3g",charge, chargeSum, chargeSum/charge);
229 if(TMath::Abs(fmod(TMath::Abs(x),33)-16.5)<0.5)
return kTRUE;
231 if(TMath::Abs(fmod(TMath::Abs(x),100)-50)<1)
return kTRUE;
232 if(TMath::Abs(fmod(TMath::Abs(y),100)-50)<1)
return kTRUE;
Int_t AddCharge(HarpoDccMap *map, Int_t channel, Double_t time, Double_t charge)
Bool_t isBlocked(Double_t x, Double_t y)
enum hSimReadoutRegion_ hSimReadoutRegion
Harpo Reader Type.
Int_t AddCharge(Double_t charge, Double_t sigma, Double_t x, Double_t y, Double_t t)
Int_t AddHit(Int_t plane, Int_t ch, Double_t t, Double_t q)
HarpoSimElectronics * fDigi
Bool_t Lookup(const char *path, Bool_t &val)
Lookup function for scalar values.
Transfer region 2 (between top and bottom GEM)
HarpoSimStrips * ProcessElectron(Double_t x, Double_t y, Double_t t, hSimReadoutRegion region)