Merge branch 'master' of https://git.cern.ch/reps/AliRoot
[u/mrichter/AliRoot.git] / MUON / AliMUONVQADataMakerRec.cxx
1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3 *                                                                        *
4 * Author: The ALICE Off-line Project.                                    *
5 * Contributors are mentioned in the code where appropriate.              *
6 *                                                                        *
7 * Permission to use, copy, modify and distribute this software and its   *
8 * documentation strictly for non-commercial purposes is hereby granted   *
9 * without fee, provided that the above copyright notice appears in all   *
10 * copies and that both the copyright notice and this permission notice   *
11 * appear in the supporting documentation. The authors make no claims     *
12 * about the suitability of this software for any purpose. It is          *
13 * provided "as is" without express or implied warranty.                  *
14 **************************************************************************/
15
16 // $Id$
17
18 #include "AliMUONVQADataMakerRec.h"
19
20 ///
21 /// \class AliMUONVQADataMakerRec
22 /// 
23 /// Interface for a MUON QADataMakerRec, common to MCH and MTR
24 /// 
25 /// \author Laurent Aphecetche
26
27 /// \cond CLASSIMP
28 ClassImp(AliMUONVQADataMakerRec)
29 /// \endcond
30
31 #include "AliMUONRecoParam.h"
32 #include "AliCDBManager.h"
33 #include "TH1.h"
34
35 //_____________________________________________________________________________
36 AliMUONVQADataMakerRec::AliMUONVQADataMakerRec(AliQADataMakerRec* master)
37 : fMaster(master)
38 {
39   /// ctor
40 }
41
42 //_____________________________________________________________________________
43 AliMUONVQADataMakerRec::~AliMUONVQADataMakerRec()
44 {
45   /// dtor
46 }
47
48 //_____________________________________________________________________________
49 Int_t 
50 AliMUONVQADataMakerRec::Add2DigitsList(TH1 * hist, const Int_t index, const Bool_t expert , const Bool_t image )
51 {
52   /// fwd
53   return fMaster ? fMaster->Add2DigitsList(hist,index,expert,image) : -1;
54 }
55
56 //_____________________________________________________________________________
57 Int_t 
58 AliMUONVQADataMakerRec::Add2ESDsList(TH1 * hist, const Int_t index, const Bool_t expert , const Bool_t image )
59 {
60   /// fwd
61   return fMaster ? fMaster->Add2ESDsList(hist,index,expert,image) : -1;
62 }
63
64 //_____________________________________________________________________________
65 Int_t 
66 AliMUONVQADataMakerRec::Add2RecPointsList(TH1 * hist, const Int_t index, const Bool_t expert , const Bool_t image )
67 {
68   /// fwd
69   return fMaster ? fMaster->Add2RecPointsList(hist,index,expert,image) : -1;
70 }
71
72 //_____________________________________________________________________________
73 Int_t 
74 AliMUONVQADataMakerRec::Add2RawsList(TH1 * hist, const Int_t index, const Bool_t expert , const Bool_t image , const Bool_t saveForCorr )
75 {
76   /// fwd
77   return fMaster ? fMaster->Add2RawsList(hist,index,expert,image,saveForCorr) : -1;
78 }
79
80 //_____________________________________________________________________________
81 void AliMUONVQADataMakerRec::ClonePerTrigClass(AliQAv1::TASKINDEX_t task)
82 {
83   // RS: alias to QADataMaker per-trigger-class histo clonning
84   if (!fMaster) return;
85   fMaster->ClonePerTrigClass(task);
86 }
87
88
89 //_____________________________________________________________________________
90 AliRecoParam::EventSpecie_t 
91 AliMUONVQADataMakerRec::CurrentEventSpecie() const
92 {
93   /// fwd
94   return fMaster ? fMaster->GetEventSpecie() : AliRecoParam::kDefault;
95 }
96
97 //_____________________________________________________________________________
98 const AliMUONRecoParam* 
99 AliMUONVQADataMakerRec::GetRecoParam() const
100 {
101   /// fwd
102   return fMaster ? dynamic_cast<const AliMUONRecoParam*>(fMaster->GetRecoParam()) : 0x0;
103 }
104
105 //_____________________________________________________________________________
106 void 
107 AliMUONVQADataMakerRec::ResetDetector(const TObjArray* list)
108 {
109   /// Reset all histograms found in list, that match either trigger or tracker
110   
111   TString cn(ClassName());
112   TString pattern;
113   
114   if ( cn.Contains("Trigger") ) pattern = "Trigger";
115   if ( cn.Contains("Tracker") ) pattern = "Tracker";
116   
117   TIter next(list); 
118   TObject* o;
119   while ( (o = next()) ) 
120   {
121     // RS: Check if this is a histo or array of histos
122     TString hcn(o->GetName());
123     if ( !hcn.Contains(pattern) ) continue;
124     if ( !o->TestBit(AliQAv1::GetClonedBit()) ) { // not cloned, this is orig. histo
125       ((TH1*)o)->Reset();
126       continue;
127     }
128     // histo was cloned, so we are dealing with TObjArray
129     TIter nextCl( (TObjArray*)o );
130     TH1* hclone = 0;
131     while ( (hclone = (TH1*) nextCl()) ) hclone->Reset();
132   }
133 }
134
135 //_____________________________________________________________________________
136 Int_t 
137 AliMUONVQADataMakerRec::RunNumber() const
138 {
139   /// fwd
140   return fMaster ? fMaster->GetRun() : -1;
141 }