// Default constructor.
// Open CDB entry, get EMC and CPV calibration data and bad channel map.
// If EMC or CPV calibration data does not exist, stop the run
-
- AliCDBEntry* entryEmc = AliCDBManager::Instance()->Get(fEmcDataPath.Data());
- if(entryEmc)
- fCalibDataEmc = (AliPHOSEmcCalibData*)entryEmc->GetObject();
-
- if(!fCalibDataEmc)
- AliWarning("Calibration parameters for PHOS EMC not found. Create a new set.\n");
-
- AliCDBEntry* entryCpv = AliCDBManager::Instance()->Get(fCpvDataPath.Data());
- if(entryCpv)
- fCalibDataCpv = (AliPHOSCpvCalibData*)entryCpv->GetObject();
-
- if(!fCalibDataCpv)
- AliWarning("Calibration parameters for PHOS CPV not found. Create a new set.\n");
-
- AliCDBEntry* entryEmcBadMap = AliCDBManager::Instance()->Get(fEmcBadChannelsMapPath.Data());
- if(entryEmcBadMap)
- fEmcBadChannelsMap = (AliPHOSEmcBadChannelsMap*)entryEmcBadMap->GetObject();
-
+
}
//________________________________________________________________
}
+//________________________________________________________________
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;
- fEmcBadChannelsMap = rhs.fEmcBadChannelsMap;
- fEmcDataPath = rhs.fEmcDataPath;
- fCpvDataPath = rhs.fCpvDataPath;
- fEmcBadChannelsMapPath = rhs.fEmcBadChannelsMapPath;
-
+ if (this != &rhs) {
+ fCalibDataEmc = rhs.fCalibDataEmc;
+ fCalibDataCpv = rhs.fCalibDataCpv;
+ fEmcBadChannelsMap = rhs.fEmcBadChannelsMap;
+ fEmcDataPath = rhs.fEmcDataPath;
+ fCpvDataPath = rhs.fCpvDataPath;
+ fEmcBadChannelsMapPath = rhs.fEmcBadChannelsMapPath;
+ }
+ else {
+ AliFatal("Self assignment!");
+ }
return *this;
}
if(fEmcBadChannelsMap)
fEmcBadChannelsMap->BadChannelIds(badIds);
}
+
+//________________________________________________________________
+Float_t AliPHOSCalibData::GetADCchannelEmcDecalib(Int_t module, Int_t column, Int_t row) const
+{
+ // Return random EMC (de)calibration factor O(1) for channel defined by (module,column,row).
+ // Used in simulation.
+
+ // module, column,raw should follow the internal PHOS convention:
+ // module 1:5, column 1:56, row 1:64
+ // if CBD instance exists, the value is taken from CDB.
+ // Otherwise it is an ideal one (no decalibration).
+
+ if(fCalibDataEmc)
+ return fCalibDataEmc->GetADCchannelEmcDecalib(module,column,row);
+ else
+ return 1.0; // no decalibration by default
+}
+
+//________________________________________________________________
+void AliPHOSCalibData::SetADCchannelEmcDecalib(Int_t module, Int_t column, Int_t row, Float_t value)
+{
+ // Set EMC (de)calibration factor for (module,column,row).
+ // Used in simulation.
+
+ if(!fCalibDataEmc)
+ fCalibDataEmc = new AliPHOSEmcCalibData("PHOS-EMC");
+
+ fCalibDataEmc->SetADCchannelEmcDecalib(module,column,row,value);
+}