Adding new calibration flavours for trigger
authorivana <ivana@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 17 Mar 2006 16:51:18 +0000 (16:51 +0000)
committerivana <ivana@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 17 Mar 2006 16:51:18 +0000 (16:51 +0000)
(Laurent)

MUON/AliMUONCalibrationData.cxx
MUON/AliMUONCalibrationData.h

index c987995..f34b42c 100644 (file)
 
 #include "AliCDBEntry.h"
 #include "AliCDBManager.h"
-#include "AliCDBStorage.h"
 #include "AliLog.h"
+#include "AliMUONTriggerEfficiencyCells.h"
+#include "AliMUONTriggerLut.h"
+#include "AliMUONV1DStore.h"
 #include "AliMUONV2DStore.h"
 #include "AliMUONVCalibParam.h"
 #include "Riostream.h"
 
+///
+/// This class is to be considered as a convenience class.
+/// Its aim is to ease retrieval of calibration data from the 
+/// condition database.
+///
+/// It acts as a "facade" to a bunch of underlying 
+/// containers/calibration classes.
+///
+
 ClassImp(AliMUONCalibrationData)
 
 //_____________________________________________________________________________
@@ -35,7 +46,12 @@ fIsValid(kTRUE),
 fRunNumber(runNumber), 
 fGains(0x0), 
 fPedestals(0x0),
-fDeadChannels(0x0)
+fDeadChannels(0x0),
+fLocalTriggerBoardMasks(0x0),
+fRegionalTriggerBoardMasks(0x0),
+fGlobalTriggerBoardMasks(0x0),
+fTriggerLut(0x0),
+fTriggerEfficiency(0x0)
 {
   //
   // Default ctor.
@@ -47,19 +63,30 @@ fDeadChannels(0x0)
   //
   if ( deferredInitialization == kFALSE )
   {
-    Gains();
-    Pedestals();
-    DeadChannels();
+    OnDemandGains();
+    OnDemandPedestals();
+    OnDemandDeadChannels();
+    OnDemandLocalTriggerBoardMasks();
+    OnDemandRegionalTriggerBoardMasks();
+    OnDemandGlobalTriggerBoardMasks();
+    OnDemandTriggerLut();
+    OnDemandTriggerEfficiency();
   }
 }
 
-//______________________________________________________________________________
-AliMUONCalibrationData::AliMUONCalibrationData(const AliMUONCalibrationData& right) 
-  : TObject(right) 
-{  
-/// Protected copy constructor (not implemented)
+//_____________________________________________________________________________
+AliMUONCalibrationData::AliMUONCalibrationData(const AliMUONCalibrationData&)
+: TObject()
+{
+  AliFatal("Implement me if needed");
+}
 
-  AliFatal("Copy constructor not provided.");
+//_____________________________________________________________________________
+AliMUONCalibrationData&
+AliMUONCalibrationData::operator=(const AliMUONCalibrationData&)
+{
+  AliFatal("Implement me if needed");
+  return *this;
 }
 
 //_____________________________________________________________________________
@@ -71,25 +98,16 @@ AliMUONCalibrationData::~AliMUONCalibrationData()
   delete fPedestals;
   delete fGains;
   delete fDeadChannels;
+  delete fLocalTriggerBoardMasks;
+  delete fRegionalTriggerBoardMasks;
+  delete fGlobalTriggerBoardMasks;
+  delete fTriggerLut;
+  delete fTriggerEfficiency;
 }
 
-//______________________________________________________________________________
-AliMUONCalibrationData& 
-AliMUONCalibrationData::operator=(const AliMUONCalibrationData& right)
-{
-/// Protected assignement operator (not implemented)
-
-  // check assignement to self
-  if (this == &right) return *this;
-
-  AliFatal("Assignement operator not provided.");
-    
-  return *this;  
-}    
-
 //_____________________________________________________________________________
 AliMUONVCalibParam*
-AliMUONCalibrationData::DeadChannel(Int_t detElemId, Int_t manuId) const
+AliMUONCalibrationData::DeadChannels(Int_t detElemId, Int_t manuId) const
 {
   //
   // Return the calibration for a given (detElemId, manuId) pair
@@ -97,12 +115,12 @@ AliMUONCalibrationData::DeadChannel(Int_t detElemId, Int_t manuId) const
   // is perfect, we might simply forget it in the store).
   //
   return
-  static_cast<AliMUONVCalibParam*>(DeadChannels()->Get(detElemId,manuId));
+  static_cast<AliMUONVCalibParam*>(OnDemandDeadChannels()->Get(detElemId,manuId));
 }
 
 //_____________________________________________________________________________
 AliMUONV2DStore*
-AliMUONCalibrationData::DeadChannels() const
+AliMUONCalibrationData::OnDemandDeadChannels() const
 {
   //
   // Create (if needed) and return the internal store for DeadChannels.
@@ -134,25 +152,12 @@ AliMUONCalibrationData::GetEntry(const char* path) const
   // Access the CDB for a given path (e.g. MUON/Calib/Pedestals),
   // and return the corresponding CDBEntry.
   //
-  AliInfo(Form("Fetching %s from Condition DataBase for run %d",path,fRunNumber));
-  
-  AliCDBManager* man = AliCDBManager::Instance();
-  if (!man->IsDefaultStorageSet())
-  {
-    AliError("No default CDB storage set !");
-    fIsValid = kFALSE;
-    return 0;
-  }
-  
-  AliCDBStorage* storage = man->GetDefaultStorage();
-  
-  AliCDBEntry* entry = storage->Get(path,fRunNumber);
-  return entry;
+  return AliCDBManager::Instance()->Get(path,fRunNumber);
 }
 
 //_____________________________________________________________________________
 AliMUONVCalibParam*
-AliMUONCalibrationData::Gain(Int_t detElemId, Int_t manuId) const
+AliMUONCalibrationData::Gains(Int_t detElemId, Int_t manuId) const
 {
   //
   // Return the gains for a given (detElemId, manuId) pair
@@ -160,7 +165,7 @@ AliMUONCalibrationData::Gain(Int_t detElemId, Int_t manuId) const
   // error (meaning that we should get gains for all channels).
   //
   AliMUONVCalibParam* gain = 
-    static_cast<AliMUONVCalibParam*>(Gains()->Get(detElemId,manuId));
+    static_cast<AliMUONVCalibParam*>(OnDemandGains()->Get(detElemId,manuId));
   if (!gain)
   {
     AliError(Form("Could not get gain for detElemId=%d manuId=%d ",
@@ -171,7 +176,7 @@ AliMUONCalibrationData::Gain(Int_t detElemId, Int_t manuId) const
 
 //_____________________________________________________________________________
 AliMUONV2DStore*
-AliMUONCalibrationData::Gains() const
+AliMUONCalibrationData::OnDemandGains() const
 {
   //
   // Create (if needed) and return the internal store for gains.
@@ -195,9 +200,87 @@ AliMUONCalibrationData::Gains() const
   return fGains;
 }
 
+//_____________________________________________________________________________
+AliMUONVCalibParam* 
+AliMUONCalibrationData::GlobalTriggerBoardMasks() const
+{
+  //
+  // Return the masks for the global trigger board.
+  //
+  return OnDemandGlobalTriggerBoardMasks();
+}
+
+//_____________________________________________________________________________
+AliMUONVCalibParam*
+AliMUONCalibrationData::OnDemandGlobalTriggerBoardMasks() const
+{
+  //
+  // Create (if needed) and return the internal store for GlobalTriggerBoardMasks.
+  //
+  if (!fGlobalTriggerBoardMasks)
+  {
+    AliCDBEntry* entry = GetEntry("MUON/Calib/GlobalTriggerBoardMasks");
+    if (entry)
+    {
+      fGlobalTriggerBoardMasks = dynamic_cast<AliMUONVCalibParam*>(entry->GetObject());
+      if (!fGlobalTriggerBoardMasks)
+      {
+        AliError("fGlobalTriggerBoardMasks not of the expected type !!!");
+      }
+    }
+    else
+    {
+      AliError("Could not get global trigger board masks !");
+    }
+  }
+  return fGlobalTriggerBoardMasks;
+}
+
+//_____________________________________________________________________________
+AliMUONVCalibParam* 
+AliMUONCalibrationData::LocalTriggerBoardMasks(Int_t localBoardNumber) const
+{
+  //
+  // Return the masks for a given trigger local board.
+  //
+  AliMUONVCalibParam* ltbm = 
+  static_cast<AliMUONVCalibParam*>(OnDemandLocalTriggerBoardMasks()->Get(localBoardNumber));
+  if (!ltbm)
+  {
+    AliError(Form("Could not get mask for localBoardNumber=%d",localBoardNumber));
+  }
+  return ltbm;  
+}
+
+//_____________________________________________________________________________
+AliMUONV1DStore*
+AliMUONCalibrationData::OnDemandLocalTriggerBoardMasks() const
+{
+  //
+  // Create (if needed) and return the internal store for LocalTriggerBoardMasks.
+  //
+  if (!fLocalTriggerBoardMasks)
+  {
+    AliCDBEntry* entry = GetEntry("MUON/Calib/LocalTriggerBoardMasks");
+    if (entry)
+    {
+      fLocalTriggerBoardMasks = dynamic_cast<AliMUONV1DStore*>(entry->GetObject());
+      if (!fLocalTriggerBoardMasks)
+      {
+        AliError("fLocalTriggerBoardMasks not of the expected type !!!");
+      }
+    }
+    else
+    {
+      AliError("Could not get local trigger board masks !");
+    }
+  }
+  return fLocalTriggerBoardMasks;
+}
+
 //_____________________________________________________________________________
 AliMUONV2DStore*
-AliMUONCalibrationData::Pedestals() const
+AliMUONCalibrationData::OnDemandPedestals() const
 {
   //
   // Create (if needed) and return the internal storage for pedestals.
@@ -229,16 +312,20 @@ AliMUONCalibrationData::Print(Option_t*) const
   // A very basic dump of our guts.
   //  
   cout << "RunNumber " << RunNumber()
-    << " fGains=" << fGains
-    << " fPedestals=" << fPedestals
-    << " fDeadChannels=" << fDeadChannels
+  << " fGains=" << fGains
+  << " fPedestals=" << fPedestals
+  << " fDeadChannels=" << fDeadChannels
+  << " fLocalTriggerBoardMasks=" << fLocalTriggerBoardMasks
+  << " fRegionalTriggerBoardMasks=" << fRegionalTriggerBoardMasks
+  << " fGlobalTriggerBoardMasks=" << fGlobalTriggerBoardMasks
+  << " fTriggerLut=" << fTriggerLut
   << endl;
 }
 
 
 //_____________________________________________________________________________
 AliMUONVCalibParam*
-AliMUONCalibrationData::Pedestal(Int_t detElemId, Int_t manuId) const
+AliMUONCalibrationData::Pedestals(Int_t detElemId, Int_t manuId) const
 {
   //
   // Return the pedestals for a given (detElemId, manuId) pair.
@@ -246,7 +333,7 @@ AliMUONCalibrationData::Pedestal(Int_t detElemId, Int_t manuId) const
   // pedestals for all channels.
   //
   AliMUONVCalibParam* ped = 
-    static_cast<AliMUONVCalibParam*>(Pedestals()->Get(detElemId,manuId));
+    static_cast<AliMUONVCalibParam*>(OnDemandPedestals()->Get(detElemId,manuId));
   if (!ped)
   {
     AliError(Form("Could not get pedestal for detElemId=%d manuId=%d ",
@@ -255,4 +342,119 @@ AliMUONCalibrationData::Pedestal(Int_t detElemId, Int_t manuId) const
   return ped;
 }
 
+//_____________________________________________________________________________
+AliMUONVCalibParam* 
+AliMUONCalibrationData::RegionalTriggerBoardMasks(Int_t index) const
+{
+  //
+  // Return the masks for a given trigger regional board.
+  //
+  AliMUONVCalibParam* rtbm = 
+  static_cast<AliMUONVCalibParam*>(OnDemandRegionalTriggerBoardMasks()->Get(index));
+  if (!rtbm)
+  {
+    AliError(Form("Could not get mask for regionalBoard index=%d",index));
+  }
+  return rtbm;  
+}
+
+//_____________________________________________________________________________
+AliMUONV1DStore*
+AliMUONCalibrationData::OnDemandRegionalTriggerBoardMasks() const
+{
+  //
+  // Create (if needed) and return the internal store for RegionalTriggerBoardMasks.
+  //
+  if (!fRegionalTriggerBoardMasks)
+  {
+    AliCDBEntry* entry = GetEntry("MUON/Calib/RegionalTriggerBoardMasks");
+    if (entry)
+    {
+      fRegionalTriggerBoardMasks = dynamic_cast<AliMUONV1DStore*>(entry->GetObject());
+      if (!fRegionalTriggerBoardMasks)
+      {
+        AliError("fRegionalTriggerBoardMasks not of the expected type !!!");
+      }
+    }
+    else
+    {
+      AliError("Could not get regional trigger board masks !");
+    }
+  }
+  return fRegionalTriggerBoardMasks;
+}
+
+//_____________________________________________________________________________
+AliMUONTriggerEfficiencyCells*
+AliMUONCalibrationData::TriggerEfficiency() const
+{
+  //
+  // Return the trigger efficiency.
+  //
+  return OnDemandTriggerEfficiency();
+}
+
+//_____________________________________________________________________________
+AliMUONTriggerEfficiencyCells* 
+AliMUONCalibrationData::OnDemandTriggerEfficiency() const
+{
+  //
+  //
+  //
+  if (!fTriggerEfficiency)
+  {
+    AliCDBEntry* entry = GetEntry("MUON/Calib/TriggerEfficiency");
+    if (entry)
+    {
+      fTriggerEfficiency = dynamic_cast<AliMUONTriggerEfficiencyCells*>(entry->GetObject());
+      if (!fTriggerEfficiency)
+      {
+        AliError("fTriggerEfficiency not of the expected type !!!");
+      }
+    }
+    else
+    {
+      AliError("Could not get trigger efficiency !");
+    }
+  }
+  return fTriggerEfficiency;
+}
+
+//_____________________________________________________________________________
+AliMUONTriggerLut*
+AliMUONCalibrationData::TriggerLut() const
+{
+  //
+  // Return the trigger look up table.
+  //
+  return OnDemandTriggerLut();
+}
+
+//_____________________________________________________________________________
+AliMUONTriggerLut* 
+AliMUONCalibrationData::OnDemandTriggerLut() const
+{
+  //
+  //
+  //
+  if (!fTriggerLut)
+  {
+    AliCDBEntry* entry = GetEntry("MUON/Calib/TriggerLut");
+    if (entry)
+    {
+      fTriggerLut = dynamic_cast<AliMUONTriggerLut*>(entry->GetObject());
+      if (!fTriggerLut)
+      {
+        AliError("fTriggerLut not of the expected type !!!");
+      }
+    }
+    else
+    {
+      AliError("Could not get trigger lut !");
+    }
+  }
+  return fTriggerLut;
+}
+
+
 
index 58547b2..b3c903b 100644 (file)
 #endif
 
 class AliCDBEntry;
-class AliMUONVCalibParam;
+class AliMUONTriggerEfficiencyCells;
+class AliMUONTriggerLut;
+class AliMUONV1DStore;
 class AliMUONV2DStore;
+class AliMUONVCalibParam;
 
 class AliMUONCalibrationData : public TObject
 {
@@ -35,41 +38,66 @@ public:
   virtual ~AliMUONCalibrationData();
 
   /// Get the DeadChannel calibration object for channels within (detElemId,manuId).
-  AliMUONVCalibParam* DeadChannel(Int_t detElemId, Int_t manuId) const;
+  AliMUONVCalibParam* DeadChannels(Int_t detElemId, Int_t manuId) const;
   
   /// Get the Gain calibration object for channels within (detElemId,manuId).
-  AliMUONVCalibParam* Gain(Int_t detElemId, Int_t manuId) const;
+  AliMUONVCalibParam* Gains(Int_t detElemId, Int_t manuId) const;
+
+  /// Get the mask for the global trigger board.
+  AliMUONVCalibParam* GlobalTriggerBoardMasks() const;
 
+  /// Get the mask for a given local trigger board.
+  AliMUONVCalibParam* LocalTriggerBoardMasks(Int_t localBoardNumber) const;
+  
   /// Whether this object is valid or not (might be invalid if fetching from CDB failed).
   Bool_t IsValid() const { return fIsValid; }
   
   /// Get the Pedestal calibration object for channels within (detElemId,manuId).
-  AliMUONVCalibParam* Pedestal(Int_t detElemId, Int_t manuId) const;
+  AliMUONVCalibParam* Pedestals(Int_t detElemId, Int_t manuId) const;
   
   /// Dump to screen.
   virtual void Print(Option_t* opt="") const;
-  
+
+  /// Get the mask for a given regional trigger board.
+  AliMUONVCalibParam* RegionalTriggerBoardMasks(Int_t index) const;
+
   /// The runnumber used by this object.
   Int_t RunNumber() const { return fRunNumber; }
   
+  /// Get the trigger Look Up Table.
+  AliMUONTriggerLut* TriggerLut() const;
+  
+  /// Get the trigger efficiency map
+  AliMUONTriggerEfficiencyCells* TriggerEfficiency() const;
+  
 protected:
-  AliMUONCalibrationData(const AliMUONCalibrationData& right);
-  AliMUONCalibrationData&  operator = (const AliMUONCalibrationData& right);
-     
+  AliMUONCalibrationData(const AliMUONCalibrationData& other);
+  AliMUONCalibrationData& operator=(const AliMUONCalibrationData& other);
+  
 private:
   AliCDBEntry* GetEntry(const char* path) const;
-  AliMUONV2DStore* Gains() const;
-  AliMUONV2DStore* Pedestals() const;
-  AliMUONV2DStore* DeadChannels() const;
+  AliMUONV2DStore* OnDemandGains() const;
+  AliMUONV2DStore* OnDemandPedestals() const;
+  AliMUONV2DStore* OnDemandDeadChannels() const;
+  AliMUONVCalibParam* OnDemandGlobalTriggerBoardMasks() const;
+  AliMUONV1DStore* OnDemandRegionalTriggerBoardMasks() const;
+  AliMUONV1DStore* OnDemandLocalTriggerBoardMasks() const;
+  AliMUONTriggerLut* OnDemandTriggerLut() const;
+  AliMUONTriggerEfficiencyCells* OnDemandTriggerEfficiency() const;
   
 private:  
-  mutable Bool_t fIsValid;
-  Int_t fRunNumber;
+  mutable Bool_t fIsValid; // Whether we were able to correctly initialize
+  Int_t fRunNumber; // The run number for which we hold calibrations
   mutable AliMUONV2DStore* fGains; //!
   mutable AliMUONV2DStore* fPedestals; //!
   mutable AliMUONV2DStore* fDeadChannels; //!
+  mutable AliMUONV1DStore* fLocalTriggerBoardMasks; //!
+  mutable AliMUONV1DStore* fRegionalTriggerBoardMasks; //!
+  mutable AliMUONVCalibParam* fGlobalTriggerBoardMasks; //!
+  mutable AliMUONTriggerLut* fTriggerLut; //!
+  mutable AliMUONTriggerEfficiencyCells* fTriggerEfficiency; //!
   
-  ClassDef(AliMUONCalibrationData,2) // Storage for all MUON calibration data.
+  ClassDef(AliMUONCalibrationData,3) // Storage for all MUON calibration data.
 };
 
 #endif