#include "AliMUON1DMap.h"
#include "AliMUON2DMap.h"
#include "AliMUON2DStoreValidator.h"
+#include "AliMUONCalibParamND.h"
#include "AliMUONCalibParamNF.h"
#include "AliMUONCalibParamNI.h"
#include "AliMUONConstants.h"
+#include "AliMUONRejectList.h"
#include "AliMUONTrackerIO.h"
#include "AliMUONTriggerEfficiencyCells.h"
#include "AliMUONTriggerLut.h"
#include "AliMpCDB.h"
#include "AliMpConstants.h"
#include "AliMpDDLStore.h"
+#include "AliMpManuStore.h"
#include "AliMpDEManager.h"
#include "AliMpDetElement.h"
#include "AliMpFiles.h"
-#include "AliMpHVNamer.h"
+#include "AliMpDCSNamer.h"
#include "AliMpManuIterator.h"
#include "AliMpSegmentation.h"
#include "AliMpStationType.h"
for ( Int_t manuChannel = 0; manuChannel < value->Size(); ++manuChannel )
{
- AliMpPad pad = seg->PadByLocation(AliMpIntPair(manuId,manuChannel),kFALSE);
+ AliMpPad pad = seg->PadByLocation(manuId,manuChannel,kFALSE);
if (!pad.IsValid()) continue;
for ( Int_t i = 0; i < dim; ++i )
if ( ! AliMpCDB::LoadDDLStore() ) {
AliFatal("Could not access mapping from OCDB !");
}
+
+ if ( ! AliMpCDB::LoadManuStore() ) {
+ AliFatal("Could not access run-dependent mapping from OCDB !");
+ }
}
//_____________________________________________________________________________
for ( Int_t manuChannel = 0; manuChannel < param->Size(); ++manuChannel )
{
- AliMpPad pad = seg->PadByLocation(AliMpIntPair(manuId,manuChannel),kFALSE);
+ AliMpPad pad = seg->PadByLocation(manuId,manuChannel,kFALSE);
if (!pad.IsValid()) continue;
++n;
{
/// Create a HV store
- AliMpHVNamer hvNamer;
+ AliMpDCSNamer hvNamer("TRACKER");
TObjArray* aliases = hvNamer.GenerateAliases();
return nChannels+nSwitch;
}
+//_____________________________________________________________________________
+Int_t
+AliMUONCDB::MakeTriggerDCSStore(TMap& aliasMap, Bool_t defaultValues)
+{
+ /// Create a Trigger HV and Currents store
+
+ AliMpDCSNamer triggerDCSNamer("TRIGGER");
+
+ TObjArray* aliases = triggerDCSNamer.GenerateAliases();
+
+ Int_t nChannels[2] = {0, 0};
+
+ for ( Int_t i = 0; i < aliases->GetEntries(); ++i )
+ {
+ TObjString* alias = static_cast<TObjString*>(aliases->At(i));
+ TString& aliasName = alias->String();
+
+ TObjArray* valueSet = new TObjArray;
+ valueSet->SetOwner(kTRUE);
+ Int_t measureType = triggerDCSNamer.DCSvariableFromDCSAlias(aliasName.Data());
+ for ( UInt_t timeStamp = 0; timeStamp < 60*15; timeStamp += 120 )
+ {
+ Float_t value =
+ (measureType == AliMpDCSNamer::kDCSI) ? 2. : 8000.;
+ if (!defaultValues) {
+ switch (measureType){
+ case AliMpDCSNamer::kDCSI:
+ value = GetRandom(2.,0.4,true);
+ break;
+ case AliMpDCSNamer::kDCSHV:
+ value = GetRandom(8000.,16.,true);
+ break;
+ }
+ }
+ AliDCSValue* dcsValue = new AliDCSValue(value,timeStamp);
+ valueSet->Add(dcsValue);
+ }
+ aliasMap.Add(new TObjString(*alias),valueSet);
+ ++nChannels[measureType];
+ }
+
+ delete aliases;
+
+ AliInfo(Form("Trigger channels I -> %i HV -> %i",nChannels[0], nChannels[1]));
+
+ return nChannels[0] + nChannels[1];
+}
+
//_____________________________________________________________________________
Int_t
AliMUONCDB::MakePedestalStore(AliMUONVStore& pedestalStore, Bool_t defaultValues)
Int_t nmanus(0);
const Int_t kChannels(AliMpConstants::ManuNofChannels());
- const Float_t kPedestalMeanMean(200);
- const Float_t kPedestalMeanSigma(10);
- const Float_t kPedestalSigmaMean(1.0);
- const Float_t kPedestalSigmaSigma(0.2);
+
+ // bending
+ const Float_t kPedestalMeanMeanB(200.);
+ const Float_t kPedestalMeanSigmaB(10.);
+ const Float_t kPedestalSigmaMeanB(1.);
+ const Float_t kPedestalSigmaSigmaB(0.2);
+
+ // non bending
+ const Float_t kPedestalMeanMeanNB(200.);
+ const Float_t kPedestalMeanSigmaNB(10.);
+ const Float_t kPedestalSigmaMeanNB(1.);
+ const Float_t kPedestalSigmaSigmaNB(0.2);
+
+ const Float_t kFractionOfDeadManu(0.); // within [0.,1.]
Int_t detElemId;
Int_t manuId;
while ( it.Next(detElemId,manuId) )
{
+ // skip a given fraction of manus
+ if (kFractionOfDeadManu > 0. && gRandom->Uniform() < kFractionOfDeadManu) continue;
+
++nmanus;
AliMUONVCalibParam* ped =
{
Bool_t positive(kTRUE);
meanPedestal = 0.0;
- while ( meanPedestal == 0.0 ) // avoid strict zero
- {
- meanPedestal = GetRandom(kPedestalMeanMean,kPedestalMeanSigma,positive);
- }
- sigmaPedestal = GetRandom(kPedestalSigmaMean,kPedestalSigmaSigma,positive);
+
+ if ( manuId & AliMpConstants::ManuMask(AliMp::kNonBendingPlane) ) { // manu in non bending plane
+
+ while ( meanPedestal == 0.0 ) // avoid strict zero
+ {
+ meanPedestal = GetRandom(kPedestalMeanMeanNB,kPedestalMeanSigmaNB,positive);
+ }
+ sigmaPedestal = GetRandom(kPedestalSigmaMeanNB,kPedestalSigmaSigmaNB,positive);
+
+ } else { // manu in bending plane
+
+ while ( meanPedestal == 0.0 ) // avoid strict zero
+ {
+ meanPedestal = GetRandom(kPedestalMeanMeanB,kPedestalMeanSigmaB,positive);
+ }
+ sigmaPedestal = GetRandom(kPedestalSigmaMeanB,kPedestalSigmaSigmaB,positive);
+
+ }
+
}
+
ped->SetValueAsFloat(manuChannel,0,meanPedestal);
ped->SetValueAsFloat(manuChannel,1,sigmaPedestal);
return nchannels;
}
+//_____________________________________________________________________________
+AliMUONRejectList*
+AliMUONCDB::MakeRejectListStore(Bool_t defaultValues)
+{
+ /// Create a reject list
+
+ AliCodeTimerAuto("");
+
+ AliMUONRejectList* rl = new AliMUONRejectList;
+
+ if (!defaultValues)
+ {
+ rl->SetDetectionElementProbability(510);
+ rl->SetDetectionElementProbability(508);
+ return rl;
+ }
+
+ return rl;
+}
+
+//_____________________________________________________________________________
+Int_t
+AliMUONCDB::MakeOccupancyMapStore(AliMUONVStore& occupancyMapStore, Bool_t defaultValues)
+{
+ /// Create an occupancy map.
+
+ AliCodeTimerAuto("");
+
+ Int_t nmanus(0);
+
+ Int_t detElemId;
+ Int_t manuId;
+
+ AliMpManuIterator it;
+
+ Int_t nevents(1000);
+
+ while ( it.Next(detElemId,manuId) )
+ {
+ ++nmanus;
+
+ AliMUONVCalibParam* occupancy = new AliMUONCalibParamND(5,1,detElemId,manuId,0);
+
+ Double_t occ = 0.0;
+
+ AliMpDetElement* de = AliMpDDLStore::Instance()->GetDetElement(detElemId);
+
+ Int_t numberOfChannelsInManu = de->NofChannelsInManu(manuId);
+
+ if (!defaultValues) occ = gRandom->Rndm(1.0);
+
+ Double_t sumn = occ*nevents;
+
+ occupancy->SetValueAsFloat(0,0,sumn);
+ occupancy->SetValueAsFloat(0,1,sumn);
+ occupancy->SetValueAsFloat(0,2,sumn);
+ occupancy->SetValueAsInt(0,3,numberOfChannelsInManu);
+ occupancy->SetValueAsInt(0,4,nevents);
+
+ Bool_t ok = occupancyMapStore.Add(occupancy);
+ if (!ok)
+ {
+ AliError(Form("Could not set DetElemId=%d manuId=%d",detElemId,manuId));
+ }
+ }
+
+ return nmanus;
+}
+
//_____________________________________________________________________________
Int_t
AliMUONCDB::MakeCapacitanceStore(AliMUONVStore& capaStore, const char* file)
++nmanus;
AliMpDetElement* de = AliMpDDLStore::Instance()->GetDetElement(detElemId);
- Int_t serialNumber = de->GetManuSerialFromId(manuId);
+ Int_t serialNumber = AliMpManuStore::Instance()->GetManuSerial(detElemId, manuId);
if ( serialNumber <= 0 ) continue;
AliCodeTimerAuto("");
- return rtm.ReadData(AliMpFiles::LocalTriggerBoardMapping());
-
+ if ( ! rtm.ReadData(AliMpFiles::LocalTriggerBoardMapping()) ) {
+ AliErrorStream() << "Error when reading from mapping file" << endl;
+ return 0;
+ }
+
+ return rtm.GetNofTriggerCrates();
}
/// Make a global trigger config store. All masks (disable) set to 0x00 for each Darc board (Ch.F.)
AliCodeTimerAuto("");
-
- return gtm.ReadData(AliMpFiles::GlobalTriggerBoardMapping());
+
+ return gtm.ReadData(AliMpFiles::GlobalTriggerBoardMapping());
}
{
/// Write a given object to OCDB
- AliCDBId id(calibpath,startRun,endRun);
- AliCDBMetaData md;
- md.SetAliRootVersion(gROOT->GetVersion());
- md.SetComment(gSystem->ExpandPathName(filename));
- md.SetResponsible("Uploaded using AliMUONCDB class");
- AliCDBManager* man = AliCDBManager::Instance();
- man->SetDefaultStorage(fCDBPath);
- man->Put(object,id,&md);
+ TString comment(gSystem->ExpandPathName(filename));
+
+ WriteToCDB(object, calibpath, startRun, endRun, comment.Data());
}
//_____________________________________________________________________________
{
/// Write a given object to OCDB
+ TString comment;
+ if ( defaultValues ) comment += "Test with default values";
+ else comment += "Test with random values";
+
+ WriteToCDB(object, calibpath, startRun, endRun, comment.Data());
+}
+
+//_____________________________________________________________________________
+void
+AliMUONCDB::WriteToCDB(TObject* object, const char* calibpath, Int_t startRun, Int_t endRun,
+ const char* comment, const char* responsible)
+{
+ /// Write a given object to OCDB
+
AliCDBId id(calibpath,startRun,endRun);
AliCDBMetaData md;
md.SetAliRootVersion(gROOT->GetVersion());
- if ( defaultValues )
- {
- md.SetComment("Test with default values");
- }
- else
- {
- md.SetComment("Test with random values");
- }
- md.SetResponsible("AliMUONCDB tester class");
-
+ md.SetComment(comment);
+ md.SetResponsible(responsible);
AliCDBManager* man = AliCDBManager::Instance();
- man->SetDefaultStorage(fCDBPath);
+ if (!man->IsDefaultStorageSet()) man->SetDefaultStorage(fCDBPath);
man->Put(object,id,&md);
}
for ( Int_t manuChannel = 0; manuChannel < AliMpConstants::ManuNofChannels(); ++manuChannel )
{
- AliMpPad pad = seg->PadByLocation(AliMpIntPair(manuId,manuChannel),kFALSE);
+ AliMpPad pad = seg->PadByLocation(manuId,manuChannel,kFALSE);
if (pad.IsValid())
{
AliMpPad* p = static_cast<AliMpPad*>(tmp.UncheckedAt(i));
Int_t x;
// Bool_t ok =
- calibParam->PackValues(p->GetLocation().GetFirst(),p->GetLocation().GetSecond(),x);
+ calibParam->PackValues(p->GetManuId(),p->GetManuChannel(),x);
// if (!ok)
// {
// AliError("Could not pack value. Something is seriously wrong. Please check");
delete hvStore;
}
+//_____________________________________________________________________________
+void
+AliMUONCDB::WriteTriggerDCS(Bool_t defaultValues,
+ Int_t startRun, Int_t endRun)
+{
+ /// generate Trigger HV and current values (either const if defaultValues=true or random
+ /// if defaultValues=false, see makeTriggerDCSStore) and
+ /// store them into CDB located at cdbpath, with a validity period
+ /// ranging from startRun to endRun
+
+ TMap* triggerDCSStore = new TMap;
+ Int_t ngenerated = MakeTriggerDCSStore(*triggerDCSStore,defaultValues);
+ AliInfo(Form("Ngenerated = %d",ngenerated));
+ if (ngenerated>0)
+ {
+ WriteToCDB("MUON/Calib/TriggerDCS",triggerDCSStore,startRun,endRun,defaultValues);
+ }
+ delete triggerDCSStore;
+}
+
//_____________________________________________________________________________
void
AliMUONCDB::WritePedestals(Bool_t defaultValues,
delete pedestalStore;
}
+//_____________________________________________________________________________
+void
+AliMUONCDB::WriteOccupancyMap(Bool_t defaultValues,
+ Int_t startRun, Int_t endRun)
+{
+ /// generate occupancy map values (either empty one if defaultValues=true, or
+ /// random one, see MakeOccupancyMapStore) and
+ /// store them into CDB located at cdbpath, with a validity period
+ /// ranging from startRun to endRun
+
+ AliMUONVStore* occupancyMapStore = Create2DMap();
+ Int_t ngenerated = MakeOccupancyMapStore(*occupancyMapStore,defaultValues);
+ AliInfo(Form("Ngenerated = %d",ngenerated));
+ WriteToCDB("MUON/Calib/OccupancyMap",occupancyMapStore,startRun,endRun,defaultValues);
+ delete occupancyMapStore;
+}
+
+//_____________________________________________________________________________
+void
+AliMUONCDB::WriteRejectList(Bool_t defaultValues,
+ Int_t startRun, Int_t endRun)
+{
+ /// generate reject list values (either empty one if defaultValues=true, or
+ /// random one, see MakeRejectListStore) and
+ /// store them into CDB located at cdbpath, with a validity period
+ /// ranging from startRun to endRun
+
+ AliMUONRejectList* rl = MakeRejectListStore(defaultValues);
+ WriteToCDB("MUON/Calib/RejectList",rl,startRun,endRun,defaultValues);
+ delete rl;
+}
+
//_____________________________________________________________________________
void
//_____________________________________________________________________________
void
-AliMUONCDB::WriteTrigger(Int_t startRun, Int_t endRun)
+AliMUONCDB::WriteTrigger(Bool_t defaultValues, Int_t startRun, Int_t endRun)
{
/// Writes all Trigger related calibration to CDB
+ WriteTriggerDCS(defaultValues,startRun,endRun);
WriteLocalTriggerMasks(startRun,endRun);
WriteRegionalTriggerConfig(startRun,endRun);
WriteGlobalTriggerConfig(startRun,endRun);
WriteGains(defaultValues,startRun,endRun);
WriteCapacitances(defaultValues,startRun,endRun);
WriteNeighbours(startRun,endRun);
+ WriteOccupancyMap(startRun,endRun,defaultValues);
+ WriteRejectList(startRun,endRun,defaultValues);
}
+