]> git.uio.no Git - u/mrichter/AliRoot.git/blame_incremental - MUON/AliMUONQADataMakerRec.cxx
new format to select counters to be printed out or displayed: "rubric1:[any-]key1...
[u/mrichter/AliRoot.git] / MUON / AliMUONQADataMakerRec.cxx
... / ...
CommitLineData
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// --- MUON header files ---
19#include "AliMUONQADataMakerRec.h"
20
21//-----------------------------------------------------------------------------
22/// \class AliMUONQADataMakerRec
23///
24/// MUON base class for quality assurance data (histo) maker
25///
26/// It is now only a steering class for the two subclasses AliMUONTrackerQADataMakerRec
27/// and AliMUONTriggerQADataMakerRec
28///
29/// \author C. Finck, D. Stocco, L. Aphecetche, A. Blanc
30
31#include "AliMUONTrackerQADataMakerRec.h"
32#include "AliMUONTriggerQADataMakerRec.h"
33#include "AliQAChecker.h"
34#include "AliRawReader.h"
35#include "AliRawEventHeaderBase.h"
36
37/// \cond CLASSIMP
38ClassImp(AliMUONQADataMakerRec)
39/// \endcond
40
41//____________________________________________________________________________
42AliMUONQADataMakerRec::AliMUONQADataMakerRec(Bool_t tracker, Bool_t trigger) :
43AliQADataMakerRec(AliQAv1::GetDetName(AliQAv1::kMUON), "MUON Quality Assurance Data Maker"),
44fTracker(tracker ? new AliMUONTrackerQADataMakerRec(this) : 0x0),
45fTrigger(trigger ? new AliMUONTriggerQADataMakerRec(this) : 0x0)
46{
47 /// ctor
48}
49
50//__________________________________________________________________
51AliMUONQADataMakerRec::~AliMUONQADataMakerRec()
52{
53 /// dtor
54 delete fTracker;
55 delete fTrigger;
56}
57
58//____________________________________________________________________________
59Int_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)
60{
61 TObjArray** list = GetList(task);
62 if (list)
63 {
64 return Add2List(hist,index,list,expert,image,saveForCorr);
65 }
66 return -1;
67}
68
69//____________________________________________________________________________
70void AliMUONQADataMakerRec::EndOfDetectorCycle(AliQAv1::TASKINDEX_t task, TObjArray** list)
71{
72 /// Detector specific actions at end of cycle
73
74 for (Int_t specie = 0 ; specie < AliRecoParam::kNSpecies ; specie++)
75 {
76 if (! IsValidEventSpecie(specie, list) ) continue;
77
78 SetEventSpecie(AliRecoParam::ConvertIndex(specie)); // needed by the GetXXXData methods
79
80 if ( task == AliQAv1::kRAWS )
81 {
82 if ( fTracker ) fTracker->EndOfDetectorCycleRaws(specie,list);
83 if ( fTrigger ) fTrigger->EndOfDetectorCycleRaws(specie,list);
84 }
85 else if ( task == AliQAv1::kRECPOINTS )
86 {
87 // normalize recpoints histograms
88 if ( fTracker ) fTracker->EndOfDetectorCycleRecPoints(specie,list);
89 if ( fTrigger ) fTrigger->EndOfDetectorCycleRecPoints(specie,list);
90 }
91 else if ( task == AliQAv1::kESDS )
92 {
93 // normalize esds histograms
94 if ( fTracker ) fTracker->EndOfDetectorCycleESDs(specie,list);
95 if ( fTrigger ) fTrigger->EndOfDetectorCycleESDs(specie,list);
96 }
97 else if ( task == AliQAv1::kDIGITSR )
98 {
99 if ( fTracker ) fTracker->EndOfDetectorCycleDigits(specie,list);
100 if ( fTrigger ) fTrigger->EndOfDetectorCycleDigits(specie,list);
101 }
102 else
103 {
104 AliFatal(Form("Not implemented for task %s",AliQAv1::GetTaskName(task).Data()));
105 }
106 } // loop on specie
107
108 // do the QA checking
109 AliQAChecker::Instance()->Run(AliQAv1::kMUON,task,list,const_cast<AliDetectorRecoParam*>(GetRecoParam()));
110}
111
112//____________________________________________________________________________
113TObject* AliMUONQADataMakerRec::GetData(AliQAv1::TASKINDEX_t task, const Int_t index)
114{
115 TObjArray** list = GetList(task);
116 if (list) return GetData(list,index);
117 return 0x0;
118}
119
120//____________________________________________________________________________
121TObjArray** AliMUONQADataMakerRec::GetList(AliQAv1::TASKINDEX_t task)
122{
123 // enum TASKINDEX_t {
124 // kNULLTASKINDEX=-1, kRAWS, kHITS, kSDIGITS, kDIGITS, kDIGITSR, kRECPOINTS, kTRACKSEGMENTS, kRECPARTICLES, kESDS, kNTASKINDEX };
125 if ( task == AliQAv1::kRAWS )
126 {
127 return fRawsQAList;
128 }
129 else if ( task == AliQAv1::kDIGITS || task == AliQAv1::kDIGITSR )
130 {
131 return fDigitsQAList;
132 }
133 else if ( task == AliQAv1::kRECPOINTS )
134 {
135 return fRecPointsQAList;
136 }
137 else
138 {
139 AliFatal(Form("task %s not supported here yet",AliQAv1::GetTaskName(task).Data()));
140 }
141 return 0x0;
142}
143
144//____________________________________________________________________________
145void AliMUONQADataMakerRec::InitRaws()
146{
147 /// create Raws histograms in Raws subdir
148
149 if ( fTracker ) fTracker->InitRaws();
150 if ( fTrigger ) fTrigger->InitRaws();
151}
152
153//__________________________________________________________________
154void AliMUONQADataMakerRec::InitDigits()
155{
156 /// Initialized Digits spectra
157 if ( fTracker ) fTracker->InitDigits();
158 if ( fTrigger ) fTrigger->InitDigits();
159}
160
161//____________________________________________________________________________
162void AliMUONQADataMakerRec::InitRecPoints()
163{
164 /// create Reconstructed Points histograms in RecPoints subdir
165 if ( fTracker ) fTracker->InitRecPoints();
166 if ( fTrigger ) fTrigger->InitRecPoints();
167}
168
169
170//____________________________________________________________________________
171void AliMUONQADataMakerRec::InitESDs()
172{
173 ///create ESDs histograms in ESDs subdir
174 if ( fTracker ) fTracker->InitESDs();
175 if ( fTrigger ) fTrigger->InitESDs();
176}
177
178//____________________________________________________________________________
179void AliMUONQADataMakerRec::MakeRaws(AliRawReader* rawReader)
180{
181 /// make QA for rawdata
182
183 // Check id histograms already created for this Event Specie
184
185 if ( fTracker && rawReader->GetType() == AliRawEventHeaderBase::kPhysicsEvent )
186 {
187 rawReader->Reset();
188 fTracker->MakeRaws(rawReader);
189 }
190
191 if ( fTrigger && (rawReader->GetType() == AliRawEventHeaderBase::kPhysicsEvent ||
192 rawReader->GetType() == AliRawEventHeaderBase::kCalibrationEvent ) )
193 {
194 rawReader->Reset();
195 fTrigger->MakeRaws(rawReader);
196 }
197}
198
199//__________________________________________________________________
200void AliMUONQADataMakerRec::MakeDigits()
201{
202 /// makes data from Digits
203
204 AliFatal("Not implemented");
205}
206
207//__________________________________________________________________
208void AliMUONQADataMakerRec::MakeDigits(TTree* digitsTree)
209{
210 /// makes data from Digits
211
212 // Do nothing in case of calibration event
213 if ( GetEventSpecie() == AliRecoParam::kCalib ) return;
214
215 if ( fTracker ) fTracker->MakeDigits(digitsTree);
216 if ( fTrigger ) fTrigger->MakeDigits(digitsTree);
217}
218
219//____________________________________________________________________________
220void AliMUONQADataMakerRec::MakeRecPoints(TTree* clustersTree)
221{
222 /// Fill histograms from treeR
223
224 // Do nothing in case of calibration event
225 if ( GetEventSpecie() == AliRecoParam::kCalib ) return;
226
227 if ( fTracker ) fTracker->MakeRecPoints(clustersTree);
228 if ( fTrigger ) fTrigger->MakeRecPoints(clustersTree);
229}
230
231//____________________________________________________________________________
232void AliMUONQADataMakerRec::MakeESDs(AliESDEvent* esd)
233{
234 /// make QA data from ESDs
235
236 // Do nothing in case of calibration event
237 if ( GetEventSpecie() == AliRecoParam::kCalib ) return;
238
239 if ( fTracker ) fTracker->MakeESDs(esd);
240 if ( fTrigger ) fTrigger->MakeESDs(esd);
241
242 }
243
244//____________________________________________________________________________
245void AliMUONQADataMakerRec::ResetDetector(AliQAv1::TASKINDEX_t task)
246{
247 /// Reset internals
248
249 for (int spec = 0; spec < AliRecoParam::kNSpecies; ++spec)
250 {
251 if (!AliQAv1::Instance()->IsEventSpecieSet(AliRecoParam::ConvertIndex(spec)))
252 continue;
253
254 if ( task == AliQAv1::kRAWS )
255 {
256 if (fTracker) fTracker->ResetDetectorRaws(fRawsQAList[spec]);
257 if (fTrigger) fTrigger->ResetDetectorRaws(fRawsQAList[spec]);
258 }
259 else if ( task == AliQAv1::kRECPOINTS )
260 {
261 if (fTracker) fTracker->ResetDetectorRecPoints(fRecPointsQAList[spec]);
262 if (fTrigger) fTrigger->ResetDetectorRecPoints(fRecPointsQAList[spec]);
263 }
264 else if ( task == AliQAv1::kESDS )
265 {
266 if (fTracker) fTracker->ResetDetectorESDs(fESDsQAList[spec]);
267 if (fTrigger) fTrigger->ResetDetectorESDs(fESDsQAList[spec]);
268 }
269 else if ( task == AliQAv1::kDIGITS )
270 {
271 if (fTracker) fTracker->ResetDetectorDigits(fDigitsQAList[spec]);
272 if (fTrigger) fTrigger->ResetDetectorDigits(fDigitsQAList[spec]);
273 }
274 else
275 {
276 AliFatal(Form("Not implemented for task %s",AliQAv1::GetTaskName(task).Data()));
277 }
278 }
279}
280
281//____________________________________________________________________________
282void AliMUONQADataMakerRec::StartOfDetectorCycle()
283{
284 /// Detector specific actions at start of cycle
285}