From ed0418404e08f4e6c5c7a9879842c414505d4e87 Mon Sep 17 00:00:00 2001 From: masera Date: Wed, 9 Dec 2009 10:38:56 +0000 Subject: [PATCH] - Added Method for the consistency of the chip numbering in both reading txt file and printing its content. - Handler updated to store the OCDB file for PIT conditions Annalisa Mastroserio --- ITS/AliITSOnlineCalibrationSPDhandler.cxx | 49 +++++++++++++++++++++++ ITS/AliITSOnlineCalibrationSPDhandler.h | 8 ++++ ITS/AliITSTriggerConditions.cxx | 49 ++++++++++++++++++++++- ITS/AliITSTriggerConditions.h | 1 + 4 files changed, 106 insertions(+), 1 deletion(-) diff --git a/ITS/AliITSOnlineCalibrationSPDhandler.cxx b/ITS/AliITSOnlineCalibrationSPDhandler.cxx index 3b06d490531..d8a19f40fc9 100644 --- a/ITS/AliITSOnlineCalibrationSPDhandler.cxx +++ b/ITS/AliITSOnlineCalibrationSPDhandler.cxx @@ -13,6 +13,7 @@ #include "AliITSOnlineCalibrationSPDhandler.h" #include "AliITSOnlineCalibrationSPD.h" +#include "AliITSTriggerConditions.h" #include "AliITSIntMap.h" #include #include @@ -42,6 +43,7 @@ AliITSOnlineCalibrationSPDhandler::AliITSOnlineCalibrationSPDhandler(): } ActivateALL(); UnSetDeadALL(); + fTriggerConditions = 0x0; } //____________________________________________________________________________________________ AliITSOnlineCalibrationSPDhandler::AliITSOnlineCalibrationSPDhandler(const AliITSOnlineCalibrationSPDhandler& handle): @@ -382,6 +384,14 @@ UInt_t AliITSOnlineCalibrationSPDhandler::ReadNoisyFromText(const char *fileName return newNrNoisy; } //____________________________________________________________________________________________ +void AliITSOnlineCalibrationSPDhandler::ReadPITConditionsFromText(const char *fileName) { + // read PIT conditions file from text as printed out at P2 + // !!! please note that the chip numbering goes from 9 to 0 in the text. In PVSS panels is the opposite. + if(fTriggerConditions) fTriggerConditions->ResetAll(); + else fTriggerConditions = new AliITSTriggerConditions(); + fTriggerConditions->ReadFromTextFile(fileName); +} +//____________________________________________________________________________________________ void AliITSOnlineCalibrationSPDhandler::WriteToFilesAlways() { // write the lists of active,dead,noisy to files for (UInt_t eq=0; eq<20; eq++) { @@ -2926,4 +2936,43 @@ Bool_t AliITSOnlineCalibrationSPDhandler::IsNoisyChip(UInt_t eq, UInt_t hs, UInt } return isNoisy; } +//____________________________________________________________________________________________ +Bool_t AliITSOnlineCalibrationSPDhandler::WritePITConditionsToDB(Int_t runNrStart, Int_t runNrEnd, const Char_t *storage) { + // writes noisy pixels to DB for given runNrs + // overwrites any previous entries + AliCDBManager* man = AliCDBManager::Instance(); + TString storageSTR = Form("%s",storage); + if (storageSTR.CompareTo("default")==0) { + if(!man->IsDefaultStorageSet()) { + man->SetDefaultStorage("local://$ALICE_ROOT/OCDB"); + } + } + else { + storageSTR = Form("local://%s",storage); + man->SetDefaultStorage(storageSTR.Data()); + } + AliCDBMetaData* metaData = new AliCDBMetaData(); + metaData->SetResponsible("Annalisa Mastroserio"); + metaData->SetComment("Created by AliITSOnlineCalibrationSPDhandler."); + AliCDBId idCalSPD("TRIGGER/SPD/PITConditions",runNrStart,runNrEnd); + AliCDBEntry* cdbEntry = new AliCDBEntry((TObject*)fTriggerConditions,idCalSPD,metaData); + man->Put(cdbEntry); + delete cdbEntry; + delete metaData; + return kTRUE; +} + +//____________________________________________________________________________________________ +Bool_t AliITSOnlineCalibrationSPDhandler::SetInactiveChipInPITmask(UInt_t eq, UInt_t hs, UInt_t chip){ + +fTriggerConditions->SetInActiveChip(eq,hs,chip); + +} +//____________________________________________________________________________________________ +Bool_t AliITSOnlineCalibrationSPDhandler::UnSetInactiveChipInPITmask(UInt_t eq, UInt_t hs, UInt_t chip){ + +fTriggerConditions->SetInActiveChip(eq,hs,chip); + +} + diff --git a/ITS/AliITSOnlineCalibrationSPDhandler.h b/ITS/AliITSOnlineCalibrationSPDhandler.h index f08582d4554..1e9c5b42a01 100644 --- a/ITS/AliITSOnlineCalibrationSPDhandler.h +++ b/ITS/AliITSOnlineCalibrationSPDhandler.h @@ -16,6 +16,7 @@ class TArrayI; class TArrayS; class AliITSIntMap; +class AliITSTriggerConditions; class AliITSCalibrationSPD; class AliITSOnlineCalibrationSPDhandler { @@ -50,6 +51,7 @@ class AliITSOnlineCalibrationSPDhandler { UInt_t ReadDeadFromText(const char *fileName, UInt_t module); UInt_t ReadNoisyFromText(const char *fileName, UInt_t module); + void ReadPITConditionsFromText(const char *fileName); void WriteToFilesAlways(); UInt_t WriteToFiles(); @@ -76,6 +78,7 @@ class AliITSOnlineCalibrationSPDhandler { Bool_t WriteDeadToDB(Int_t runNrStart, Int_t runNrEnd, const Char_t *storage="default"); Bool_t WriteDeadToDBasNoisy(Int_t runNrStart, Int_t runNrEnd, const Char_t *storage="default"); Bool_t WriteNoisyToDB(Int_t runNrStart, Int_t runNrEnd, const Char_t *storage="default"); + Bool_t WritePITConditionsToDB(Int_t runNrStart, Int_t runNrEnd, const Char_t *storage="default"); #endif void GenerateDCSConfigFile(const Char_t* fileName); @@ -101,6 +104,9 @@ class AliITSOnlineCalibrationSPDhandler { Bool_t UnSetDeadPixelM(UInt_t module, UInt_t colM, UInt_t row); Bool_t UnSetNoisyPixelM(UInt_t module, UInt_t colM, UInt_t row); + Bool_t SetInactiveChipInPITmask(UInt_t eq, UInt_t hs, UInt_t chip); + Bool_t UnSetInactiveChipInPITmask(UInt_t eq, UInt_t hs, UInt_t chip); + Bool_t IsPixelBad(UInt_t eq, UInt_t hs, UInt_t chip, UInt_t col, UInt_t row) const; Bool_t IsPixelSilent(UInt_t eq, UInt_t hs, UInt_t chip, UInt_t col, UInt_t row) const; // silent = dead or inactive Bool_t IsPixelDead(UInt_t eq, UInt_t hs, UInt_t chip, UInt_t col, UInt_t row) const; @@ -216,7 +222,9 @@ class AliITSOnlineCalibrationSPDhandler { AliITSOnlineCalibrationSPDhandler* GetSilentDiff(AliITSOnlineCalibrationSPDhandler* other) const; AliITSOnlineCalibrationSPDhandler* GetDeadDiff(AliITSOnlineCalibrationSPDhandler* other) const; AliITSOnlineCalibrationSPDhandler* GetNoisyDiff(AliITSOnlineCalibrationSPDhandler* other) const; + AliITSTriggerConditions * GetTriggerConditions() const {return fTriggerConditions;} + AliITSTriggerConditions *fTriggerConditions; // PIT conditions (mask, parameters name, parameters values) private: TString fFileLocation; // location (dir) of files to read and write from diff --git a/ITS/AliITSTriggerConditions.cxx b/ITS/AliITSTriggerConditions.cxx index 1fd6431c2c3..3379ca37591 100644 --- a/ITS/AliITSTriggerConditions.cxx +++ b/ITS/AliITSTriggerConditions.cxx @@ -76,7 +76,8 @@ AliITSTriggerConditions& AliITSTriggerConditions::operator=(const AliITSTriggerC } //__________________________________________________________________________________ void AliITSTriggerConditions::DumpAll() const { - // Dumps all conditions data + // Dumps all conditions data. This is as it is shown in PVSS, whereas the content of + // the txt file they are read from has a swap in the chip numbering printf("[Header]\n"); printf("RUN_NUMBER = %d\n",fRunNumber); @@ -573,3 +574,49 @@ Bool_t AliITSTriggerConditions::IsEqualTo(AliITSTriggerConditions *cond) const { return kTRUE; } +//__________________________________________________________________________________ +void AliITSTriggerConditions::PrintAsInPIT() const { + + // Prints conditions data + + printf("[Header]\n"); + printf("RUN_NUMBER = %d\n",fRunNumber); + printf("PROCESSING_FIRMWARE_VERSION = %d\n",fFirmWareVersion); + printf("GLOBAL_DESCRIPTION = %s\n",fGlobalDescription.Data()); + printf("VERSION_REGISTER_VALUE = %d\n",fVersionRegister); + printf("INPUT_CONDITIONS_VERSION = %d\n",fInputConditionsVersion); + printf("PARAMETERS_VERSION = %d\n",fParametersVersion); + printf("\n"); + + printf("[Outputs]\n"); + for (UInt_t i=0; i