#include <TFile.h>
#include <TTree.h>
#include <TClonesArray.h>
#include "AliLog.h"
#include "AliQADataMakerSim.h"
ClassImp(AliQADataMakerSim)
AliQADataMakerSim::AliQADataMakerSim(const char * name, const char * title) :
AliQADataMaker(name, title),
fDigitsQAList(NULL),
fHitsQAList(NULL),
fSDigitsQAList(NULL),
fHitsArray(NULL),
fSDigitsArray(NULL)
{
fDetectorDirName = GetName() ;
}
AliQADataMakerSim::AliQADataMakerSim(const AliQADataMakerSim& qadm) :
AliQADataMaker(qadm.GetName(), qadm.GetTitle()),
fDigitsQAList(qadm.fDigitsQAList),
fHitsQAList(qadm.fHitsQAList),
fSDigitsQAList(qadm.fSDigitsQAList),
fHitsArray(NULL),
fSDigitsArray(NULL)
{
fDetectorDirName = GetName() ;
}
AliQADataMakerSim::~AliQADataMakerSim()
{
if ( fDigitsQAList ) {
for (Int_t specie = 0 ; specie < AliRecoParam::kNSpecies ; specie++) {
fDigitsQAList[specie]->Delete() ;
}
delete[] fDigitsQAList ;
}
if ( fHitsQAList ) {
for (Int_t specie = 0 ; specie < AliRecoParam::kNSpecies ; specie++) {
fHitsQAList[specie]->Delete() ;
}
delete[] fHitsQAList ;
}
if ( fSDigitsQAList ) {
for (Int_t specie = 0 ; specie < AliRecoParam::kNSpecies ; specie++) {
fSDigitsQAList[specie]->Delete() ;
}
delete[] fSDigitsQAList ;
}
if (fHitsArray) {
fHitsArray->Clear() ;
delete fHitsArray ;
}
if (fSDigitsArray) {
fSDigitsArray->Clear() ;
delete fSDigitsArray ;
}
}
AliQADataMakerSim& AliQADataMakerSim::operator = (const AliQADataMakerSim& qadm )
{
this->~AliQADataMakerSim();
new(this) AliQADataMakerSim(qadm);
return *this;
}
void AliQADataMakerSim::EndOfCycle()
{
EndOfCycle(AliQAv1::kHITS) ;
EndOfCycle(AliQAv1::kSDIGITS) ;
EndOfCycle(AliQAv1::kDIGITS) ;
ResetCycle() ;
}
void AliQADataMakerSim::EndOfCycle(AliQAv1::TASKINDEX_t task)
{
TObjArray ** list = NULL ;
if ( task == AliQAv1::kHITS )
list = fHitsQAList ;
else if ( task == AliQAv1::kSDIGITS )
list = fSDigitsQAList ;
else if ( task == AliQAv1::kDIGITS )
list = fDigitsQAList ;
if ( ! list )
return ;
EndOfDetectorCycle(task, list) ;
fDetectorDir = fOutput->GetDirectory(GetDetectorDirName()) ;
if (!fDetectorDir)
fDetectorDir = fOutput->mkdir(GetDetectorDirName()) ;
TDirectory * subDir = fDetectorDir->GetDirectory(AliQAv1::GetTaskName(task)) ;
if (!subDir)
subDir = fDetectorDir->mkdir(AliQAv1::GetTaskName(task)) ;
subDir->cd() ;
for (Int_t specie = 0 ; specie < AliRecoParam::kNSpecies ; specie++) {
if (! AliQAv1::Instance(AliQAv1::GetDetIndex(GetName()))->IsEventSpecieSet(AliRecoParam::ConvertIndex(specie)) )
continue ;
if (list[specie]->GetEntries() != 0 ) {
TDirectory * eventSpecieDir = subDir->GetDirectory(AliRecoParam::GetEventSpecieName(specie)) ;
if (!eventSpecieDir)
eventSpecieDir = subDir->mkdir(AliRecoParam::GetEventSpecieName(specie)) ;
eventSpecieDir->cd() ;
TIter next(list[specie]) ;
TObject * obj ;
while ( (obj = next()) ) {
if (!obj->TestBit(AliQAv1::GetExpertBit()))
obj->Write() ;
}
if (WriteExpert()) {
TDirectory * expertDir = eventSpecieDir->GetDirectory(AliQAv1::GetExpert()) ;
if (!expertDir)
expertDir = eventSpecieDir->mkdir(AliQAv1::GetExpert()) ;
expertDir->cd() ;
next.Reset() ;
while ( (obj = next()) ) {
if (!obj->TestBit(AliQAv1::GetExpertBit()))
continue ;
obj->Write() ;
}
}
}
fOutput->Save() ;
}
}
void AliQADataMakerSim::Exec(AliQAv1::TASKINDEX_t task, TObject * data)
{
if ( task == AliQAv1::kHITS ) {
AliDebug(AliQAv1::GetQADebugLevel(), "Processing Hits QA") ;
if (strcmp(data->ClassName(), "TClonesArray") == 0) {
fHitsArray = static_cast<TClonesArray *>(data) ;
MakeHits() ;
} else if (strcmp(data->ClassName(), "TTree") == 0) {
TTree * tree = static_cast<TTree *>(data) ;
MakeHits(tree) ;
} else {
AliWarning("data are neither a TClonesArray nor a TTree") ;
}
} else if ( task == AliQAv1::kSDIGITS ) {
AliDebug(AliQAv1::GetQADebugLevel(), "Processing SDigits QA") ;
if (strcmp(data->ClassName(), "TClonesArray") == 0) {
fSDigitsArray = static_cast<TClonesArray *>(data) ;
MakeSDigits() ;
} else if (strcmp(data->ClassName(), "TTree") == 0) {
TTree * tree = static_cast<TTree *>(data) ;
MakeSDigits(tree) ;
} else {
AliWarning("data are neither a TClonesArray nor a TTree") ;
}
} else if ( task == AliQAv1::kDIGITS ) {
AliDebug(AliQAv1::GetQADebugLevel(), "Processing Digits QA") ;
if (strcmp(data->ClassName(), "TClonesArray") == 0) {
fDigitsArray = static_cast<TClonesArray *>(data) ;
MakeDigits() ;
} else if (strcmp(data->ClassName(), "TTree") == 0) {
TTree * tree = static_cast<TTree *>(data) ;
MakeDigits(tree) ;
} else {
AliWarning("data are neither a TClonesArray nor a TTree") ;
}
}
}
TObjArray ** AliQADataMakerSim::Init(AliQAv1::TASKINDEX_t task, Int_t cycles)
{
if (cycles > 0)
SetCycle(cycles) ;
TObjArray ** rv = NULL ;
if ( task == AliQAv1::kHITS ) {
if ( ! fHitsQAList ) {
fHitsQAList = new TObjArray *[AliRecoParam::kNSpecies] ;
for (Int_t specie = 0 ; specie < AliRecoParam::kNSpecies ; specie++) {
fHitsQAList[specie] = new TObjArray(AliQAv1::GetMaxQAObj()) ;
fHitsQAList[specie]->SetName(Form("%s_%s_%s", GetName(), AliQAv1::GetTaskName(task).Data(), AliRecoParam::GetEventSpecieName(specie))) ;
}
}
rv = fHitsQAList ;
} else if ( task == AliQAv1::kSDIGITS ) {
if ( ! fSDigitsQAList ) {
fSDigitsQAList = new TObjArray *[AliRecoParam::kNSpecies] ;
for (Int_t specie = 0 ; specie < AliRecoParam::kNSpecies ; specie++) {
fSDigitsQAList[specie] = new TObjArray(AliQAv1::GetMaxQAObj()) ;
fSDigitsQAList[specie]->SetName(Form("%s_%s_%s", GetName(), AliQAv1::GetTaskName(task).Data(), AliRecoParam::GetEventSpecieName(specie))) ;
}
}
rv = fSDigitsQAList ;
} else if ( task == AliQAv1::kDIGITS ) {
if ( ! fDigitsQAList ) {
fDigitsQAList = new TObjArray *[AliRecoParam::kNSpecies] ;
for (Int_t specie = 0 ; specie < AliRecoParam::kNSpecies ; specie++) {
fDigitsQAList[specie] = new TObjArray(AliQAv1::GetMaxQAObj()) ;
fDigitsQAList[specie]->SetName(Form("%s_%s_%s", GetName(), AliQAv1::GetTaskName(task).Data(), AliRecoParam::GetEventSpecieName(specie))) ;
}
}
rv = fDigitsQAList ;
}
return rv ;
}
void AliQADataMakerSim::Init(AliQAv1::TASKINDEX_t task, TObjArray ** list, Int_t run, Int_t cycles)
{
fRun = run ;
if (cycles > 0)
SetCycle(cycles) ;
if ( task == AliQAv1::kHITS ) {
fHitsQAList = list ;
} else if ( task == AliQAv1::kSDIGITS) {
fSDigitsQAList = list ;
} else if ( task == AliQAv1::kDIGITS ) {
fDigitsQAList = list ;
}
}
void AliQADataMakerSim::ResetDetector(AliQAv1::TASKINDEX_t task)
{
TObjArray ** list = NULL ;
if ( task == AliQAv1::kHITS ) {
list = fHitsQAList ;
} else if ( task == AliQAv1::kSDIGITS ) {
list = fSDigitsQAList ;
} else if ( task == AliQAv1::kDIGITS ) {
list = fDigitsQAList ;
}
if (!list)
return ;
for (int spec = 0; spec < AliRecoParam::kNSpecies; spec++) {
if (!AliQAv1::Instance()->IsEventSpecieSet(AliRecoParam::ConvertIndex(spec)))
continue;
TIter next(list[spec]) ;
TH1 * histo = NULL ;
while ( (histo = dynamic_cast<TH1*> (next())) ) {
histo->Reset() ;
}
}
}
void AliQADataMakerSim::StartOfCycle(Int_t run)
{
Bool_t samecycle = kFALSE ;
StartOfCycle(AliQAv1::kHITS, run, samecycle) ;
samecycle = kTRUE ;
StartOfCycle(AliQAv1::kSDIGITS, run, samecycle) ;
StartOfCycle(AliQAv1::kDIGITS, run, samecycle) ;
}
void AliQADataMakerSim::StartOfCycle(AliQAv1::TASKINDEX_t task, Int_t run, const Bool_t sameCycle)
{
if ( run > 0 )
fRun = run ;
if ( !sameCycle || fCurrentCycle == -1) {
ResetCycle() ;
if (fOutput)
fOutput->Close() ;
fOutput = AliQAv1::GetQADataFile(GetName(), fRun) ;
}
AliDebug(AliQAv1::GetQADebugLevel(), Form(" Run %d Cycle %d task %s file %s",
fRun, fCurrentCycle, AliQAv1::GetTaskName(task).Data(), fOutput->GetName() )) ;
StartOfDetectorCycle() ;
}
void AliQADataMakerSim::ClonePerTrigClass(AliQAv1::TASKINDEX_t task)
{
switch (task)
{
case AliQAv1::kHITS : ClonePerTrigClassL(fHitsQAList, task); break;
case AliQAv1::kSDIGITS : ClonePerTrigClassL(fSDigitsQAList, task); break;
case AliQAv1::kDIGITS : ClonePerTrigClassL(fDigitsQAList, task); break;
default : AliError(Form("Task %s is invalid in this context", AliQAv1::GetTaskName(task).Data() )); break;
}
}
AliQADataMakerSim.cxx:100 AliQADataMakerSim.cxx:101 AliQADataMakerSim.cxx:102 AliQADataMakerSim.cxx:103 AliQADataMakerSim.cxx:104 AliQADataMakerSim.cxx:105 AliQADataMakerSim.cxx:106 AliQADataMakerSim.cxx:107 AliQADataMakerSim.cxx:108 AliQADataMakerSim.cxx:109 AliQADataMakerSim.cxx:110 AliQADataMakerSim.cxx:111 AliQADataMakerSim.cxx:112 AliQADataMakerSim.cxx:113 AliQADataMakerSim.cxx:114 AliQADataMakerSim.cxx:115 AliQADataMakerSim.cxx:116 AliQADataMakerSim.cxx:117 AliQADataMakerSim.cxx:118 AliQADataMakerSim.cxx:119 AliQADataMakerSim.cxx:120 AliQADataMakerSim.cxx:121 AliQADataMakerSim.cxx:122 AliQADataMakerSim.cxx:123 AliQADataMakerSim.cxx:124 AliQADataMakerSim.cxx:125 AliQADataMakerSim.cxx:126 AliQADataMakerSim.cxx:127 AliQADataMakerSim.cxx:128 AliQADataMakerSim.cxx:129 AliQADataMakerSim.cxx:130 AliQADataMakerSim.cxx:131 AliQADataMakerSim.cxx:132 AliQADataMakerSim.cxx:133 AliQADataMakerSim.cxx:134 AliQADataMakerSim.cxx:135 AliQADataMakerSim.cxx:136 AliQADataMakerSim.cxx:137 AliQADataMakerSim.cxx:138 AliQADataMakerSim.cxx:139 AliQADataMakerSim.cxx:140 AliQADataMakerSim.cxx:141 AliQADataMakerSim.cxx:142 AliQADataMakerSim.cxx:143 AliQADataMakerSim.cxx:144 AliQADataMakerSim.cxx:145 AliQADataMakerSim.cxx:146 AliQADataMakerSim.cxx:147 AliQADataMakerSim.cxx:148 AliQADataMakerSim.cxx:149 AliQADataMakerSim.cxx:150 AliQADataMakerSim.cxx:151 AliQADataMakerSim.cxx:152 AliQADataMakerSim.cxx:153 AliQADataMakerSim.cxx:154 AliQADataMakerSim.cxx:155 AliQADataMakerSim.cxx:156 AliQADataMakerSim.cxx:157 AliQADataMakerSim.cxx:158 AliQADataMakerSim.cxx:159 AliQADataMakerSim.cxx:160 AliQADataMakerSim.cxx:161 AliQADataMakerSim.cxx:162 AliQADataMakerSim.cxx:163 AliQADataMakerSim.cxx:164 AliQADataMakerSim.cxx:165 AliQADataMakerSim.cxx:166 AliQADataMakerSim.cxx:167 AliQADataMakerSim.cxx:168 AliQADataMakerSim.cxx:169 AliQADataMakerSim.cxx:170 AliQADataMakerSim.cxx:171 AliQADataMakerSim.cxx:172 AliQADataMakerSim.cxx:173 AliQADataMakerSim.cxx:174 AliQADataMakerSim.cxx:175 AliQADataMakerSim.cxx:176 AliQADataMakerSim.cxx:177 AliQADataMakerSim.cxx:178 AliQADataMakerSim.cxx:179 AliQADataMakerSim.cxx:180 AliQADataMakerSim.cxx:181 AliQADataMakerSim.cxx:182 AliQADataMakerSim.cxx:183 AliQADataMakerSim.cxx:184 AliQADataMakerSim.cxx:185 AliQADataMakerSim.cxx:186 AliQADataMakerSim.cxx:187 AliQADataMakerSim.cxx:188 AliQADataMakerSim.cxx:189 AliQADataMakerSim.cxx:190 AliQADataMakerSim.cxx:191 AliQADataMakerSim.cxx:192 AliQADataMakerSim.cxx:193 AliQADataMakerSim.cxx:194 AliQADataMakerSim.cxx:195 AliQADataMakerSim.cxx:196 AliQADataMakerSim.cxx:197 AliQADataMakerSim.cxx:198 AliQADataMakerSim.cxx:199 AliQADataMakerSim.cxx:200 AliQADataMakerSim.cxx:201 AliQADataMakerSim.cxx:202 AliQADataMakerSim.cxx:203 AliQADataMakerSim.cxx:204 AliQADataMakerSim.cxx:205 AliQADataMakerSim.cxx:206 AliQADataMakerSim.cxx:207 AliQADataMakerSim.cxx:208 AliQADataMakerSim.cxx:209 AliQADataMakerSim.cxx:210 AliQADataMakerSim.cxx:211 AliQADataMakerSim.cxx:212 AliQADataMakerSim.cxx:213 AliQADataMakerSim.cxx:214 AliQADataMakerSim.cxx:215 AliQADataMakerSim.cxx:216 AliQADataMakerSim.cxx:217 AliQADataMakerSim.cxx:218 AliQADataMakerSim.cxx:219 AliQADataMakerSim.cxx:220 AliQADataMakerSim.cxx:221 AliQADataMakerSim.cxx:222 AliQADataMakerSim.cxx:223 AliQADataMakerSim.cxx:224 AliQADataMakerSim.cxx:225 AliQADataMakerSim.cxx:226 AliQADataMakerSim.cxx:227 AliQADataMakerSim.cxx:228 AliQADataMakerSim.cxx:229 AliQADataMakerSim.cxx:230 AliQADataMakerSim.cxx:231 AliQADataMakerSim.cxx:232 AliQADataMakerSim.cxx:233 AliQADataMakerSim.cxx:234 AliQADataMakerSim.cxx:235 AliQADataMakerSim.cxx:236 AliQADataMakerSim.cxx:237 AliQADataMakerSim.cxx:238 AliQADataMakerSim.cxx:239 AliQADataMakerSim.cxx:240 AliQADataMakerSim.cxx:241 AliQADataMakerSim.cxx:242 AliQADataMakerSim.cxx:243 AliQADataMakerSim.cxx:244 AliQADataMakerSim.cxx:245 AliQADataMakerSim.cxx:246 AliQADataMakerSim.cxx:247 AliQADataMakerSim.cxx:248 AliQADataMakerSim.cxx:249 AliQADataMakerSim.cxx:250 AliQADataMakerSim.cxx:251 AliQADataMakerSim.cxx:252 AliQADataMakerSim.cxx:253 AliQADataMakerSim.cxx:254 AliQADataMakerSim.cxx:255 AliQADataMakerSim.cxx:256 AliQADataMakerSim.cxx:257 AliQADataMakerSim.cxx:258 AliQADataMakerSim.cxx:259 AliQADataMakerSim.cxx:260 AliQADataMakerSim.cxx:261 AliQADataMakerSim.cxx:262 AliQADataMakerSim.cxx:263 AliQADataMakerSim.cxx:264 AliQADataMakerSim.cxx:265 AliQADataMakerSim.cxx:266 AliQADataMakerSim.cxx:267 AliQADataMakerSim.cxx:268 AliQADataMakerSim.cxx:269 AliQADataMakerSim.cxx:270 AliQADataMakerSim.cxx:271 AliQADataMakerSim.cxx:272 AliQADataMakerSim.cxx:273 AliQADataMakerSim.cxx:274 AliQADataMakerSim.cxx:275 AliQADataMakerSim.cxx:276 AliQADataMakerSim.cxx:277 AliQADataMakerSim.cxx:278 AliQADataMakerSim.cxx:279 AliQADataMakerSim.cxx:280 AliQADataMakerSim.cxx:281 AliQADataMakerSim.cxx:282 AliQADataMakerSim.cxx:283 AliQADataMakerSim.cxx:284 AliQADataMakerSim.cxx:285 AliQADataMakerSim.cxx:286 AliQADataMakerSim.cxx:287 AliQADataMakerSim.cxx:288 AliQADataMakerSim.cxx:289 AliQADataMakerSim.cxx:290 AliQADataMakerSim.cxx:291 AliQADataMakerSim.cxx:292 AliQADataMakerSim.cxx:293 AliQADataMakerSim.cxx:294 AliQADataMakerSim.cxx:295 AliQADataMakerSim.cxx:296 AliQADataMakerSim.cxx:297 AliQADataMakerSim.cxx:298 AliQADataMakerSim.cxx:299 AliQADataMakerSim.cxx:300 AliQADataMakerSim.cxx:301 AliQADataMakerSim.cxx:302 AliQADataMakerSim.cxx:303 AliQADataMakerSim.cxx:304 AliQADataMakerSim.cxx:305 AliQADataMakerSim.cxx:306 AliQADataMakerSim.cxx:307 AliQADataMakerSim.cxx:308 AliQADataMakerSim.cxx:309 AliQADataMakerSim.cxx:310 AliQADataMakerSim.cxx:311 AliQADataMakerSim.cxx:312 AliQADataMakerSim.cxx:313 AliQADataMakerSim.cxx:314 AliQADataMakerSim.cxx:315 AliQADataMakerSim.cxx:316 AliQADataMakerSim.cxx:317 AliQADataMakerSim.cxx:318 AliQADataMakerSim.cxx:319 AliQADataMakerSim.cxx:320 AliQADataMakerSim.cxx:321 AliQADataMakerSim.cxx:322 AliQADataMakerSim.cxx:323 AliQADataMakerSim.cxx:324 AliQADataMakerSim.cxx:325 AliQADataMakerSim.cxx:326 AliQADataMakerSim.cxx:327 AliQADataMakerSim.cxx:328 AliQADataMakerSim.cxx:329 AliQADataMakerSim.cxx:330 AliQADataMakerSim.cxx:331 AliQADataMakerSim.cxx:332 AliQADataMakerSim.cxx:333 AliQADataMakerSim.cxx:334 AliQADataMakerSim.cxx:335 AliQADataMakerSim.cxx:336 AliQADataMakerSim.cxx:337 AliQADataMakerSim.cxx:338 AliQADataMakerSim.cxx:339 AliQADataMakerSim.cxx:340 AliQADataMakerSim.cxx:341 AliQADataMakerSim.cxx:342 AliQADataMakerSim.cxx:343 AliQADataMakerSim.cxx:344 AliQADataMakerSim.cxx:345 AliQADataMakerSim.cxx:346 AliQADataMakerSim.cxx:347 AliQADataMakerSim.cxx:348 AliQADataMakerSim.cxx:349 AliQADataMakerSim.cxx:350 AliQADataMakerSim.cxx:351 AliQADataMakerSim.cxx:352 AliQADataMakerSim.cxx:353 AliQADataMakerSim.cxx:354 AliQADataMakerSim.cxx:355 AliQADataMakerSim.cxx:356 AliQADataMakerSim.cxx:357