added status information in AliTOFcalibHisto class to handle status of disconnected...
authorrpreghen <rpreghen@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 11 Jan 2010 10:13:55 +0000 (10:13 +0000)
committerrpreghen <rpreghen@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 11 Jan 2010 10:13:55 +0000 (10:13 +0000)
TOF/AliTOFcalibHisto.cxx
TOF/AliTOFcalibHisto.h
TOF/data/AliTOFcalibStat.root [new file with mode: 0644]

index e1d0b6b..eb67393 100644 (file)
@@ -41,11 +41,13 @@ ClassImp(AliTOFcalibHisto)
 
 TFile *AliTOFcalibHisto::fgCalibHistoFile = NULL;
 TFile *AliTOFcalibHisto::fgCalibParFile = NULL;
+TFile *AliTOFcalibHisto::fgCalibStatFile = NULL;
 
 //__________________________________________________________________________
 
 TString AliTOFcalibHisto::fgCalibHistoFileName = "$ALICE_ROOT/TOF/data/AliTOFcalibHisto.root";
 TString AliTOFcalibHisto::fgCalibParFileName = "$ALICE_ROOT/TOF/data/AliTOFcalibPar.root";
+TString AliTOFcalibHisto::fgCalibStatFileName = "$ALICE_ROOT/TOF/data/AliTOFcalibStat.root";
 
 //__________________________________________________________________________
 
@@ -100,6 +102,12 @@ const TString AliTOFcalibHisto::fgkCalibParName[kNcalibPars] = {
 
 //__________________________________________________________________________
 
+const TString AliTOFcalibHisto::fgkCalibStatName[kNcalibStats] = {
+  "hStripStat"
+};
+
+//__________________________________________________________________________
+
 /* LHC clock period [ns] */
 const Double_t AliTOFcalibHisto::fgkLHCperiod = (24.4e-3 * 1024); /* ns */
 
@@ -212,11 +220,126 @@ Bool_t AliTOFcalibHisto::fgFullCorrectionFlag[kNcorrections] = {
 
 //__________________________________________________________________________
 
+const Int_t AliTOFcalibHisto::fgkStripStat[18][91] = {
+
+  {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
+   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
+   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
+   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, /* S00 */
+  
+  {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
+   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
+   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
+   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, /* S01 */
+
+  {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
+   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
+   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
+   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, /* S02 */
+  
+  {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
+   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
+   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
+   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, /* S03 */
+  
+  {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
+   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
+   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
+   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, /* S04 */
+
+  {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
+   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
+   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
+   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, /* S05 */
+
+  {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
+   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
+   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
+   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, /* S06 */
+  
+  {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
+   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
+   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
+   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, /* S07 */
+  
+  {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
+   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
+   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
+   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, /* S08 */
+  
+  {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
+   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
+   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
+   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, /* S09 */
+  
+  {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
+   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
+   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
+   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, /* S10 */
+  
+  {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
+   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
+   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
+   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, /* S11 */
+  
+  {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
+   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
+   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
+   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, /* S12 */
+
+  {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
+   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
+   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, /* S13 */
+
+  {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
+   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
+   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, /* S14 */
+  
+  {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
+   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
+   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, /* S15 */
+
+  {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
+   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
+   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
+   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, /* S16 */
+  
+  {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
+   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
+   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
+   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}  /* S17 */
+
+};
+
+//__________________________________________________________________________
+
 AliTOFcalibHisto::AliTOFcalibHisto() :
   TObject(),
   fCalibConst(),
   fCalibMap(),
-  fCalibPar()
+  fCalibPar(),
+  fCalibStat()
 {
   /* default constructor */
 }
@@ -342,6 +465,33 @@ AliTOFcalibHisto::LoadCalibPar()
 //__________________________________________________________________________
 
 void
+AliTOFcalibHisto::LoadCalibStat()
+{
+  /* load calib stat */
+
+  if (fgCalibStatFile && fgCalibStatFile->IsOpen())
+    AliWarning("calib par file already open: reloading"); 
+
+  /* load calib histo */
+  LoadCalibHisto();
+
+  /* open input file */
+  TFile *fileIn = TFile::Open(GetCalibStatFileName());
+  if (!fileIn || !fileIn->IsOpen())
+    AliError(Form("cannot open input file %s", GetCalibStatFileName()));
+
+  /* set calib par file */
+  fgCalibStatFile = fileIn;
+
+  /* load pars */
+  for (Int_t i = 0; i < kNcalibStats; i++)
+    LoadHisto(fileIn, &fCalibStat[i], fgkCalibStatName[i].Data());
+
+}
+
+//__________________________________________________________________________
+
+void
 AliTOFcalibHisto::WriteCalibHisto()
 {
   /* write calib histo */
@@ -459,6 +609,45 @@ AliTOFcalibHisto::WriteCalibHisto()
 
 //__________________________________________________________________________
 
+void
+AliTOFcalibHisto::WriteCalibStat()
+{
+  /* write calib stat */
+
+  /* open output file */
+  TFile *fileOut = TFile::Open(GetCalibStatFileName(), "RECREATE");
+  if (!fileOut || !fileOut->IsOpen())
+    AliFatal(Form("cannot open output file %s", GetCalibStatFileName()));
+
+  /* create stats */
+  for (Int_t iStat = 0; iStat < kNcalibStats; iStat++)
+    CreateHisto(&fCalibStat[iStat], fgkCalibStatName[iStat].Data(), fgkNchannels);
+
+  /***  SETUP STATS  ***/
+
+  Int_t sector, sectorStrip;
+
+  /* load calib histo */
+  LoadCalibHisto();
+
+  /* loop over channels */
+  for (Int_t index = 0; index < fgkNchannels; index++) {
+    sector = (Int_t)GetCalibMap(kSector, index);
+    sectorStrip = (Int_t)GetCalibMap(kSectorStrip, index);
+    /* strip stat */
+    SetHisto(fCalibStat[kStripStat], index, (Double_t)fgkStripStat[sector][sectorStrip]);
+  } /* loop over channels */
+
+  /* write stats */
+  for (Int_t iStat = 0; iStat < kNcalibStats; iStat++)
+    WriteHisto(fileOut, fCalibStat[iStat]);
+
+  /* close output file */
+  fileOut->Close();
+}
+
+//__________________________________________________________________________
+
 Double_t
 AliTOFcalibHisto::GetCorrection(Int_t corr, Int_t index, Double_t tot)
 {
@@ -578,3 +767,17 @@ AliTOFcalibHisto::GetFullCorrection(Int_t index, Double_t tot)
   return corr;
 }
 
+//__________________________________________________________________________
+
+Bool_t
+AliTOFcalibHisto::GetStatus(Int_t index)
+{
+  /* get status */
+
+  Bool_t status = kTRUE;
+
+  for (Int_t iStat = 0; iStat < kNcalibStats; iStat++)
+    status &= GetCalibStat(iStat, index);
+
+  return status;
+}
index 7466d74..b88ba64 100644 (file)
@@ -94,16 +94,24 @@ public TObject
     kNcalibPars
   };
 
+  enum ECalibStat_t {
+    kStripStat,
+    kNcalibStats
+  };
+
  private:
 
   static TFile *fgCalibHistoFile; /* calib histo file */
   static TFile *fgCalibParFile; /* calib par file */
+  static TFile *fgCalibStatFile; /* calib stat file */
 
   static TString fgCalibHistoFileName; /* calib histo file name */
   static TString fgCalibParFileName; /* calib par file name */
+  static TString fgCalibStatFileName; /* calib par file name */
   static const TString fgkCalibConstName[kNcalibConsts]; // calib const name array */
   static const TString fgkCalibMapName[kNcalibMaps]; // calib map name array */
   static const TString fgkCalibParName[kNcalibPars]; // calib par name array */
+  static const TString fgkCalibStatName[kNcalibStats]; // calib stat name array */
 
   static const Double_t fgkLHCperiod; /* LHC clock period */
   static const Double_t fgkAmphenolCableDelay; /* Amphenol cable delay */
@@ -119,9 +127,12 @@ public TObject
   static Bool_t fgCableCorrectionFlag[kNcorrections]; // cable correction flag
   static Bool_t fgFullCorrectionFlag[kNcorrections]; // full correction flag
 
+  static const Int_t fgkStripStat[18][91]; // strip status
+
   TH1D *fCalibConst[kNcalibConsts]; // calib const array
   TH1D *fCalibMap[kNcalibMaps]; // calib map array
   TH1D *fCalibPar[kNcalibPars]; // calib par array
+  TH1D *fCalibStat[kNcalibStats]; // calib stat array
 
   /* methods */
   void LoadHisto(TFile *file, TH1D **histo, const Char_t *name); /* create histo */
@@ -141,10 +152,12 @@ public TObject
   /* getters */
   static const Char_t *GetCalibHistoFileName() {return fgCalibHistoFileName.Data();}; /* get calib histo file name */
   static const Char_t *GetCalibParFileName() {return fgCalibParFileName.Data();}; /* get calib par file name */
+  static const Char_t *GetCalibStatFileName() {return fgCalibStatFileName.Data();}; /* get calib stat file name */
 
   /* setters */
   static void SetCalibHistoFileName(const Char_t *value) {fgCalibHistoFileName = value;}; /* set calib histo file name */
   static void SetCalibParFileName(const Char_t *value) {fgCalibParFileName = value;}; /* set calib par file name */
+  static void SetCalibStatFileName(const Char_t *value) {fgCalibStatFileName = value;}; /* set calib stat file name */
   static void SetCableCorrectionFlag(Int_t i, Bool_t flag) {if (i < kNcorrections) fgCableCorrectionFlag[i] = flag;}; // set cable correction flag
   static void SetFullCorrectionFlag(Int_t i, Bool_t flag) {if (i < kNcorrections) fgFullCorrectionFlag[i] = flag;}; // set full correction flag
 
@@ -152,16 +165,21 @@ public TObject
   static Int_t GetIndexEO(Int_t ddl, Int_t trm, Int_t chain, Int_t tdc, Int_t channel) {return (channel + 8 * tdc + 120 * chain + 240 * trm + 2400 * ddl);}; /* get index EO */
   void LoadCalibHisto(); /* load calib histo */
   void LoadCalibPar(); /* load calib par */
+  void LoadCalibStat(); /* load calib stat */
   void WriteCalibHisto(); /* write calib histo */
+  void WriteCalibStat(); /* write calib stat */
   Double_t GetCalibConst(Int_t histo) {return GetHisto(fCalibConst[histo], 0);}; /* get calib const */
   Double_t GetCalibMap(Int_t histo, Int_t index) {return GetHisto(fCalibMap[histo], index);}; /* get calib map */
   Double_t GetCalibPar(Int_t histo, Int_t index) {return GetHisto(fCalibPar[histo], index);}; /* get calib par */
+  Bool_t GetCalibStat(Int_t histo, Int_t index) {return GetHisto(fCalibStat[histo], index) != 0. ? kTRUE : kFALSE;}; /* get calib stat */
   Double_t GetCorrection(Int_t corr, Int_t index, Double_t tot = 0.); /* get correction */
   Double_t GetNominalCorrection(Int_t index); /* get nominal correction */
   void ApplyNominalCorrection(AliESDtrack *track); /* apply nominal corrections */
 
   Double_t GetCableCorrection(Int_t index); /* get cable correction */
   Double_t GetFullCorrection(Int_t index, Double_t tot = 0.); /* get full correction */
+
+  Bool_t GetStatus(Int_t index); /* get status */
   
   ClassDef(AliTOFcalibHisto, 1);
   
diff --git a/TOF/data/AliTOFcalibStat.root b/TOF/data/AliTOFcalibStat.root
new file mode 100644 (file)
index 0000000..ded50a6
Binary files /dev/null and b/TOF/data/AliTOFcalibStat.root differ