]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - FMD/AliFMDQADataMakerRec.cxx
Update HFE v2
[u/mrichter/AliRoot.git] / FMD / AliFMDQADataMakerRec.cxx
index c5b1b59b4403fd571fc85e62bb6fe01745355c58..dc0fe45015c696407c8444b512061c04cf913601 100644 (file)
@@ -94,6 +94,7 @@ AliFMDQADataMakerRec::operator = (const AliFMDQADataMakerRec& qadm )
   // Return:
   //    Reference to this
   //
+  if (&qadm == this) return *this;
   fRecPointsArray   = qadm.fRecPointsArray;
   fReconstructor    = qadm.fReconstructor;
   fUseReconstructor = qadm.fUseReconstructor;
@@ -226,15 +227,15 @@ void AliFMDQADataMakerRec::InitRaws()
 {
   // create Raws histograms in Raws subdir  
   Info("InitRaws", "Initializing Raws");
-  const Bool_t expert   = kTRUE ; 
-  const Bool_t saveCorr = kTRUE ; 
-  const Bool_t image    = kTRUE ; 
+  const Bool_t expert   = kTRUE ; // Flag - not the setting
+  const Bool_t saveCorr = kTRUE ; // Flag - not setting
+  const Bool_t image    = kTRUE ; // Flag - not the setting
   TH2I* hErrors = new TH2I("readoutErrors", "Read out errors", 3, .5, 3.5,
                           160, -.5, 159.5); 
   hErrors->GetXaxis()->SetBinLabel(1, "FMD1");
   hErrors->GetXaxis()->SetBinLabel(2, "FMD2");
   hErrors->GetXaxis()->SetBinLabel(3, "FMD3");
-  hErrors->SetYTitle("# errors");
+  hErrors->SetYTitle("# errors [log]");
   hErrors->SetZTitle("Events [log]");
   hErrors->SetDirectory(0);
   Add2RawsList(hErrors, 1, !expert, image, !saveCorr);
@@ -255,6 +256,27 @@ void AliFMDQADataMakerRec::InitRaws()
     // AliLog::SetModuleDebugLevel("FMD", oldDbg);
   }
 
+  TH2* status = new TH2D("status", "Fit status per cycle", 
+                         5, .5, 5.5, 4, -.5, 3.5);
+  status->SetDirectory(0);
+  // status->SetXTitle("Detector");
+  // status->SetYTitle("Status");
+  status->SetZTitle("N_{cycles} [LOG]");
+  status->GetXaxis()->SetBinLabel(1, "FMD1i");
+  status->GetXaxis()->SetBinLabel(2, "FMD2i");
+  status->GetXaxis()->SetBinLabel(3, "FMD2o");
+  status->GetXaxis()->SetBinLabel(4, "FMD3i");
+  status->GetXaxis()->SetBinLabel(5, "FMD3o");
+  status->GetYaxis()->SetBinLabel(1, "OK");
+  status->GetYaxis()->SetBinLabel(2, "Problem");
+  status->GetYaxis()->SetBinLabel(3, "Bad");
+  status->GetYaxis()->SetBinLabel(4, "What the ...?");
+  status->GetXaxis()->SetLabelSize(0.16);
+  status->GetYaxis()->SetLabelSize(0.16);
+  status->SetStats(0);
+  Add2RawsList(status, GetHalfringIndex(4, 'i', 0, 0), 
+              !expert, image, !saveCorr);
+              
   TH1* hist;
   Int_t idx = 0;
   for(UShort_t d = 1; d<=3; d++) {
@@ -501,15 +523,36 @@ void AliFMDQADataMakerRec::MakeRecPoints(TTree* clustersTree)
 //_____________________________________________________________________ 
 void AliFMDQADataMakerRec::StartOfDetectorCycle()
 {
-  // What 
-  // to 
-  // do?
+  // Do an init on the reconstructor.  If we have the
+  // same run nothing happens, but if we have a new run, we update our
+  // parameters.
+  if (fUseReconstructor && fReconstructor) fReconstructor->Init();
+  if (fRawsQAList) {
+    for (Int_t index = 0 ; index < AliRecoParam::kNSpecies ; index++) {
+      if (!fRawsQAList[index]) continue;
+      AliRecoParam::EventSpecie_t specie = AliRecoParam::ConvertIndex(index);
+      if (specie == AliRecoParam::kCalib || specie == AliRecoParam::kCosmic) 
+       continue;
+
+      TIter    nextObject(fRawsQAList[index]);
+      TObject* object = 0;
+      while ((object = nextObject())) { 
+       if (!object->InheritsFrom(TH1::Class())) continue;
+       TH1* hist = static_cast<TH1*>(object);
+       if (!hist->TestBit(kResetBit)) continue;
+       
+       AliInfoF("Resetting histogram %s", hist->GetName());
+       hist->Reset("M");
+       hist->SetBit(kResetBit, false);
+      }
+    }
+  }
 }
 //_____________________________________________________________________ 
 Int_t AliFMDQADataMakerRec::GetHalfringIndex(UShort_t det, 
                                             Char_t ring, 
                                             UShort_t board, 
-                                            UShort_t monitor) const
+                                            UShort_t monitor)
 {
   // 
   // Get the half-ring index
@@ -535,6 +578,19 @@ Int_t AliFMDQADataMakerRec::GetHalfringIndex(UShort_t det,
 #endif
   return index-2;
 }
+//_____________________________________________________________________ 
+void AliFMDQADataMakerRec::GetHalfringFromIndex(Int_t     idx, 
+                                               UShort_t& det, 
+                                               Char_t&   ring, 
+                                               UShort_t& board, 
+                                               UShort_t& monitor)
+{
+  det     = ((idx >> 3) & 0x3) + 1;
+  ring    = ((idx >> 2) & 0x1) == 1 ? 'I' : 'O';
+  board   = ((idx >> 1) & 0x1);
+  monitor = ((idx >> 0) & 0x1);
+}
+
 
 //_____________________________________________________________________