44 MuFilter* MuFilterDet =
dynamic_cast<MuFilter*
> (gROOT->GetListOfGlobals()->FindObject(
"MuFilter"));
49 Float_t timeResol = MuFilterDet->
GetConfParF(
"MuFilter/timeResol");
52 Float_t siPMcalibration=0;
53 Float_t siPMcalibrationS=0;
55 if (floor(detID/10000)==3) {
56 if (
nSides==2){attLength = MuFilterDet->
GetConfParF(
"MuFilter/DsAttenuationLength");}
57 else {attLength = MuFilterDet->
GetConfParF(
"MuFilter/DsTAttenuationLength");}
58 siPMcalibration = MuFilterDet->
GetConfParF(
"MuFilter/DsSiPMcalibration");
59 propspeed = MuFilterDet->
GetConfParF(
"MuFilter/DsPropSpeed");
62 if (floor(detID/10000)==1 &&
nSides==1){
64 attLength = 2*MuFilterDet->
GetConfParF(
"MuFilter/VandUpAttenuationLength");
66 else {attLength = MuFilterDet->
GetConfParF(
"MuFilter/VandUpAttenuationLength");}
67 siPMcalibration = MuFilterDet->
GetConfParF(
"MuFilter/VandUpSiPMcalibration");
68 siPMcalibrationS = MuFilterDet->
GetConfParF(
"MuFilter/VandUpSiPMcalibrationS");
69 propspeed = MuFilterDet->
GetConfParF(
"MuFilter/VandUpPropSpeed");
72 for (
unsigned int j=0; j<16; ++j){
76 LOG(DEBUG) <<
"detid "<<detID<<
" size "<<
nSiPMs<<
" side "<<
nSides;
79 Float_t signalLeft = 0;
80 Float_t signalRight = 0;
81 Float_t earliestToAL = 1E20;
82 Float_t earliestToAR = 1E20;
83 for(
auto p = std::begin(V); p!= std::end(V); ++p) {
85 Double_t signal = (*p)->GetEnergyLoss();
88 TVector3 vLeft,vRight;
89 TVector3 impact((*p)->GetX(),(*p)->GetY() ,(*p)->GetZ() );
91 Double_t distance_Left = (vLeft-impact).Mag();
92 Double_t distance_Right = (vRight-impact).Mag();
94 signalLeft+=signal/
nSides*TMath::Exp(-distance_Left/attLength);
95 signalRight+=signal/
nSides*TMath::Exp(-distance_Right/attLength);
98 Double_t ptime = (*p)->GetTime();
99 Double_t t_Left = ptime + distance_Left/propspeed;
100 Double_t t_Right = ptime + distance_Right/propspeed;
101 if ( t_Left <earliestToAL){earliestToAL = t_Left ;}
102 if ( t_Right <earliestToAR){earliestToAR = t_Right ;}
106 for (
unsigned int j=0; j<
nSiPMs; ++j){
107 if ( floor(detID/10000)==2 && (j==2 or j==5)){
109 times[j] = gRandom->Gaus(earliestToAL, timeResol);
112 times[j] = gRandom->Gaus(earliestToAL, timeResol);
116 times[j+
nSiPMs] = gRandom->Gaus(earliestToAR, timeResol);
120 for (Int_t i=0;i<16;i++){
fMasked[i]=kFALSE;}
121 LOG(DEBUG) <<
"signal created";
276 MuFilter* MuFilterDet =
dynamic_cast<MuFilter*
> (gROOT->GetListOfGlobals()->FindObject(
"MuFilter"));
277 Float_t bar_length = MuFilterDet->
GetConfParF(
"MuFilter/UpstreamBarX");
278 Float_t signal_speed = MuFilterDet->
GetConfParF(
"MuFilter/VandUpPropSpeed");
280 signal_speed = MuFilterDet->
GetConfParF(
"MuFilter/DsPropSpeed");
281 bar_length = MuFilterDet->
GetConfParF(
"MuFilter/DownstreamBarX");
284 bar_length = MuFilterDet->
GetConfParF(
"MuFilter/UpstreamBarX");
287 bar_length = MuFilterDet->
GetConfParF(
"MuFilter/VetoBarX");
289 double timeConversion = 1.;
290 if (!isMC) timeConversion = ShipUnit::snd_TDC2ns;
291 return 0.5*(bar_length + dT*timeConversion*signal_speed);