1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
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 **************************************************************************/
21 Produces the data needed to calculate the quality assurance.
22 All data must be mergeable objects.
23 Y. Schutz CERN July 2007
26 // --- ROOT system ---
32 // --- Standard library ---
34 // --- AliRoot header files ---
36 #include "AliQualAssDataMaker.h"
37 #include "AliESDEvent.h"
39 ClassImp(AliQualAssDataMaker)
41 TString AliQualAssDataMaker::fDetectorDirName("") ;
44 //____________________________________________________________________________
45 AliQualAssDataMaker::AliQualAssDataMaker(const char * name, const char * title) :
53 fRecPointsQAList(0x0),
61 TString tmp(GetName()) ;
64 fDetectorDirName = GetName() ;
67 //____________________________________________________________________________
68 AliQualAssDataMaker::AliQualAssDataMaker(const AliQualAssDataMaker& qadm) :
69 TNamed(qadm.GetName(), qadm.GetTitle()),
70 fOutput(qadm.fOutput),
71 fDetectorDir(qadm.fDetectorDir),
72 fDigitsQAList(qadm.fDigitsQAList),
73 fESDsQAList(qadm.fESDsQAList),
74 fHitsQAList(qadm.fHitsQAList),
75 fRawsQAList(qadm.fRecPointsQAList),
76 fRecPointsQAList(qadm.fRecPointsQAList),
77 fSDigitsQAList(qadm.fSDigitsQAList),
78 fCurrentCycle(qadm.fCurrentCycle),
80 fCycleCounter(qadm.fCycleCounter),
84 fDetectorDirName = GetName() ;
87 //__________________________________________________________________
88 AliQualAssDataMaker& AliQualAssDataMaker::operator = (const AliQualAssDataMaker& qadm )
91 this->~AliQualAssDataMaker();
92 new(this) AliQualAssDataMaker(qadm);
96 //____________________________________________________________________________
97 void AliQualAssDataMaker::EndOfCycle(AliQualAss::TASKINDEX task)
99 // Finishes a cycle of QA data acquistion
101 EndOfDetectorCycle() ;
102 TDirectory * subDir = fDetectorDir->GetDirectory(AliQualAss::GetTaskName(task)) ;
106 case AliQualAss::kRAWS:
108 fRawsQAList->Write() ;
111 case AliQualAss::kHITS:
113 fHitsQAList->Write() ;
116 case AliQualAss::kSDIGITS:
118 fSDigitsQAList->Write() ;
121 case AliQualAss::kDIGITS:
123 fDigitsQAList->Write() ;
126 case AliQualAss::kRECPOINTS:
128 fRecPointsQAList->Write() ;
131 case AliQualAss::kTRACKSEGMENTS:
134 case AliQualAss::kRECPARTICLES:
137 case AliQualAss::kESDS:
139 fESDsQAList->Write() ;
144 //____________________________________________________________________________
145 void AliQualAssDataMaker::Exec(AliQualAss::TASKINDEX task, TObject * data)
147 // creates the quality assurance data for the various tasks (Hits, SDigits, Digits, ESDs)
151 case AliQualAss::kRAWS:
152 AliInfo("Processing Raws QA") ;
156 case AliQualAss::kHITS:
157 AliInfo("Processing Hits QA") ;
161 case AliQualAss::kSDIGITS:
162 AliInfo("Processing SDigits QA") ;
166 case AliQualAss::kDIGITS:
170 case AliQualAss::kRECPOINTS:
172 AliInfo("Processing RecPoints QA") ;
173 TTree * recpoints = dynamic_cast<TTree *>(data) ;
175 MakeRecPoints(recpoints) ;
177 AliError("Wrong type of recpoints container") ;
180 case AliQualAss::kTRACKSEGMENTS:
181 AliInfo("Processing Track Segments QA: not existing anymore") ;
182 // TTree * ts = dynamic_cast<TTree *>(data) ;
184 // MakeTrackSegments(ts) ;
186 // AliError("Wrong type of track segments container") ;
189 case AliQualAss::kRECPARTICLES:
190 AliInfo("Processing RecParticles QA: not existing anymore") ;
191 // TTree * recpar = dynamic_cast<TTree *>(data) ;
193 // MakeRecParticles(recpar) ;
195 // AliError("Wrong type of recparticles container") ;
198 case AliQualAss::kESDS:
200 AliInfo("Processing ESDs QA") ;
201 AliESDEvent * esd = dynamic_cast<AliESDEvent *>(data) ;
205 AliError("Wrong type of esd container") ;
211 //____________________________________________________________________________
212 void AliQualAssDataMaker::Finish(AliQualAss::TASKINDEX) const
214 // write to the output File
217 //____________________________________________________________________________
218 TList * AliQualAssDataMaker::Init(AliQualAss::TASKINDEX task, Int_t run, Int_t cycles)
220 // general intialisation
227 case AliQualAss::kRAWS:
229 fRawsQAList = new TList() ;
234 case AliQualAss::kHITS:
236 fHitsQAList = new TList() ;
241 case AliQualAss::kSDIGITS:
243 fSDigitsQAList = new TList() ;
245 return fSDigitsQAList ;
248 case AliQualAss::kDIGITS:
250 fDigitsQAList = new TList();
252 return fDigitsQAList ;
255 case AliQualAss::kRECPOINTS:
257 fRecPointsQAList = new TList ;
259 return fRecPointsQAList ;
262 case AliQualAss::kTRACKSEGMENTS:
263 // InitTrackSegments() ;
266 case AliQualAss::kRECPARTICLES:
267 // InitRecParticles() ;
270 case AliQualAss::kESDS:
272 fESDsQAList = new TList() ;
274 return fRecPointsQAList ;
281 //____________________________________________________________________________
282 void AliQualAssDataMaker::StartOfCycle(AliQualAss::TASKINDEX task, Option_t * sameCycle)
284 // Finishes a cycle of QA data acquistion
286 if ( (strcmp(sameCycle, "same") != 0) ) {
289 } else if ( !(strcmp(sameCycle, "") != 0) )
290 AliFatal(Form("%s is an invalid option, valid options are: same", sameCycle)) ;
292 fOutput = AliQualAss::GetQADMOutFile(fRun, fCurrentCycle) ;
294 AliInfo(Form(" Run %d Cycle %d task %s file %s",
295 fRun, fCurrentCycle, AliQualAss::GetTaskName(task).Data(), fOutput->GetName() )) ;
297 fDetectorDir = fOutput->GetDirectory(GetDetectorDirName()) ;
299 fDetectorDir = fOutput->mkdir(GetDetectorDirName()) ;
301 TDirectory * subDir = fDetectorDir->GetDirectory(AliQualAss::GetTaskName(task)) ;
303 subDir = fDetectorDir->mkdir(AliQualAss::GetTaskName(task)) ;
309 case AliQualAss::kRAWS:
313 case AliQualAss::kHITS:
317 case AliQualAss::kSDIGITS:
318 list = fSDigitsQAList ;
321 case AliQualAss::kDIGITS:
322 list = fDigitsQAList ;
325 case AliQualAss::kRECPOINTS:
326 list = fRecPointsQAList ;
329 case AliQualAss::kTRACKSEGMENTS:
332 case AliQualAss::kRECPARTICLES:
335 case AliQualAss::kESDS:
342 while ( (h = dynamic_cast<TH1 *>(next())) )
345 StartOfDetectorCycle() ;