]> git.uio.no Git - u/mrichter/AliRoot.git/blob - STEER/AliQualAssDataMaker.cxx
ebddb74dcebc6fd1a437c15613403cc719df68f4
[u/mrichter/AliRoot.git] / STEER / AliQualAssDataMaker.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
17 /* $Id$ */
18
19 /*
20   Base Class
21   Produces the data needed to calculate the quality assurance. 
22   All data must be mergeable objects.
23   Y. Schutz CERN July 2007
24 */
25
26 // --- ROOT system ---
27 #include <TSystem.h> 
28 #include <TFile.h>
29 #include <TList.h> 
30 #include <TTree.h>
31
32 // --- Standard library ---
33
34 // --- AliRoot header files ---
35 #include "AliLog.h"
36 #include "AliQualAssDataMaker.h"
37 #include "AliESDEvent.h"
38
39 ClassImp(AliQualAssDataMaker)
40   
41 TString AliQualAssDataMaker::fDetectorDirName("") ;
42
43            
44 //____________________________________________________________________________ 
45 AliQualAssDataMaker::AliQualAssDataMaker(const char * name, const char * title) : 
46   TNamed(name, title), 
47   fOutput(0x0),
48   fDetectorDir(0x0),
49   fDigitsQAList(0x0), 
50   fESDsQAList(0x0), 
51   fHitsQAList(0x0),
52   fRawsQAList(0x0), 
53   fRecPointsQAList(0x0), 
54   fSDigitsQAList(0x0)
55 {
56   // ctor
57   TString tmp(GetName()) ; 
58   tmp.Append("QA") ; 
59   SetName(tmp.Data()) ; 
60   fOutput = AliQualAss::GetQADMOutFile() ;      
61   fDetectorDirName = GetName() ; 
62 }
63
64 //____________________________________________________________________________ 
65 AliQualAssDataMaker::AliQualAssDataMaker(const AliQualAssDataMaker& qadm) :
66   TNamed(qadm.GetName(), qadm.GetTitle()),
67   fOutput(qadm.fOutput),
68   fDetectorDir(qadm.fDetectorDir),
69   fDigitsQAList(qadm.fDigitsQAList),
70   fESDsQAList(qadm.fESDsQAList),
71   fHitsQAList(qadm.fHitsQAList),
72   fRawsQAList(qadm.fRecPointsQAList),
73   fRecPointsQAList(qadm.fRecPointsQAList),
74   fSDigitsQAList(qadm.fSDigitsQAList)
75 {
76   //copy ctor
77   fDetectorDirName = GetName() ; 
78 }
79
80 //__________________________________________________________________
81 AliQualAssDataMaker& AliQualAssDataMaker::operator = (const AliQualAssDataMaker& qadm )
82 {
83   // Equal operator.
84   this->~AliQualAssDataMaker();
85   new(this) AliQualAssDataMaker(qadm);
86   return *this;
87 }
88
89 //____________________________________________________________________________
90 void AliQualAssDataMaker::Exec(AliQualAss::TASKINDEX task, TObject * data) 
91
92   // creates the quality assurance data for the various tasks (Hits, SDigits, Digits, ESDs)
93  
94   fDetectorDir = fOutput->GetDirectory(GetDetectorDirName()) ; 
95   if (!fDetectorDir)
96    fDetectorDir = fOutput->mkdir(GetDetectorDirName()) ; 
97    
98   switch (task) { 
99   
100   case AliQualAss::kRAWS:
101     AliInfo("Processing Raws QA") ; 
102     MakeRaws(data) ;
103     break ; 
104
105   case AliQualAss::kHITS:
106     AliInfo("Processing Hits QA") ; 
107     MakeHits(data) ;
108     break ; 
109
110   case AliQualAss::kSDIGITS:
111     AliInfo("Processing SDigits QA") ; 
112     MakeSDigits(data) ;
113     break ; 
114     
115   case AliQualAss::kDIGITS:
116     MakeDigits(data) ;
117     break ;  
118  
119    case AliQualAss::kRECPOINTS:
120      AliInfo("Processing RecPoints QA") ; 
121      TTree * recpoints = dynamic_cast<TTree *>(data) ; 
122     if (recpoints) 
123       MakeRecPoints(recpoints) ;
124     else 
125       AliError("Wrong type of recpoints container") ; 
126     break ;  
127
128    case AliQualAss::kTRACKSEGMENTS:
129     AliInfo("Processing Track Segments QA: not existing anymore") ; 
130 //     TTree * ts = dynamic_cast<TTree *>(data) ; 
131 //     if (ts) 
132 //       MakeTrackSegments(ts) ;
133 //     else 
134 //       AliError("Wrong type of track segments container") ; 
135     break ;  
136   
137   case AliQualAss::kRECPARTICLES:
138     AliInfo("Processing RecParticles QA: not existing anymore") ; 
139 //     TTree * recpar = dynamic_cast<TTree *>(data) ; 
140 //     if (recpar) 
141 //       MakeRecParticles(recpar) ;
142 //     else 
143 //       AliError("Wrong type of recparticles container") ; 
144     break ;  
145     
146   case AliQualAss::kESDS:
147     AliInfo("Processing ESDs QA") ; 
148     AliESDEvent * esd = dynamic_cast<AliESDEvent *>(data) ; 
149     if (esd) 
150       MakeESDs(esd) ;
151     else 
152       AliError("Wrong type of esd container") ; 
153     break ;  
154   }     
155 }
156
157 //____________________________________________________________________________ 
158 void AliQualAssDataMaker::Finish(AliQualAss::TASKINDEX task) const 
159
160   // write to the output File 
161
162   fDetectorDir->cd() ; 
163   TDirectory * subDir = 0x0 ; 
164   
165 //   switch (task) { 
166 //   case AliQualAss::kHITS:
167   subDir = fDetectorDir->GetDirectory(AliQualAss::GetTaskName(task)) ; 
168 //     break ; 
169
170 //    case AliQualAss::kSDIGITS:
171 //      subDir = fDetectorDir->GetDirectory("SDigits") ; 
172 //     break ; 
173
174 //    case AliQualAss::kDIGITS:
175 //     subDir = fDetectorDir->GetDirectory("Digits") ; 
176 //     break ;  
177  
178 //    case AliQualAss::kRECPOINTS:
179 //     subDir = fDetectorDir->GetDirectory("RecPoints") ; 
180 //     break ;  
181
182 //    case AliQualAss::kTRACKSEGMENTS:
183 //     subDir = fDetectorDir->GetDirectory("TrackSegments") ; 
184 //     break ;  
185   
186 //    case AliQualAss::kRECPARTICLES:
187 //     subDir = fDetectorDir->GetDirectory("RecParticles") ; 
188 //      break ;  
189      
190 //   case AliQualAss::kESDS:
191 //     subDir = fDetectorDir->GetDirectory("ESDs") ; 
192 //     break ;  
193 //   }  
194   subDir->Write() ; 
195
196
197 //____________________________________________________________________________ 
198 TList *  AliQualAssDataMaker::Init(AliQualAss::TASKINDEX task)
199 {
200   // general intialisation
201   TDirectory * subDir = 0x0 ; 
202   
203   switch (task) { 
204   case AliQualAss::kRAWS: 
205     subDir = fDetectorDir->GetDirectory("Raws") ; 
206         if (!subDir)
207       subDir = fDetectorDir->mkdir("Raws") ; 
208         subDir->cd() ; 
209         fRawsQAList = new TList() ;      
210     InitRaws() ;
211         return fRawsQAList ;
212     break ; 
213
214   case AliQualAss::kHITS: 
215     subDir = fDetectorDir->GetDirectory("Hits") ; 
216         if (!subDir)
217       subDir = fDetectorDir->mkdir("Hits") ; 
218         subDir->cd() ; 
219         fHitsQAList = new TList() ;      
220     InitHits() ;
221         return fHitsQAList ;
222     break ; 
223   
224   case AliQualAss::kSDIGITS: 
225         subDir = fDetectorDir->GetDirectory("SDigits") ; 
226         if (!subDir)
227                 subDir = fDetectorDir->mkdir("SDigits") ; 
228         subDir->cd() ; 
229         fSDigitsQAList = new TList() ; 
230     InitSDigits() ;
231         return fSDigitsQAList ;
232     break ; 
233
234   case AliQualAss::kDIGITS: 
235         subDir = fDetectorDir->GetDirectory("Digits") ; 
236         if (!subDir)
237                 subDir = fDetectorDir->mkdir("Digits") ; 
238         subDir->cd() ;
239         fDigitsQAList = new TList(); 
240         InitDigits() ;
241         return fDigitsQAList ;
242         break ; 
243           
244   case AliQualAss::kRECPOINTS: 
245         subDir = fDetectorDir->GetDirectory("RecPoints") ; 
246         if(!subDir)
247                 subDir = fDetectorDir->mkdir("RecPoints") ; 
248         subDir->cd() ; 
249         fRecPointsQAList = new TList ; 
250     InitRecPoints() ;
251         return fRecPointsQAList ;
252     break ; 
253
254   case AliQualAss::kTRACKSEGMENTS: 
255 //      subDir = fDetectorDir->GetDirectory("TrackSegments") ; 
256 //      if (!subDir)
257 //              subDir = fDetectorDir->mkdir("TrackSegments") ; 
258 //      subDir->cd() ; 
259 //  InitTrackSegments() ;
260     break ; 
261     
262   case AliQualAss::kRECPARTICLES: 
263 //      subDir = fDetectorDir->GetDirectory("RecParticles") ; 
264 //      if (!subDir)
265 //              subDir = fDetectorDir->mkdir("RecParticles") ; 
266 //      subDir->cd() ; 
267 //    InitRecParticles() ;
268     break ; 
269     
270   case AliQualAss::kESDS: 
271         subDir = fDetectorDir->GetDirectory("ESDs") ; 
272         if (!subDir) 
273                 subDir = fDetectorDir->mkdir("ESDs") ;
274         subDir->cd() ; 
275         fESDsQAList = new TList() ; 
276         InitESDs() ;
277         return fRecPointsQAList ;
278     break ; 
279   }  
280   return 0x0 ; 
281 }