]> git.uio.no Git - u/mrichter/AliRoot.git/blob - STEER/AliQualAssDataMaker.cxx
Updated QA classes (Yves)
[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
30 // --- Standard library ---
31
32 // --- AliRoot header files ---
33 #include "AliLog.h"
34 #include "AliQualAssDataMaker.h"
35
36 ClassImp(AliQualAssDataMaker)
37   
38 TString AliQualAssDataMaker::fDetectorDirName("") ;
39
40            
41 //____________________________________________________________________________ 
42 AliQualAssDataMaker::AliQualAssDataMaker(const char * name, const char * title) : 
43   TNamed(name, title), 
44   fOutput(0x0),
45   fDetectorDir(0x0), 
46   fData(0x0)
47 {
48   // ctor
49   TString tmp(GetName()) ; 
50   tmp.Append("QA") ; 
51   SetName(tmp.Data()) ; 
52   fOutput = AliQualAss::GetQADMOutFile() ;      
53   fDetectorDirName = GetName() ; 
54 }
55
56 //____________________________________________________________________________ 
57 AliQualAssDataMaker::AliQualAssDataMaker(const AliQualAssDataMaker& qadm) :
58   TNamed(qadm.GetName(), qadm.GetTitle()),
59   fOutput(qadm.fOutput),
60   fDetectorDir(qadm.fDetectorDir),
61   fData(qadm.fData)
62 {
63   //copy ctor
64   fDetectorDirName = GetName() ; 
65 }
66
67 //__________________________________________________________________
68 AliQualAssDataMaker& AliQualAssDataMaker::operator = (const AliQualAssDataMaker& qadm )
69 {
70   // Equal operator.
71   this->~AliQualAssDataMaker();
72   new(this) AliQualAssDataMaker(qadm);
73   return *this;
74 }
75
76 //____________________________________________________________________________
77 void AliQualAssDataMaker::Exec(AliQualAss::TASKINDEX task) 
78
79   // creates the quality assurance data for the various tasks (Hits, SDigits, Digits, ESDs)
80  
81   fDetectorDir = fOutput->GetDirectory(GetDetectorDirName()) ; 
82   if (!fDetectorDir)
83    fDetectorDir = fOutput->mkdir(GetDetectorDirName()) ; 
84    
85   switch (task) { 
86   case AliQualAss::kHITS:
87     AliInfo("Processing Hits QA") ; 
88     MakeHits() ;
89     break ; 
90
91    case AliQualAss::kSDIGITS:
92     AliInfo("Processing SDigits QA") ; 
93         MakeSDigits() ;
94     break ; 
95
96    case AliQualAss::kDIGITS:
97     AliInfo("Processing Digits QA") ; 
98     MakeDigits() ;
99     break ;  
100  
101    case AliQualAss::kRECPOINTS:
102     AliInfo("Processing RecPoints QA") ; 
103     MakeRecPoints() ;
104     break ;  
105
106    case AliQualAss::kTRACKSEGMENTS:
107     AliInfo("Processing Track Segments QA") ; 
108     MakeTrackSegments() ;
109     break ;  
110   
111    case AliQualAss::kRECPARTICLES:
112         AliInfo("Processing RecParticles QA") ; 
113         MakeRecParticles() ;
114         break ;  
115      
116   case AliQualAss::kESDS:
117     AliInfo("Processing ESDs QA") ; 
118     MakeESDs() ;
119     break ;  
120   }     
121 }
122
123 //____________________________________________________________________________ 
124 void AliQualAssDataMaker::Finish(AliQualAss::TASKINDEX task) const 
125
126   // write to the output File 
127
128   fDetectorDir->cd() ; 
129   TDirectory * subDir = 0x0 ; 
130   
131 //   switch (task) { 
132 //   case AliQualAss::kHITS:
133   subDir = fDetectorDir->GetDirectory(AliQualAss::GetTaskName(task)) ; 
134 //     break ; 
135
136 //    case AliQualAss::kSDIGITS:
137 //      subDir = fDetectorDir->GetDirectory("SDigits") ; 
138 //     break ; 
139
140 //    case AliQualAss::kDIGITS:
141 //     subDir = fDetectorDir->GetDirectory("Digits") ; 
142 //     break ;  
143  
144 //    case AliQualAss::kRECPOINTS:
145 //     subDir = fDetectorDir->GetDirectory("RecPoints") ; 
146 //     break ;  
147
148 //    case AliQualAss::kTRACKSEGMENTS:
149 //     subDir = fDetectorDir->GetDirectory("TrackSegments") ; 
150 //     break ;  
151   
152 //    case AliQualAss::kRECPARTICLES:
153 //     subDir = fDetectorDir->GetDirectory("RecParticles") ; 
154 //      break ;  
155      
156 //   case AliQualAss::kESDS:
157 //     subDir = fDetectorDir->GetDirectory("ESDs") ; 
158 //     break ;  
159 //   }  
160   subDir->Write() ; 
161
162
163 //____________________________________________________________________________ 
164 void AliQualAssDataMaker::Init(AliQualAss::TASKINDEX task)
165 {
166   // general intialisation
167   
168   TDirectory * subDir = 0x0 ; 
169   
170   switch (task) { 
171   case AliQualAss::kHITS: 
172     subDir = fDetectorDir->GetDirectory("Hits") ; 
173         if (!subDir)
174       subDir = fDetectorDir->mkdir("Hits") ; 
175         subDir->cd() ; 
176     InitHits() ;
177     break ; 
178   
179   case AliQualAss::kSDIGITS: 
180         subDir = fDetectorDir->GetDirectory("SDigits") ; 
181         if (!subDir)
182                 subDir = fDetectorDir->mkdir("SDigits") ; 
183         subDir->cd() ; 
184     InitSDigits() ;
185     break ; 
186
187   case AliQualAss::kDIGITS: 
188         subDir = fDetectorDir->GetDirectory("Digits") ; 
189         if (!subDir)
190                 subDir = fDetectorDir->mkdir("Digits") ; 
191         subDir->cd() ; 
192         InitDigits() ;
193         break ; 
194           
195   case AliQualAss::kRECPOINTS: 
196         subDir = fDetectorDir->GetDirectory("RecPoints") ; 
197         if(!subDir)
198                 subDir = fDetectorDir->mkdir("RecPoints") ; 
199         subDir->cd() ; 
200     InitRecPoints() ;
201     break ; 
202
203   case AliQualAss::kTRACKSEGMENTS: 
204         subDir = fDetectorDir->GetDirectory("TrackSegments") ; 
205         if (!subDir)
206                 subDir = fDetectorDir->mkdir("TrackSegments") ; 
207         subDir->cd() ; 
208     InitTrackSegments() ;
209     break ; 
210     
211   case AliQualAss::kRECPARTICLES: 
212         subDir = fDetectorDir->GetDirectory("RecParticles") ; 
213         if (!subDir)
214                 subDir = fDetectorDir->mkdir("RecParticles") ; 
215         subDir->cd() ; 
216     InitRecParticles() ;
217     break ; 
218     
219   case AliQualAss::kESDS: 
220         subDir = fDetectorDir->GetDirectory("ESDs") ; 
221         if (!subDir) 
222                 subDir = fDetectorDir->mkdir("ESDs") ;
223         subDir->cd() ; 
224     InitESDs() ;
225     break ; 
226   }  
227 }