ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/


/* $Id$ */

//
//  Base Class
//  Produces the data needed to calculate the quality assurance. 
//  All data must be mergeable objects.
//  Y. Schutz CERN July 2007
//

// --- ROOT system ---
#include <TFile.h>
#include <TTree.h>
#include <TClonesArray.h>

// --- Standard library ---

// --- AliRoot header files ---
#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)
{
	// ctor
	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)
{
  //copy ctor
  fDetectorDirName = GetName() ; 
}

//____________________________________________________________________________ 
AliQADataMakerSim::~AliQADataMakerSim()
{
	//dtor: delete the TObjArray and thei content
	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 )
{
  // Assignment operator.
  this->~AliQADataMakerSim();
  new(this) AliQADataMakerSim(qadm);
  return *this;
}

//____________________________________________________________________________
void AliQADataMakerSim::EndOfCycle() 
{ 
  // Finishes a cycle of QA for all tasks
  EndOfCycle(AliQAv1::kHITS) ; 
  EndOfCycle(AliQAv1::kSDIGITS) ; 
  EndOfCycle(AliQAv1::kDIGITS) ;
  ResetCycle() ; 
}

//____________________________________________________________________________
void AliQADataMakerSim::EndOfCycle(AliQAv1::TASKINDEX_t task) 
{ 
  // Finishes a cycle of QA data acquistion
	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) 
{ 
  // creates the quality assurance data for the various tasks (Hits, SDigits, Digits, ESDs)
  
	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)
{
  // general intialisation
	
	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)
{
  // Intialisation by passing the list of QA data booked elsewhere
  
	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)
{
    // default reset that resets all the QA objects.
    // to be overloaded by detectors, if necessary
  
  TObjArray ** list = NULL ; 
  if ( task == AliQAv1::kHITS ) {
		list = fHitsQAList ;	 
	} else if ( task == AliQAv1::kSDIGITS ) {
		list = fSDigitsQAList ; 
	} else if ( task == AliQAv1::kDIGITS ) {
		list = fDigitsQAList ; 
	}
    //list was not initialized, skip
  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) 
{ 
  // Finishes a cycle of QA for all tasks
  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) 
{ 
  // Finishes a cycle of QA data acquistion
  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() )) ;

	//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)) ;  
//  
//  for ( Int_t index = AliRecoParam::kDefault ; index < AliRecoParam::kNSpecies ; index++ ) {
//    TDirectory * eventSpecieDir = subDir->GetDirectory(AliRecoParam::GetEventSpecieName(index)) ; 
//    if (!eventSpecieDir) 
//      eventSpecieDir = subDir->mkdir(AliRecoParam::GetEventSpecieName(index)) ; 
//    TDirectory * expertDir = eventSpecieDir->GetDirectory(AliQAv1::GetExpert()) ; 
//    if (!expertDir) 
//      expertDir = eventSpecieDir->mkdir(AliQAv1::GetExpert()) ; 
//   }   
	StartOfDetectorCycle() ; 
}


//____________________________________________________________________________
void AliQADataMakerSim::ClonePerTrigClass(AliQAv1::TASKINDEX_t task)
{
  // clone the histos of the array corresponding to 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:1
 AliQADataMakerSim.cxx:2
 AliQADataMakerSim.cxx:3
 AliQADataMakerSim.cxx:4
 AliQADataMakerSim.cxx:5
 AliQADataMakerSim.cxx:6
 AliQADataMakerSim.cxx:7
 AliQADataMakerSim.cxx:8
 AliQADataMakerSim.cxx:9
 AliQADataMakerSim.cxx:10
 AliQADataMakerSim.cxx:11
 AliQADataMakerSim.cxx:12
 AliQADataMakerSim.cxx:13
 AliQADataMakerSim.cxx:14
 AliQADataMakerSim.cxx:15
 AliQADataMakerSim.cxx:16
 AliQADataMakerSim.cxx:17
 AliQADataMakerSim.cxx:18
 AliQADataMakerSim.cxx:19
 AliQADataMakerSim.cxx:20
 AliQADataMakerSim.cxx:21
 AliQADataMakerSim.cxx:22
 AliQADataMakerSim.cxx:23
 AliQADataMakerSim.cxx:24
 AliQADataMakerSim.cxx:25
 AliQADataMakerSim.cxx:26
 AliQADataMakerSim.cxx:27
 AliQADataMakerSim.cxx:28
 AliQADataMakerSim.cxx:29
 AliQADataMakerSim.cxx:30
 AliQADataMakerSim.cxx:31
 AliQADataMakerSim.cxx:32
 AliQADataMakerSim.cxx:33
 AliQADataMakerSim.cxx:34
 AliQADataMakerSim.cxx:35
 AliQADataMakerSim.cxx:36
 AliQADataMakerSim.cxx:37
 AliQADataMakerSim.cxx:38
 AliQADataMakerSim.cxx:39
 AliQADataMakerSim.cxx:40
 AliQADataMakerSim.cxx:41
 AliQADataMakerSim.cxx:42
 AliQADataMakerSim.cxx:43
 AliQADataMakerSim.cxx:44
 AliQADataMakerSim.cxx:45
 AliQADataMakerSim.cxx:46
 AliQADataMakerSim.cxx:47
 AliQADataMakerSim.cxx:48
 AliQADataMakerSim.cxx:49
 AliQADataMakerSim.cxx:50
 AliQADataMakerSim.cxx:51
 AliQADataMakerSim.cxx:52
 AliQADataMakerSim.cxx:53
 AliQADataMakerSim.cxx:54
 AliQADataMakerSim.cxx:55
 AliQADataMakerSim.cxx:56
 AliQADataMakerSim.cxx:57
 AliQADataMakerSim.cxx:58
 AliQADataMakerSim.cxx:59
 AliQADataMakerSim.cxx:60
 AliQADataMakerSim.cxx:61
 AliQADataMakerSim.cxx:62
 AliQADataMakerSim.cxx:63
 AliQADataMakerSim.cxx:64
 AliQADataMakerSim.cxx:65
 AliQADataMakerSim.cxx:66
 AliQADataMakerSim.cxx:67
 AliQADataMakerSim.cxx:68
 AliQADataMakerSim.cxx:69
 AliQADataMakerSim.cxx:70
 AliQADataMakerSim.cxx:71
 AliQADataMakerSim.cxx:72
 AliQADataMakerSim.cxx:73
 AliQADataMakerSim.cxx:74
 AliQADataMakerSim.cxx:75
 AliQADataMakerSim.cxx:76
 AliQADataMakerSim.cxx:77
 AliQADataMakerSim.cxx:78
 AliQADataMakerSim.cxx:79
 AliQADataMakerSim.cxx:80
 AliQADataMakerSim.cxx:81
 AliQADataMakerSim.cxx:82
 AliQADataMakerSim.cxx:83
 AliQADataMakerSim.cxx:84
 AliQADataMakerSim.cxx:85
 AliQADataMakerSim.cxx:86
 AliQADataMakerSim.cxx:87
 AliQADataMakerSim.cxx:88
 AliQADataMakerSim.cxx:89
 AliQADataMakerSim.cxx:90
 AliQADataMakerSim.cxx:91
 AliQADataMakerSim.cxx:92
 AliQADataMakerSim.cxx:93
 AliQADataMakerSim.cxx:94
 AliQADataMakerSim.cxx:95
 AliQADataMakerSim.cxx:96
 AliQADataMakerSim.cxx:97
 AliQADataMakerSim.cxx:98
 AliQADataMakerSim.cxx:99
 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