//________________________________________________________________
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();
if(fCalibDataEmc)
return fCalibDataEmc->GetADCchannelEmc(module,column,row);
else
- return 0.0015; // default width of one EMC ADC channel in GeV
+ return 1.0; // default width of one EMC ADC channel in GeV
}
//________________________________________________________________
if(fCalibDataEmc)
return fCalibDataEmc->GetADCpedestalEmc(module,column,row);
else
- return 0.005; // default EMC ADC pedestal
+ return 0.0; // default EMC ADC pedestal
}
//________________________________________________________________
if(fCalibDataCpv)
return fCalibDataCpv->GetADCchannelCpv(module,column,row);
else
- return 0.0012; // default width of one ADC channel in CPV 'popugais'
+ return 0.0012; // default width of one ADC channel in CPV arbitrary units
}
//________________________________________________________________
}
//________________________________________________________________
-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.00075,0.00375); // Cmax/Cmin = 5, (Cmax-Cmin)/2 = 0.0015
- adcPedestalEmc=rn.Uniform(0.0045,0.0055); //+-10% spread of pedestals from 0.005
+ 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");
Float_t adcChannelCpv,adcPedestalCpv;
for(Int_t module=1; module<6; module++) {
- for(Int_t column=1; column<65; column++) {
+ 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);