txt file and printing its content.
- Handler updated to store the OCDB file for PIT conditions
Annalisa Mastroserio
#include "AliITSOnlineCalibrationSPDhandler.h"
#include "AliITSOnlineCalibrationSPD.h"
+#include "AliITSTriggerConditions.h"
#include "AliITSIntMap.h"
#include <TObjArray.h>
#include <TArrayI.h>
}
ActivateALL();
UnSetDeadALL();
+ fTriggerConditions = 0x0;
}
//____________________________________________________________________________________________
AliITSOnlineCalibrationSPDhandler::AliITSOnlineCalibrationSPDhandler(const AliITSOnlineCalibrationSPDhandler& handle):
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++) {
}
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);
+
+}
+
class TArrayI;
class TArrayS;
class AliITSIntMap;
+class AliITSTriggerConditions;
class AliITSCalibrationSPD;
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();
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);
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;
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
}
//__________________________________________________________________________________
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);
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<fNumAlgo; i++) {
+ printf("%d = '%s', '%s'\n", GetAlgoIDI(i), GetAlgoLabelI(i), GetAlgoDescriptionI(i));
+ }
+ printf("\n");
+
+ printf("[Output_parameters]\n");
+ for (UInt_t i=0; i<fNumAlgo; i++) {
+ printf("%d =", GetAlgoIDI(i));
+ for (Short_t p=0; p<GetNumAlgoParamI(i); p++) {
+ printf(" '%s', %d;", GetAlgoParamNameII(i,p), GetAlgoParamValueII(i,p));
+ }
+ printf("\n");
+ }
+ printf("\n");
+
+ printf("[Active_chips]\n");
+ for (UInt_t eq=0; eq<20; eq++) {
+ for (UInt_t hs=0; hs<6; hs++) {
+ UInt_t nActiveOnHs = 0;
+ TString inactiveStr = "";
+ for (UInt_t chip=0; chip<10; chip++) {
+ Bool_t isChipActive = IsChipActive(eq,hs,9-chip);
+ inactiveStr.Append(Form("%d",isChipActive));
+ nActiveOnHs+=isChipActive;
+ }
+ if (nActiveOnHs<10) {
+ printf("%d,%c,%d=%s\n", eq%10, eq<10 ? 'A' : 'C', hs, inactiveStr.Data());
+ }
+ }
+ }
+}
virtual Bool_t IsEqualTo(AliITSTriggerConditions *cond) const;
virtual void DumpAll() const;
+ virtual void PrintAsInPIT() const;
virtual void ResetAll();
virtual void SetRunNumber(UInt_t num) {fRunNumber=num;}