//________________________________________________________________
AliPHOSCalibData::AliPHOSCalibData():
- TNamed(), fCalibDataEmc(0x0), fCalibDataCpv(0x0)
+ TNamed(),
+ fCalibDataEmc(0x0),
+ fCalibDataCpv(0x0),
+ fEmcDataPath("PHOS/Calib/EmcGainPedestals"),
+ fCpvDataPath("PHOS/Calib/CpvGainPedestals")
{
- // Default constructor
-
- fEmcDataPath="PHOS/Calib/EmcGainPedestals";
- fCpvDataPath="PHOS/Calib/CpvGainPedestals";
-
+ // Default constructor
+
AliCDBEntry* entryEmc = AliCDBManager::Instance()->Get(fEmcDataPath.Data());
if(entryEmc)
fCalibDataEmc = (AliPHOSEmcCalibData*)entryEmc->GetObject();
//________________________________________________________________
AliPHOSCalibData::AliPHOSCalibData(Int_t runNumber) :
TNamed("phosCalib","PHOS Calibration Data Manager"),
- fCalibDataEmc(0x0), fCalibDataCpv(0x0)
+ fCalibDataEmc(0x0), fCalibDataCpv(0x0),
+ fEmcDataPath("PHOS/Calib/EmcGainPedestals"),
+ fCpvDataPath("PHOS/Calib/CpvGainPedestals")
{
// Constructor
-
- fEmcDataPath="PHOS/Calib/EmcGainPedestals";
- fCpvDataPath="PHOS/Calib/CpvGainPedestals";
-
AliCDBEntry* entryEmc = AliCDBManager::Instance()->Get(fEmcDataPath.Data(),runNumber);
if(entryEmc)
fCalibDataEmc = (AliPHOSEmcCalibData*)entryEmc->GetObject();
//________________________________________________________________
AliPHOSCalibData::AliPHOSCalibData(AliPHOSCalibData & phosCDB) :
- TNamed(phosCDB)
+ TNamed(phosCDB),
+ fCalibDataEmc(phosCDB.fCalibDataEmc),
+ fCalibDataCpv(phosCDB.fCalibDataCpv),
+ fEmcDataPath(phosCDB.fEmcDataPath),
+ fCpvDataPath(phosCDB.fCpvDataPath)
{
// Copy constructor
-
- fCalibDataEmc = phosCDB.fCalibDataEmc;
- fCalibDataCpv = phosCDB.fCalibDataCpv;
-
- fEmcDataPath = phosCDB.fEmcDataPath;
- fCpvDataPath = phosCDB.fCpvDataPath;
}
//________________________________________________________________
AliPHOSCalibData::~AliPHOSCalibData()
}
+AliPHOSCalibData & AliPHOSCalibData::operator = (const AliPHOSCalibData & rhs)
+{
+ //Copy-assignment. Does not delete anything (see destructor)
+ //compiler generated is ok, but ... because -Weffc++ and pointer
+ //members we have to define it explicitly.
+ TNamed::operator=(rhs);
+ fCalibDataEmc = rhs.fCalibDataEmc;
+ fCalibDataCpv = rhs.fCalibDataCpv;
+ fEmcDataPath = rhs.fEmcDataPath;
+ fCpvDataPath = rhs.fCpvDataPath;
+
+ return *this;
+}
+
//________________________________________________________________
void AliPHOSCalibData::Reset()
{
if(!fCalibDataEmc) return kFALSE;
- AliCDBStorage* storage = AliCDBManager::Instance()->GetSpecificStorage("PHOS");
+ AliCDBStorage* storage = AliCDBManager::Instance()->GetSpecificStorage("PHOS/*");
if(!storage)
storage = AliCDBManager::Instance()->GetDefaultStorage();
if(!fCalibDataCpv) return kFALSE;
- AliCDBStorage* storage = AliCDBManager::Instance()->GetSpecificStorage("PHOS");
+ AliCDBStorage* storage = AliCDBManager::Instance()->GetSpecificStorage("PHOS/*");
if(!storage)
storage = AliCDBManager::Instance()->GetDefaultStorage();
}
//________________________________________________________________
-void AliPHOSCalibData::RandomEmc()
+void AliPHOSCalibData::RandomEmc(Float_t ccMin, Float_t ccMax)
{
// Create decalibrated EMC with calibration coefficients and pedestals
// randomly distributed within hard-coded limits
+ // Default spread of calibration parameters is Cmax/Cmin = 4, (Cmax-Cmin)/2 = 1
if(fCalibDataEmc) delete fCalibDataEmc;
fCalibDataEmc = new AliPHOSEmcCalibData("PHOS-EMC");
for(Int_t module=1; module<6; module++) {
for(Int_t column=1; column<57; column++) {
for(Int_t row=1; row<65; row++) {
- adcChannelEmc =rn.Uniform(0.5,1.5); // Cmax/Cmin = 4, (Cmax-Cmin)/2 = 1
+ adcChannelEmc =rn.Uniform(ccMin,ccMax);
adcPedestalEmc=rn.Uniform(0.0,0.0); // 0 spread of pedestals
fCalibDataEmc->SetADCchannelEmc(module,column,row,adcChannelEmc);
fCalibDataEmc->SetADCpedestalEmc(module,column,row,adcPedestalEmc);
}
//________________________________________________________________
-void AliPHOSCalibData::RandomCpv()
+void AliPHOSCalibData::RandomCpv(Float_t ccMin, Float_t ccMax)
{
// Create decalibrated CPV with calibration coefficients and pedestals
// randomly distributed within hard-coded limits
+ // Default spread of calibration parameters is 0.0012 +- 25%
if(fCalibDataCpv) delete fCalibDataCpv;
fCalibDataCpv = new AliPHOSCpvCalibData("PHOS-CPV");
for(Int_t module=1; module<6; module++) {
for(Int_t column=1; column<57; column++) {
for(Int_t row=1; row<129; row++) {
- adcChannelCpv =rn.Uniform(0.0009,0.0015); // 0.0012 +- 25%
+ adcChannelCpv =rn.Uniform(ccMin,ccMax);
adcPedestalCpv=rn.Uniform(0.0048,0.0192); // Ped[max]/Ped[min] = 4, <Ped> = 0.012
fCalibDataCpv->SetADCchannelCpv(module,column,row,adcChannelCpv);
fCalibDataCpv->SetADCpedestalCpv(module,column,row,adcPedestalCpv);