@@ -164,6 +164,7 @@ HitDigitizer_mPMT::HitDigitizer_mPMT(int seed) : HitDigitizer(seed)
164164 fAmplitudeSigma = 0.37 ;
165165 fADCMax = 999999 ;
166166 fADCOverflow = 0 ;
167+ fRandomSampleStartTime = 0 ;
167168
168169 Configuration *Conf = Configuration::GetInstance ();
169170 Conf->GetValue <float >(" SamplingInterval" , fDt );
@@ -177,6 +178,7 @@ HitDigitizer_mPMT::HitDigitizer_mPMT(int seed) : HitDigitizer(seed)
177178 Conf->GetValue <int >(" ChargeWindowBefore" , fChargeWindowBefore );
178179 Conf->GetValue <int >(" ChargeWindowAfter" , fChargeWindowAfter );
179180 Conf->GetValue <int >(" HitInsensitivityPeriod" , fHitInsensitivityPeriod );
181+ Conf->GetValue <int >(" RandomSampleStartTime" , fRandomSampleStartTime );
180182
181183 this ->LoadWaveform (Conf->GetValue <string>(" WaveformFile" ));
182184 Conf->GetValue <float >(" AmplitudeSigma" , fAmplitudeSigma );
@@ -349,6 +351,12 @@ TH1F HitDigitizer_mPMT::BuildWavetrain(const vector<TrueHit*> PEs, double wavefo
349351 double dt = fDt ;
350352 double tmin = floor ((PEs.front ()->GetTime ())/dt)*dt;
351353 double tmax = ceil ((PEs.back ()->GetTime ()+waveform_window)/dt)*dt;
354+ // Randomize waveform sample start time if necessary
355+ if (fRandomSampleStartTime ==1 )
356+ {
357+ tmin = floor ((PEs.front ()->GetTime ())/dt)*dt - dt*fRand ->Uniform (0 ,1 );
358+ tmax = ceil ((PEs.back ()->GetTime ()+waveform_window-tmin)/dt)*dt+tmin;
359+ }
352360 TH1F hWT (" " ," " ,(int )(tmax-tmin)/dt,tmin,tmax);
353361
354362 double waveform_offset = fWaveformOffset ;
0 commit comments