]> git.uio.no Git - u/mrichter/AliRoot.git/blame - MUON/AliMUONQADataMakerRec.cxx
Fixing STRING_OVERFLOW defect reported by Coverity
[u/mrichter/AliRoot.git] / MUON / AliMUONQADataMakerRec.cxx
CommitLineData
04236e67 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
bf4d93eb 16// $Id$
17
b1341ab0 18// --- MUON header files ---
19#include "AliMUONQADataMakerRec.h"
04236e67 20
04236e67 21//-----------------------------------------------------------------------------
22/// \class AliMUONQADataMakerRec
23///
24/// MUON base class for quality assurance data (histo) maker
25///
ece56eb9 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"
04236e67 36
37/// \cond CLASSIMP
38ClassImp(AliMUONQADataMakerRec)
39/// \endcond
40
41//____________________________________________________________________________
ece56eb9 42AliMUONQADataMakerRec::AliMUONQADataMakerRec(Bool_t tracker, Bool_t trigger) :
4e25ac79 43AliQADataMakerRec(AliQAv1::GetDetName(AliQAv1::kMUON), "MUON Quality Assurance Data Maker"),
ece56eb9 44fTracker(tracker ? new AliMUONTrackerQADataMakerRec(this) : 0x0),
45fTrigger(trigger ? new AliMUONTriggerQADataMakerRec(this) : 0x0)
04236e67 46{
ece56eb9 47 /// ctor
04236e67 48}
49
50//__________________________________________________________________
51AliMUONQADataMakerRec::~AliMUONQADataMakerRec()
52{
53 /// dtor
ece56eb9 54 delete fTracker;
55 delete fTrigger;
04236e67 56}
57
b3d57767 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
04236e67 69//____________________________________________________________________________
4e25ac79 70void AliMUONQADataMakerRec::EndOfDetectorCycle(AliQAv1::TASKINDEX_t task, TObjArray** list)
04236e67 71{
b9bd355c 72 /// Detector specific actions at end of cycle
c92a8c85 73
c455c5fb 74 for (Int_t specie = 0 ; specie < AliRecoParam::kNSpecies ; specie++)
75 {
b9bd355c 76 if (! IsValidEventSpecie(specie, list) ) continue;
77
b3d57767 78 SetEventSpecie(AliRecoParam::ConvertIndex(specie)); // needed by the GetXXXData methods
79
ece56eb9 80 if ( task == AliQAv1::kRAWS )
b9bd355c 81 {
b3d57767 82 if ( fTracker ) fTracker->EndOfDetectorCycleRaws(specie,list);
83 if ( fTrigger ) fTrigger->EndOfDetectorCycleRaws(specie,list);
84 }
85 else if ( task == AliQAv1::kRECPOINTS )
b9bd355c 86 {
87 // normalize recpoints histograms
b3d57767 88 if ( fTracker ) fTracker->EndOfDetectorCycleRecPoints(specie,list);
89 if ( fTrigger ) fTrigger->EndOfDetectorCycleRecPoints(specie,list);
b9bd355c 90 }
b3d57767 91 else if ( task == AliQAv1::kESDS )
b9bd355c 92 {
93 // normalize esds histograms
b3d57767 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()));
b9bd355c 105 }
b3d57767 106 } // loop on specie
b9bd355c 107
108 // do the QA checking
ece56eb9 109 AliQAChecker::Instance()->Run(AliQAv1::kMUON,task,list,const_cast<AliDetectorRecoParam*>(GetRecoParam()));
b9bd355c 110}
111
b3d57767 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
b9bd355c 144//____________________________________________________________________________
ece56eb9 145void AliMUONQADataMakerRec::InitRaws()
b9bd355c 146{
ece56eb9 147 /// create Raws histograms in Raws subdir
148
149 if ( fTracker ) fTracker->InitRaws();
150 if ( fTrigger ) fTrigger->InitRaws();
b9bd355c 151}
152
ece56eb9 153//__________________________________________________________________
154void AliMUONQADataMakerRec::InitDigits()
b9bd355c 155{
ece56eb9 156 /// Initialized Digits spectra
157 if ( fTracker ) fTracker->InitDigits();
158 if ( fTrigger ) fTrigger->InitDigits();
159}
b9bd355c 160
b9bd355c 161//____________________________________________________________________________
ece56eb9 162void AliMUONQADataMakerRec::InitRecPoints()
b9bd355c 163{
ece56eb9 164 /// create Reconstructed Points histograms in RecPoints subdir
165 if ( fTracker ) fTracker->InitRecPoints();
166 if ( fTrigger ) fTrigger->InitRecPoints();
b9bd355c 167}
168
169
170//____________________________________________________________________________
ece56eb9 171void AliMUONQADataMakerRec::InitESDs()
b9bd355c 172{
ece56eb9 173 ///create ESDs histograms in ESDs subdir
174 if ( fTracker ) fTracker->InitESDs();
175 if ( fTrigger ) fTrigger->InitESDs();
04236e67 176}
177
ece56eb9 178//____________________________________________________________________________
179void AliMUONQADataMakerRec::MakeRaws(AliRawReader* rawReader)
04236e67 180{
ece56eb9 181 /// make QA for rawdata
df48c8a4 182
ece56eb9 183 // Check id histograms already created for this Event Specie
df48c8a4 184
ece56eb9 185 if ( fTracker && rawReader->GetType() == AliRawEventHeaderBase::kPhysicsEvent )
5bb54f70 186 {
ece56eb9 187 rawReader->Reset();
188 fTracker->MakeRaws(rawReader);
5bb54f70 189 }
190
ece56eb9 191 if ( fTrigger && (rawReader->GetType() == AliRawEventHeaderBase::kPhysicsEvent ||
192 rawReader->GetType() == AliRawEventHeaderBase::kCalibrationEvent ) )
b9bd355c 193 {
ece56eb9 194 rawReader->Reset();
195 fTrigger->MakeRaws(rawReader);
b9bd355c 196 }
f587a77d 197}
04236e67 198
44ed7a66 199//__________________________________________________________________
ece56eb9 200void AliMUONQADataMakerRec::MakeDigits()
44ed7a66 201{
ece56eb9 202 /// makes data from Digits
44ed7a66 203
b3d57767 204 AliFatal("Not implemented");
ece56eb9 205}
44ed7a66 206
ece56eb9 207//__________________________________________________________________
208void AliMUONQADataMakerRec::MakeDigits(TTree* digitsTree)
f587a77d 209{
ece56eb9 210 /// makes data from Digits
211
212 // Do nothing in case of calibration event
b3d57767 213 if ( GetEventSpecie() == AliRecoParam::kCalib ) return;
ece56eb9 214
215 if ( fTracker ) fTracker->MakeDigits(digitsTree);
216 if ( fTrigger ) fTrigger->MakeDigits(digitsTree);
f587a77d 217}
218
ece56eb9 219//____________________________________________________________________________
220void AliMUONQADataMakerRec::MakeRecPoints(TTree* clustersTree)
f587a77d 221{
ece56eb9 222 /// Fill histograms from treeR
223
224 // Do nothing in case of calibration event
b3d57767 225 if ( GetEventSpecie() == AliRecoParam::kCalib ) return;
ece56eb9 226
227 if ( fTracker ) fTracker->MakeRecPoints(clustersTree);
228 if ( fTrigger ) fTrigger->MakeRecPoints(clustersTree);
04236e67 229}
230
ece56eb9 231//____________________________________________________________________________
232void AliMUONQADataMakerRec::MakeESDs(AliESDEvent* esd)
04236e67 233{
ece56eb9 234 /// make QA data from ESDs
719914e0 235
ece56eb9 236 // Do nothing in case of calibration event
b3d57767 237 if ( GetEventSpecie() == AliRecoParam::kCalib ) return;
ece56eb9 238
239 if ( fTracker ) fTracker->MakeESDs(esd);
240 if ( fTrigger ) fTrigger->MakeESDs(esd);
43b113b8 241
ece56eb9 242 }
04236e67 243
152fe71e 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 {
b3d57767 276 AliFatal(Form("Not implemented for task %s",AliQAv1::GetTaskName(task).Data()));
152fe71e 277 }
278 }
279}
280
04236e67 281//____________________________________________________________________________
282void AliMUONQADataMakerRec::StartOfDetectorCycle()
283{
ece56eb9 284 /// Detector specific actions at start of cycle
df48c8a4 285}