]> git.uio.no Git - u/mrichter/AliRoot.git/blame - STEER/AliQADataMakerRec.cxx
removed warnings during compilation
[u/mrichter/AliRoot.git] / STEER / AliQADataMakerRec.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 *
940d8e5f 10 * copies and that both the copyright notice and this permission notifce *
04236e67 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
17/* $Id$ */
18
202374b1 19//
20// Base Class
21// Produces the data needed to calculate the quality assurance for Reconstruction
22// All data must be mergeable objects.
23// Y. Schutz CERN July 2007
24//
04236e67 25
26// --- ROOT system ---
04236e67 27#include <TFile.h>
04236e67 28#include <TTree.h>
04236e67 29
30// --- Standard library ---
31
32// --- AliRoot header files ---
33#include "AliLog.h"
34#include "AliQADataMakerRec.h"
04236e67 35#include "AliESDEvent.h"
36#include "AliRawReader.h"
37
38ClassImp(AliQADataMakerRec)
39
40//____________________________________________________________________________
41AliQADataMakerRec::AliQADataMakerRec(const char * name, const char * title) :
42 AliQADataMaker(name, title),
a2b64fbd 43 fESDsQAList(NULL),
44 fRawsQAList(NULL),
45 fRecPointsQAList(NULL),
46 fObject(NULL),
47 fRecoParam(NULL)
04236e67 48{
49 // ctor
50 fDetectorDirName = GetName() ;
51}
52
53//____________________________________________________________________________
54AliQADataMakerRec::AliQADataMakerRec(const AliQADataMakerRec& qadm) :
b8bd1ab8 55 AliQADataMaker(qadm.GetName(), qadm.GetTitle()),
56 fESDsQAList(qadm.fESDsQAList),
57 fRawsQAList(qadm.fRawsQAList),
58 fRecPointsQAList(qadm.fRecPointsQAList),
a2b64fbd 59 fObject(qadm.fObject),
60 fRecoParam(qadm.fRecoParam)
04236e67 61{
62 //copy ctor
63 SetName(qadm.GetName()) ;
64 SetTitle(qadm.GetTitle()) ;
65 fDetectorDirName = GetName() ;
66}
67
63c6f8ae 68//____________________________________________________________________________
69AliQADataMakerRec::~AliQADataMakerRec()
70{
71 //dtor: delete the TObjArray and thei content
7ff8385d 72 if ( fESDsQAList ) {
b3cc11cb 73 if ( fESDsQAList->IsOwner() )
74 fESDsQAList->Delete() ;
7ff8385d 75 delete fESDsQAList ;
76 }
77 if ( fRawsQAList ) {
b3cc11cb 78 if ( fRawsQAList->IsOwner() )
79 fRawsQAList->Delete() ;
7ff8385d 80 delete fRawsQAList ;
81 }
82 if ( fRecPointsQAList ) {
b3cc11cb 83 if ( fRecPointsQAList->IsOwner() )
84 fRecPointsQAList->Delete() ;
7ff8385d 85 delete fRecPointsQAList ;
86 }
63c6f8ae 87}
88
04236e67 89//__________________________________________________________________
90AliQADataMakerRec& AliQADataMakerRec::operator = (const AliQADataMakerRec& qadm )
91{
92 // Assignment operator.
93 this->~AliQADataMakerRec();
94 new(this) AliQADataMakerRec(qadm);
95 return *this;
96}
97
930e6e3e 98//____________________________________________________________________________
99void AliQADataMakerRec::EndOfCycle()
100{
101 // Finishes a cycle of QA for all the tasks
102 EndOfCycle(AliQA::kRAWS) ;
103 EndOfCycle(AliQA::kRECPOINTS) ;
104 EndOfCycle(AliQA::kESDS) ;
105 ResetCycle() ;
106}
107
04236e67 108//____________________________________________________________________________
92a357bf 109void AliQADataMakerRec::EndOfCycle(AliQA::TASKINDEX_t task)
04236e67 110{
930e6e3e 111 // Finishes a cycle of QA
04236e67 112
a2b64fbd 113 TObjArray * list = NULL ;
04236e67 114
115 if ( task == AliQA::kRAWS )
116 list = fRawsQAList ;
117 else if ( task == AliQA::kRECPOINTS )
118 list = fRecPointsQAList ;
119 else if ( task == AliQA::kESDS )
120 list = fESDsQAList ;
7c002d48 121
930e6e3e 122
123 if ( ! list && ! fObject )
124 return ;
125 //DefaultEndOfDetectorCycle(task) ;
0774e4a4 126 EndOfDetectorCycle(task, list) ;
a2b64fbd 127 TDirectory * subDir = NULL ;
7c002d48 128 if (fDetectorDir)
129 subDir = fDetectorDir->GetDirectory(AliQA::GetTaskName(task)) ;
45c5be2d 130 if ( subDir ) {
eecc22a3 131 subDir->cd() ;
6e65319c 132 if (list) {
133 TIter next(list) ;
750730d8 134 TObject * obj ;
135 while( (obj = next()) ) {
136 if (!obj->TestBit(AliQA::GetExpertBit()))
6e65319c 137 obj->Write() ;
6e65319c 138 }
b1af1125 139 if (WriteExpert()) {
140 TDirectory * expertDir = subDir->GetDirectory(AliQA::GetExpert()) ;
141 if ( expertDir ) { // Write only if requested
142 expertDir->cd() ;
143 next.Reset() ;
750730d8 144 while( (obj = next()) ) {
145 if (!obj->TestBit(AliQA::GetExpertBit()))
b1af1125 146 continue ;
750730d8 147 obj->Write() ;
b1af1125 148 }
149 }
6e65319c 150 }
151 }
152 if (fObject && GetName() == AliQA::kCORR) {
153 subDir->cd() ;
a2b64fbd 154 fObject->Write() ;
930e6e3e 155 }
eecc22a3 156 }
04236e67 157}
158
159//____________________________________________________________________________
92a357bf 160void AliQADataMakerRec::Exec(AliQA::TASKINDEX_t task, TObject * data)
04236e67 161{
162 // creates the quality assurance data for the various tasks (Hits, SDigits, Digits, ESDs)
163
164 if ( task == AliQA::kRAWS ) {
165 AliDebug(1, "Processing Raws QA") ;
166 AliRawReader * rawReader = dynamic_cast<AliRawReader *>(data) ;
167 if (rawReader)
168 MakeRaws(rawReader) ;
169 else
930e6e3e 170 AliInfo("Raw data are not processed") ;
04236e67 171 } else if ( task == AliQA::kRECPOINTS ) {
172 AliDebug(1, "Processing RecPoints QA") ;
173 TTree * tree = dynamic_cast<TTree *>(data) ;
174 if (tree) {
175 MakeRecPoints(tree) ;
176 } else {
177 AliWarning("data are not a TTree") ;
178 }
179 } else if ( task == AliQA::kESDS ) {
180 AliDebug(1, "Processing ESDs QA") ;
181 AliESDEvent * esd = dynamic_cast<AliESDEvent *>(data) ;
182 if (esd)
183 MakeESDs(esd) ;
184 else
185 AliError("Wrong type of esd container") ;
186 }
187}
188
189//____________________________________________________________________________
930e6e3e 190TObjArray * AliQADataMakerRec::Init(AliQA::TASKINDEX_t task, Int_t cycles)
04236e67 191{
192 // general intialisation
193
194 TObjArray * rv = NULL ;
195
04236e67 196 if (cycles > 0)
197 SetCycle(cycles) ;
198
199 if ( task == AliQA::kRAWS ) {
63c6f8ae 200 if (! fRawsQAList ) {
201 fRawsQAList = new TObjArray(100) ;
a2b64fbd 202 fRawsQAList->SetName(Form("%s_%s", GetName(), AliQA::GetTaskName(task).Data())) ;
63c6f8ae 203 InitRaws() ;
204 }
04236e67 205 rv = fRawsQAList ;
206 } else if ( task == AliQA::kRECPOINTS ) {
63c6f8ae 207 if ( ! fRecPointsQAList ) {
208 fRecPointsQAList = new TObjArray(100) ;
a2b64fbd 209 fRecPointsQAList->SetName(Form("%s_%s", GetName(), AliQA::GetTaskName(task).Data())) ;
63c6f8ae 210 InitRecPoints() ;
211 }
04236e67 212 rv = fRecPointsQAList ;
213 } else if ( task == AliQA::kESDS ) {
63c6f8ae 214 if ( ! fESDsQAList ) {
a2b64fbd 215 fESDsQAList = new TObjArray(100) ;
216 fESDsQAList->SetName(Form("%s_%s", GetName(), AliQA::GetTaskName(task).Data())) ;
63c6f8ae 217 InitESDs() ;
218 }
04236e67 219 rv = fESDsQAList ;
220 }
221
222 return rv ;
223}
224
225//____________________________________________________________________________
92a357bf 226void AliQADataMakerRec::Init(AliQA::TASKINDEX_t task, TObjArray * list, Int_t run, Int_t cycles)
04236e67 227{
228 // Intialisation by passing the list of QA data booked elsewhere
229
230 fRun = run ;
231 if (cycles > 0)
232 SetCycle(cycles) ;
233
234 if ( task == AliQA::kRAWS ) {
235 fRawsQAList = list ;
236 } else if ( task == AliQA::kRECPOINTS ) {
237 fRecPointsQAList = list ;
238 } else if ( task == AliQA::kESDS ) {
239 fESDsQAList = list ;
240 }
241}
242
243//____________________________________________________________________________
930e6e3e 244void AliQADataMakerRec::StartOfCycle(Int_t run)
245{
246 // Finishes a cycle of QA for all the tasks
247 Bool_t samecycle = kFALSE ;
248 StartOfCycle(AliQA::kRAWS, run, samecycle) ;
249 samecycle = kTRUE ;
250 StartOfCycle(AliQA::kRECPOINTS, run, samecycle) ;
251 StartOfCycle(AliQA::kESDS, run, samecycle) ;
252}
253
254//____________________________________________________________________________
255void AliQADataMakerRec::StartOfCycle(AliQA::TASKINDEX_t task, Int_t run, const Bool_t sameCycle)
04236e67 256{
257 // Finishes a cycle of QA data acquistion
930e6e3e 258 if ( run > 0 )
259 fRun = run ;
04236e67 260 if ( !sameCycle || fCurrentCycle == -1) {
261 ResetCycle() ;
262 if (fOutput)
263 fOutput->Close() ;
930e6e3e 264 fOutput = AliQA::GetQADataFile(GetName(), fRun) ;
04236e67 265 }
7c002d48 266 AliInfo(Form(" Run %d Cycle %d task %s file %s",
04236e67 267 fRun, fCurrentCycle, AliQA::GetTaskName(task).Data(), fOutput->GetName() )) ;
268
269 fDetectorDir = fOutput->GetDirectory(GetDetectorDirName()) ;
270 if (!fDetectorDir)
271 fDetectorDir = fOutput->mkdir(GetDetectorDirName()) ;
272
273 TDirectory * subDir = fDetectorDir->GetDirectory(AliQA::GetTaskName(task)) ;
274 if (!subDir)
275 subDir = fDetectorDir->mkdir(AliQA::GetTaskName(task)) ;
6e65319c 276
277 TDirectory * expertDir = subDir->GetDirectory(AliQA::GetExpert()) ;
278 if (!expertDir)
279 expertDir = subDir->mkdir(AliQA::GetExpert()) ;
280
04236e67 281 subDir->cd() ;
6e65319c 282
04236e67 283
04236e67 284 StartOfDetectorCycle() ;
285}