]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONQADataMakerRec.cxx
print number of reconstructible/reconstructed/MC-matched pairs
[u/mrichter/AliRoot.git] / MUON / AliMUONQADataMakerRec.cxx
index cff1c674a2ed32e6a93de1c46bed23024ee97c85..0f9182911e870230b23f1e0dcdbebfe36dd00da1 100644 (file)
@@ -28,6 +28,7 @@
 ///
 /// \author C. Finck, D. Stocco, L. Aphecetche, A. Blanc
 
+#include "AliDAQ.h"
 #include "AliMUONTrackerQADataMakerRec.h"
 #include "AliMUONTriggerQADataMakerRec.h"
 #include "AliQAChecker.h"
@@ -45,6 +46,7 @@ fTracker(tracker ? new AliMUONTrackerQADataMakerRec(this) : 0x0),
 fTrigger(trigger ? new AliMUONTriggerQADataMakerRec(this) : 0x0)
 {
   /// ctor
+  AliInfo(Form("tracker=%d trigger=%d",tracker,trigger));
 }
 
 //__________________________________________________________________
@@ -55,42 +57,94 @@ AliMUONQADataMakerRec::~AliMUONQADataMakerRec()
   delete fTrigger;
 }
 
+//____________________________________________________________________________ 
+Int_t AliMUONQADataMakerRec::Add2List(TH1 * hist, const Int_t index, AliQAv1::TASKINDEX_t task, const Bool_t expert, const Bool_t image, const Bool_t saveForCorr)
+{
+  TObjArray** list = GetList(task);
+  if (list)
+  {
+    return Add2List(hist,index,list,expert,image,saveForCorr);
+  }
+  return -1;
+}
+
 //____________________________________________________________________________ 
 void AliMUONQADataMakerRec::EndOfDetectorCycle(AliQAv1::TASKINDEX_t task, TObjArray** list)
 {
   /// Detector specific actions at end of cycle
-  
+  //
+  ResetEventTrigClasses(); // RS
+  //
   for (Int_t specie = 0 ; specie < AliRecoParam::kNSpecies ; specie++) 
   {
     if (! IsValidEventSpecie(specie, list)  ) continue;
     
-    SetEventSpecie(AliRecoParam::ConvertIndex(specie));
-        
+    SetEventSpecie(AliRecoParam::ConvertIndex(specie)); // needed by the GetXXXData methods
+    
     if ( task == AliQAv1::kRAWS ) 
     {
-      if (fTracker) fTracker->EndOfDetectorCycleRaws(specie,list);
-      if (fTrigger) fTrigger->EndOfDetectorCycleRaws(specie,list);
-    }
-    
-    if ( task == AliQAv1::kRECPOINTS )
+      if ( fTracker ) fTracker->EndOfDetectorCycleRaws(specie,list);
+      if ( fTrigger ) fTrigger->EndOfDetectorCycleRaws(specie,list);
+    }  
+    else if ( task == AliQAv1::kRECPOINTS )
     {
       // normalize recpoints histograms
-      if (fTracker) fTracker->EndOfDetectorCycleRecPoints(specie,list);
-      if (fTrigger) fTrigger->EndOfDetectorCycleRecPoints(specie,list);
+      if ( fTracker ) fTracker->EndOfDetectorCycleRecPoints(specie,list);
+      if ( fTrigger ) fTrigger->EndOfDetectorCycleRecPoints(specie,list);
     }
-    
-    if ( task == AliQAv1::kESDS ) 
+    else if ( task == AliQAv1::kESDS ) 
     {
       // normalize esds histograms
-      if (fTracker) fTracker->EndOfDetectorCycleESDs(specie,list);
-      if (fTrigger) fTrigger->EndOfDetectorCycleESDs(specie,list);
+      if ( fTracker ) fTracker->EndOfDetectorCycleESDs(specie,list);
+      if ( fTrigger ) fTrigger->EndOfDetectorCycleESDs(specie,list);
+    }
+    else if ( task == AliQAv1::kDIGITSR ) 
+    {
+      if ( fTracker ) fTracker->EndOfDetectorCycleDigits(specie,list);        
+      if ( fTrigger ) fTrigger->EndOfDetectorCycleDigits(specie,list);
+    }
+    else
+    {
+      AliFatal(Form("Not implemented for task %s",AliQAv1::GetTaskName(task).Data()));
     }
-   } // loop on specie
+  } // loop on specie
     
   // do the QA checking
   AliQAChecker::Instance()->Run(AliQAv1::kMUON,task,list,const_cast<AliDetectorRecoParam*>(GetRecoParam()));
 }
 
+//____________________________________________________________________________ 
+TObject* AliMUONQADataMakerRec::GetData(AliQAv1::TASKINDEX_t task, const Int_t index)
+{
+  TObjArray** list = GetList(task);
+  if (list) return GetData(list,index);
+  return 0x0;
+}
+
+//____________________________________________________________________________ 
+TObjArray** AliMUONQADataMakerRec::GetList(AliQAv1::TASKINDEX_t task)
+{
+  //  enum TASKINDEX_t {
+  //    kNULLTASKINDEX=-1, kRAWS, kHITS, kSDIGITS, kDIGITS, kDIGITSR, kRECPOINTS, kTRACKSEGMENTS, kRECPARTICLES, kESDS, kNTASKINDEX };
+  if ( task == AliQAv1::kRAWS ) 
+  {
+      return fRawsQAList;
+  }
+  else if ( task == AliQAv1::kDIGITS || task == AliQAv1::kDIGITSR )
+  {
+    return fDigitsQAList;
+  }
+  else if ( task == AliQAv1::kRECPOINTS ) 
+  {
+    return fRecPointsQAList;
+  }
+  else
+  {
+      AliFatal(Form("task %s not supported here yet",AliQAv1::GetTaskName(task).Data()));
+  }
+  return 0x0;
+}
+
 //____________________________________________________________________________ 
 void AliMUONQADataMakerRec::InitRaws()
 {
@@ -98,6 +152,8 @@ void AliMUONQADataMakerRec::InitRaws()
        
   if ( fTracker ) fTracker->InitRaws();
   if ( fTrigger ) fTrigger->InitRaws();
+  //
+  ClonePerTrigClass(AliQAv1::kRAWS); // this should be the last line
 }
 
 //__________________________________________________________________
@@ -106,6 +162,8 @@ void AliMUONQADataMakerRec::InitDigits()
   /// Initialized Digits spectra 
   if ( fTracker ) fTracker->InitDigits();
   if ( fTrigger ) fTrigger->InitDigits();
+  //
+  ClonePerTrigClass(AliQAv1::kDIGITS); // this should be the last line
 } 
 
 //____________________________________________________________________________ 
@@ -114,6 +172,8 @@ void AliMUONQADataMakerRec::InitRecPoints()
        /// create Reconstructed Points histograms in RecPoints subdir
   if ( fTracker ) fTracker->InitRecPoints();
   if ( fTrigger ) fTrigger->InitRecPoints();
+  //
+  ClonePerTrigClass(AliQAv1::kRECPOINTS); // this should be the last line
 }
 
 
@@ -123,27 +183,45 @@ void AliMUONQADataMakerRec::InitESDs()
   ///create ESDs histograms in ESDs subdir
   if ( fTracker ) fTracker->InitESDs();
   if ( fTrigger ) fTrigger->InitESDs();
+  //
+  ClonePerTrigClass(AliQAv1::kESDS); // this should be the last line
 }
 
 //____________________________________________________________________________
 void AliMUONQADataMakerRec::MakeRaws(AliRawReader* rawReader)
 {
   /// make QA for rawdata
-
-  // Check id histograms already created for this Event Specie
-
+  /// Note that we do not call the sub-datamaker MakeRaws method
+  /// for events where the MCH or MTR is not part of the readout...
+  
+  if ( !rawReader || !rawReader->GetDetectorPattern() ) return;
+  
+  UInt_t clmask = rawReader->GetDetectorPattern()[0];
+    
   if ( fTracker && rawReader->GetType() == AliRawEventHeaderBase::kPhysicsEvent ) 
   {
-    rawReader->Reset();
-    fTracker->MakeRaws(rawReader);
+    UInt_t mchMask = AliDAQ::DetectorPattern(" MUONTRK ");
+    if ( clmask & mchMask ) 
+    {
+      rawReader->Reset();
+      fTracker->MakeRaws(rawReader);
+    }
   }
   
   if ( fTrigger && (rawReader->GetType() == AliRawEventHeaderBase::kPhysicsEvent ||
                     rawReader->GetType() == AliRawEventHeaderBase::kCalibrationEvent ) )
   {
-    rawReader->Reset();    
-    fTrigger->MakeRaws(rawReader);
+    UInt_t mtrMask = AliDAQ::DetectorPattern(" MUONTRG ");
+    if ( clmask & mtrMask )
+    {
+      rawReader->Reset();    
+      fTrigger->MakeRaws(rawReader);
+    }
   }
+  //
+  IncEvCountCycleRaws();
+  IncEvCountTotalRaws();
+  //
 }
 
 //__________________________________________________________________
@@ -151,7 +229,7 @@ void AliMUONQADataMakerRec::MakeDigits()
 {
   /// makes data from Digits
   
-  AliError("Not implemented");
+  AliFatal("Not implemented");
 }
 
 //__________________________________________________________________
@@ -160,10 +238,14 @@ void AliMUONQADataMakerRec::MakeDigits(TTree* digitsTree)
   /// makes data from Digits
 
   // Do nothing in case of calibration event
-  if ( GetRecoParam()->GetEventSpecie() == AliRecoParam::kCalib ) return;
+  if ( GetEventSpecie() == AliRecoParam::kCalib ) return;
 
   if ( fTracker ) fTracker->MakeDigits(digitsTree);
   if ( fTrigger ) fTrigger->MakeDigits(digitsTree);  
+  //
+  IncEvCountCycleDigits();
+  IncEvCountTotalDigits();
+  //
 }
 
 //____________________________________________________________________________
@@ -172,10 +254,14 @@ void AliMUONQADataMakerRec::MakeRecPoints(TTree* clustersTree)
        /// Fill histograms from treeR
 
   // Do nothing in case of calibration event
-  if ( GetRecoParam()->GetEventSpecie() == AliRecoParam::kCalib ) return;
+  if ( GetEventSpecie() == AliRecoParam::kCalib ) return;
        
   if ( fTracker ) fTracker->MakeRecPoints(clustersTree);
   if ( fTrigger ) fTrigger->MakeRecPoints(clustersTree);  
+  //
+  IncEvCountCycleRecPoints();
+  IncEvCountTotalRecPoints();
+  //
 }
 
 //____________________________________________________________________________
@@ -184,15 +270,56 @@ void AliMUONQADataMakerRec::MakeESDs(AliESDEvent* esd)
   /// make QA data from ESDs
 
   // Do nothing in case of calibration event
-  if ( GetRecoParam()->GetEventSpecie() == AliRecoParam::kCalib ) return;
+  if ( GetEventSpecie() == AliRecoParam::kCalib ) return;
   
   if ( fTracker ) fTracker->MakeESDs(esd);
   if ( fTrigger ) fTrigger->MakeESDs(esd);  
-
+  //
+  IncEvCountCycleESDs();
+  IncEvCountTotalESDs();
+  //
  }
 
+//____________________________________________________________________________ 
+void AliMUONQADataMakerRec::ResetDetector(AliQAv1::TASKINDEX_t task)
+{
+  /// Reset internals
+  
+  for (int spec = 0; spec < AliRecoParam::kNSpecies; ++spec) 
+  {
+    if (!AliQAv1::Instance()->IsEventSpecieSet(AliRecoParam::ConvertIndex(spec)))
+      continue;
+    
+    if ( task == AliQAv1::kRAWS ) 
+    {
+      if (fTracker) fTracker->ResetDetectorRaws(fRawsQAList[spec]);
+      if (fTrigger) fTrigger->ResetDetectorRaws(fRawsQAList[spec]);
+    }
+    else if ( task == AliQAv1::kRECPOINTS )
+    {
+      if (fTracker) fTracker->ResetDetectorRecPoints(fRecPointsQAList[spec]);
+      if (fTrigger) fTrigger->ResetDetectorRecPoints(fRecPointsQAList[spec]);
+    }
+    else if ( task == AliQAv1::kESDS ) 
+    {
+      if (fTracker) fTracker->ResetDetectorESDs(fESDsQAList[spec]);
+      if (fTrigger) fTrigger->ResetDetectorESDs(fESDsQAList[spec]);
+    }
+    else if ( task == AliQAv1::kDIGITS ) 
+    {
+      if (fTracker) fTracker->ResetDetectorDigits(fDigitsQAList[spec]);
+      if (fTrigger) fTrigger->ResetDetectorDigits(fDigitsQAList[spec]);
+    }
+    else
+    {
+      AliFatal(Form("Not implemented for task %s",AliQAv1::GetTaskName(task).Data()));
+    }
+  }
+}
+
 //____________________________________________________________________________ 
 void AliMUONQADataMakerRec::StartOfDetectorCycle()
 {
-    /// Detector specific actions at start of cycle  
+  /// Detector specific actions at start of cycle  
+  
 }