#include "AliCDBManager.h"
#include "AliCodeTimer.h"
#include "AliLog.h"
+#include "AliMUONRejectList.h"
#include "AliMUONTriggerEfficiencyCells.h"
#include "AliMUONTriggerLut.h"
#include "AliMUONVStore.h"
ClassImp(AliMUONCalibrationData)
/// \endcond
+AliMUONVStore* AliMUONCalibrationData::fBypassPedestals(0x0);
+AliMUONVStore* AliMUONCalibrationData::fBypassGains(0x0);
+
//_____________________________________________________________________________
AliMUONCalibrationData::AliMUONCalibrationData(Int_t runNumber,
Bool_t deferredInitialization)
fGains(0x0),
fPedestals(0x0),
fHV(0x0),
+fTriggerDCS(0x0),
fLocalTriggerBoardMasks(0x0),
fRegionalTriggerConfig(0x0),
fGlobalTriggerCrateConfig(0x0),
fTriggerLut(0x0),
fTriggerEfficiency(0x0),
fCapacitances(0x0),
-fNeighbours(0x0)
+fNeighbours(0x0),
+fOccupancyMap(0x0),
+fRejectList(0x0),
+fConfig(0x0)
{
/// Default ctor.
{
Gains();
Pedestals();
+ OccupancyMap();
+ RejectList();
HV();
+ TriggerDCS();
LocalTriggerBoardMasks(0);
RegionalTriggerConfig();
GlobalTriggerCrateConfig();
TriggerEfficiency();
Capacitances();
Neighbours();
+ Config();
}
}
AliMUONCalibrationData::~AliMUONCalibrationData()
{
/// Destructor. Note that we're the owner of our pointers.
- Reset();
+ //PH The owner of the objects is CDB, do not delete them!
+ // Reset();
}
//_____________________________________________________________________________
//_____________________________________________________________________________
AliMUONVStore*
-AliMUONCalibrationData::CreateCapacitances(Int_t runNumber)
+AliMUONCalibrationData::CreateCapacitances(Int_t runNumber, Int_t* startOfValidity)
{
/// Create capa store from OCDB for a given run
- return dynamic_cast<AliMUONVStore*>(CreateObject(runNumber,"MUON/Calib/Capacitances"));
+ return dynamic_cast<AliMUONVStore*>(CreateObject(runNumber,"MUON/Calib/Capacitances",startOfValidity));
}
//_____________________________________________________________________________
AliMUONVStore*
-AliMUONCalibrationData::CreateGains(Int_t runNumber)
+AliMUONCalibrationData::CreateGains(Int_t runNumber, Int_t* startOfValidity)
{
/// Create a new gain store from the OCDB for a given run
- return dynamic_cast<AliMUONVStore*>(CreateObject(runNumber,"MUON/Calib/Gains"));
+ return dynamic_cast<AliMUONVStore*>(CreateObject(runNumber,"MUON/Calib/Gains",startOfValidity));
}
//_____________________________________________________________________________
AliMUONGlobalCrateConfig*
-AliMUONCalibrationData::CreateGlobalTriggerCrateConfig(Int_t runNumber)
+AliMUONCalibrationData::CreateGlobalTriggerCrateConfig(Int_t runNumber, Int_t* startOfValidity)
{
/// Create the internal store for GlobalTriggerCrateConfig from OCDB
- return dynamic_cast<AliMUONGlobalCrateConfig*>(CreateObject(runNumber,"MUON/Calib/GlobalTriggerCrateConfig"));
+ return dynamic_cast<AliMUONGlobalCrateConfig*>(CreateObject(runNumber,"MUON/Calib/GlobalTriggerCrateConfig",startOfValidity));
}
//_____________________________________________________________________________
TMap*
-AliMUONCalibrationData::CreateHV(Int_t runNumber)
+AliMUONCalibrationData::CreateHV(Int_t runNumber, Int_t* startOfValidity)
{
/// Create a new HV map from the OCDB for a given run
- return dynamic_cast<TMap*>(CreateObject(runNumber,"MUON/Calib/HV"));
+ return dynamic_cast<TMap*>(CreateObject(runNumber,"MUON/Calib/HV",startOfValidity));
+}
+
+//_____________________________________________________________________________
+TMap*
+AliMUONCalibrationData::CreateTriggerDCS(Int_t runNumber, Int_t* startOfValidity)
+{
+ /// Create a new Trigger HV and curent map from the OCDB for a given run
+ return dynamic_cast<TMap*>(CreateObject(runNumber,"MUON/Calib/TriggerDCS",startOfValidity));
}
//_____________________________________________________________________________
AliMUONVStore*
-AliMUONCalibrationData::CreateLocalTriggerBoardMasks(Int_t runNumber)
+AliMUONCalibrationData::CreateLocalTriggerBoardMasks(Int_t runNumber, Int_t* startOfValidity)
{
/// Get the internal store for LocalTriggerBoardMasks from OCDB
- return dynamic_cast<AliMUONVStore*>(CreateObject(runNumber,"MUON/Calib/LocalTriggerBoardMasks"));
+ return dynamic_cast<AliMUONVStore*>(CreateObject(runNumber,"MUON/Calib/LocalTriggerBoardMasks",startOfValidity));
}
//_____________________________________________________________________________
AliMUONVStore*
-AliMUONCalibrationData::CreateNeighbours(Int_t runNumber)
+AliMUONCalibrationData::CreateNeighbours(Int_t runNumber, Int_t* startOfValidity)
{
/// Create a neighbour store from the OCDB for a given run
- return dynamic_cast<AliMUONVStore*>(CreateObject(runNumber,"MUON/Calib/Neighbours"));
+ return dynamic_cast<AliMUONVStore*>(CreateObject(runNumber,"MUON/Calib/Neighbours",startOfValidity));
}
//_____________________________________________________________________________
TObject*
-AliMUONCalibrationData::CreateObject(Int_t runNumber, const char* path)
+AliMUONCalibrationData::CreateObject(Int_t runNumber, const char* path, Int_t* startOfValidity)
{
/// Access the CDB for a given path (e.g. MUON/Calib/Pedestals),
/// and return the corresponding TObject.
- AliCodeTimerAutoClass(Form("%d : %s",runNumber,path));
+ AliCodeTimerAutoClass(Form("%d : %s",runNumber,path),0);
AliCDBManager* man = AliCDBManager::Instance();
- if ( !man->IsDefaultStorageSet() )
- {
- AliErrorClass("CDB Storage not set. Must use AliCDBManager::Instance()->SetDefaultStorage() first.");
- return 0x0;
- }
-
- Bool_t cacheStatus = man->GetCacheFlag();
-
- man->SetCacheFlag(kFALSE);
-
- AliCDBEntry* entry = AliCDBManager::Instance()->Get(path,runNumber);
-
- man->SetCacheFlag(cacheStatus);
+ AliCDBEntry* entry = man->Get(path,runNumber);
if (entry)
{
+ if ( startOfValidity ) *startOfValidity = entry->GetId().GetFirstRun();
+
TObject* object = entry->GetObject();
entry->SetOwner(kFALSE);
- delete entry;
+ if (!(man->GetCacheFlag())) delete entry;
return object;
+ }
+ else
+ {
+ if ( startOfValidity ) *startOfValidity = AliCDBRunRange::Infinity();
+ }
+
+ {
+
+ AliCodeTimerAutoClass(Form("Failed to get %s for run %d",path,runNumber),1);
+
}
return 0x0;
//_____________________________________________________________________________
AliMUONVStore*
-AliMUONCalibrationData::CreatePedestals(Int_t runNumber)
+AliMUONCalibrationData::CreateOccupancyMap(Int_t runNumber, Int_t* startOfValidity)
+{
+ /// Create a new occupancy map store from the OCDB for a given run
+ return dynamic_cast<AliMUONVStore*>(CreateObject(runNumber,"MUON/Calib/OccupancyMap",startOfValidity));
+}
+
+//_____________________________________________________________________________
+AliMUONRejectList*
+AliMUONCalibrationData::CreateRejectList(Int_t runNumber, Int_t* startOfValidity)
+{
+ /// Create a new rejectlist store from the OCDB for a given run
+ return dynamic_cast<AliMUONRejectList*>(CreateObject(runNumber,"MUON/Calib/RejectList",startOfValidity));
+}
+
+//_____________________________________________________________________________
+AliMUONVStore*
+AliMUONCalibrationData::CreatePedestals(Int_t runNumber, Int_t* startOfValidity)
{
/// Create a new pedestal store from the OCDB for a given run
- return dynamic_cast<AliMUONVStore*>(CreateObject(runNumber,"MUON/Calib/Pedestals"));
+ return dynamic_cast<AliMUONVStore*>(CreateObject(runNumber,"MUON/Calib/Pedestals",startOfValidity));
+}
+
+//_____________________________________________________________________________
+AliMUONVStore*
+AliMUONCalibrationData::CreateConfig(Int_t runNumber, Int_t* startOfValidity)
+{
+ /// Create a new config store from the OCDB for a given run
+ return dynamic_cast<AliMUONVStore*>(CreateObject(runNumber,"MUON/Calib/Config",startOfValidity));
}
//_____________________________________________________________________________
AliMUONRegionalTriggerConfig*
-AliMUONCalibrationData::CreateRegionalTriggerConfig(Int_t runNumber)
+AliMUONCalibrationData::CreateRegionalTriggerConfig(Int_t runNumber, Int_t* startOfValidity)
{
/// Create the internal store for RegionalTriggerConfig from OCDB
- return dynamic_cast<AliMUONRegionalTriggerConfig*>(CreateObject(runNumber,"MUON/Calib/RegionalTriggerConfig"));
+ return dynamic_cast<AliMUONRegionalTriggerConfig*>(CreateObject(runNumber,"MUON/Calib/RegionalTriggerConfig",startOfValidity));
}
//_____________________________________________________________________________
AliMUONTriggerEfficiencyCells*
-AliMUONCalibrationData::CreateTriggerEfficiency(Int_t runNumber)
+AliMUONCalibrationData::CreateTriggerEfficiency(Int_t runNumber, Int_t* startOfValidity)
{
/// Create trigger efficiency object from OCBD
- return dynamic_cast<AliMUONTriggerEfficiencyCells*>(CreateObject(runNumber,"MUON/Calib/TriggerEfficiency"));
+ return dynamic_cast<AliMUONTriggerEfficiencyCells*>(CreateObject(runNumber,"MUON/Calib/TriggerEfficiency",startOfValidity));
}
//_____________________________________________________________________________
AliMUONTriggerLut*
-AliMUONCalibrationData::CreateTriggerLut(Int_t runNumber)
+AliMUONCalibrationData::CreateTriggerLut(Int_t runNumber, Int_t* startOfValidity)
{
/// Create trigger LUT from OCDB
- return dynamic_cast<AliMUONTriggerLut*>(CreateObject(runNumber,"MUON/Calib/TriggerLut"));
+ return dynamic_cast<AliMUONTriggerLut*>(CreateObject(runNumber,"MUON/Calib/TriggerLut",startOfValidity));
}
//_____________________________________________________________________________
AliMUONCalibrationData::Gains() const
{
/// Create (if needed) and return the internal store for gains.
+ if (fBypassGains) return fBypassGains;
+
if (!fGains)
{
fGains = CreateGains(fRunNumber);
return fHV;
}
+//_____________________________________________________________________________
+TMap*
+AliMUONCalibrationData::TriggerDCS() const
+{
+ /// Return the calibration for a given (detElemId, manuId) pair
+
+ if (!fTriggerDCS)
+ {
+ fTriggerDCS = CreateTriggerDCS(fRunNumber);
+ }
+ return fTriggerDCS;
+}
+
//_____________________________________________________________________________
AliMUONVStore*
AliMUONCalibrationData::Neighbours() const
return 0x0;
}
+//_____________________________________________________________________________
+AliMUONVStore*
+AliMUONCalibrationData::OccupancyMap() const
+{
+ /// Get occupancy map
+ if (!fOccupancyMap)
+ {
+ fOccupancyMap = CreateOccupancyMap(fRunNumber);
+ }
+ return fOccupancyMap;
+}
+
+//_____________________________________________________________________________
+AliMUONRejectList*
+AliMUONCalibrationData::RejectList() const
+{
+ /// Get reject list
+ if (!fRejectList)
+ {
+ fRejectList = CreateRejectList(fRunNumber);
+ }
+ return fRejectList;
+}
+
+//_____________________________________________________________________________
+void
+AliMUONCalibrationData::BypassStores(AliMUONVStore* ped, AliMUONVStore* gain)
+{
+ /// Force the use of those pedestals and gains
+ fBypassPedestals = ped;
+ fBypassGains = gain;
+
+}
+
//_____________________________________________________________________________
AliMUONVStore*
AliMUONCalibrationData::Pedestals() const
{
/// Return pedestals
+
+ if (fBypassPedestals) return fBypassPedestals;
+
if (!fPedestals)
{
fPedestals = CreatePedestals(fRunNumber);
return fPedestals;
}
+//_____________________________________________________________________________
+AliMUONVStore*
+AliMUONCalibrationData::Config() const
+{
+ /// Return config
+
+ if (!fConfig)
+ {
+ fConfig = CreateConfig(fRunNumber);
+ }
+ return fConfig;
+}
+
//_____________________________________________________________________________
AliMUONVCalibParam*
AliMUONCalibrationData::Pedestals(Int_t detElemId, Int_t manuId) const
cout << "RunNumber " << RunNumber()
<< " fGains=" << fGains
<< " fPedestals=" << fPedestals
+ << " fConfig=" << fConfig
<< " fHV=" << fHV
+ << " fTriggerDCS=" << fTriggerDCS
<< " fLocalTriggerBoardMasks=" << fLocalTriggerBoardMasks
<< " fRegionalTriggerConfig=" << fRegionalTriggerConfig
<< " fGlobalTriggerCrateConfig=" << fGlobalTriggerCrateConfig
{
/// Reset all data
+ delete fConfig;
+ fConfig = 0x0;
delete fPedestals;
fPedestals = 0x0;
delete fGains;
fGains = 0x0;
delete fHV;
fHV = 0x0;
+ delete fTriggerDCS;
+ fTriggerDCS = 0x0;
delete fLocalTriggerBoardMasks;
fLocalTriggerBoardMasks = 0x0;
delete fRegionalTriggerConfig;
fNeighbours = 0x0;
}
+//_____________________________________________________________________________
+void
+AliMUONCalibrationData::Check(Int_t runNumber)
+{
+ /// Self-check to see if we can read all data for a given run
+ /// from the current OCDB...
+
+ if ( ! CreateCapacitances(runNumber) )
+ {
+ AliErrorClass("Could not read capacitances");
+ }
+ else
+ {
+ AliInfoClass("Capacitances read OK");
+ }
+
+ if ( ! CreateGains(runNumber) )
+ {
+ AliErrorClass("Could not read gains");
+ }
+ else
+ {
+ AliInfoClass("Gains read OK");
+ }
+
+ if ( ! CreateGlobalTriggerCrateConfig(runNumber) )
+ {
+ AliErrorClass("Could not read Trigger Crate Config");
+ }
+ else
+ {
+ AliInfoClass("TriggerBoardMasks read OK");
+ }
+
+ if ( ! CreateHV(runNumber) )
+ {
+ AliErrorClass("Could not read HV");
+ }
+ else
+ {
+ AliInfoClass("HV read OK");
+ }
+
+ if ( ! CreateTriggerDCS(runNumber) )
+ {
+ AliErrorClass("Could not read Trigger HV and Currents");
+ }
+ else
+ {
+ AliInfoClass("Trigger HV and Currents read OK");
+ }
+
+ if ( ! CreateNeighbours(runNumber) )
+ {
+ AliErrorClass("Could not read Neighbours");
+ }
+ else
+ {
+ AliInfoClass("Neighbours read OK");
+ }
+
+ if ( ! CreateLocalTriggerBoardMasks(runNumber) )
+ {
+ AliErrorClass("Could not read LocalTriggerBoardMasks");
+ }
+ else
+ {
+ AliInfoClass("LocalTriggerBoardMasks read OK");
+ }
+
+ if ( ! CreatePedestals(runNumber) )
+ {
+ AliErrorClass("Could not read pedestals");
+ }
+ else
+ {
+ AliInfoClass("Pedestals read OK");
+ }
+
+ if ( ! CreateConfig(runNumber) )
+ {
+ AliErrorClass("Could not read config");
+ }
+ else
+ {
+ AliInfoClass("Config read OK");
+ }
+
+ if ( ! CreateRegionalTriggerConfig(runNumber) )
+ {
+ AliErrorClass("Could not read RegionalTriggerConfig");
+ }
+ else
+ {
+ AliInfoClass("RegionalTriggerBoardMasks read OK");
+ }
+
+ if ( ! CreateTriggerLut(runNumber) )
+ {
+ AliErrorClass("Could not read TriggerLut");
+ }
+ else
+ {
+ AliInfoClass("TriggerLut read OK");
+ }
+
+ if ( ! CreateTriggerEfficiency(runNumber) )
+ {
+ AliErrorClass("Could not read TriggerEfficiency");
+ }
+ else
+ {
+ AliInfoClass("TriggerEfficiency read OK");
+ }
+}