fPMGainsB[i] = gains->GetBinContent(i+1,2);
}
}
+
+Float_t AliVZEROCalibData::GetCalibDiscriThr(Int_t channel, Bool_t scaled)
+{
+ // The method returns actual TDC discri threshold
+ // extracted from the data.
+ //
+ // In case scaled flag is set the threshold is scaled
+ // so that to get 4.0 for a FEE threshold of 4.0.
+ // In this way we avoid a change in the slewing correction
+ // for the entire 2010 p-p data.
+ //
+ // The method is to be moved to OCDB object.
+
+ Float_t thr = GetDiscriThr(channel);
+
+ Float_t calThr = 0;
+ if (thr <= 1.)
+ calThr = 3.1;
+ else if (thr >= 2.)
+ calThr = (3.1+1.15*thr-1.7);
+ else
+ calThr = (3.1-0.3*thr+0.3*thr*thr);
+
+ if (scaled) calThr *= 4./(3.1+1.15*4.-1.7);
+
+ return calThr;
+}
Float_t *GetPMGainsA() const { return fPMGainsA; }
Float_t *GetPMGainsB() const { return fPMGainsB; }
+ Float_t GetCalibDiscriThr(Int_t channel, Bool_t scaled);
+
protected:
void InitLightYields();
void InitPMGains();
Float_t maximum = 0.9*fSignalShape->GetMaximum(0,200); // Not exact, one needs to do this on the convoluted
Float_t integral2 = fSignalShape->Integral(0,200); // function. Anyway the effect is small <10% on the 2.5 ADC thr
for (Int_t ipmt = 0; ipmt < 64; ++ipmt) {
- Float_t thr = fCalibData->GetDiscriThr(ipmt)*kChargePerADC*maximum*fBinSize[ipmt]/integral2;
+ Float_t thr = fCalibData->GetCalibDiscriThr(ipmt,kFALSE)*kChargePerADC*maximum*fBinSize[ipmt]/integral2;
Bool_t ltFound = kFALSE, ttFound = kFALSE;
for (Int_t iBin = 0; iBin < fNBins[ipmt]; ++iBin) {
Float_t t = fBinSize[ipmt]*Float_t(iBin);
if (adc < 1e-6) return time;
// Slewing correction
- Float_t thr = fCalibData->GetDiscriThr(i);
+ Float_t thr = fCalibData->GetCalibDiscriThr(i,kTRUE);
time -= fTimeSlewing->Eval(adc/thr);
return time;