]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/AliITSOnlineCalibrationSPDhandler.h
Added option for different binning of DCAxy axis in THnSparse. Same width for all...
[u/mrichter/AliRoot.git] / ITS / AliITSOnlineCalibrationSPDhandler.h
index f08582d455460c8ef65c0c0dc89a981e8f085384..a93e971004533e3620790e636a60db0b88e353a4 100644 (file)
@@ -1,5 +1,5 @@
-#ifndef ALI_ITS_ONLINECALIBRATIONSPDHANDLER_H
-#define ALI_ITS_ONLINECALIBRATIONSPDHANDLER_H
+#ifndef ALIITSONLINECALIBRATIONSPDHANDLER_H
+#define ALIITSONLINECALIBRATIONSPDHANDLER_H
 
 //////////////////////////////////////////////////////////////////////////////
 // Author: Henrik Tydesjo                                                   //
@@ -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();
@@ -63,25 +65,30 @@ class AliITSOnlineCalibrationSPDhandler {
   void    WriteDeadToFile(UInt_t eq, Bool_t inactive=kFALSE);
   void    WriteNoisyToFile(UInt_t eq);
 
+  Bool_t  ReadPITConditionsFromDB(Int_t runNr, const Char_t *storage="default");
 #ifndef SPD_DA_OFF
   Bool_t  ReadDeadModuleFromDB(UInt_t module, Int_t runNr, const Char_t *storage="default", Bool_t treeSerial=kFALSE);
   Bool_t  ReadNoisyModuleFromDB(UInt_t module, Int_t runNr, const Char_t *storage="default", Bool_t treeSerial=kFALSE);
   Bool_t  ReadFromDB(Int_t runNr, const Char_t *storage="default", Bool_t treeSerial=kFALSE);
   Bool_t  ReadDeadFromDB(Int_t runNr, const Char_t *storage="default", Bool_t treeSerial=kFALSE);
+  Bool_t  ReadSparseDeadFromDB(Int_t runNr, const Char_t *storage="default", Bool_t treeSerial=kFALSE);
   Bool_t  ReadNoisyFromDB(Int_t runNr, const Char_t *storage="default", Bool_t treeSerial=kFALSE);
   Bool_t  ReadDeadFromDBasNoisy(Int_t runNr, const Char_t *storage="default", Bool_t treeSerial=kFALSE);
-  Bool_t  ReadDeadFromCalibObj(TObjArray* calObj);
-  Bool_t  ReadNoisyFromCalibObj(TObjArray* calObj);
+  Bool_t  ReadDeadFromCalibObj(const TObjArray* calObj);
+  Bool_t  ReadNoisyFromCalibObj(const TObjArray* calObj);
   Bool_t  WriteToDB(Int_t runNrStart, Int_t runNrEnd, const Char_t *storage="default");
   Bool_t  WriteDeadToDB(Int_t runNrStart, Int_t runNrEnd, const Char_t *storage="default");
+  Bool_t  WriteSparseDeadToDB(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);
 
   TArrayS GetSilentArray(UInt_t module, Bool_t treeSerial=kFALSE); // temporarily needed
   TArrayS GetDeadArray(UInt_t module, Bool_t treeSerial=kFALSE);
+  TArrayS GetSparseDeadArray(UInt_t module, Bool_t treeSerial=kFALSE);
   TArrayS GetNoisyArray(UInt_t module, Bool_t treeSerial=kFALSE);
 
   TArrayI GetDeadArrayOnline(UInt_t eq);
@@ -90,17 +97,25 @@ class AliITSOnlineCalibrationSPDhandler {
   void    PrintEqSummary();
   void    PrintSilent() const; // silent = dead or inactive
   void    PrintDead() const;
+  void    PrintSparseDead() const;
   void    PrintNoisy() const;
 
   Bool_t  SetDeadPixel(UInt_t eq, UInt_t hs, UInt_t chip, UInt_t col, UInt_t row);
+  Bool_t  SetSparseDeadPixel(UInt_t eq, UInt_t hs, UInt_t chip, UInt_t col, UInt_t row);
   Bool_t  SetNoisyPixel(UInt_t eq, UInt_t hs, UInt_t chip, UInt_t col, UInt_t row);
   Bool_t  SetDeadPixelM(UInt_t module, UInt_t colM, UInt_t row);
+  Bool_t  SetSparseDeadPixelM(UInt_t module, UInt_t colM, UInt_t row);
   Bool_t  SetNoisyPixelM(UInt_t module, UInt_t colM, UInt_t row);
   Bool_t  UnSetDeadPixel(UInt_t eq, UInt_t hs, UInt_t chip, UInt_t col, UInt_t row);
+  Bool_t  UnSetSparseDeadPixel(UInt_t eq, UInt_t hs, UInt_t chip, UInt_t col, UInt_t row);
   Bool_t  UnSetNoisyPixel(UInt_t eq, UInt_t hs, UInt_t chip, UInt_t col, UInt_t row);
   Bool_t  UnSetDeadPixelM(UInt_t module, UInt_t colM, UInt_t row);
+  Bool_t  UnSetSparseDeadPixelM(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;
@@ -117,6 +132,7 @@ class AliITSOnlineCalibrationSPDhandler {
   UInt_t  GetNrBad() const; // bad = silent or noisy
   UInt_t  GetNrSilent() const; // silent = dead or inactive
   UInt_t  GetNrDead() const;
+  UInt_t  GetNrSparseDead() const;
   UInt_t  GetDeadEqIdAt(UInt_t index) const;
   UInt_t  GetDeadHSAt(UInt_t index) const;
   UInt_t  GetDeadChipAt(UInt_t index) const;
@@ -133,6 +149,7 @@ class AliITSOnlineCalibrationSPDhandler {
   UInt_t  GetNrBad(UInt_t module) const; // bad = silent or noisy
   UInt_t  GetNrSilent(UInt_t module) const; // silent = dead or inactive
   UInt_t  GetNrDead(UInt_t module) const;
+  UInt_t  GetNrSparseDead(UInt_t module) const;
   UInt_t  GetNrDeadSingle(UInt_t module) const;
   UInt_t  GetDeadEqIdAt(UInt_t module,UInt_t index) const;
   UInt_t  GetDeadHSAt(UInt_t module,UInt_t index) const;
@@ -150,6 +167,7 @@ class AliITSOnlineCalibrationSPDhandler {
   UInt_t  GetNrBadEq(UInt_t eq) const; // bad = silent or noisy
   UInt_t  GetNrSilentEq(UInt_t eq) const; // silent = dead or inactive
   UInt_t  GetNrDeadEq(UInt_t eq) const;
+  UInt_t  GetNrSparseDeadEq(UInt_t eq) const;
   UInt_t  GetDeadEqIdAtEq(UInt_t eq, UInt_t index) const;
   UInt_t  GetDeadHSAtEq(UInt_t eq, UInt_t index) const;
   UInt_t  GetDeadChipAtEq(UInt_t eq, UInt_t index) const;
@@ -165,6 +183,7 @@ class AliITSOnlineCalibrationSPDhandler {
   UInt_t  GetNrBadC(UInt_t eq, UInt_t hs, UInt_t chip) const; // bad = silent or noisy
   UInt_t  GetNrSilentC(UInt_t eq, UInt_t hs, UInt_t chip) const; // silent = dead or inactive
   UInt_t  GetNrDeadC(UInt_t eq, UInt_t hs, UInt_t chip) const;
+  UInt_t  GetNrSparseDeadC(UInt_t eq, UInt_t hs, UInt_t chip) const;
   UInt_t  GetDeadEqIdAtC(UInt_t eq, UInt_t hs, UInt_t chip, UInt_t index) const;
   UInt_t  GetDeadHSAtC(UInt_t eq, UInt_t hs, UInt_t chip, UInt_t index) const;
   UInt_t  GetDeadChipAtC(UInt_t eq, UInt_t hs, UInt_t chip, UInt_t index) const;
@@ -205,24 +224,29 @@ class AliITSOnlineCalibrationSPDhandler {
   Bool_t  IsNoisyChip(UInt_t eq, UInt_t hs, UInt_t chip) const; 
 
   UInt_t  AddSilentFrom(AliITSOnlineCalibrationSPDhandler* other);
-  UInt_t  AddDeadFrom(AliITSOnlineCalibrationSPDhandler* other);
-  UInt_t  AddNoisyFrom(AliITSOnlineCalibrationSPDhandler* other);
+  UInt_t  AddDeadFrom(const AliITSOnlineCalibrationSPDhandler* other);
+  UInt_t  AddNoisyFrom(const AliITSOnlineCalibrationSPDhandler* other);
 
   UInt_t  GetNrDiff(AliITSOnlineCalibrationSPDhandler* other) const;
   UInt_t  GetNrSilentDiff(AliITSOnlineCalibrationSPDhandler* other) const;
-  UInt_t  GetNrDeadDiff(AliITSOnlineCalibrationSPDhandler* other) const;
-  UInt_t  GetNrNoisyDiff(AliITSOnlineCalibrationSPDhandler* other) const;
-  AliITSOnlineCalibrationSPDhandler* GetDiff(AliITSOnlineCalibrationSPDhandler* other) const;
-  AliITSOnlineCalibrationSPDhandler* GetSilentDiff(AliITSOnlineCalibrationSPDhandler* other) const;
-  AliITSOnlineCalibrationSPDhandler* GetDeadDiff(AliITSOnlineCalibrationSPDhandler* other) const;
-  AliITSOnlineCalibrationSPDhandler* GetNoisyDiff(AliITSOnlineCalibrationSPDhandler* other) const;
+  UInt_t  GetNrDeadDiff(const AliITSOnlineCalibrationSPDhandler* other) const;
+  UInt_t  GetNrNoisyDiff(const AliITSOnlineCalibrationSPDhandler* other) const;
+  AliITSOnlineCalibrationSPDhandler* GetDiff(const AliITSOnlineCalibrationSPDhandler* other) const;
+  AliITSOnlineCalibrationSPDhandler* GetSilentDiff(const AliITSOnlineCalibrationSPDhandler* other) const;
+  AliITSOnlineCalibrationSPDhandler* GetDeadDiff(const AliITSOnlineCalibrationSPDhandler* other) const;
+  AliITSOnlineCalibrationSPDhandler* GetNoisyDiff(const AliITSOnlineCalibrationSPDhandler* other) const;
+  AliITSTriggerConditions * GetTriggerConditions() const {return fTriggerConditions;}
 
+  void PrintDiffInDead(AliITSOnlineCalibrationSPDhandler *other) const;
+  void PrintDiffInPITmask(AliITSOnlineCalibrationSPDhandler *other) const;
 
  private:
   TString fFileLocation;              // location (dir) of files to read and write from
   AliITSIntMap* fDeadPixelMap[1200];  // lists of dead pixels for each chip
+  AliITSIntMap* fSparseDeadPixelMap[1200];  // lists of dead pixels for each chip (used to define sparse dead pixel on LHC period basis)
   AliITSIntMap* fNoisyPixelMap[1200]; // lists of noisy pixels for each chip
   UInt_t fNrDead[1200];               // nr of dead pixels for each chip
+  UInt_t fNrSparseDead[1200];         // nr of sparse dead pixels for each chip
   UInt_t fNrNoisy[1200];              // nr of noisy pixels for each chip
   Bool_t fActiveEq[20];               // active bit for each equipment
   Bool_t fActiveHS[20][6];            // active bit for each half-stave
@@ -230,6 +254,8 @@ class AliITSOnlineCalibrationSPDhandler {
   Bool_t fDeadEq[20];                 // dead bit for each equipment
   Bool_t fDeadHS[20][6];              // dead bit for each half-stave
   Bool_t fDeadChip[20][6][10];        // dead bit for each chip
+  AliITSTriggerConditions *fTriggerConditions; // PIT conditions (mask, parameters name, parameters values)
+
 
   Int_t    GetKey(UInt_t eq, UInt_t hs, UInt_t chip, UInt_t col, UInt_t row) const 
     {return eq*6*10*32*256 + hs*10*32*256 + chip*32*256 + col*256 + row;}
@@ -269,9 +295,11 @@ class AliITSOnlineCalibrationSPDhandler {
   UInt_t   GetRowFromOffline(UInt_t module, UInt_t rowM) const;
 
   void     RecursiveInsertDead(AliITSCalibrationSPD* calibSPD, UInt_t module, Int_t lowInd, Int_t highInd);
+  void     RecursiveInsertSparseDead(AliITSCalibrationSPD* calibSPD, UInt_t module, Int_t lowInd, Int_t highInd);
   void     RecursiveInsertNoisy(AliITSCalibrationSPD* calibSPD, UInt_t module, Int_t lowInd, Int_t highInd);
 
   UInt_t   GetNrDeadC2(UInt_t gloChip) const;
+  UInt_t   GetNrSparseDeadC2(UInt_t gloChip) const;
   UInt_t   GetDeadEqIdAtC2(UInt_t gloChip, UInt_t index) const;
   UInt_t   GetDeadHSAtC2(UInt_t gloChip, UInt_t index) const;
   UInt_t   GetDeadChipAtC2(UInt_t gloChip, UInt_t index) const;