fESDVZEROfriend(0x0),
fCalibData(NULL),
fTimeSlewing(NULL),
+ fSaturationCorr(NULL),
fCollisionMode(0),
fBeamEnergy(0.),
fDigitsArray(0)
delays->GetBinContent(i+1)+
kV0Offset);
}
+
+ AliCDBEntry *entry5 = AliCDBManager::Instance()->Get("VZERO/Calib/Saturation");
+ if (!entry5) AliFatal("Saturation entry is not found in OCDB !");
+ fSaturationCorr = (TObjArray*)entry5->GetObject();
}
fESDVZEROfriend->SetBBMBFlag(offlineCh,iBunch,rawStream.GetBBMBFlag(iChannel,iBunch));
fESDVZEROfriend->SetBGMBFlag(offlineCh,iBunch,rawStream.GetBGMBFlag(iChannel,iBunch));
}
-
+ for (Int_t iEv = 0; iEv < AliESDVZEROfriend::kNEvOfInt; iEv++) {
+ fESDVZEROfriend->SetBBFlag(offlineCh,iEv,rawStream.GetBBFlag(iChannel,iEv));
+ fESDVZEROfriend->SetBGFlag(offlineCh,iEv,rawStream.GetBGFlag(iChannel,iEv));
+ }
}
// Filling the global part of esd friend object that is available only for raw data
aBBflag[pmNumber],aBGflag[pmNumber]));
};
- mult[pmNumber] = adc[pmNumber]*fCalibData->GetMIPperADC(pmNumber);
+ TF1 *saturationFunc = (TF1*)fSaturationCorr->UncheckedAt(pmNumber);
+ if (!saturationFunc) AliFatal(Form("Saturation correction for channel %d is not found!",pmNumber));
+ AliDebug(1,Form("Saturation PM=%d %f %f",pmNumber,adc[pmNumber],saturationFunc->Eval(adc[pmNumber])));
+ mult[pmNumber] = saturationFunc->Eval(adc[pmNumber])*fCalibData->GetMIPperADC(pmNumber);
// Fill ESD friend object
for (Int_t iEv = 0; iEv < AliESDVZEROfriend::kNEvOfInt; iEv++) {
fESDVZEROfriend->SetPedestal(pmNumber,iEv,(Float_t)digit->ChargeADC(iEv));
fESDVZEROfriend->SetIntegratorFlag(pmNumber,iEv,(iEv%2 == 0) ? integrator : !integrator);
- fESDVZEROfriend->SetBBFlag(pmNumber,iEv,aBBflag[pmNumber]);
- fESDVZEROfriend->SetBGFlag(pmNumber,iEv,aBGflag[pmNumber]);
}
fESDVZEROfriend->SetTime(pmNumber,digit->Time());
fESDVZEROfriend->SetWidth(pmNumber,digit->Width());
fESDVZERO->SetBit(AliESDVZERO::kOnlineBitsFilled,kTRUE);
fESDVZERO->SetBBFlag(aBBflag);
fESDVZERO->SetBGFlag(aBGflag);
+ fESDVZERO->SetBit(AliESDVZERO::kCorrectedForSaturation,kTRUE);
// now fill the V0 decision and channel flags
{
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;