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: */

///////////////////////////////////////////////////////////////////////////////
//                                                                           //
// class for running the Quality Assurance Checker
//                                                                           //
///////////////////////////////////////////////////////////////////////////////

#include "AliCDBEntry.h"
#include "AliQAManager.h"
#include "AliCDBStorage.h"
#include "AliRunInfo.h" 
#include "AliLog.h"
#include "AliModule.h" 
#include "AliQAv1.h"
#include "AliQAChecker.h"
#include "AliQACheckerBase.h"
#include "AliCorrQAChecker.h"
#include "AliGlobalQAChecker.h"
#include "AliGRPObject.h"

#include <TKey.h>
#include <TObjArray.h>
#include <TObjString.h>
#include <TPluginManager.h> 
#include <TROOT.h>
#include <TStopwatch.h> 
#include <TString.h> 
#include <TSystem.h> 
#include <TList.h>
#include <TNtupleD.h>

ClassImp(AliQAChecker)
  AliQAChecker * AliQAChecker::fgQAChecker = 0x0 ;

//_____________________________________________________________________________
AliQAChecker::AliQAChecker(const char* name, const char* title) :
  TNamed(name, title),
  fDataFile(0x0), 
  fRunInfo(0x0), 
  fRunInfoOwner(kFALSE), 
  fRefFile(0x0), 
  fFoundDetectors("."), 
  fEventSpecie(AliRecoParam::kDefault), 
  fRun(0)
{
  // ctor: initialise checkers and open the data file   
  for (Int_t det = 0 ; det < AliQAv1::kNDET ; det++) 
    fCheckers[det] = NULL ; 
}

//_____________________________________________________________________________
AliQAChecker::AliQAChecker(const AliQAChecker& qac) :
  TNamed(qac),
  fDataFile(qac.fDataFile), 
  fRunInfo(qac.fRunInfo), 
  fRunInfoOwner(kFALSE),   
  fRefFile(qac.fRefFile), 
  fFoundDetectors(qac.fFoundDetectors),
  fEventSpecie(qac.fEventSpecie),
  fRun(qac.fRun)
{
  // copy constructor
  
  for (Int_t det = 0 ; det < AliQAv1::kNDET ; det++) 
    fCheckers[det] = NULL ; 
}

//_____________________________________________________________________________
AliQAChecker& AliQAChecker::operator = (const AliQAChecker& qac)
{
// assignment operator

  this->~AliQAChecker();
  new(this) AliQAChecker(qac);
  return *this;
}

//_____________________________________________________________________________
AliQAChecker::~AliQAChecker()
{
// clean up
  if (fRunInfo)
    delete fRunInfo ; 
  for (Int_t det=0; det<AliQAv1::kNDET; det++)
    delete fCheckers[det] ; 
  AliQAv1::Close() ; 
}

//_____________________________________________________________________________
  AliQACheckerBase * AliQAChecker::GetDetQAChecker(Int_t det)
{
	// Gets the Quality Assurance checker for the detector specified by its name

  if (det<0 || det>=AliQAv1::kNDET) return NULL;

	if (fCheckers[det]) 
    return fCheckers[det];

	AliQACheckerBase * qac = NULL ;

	TString detName(AliQAv1::GetDetName(det)) ; 
	
	if (det == AliQAv1::kGLOBAL) {
		qac = new AliGlobalQAChecker() ; 
	} else if (det == AliQAv1::kCORR) {
		qac = new AliCorrQAChecker() ; 
	} else {
		AliDebugClass(AliQAv1::GetQADebugLevel(), Form("Retrieving QA checker for %s", detName.Data())) ; 
		TPluginManager* pluginManager = gROOT->GetPluginManager() ;
		TString qacName = "Ali" + detName + "QAChecker" ;

		// first check if a plugin is defined for the quality assurance checker
		TPluginHandler* pluginHandler = pluginManager->FindHandler("AliQAChecker", detName.Data());
		// if not, add a plugin for it
		if (!pluginHandler) {
			//AliDebug(AliQAv1::GetQADebugLevel(), Form("defining plugin for %s", qacName.Data()));
			TString libs = gSystem->GetLibraries();
		
			if (libs.Contains("lib" + detName + "base.so") || (gSystem->Load("lib" + detName + "base.so") >= 0))
				pluginManager->AddHandler("AliQAChecker", detName, qacName, detName + "qac", qacName + "()");
			else 
				pluginManager->AddHandler("AliQAChecker", detName, qacName, detName, qacName + "()");

			pluginHandler = pluginManager->FindHandler("AliQAChecker", detName);	

			if (pluginHandler && (pluginHandler->LoadPlugin() == 0)) 
				qac = (AliQACheckerBase *) pluginHandler->ExecPlugin(0);
  
		}
	}
	if (qac) 
		fCheckers[det] = qac ;
	
	return qac ; 
}

//_____________________________________________________________________________
AliQAChecker * AliQAChecker::Instance()
{
	// returns unique instance of the checker
  if ( ! fgQAChecker ) 
   fgQAChecker = new AliQAChecker() ; 
  return fgQAChecker ;  
}

//_____________________________________________________________________________
void AliQAChecker::LoadRunInfoFromGRP() 
{
  AliCDBManager* man = AliCDBManager::Instance() ;
  AliCDBEntry* entry = man->Get(AliQAv1::GetGRPPath().Data());
  AliGRPObject* grpObject = 0x0;
  if (entry) {

	  TMap* m = static_cast<TMap*>(entry->GetObject());  // old GRP entry

	  if (m) {
	    AliDebug(AliQAv1::GetQADebugLevel(), "It is a map");
	    //m->Print();
	    grpObject = new AliGRPObject();
	         grpObject->ReadValuesFromMap(m);
    }

    else {
	    AliDebug(AliQAv1::GetQADebugLevel(), "It is a new GRP object");
        grpObject = static_cast<AliGRPObject*>(entry->GetObject());  // new GRP entry
    }

    entry->SetOwner(0);
    AliCDBManager::Instance()->UnloadFromCache("GRP/GRP/Data");
  }

  if (!grpObject) {
     AliFatal("No GRP entry found in OCDB!");
  }

  TString lhcState = grpObject->GetLHCState();
  if (lhcState==AliGRPObject::GetInvalidString()) {
    AliError("GRP/GRP/Data entry:  missing value for the LHC state ! Using UNKNOWN");
    lhcState = "UNKNOWN";
  }

  TString beamType = grpObject->GetBeamType();
  if (beamType==AliGRPObject::GetInvalidString()) {
    AliError("GRP/GRP/Data entry:  missing value for the beam type ! Using UNKNOWN");
    beamType = "UNKNOWN";
  }

  Float_t beamEnergy = grpObject->GetBeamEnergy();
  if (beamEnergy==AliGRPObject::GetInvalidFloat()) {
    AliError("GRP/GRP/Data entry:  missing value for the beam energy ! Using 0");
    beamEnergy = 0;
  }

  TString runType = grpObject->GetRunType();
  if (runType==AliGRPObject::GetInvalidString()) {
    AliError("GRP/GRP/Data entry:  missing value for the run type ! Using UNKNOWN");
    runType = "UNKNOWN";
  }

  Int_t activeDetectors = grpObject->GetDetectorMask();
  if (activeDetectors==AliGRPObject::GetInvalidInt()) {
    AliError("GRP/GRP/Data entry:  missing value for the detector mask ! Using 1074790399");
    activeDetectors = 1074790399;
  }

  fRunInfo = new AliRunInfo(lhcState, beamType, beamEnergy, runType, activeDetectors);

  fRunInfoOwner = kTRUE ; 

  // set the event specie
  fEventSpecie = AliRecoParam::kDefault ;
  if (strcmp(runType,"PHYSICS")) {
    // Not a physics run, the event specie is set to kCalib
    fEventSpecie = AliRecoParam::kCalib ;
    return;
  }
  if (strcmp(lhcState,"STABLE_BEAMS") == 0) {
    // Heavy ion run (any beam tha is not pp, the event specie is set to kHighMult
    fEventSpecie = AliRecoParam::kHighMult ;
    if ((strcmp(beamType,"p-p") == 0) ||
        (strcmp(beamType,"p-")  == 0) ||
        (strcmp(beamType,"-p")  == 0) ||
        (strcmp(beamType,"P-P") == 0) ||
        (strcmp(beamType,"P-")  == 0) ||
        (strcmp(beamType,"-P")  == 0)) {
      // Proton run, the event specie is set to kLowMult
      fEventSpecie = AliRecoParam::kLowMult ;
    }
    else if (strcmp(beamType,"-") == 0) {
      // No beams, we assume cosmic data
      fEventSpecie = AliRecoParam::kCosmic ;
    }
    else if (strcmp(beamType,"UNKNOWN") == 0) {
      // No LHC beam information is available, we use the default event specie
      fEventSpecie = AliRecoParam::kDefault ;
    }
  }
}

//_____________________________________________________________________________
Bool_t AliQAChecker::Run(const char * fileName, AliDetectorRecoParam * recoParam)
{
  // run the Quality Assurance Checker for all tasks Hits, SDigits, Digits, DigitsR, RecPoints, TrackSegments, RecParticles and ESDs
  // starting from data in file  
  TStopwatch stopwatch;
  stopwatch.Start();
  
  //search for all detectors QA directories
  TList * detKeyList = AliQAv1::GetQADataFile(fileName)->GetListOfKeys() ; 
  TIter nextd(detKeyList) ; 
  TKey * detKey ; 
  while ( (detKey = static_cast<TKey *>(nextd()) ) ) {
    AliDebug(AliQAv1::GetQADebugLevel(), Form("Found %s", detKey->GetName())) ;
    //Check which detector
    TString detName ; 
    TString detNameQA(detKey->GetName()) ; 
    Int_t det ; 
    for ( det = 0; det < AliQAv1::kNDET ; det++) {
      detName = AliQAv1::GetDetName(det) ; 
      if (detNameQA.Contains(detName)) {
        fFoundDetectors+=detName ; 
        fFoundDetectors+="." ;		
        break ; 
      }
    } 
    TDirectory * detDir = AliQAv1::GetQADataFile(fileName)->GetDirectory(detKey->GetName()) ; 
    TList * taskKeyList = detDir->GetListOfKeys() ;
    TIter nextt(taskKeyList) ; 
    TKey * taskKey ; 
    // now search for the tasks dir
    while ( (taskKey = static_cast<TKey *>(nextt()) ) ) {
      TString taskName( taskKey->GetName() ) ; 
      AliDebug(AliQAv1::GetQADebugLevel(), Form("Found %s", taskName.Data())) ;
      TDirectory * taskDir = detDir->GetDirectory(taskName.Data()) ; 
      taskDir->cd() ; 
      AliQACheckerBase * qac = GetDetQAChecker(det) ; 
      if (qac)
        AliDebug(AliQAv1::GetQADebugLevel(), Form("QA checker found for %s", detName.Data())) ; 
      if (!qac)
        AliFatal(Form("QA checker not found for %s", detName.Data())) ; 
      AliQAv1::ALITASK_t index = AliQAv1::kNULLTASK ; 
      if ( taskName == AliQAv1::GetTaskName(AliQAv1::kHITS) ) 
        index = AliQAv1::kSIM ; 
      if ( taskName == AliQAv1::GetTaskName(AliQAv1::kSDIGITS) ) 
        index = AliQAv1::kSIM ; 
      if ( taskName == AliQAv1::GetTaskName(AliQAv1::kDIGITS) ) 
        index = AliQAv1::kSIM ; 
      if ( taskName == AliQAv1::GetTaskName(AliQAv1::kRAWS) ) 
        index = AliQAv1::kRAW ;       
      if ( taskName == AliQAv1::GetTaskName(AliQAv1::kDIGITSR) ) 
        index = AliQAv1::kREC ; 
      if ( taskName == AliQAv1::GetTaskName(AliQAv1::kRECPOINTS) ) 
        index = AliQAv1::kREC ; 
      if ( taskName == AliQAv1::GetTaskName(AliQAv1::kTRACKSEGMENTS) ) 
        index = AliQAv1::kREC ; 
      if ( taskName == AliQAv1::GetTaskName(AliQAv1::kRECPARTICLES) ) 
        index = AliQAv1::kREC ; 
      if ( taskName == AliQAv1::GetTaskName(AliQAv1::kESDS) ) 
        index = AliQAv1::kESD ; 
      qac->Init(AliQAv1::DETECTORINDEX_t(det)) ; 
      qac->Run(index, recoParam) ; 
    }
  }
  TString detList ; 
  for ( Int_t det = 0; det < AliQAv1::kNDET; det++) {
    if (fFoundDetectors.Contains(AliQAv1::GetDetName(det))) {
      detList += AliQAv1::GetDetName(det) ; 
      detList += " " ; 
      fFoundDetectors.ReplaceAll(AliQAv1::GetDetName(det), "") ; 
      AliQAv1::Instance()->Show(AliQAv1::GetDetIndex(AliQAv1::GetDetName(det))) ; 
    }	
  }
  AliInfo(Form("QA performed for following detectors: %s", detList.Data())) ; 
  return kTRUE ; 
}

//_____________________________________________________________________________
Bool_t AliQAChecker::Run(AliQAv1::DETECTORINDEX_t det, AliQAv1::TASKINDEX_t task, TObjArray ** list, AliDetectorRecoParam * recoParam)
{
	// run the Quality Assurance Checker for detector det, for task task starting from data in list

  if (det >= AliQAv1::kNDET) {
    AliError(Form("det = %i is larger than AliQAv1::kNDET ... should never happen", det)); 
    return kFALSE ; 
  }
  AliQACheckerBase * qac = GetDetQAChecker(det) ; 
  if (qac)
    AliDebug(AliQAv1::GetQADebugLevel(), Form("QA checker found for %s", AliQAv1::GetDetName(det).Data())) ;
  if (!qac) {
    AliError(Form("QA checker not found for %s", AliQAv1::GetDetName(det).Data())) ; 
    return kFALSE;
  }
  
  AliQAv1::ALITASK_t index = AliQAv1::kNULLTASK ; 
  if ( task == AliQAv1::kRAWS ) 
    index = AliQAv1::kRAW ; 
  else if ( task == AliQAv1::kHITS ) 
    index = AliQAv1::kSIM ; 
  else if ( task == AliQAv1::kSDIGITS ) 
    index = AliQAv1::kSIM ; 
  else if ( task == AliQAv1::kDIGITS ) 
    index = AliQAv1::kSIM ; 
  else if ( task == AliQAv1::kDIGITSR ) 
    index = AliQAv1::kREC ; 
  else if ( task == AliQAv1::kRECPOINTS ) 
    index = AliQAv1::kREC ; 
  else if ( task == AliQAv1::kTRACKSEGMENTS ) 
    index = AliQAv1::kREC ; 
  else if ( task == AliQAv1::kRECPARTICLES ) 
    index = AliQAv1::kREC ; 
  else if ( task == AliQAv1::kESDS ) 
    index = AliQAv1::kESD ; 
  
  qac->Init(det) ; 
  qac->Run(index, list, recoParam) ; 
  
  // make the image 
  qac->MakeImage(list, task, AliQAv1::Mode(task)) ; 
  
	return kTRUE ; 
}

//_____________________________________________________________________________
Bool_t AliQAChecker::Run(AliQAv1::DETECTORINDEX_t det, AliQAv1::TASKINDEX_t task, TNtupleD ** list, AliDetectorRecoParam * recoParam)
{
  // run the Quality Assurance Checker for detector det, for task task starting from data in list
  
  AliQACheckerBase * qac = GetDetQAChecker(det) ; 
  if (qac)
    AliDebug(AliQAv1::GetQADebugLevel(), Form("QA checker found for %s", AliQAv1::GetDetName(det).Data())) ;
  if (!qac) {
    AliError(Form("QA checker not found for %s", AliQAv1::GetDetName(det).Data())) ; 
    return kFALSE;
  }
  
  AliQAv1::ALITASK_t index = AliQAv1::kNULLTASK ; 
  if ( task == AliQAv1::kRAWS ) 
    index = AliQAv1::kRAW ; 
  else if ( task == AliQAv1::kHITS ) 
    index = AliQAv1::kSIM ; 
  else if ( task == AliQAv1::kSDIGITS ) 
    index = AliQAv1::kSIM ; 
  else if ( task == AliQAv1::kDIGITS ) 
    index = AliQAv1::kSIM ; 
  else if ( task == AliQAv1::kDIGITSR ) 
    index = AliQAv1::kREC ; 
  else if ( task == AliQAv1::kRECPOINTS ) 
    index = AliQAv1::kREC ; 
  else if ( task == AliQAv1::kTRACKSEGMENTS ) 
    index = AliQAv1::kREC ; 
  else if ( task == AliQAv1::kRECPARTICLES ) 
    index = AliQAv1::kREC ; 
  else if ( task == AliQAv1::kESDS ) 
    index = AliQAv1::kESD ; 
  
  qac->Init(det) ; 
  qac->Run(index, list, recoParam) ; 

  return kTRUE ; 
}
 AliQAChecker.cxx:1
 AliQAChecker.cxx:2
 AliQAChecker.cxx:3
 AliQAChecker.cxx:4
 AliQAChecker.cxx:5
 AliQAChecker.cxx:6
 AliQAChecker.cxx:7
 AliQAChecker.cxx:8
 AliQAChecker.cxx:9
 AliQAChecker.cxx:10
 AliQAChecker.cxx:11
 AliQAChecker.cxx:12
 AliQAChecker.cxx:13
 AliQAChecker.cxx:14
 AliQAChecker.cxx:15
 AliQAChecker.cxx:16
 AliQAChecker.cxx:17
 AliQAChecker.cxx:18
 AliQAChecker.cxx:19
 AliQAChecker.cxx:20
 AliQAChecker.cxx:21
 AliQAChecker.cxx:22
 AliQAChecker.cxx:23
 AliQAChecker.cxx:24
 AliQAChecker.cxx:25
 AliQAChecker.cxx:26
 AliQAChecker.cxx:27
 AliQAChecker.cxx:28
 AliQAChecker.cxx:29
 AliQAChecker.cxx:30
 AliQAChecker.cxx:31
 AliQAChecker.cxx:32
 AliQAChecker.cxx:33
 AliQAChecker.cxx:34
 AliQAChecker.cxx:35
 AliQAChecker.cxx:36
 AliQAChecker.cxx:37
 AliQAChecker.cxx:38
 AliQAChecker.cxx:39
 AliQAChecker.cxx:40
 AliQAChecker.cxx:41
 AliQAChecker.cxx:42
 AliQAChecker.cxx:43
 AliQAChecker.cxx:44
 AliQAChecker.cxx:45
 AliQAChecker.cxx:46
 AliQAChecker.cxx:47
 AliQAChecker.cxx:48
 AliQAChecker.cxx:49
 AliQAChecker.cxx:50
 AliQAChecker.cxx:51
 AliQAChecker.cxx:52
 AliQAChecker.cxx:53
 AliQAChecker.cxx:54
 AliQAChecker.cxx:55
 AliQAChecker.cxx:56
 AliQAChecker.cxx:57
 AliQAChecker.cxx:58
 AliQAChecker.cxx:59
 AliQAChecker.cxx:60
 AliQAChecker.cxx:61
 AliQAChecker.cxx:62
 AliQAChecker.cxx:63
 AliQAChecker.cxx:64
 AliQAChecker.cxx:65
 AliQAChecker.cxx:66
 AliQAChecker.cxx:67
 AliQAChecker.cxx:68
 AliQAChecker.cxx:69
 AliQAChecker.cxx:70
 AliQAChecker.cxx:71
 AliQAChecker.cxx:72
 AliQAChecker.cxx:73
 AliQAChecker.cxx:74
 AliQAChecker.cxx:75
 AliQAChecker.cxx:76
 AliQAChecker.cxx:77
 AliQAChecker.cxx:78
 AliQAChecker.cxx:79
 AliQAChecker.cxx:80
 AliQAChecker.cxx:81
 AliQAChecker.cxx:82
 AliQAChecker.cxx:83
 AliQAChecker.cxx:84
 AliQAChecker.cxx:85
 AliQAChecker.cxx:86
 AliQAChecker.cxx:87
 AliQAChecker.cxx:88
 AliQAChecker.cxx:89
 AliQAChecker.cxx:90
 AliQAChecker.cxx:91
 AliQAChecker.cxx:92
 AliQAChecker.cxx:93
 AliQAChecker.cxx:94
 AliQAChecker.cxx:95
 AliQAChecker.cxx:96
 AliQAChecker.cxx:97
 AliQAChecker.cxx:98
 AliQAChecker.cxx:99
 AliQAChecker.cxx:100
 AliQAChecker.cxx:101
 AliQAChecker.cxx:102
 AliQAChecker.cxx:103
 AliQAChecker.cxx:104
 AliQAChecker.cxx:105
 AliQAChecker.cxx:106
 AliQAChecker.cxx:107
 AliQAChecker.cxx:108
 AliQAChecker.cxx:109
 AliQAChecker.cxx:110
 AliQAChecker.cxx:111
 AliQAChecker.cxx:112
 AliQAChecker.cxx:113
 AliQAChecker.cxx:114
 AliQAChecker.cxx:115
 AliQAChecker.cxx:116
 AliQAChecker.cxx:117
 AliQAChecker.cxx:118
 AliQAChecker.cxx:119
 AliQAChecker.cxx:120
 AliQAChecker.cxx:121
 AliQAChecker.cxx:122
 AliQAChecker.cxx:123
 AliQAChecker.cxx:124
 AliQAChecker.cxx:125
 AliQAChecker.cxx:126
 AliQAChecker.cxx:127
 AliQAChecker.cxx:128
 AliQAChecker.cxx:129
 AliQAChecker.cxx:130
 AliQAChecker.cxx:131
 AliQAChecker.cxx:132
 AliQAChecker.cxx:133
 AliQAChecker.cxx:134
 AliQAChecker.cxx:135
 AliQAChecker.cxx:136
 AliQAChecker.cxx:137
 AliQAChecker.cxx:138
 AliQAChecker.cxx:139
 AliQAChecker.cxx:140
 AliQAChecker.cxx:141
 AliQAChecker.cxx:142
 AliQAChecker.cxx:143
 AliQAChecker.cxx:144
 AliQAChecker.cxx:145
 AliQAChecker.cxx:146
 AliQAChecker.cxx:147
 AliQAChecker.cxx:148
 AliQAChecker.cxx:149
 AliQAChecker.cxx:150
 AliQAChecker.cxx:151
 AliQAChecker.cxx:152
 AliQAChecker.cxx:153
 AliQAChecker.cxx:154
 AliQAChecker.cxx:155
 AliQAChecker.cxx:156
 AliQAChecker.cxx:157
 AliQAChecker.cxx:158
 AliQAChecker.cxx:159
 AliQAChecker.cxx:160
 AliQAChecker.cxx:161
 AliQAChecker.cxx:162
 AliQAChecker.cxx:163
 AliQAChecker.cxx:164
 AliQAChecker.cxx:165
 AliQAChecker.cxx:166
 AliQAChecker.cxx:167
 AliQAChecker.cxx:168
 AliQAChecker.cxx:169
 AliQAChecker.cxx:170
 AliQAChecker.cxx:171
 AliQAChecker.cxx:172
 AliQAChecker.cxx:173
 AliQAChecker.cxx:174
 AliQAChecker.cxx:175
 AliQAChecker.cxx:176
 AliQAChecker.cxx:177
 AliQAChecker.cxx:178
 AliQAChecker.cxx:179
 AliQAChecker.cxx:180
 AliQAChecker.cxx:181
 AliQAChecker.cxx:182
 AliQAChecker.cxx:183
 AliQAChecker.cxx:184
 AliQAChecker.cxx:185
 AliQAChecker.cxx:186
 AliQAChecker.cxx:187
 AliQAChecker.cxx:188
 AliQAChecker.cxx:189
 AliQAChecker.cxx:190
 AliQAChecker.cxx:191
 AliQAChecker.cxx:192
 AliQAChecker.cxx:193
 AliQAChecker.cxx:194
 AliQAChecker.cxx:195
 AliQAChecker.cxx:196
 AliQAChecker.cxx:197
 AliQAChecker.cxx:198
 AliQAChecker.cxx:199
 AliQAChecker.cxx:200
 AliQAChecker.cxx:201
 AliQAChecker.cxx:202
 AliQAChecker.cxx:203
 AliQAChecker.cxx:204
 AliQAChecker.cxx:205
 AliQAChecker.cxx:206
 AliQAChecker.cxx:207
 AliQAChecker.cxx:208
 AliQAChecker.cxx:209
 AliQAChecker.cxx:210
 AliQAChecker.cxx:211
 AliQAChecker.cxx:212
 AliQAChecker.cxx:213
 AliQAChecker.cxx:214
 AliQAChecker.cxx:215
 AliQAChecker.cxx:216
 AliQAChecker.cxx:217
 AliQAChecker.cxx:218
 AliQAChecker.cxx:219
 AliQAChecker.cxx:220
 AliQAChecker.cxx:221
 AliQAChecker.cxx:222
 AliQAChecker.cxx:223
 AliQAChecker.cxx:224
 AliQAChecker.cxx:225
 AliQAChecker.cxx:226
 AliQAChecker.cxx:227
 AliQAChecker.cxx:228
 AliQAChecker.cxx:229
 AliQAChecker.cxx:230
 AliQAChecker.cxx:231
 AliQAChecker.cxx:232
 AliQAChecker.cxx:233
 AliQAChecker.cxx:234
 AliQAChecker.cxx:235
 AliQAChecker.cxx:236
 AliQAChecker.cxx:237
 AliQAChecker.cxx:238
 AliQAChecker.cxx:239
 AliQAChecker.cxx:240
 AliQAChecker.cxx:241
 AliQAChecker.cxx:242
 AliQAChecker.cxx:243
 AliQAChecker.cxx:244
 AliQAChecker.cxx:245
 AliQAChecker.cxx:246
 AliQAChecker.cxx:247
 AliQAChecker.cxx:248
 AliQAChecker.cxx:249
 AliQAChecker.cxx:250
 AliQAChecker.cxx:251
 AliQAChecker.cxx:252
 AliQAChecker.cxx:253
 AliQAChecker.cxx:254
 AliQAChecker.cxx:255
 AliQAChecker.cxx:256
 AliQAChecker.cxx:257
 AliQAChecker.cxx:258
 AliQAChecker.cxx:259
 AliQAChecker.cxx:260
 AliQAChecker.cxx:261
 AliQAChecker.cxx:262
 AliQAChecker.cxx:263
 AliQAChecker.cxx:264
 AliQAChecker.cxx:265
 AliQAChecker.cxx:266
 AliQAChecker.cxx:267
 AliQAChecker.cxx:268
 AliQAChecker.cxx:269
 AliQAChecker.cxx:270
 AliQAChecker.cxx:271
 AliQAChecker.cxx:272
 AliQAChecker.cxx:273
 AliQAChecker.cxx:274
 AliQAChecker.cxx:275
 AliQAChecker.cxx:276
 AliQAChecker.cxx:277
 AliQAChecker.cxx:278
 AliQAChecker.cxx:279
 AliQAChecker.cxx:280
 AliQAChecker.cxx:281
 AliQAChecker.cxx:282
 AliQAChecker.cxx:283
 AliQAChecker.cxx:284
 AliQAChecker.cxx:285
 AliQAChecker.cxx:286
 AliQAChecker.cxx:287
 AliQAChecker.cxx:288
 AliQAChecker.cxx:289
 AliQAChecker.cxx:290
 AliQAChecker.cxx:291
 AliQAChecker.cxx:292
 AliQAChecker.cxx:293
 AliQAChecker.cxx:294
 AliQAChecker.cxx:295
 AliQAChecker.cxx:296
 AliQAChecker.cxx:297
 AliQAChecker.cxx:298
 AliQAChecker.cxx:299
 AliQAChecker.cxx:300
 AliQAChecker.cxx:301
 AliQAChecker.cxx:302
 AliQAChecker.cxx:303
 AliQAChecker.cxx:304
 AliQAChecker.cxx:305
 AliQAChecker.cxx:306
 AliQAChecker.cxx:307
 AliQAChecker.cxx:308
 AliQAChecker.cxx:309
 AliQAChecker.cxx:310
 AliQAChecker.cxx:311
 AliQAChecker.cxx:312
 AliQAChecker.cxx:313
 AliQAChecker.cxx:314
 AliQAChecker.cxx:315
 AliQAChecker.cxx:316
 AliQAChecker.cxx:317
 AliQAChecker.cxx:318
 AliQAChecker.cxx:319
 AliQAChecker.cxx:320
 AliQAChecker.cxx:321
 AliQAChecker.cxx:322
 AliQAChecker.cxx:323
 AliQAChecker.cxx:324
 AliQAChecker.cxx:325
 AliQAChecker.cxx:326
 AliQAChecker.cxx:327
 AliQAChecker.cxx:328
 AliQAChecker.cxx:329
 AliQAChecker.cxx:330
 AliQAChecker.cxx:331
 AliQAChecker.cxx:332
 AliQAChecker.cxx:333
 AliQAChecker.cxx:334
 AliQAChecker.cxx:335
 AliQAChecker.cxx:336
 AliQAChecker.cxx:337
 AliQAChecker.cxx:338
 AliQAChecker.cxx:339
 AliQAChecker.cxx:340
 AliQAChecker.cxx:341
 AliQAChecker.cxx:342
 AliQAChecker.cxx:343
 AliQAChecker.cxx:344
 AliQAChecker.cxx:345
 AliQAChecker.cxx:346
 AliQAChecker.cxx:347
 AliQAChecker.cxx:348
 AliQAChecker.cxx:349
 AliQAChecker.cxx:350
 AliQAChecker.cxx:351
 AliQAChecker.cxx:352
 AliQAChecker.cxx:353
 AliQAChecker.cxx:354
 AliQAChecker.cxx:355
 AliQAChecker.cxx:356
 AliQAChecker.cxx:357
 AliQAChecker.cxx:358
 AliQAChecker.cxx:359
 AliQAChecker.cxx:360
 AliQAChecker.cxx:361
 AliQAChecker.cxx:362
 AliQAChecker.cxx:363
 AliQAChecker.cxx:364
 AliQAChecker.cxx:365
 AliQAChecker.cxx:366
 AliQAChecker.cxx:367
 AliQAChecker.cxx:368
 AliQAChecker.cxx:369
 AliQAChecker.cxx:370
 AliQAChecker.cxx:371
 AliQAChecker.cxx:372
 AliQAChecker.cxx:373
 AliQAChecker.cxx:374
 AliQAChecker.cxx:375
 AliQAChecker.cxx:376
 AliQAChecker.cxx:377
 AliQAChecker.cxx:378
 AliQAChecker.cxx:379
 AliQAChecker.cxx:380
 AliQAChecker.cxx:381
 AliQAChecker.cxx:382
 AliQAChecker.cxx:383
 AliQAChecker.cxx:384
 AliQAChecker.cxx:385
 AliQAChecker.cxx:386
 AliQAChecker.cxx:387
 AliQAChecker.cxx:388
 AliQAChecker.cxx:389
 AliQAChecker.cxx:390
 AliQAChecker.cxx:391
 AliQAChecker.cxx:392
 AliQAChecker.cxx:393
 AliQAChecker.cxx:394
 AliQAChecker.cxx:395
 AliQAChecker.cxx:396
 AliQAChecker.cxx:397
 AliQAChecker.cxx:398
 AliQAChecker.cxx:399
 AliQAChecker.cxx:400
 AliQAChecker.cxx:401
 AliQAChecker.cxx:402
 AliQAChecker.cxx:403
 AliQAChecker.cxx:404
 AliQAChecker.cxx:405
 AliQAChecker.cxx:406
 AliQAChecker.cxx:407
 AliQAChecker.cxx:408
 AliQAChecker.cxx:409
 AliQAChecker.cxx:410
 AliQAChecker.cxx:411
 AliQAChecker.cxx:412
 AliQAChecker.cxx:413
 AliQAChecker.cxx:414
 AliQAChecker.cxx:415
 AliQAChecker.cxx:416