EMC bad channels map added.
authorpolicheh <policheh@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 6 Apr 2007 14:27:27 +0000 (14:27 +0000)
committerpolicheh <policheh@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 6 Apr 2007 14:27:27 +0000 (14:27 +0000)
PHOS/AliPHOSCalibData.cxx
PHOS/AliPHOSCalibData.h

index 64129c8..4b9bf08 100644 (file)
@@ -29,6 +29,7 @@
 #include "AliCDBEntry.h"
 #include "AliPHOSEmcCalibData.h"
 #include "AliPHOSCpvCalibData.h"
+#include "AliPHOSEmcBadChannelsMap.h"
 #include "AliCDBMetaData.h"
 
 ClassImp(AliPHOSCalibData)
@@ -38,12 +39,14 @@ ClassImp(AliPHOSCalibData)
     TNamed(), 
     fCalibDataEmc(0x0), 
     fCalibDataCpv(0x0),
+    fEmcBadChannelsMap(0x0),
     fEmcDataPath("PHOS/Calib/EmcGainPedestals"),
-    fCpvDataPath("PHOS/Calib/CpvGainPedestals")
+    fCpvDataPath("PHOS/Calib/CpvGainPedestals"),
+    fEmcBadChannelsMapPath("PHOS/Calib/EmcBadChannels")
 {
   // Default constructor
   
-  AliCDBEntry* entryEmc = AliCDBManager::Instance()->Get(fEmcDataPath.Data());
+   AliCDBEntry* entryEmc = AliCDBManager::Instance()->Get(fEmcDataPath.Data());
   if(entryEmc)
     fCalibDataEmc = (AliPHOSEmcCalibData*)entryEmc->GetObject();
   
@@ -51,14 +54,19 @@ ClassImp(AliPHOSCalibData)
   if(entryCpv)
     fCalibDataCpv = (AliPHOSCpvCalibData*)entryCpv->GetObject();
 
+  AliCDBEntry* entryEmcBadMap = AliCDBManager::Instance()->Get(fEmcBadChannelsMapPath.Data());
+  if(entryEmcBadMap)
+    fEmcBadChannelsMap = (AliPHOSEmcBadChannelsMap*)entryEmcBadMap->GetObject(); 
+
 }
 
 //________________________________________________________________
 AliPHOSCalibData::AliPHOSCalibData(Int_t runNumber) :
   TNamed("phosCalib","PHOS Calibration Data Manager"),
-  fCalibDataEmc(0x0), fCalibDataCpv(0x0),
+  fCalibDataEmc(0x0), fCalibDataCpv(0x0), fEmcBadChannelsMap(0x0),
   fEmcDataPath("PHOS/Calib/EmcGainPedestals"),
-  fCpvDataPath("PHOS/Calib/CpvGainPedestals")
+  fCpvDataPath("PHOS/Calib/CpvGainPedestals"),
+  fEmcBadChannelsMapPath("PHOS/Calib/EmcBadChannels")
 {
   // Constructor
   AliCDBEntry* entryEmc = AliCDBManager::Instance()->Get(fEmcDataPath.Data(),runNumber);
@@ -69,6 +77,11 @@ AliPHOSCalibData::AliPHOSCalibData(Int_t runNumber) :
   if(entryCpv)
     fCalibDataCpv = (AliPHOSCpvCalibData*)entryCpv->GetObject();
 
+  AliCDBEntry* entryEmcBadMap = AliCDBManager::Instance()->
+    Get(fEmcBadChannelsMapPath.Data(),runNumber);
+  if(entryEmcBadMap)
+    fEmcBadChannelsMap = (AliPHOSEmcBadChannelsMap*)entryEmcBadMap->GetObject(); 
+
 }
 
 //________________________________________________________________
@@ -76,8 +89,10 @@ AliPHOSCalibData::AliPHOSCalibData(AliPHOSCalibData & phosCDB) :
   TNamed(phosCDB),
   fCalibDataEmc(phosCDB.fCalibDataEmc),
   fCalibDataCpv(phosCDB.fCalibDataCpv),
+  fEmcBadChannelsMap(phosCDB.fEmcBadChannelsMap),
   fEmcDataPath(phosCDB.fEmcDataPath),
-  fCpvDataPath(phosCDB.fCpvDataPath)
+  fCpvDataPath(phosCDB.fCpvDataPath),
+  fEmcBadChannelsMapPath(phosCDB.fEmcBadChannelsMapPath)
 {
   // Copy constructor
 }
@@ -96,8 +111,10 @@ AliPHOSCalibData & AliPHOSCalibData::operator = (const AliPHOSCalibData & rhs)
   TNamed::operator=(rhs);
   fCalibDataEmc = rhs.fCalibDataEmc;
   fCalibDataCpv = rhs.fCalibDataCpv;
+  fEmcBadChannelsMap = rhs.fEmcBadChannelsMap;
   fEmcDataPath  = rhs.fEmcDataPath;
   fCpvDataPath  = rhs.fCpvDataPath;
+  fEmcBadChannelsMapPath = rhs.fEmcBadChannelsMapPath;
   
   return *this;
 }
@@ -132,6 +149,9 @@ void AliPHOSCalibData::CreateNew()
   if(fCalibDataCpv) delete fCalibDataCpv;
   fCalibDataCpv = new AliPHOSCpvCalibData("PHOS-CPV");
 
+  if(fEmcBadChannelsMap) delete fEmcBadChannelsMap;
+  fEmcBadChannelsMap = new AliPHOSEmcBadChannelsMap();
+
 }
 
 //________________________________________________________________
@@ -176,6 +196,27 @@ Bool_t AliPHOSCalibData::WriteCpv(Int_t firstRun, Int_t lastRun, AliCDBMetaData
 
 }
 
+
+//________________________________________________________________
+Bool_t AliPHOSCalibData::WriteEmcBadChannelsMap(Int_t firstRun,Int_t lastRun,AliCDBMetaData *md)
+{
+  //Write EMC bad channels map into CDB.
+
+  if(!fEmcBadChannelsMap) return kFALSE;
+  
+  AliCDBStorage* storage = AliCDBManager::Instance()->GetSpecificStorage("PHOS/*");
+  if(!storage)
+    storage = AliCDBManager::Instance()->GetDefaultStorage();
+
+  if(storage) { 
+    AliCDBId id(fEmcBadChannelsMapPath.Data(),firstRun,lastRun);
+    storage->Put(fEmcBadChannelsMap,id, md);
+    return kTRUE;
+  }
+  else
+    return kFALSE;
+}
+
 //________________________________________________________________
 Float_t AliPHOSCalibData::GetADCchannelEmc(Int_t module, Int_t column, Int_t row) const
 {
@@ -337,3 +378,23 @@ void AliPHOSCalibData::RandomCpv(Float_t ccMin, Float_t ccMax)
     }
   }
 }
+
+//________________________________________________________________
+Bool_t AliPHOSCalibData::IsBadChannelEmc(Int_t module, Int_t col, Int_t row) const
+{
+  //If no bad channels map found, channel considered good
+
+  if(fEmcBadChannelsMap) 
+    return fEmcBadChannelsMap->IsBadChannel(module,col,row);
+  else
+    return kFALSE;
+}
+
+//________________________________________________________________
+Int_t AliPHOSCalibData::GetNumOfEmcBadChannels() const
+{
+  if(fEmcBadChannelsMap)
+    return fEmcBadChannelsMap->GetNumOfBadChannels();
+  else
+    return 0;
+}
index a4118da..f0bd819 100644 (file)
@@ -15,6 +15,7 @@
 
 class AliPHOSEmcCalibData;
 class AliPHOSCpvCalibData;
+class AliPHOSEmcBadChannelsMap;
 class AliCDBMetaData;
 
 class AliPHOSCalibData: public TNamed {
@@ -46,21 +47,27 @@ class AliPHOSCalibData: public TNamed {
   void SetADCchannelCpv(Int_t module, Int_t column, Int_t row, Float_t value);
   void SetADCpedestalCpv(Int_t module, Int_t column, Int_t row, Float_t value);
 
+  Int_t  GetNumOfEmcBadChannels() const;
+  Bool_t IsBadChannelEmc(Int_t module, Int_t col, Int_t row) const; 
+
   void SetEmcDataPath(const char* emcPath) {fEmcDataPath=emcPath;}
   void SetCpvDataPath(const char* cpvPath) {fCpvDataPath=cpvPath;}
 
   Bool_t WriteEmc(Int_t firstRun, Int_t lastRun, AliCDBMetaData *md);
   Bool_t WriteCpv(Int_t firstRun, Int_t lastRun, AliCDBMetaData *md);
+  Bool_t WriteEmcBadChannelsMap(Int_t firstRun, Int_t lastRun, AliCDBMetaData *md);
 
  private:
 
   AliPHOSEmcCalibData* fCalibDataEmc; // EMC calibration data
   AliPHOSCpvCalibData* fCalibDataCpv; // CPV calibration data
+  AliPHOSEmcBadChannelsMap* fEmcBadChannelsMap; // EMC bad channels map
   
   TString fEmcDataPath; // path to EMC calibration data
   TString fCpvDataPath; // path to CPV calibration data
+  TString fEmcBadChannelsMapPath; // path to bad channels map
 
-  ClassDef(AliPHOSCalibData,2)    // PHOS Calibration data
+  ClassDef(AliPHOSCalibData,3)    // PHOS Calibration data
 };
 
 #endif