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: AliQAManager.cxx 30894 2009-02-05 13:46:48Z schutz $ */
///////////////////////////////////////////////////////////////////////////////
//                                                                           //
// class for running the QA makers                                           //
//                                                                           //
//   AliQAManager qas;                                                       //
//   qas.Run(AliQAv1::kRAWS, rawROOTFileName);                               //
//   qas.Run(AliQAv1::kHITS);                                                //
//   qas.Run(AliQAv1::kSDIGITS);                                             //
//   qas.Run(AliQAv1::kDIGITS);                                              //
//   qas.Run(AliQAv1::kRECPOINTS);                                           //
//   qas.Run(AliQAv1::kESDS);                                                //
//                                                                           //
///////////////////////////////////////////////////////////////////////////////

#include <TCanvas.h>
#include <TKey.h>
#include <TFile.h>
#include <TFileMerger.h>
#include <TGrid.h>
#include <TGridCollection.h>
#include <TGridResult.h>
#include <TPluginManager.h>
#include <TROOT.h>
#include <TString.h>
#include <TSystem.h>
#include <TStopwatch.h>

#include "AliCDBManager.h"
#include "AliCDBEntry.h"
#include "AliCDBId.h"
#include "AliCDBMetaData.h"
#include "AliCodeTimer.h"
#include "AliCorrQADataMakerRec.h"
#include "AliDetectorRecoParam.h"
#include "AliESDEvent.h"
#include "AliGeomManager.h"
#include "AliGlobalQADataMaker.h"
#include "AliHeader.h"
#include "AliLog.h"
#include "AliModule.h"
#include "AliQAv1.h"
#include "AliQAChecker.h"
#include "AliQACheckerBase.h"
#include "AliQADataMakerRec.h"
#include "AliQADataMakerSim.h"
#include "AliQAManager.h" 
#include "AliRawReaderDate.h"
#include "AliRawReaderFile.h"
#include "AliRawReaderRoot.h"
#include "AliRun.h"
#include "AliRunLoader.h"
#include "AliRunTag.h"

using std::ifstream;
ClassImp(AliQAManager) 
AliQAManager* AliQAManager::fgQAInstance = 0x0;

//_____________________________________________________________________________
AliQAManager::AliQAManager() :
  AliCDBManager(), 
  fCurrentEvent(0),   
  fCycleSame(kFALSE),
  fDetectors("ALL"), 
  fDetectorsW("ALL"), 
  fESD(NULL), 
  fESDTree(NULL),
  fEventInfo(NULL), 
  fGAliceFileName(""), 
  fFirstEvent(0),        
  fMaxEvents(0),   
  fMode(""), 
  fNumberOfEvents(999999), 
  fRecoParam(),
  fRunNumber(0), 
  fRawReader(NULL), 
  fRawReaderDelete(kTRUE), 
  fRunLoader(NULL), 
  fTasks(""),  
  fEventSpecie(AliRecoParam::kDefault), 
  fPrintImage(kTRUE), 
  fSaveData(kTRUE) 
{
  // default ctor
  fMaxEvents = fNumberOfEvents ; 
  for (UInt_t iDet = 0; iDet < fgkNDetectors; iDet++) {
    if (IsSelected(AliQAv1::GetDetName(iDet))) {
      fLoader[iDet]      = NULL ;
      fQADataMaker[iDet] = NULL ;
      fQACycles[iDet]    = 999999 ;
    }
  }	
  SetWriteExpert() ; 
}

//_____________________________________________________________________________
AliQAManager::AliQAManager(AliQAv1::MODE_t mode, const Char_t* gAliceFilename) :
  AliCDBManager(), 
  fCurrentEvent(0),  
  fCycleSame(kFALSE),
  fDetectors("ALL"), 
  fDetectorsW("ALL"), 
  fESD(NULL), 
  fESDTree(NULL),
  fEventInfo(NULL),  
  fGAliceFileName(gAliceFilename), 
  fFirstEvent(0),        
  fMaxEvents(0),   
  fMode(AliQAv1::GetModeName(mode)), 
  fNumberOfEvents(999999), 
  fRecoParam(),
  fRunNumber(0), 
  fRawReader(NULL), 
  fRawReaderDelete(kTRUE), 
  fRunLoader(NULL), 
  fTasks(""), 
  fEventSpecie(AliRecoParam::kDefault), 
  fPrintImage(kTRUE), 
  fSaveData(kTRUE) 
{
  // default ctor
  fMaxEvents = fNumberOfEvents ; 
  for (UInt_t iDet = 0; iDet < fgkNDetectors; iDet++) {
    if (IsSelected(AliQAv1::GetDetName(iDet))) {
      fLoader[iDet]      = NULL ;
      fQADataMaker[iDet] = NULL ;
      fQACycles[iDet]    = 999999 ;
    }
  }
  SetWriteExpert() ; 
}

//_____________________________________________________________________________
AliQAManager::AliQAManager(const AliQAManager & qas) : 
  AliCDBManager(), 
  fCurrentEvent(qas.fCurrentEvent),  
  fCycleSame(kFALSE),
  fDetectors(qas.fDetectors), 
  fDetectorsW(qas.fDetectorsW), 
  fESD(NULL), 
  fESDTree(NULL), 
  fEventInfo(NULL), 
  fGAliceFileName(qas.fGAliceFileName), 
  fFirstEvent(qas.fFirstEvent),        
  fMaxEvents(qas.fMaxEvents),    
  fMode(qas.fMode), 
  fNumberOfEvents(qas.fNumberOfEvents), 
  fRecoParam(),		
  fRunNumber(qas.fRunNumber), 
  fRawReader(NULL), 
  fRawReaderDelete(kTRUE), 
  fRunLoader(NULL), 
  fTasks(qas.fTasks), 
  fEventSpecie(qas.fEventSpecie), 
  fPrintImage(qas.fPrintImage), 
  fSaveData(qas.fSaveData) 

{
  // cpy ctor
  for (UInt_t iDet = 0; iDet < fgkNDetectors; iDet++) {
    fLoader[iDet]         = qas.fLoader[iDet] ;
    fQADataMaker[iDet]    = qas.fQADataMaker[iDet] ;
    fQACycles[iDet]       = qas.fQACycles[iDet] ;	
    fQAWriteExpert[iDet] = qas.fQAWriteExpert[iDet] ;
  }
}

//_____________________________________________________________________________
AliQAManager & AliQAManager::operator = (const AliQAManager & qas) 
{
  // assignment operator
  this->~AliQAManager() ;
  new(this) AliQAManager(qas) ;
  return *this ;
}

//_____________________________________________________________________________
AliQAManager::~AliQAManager() 
{
  // dtor
  for (UInt_t iDet = 0; iDet < fgkNDetectors; iDet++) {
    if (IsSelected(AliQAv1::GetDetName(iDet))) {
      fLoader[iDet] = NULL;
      if (fQADataMaker[iDet]) {
	(fQADataMaker[iDet])->Finish() ; 
	delete fQADataMaker[iDet] ;
      }
    }
  }
  if (fRawReaderDelete) { 
    fRunLoader = NULL ;
    delete fRawReader ;
    fRawReader = NULL ;
  }
}
//_____________________________________________________________________________
Bool_t AliQAManager::DoIt(const AliQAv1::TASKINDEX_t taskIndex)
{
    // Runs all the QA data Maker for every detector
  
  Bool_t rv = kFALSE ;
    // Fill QA data in event loop 
  for (UInt_t iEvent = fFirstEvent ; iEvent < (UInt_t)fMaxEvents ; iEvent++) {
    fCurrentEvent++ ; 
      // Get the event
    if ( iEvent%10 == 0  ) 
      AliDebug(AliQAv1::GetQADebugLevel(), Form("processing event %d", iEvent));
    if ( taskIndex == AliQAv1::kRAWS ) {
      if ( !fRawReader->NextEvent() )
        break ;
    } else if ( taskIndex == AliQAv1::kESDS ) {
      if ( fESDTree->GetEntry(iEvent) == 0 )
        break ;
    } else {
      if ( fRunLoader->GetEvent(iEvent) != 0 )
        break ;
    }
      // loop  over active loaders
    TString detList ; 
    if ( GetEventInfo()) 
      detList = GetEventInfo()->GetTriggerCluster() ; 
    for (UInt_t iDet = 0; iDet < fgkNDetectors ; iDet++) {
      if (!detList.IsNull() && !detList.Contains(AliQAv1::GetDetName(iDet)))
        continue ;
      if (IsSelected(AliQAv1::GetDetName(iDet)) ){
        AliQADataMaker * qadm = GetQADataMaker(iDet) ;
        if (!qadm) continue; // This detector doesn't have any QA (for example, HLT)
        if ( qadm->IsCycleDone() ) {
          qadm->EndOfCycle(taskIndex) ;
        }
        TTree * data = NULL ; 
        AliLoader* loader = GetLoader(qadm->GetUniqueID());
        switch (taskIndex) {
          case AliQAv1::kNULLTASKINDEX : 
            break ; 
          case AliQAv1::kRAWS :
            qadm->Exec(taskIndex, fRawReader) ; 
            break ; 
          case AliQAv1::kHITS :
            if( loader ) {
              loader->LoadHits() ; 
              data = loader->TreeH() ; 
              if ( ! data ) {
                AliWarning(Form(" Hit Tree not found for  %s", AliQAv1::GetDetName(iDet))) ; 
                break ; 
              } 
              qadm->Exec(taskIndex, data) ;
            } 
            break ;
          case AliQAv1::kSDIGITS :
          {
            
            TString fileName(Form("%s.SDigits.root", AliQAv1::GetDetName(iDet))) ; 
            if (gSystem->FindFile("./", fileName)) {
              if( loader ) {      
                loader->LoadSDigits() ; 
                data = loader->TreeS() ; 
                if ( ! data ) {
                  AliWarning(Form(" SDigit Tree not found for  %s", AliQAv1::GetDetName(iDet))) ; 
                  break ; 
                } 
                qadm->Exec(taskIndex, data) ; 
              }
            }
          }
            break; 
          case AliQAv1::kDIGITS :
            if( loader ) {      
              loader->LoadDigits() ; 
              data = loader->TreeD() ; 
              if ( ! data ) {
                AliWarning(Form(" Digit Tree not found for  %s", AliQAv1::GetDetName(iDet))) ; 
                break ; 
              } 
              qadm->Exec(taskIndex, data) ;
            }
            break;
          case AliQAv1::kDIGITSR :
            if( loader ) {      
              loader->LoadDigits() ; 
              data = loader->TreeD() ; 
              if ( ! data ) {
                AliWarning(Form(" Digit Tree not found for  %s", AliQAv1::GetDetName(iDet))) ; 
                break ; 
              } 
              qadm->Exec(taskIndex, data) ;
            }
            break; 
          case AliQAv1::kRECPOINTS :
            if( loader ) {      
              loader->LoadRecPoints() ; 
              data = loader->TreeR() ; 
              if (!data) {
                AliWarning(Form("RecPoints not found for %s", AliQAv1::GetDetName(iDet))) ; 
                break ; 
              } 
              qadm->Exec(taskIndex, data) ; 
            }
            break; 
          case AliQAv1::kTRACKSEGMENTS :
            break; 
          case AliQAv1::kRECPARTICLES :
            break; 
          case AliQAv1::kESDS :
            qadm->Exec(taskIndex, fESD) ;
            break; 
          case AliQAv1::kNTASKINDEX :
            break; 
        } //task switch
      }
    } // detector loop
    Increment(taskIndex) ; 
  } // event loop	
    // Save QA data for all detectors
  
  EndOfCycle() ; 
  
  if ( taskIndex == AliQAv1::kRAWS ) 
    fRawReader->RewindEvents() ;
  
  return rv ; 
}

//_____________________________________________________________________________
Bool_t AliQAManager::Finish(const AliQAv1::TASKINDEX_t taskIndex) 
{
  // write output to file for all detectors
  
  AliQAChecker::Instance()->SetRunNumber(fRunNumber) ; 

  for (UInt_t iDet = 0; iDet < fgkNDetectors ; iDet++) {
    if (IsSelected(AliQAv1::GetDetName(iDet))) {
      AliQADataMaker * qadm = GetQADataMaker(iDet) ;
      if (qadm) 
        qadm->EndOfCycle(taskIndex) ;
    }
  }
  return kTRUE ; 
}

//_____________________________________________________________________________
TObjArray * AliQAManager::GetFromOCDB(AliQAv1::DETECTORINDEX_t det, AliQAv1::TASKINDEX_t task, const Char_t * year) const 
{
  // Retrieve the list of QA data for a given detector and a given task 
  TObjArray * rv = NULL ;
  if ( !strlen(AliQAv1::GetQARefStorage()) ) { 
    AliError("No storage defined, use AliQAv1::SetQARefStorage") ; 
    return NULL ; 
  }	
  if ( ! IsDefaultStorageSet() ) {
    TString tmp(AliQAv1::GetQARefDefaultStorage()) ; 
    tmp.Append(year) ; 
    tmp.Append("/") ; 
    Instance()->SetDefaultStorage(tmp.Data()) ; 		
    Instance()->SetSpecificStorage(Form("%s/*", AliQAv1::GetQAName()), AliQAv1::GetQARefStorage()) ;
  }
  TString detOCDBDir(Form("%s/%s/%s", AliQAv1::GetQAName(), AliQAv1::GetDetName((Int_t)det), AliQAv1::GetRefOCDBDirName())) ; 
  AliDebug(AliQAv1::GetQADebugLevel(), Form("Retrieving reference data from %s/%s for %s", AliQAv1::GetQARefStorage(), detOCDBDir.Data(), AliQAv1::GetTaskName(task).Data())) ; 
  AliCDBEntry* entry = QAManager()->Get(detOCDBDir.Data(), 0) ; //FIXME 0 --> Run Number
  TList * listDetQAD = static_cast<TList *>(entry->GetObject()) ;
  if ( listDetQAD ) 
    rv = static_cast<TObjArray *>(listDetQAD->FindObject(AliQAv1::GetTaskName(task))) ; 
  return rv ; 
}

//_____________________________________________________________________________
TCanvas ** AliQAManager::GetImage(Char_t * detName)
{
  // retrieves QA Image for the given detector
  TCanvas ** rv = NULL ; 
  Int_t detIndex = AliQAv1::GetDetIndex(detName) ; 
  if ( detIndex != AliQAv1::kNULLDET) {
    AliQACheckerBase * qac = AliQAChecker::Instance()->GetDetQAChecker(detIndex) ; 
    rv = qac->GetImage() ;
  }
  return rv ; 
}

//_____________________________________________________________________________
AliLoader * AliQAManager::GetLoader(Int_t iDet)
{
  // get the loader for a detector

  if ( !fRunLoader || iDet == AliQAv1::kCORR || iDet == AliQAv1::kGLOBAL ) 
    return NULL ; 
	
  TString detName = AliQAv1::GetDetName(iDet) ;
  fLoader[iDet] = fRunLoader->GetLoader(detName + "Loader");
  if (fLoader[iDet]) 
    return fLoader[iDet] ;
	
  // load the QA data maker object
  TPluginManager* pluginManager = gROOT->GetPluginManager() ;
  TString loaderName = "Ali" + detName + "Loader" ;

  AliLoader * loader = NULL ;
  // first check if a plugin is defined for the quality assurance data maker
  TPluginHandler* pluginHandler = pluginManager->FindHandler("AliLoader", detName) ;
  // if not, add a plugin for it
  if (!pluginHandler) {
    AliDebug(AliQAv1::GetQADebugLevel(), Form("defining plugin for %s", loaderName.Data())) ;
    TString libs = gSystem->GetLibraries() ;
    if (libs.Contains("lib" + detName + "base.so") || (gSystem->Load("lib" + detName + "base.so") >= 0)) {
      pluginManager->AddHandler("AliQADataMaker", detName, loaderName, detName + "loader", loaderName + "()") ;
    } else {
      pluginManager->AddHandler("AliLoader", detName, loaderName, detName, loaderName + "()") ;
    }
    pluginHandler = pluginManager->FindHandler("AliLoader", detName) ;
  }
  if (pluginHandler && (pluginHandler->LoadPlugin() == 0)) {
    loader = (AliLoader *) pluginHandler->ExecPlugin(0) ;
  }
  if (loader) 
    fLoader[iDet] = loader ;
  return loader ;
}

//_____________________________________________________________________________
AliQAv1 * AliQAManager::GetQA(UInt_t run, UInt_t evt) 
{
  // retrieves the QA object stored in a file named "Run{run}.Event{evt}_1.ESD.tag.root"  
  Char_t * fileName = Form("Run%d.Event%d_1.ESD.tag.root", run, evt) ; 
  TFile * tagFile = TFile::Open(fileName) ;
  if ( !tagFile ) {
    AliError(Form("File %s not found", fileName)) ;
    return NULL ; 
  }
  TTree * tagTree = static_cast<TTree *>(tagFile->Get("T")) ; 
  if ( !tagTree ) {
    AliError(Form("Tree T not found in %s", fileName)) ; 
    tagFile->Close() ; 
    return NULL ; 
  }
  AliRunTag * tag = new AliRunTag ; 
  tagTree->SetBranchAddress("AliTAG", &tag) ; 
  tagTree->GetEntry(evt) ; 
  AliQAv1 * qa = AliQAv1::Instance(tag->GetQALength(), tag->GetQAArray(), tag->GetESLength(), tag->GetEventSpecies()) ; 
  tagFile->Close() ; 
  return qa ; 
}

//_____________________________________________________________________________
AliQADataMaker * AliQAManager::GetQADataMaker(const Int_t iDet) 
{
  // get the quality assurance data maker for a detector
	
  AliQADataMaker * qadm =  fQADataMaker[iDet] ; 
  
  if (qadm) {
 
    qadm->SetEventSpecie(fEventSpecie) ;  
    if ( qadm->GetRecoParam() ) 
      if ( AliRecoParam::Convert(qadm->GetRecoParam()->GetEventSpecie()) != AliRecoParam::kDefault)
        qadm->SetEventSpecie(qadm->GetRecoParam()->GetEventSpecie()) ; 

  } else if (iDet == AliQAv1::kGLOBAL && strcmp(GetMode(), AliQAv1::GetModeName(AliQAv1::kRECMODE)) == 0) { //Global QA

    qadm = new AliGlobalQADataMaker();
    qadm->SetName(AliQAv1::GetDetName(iDet));
    qadm->SetUniqueID(iDet);
    fQADataMaker[iDet] = qadm;
    qadm->SetEventSpecie(fEventSpecie) ;  
    if ( qadm->GetRecoParam() ) 
      if ( AliRecoParam::Convert(qadm->GetRecoParam()->GetEventSpecie()) != AliRecoParam::kDefault)  
        qadm->SetEventSpecie(qadm->GetRecoParam()->GetEventSpecie()) ; 

  }	else if (iDet == AliQAv1::kCORR && strcmp(GetMode(), AliQAv1::GetModeName(AliQAv1::kRECMODE)) == 0 ) { //the data maker for correlations among detectors
    qadm = new AliCorrQADataMakerRec(fQADataMaker) ; 
    qadm->SetName(AliQAv1::GetDetName(iDet));
    qadm->SetUniqueID(iDet);
    fQADataMaker[iDet] = qadm;
    qadm->SetEventSpecie(fEventSpecie) ;  
    if ( qadm->GetRecoParam() ) 
      if ( AliRecoParam::Convert(qadm->GetRecoParam()->GetEventSpecie()) != AliRecoParam::kDefault)  
        qadm->SetEventSpecie(qadm->GetRecoParam()->GetEventSpecie()) ; 

  } else if ( iDet < AliQAv1::kGLOBAL ) {
    TString  smode(GetMode()) ; 
    if (smode.Contains(AliQAv1::GetModeName(AliQAv1::kQAMODE)))
      smode = AliQAv1::GetModeName(AliQAv1::kRECMODE) ; 
    // load the QA data maker object
    TPluginManager* pluginManager = gROOT->GetPluginManager() ;
    TString detName = AliQAv1::GetDetName(iDet) ;
    TString qadmName = "Ali" + detName + "QADataMaker" + smode ;
    
    // first check if a plugin is defined for the quality assurance data maker
    TPluginHandler* pluginHandler = pluginManager->FindHandler("AliQADataMaker", detName) ;
    // if not, add a plugin for it
    if (!pluginHandler) {
      AliDebug(AliQAv1::GetQADebugLevel(), Form("defining plugin for %s", qadmName.Data())) ;
      TString libs = gSystem->GetLibraries() ;
      TString temp(smode) ;
      temp.ToLower() ; 
      if (libs.Contains("lib" + detName + smode + ".so") || (gSystem->Load("lib" + detName + temp.Data() + ".so") >= 0)) {
        if ( iDet == AliQAv1::kMUON ) {
          pluginManager->AddHandler("AliQADataMaker", detName, qadmName, detName + "qadm", qadmName + "(Bool_t,Bool_t)");
        } else {
          pluginManager->AddHandler("AliQADataMaker", detName, qadmName, detName + "qadm", qadmName + "()");
        }
      } else {
        pluginManager->AddHandler("AliQADataMaker", detName, qadmName, detName, qadmName + "()");
      }
      pluginHandler = pluginManager->FindHandler("AliQADataMaker", detName) ;
    }
    if (pluginHandler && (pluginHandler->LoadPlugin() == 0)) {
      if ( iDet == AliQAv1::kMUON ) {
        Bool_t mch = fActiveOnlineDetectors.Contains("MUONTRK");
        Bool_t mtr = fActiveOnlineDetectors.Contains("MUONTRG");
        qadm = (AliQADataMaker *) pluginHandler->ExecPlugin(2,mch,mtr);
      }
      else {
        qadm = (AliQADataMaker *) pluginHandler->ExecPlugin(0);
      }
    }
    if (qadm) {
      qadm->SetName(AliQAv1::GetDetName(iDet));
      qadm->SetUniqueID(iDet);
      fQADataMaker[iDet] = qadm ;
      qadm->SetEventSpecie(fEventSpecie) ;  
      if ( qadm->GetRecoParam() ) 
        if ( AliRecoParam::Convert(qadm->GetRecoParam()->GetEventSpecie()) != AliRecoParam::kDefault)  
          qadm->SetEventSpecie(qadm->GetRecoParam()->GetEventSpecie()) ; 
    }
  }
  return qadm ;
}

//_____________________________________________________________________________
void  AliQAManager::EndOfCycle(TObjArray * detArray) 
{
  // End of cycle QADataMakers 
	
  AliQAChecker::Instance()->SetRunNumber(fRunNumber) ; 
  TCanvas fakeCanvas ; 

  fakeCanvas.Print(Form("%s%s%d.%s[", AliQAv1::GetImageFileName(), GetMode(), fRunNumber, AliQAv1::GetImageFileFormat()), "ps") ; 
  for (UInt_t iDet = 0; iDet < fgkNDetectors ; iDet++) {
    if (IsSelected(AliQAv1::GetDetName(iDet))) {
      AliQADataMaker * qadm = GetQADataMaker(iDet) ;
      if (!qadm) 
	continue ;	
      // skip non active detectors
      if (detArray) {
	AliModule* det = static_cast<AliModule*>(detArray->FindObject(AliQAv1::GetDetName(iDet))) ;
	if (!det || !det->IsActive())  
	  continue ;
      }
      AliQACheckerBase * qac = AliQAChecker::Instance()->GetDetQAChecker(iDet) ;
      if (qac) 
        qac->SetPrintImage(fPrintImage) ;
      for (UInt_t taskIndex = 0; taskIndex < AliQAv1::kNTASKINDEX; taskIndex++) {
        if ( fTasks.Contains(Form("%d", taskIndex)) ) 
          qadm->EndOfCycle(AliQAv1::GetTaskIndex(AliQAv1::GetTaskName(taskIndex))) ;
      }
      qadm->Finish();
    }
  }
  if (fPrintImage) 
    fakeCanvas.Print(Form("%s%s%d.%s]", AliQAv1::GetImageFileName(), GetMode(), fRunNumber, AliQAv1::GetImageFileFormat()), "ps"); 
}

//_____________________________________________________________________________
void  AliQAManager::EndOfCycle(TString detectors) 
{
  // End of cycle QADataMakers 
  
  AliQAChecker::Instance()->SetRunNumber(fRunNumber) ; 
  TCanvas fakeCanvas ; 
  if (fPrintImage) 
    fakeCanvas.Print(Form("%s%s%d.%s[", AliQAv1::GetImageFileName(), GetMode(), fRunNumber, AliQAv1::GetImageFileFormat()), "ps") ; 
  for (UInt_t iDet = 0; iDet < fgkNDetectors ; iDet++) {
    if (IsSelected(AliQAv1::GetDetName(iDet))) {
      AliQADataMaker * qadm = GetQADataMaker(iDet) ;
      if (!qadm) 
	continue ;	
      // skip non active detectors
      if (!detectors.Contains(AliQAv1::GetDetName(iDet))) 
        continue ;
      AliQACheckerBase * qac = AliQAChecker::Instance()->GetDetQAChecker(iDet) ;
      if (qac) 
        qac->SetPrintImage(fPrintImage) ;
      for (UInt_t taskIndex = 0; taskIndex < AliQAv1::kNTASKINDEX; taskIndex++) {
        if ( fTasks.Contains(Form("%d", taskIndex)) ) 
          qadm->EndOfCycle(AliQAv1::GetTaskIndex(AliQAv1::GetTaskName(taskIndex))) ;
      }
      qadm->Finish();
    }
  }
  if (fPrintImage) 
    fakeCanvas.Print(Form("%s%s%d.%s]", AliQAv1::GetImageFileName(), GetMode(), fRunNumber, AliQAv1::GetImageFileFormat()), "ps"); 
}

//_____________________________________________________________________________
AliRecoParam::EventSpecie_t AliQAManager::GetEventSpecieFromESD() 
{
  AliRecoParam::EventSpecie_t runtype = AliRecoParam::kDefault ; 
  if (!gSystem->AccessPathName("AliESDs.root")) { // AliESDs.root exists
    TFile * esdFile = TFile::Open("AliESDs.root") ;
    TTree * esdTree = static_cast<TTree *> (esdFile->Get("esdTree")) ; 
    if ( !esdTree ) {
      AliError("esdTree not found") ; 
    } else {
      AliESDEvent * esd    = new AliESDEvent() ;
      esd->ReadFromTree(esdTree) ;
      esdTree->GetEntry(0) ; 
      runtype = AliRecoParam::Convert(esd->GetEventType()) ; 
    }
  } else {
    AliError("AliESDs.root not found") ; 
  }
  return runtype ;
}

//_____________________________________________________________________________
void AliQAManager::Increment(const AliQAv1::TASKINDEX_t taskIndex)
{
  // Increments the cycle counter for all QA Data Makers
  static AliQAv1::TASKINDEX_t currentTask = AliQAv1::kNTASKINDEX ; 
  if ( (currentTask == taskIndex) && taskIndex != AliQAv1::kNULLTASKINDEX )
    return ; 
  else 
    currentTask = taskIndex ; 
  for (UInt_t iDet = 0; iDet < fgkNDetectors ; iDet++) {
    if (IsSelected(AliQAv1::GetDetName(iDet))) {
      AliQADataMaker * qadm = GetQADataMaker(iDet) ;
      if (qadm) 
        qadm->Increment() ;
    }
  }
}
  
//_____________________________________________________________________________
Bool_t AliQAManager::InitQA(const AliQAv1::TASKINDEX_t taskIndex, const  Char_t * input )
{
  // Initialize the event source and QA data makers
	
  fTasks += Form("%d", taskIndex) ; 

  if (taskIndex == AliQAv1::kRAWS) { 
    if (!fRawReader) {
      fRawReader = AliRawReader::Create(input);
    }
    if ( ! fRawReader ) 
      return kFALSE ; 
    fRawReaderDelete = kTRUE ; 
    fRawReader->NextEvent() ; 
    fRunNumber = fRawReader->GetRunNumber() ; 
    SetRun(fRunNumber) ; 
    fRawReader->RewindEvents();
    fNumberOfEvents = 999999 ;
    if ( fMaxEvents < 0 ) 
      fMaxEvents = fNumberOfEvents ; 
  } else if (taskIndex == AliQAv1::kESDS) {
    fTasks = AliQAv1::GetTaskName(AliQAv1::kESDS) ; 
    if (!gSystem->AccessPathName("AliESDs.root")) { // AliESDs.root exists
      TFile * esdFile = TFile::Open("AliESDs.root") ;
      fESDTree = static_cast<TTree *> (esdFile->Get("esdTree")) ; 
      if ( !fESDTree ) {
	AliError("esdTree not found") ; 
	return kFALSE ; 
      } else {
	fESD     = new AliESDEvent() ;
	fESD->ReadFromTree(fESDTree) ;
	fESDTree->GetEntry(0) ; 
	fRunNumber = fESD->GetRunNumber() ; 
	fNumberOfEvents = fESDTree->GetEntries() ;
	if ( fMaxEvents < 0 ) 
	  fMaxEvents = fNumberOfEvents ; 
      }
    } else {
      AliError("AliESDs.root not found") ; 
      return kFALSE ; 
    }			
  } else {
    if ( !InitRunLoader() ) { 
      AliWarning("No Run Loader not found") ; 
    } else {
      fNumberOfEvents = fRunLoader->GetNumberOfEvents() ;
      if ( fMaxEvents < 0 ) 
	fMaxEvents = fNumberOfEvents ; 
    }
  }

  // Get Detectors 
  TObjArray* detArray = NULL ; 
  if (fRunLoader) // check if RunLoader exists 
    if ( fRunLoader->GetAliRun() ) { // check if AliRun exists in gAlice.root
      detArray = fRunLoader->GetAliRun()->Detectors() ;
      fRunNumber = fRunLoader->GetHeader()->GetRun() ; 
    }

  // Initialize all QA data makers for all detectors
  fRunNumber = AliCDBManager::Instance()->GetRun() ; 
  if ( !  AliGeomManager::GetGeometry() ) 
    AliGeomManager::LoadGeometry() ; 
	
  InitQADataMaker(fRunNumber, detArray) ; //, fCycleSame, kTRUE, detArray) ; 
  if (fPrintImage) {
    TCanvas fakeCanvas ; 
    TStopwatch timer ; 
    timer.Start() ; 
    while (timer.CpuTime()<5) {
      timer.Continue();
      gSystem->ProcessEvents();
    }
    fakeCanvas.Print(Form("%s%s%d.%s[", AliQAv1::GetImageFileName(), GetMode(), fRunNumber, AliQAv1::GetImageFileFormat()), "ps") ;    
  }    
  return kTRUE ; 
}

//_____________________________________________________________________________
void  AliQAManager::InitQADataMaker(UInt_t run, TObjArray * detArray) 
{
  // Initializes The QADataMaker for all active detectors and for all active tasks 
  fRunNumber = run ; 
  for (UInt_t iDet = 0; iDet < fgkNDetectors ; iDet++) {
    if (IsSelected(AliQAv1::GetDetName(iDet))) {
      AliQADataMaker * qadm = GetQADataMaker(iDet) ;
      if (!qadm) {
	AliError(Form("AliQADataMaker not found for %s", AliQAv1::GetDetName(iDet))) ; 
	fDetectorsW.ReplaceAll(AliQAv1::GetDetName(iDet), "") ; 
      } else {
        if (fQAWriteExpert[iDet])
          qadm->SetWriteExpert() ; 
	AliDebug(AliQAv1::GetQADebugLevel(), Form("Data Maker found for %s %d", qadm->GetName(), qadm->WriteExpert())) ; 
	// skip non active detectors
	if (detArray) {
	  AliModule* det = static_cast<AliModule*>(detArray->FindObject(AliQAv1::GetDetName(iDet))) ;
	  if (!det || !det->IsActive())  
	    continue ;
	}
	// Set default reco params
        Bool_t sameCycle = kFALSE ; 
	for (UInt_t taskIndex = 0; taskIndex < AliQAv1::kNTASKINDEX; taskIndex++) {
	  if ( fTasks.Contains(Form("%d", taskIndex)) ) {
	    qadm->Init(AliQAv1::GetTaskIndex(AliQAv1::GetTaskName(taskIndex)), GetQACycles(qadm->GetUniqueID())) ;
            qadm->StartOfCycle(AliQAv1::GetTaskIndex(AliQAv1::GetTaskName(taskIndex)), run,  sameCycle) ;
            sameCycle = kTRUE ;
	  }
	}
      }
    }
  }
}


//_____________________________________________________________________________
Bool_t AliQAManager::InitRunLoader()
{
  // get or create the run loader
  if (fRunLoader) {
    fCycleSame = kTRUE ; 
  } else {
    if (!gSystem->AccessPathName(fGAliceFileName.Data())) { // galice.root exists
      // load all base libraries to get the loader classes
      TString libs = gSystem->GetLibraries() ;
      for (UInt_t iDet = 0; iDet < fgkNDetectors; iDet++) {
	if (!IsSelected(AliQAv1::GetDetName(iDet))) 
	  continue ; 
	TString detName = AliQAv1::GetDetName(iDet) ;
	if (detName == "HLT") 
	  continue;
	if (libs.Contains("lib" + detName + "base.so")) 
	  continue;
	gSystem->Load("lib" + detName + "base.so");
      }
      fRunLoader = AliRunLoader::Open(fGAliceFileName.Data());
      if (!fRunLoader) {
	AliError(Form("no run loader found in file %s", fGAliceFileName.Data()));
	return kFALSE;
      }
      fRunLoader->CdGAFile();
      if (fRunLoader->LoadgAlice() == 0) {
	gAlice = fRunLoader->GetAliRun();
      }

      if (!gAlice) {
	AliError(Form("no gAlice object found in file %s", fGAliceFileName.Data()));
	return kFALSE;
      }

    } else {               // galice.root does not exist
      AliError(Form("the file %s does not exist", fGAliceFileName.Data()));
      return kFALSE;
    }
  }

  if (!fRunNumber) { 
    fRunLoader->LoadHeader();
    fRunNumber = fRunLoader->GetHeader()->GetRun() ; 
  }
  return kTRUE;
}

//_____________________________________________________________________________
Bool_t AliQAManager::IsSelected(const Char_t * det) 
{
  // check whether detName is contained in detectors
  // if yes, it is removed from detectors
	
  Bool_t rv = kFALSE;
  const TString detName(det) ;
  // always activates Correlation
//  if ( detName.Contains(AliQAv1::GetDetName(AliQAv1::kCORR)) || detName.Contains(AliQAv1::GetDetName(AliQAv1::kGLOBAL))) {
//    rv = kTRUE ; 
//  } else {
    // check if all detectors are selected
    if (fDetectors.Contains("ALL")) {
      fDetectors = "ALL";
      rv = kTRUE;
    } else if ((fDetectors.CompareTo(detName) == 0) ||
               fDetectors.BeginsWith(detName+" ") ||
               fDetectors.EndsWith(" "+detName) ||
               fDetectors.Contains(" "+detName+" ")) {
      rv = kTRUE;
    }
//  }
  return rv ;
}

//_____________________________________________________________________________
Bool_t AliQAManager::Merge(Int_t runNumber, const char *fileName) const
{
  // Merge data from all detectors from a given run in one single file 
  // Merge the QA results from all the data chunks in one run
  // The 'fileName' is name of the output file with merged QA data  
  if ( runNumber == -1)
    runNumber = fRunNumber ; 
  Bool_t rv = MergeData(runNumber,fileName) ; 
  //rv *= MergeResults(runNumber) ; // not needed for the time being
  return rv ; 
}
	
//______________________________________________________________________
Bool_t AliQAManager::MergeXML(const Char_t * collectionFile, const Char_t * subFile, const Char_t * outFile) 
{
  // merges files listed in a xml collection 
  // usage Merge(collection, outputFile))
  //              collection: is a xml collection  
  
  Bool_t rv = kFALSE ; 
  
  if ( strstr(collectionFile, ".xml") == 0 ) {
    AliError("Input collection file must be an \".xml\" file\n") ; 
    return kFALSE ; 
  }
    
  if ( !gGrid ) 
    TGrid::Connect("alien://"); 
  if ( !gGrid ) 
    return kFALSE ; 
 
  // Open the file collection 
  AliInfoClass(Form("*** Create Collection       ***\n***  Wk-Dir = |%s|             \n***  Coll   = |%s|             \n",gSystem->WorkingDirectory(), collectionFile));              	
  
  TGridCollection * collection = (TGridCollection*)gROOT->ProcessLine(Form("TAlienCollection::Open(\"%s\")",collectionFile));
  TGridResult* result = collection->GetGridResult("", 0, 0);
  
  Int_t index = 0  ;
  const Char_t * turl ;
  TFileMerger merger(kFALSE) ; 
  if (!outFile) {
    TString tempo(collectionFile) ; 
    if ( subFile) 
      tempo.ReplaceAll(".xml", subFile) ; 
    else 
      tempo.ReplaceAll(".xml", "_Merged.root") ; 
    outFile = tempo.Data() ; 
  }
  merger.OutputFile(outFile) ; 
  
  while ( (turl = result->GetKey(index, "turl")) ) {
    Char_t * file ;
    if ( subFile )
      file = Form("%s#%s", turl, subFile) ; 
    else 
      file = Form("%s", turl) ; 
    
    AliDebug(AliQAv1::GetQADebugLevel(), Form("%s\n", file)) ; 
    merger.AddFile(file) ; 
    index++ ;  
  }
  
  if (index) 
    merger.Merge() ; 
  
  AliDebug(AliQAv1::GetQADebugLevel(), Form("Files merged into %s\n", outFile)) ;
  
  rv = kFALSE;
  return rv ;
}

//_____________________________________________________________________________
void AliQAManager::MergeCustom() const
{
  // Custom Merge of QA data from all detectors for all runs in one single file 
  // search all the run numbers
  // search all the run numbers
  gROOT->ProcessLine(".! ls *QA*.root > QAtempo.txt") ;
  TString theQAfile ; 
  FILE * theQAfiles = fopen("QAtempo.txt", "r") ; 
  Int_t index = 0 ; 
  TList srunList ; 
  TIter nextRun(&srunList) ; 
  TObjString * srun = NULL ; 
  Int_t loRun = 999999999 ; 
  Int_t hiRun = 0 ; 
  while ( theQAfile.Gets(theQAfiles) ) {
    Bool_t runExist = kFALSE ; 
    TString srunNew(theQAfile(theQAfile.Index("QA.")+3, theQAfile.Index(".root")-(theQAfile.Index("QA.")+3))) ; 
    Int_t cuRun = srunNew.Atoi() ;
    if (cuRun < loRun) 
      loRun = cuRun ; 
    if (cuRun > hiRun)
      hiRun = cuRun ; 
    while ( (srun = static_cast<TObjString *> (nextRun())) ) {
      if ( cuRun == (srun->String()).Atoi() ) {
        runExist = kTRUE ; 
        break ; 
      } 
    }
    nextRun.Reset() ; 
    if ( ! runExist ) 
      srunList.Add(new TObjString(srunNew.Data()));
  }
  nextRun.Reset() ;    
  Int_t runNumber = 0 ; 
  TFile mergedFile(Form("Merged.%s.Data.root", AliQAv1::GetQADataFileName()), "RECREATE") ; 
  TH1I * hisRun = new TH1I("hLMR", "List of merged runs", hiRun-loRun+10, loRun, hiRun+10) ; 
  // create the structure into the merged file
  for (Int_t iDet = 0; iDet < AliQAv1::kNDET ; iDet++) {
    TDirectory * detDir = mergedFile.mkdir(AliQAv1::GetDetName(iDet)) ; 
    for (Int_t taskIndex = 0; taskIndex < AliQAv1::kNTASKINDEX; taskIndex++) {
      detDir->cd() ; 
      TDirectory * taskDir = gDirectory->mkdir(AliQAv1::GetTaskName(taskIndex)) ; 
      for (Int_t es = 0 ; es < AliRecoParam::kNSpecies ; es++) {
        taskDir->cd() ; 
        TDirectory * esDir = gDirectory->mkdir(AliRecoParam::GetEventSpecieName(es)) ;
        esDir->cd() ; 
        gDirectory->mkdir(AliQAv1::GetExpert()) ; 
      }
    }
  }
  while ( (srun = static_cast<TObjString *> (nextRun())) ) {
    runNumber = (srun->String()).Atoi() ; 
    hisRun->Fill(runNumber) ; 
    AliDebug(AliQAv1::GetQADebugLevel(), Form("Merging run number %d", runNumber)) ; 
    // search all QA files for runNumber in the current directory
    Char_t * fileList[AliQAv1::kNDET] ;
    index = 0 ; 
    for (Int_t iDet = 0; iDet < AliQAv1::kNDET ; iDet++) {
      Char_t * file = gSystem->Which(gSystem->WorkingDirectory(), Form("%s.%s.%d.root", AliQAv1::GetDetName(iDet), AliQAv1::GetQADataFileName(), runNumber)); 
      if (file) 
        fileList[index++] = file ;
    }
    if ( index == 0 ) {
      AliError("No QA data file found\n") ; 
      return ; 
    }
    for ( Int_t i = 0 ; i < index ; i++) {
      TFile * inFile = TFile::Open(fileList[i]) ;  
      TList * listOfKeys =inFile->GetListOfKeys() ; 
      TIter nextkey(listOfKeys) ; 
      TObject * obj1 ; 
      TString dirName("") ; 
      while ( (obj1 = nextkey()) ) {
        TDirectory * directoryDet = inFile->GetDirectory(obj1->GetName()) ; 
        if ( directoryDet ) {
          AliDebug(AliQAv1::GetQADebugLevel(), Form("%s dir = %s", inFile->GetName(), directoryDet->GetName())) ; 
          dirName += Form("%s/", directoryDet->GetName() ) ; 
          directoryDet->cd() ;
          TList * listOfTasks = directoryDet->GetListOfKeys() ; 
          TIter nextTask(listOfTasks) ; 
          TObject * obj2 ; 
          while ( (obj2 = nextTask()) ) {
            TDirectory * directoryTask = directoryDet->GetDirectory(obj2->GetName()) ; 
            if ( directoryTask ) {
              dirName += Form("%s", obj2->GetName()) ; 
              AliDebug(AliQAv1::GetQADebugLevel(), Form("%s", dirName.Data())) ; 
              directoryTask->cd() ; 
              TList * listOfEventSpecie = directoryTask->GetListOfKeys() ; 
              TIter nextEventSpecie(listOfEventSpecie) ; 
              TObject * obj3 ; 
              while ( (obj3 = nextEventSpecie()) ) {
                TDirectory * directoryEventSpecie = directoryTask->GetDirectory(obj3->GetName()) ; 
                if ( directoryEventSpecie ) {
                  dirName += Form("/%s/", obj3->GetName()) ; 
                  AliDebug(AliQAv1::GetQADebugLevel(), Form("%s\n", dirName.Data())) ; 
                  directoryEventSpecie->cd() ; 
                  // histograms are here
                  TDirectory * mergedDirectory = mergedFile.GetDirectory(dirName.Data()) ;
                  TList * listOfData = directoryEventSpecie->GetListOfKeys() ; 
                  TIter nextData(listOfData) ; 
                  TKey * key ; 
                  while ( (key = static_cast<TKey *>(nextData())) ) {
                    TString className(key->GetClassName()) ; 
                    if (  className.Contains("TH") || className.Contains("TProfile") ) {
                      TH1 * histIn = static_cast<TH1*> (key->ReadObj()) ; 
                      TH1 * histOu = static_cast<TH1*> (mergedDirectory->FindObjectAny(histIn->GetName())) ; 
                      AliDebug(AliQAv1::GetQADebugLevel(), Form("%s %p %p\n", key->GetName(), histIn, histOu)) ; 
                      mergedDirectory->cd() ; 
                      if ( ! histOu ) {
                        histIn->Write() ; 
                      } else {
                        histOu->Add(histIn) ; 
                        histOu->Write(histOu->GetName(), kOverwrite) ; 
                      }
                    }
                    else if ( className.Contains("TDirectoryFile") ) {
                      TDirectory * dirExpert = directoryEventSpecie->GetDirectory(key->GetName()) ; 
                      dirExpert->cd() ; 
                      TDirectory * mergedDirectoryExpert = mergedDirectory->GetDirectory(dirExpert->GetName()) ; 
                      TList * listOfExpertData = dirExpert->GetListOfKeys() ; 
                      TIter nextExpertData(listOfExpertData) ; 
                      TKey * keykey ; 
                      while ( (keykey = static_cast<TKey *>(nextExpertData())) ) {
                        TString classNameExpert(keykey->GetClassName()) ; 
                        if (classNameExpert.Contains("TH")) {
                          TH1 * histInExpert = static_cast<TH1*> (keykey->ReadObj()) ; 
                          TH1 * histOuExpert = static_cast<TH1*> (mergedDirectory->FindObjectAny(histInExpert->GetName())) ; 
                          mergedDirectoryExpert->cd() ; 
                          if ( ! histOuExpert ) {
                            histInExpert->Write() ; 
                          } else {
                            histOuExpert->Add(histInExpert) ; 
                            histOuExpert->Write(histOuExpert->GetName(), kOverwrite) ; 
                          }
                        }
                      }
                    } else {
                      AliError(Form("No merge done for this object %s in %s", key->GetName(), dirName.Data())) ; 
                    }
                  }
                  dirName.ReplaceAll(Form("/%s/",obj3->GetName()), "") ; 
                }
              }
              dirName.ReplaceAll(obj2->GetName(), "") ; 
            }
          }
        }
      }
      inFile->Close() ; 
    }
  }
  mergedFile.cd() ;
  hisRun->Write() ; 
  mergedFile.Close() ; 
  srunList.Delete() ;   
}

//_____________________________________________________________________________
Bool_t AliQAManager::MergeData(const Int_t runNumber, const char *fileName) const
{
  // Merge QA data from all detectors for a given run in one single file 
  
  TFileMerger merger(kFALSE) ; 
  TString outFileName = fileName;
  if (outFileName.IsNull()) outFileName.Form("Merged.%s.Data.root",AliQAv1::GetQADataFileName());
  merger.OutputFile(outFileName.Data()) ; 
  for (UInt_t iDet = 0; iDet < fgkNDetectors ; iDet++) {
    Char_t * file = gSystem->Which(gSystem->WorkingDirectory(), Form("%s.%s.%d.root", AliQAv1::GetDetName(iDet), AliQAv1::GetQADataFileName(), runNumber)); 
    if (file) 
      merger.AddFile(file);
    delete[] file;
  }
  merger.Merge() ; 
  return kTRUE ; 
}

//_____________________________________________________________________________
Bool_t AliQAManager::MergeResults(const Int_t runNumber) const
{
  // Merge the QA result from all the data chunks in a run 
  // to be revised whwn it will be used (see MergeData)
  TString cmd ;
  cmd = Form(".! ls %s*.root > tempo.txt", AliQAv1::GetQADataFileName()) ; 
  gROOT->ProcessLine(cmd.Data()) ;
  ifstream in("tempo.txt") ; 
  const Int_t chunkMax = 100 ;  
  TString fileList[chunkMax] ;
	
  Int_t index = 0 ; 
  while ( 1 ) {
    TString file ; 
    in >> fileList[index] ; 
    if ( !in.good() ) 
      break ; 
    AliDebug(AliQAv1::GetQADebugLevel(), Form("index = %d file = %s", index, (fileList[index].Data()))) ; 
    index++ ;
  }
	
  if ( index == 0 ) { 
    AliError("No QA Result File found") ; 
    return kFALSE ; 
  }
	
  TFileMerger merger ; 
  TString outFileName ;
  if (runNumber != -1) 
    outFileName = Form("Merged.%s.Result.%d.root",AliQAv1::GetQADataFileName(),runNumber); 
  else 
    outFileName = Form("Merged.%s.Result.root",AliQAv1::GetQADataFileName()); 
  merger.OutputFile(outFileName.Data()) ; 
  for (Int_t ifile = 0 ; ifile < index ; ifile++) {
    TString file = fileList[ifile] ; 
    merger.AddFile(file) ; 
  }
  merger.Merge() ; 
	
  return kTRUE ; 
}

//_____________________________________________________________________________
void AliQAManager::Reset(const Bool_t sameCycle)
{
  // Reset the default data members

  for (UInt_t iDet = 0; iDet < fgkNDetectors ; iDet++) {
    if (IsSelected(AliQAv1::GetDetName(iDet))) {
      AliQADataMaker * qadm = GetQADataMaker(iDet);
      if (qadm) 
        qadm->Reset();
    }
  } 
  if (fRawReaderDelete) { 
    delete fRawReader ;
    fRawReader      = NULL ;
  }

  fCycleSame      = sameCycle ; 
  fESD            = NULL ; 
  fESDTree        = NULL ; 
  //fFirst          = kTRUE ;   
  fNumberOfEvents = 999999 ;  
}

//_____________________________________________________________________________
void AliQAManager::ResetDetectors(AliQAv1::TASKINDEX_t task, AliQAv1::DETECTORINDEX_t det)
{
  //calls ResetDetector of specified or all detectors
  UInt_t iDet    = 0 ;
  UInt_t iDetMax = fgkNDetectors ;    
  if ( det != AliQAv1::kNULLDET ) {
    iDet    = det ;
    iDetMax = det+1 ;    
  }
  
  for (iDet = 0; iDet < iDetMax ; iDet++) {
    if (IsSelected(AliQAv1::GetDetName(iDet))) {
      AliQADataMaker * qadm = GetQADataMaker(iDet);
      qadm->ResetDetector(task);
    }
  }   
}

//_____________________________________________________________________________
AliQAManager * AliQAManager::QAManager(AliQAv1::MODE_t mode, TMap *entryCache, Int_t run) 
{
  // returns AliQAManager instance (singleton)
  
  if (!fgQAInstance) {
    if ( (mode != AliQAv1::kSIMMODE) && (mode != AliQAv1::kRECMODE) && (mode != AliQAv1::kQAMODE) ) {
      AliWarningClass("You must specify kSIMMODE or kRECMODE or kQAMODE") ; 
      return NULL ; 
    }
    fgQAInstance = new AliQAManager(mode) ;  
    if (!entryCache)
      fgQAInstance->Init();
    else
      fgQAInstance->InitFromCache(entryCache,run);
  }
  return fgQAInstance;
}

//_____________________________________________________________________________
AliQAManager * AliQAManager::QAManager(AliQAv1::TASKINDEX_t task) 
{
  // returns AliQAManager instance (singleton)
  return QAManager(AliQAv1::Mode(task)) ; 
}

//_____________________________________________________________________________
TString AliQAManager::Run(const Char_t * detectors, AliRawReader * rawReader, const Bool_t sameCycle) 
{
  //Runs all the QA data Maker for Raws only
	
  fCycleSame       = sameCycle ;
  fRawReader       = rawReader ;
  fDetectors       = detectors ; 
  fDetectorsW      = detectors ; 	
	
  AliCDBManager* man = AliCDBManager::Instance() ; 

  if ( man->GetRun() == -1 ) {// check if run number not set previously and set it from raw data
    rawReader->NextEvent() ; 
    man->SetRun(fRawReader->GetRunNumber()) ;
    rawReader->RewindEvents() ;
  }	
	
  if (!fCycleSame) 
    if ( !InitQA(AliQAv1::kRAWS) ) 
      return "" ; 
  fRawReaderDelete = kFALSE ; 

  DoIt(AliQAv1::kRAWS) ; 
  return 	fDetectorsW ;
}

//_____________________________________________________________________________
TString AliQAManager::Run(const Char_t * detectors, const Char_t * fileName, const Bool_t sameCycle) 
{
  //Runs all the QA data Maker for Raws only

  fCycleSame       = sameCycle ;
  fDetectors       = detectors ; 
  fDetectorsW      = detectors ; 	
	
  AliCDBManager* man = AliCDBManager::Instance() ; 
  if ( man->GetRun() == -1 ) { // check if run number not set previously and set it from AliRun
    AliRunLoader * rl = AliRunLoader::Open("galice.root") ;
    if ( ! rl ) {
      AliFatal("galice.root file not found in current directory") ; 
    } else {
      rl->CdGAFile() ; 
      rl->LoadgAlice() ;
      if ( ! rl->GetAliRun() ) {
	AliFatal("AliRun not found in galice.root") ;
      } else {
	rl->LoadHeader() ;
	man->SetRun(rl->GetHeader()->GetRun());
      }
    }
  }
	
  if (!fCycleSame) 
    if ( !InitQA(AliQAv1::kRAWS, fileName) ) 
      return "" ; 
	
  DoIt(AliQAv1::kRAWS) ; 
  return 	fDetectorsW ;
}

//_____________________________________________________________________________
TString AliQAManager::Run(const Char_t * detectors, const AliQAv1::TASKINDEX_t taskIndex, Bool_t const sameCycle, const  Char_t * fileName ) 
{
  // Runs all the QA data Maker for every detector
	
  fCycleSame       = sameCycle ;
  fDetectors       = detectors ; 
  fDetectorsW      = detectors ; 		
	
  AliCDBManager* man = AliCDBManager::Instance() ; 	
  if ( man->GetRun() == -1 ) { // check if run number not set previously and set it from AliRun
    AliRunLoader * rl = AliRunLoader::Open("galice.root") ;
    if ( ! rl ) {
      AliFatal("galice.root file not found in current directory") ; 
    } else {
      rl->CdGAFile() ; 
      rl->LoadgAlice() ;
      if ( ! rl->GetAliRun() ) {
	AliDebug(AliQAv1::GetQADebugLevel(), "AliRun not found in galice.root") ;
      } else {
	rl->LoadHeader() ;
	man->SetRun(rl->GetHeader()->GetRun()) ;
      }
    }
  }
  if ( taskIndex == AliQAv1::kNULLTASKINDEX) { 
    for (UInt_t task = 0; task < AliQAv1::kNTASKINDEX; task++) {
      if ( fTasks.Contains(Form("%d", task)) ) {
        if (!fCycleSame)
          if ( !InitQA(AliQAv1::GetTaskIndex(AliQAv1::GetTaskName(task)), fileName) ) 
            return "" ;
        DoIt(AliQAv1::GetTaskIndex(AliQAv1::GetTaskName(task))) ;
      }
    }
  } else {
    if (! fCycleSame )
      if ( !InitQA(taskIndex, fileName) ) 
        return "" ; 
    DoIt(taskIndex) ; 
  } 		
  return fDetectorsW ;
}

//_____________________________________________________________________________
void AliQAManager::RunOneEvent(AliRawReader * rawReader) 
{
    //Runs all the QA data Maker for Raws only and on one event only (event loop done by calling method)
  
  if ( ! rawReader ) 
    return ; 
  if (fTasks.Contains(Form("%d", AliQAv1::kRAWS))){
    TString detList ; 
    if ( GetEventInfo()) 
      detList = GetEventInfo()->GetTriggerCluster() ; 
    for (UInt_t iDet = 0; iDet < fgkNDetectors; iDet++) {
      if (!IsSelected(AliQAv1::GetDetName(iDet)) || (!detList.IsNull() && !detList.Contains(AliQAv1::GetDetName(iDet)))) 
        continue;
      AliQADataMaker *qadm = GetQADataMaker(iDet);  
      if (!qadm) 
        continue;
      if ( qadm->IsCycleDone() ) {
        qadm->EndOfCycle() ;
      }
      qadm->SetEventSpecie(fEventSpecie) ;  
      if ( qadm->GetRecoParam() ) 
        if ( AliRecoParam::Convert(qadm->GetRecoParam()->GetEventSpecie()) != AliRecoParam::kDefault) 
          qadm->SetEventSpecie(qadm->GetRecoParam()->GetEventSpecie()) ; 
      qadm->Exec(AliQAv1::kRAWS, rawReader) ;
    }
  }
}

//_____________________________________________________________________________
void AliQAManager::RunOneEvent(AliESDEvent *& esd, AliESDEvent *& hltesd) 
{
    //Runs all the QA data Maker for ESDs only and on one event only (event loop done by calling method)
	
  if (fTasks.Contains(Form("%d", AliQAv1::kESDS))) {
    TString detList ; 
    if ( GetEventInfo()) 
      detList = GetEventInfo()->GetTriggerCluster() ; 
    for (UInt_t iDet = 0; iDet < fgkNDetectors; iDet++) {
      if (!IsSelected(AliQAv1::GetDetName(iDet)) || (!detList.IsNull() && !detList.Contains(AliQAv1::GetDetName(iDet)))) 
        continue;
      AliQADataMaker *qadm = GetQADataMaker(iDet);  
      if (!qadm) 
        continue;
      qadm->SetEventSpecie(fEventSpecie) ;  
      if ( qadm->GetRecoParam() ) 
        if ( AliRecoParam::Convert(qadm->GetRecoParam()->GetEventSpecie()) != AliRecoParam::kDefault)  
          qadm->SetEventSpecie(qadm->GetRecoParam()->GetEventSpecie()) ; 
      if ( qadm->IsCycleDone() ) {
        qadm->EndOfCycle() ;
      }
      if (iDet == AliQAv1::kHLT) {
        TObjArray esdarray;
        esdarray.Add(esd); 
        esdarray.Add(hltesd); 
        qadm->Exec(AliQAv1::kESDS, &esdarray);
      } else {
        qadm->Exec(AliQAv1::kESDS, esd) ;        
      }
    }
  }
}

//_____________________________________________________________________________
void AliQAManager::RunOneEventInOneDetector(Int_t det, TTree * tree) 
{
    // Runs all the QA data Maker for ESDs only and on one event only (event loop done by calling method)
  
  TString detList ; 
  if ( GetEventInfo()) 
    detList = GetEventInfo()->GetTriggerCluster() ; 
  if (!detList.IsNull() && !detList.Contains(AliQAv1::GetDetName(det)))
    return ;

  TString test(tree->GetName()) ; 
  if (fTasks.Contains(Form("%d", AliQAv1::kRECPOINTS))) {
    if (IsSelected(AliQAv1::GetDetName(det))) {      
      AliQADataMaker *qadm = GetQADataMaker(det);  
      if (qadm) { 
        qadm->SetEventSpecie(fEventSpecie) ;  
        if ( qadm->GetRecoParam() ) {
          if ( AliRecoParam::Convert(qadm->GetRecoParam()->GetEventSpecie()) != AliRecoParam::kDefault)  
            qadm->SetEventSpecie(qadm->GetRecoParam()->GetEventSpecie()) ; 
          else
            AliError(Form("%d defined by %s is not an event specie", qadm->GetRecoParam()->GetEventSpecie(), qadm->GetName())) ; 
        }                    
        if ( qadm->IsCycleDone() ) {
          qadm->EndOfCycle() ;
        }
        if (test.Contains("TreeD")) {
          qadm->Exec(AliQAv1::kDIGITSR, tree) ;
        } else  if (test.Contains("TreeR")) {
          qadm->Exec(AliQAv1::kRECPOINTS, tree) ;
        }
      }
    }
  }
}

//_____________________________________________________________________________
Bool_t AliQAManager::Save2OCDB(const Int_t runNumber, AliRecoParam::EventSpecie_t es, const Char_t * year, const Char_t * detectors) const
{
  // take the locasl QA data merge into a single file and save in OCDB 
  Bool_t rv = kTRUE ; 
  TString tmp(AliQAv1::GetQARefStorage()) ; 
  if ( tmp.IsNull() ) { 
    AliError("No storage defined, use AliQAv1::SetQARefStorage") ; 
    return kFALSE ; 
  }
  if ( !(tmp.Contains(AliQAv1::GetLabLocalOCDB()) || tmp.Contains(AliQAv1::GetLabAliEnOCDB())) ) {
    AliError(Form("%s is a wrong storage, use %s or %s", AliQAv1::GetQARefStorage(), AliQAv1::GetLabLocalOCDB().Data(), AliQAv1::GetLabAliEnOCDB().Data())) ; 
    return kFALSE ; 
  }
  TString sdet(detectors) ; 
  sdet.ToUpper() ;
  TFile * inputFile ; 
  if ( sdet.Contains("ALL") ) {
    rv = Merge(runNumber) ; 
    if ( ! rv )
      return kFALSE ; 
    TString inputFileName(Form("Merged.%s.Data.%d.root", AliQAv1::GetQADataFileName(), runNumber)) ; 
    inputFile = TFile::Open(inputFileName.Data()) ; 
    rv = SaveIt2OCDB(runNumber, inputFile, year, es) ; 
  } else {
    for (Int_t index = 0; index < AliQAv1::kNDET; index++) {
      if (sdet.Contains(AliQAv1::GetDetName(index))) {
	TString inputFileName(Form("%s.%s.%d.root", AliQAv1::GetDetName(index), AliQAv1::GetQADataFileName(), runNumber)) ; 
	inputFile = TFile::Open(inputFileName.Data()) ; 			
	rv *= SaveIt2OCDB(runNumber, inputFile, year, es) ; 
      }
    }
  }
  return rv ; 
}

//_____________________________________________________________________________
Bool_t AliQAManager::SaveIt2OCDB(const Int_t runNumber, TFile * inputFile, const Char_t * year, AliRecoParam::EventSpecie_t es) const
{
  // reads the TH1 from file and adds it to appropriate list before saving to OCDB
  Bool_t rv = kTRUE ;
  AliDebug(AliQAv1::GetQADebugLevel(), Form("Saving TH1s in %s to %s", inputFile->GetName(), AliQAv1::GetQARefStorage())) ; 
  if ( ! IsDefaultStorageSet() ) {
    TString tmp( AliQAv1::GetQARefStorage() ) ; 
    if ( tmp.Contains(AliQAv1::GetLabLocalOCDB()) ) 
      Instance()->SetDefaultStorage(AliQAv1::GetQARefStorage()) ;
    else {
      TString tmp1(AliQAv1::GetQARefDefaultStorage()) ; 
      tmp1.Append(year) ; 
      tmp1.Append("?user=alidaq") ; 
      Instance()->SetDefaultStorage(tmp1.Data()) ; 
    }
  }
  Instance()->SetSpecificStorage("*", AliQAv1::GetQARefStorage()) ; 
  if(GetRun() < 0) 
    Instance()->SetRun(runNumber);

  AliCDBMetaData mdr ;
  mdr.SetResponsible("yves schutz");

  for ( Int_t detIndex = 0 ; detIndex < AliQAv1::kNDET ; detIndex++) {
    TDirectory * detDir = inputFile->GetDirectory(AliQAv1::GetDetName(detIndex)) ; 
    if ( detDir ) {
      AliDebug(AliQAv1::GetQADebugLevel(), Form("Entering %s", detDir->GetName())) ;
      AliQAv1::SetQARefDataDirName(es) ;
      TString detOCDBDir(Form("%s/%s/%s", AliQAv1::GetDetName(detIndex), AliQAv1::GetRefOCDBDirName(), AliQAv1::GetRefDataDirName())) ; 
      AliCDBId idr(detOCDBDir.Data(), runNumber, AliCDBRunRange::Infinity())  ;
      TList * listDetQAD = new TList() ;
      TString listName(Form("%s QA data Reference", AliQAv1::GetDetName(detIndex))) ; 
      mdr.SetComment(Form("%s QA stuff", AliQAv1::GetDetName(detIndex)));
      listDetQAD->SetName(listName) ; 
      TList * taskList = detDir->GetListOfKeys() ; 
      TIter nextTask(taskList) ; 
      TKey * taskKey ; 
      while ( (taskKey = static_cast<TKey*>(nextTask())) ) {
	TDirectory * taskDir = detDir->GetDirectory(taskKey->GetName()) ; 
        TDirectory * esDir   = taskDir->GetDirectory(AliRecoParam::GetEventSpecieName(es)) ; 
	AliDebug(AliQAv1::GetQADebugLevel(), Form("Saving %s", esDir->GetName())) ; 
	TObjArray * listTaskQAD = new TObjArray(100) ; 
	listTaskQAD->SetName(Form("%s/%s", taskKey->GetName(), AliRecoParam::GetEventSpecieName(es))) ;
	listDetQAD->Add(listTaskQAD) ; 
	TList * histList = esDir->GetListOfKeys() ; 
	TIter nextHist(histList) ; 
	TKey * histKey ; 
	while ( (histKey = static_cast<TKey*>(nextHist())) ) {
	  TObject * odata = esDir->Get(histKey->GetName()) ; 
	  if ( !odata ) {
	    AliError(Form("%s in %s/%s returns a NULL pointer !!", histKey->GetName(), detDir->GetName(), taskDir->GetName())) ;
	  } else {
            if ( AliQAv1::GetExpert() == histKey->GetName() ) {
              TDirectory * expertDir   = esDir->GetDirectory(histKey->GetName()) ; 
              TList * expertHistList = expertDir->GetListOfKeys() ; 
              TIter nextExpertHist(expertHistList) ; 
              TKey * expertHistKey ; 
              while ( (expertHistKey = static_cast<TKey*>(nextExpertHist())) ) {
                TObject * expertOdata = expertDir->Get(expertHistKey->GetName()) ; 
                if ( !expertOdata ) {
                  AliError(Form("%s in %s/%s/Expert returns a NULL pointer !!", expertHistKey->GetName(), detDir->GetName(), taskDir->GetName())) ;
                } else {
                  AliDebug(AliQAv1::GetQADebugLevel(), Form("Adding %s", expertHistKey->GetName())) ;
                  if ( expertOdata->IsA()->InheritsFrom("TH1") ) {
                    AliDebug(AliQAv1::GetQADebugLevel(), Form("Adding %s", expertHistKey->GetName())) ;
                    TH1 * hExpertdata = static_cast<TH1*>(expertOdata) ; 
                    listTaskQAD->Add(hExpertdata) ; 
                  }                  
                }                
              }
            }
	    AliDebug(AliQAv1::GetQADebugLevel(), Form("Adding %s", histKey->GetName())) ;
	    if ( odata->IsA()->InheritsFrom("TH1") ) {
	      AliDebug(AliQAv1::GetQADebugLevel(), Form("Adding %s", histKey->GetName())) ;
	      TH1 * hdata = static_cast<TH1*>(odata) ; 
	      listTaskQAD->Add(hdata) ; 
	    }
	  }
	}
      }
      Instance()->Put(listDetQAD, idr, &mdr) ;
    }
  }
  return rv ; 
}	

//_____________________________________________________________________________

void AliQAManager::SetCheckerExternParam(AliQAv1::DETECTORINDEX_t detIndex, TList * parameterList) 
{
  // set the external parameters list for the detector checkers 
  AliQACheckerBase * qac = AliQAChecker::Instance()->GetDetQAChecker(detIndex) ; 
  qac->SetExternParamlist(parameterList) ; 
  qac->PrintExternParam() ;  
}

//_____________________________________________________________________________
void AliQAManager::SetEventSpecie(AliRecoParam::EventSpecie_t es) 
{
  // set the current event specie and inform AliQAv1 that this event specie has been encountered
  fEventSpecie = es ; 
  AliQAv1::Instance()->SetEventSpecie(es) ; 
}

//_____________________________________________________________________________
void AliQAManager::SetRecoParam(const Int_t det, const AliDetectorRecoParam *par) 
{
  // Set custom reconstruction parameters for a given detector
  // Single set of parameters for all the events
  GetQADataMaker(det)->SetRecoParam(par) ; 
}

//_____________________________________________________________________________
void AliQAManager::SetWriteExpert()
{
  // enable the writing of QA expert data
  for (UInt_t iDet = 0; iDet < fgkNDetectors; iDet++) {
    if (IsSelected(AliQAv1::GetDetName(iDet))) 
      fQAWriteExpert[iDet] = kTRUE ;
  }
}  

//_____________________________________________________________________________
void AliQAManager::Destroy() {
  // delete AliQAManager instance and
  // all associated objects

  if (fgQAInstance) {
    delete fgQAInstance ;
    fgQAInstance = NULL ;
  }
}

//_____________________________________________________________________________
void AliQAManager::ShowQA() {
  // Show the result of the QA checking
  // for all detectors 
  for ( Int_t detIndex = 0 ; detIndex < AliQAv1::kNDET ; detIndex++) 
    if ( IsSelected(AliQAv1::GetDetName(detIndex)) ) 
      AliQAv1::Instance(AliQAv1::GetDetIndex(AliQAv1::GetDetName(detIndex)))->Show() ; 
}
 AliQAManager.cxx:1
 AliQAManager.cxx:2
 AliQAManager.cxx:3
 AliQAManager.cxx:4
 AliQAManager.cxx:5
 AliQAManager.cxx:6
 AliQAManager.cxx:7
 AliQAManager.cxx:8
 AliQAManager.cxx:9
 AliQAManager.cxx:10
 AliQAManager.cxx:11
 AliQAManager.cxx:12
 AliQAManager.cxx:13
 AliQAManager.cxx:14
 AliQAManager.cxx:15
 AliQAManager.cxx:16
 AliQAManager.cxx:17
 AliQAManager.cxx:18
 AliQAManager.cxx:19
 AliQAManager.cxx:20
 AliQAManager.cxx:21
 AliQAManager.cxx:22
 AliQAManager.cxx:23
 AliQAManager.cxx:24
 AliQAManager.cxx:25
 AliQAManager.cxx:26
 AliQAManager.cxx:27
 AliQAManager.cxx:28
 AliQAManager.cxx:29
 AliQAManager.cxx:30
 AliQAManager.cxx:31
 AliQAManager.cxx:32
 AliQAManager.cxx:33
 AliQAManager.cxx:34
 AliQAManager.cxx:35
 AliQAManager.cxx:36
 AliQAManager.cxx:37
 AliQAManager.cxx:38
 AliQAManager.cxx:39
 AliQAManager.cxx:40
 AliQAManager.cxx:41
 AliQAManager.cxx:42
 AliQAManager.cxx:43
 AliQAManager.cxx:44
 AliQAManager.cxx:45
 AliQAManager.cxx:46
 AliQAManager.cxx:47
 AliQAManager.cxx:48
 AliQAManager.cxx:49
 AliQAManager.cxx:50
 AliQAManager.cxx:51
 AliQAManager.cxx:52
 AliQAManager.cxx:53
 AliQAManager.cxx:54
 AliQAManager.cxx:55
 AliQAManager.cxx:56
 AliQAManager.cxx:57
 AliQAManager.cxx:58
 AliQAManager.cxx:59
 AliQAManager.cxx:60
 AliQAManager.cxx:61
 AliQAManager.cxx:62
 AliQAManager.cxx:63
 AliQAManager.cxx:64
 AliQAManager.cxx:65
 AliQAManager.cxx:66
 AliQAManager.cxx:67
 AliQAManager.cxx:68
 AliQAManager.cxx:69
 AliQAManager.cxx:70
 AliQAManager.cxx:71
 AliQAManager.cxx:72
 AliQAManager.cxx:73
 AliQAManager.cxx:74
 AliQAManager.cxx:75
 AliQAManager.cxx:76
 AliQAManager.cxx:77
 AliQAManager.cxx:78
 AliQAManager.cxx:79
 AliQAManager.cxx:80
 AliQAManager.cxx:81
 AliQAManager.cxx:82
 AliQAManager.cxx:83
 AliQAManager.cxx:84
 AliQAManager.cxx:85
 AliQAManager.cxx:86
 AliQAManager.cxx:87
 AliQAManager.cxx:88
 AliQAManager.cxx:89
 AliQAManager.cxx:90
 AliQAManager.cxx:91
 AliQAManager.cxx:92
 AliQAManager.cxx:93
 AliQAManager.cxx:94
 AliQAManager.cxx:95
 AliQAManager.cxx:96
 AliQAManager.cxx:97
 AliQAManager.cxx:98
 AliQAManager.cxx:99
 AliQAManager.cxx:100
 AliQAManager.cxx:101
 AliQAManager.cxx:102
 AliQAManager.cxx:103
 AliQAManager.cxx:104
 AliQAManager.cxx:105
 AliQAManager.cxx:106
 AliQAManager.cxx:107
 AliQAManager.cxx:108
 AliQAManager.cxx:109
 AliQAManager.cxx:110
 AliQAManager.cxx:111
 AliQAManager.cxx:112
 AliQAManager.cxx:113
 AliQAManager.cxx:114
 AliQAManager.cxx:115
 AliQAManager.cxx:116
 AliQAManager.cxx:117
 AliQAManager.cxx:118
 AliQAManager.cxx:119
 AliQAManager.cxx:120
 AliQAManager.cxx:121
 AliQAManager.cxx:122
 AliQAManager.cxx:123
 AliQAManager.cxx:124
 AliQAManager.cxx:125
 AliQAManager.cxx:126
 AliQAManager.cxx:127
 AliQAManager.cxx:128
 AliQAManager.cxx:129
 AliQAManager.cxx:130
 AliQAManager.cxx:131
 AliQAManager.cxx:132
 AliQAManager.cxx:133
 AliQAManager.cxx:134
 AliQAManager.cxx:135
 AliQAManager.cxx:136
 AliQAManager.cxx:137
 AliQAManager.cxx:138
 AliQAManager.cxx:139
 AliQAManager.cxx:140
 AliQAManager.cxx:141
 AliQAManager.cxx:142
 AliQAManager.cxx:143
 AliQAManager.cxx:144
 AliQAManager.cxx:145
 AliQAManager.cxx:146
 AliQAManager.cxx:147
 AliQAManager.cxx:148
 AliQAManager.cxx:149
 AliQAManager.cxx:150
 AliQAManager.cxx:151
 AliQAManager.cxx:152
 AliQAManager.cxx:153
 AliQAManager.cxx:154
 AliQAManager.cxx:155
 AliQAManager.cxx:156
 AliQAManager.cxx:157
 AliQAManager.cxx:158
 AliQAManager.cxx:159
 AliQAManager.cxx:160
 AliQAManager.cxx:161
 AliQAManager.cxx:162
 AliQAManager.cxx:163
 AliQAManager.cxx:164
 AliQAManager.cxx:165
 AliQAManager.cxx:166
 AliQAManager.cxx:167
 AliQAManager.cxx:168
 AliQAManager.cxx:169
 AliQAManager.cxx:170
 AliQAManager.cxx:171
 AliQAManager.cxx:172
 AliQAManager.cxx:173
 AliQAManager.cxx:174
 AliQAManager.cxx:175
 AliQAManager.cxx:176
 AliQAManager.cxx:177
 AliQAManager.cxx:178
 AliQAManager.cxx:179
 AliQAManager.cxx:180
 AliQAManager.cxx:181
 AliQAManager.cxx:182
 AliQAManager.cxx:183
 AliQAManager.cxx:184
 AliQAManager.cxx:185
 AliQAManager.cxx:186
 AliQAManager.cxx:187
 AliQAManager.cxx:188
 AliQAManager.cxx:189
 AliQAManager.cxx:190
 AliQAManager.cxx:191
 AliQAManager.cxx:192
 AliQAManager.cxx:193
 AliQAManager.cxx:194
 AliQAManager.cxx:195
 AliQAManager.cxx:196
 AliQAManager.cxx:197
 AliQAManager.cxx:198
 AliQAManager.cxx:199
 AliQAManager.cxx:200
 AliQAManager.cxx:201
 AliQAManager.cxx:202
 AliQAManager.cxx:203
 AliQAManager.cxx:204
 AliQAManager.cxx:205
 AliQAManager.cxx:206
 AliQAManager.cxx:207
 AliQAManager.cxx:208
 AliQAManager.cxx:209
 AliQAManager.cxx:210
 AliQAManager.cxx:211
 AliQAManager.cxx:212
 AliQAManager.cxx:213
 AliQAManager.cxx:214
 AliQAManager.cxx:215
 AliQAManager.cxx:216
 AliQAManager.cxx:217
 AliQAManager.cxx:218
 AliQAManager.cxx:219
 AliQAManager.cxx:220
 AliQAManager.cxx:221
 AliQAManager.cxx:222
 AliQAManager.cxx:223
 AliQAManager.cxx:224
 AliQAManager.cxx:225
 AliQAManager.cxx:226
 AliQAManager.cxx:227
 AliQAManager.cxx:228
 AliQAManager.cxx:229
 AliQAManager.cxx:230
 AliQAManager.cxx:231
 AliQAManager.cxx:232
 AliQAManager.cxx:233
 AliQAManager.cxx:234
 AliQAManager.cxx:235
 AliQAManager.cxx:236
 AliQAManager.cxx:237
 AliQAManager.cxx:238
 AliQAManager.cxx:239
 AliQAManager.cxx:240
 AliQAManager.cxx:241
 AliQAManager.cxx:242
 AliQAManager.cxx:243
 AliQAManager.cxx:244
 AliQAManager.cxx:245
 AliQAManager.cxx:246
 AliQAManager.cxx:247
 AliQAManager.cxx:248
 AliQAManager.cxx:249
 AliQAManager.cxx:250
 AliQAManager.cxx:251
 AliQAManager.cxx:252
 AliQAManager.cxx:253
 AliQAManager.cxx:254
 AliQAManager.cxx:255
 AliQAManager.cxx:256
 AliQAManager.cxx:257
 AliQAManager.cxx:258
 AliQAManager.cxx:259
 AliQAManager.cxx:260
 AliQAManager.cxx:261
 AliQAManager.cxx:262
 AliQAManager.cxx:263
 AliQAManager.cxx:264
 AliQAManager.cxx:265
 AliQAManager.cxx:266
 AliQAManager.cxx:267
 AliQAManager.cxx:268
 AliQAManager.cxx:269
 AliQAManager.cxx:270
 AliQAManager.cxx:271
 AliQAManager.cxx:272
 AliQAManager.cxx:273
 AliQAManager.cxx:274
 AliQAManager.cxx:275
 AliQAManager.cxx:276
 AliQAManager.cxx:277
 AliQAManager.cxx:278
 AliQAManager.cxx:279
 AliQAManager.cxx:280
 AliQAManager.cxx:281
 AliQAManager.cxx:282
 AliQAManager.cxx:283
 AliQAManager.cxx:284
 AliQAManager.cxx:285
 AliQAManager.cxx:286
 AliQAManager.cxx:287
 AliQAManager.cxx:288
 AliQAManager.cxx:289
 AliQAManager.cxx:290
 AliQAManager.cxx:291
 AliQAManager.cxx:292
 AliQAManager.cxx:293
 AliQAManager.cxx:294
 AliQAManager.cxx:295
 AliQAManager.cxx:296
 AliQAManager.cxx:297
 AliQAManager.cxx:298
 AliQAManager.cxx:299
 AliQAManager.cxx:300
 AliQAManager.cxx:301
 AliQAManager.cxx:302
 AliQAManager.cxx:303
 AliQAManager.cxx:304
 AliQAManager.cxx:305
 AliQAManager.cxx:306
 AliQAManager.cxx:307
 AliQAManager.cxx:308
 AliQAManager.cxx:309
 AliQAManager.cxx:310
 AliQAManager.cxx:311
 AliQAManager.cxx:312
 AliQAManager.cxx:313
 AliQAManager.cxx:314
 AliQAManager.cxx:315
 AliQAManager.cxx:316
 AliQAManager.cxx:317
 AliQAManager.cxx:318
 AliQAManager.cxx:319
 AliQAManager.cxx:320
 AliQAManager.cxx:321
 AliQAManager.cxx:322
 AliQAManager.cxx:323
 AliQAManager.cxx:324
 AliQAManager.cxx:325
 AliQAManager.cxx:326
 AliQAManager.cxx:327
 AliQAManager.cxx:328
 AliQAManager.cxx:329
 AliQAManager.cxx:330
 AliQAManager.cxx:331
 AliQAManager.cxx:332
 AliQAManager.cxx:333
 AliQAManager.cxx:334
 AliQAManager.cxx:335
 AliQAManager.cxx:336
 AliQAManager.cxx:337
 AliQAManager.cxx:338
 AliQAManager.cxx:339
 AliQAManager.cxx:340
 AliQAManager.cxx:341
 AliQAManager.cxx:342
 AliQAManager.cxx:343
 AliQAManager.cxx:344
 AliQAManager.cxx:345
 AliQAManager.cxx:346
 AliQAManager.cxx:347
 AliQAManager.cxx:348
 AliQAManager.cxx:349
 AliQAManager.cxx:350
 AliQAManager.cxx:351
 AliQAManager.cxx:352
 AliQAManager.cxx:353
 AliQAManager.cxx:354
 AliQAManager.cxx:355
 AliQAManager.cxx:356
 AliQAManager.cxx:357
 AliQAManager.cxx:358
 AliQAManager.cxx:359
 AliQAManager.cxx:360
 AliQAManager.cxx:361
 AliQAManager.cxx:362
 AliQAManager.cxx:363
 AliQAManager.cxx:364
 AliQAManager.cxx:365
 AliQAManager.cxx:366
 AliQAManager.cxx:367
 AliQAManager.cxx:368
 AliQAManager.cxx:369
 AliQAManager.cxx:370
 AliQAManager.cxx:371
 AliQAManager.cxx:372
 AliQAManager.cxx:373
 AliQAManager.cxx:374
 AliQAManager.cxx:375
 AliQAManager.cxx:376
 AliQAManager.cxx:377
 AliQAManager.cxx:378
 AliQAManager.cxx:379
 AliQAManager.cxx:380
 AliQAManager.cxx:381
 AliQAManager.cxx:382
 AliQAManager.cxx:383
 AliQAManager.cxx:384
 AliQAManager.cxx:385
 AliQAManager.cxx:386
 AliQAManager.cxx:387
 AliQAManager.cxx:388
 AliQAManager.cxx:389
 AliQAManager.cxx:390
 AliQAManager.cxx:391
 AliQAManager.cxx:392
 AliQAManager.cxx:393
 AliQAManager.cxx:394
 AliQAManager.cxx:395
 AliQAManager.cxx:396
 AliQAManager.cxx:397
 AliQAManager.cxx:398
 AliQAManager.cxx:399
 AliQAManager.cxx:400
 AliQAManager.cxx:401
 AliQAManager.cxx:402
 AliQAManager.cxx:403
 AliQAManager.cxx:404
 AliQAManager.cxx:405
 AliQAManager.cxx:406
 AliQAManager.cxx:407
 AliQAManager.cxx:408
 AliQAManager.cxx:409
 AliQAManager.cxx:410
 AliQAManager.cxx:411
 AliQAManager.cxx:412
 AliQAManager.cxx:413
 AliQAManager.cxx:414
 AliQAManager.cxx:415
 AliQAManager.cxx:416
 AliQAManager.cxx:417
 AliQAManager.cxx:418
 AliQAManager.cxx:419
 AliQAManager.cxx:420
 AliQAManager.cxx:421
 AliQAManager.cxx:422
 AliQAManager.cxx:423
 AliQAManager.cxx:424
 AliQAManager.cxx:425
 AliQAManager.cxx:426
 AliQAManager.cxx:427
 AliQAManager.cxx:428
 AliQAManager.cxx:429
 AliQAManager.cxx:430
 AliQAManager.cxx:431
 AliQAManager.cxx:432
 AliQAManager.cxx:433
 AliQAManager.cxx:434
 AliQAManager.cxx:435
 AliQAManager.cxx:436
 AliQAManager.cxx:437
 AliQAManager.cxx:438
 AliQAManager.cxx:439
 AliQAManager.cxx:440
 AliQAManager.cxx:441
 AliQAManager.cxx:442
 AliQAManager.cxx:443
 AliQAManager.cxx:444
 AliQAManager.cxx:445
 AliQAManager.cxx:446
 AliQAManager.cxx:447
 AliQAManager.cxx:448
 AliQAManager.cxx:449
 AliQAManager.cxx:450
 AliQAManager.cxx:451
 AliQAManager.cxx:452
 AliQAManager.cxx:453
 AliQAManager.cxx:454
 AliQAManager.cxx:455
 AliQAManager.cxx:456
 AliQAManager.cxx:457
 AliQAManager.cxx:458
 AliQAManager.cxx:459
 AliQAManager.cxx:460
 AliQAManager.cxx:461
 AliQAManager.cxx:462
 AliQAManager.cxx:463
 AliQAManager.cxx:464
 AliQAManager.cxx:465
 AliQAManager.cxx:466
 AliQAManager.cxx:467
 AliQAManager.cxx:468
 AliQAManager.cxx:469
 AliQAManager.cxx:470
 AliQAManager.cxx:471
 AliQAManager.cxx:472
 AliQAManager.cxx:473
 AliQAManager.cxx:474
 AliQAManager.cxx:475
 AliQAManager.cxx:476
 AliQAManager.cxx:477
 AliQAManager.cxx:478
 AliQAManager.cxx:479
 AliQAManager.cxx:480
 AliQAManager.cxx:481
 AliQAManager.cxx:482
 AliQAManager.cxx:483
 AliQAManager.cxx:484
 AliQAManager.cxx:485
 AliQAManager.cxx:486
 AliQAManager.cxx:487
 AliQAManager.cxx:488
 AliQAManager.cxx:489
 AliQAManager.cxx:490
 AliQAManager.cxx:491
 AliQAManager.cxx:492
 AliQAManager.cxx:493
 AliQAManager.cxx:494
 AliQAManager.cxx:495
 AliQAManager.cxx:496
 AliQAManager.cxx:497
 AliQAManager.cxx:498
 AliQAManager.cxx:499
 AliQAManager.cxx:500
 AliQAManager.cxx:501
 AliQAManager.cxx:502
 AliQAManager.cxx:503
 AliQAManager.cxx:504
 AliQAManager.cxx:505
 AliQAManager.cxx:506
 AliQAManager.cxx:507
 AliQAManager.cxx:508
 AliQAManager.cxx:509
 AliQAManager.cxx:510
 AliQAManager.cxx:511
 AliQAManager.cxx:512
 AliQAManager.cxx:513
 AliQAManager.cxx:514
 AliQAManager.cxx:515
 AliQAManager.cxx:516
 AliQAManager.cxx:517
 AliQAManager.cxx:518
 AliQAManager.cxx:519
 AliQAManager.cxx:520
 AliQAManager.cxx:521
 AliQAManager.cxx:522
 AliQAManager.cxx:523
 AliQAManager.cxx:524
 AliQAManager.cxx:525
 AliQAManager.cxx:526
 AliQAManager.cxx:527
 AliQAManager.cxx:528
 AliQAManager.cxx:529
 AliQAManager.cxx:530
 AliQAManager.cxx:531
 AliQAManager.cxx:532
 AliQAManager.cxx:533
 AliQAManager.cxx:534
 AliQAManager.cxx:535
 AliQAManager.cxx:536
 AliQAManager.cxx:537
 AliQAManager.cxx:538
 AliQAManager.cxx:539
 AliQAManager.cxx:540
 AliQAManager.cxx:541
 AliQAManager.cxx:542
 AliQAManager.cxx:543
 AliQAManager.cxx:544
 AliQAManager.cxx:545
 AliQAManager.cxx:546
 AliQAManager.cxx:547
 AliQAManager.cxx:548
 AliQAManager.cxx:549
 AliQAManager.cxx:550
 AliQAManager.cxx:551
 AliQAManager.cxx:552
 AliQAManager.cxx:553
 AliQAManager.cxx:554
 AliQAManager.cxx:555
 AliQAManager.cxx:556
 AliQAManager.cxx:557
 AliQAManager.cxx:558
 AliQAManager.cxx:559
 AliQAManager.cxx:560
 AliQAManager.cxx:561
 AliQAManager.cxx:562
 AliQAManager.cxx:563
 AliQAManager.cxx:564
 AliQAManager.cxx:565
 AliQAManager.cxx:566
 AliQAManager.cxx:567
 AliQAManager.cxx:568
 AliQAManager.cxx:569
 AliQAManager.cxx:570
 AliQAManager.cxx:571
 AliQAManager.cxx:572
 AliQAManager.cxx:573
 AliQAManager.cxx:574
 AliQAManager.cxx:575
 AliQAManager.cxx:576
 AliQAManager.cxx:577
 AliQAManager.cxx:578
 AliQAManager.cxx:579
 AliQAManager.cxx:580
 AliQAManager.cxx:581
 AliQAManager.cxx:582
 AliQAManager.cxx:583
 AliQAManager.cxx:584
 AliQAManager.cxx:585
 AliQAManager.cxx:586
 AliQAManager.cxx:587
 AliQAManager.cxx:588
 AliQAManager.cxx:589
 AliQAManager.cxx:590
 AliQAManager.cxx:591
 AliQAManager.cxx:592
 AliQAManager.cxx:593
 AliQAManager.cxx:594
 AliQAManager.cxx:595
 AliQAManager.cxx:596
 AliQAManager.cxx:597
 AliQAManager.cxx:598
 AliQAManager.cxx:599
 AliQAManager.cxx:600
 AliQAManager.cxx:601
 AliQAManager.cxx:602
 AliQAManager.cxx:603
 AliQAManager.cxx:604
 AliQAManager.cxx:605
 AliQAManager.cxx:606
 AliQAManager.cxx:607
 AliQAManager.cxx:608
 AliQAManager.cxx:609
 AliQAManager.cxx:610
 AliQAManager.cxx:611
 AliQAManager.cxx:612
 AliQAManager.cxx:613
 AliQAManager.cxx:614
 AliQAManager.cxx:615
 AliQAManager.cxx:616
 AliQAManager.cxx:617
 AliQAManager.cxx:618
 AliQAManager.cxx:619
 AliQAManager.cxx:620
 AliQAManager.cxx:621
 AliQAManager.cxx:622
 AliQAManager.cxx:623
 AliQAManager.cxx:624
 AliQAManager.cxx:625
 AliQAManager.cxx:626
 AliQAManager.cxx:627
 AliQAManager.cxx:628
 AliQAManager.cxx:629
 AliQAManager.cxx:630
 AliQAManager.cxx:631
 AliQAManager.cxx:632
 AliQAManager.cxx:633
 AliQAManager.cxx:634
 AliQAManager.cxx:635
 AliQAManager.cxx:636
 AliQAManager.cxx:637
 AliQAManager.cxx:638
 AliQAManager.cxx:639
 AliQAManager.cxx:640
 AliQAManager.cxx:641
 AliQAManager.cxx:642
 AliQAManager.cxx:643
 AliQAManager.cxx:644
 AliQAManager.cxx:645
 AliQAManager.cxx:646
 AliQAManager.cxx:647
 AliQAManager.cxx:648
 AliQAManager.cxx:649
 AliQAManager.cxx:650
 AliQAManager.cxx:651
 AliQAManager.cxx:652
 AliQAManager.cxx:653
 AliQAManager.cxx:654
 AliQAManager.cxx:655
 AliQAManager.cxx:656
 AliQAManager.cxx:657
 AliQAManager.cxx:658
 AliQAManager.cxx:659
 AliQAManager.cxx:660
 AliQAManager.cxx:661
 AliQAManager.cxx:662
 AliQAManager.cxx:663
 AliQAManager.cxx:664
 AliQAManager.cxx:665
 AliQAManager.cxx:666
 AliQAManager.cxx:667
 AliQAManager.cxx:668
 AliQAManager.cxx:669
 AliQAManager.cxx:670
 AliQAManager.cxx:671
 AliQAManager.cxx:672
 AliQAManager.cxx:673
 AliQAManager.cxx:674
 AliQAManager.cxx:675
 AliQAManager.cxx:676
 AliQAManager.cxx:677
 AliQAManager.cxx:678
 AliQAManager.cxx:679
 AliQAManager.cxx:680
 AliQAManager.cxx:681
 AliQAManager.cxx:682
 AliQAManager.cxx:683
 AliQAManager.cxx:684
 AliQAManager.cxx:685
 AliQAManager.cxx:686
 AliQAManager.cxx:687
 AliQAManager.cxx:688
 AliQAManager.cxx:689
 AliQAManager.cxx:690
 AliQAManager.cxx:691
 AliQAManager.cxx:692
 AliQAManager.cxx:693
 AliQAManager.cxx:694
 AliQAManager.cxx:695
 AliQAManager.cxx:696
 AliQAManager.cxx:697
 AliQAManager.cxx:698
 AliQAManager.cxx:699
 AliQAManager.cxx:700
 AliQAManager.cxx:701
 AliQAManager.cxx:702
 AliQAManager.cxx:703
 AliQAManager.cxx:704
 AliQAManager.cxx:705
 AliQAManager.cxx:706
 AliQAManager.cxx:707
 AliQAManager.cxx:708
 AliQAManager.cxx:709
 AliQAManager.cxx:710
 AliQAManager.cxx:711
 AliQAManager.cxx:712
 AliQAManager.cxx:713
 AliQAManager.cxx:714
 AliQAManager.cxx:715
 AliQAManager.cxx:716
 AliQAManager.cxx:717
 AliQAManager.cxx:718
 AliQAManager.cxx:719
 AliQAManager.cxx:720
 AliQAManager.cxx:721
 AliQAManager.cxx:722
 AliQAManager.cxx:723
 AliQAManager.cxx:724
 AliQAManager.cxx:725
 AliQAManager.cxx:726
 AliQAManager.cxx:727
 AliQAManager.cxx:728
 AliQAManager.cxx:729
 AliQAManager.cxx:730
 AliQAManager.cxx:731
 AliQAManager.cxx:732
 AliQAManager.cxx:733
 AliQAManager.cxx:734
 AliQAManager.cxx:735
 AliQAManager.cxx:736
 AliQAManager.cxx:737
 AliQAManager.cxx:738
 AliQAManager.cxx:739
 AliQAManager.cxx:740
 AliQAManager.cxx:741
 AliQAManager.cxx:742
 AliQAManager.cxx:743
 AliQAManager.cxx:744
 AliQAManager.cxx:745
 AliQAManager.cxx:746
 AliQAManager.cxx:747
 AliQAManager.cxx:748
 AliQAManager.cxx:749
 AliQAManager.cxx:750
 AliQAManager.cxx:751
 AliQAManager.cxx:752
 AliQAManager.cxx:753
 AliQAManager.cxx:754
 AliQAManager.cxx:755
 AliQAManager.cxx:756
 AliQAManager.cxx:757
 AliQAManager.cxx:758
 AliQAManager.cxx:759
 AliQAManager.cxx:760
 AliQAManager.cxx:761
 AliQAManager.cxx:762
 AliQAManager.cxx:763
 AliQAManager.cxx:764
 AliQAManager.cxx:765
 AliQAManager.cxx:766
 AliQAManager.cxx:767
 AliQAManager.cxx:768
 AliQAManager.cxx:769
 AliQAManager.cxx:770
 AliQAManager.cxx:771
 AliQAManager.cxx:772
 AliQAManager.cxx:773
 AliQAManager.cxx:774
 AliQAManager.cxx:775
 AliQAManager.cxx:776
 AliQAManager.cxx:777
 AliQAManager.cxx:778
 AliQAManager.cxx:779
 AliQAManager.cxx:780
 AliQAManager.cxx:781
 AliQAManager.cxx:782
 AliQAManager.cxx:783
 AliQAManager.cxx:784
 AliQAManager.cxx:785
 AliQAManager.cxx:786
 AliQAManager.cxx:787
 AliQAManager.cxx:788
 AliQAManager.cxx:789
 AliQAManager.cxx:790
 AliQAManager.cxx:791
 AliQAManager.cxx:792
 AliQAManager.cxx:793
 AliQAManager.cxx:794
 AliQAManager.cxx:795
 AliQAManager.cxx:796
 AliQAManager.cxx:797
 AliQAManager.cxx:798
 AliQAManager.cxx:799
 AliQAManager.cxx:800
 AliQAManager.cxx:801
 AliQAManager.cxx:802
 AliQAManager.cxx:803
 AliQAManager.cxx:804
 AliQAManager.cxx:805
 AliQAManager.cxx:806
 AliQAManager.cxx:807
 AliQAManager.cxx:808
 AliQAManager.cxx:809
 AliQAManager.cxx:810
 AliQAManager.cxx:811
 AliQAManager.cxx:812
 AliQAManager.cxx:813
 AliQAManager.cxx:814
 AliQAManager.cxx:815
 AliQAManager.cxx:816
 AliQAManager.cxx:817
 AliQAManager.cxx:818
 AliQAManager.cxx:819
 AliQAManager.cxx:820
 AliQAManager.cxx:821
 AliQAManager.cxx:822
 AliQAManager.cxx:823
 AliQAManager.cxx:824
 AliQAManager.cxx:825
 AliQAManager.cxx:826
 AliQAManager.cxx:827
 AliQAManager.cxx:828
 AliQAManager.cxx:829
 AliQAManager.cxx:830
 AliQAManager.cxx:831
 AliQAManager.cxx:832
 AliQAManager.cxx:833
 AliQAManager.cxx:834
 AliQAManager.cxx:835
 AliQAManager.cxx:836
 AliQAManager.cxx:837
 AliQAManager.cxx:838
 AliQAManager.cxx:839
 AliQAManager.cxx:840
 AliQAManager.cxx:841
 AliQAManager.cxx:842
 AliQAManager.cxx:843
 AliQAManager.cxx:844
 AliQAManager.cxx:845
 AliQAManager.cxx:846
 AliQAManager.cxx:847
 AliQAManager.cxx:848
 AliQAManager.cxx:849
 AliQAManager.cxx:850
 AliQAManager.cxx:851
 AliQAManager.cxx:852
 AliQAManager.cxx:853
 AliQAManager.cxx:854
 AliQAManager.cxx:855
 AliQAManager.cxx:856
 AliQAManager.cxx:857
 AliQAManager.cxx:858
 AliQAManager.cxx:859
 AliQAManager.cxx:860
 AliQAManager.cxx:861
 AliQAManager.cxx:862
 AliQAManager.cxx:863
 AliQAManager.cxx:864
 AliQAManager.cxx:865
 AliQAManager.cxx:866
 AliQAManager.cxx:867
 AliQAManager.cxx:868
 AliQAManager.cxx:869
 AliQAManager.cxx:870
 AliQAManager.cxx:871
 AliQAManager.cxx:872
 AliQAManager.cxx:873
 AliQAManager.cxx:874
 AliQAManager.cxx:875
 AliQAManager.cxx:876
 AliQAManager.cxx:877
 AliQAManager.cxx:878
 AliQAManager.cxx:879
 AliQAManager.cxx:880
 AliQAManager.cxx:881
 AliQAManager.cxx:882
 AliQAManager.cxx:883
 AliQAManager.cxx:884
 AliQAManager.cxx:885
 AliQAManager.cxx:886
 AliQAManager.cxx:887
 AliQAManager.cxx:888
 AliQAManager.cxx:889
 AliQAManager.cxx:890
 AliQAManager.cxx:891
 AliQAManager.cxx:892
 AliQAManager.cxx:893
 AliQAManager.cxx:894
 AliQAManager.cxx:895
 AliQAManager.cxx:896
 AliQAManager.cxx:897
 AliQAManager.cxx:898
 AliQAManager.cxx:899
 AliQAManager.cxx:900
 AliQAManager.cxx:901
 AliQAManager.cxx:902
 AliQAManager.cxx:903
 AliQAManager.cxx:904
 AliQAManager.cxx:905
 AliQAManager.cxx:906
 AliQAManager.cxx:907
 AliQAManager.cxx:908
 AliQAManager.cxx:909
 AliQAManager.cxx:910
 AliQAManager.cxx:911
 AliQAManager.cxx:912
 AliQAManager.cxx:913
 AliQAManager.cxx:914
 AliQAManager.cxx:915
 AliQAManager.cxx:916
 AliQAManager.cxx:917
 AliQAManager.cxx:918
 AliQAManager.cxx:919
 AliQAManager.cxx:920
 AliQAManager.cxx:921
 AliQAManager.cxx:922
 AliQAManager.cxx:923
 AliQAManager.cxx:924
 AliQAManager.cxx:925
 AliQAManager.cxx:926
 AliQAManager.cxx:927
 AliQAManager.cxx:928
 AliQAManager.cxx:929
 AliQAManager.cxx:930
 AliQAManager.cxx:931
 AliQAManager.cxx:932
 AliQAManager.cxx:933
 AliQAManager.cxx:934
 AliQAManager.cxx:935
 AliQAManager.cxx:936
 AliQAManager.cxx:937
 AliQAManager.cxx:938
 AliQAManager.cxx:939
 AliQAManager.cxx:940
 AliQAManager.cxx:941
 AliQAManager.cxx:942
 AliQAManager.cxx:943
 AliQAManager.cxx:944
 AliQAManager.cxx:945
 AliQAManager.cxx:946
 AliQAManager.cxx:947
 AliQAManager.cxx:948
 AliQAManager.cxx:949
 AliQAManager.cxx:950
 AliQAManager.cxx:951
 AliQAManager.cxx:952
 AliQAManager.cxx:953
 AliQAManager.cxx:954
 AliQAManager.cxx:955
 AliQAManager.cxx:956
 AliQAManager.cxx:957
 AliQAManager.cxx:958
 AliQAManager.cxx:959
 AliQAManager.cxx:960
 AliQAManager.cxx:961
 AliQAManager.cxx:962
 AliQAManager.cxx:963
 AliQAManager.cxx:964
 AliQAManager.cxx:965
 AliQAManager.cxx:966
 AliQAManager.cxx:967
 AliQAManager.cxx:968
 AliQAManager.cxx:969
 AliQAManager.cxx:970
 AliQAManager.cxx:971
 AliQAManager.cxx:972
 AliQAManager.cxx:973
 AliQAManager.cxx:974
 AliQAManager.cxx:975
 AliQAManager.cxx:976
 AliQAManager.cxx:977
 AliQAManager.cxx:978
 AliQAManager.cxx:979
 AliQAManager.cxx:980
 AliQAManager.cxx:981
 AliQAManager.cxx:982
 AliQAManager.cxx:983
 AliQAManager.cxx:984
 AliQAManager.cxx:985
 AliQAManager.cxx:986
 AliQAManager.cxx:987
 AliQAManager.cxx:988
 AliQAManager.cxx:989
 AliQAManager.cxx:990
 AliQAManager.cxx:991
 AliQAManager.cxx:992
 AliQAManager.cxx:993
 AliQAManager.cxx:994
 AliQAManager.cxx:995
 AliQAManager.cxx:996
 AliQAManager.cxx:997
 AliQAManager.cxx:998
 AliQAManager.cxx:999
 AliQAManager.cxx:1000
 AliQAManager.cxx:1001
 AliQAManager.cxx:1002
 AliQAManager.cxx:1003
 AliQAManager.cxx:1004
 AliQAManager.cxx:1005
 AliQAManager.cxx:1006
 AliQAManager.cxx:1007
 AliQAManager.cxx:1008
 AliQAManager.cxx:1009
 AliQAManager.cxx:1010
 AliQAManager.cxx:1011
 AliQAManager.cxx:1012
 AliQAManager.cxx:1013
 AliQAManager.cxx:1014
 AliQAManager.cxx:1015
 AliQAManager.cxx:1016
 AliQAManager.cxx:1017
 AliQAManager.cxx:1018
 AliQAManager.cxx:1019
 AliQAManager.cxx:1020
 AliQAManager.cxx:1021
 AliQAManager.cxx:1022
 AliQAManager.cxx:1023
 AliQAManager.cxx:1024
 AliQAManager.cxx:1025
 AliQAManager.cxx:1026
 AliQAManager.cxx:1027
 AliQAManager.cxx:1028
 AliQAManager.cxx:1029
 AliQAManager.cxx:1030
 AliQAManager.cxx:1031
 AliQAManager.cxx:1032
 AliQAManager.cxx:1033
 AliQAManager.cxx:1034
 AliQAManager.cxx:1035
 AliQAManager.cxx:1036
 AliQAManager.cxx:1037
 AliQAManager.cxx:1038
 AliQAManager.cxx:1039
 AliQAManager.cxx:1040
 AliQAManager.cxx:1041
 AliQAManager.cxx:1042
 AliQAManager.cxx:1043
 AliQAManager.cxx:1044
 AliQAManager.cxx:1045
 AliQAManager.cxx:1046
 AliQAManager.cxx:1047
 AliQAManager.cxx:1048
 AliQAManager.cxx:1049
 AliQAManager.cxx:1050
 AliQAManager.cxx:1051
 AliQAManager.cxx:1052
 AliQAManager.cxx:1053
 AliQAManager.cxx:1054
 AliQAManager.cxx:1055
 AliQAManager.cxx:1056
 AliQAManager.cxx:1057
 AliQAManager.cxx:1058
 AliQAManager.cxx:1059
 AliQAManager.cxx:1060
 AliQAManager.cxx:1061
 AliQAManager.cxx:1062
 AliQAManager.cxx:1063
 AliQAManager.cxx:1064
 AliQAManager.cxx:1065
 AliQAManager.cxx:1066
 AliQAManager.cxx:1067
 AliQAManager.cxx:1068
 AliQAManager.cxx:1069
 AliQAManager.cxx:1070
 AliQAManager.cxx:1071
 AliQAManager.cxx:1072
 AliQAManager.cxx:1073
 AliQAManager.cxx:1074
 AliQAManager.cxx:1075
 AliQAManager.cxx:1076
 AliQAManager.cxx:1077
 AliQAManager.cxx:1078
 AliQAManager.cxx:1079
 AliQAManager.cxx:1080
 AliQAManager.cxx:1081
 AliQAManager.cxx:1082
 AliQAManager.cxx:1083
 AliQAManager.cxx:1084
 AliQAManager.cxx:1085
 AliQAManager.cxx:1086
 AliQAManager.cxx:1087
 AliQAManager.cxx:1088
 AliQAManager.cxx:1089
 AliQAManager.cxx:1090
 AliQAManager.cxx:1091
 AliQAManager.cxx:1092
 AliQAManager.cxx:1093
 AliQAManager.cxx:1094
 AliQAManager.cxx:1095
 AliQAManager.cxx:1096
 AliQAManager.cxx:1097
 AliQAManager.cxx:1098
 AliQAManager.cxx:1099
 AliQAManager.cxx:1100
 AliQAManager.cxx:1101
 AliQAManager.cxx:1102
 AliQAManager.cxx:1103
 AliQAManager.cxx:1104
 AliQAManager.cxx:1105
 AliQAManager.cxx:1106
 AliQAManager.cxx:1107
 AliQAManager.cxx:1108
 AliQAManager.cxx:1109
 AliQAManager.cxx:1110
 AliQAManager.cxx:1111
 AliQAManager.cxx:1112
 AliQAManager.cxx:1113
 AliQAManager.cxx:1114
 AliQAManager.cxx:1115
 AliQAManager.cxx:1116
 AliQAManager.cxx:1117
 AliQAManager.cxx:1118
 AliQAManager.cxx:1119
 AliQAManager.cxx:1120
 AliQAManager.cxx:1121
 AliQAManager.cxx:1122
 AliQAManager.cxx:1123
 AliQAManager.cxx:1124
 AliQAManager.cxx:1125
 AliQAManager.cxx:1126
 AliQAManager.cxx:1127
 AliQAManager.cxx:1128
 AliQAManager.cxx:1129
 AliQAManager.cxx:1130
 AliQAManager.cxx:1131
 AliQAManager.cxx:1132
 AliQAManager.cxx:1133
 AliQAManager.cxx:1134
 AliQAManager.cxx:1135
 AliQAManager.cxx:1136
 AliQAManager.cxx:1137
 AliQAManager.cxx:1138
 AliQAManager.cxx:1139
 AliQAManager.cxx:1140
 AliQAManager.cxx:1141
 AliQAManager.cxx:1142
 AliQAManager.cxx:1143
 AliQAManager.cxx:1144
 AliQAManager.cxx:1145
 AliQAManager.cxx:1146
 AliQAManager.cxx:1147
 AliQAManager.cxx:1148
 AliQAManager.cxx:1149
 AliQAManager.cxx:1150
 AliQAManager.cxx:1151
 AliQAManager.cxx:1152
 AliQAManager.cxx:1153
 AliQAManager.cxx:1154
 AliQAManager.cxx:1155
 AliQAManager.cxx:1156
 AliQAManager.cxx:1157
 AliQAManager.cxx:1158
 AliQAManager.cxx:1159
 AliQAManager.cxx:1160
 AliQAManager.cxx:1161
 AliQAManager.cxx:1162
 AliQAManager.cxx:1163
 AliQAManager.cxx:1164
 AliQAManager.cxx:1165
 AliQAManager.cxx:1166
 AliQAManager.cxx:1167
 AliQAManager.cxx:1168
 AliQAManager.cxx:1169
 AliQAManager.cxx:1170
 AliQAManager.cxx:1171
 AliQAManager.cxx:1172
 AliQAManager.cxx:1173
 AliQAManager.cxx:1174
 AliQAManager.cxx:1175
 AliQAManager.cxx:1176
 AliQAManager.cxx:1177
 AliQAManager.cxx:1178
 AliQAManager.cxx:1179
 AliQAManager.cxx:1180
 AliQAManager.cxx:1181
 AliQAManager.cxx:1182
 AliQAManager.cxx:1183
 AliQAManager.cxx:1184
 AliQAManager.cxx:1185
 AliQAManager.cxx:1186
 AliQAManager.cxx:1187
 AliQAManager.cxx:1188
 AliQAManager.cxx:1189
 AliQAManager.cxx:1190
 AliQAManager.cxx:1191
 AliQAManager.cxx:1192
 AliQAManager.cxx:1193
 AliQAManager.cxx:1194
 AliQAManager.cxx:1195
 AliQAManager.cxx:1196
 AliQAManager.cxx:1197
 AliQAManager.cxx:1198
 AliQAManager.cxx:1199
 AliQAManager.cxx:1200
 AliQAManager.cxx:1201
 AliQAManager.cxx:1202
 AliQAManager.cxx:1203
 AliQAManager.cxx:1204
 AliQAManager.cxx:1205
 AliQAManager.cxx:1206
 AliQAManager.cxx:1207
 AliQAManager.cxx:1208
 AliQAManager.cxx:1209
 AliQAManager.cxx:1210
 AliQAManager.cxx:1211
 AliQAManager.cxx:1212
 AliQAManager.cxx:1213
 AliQAManager.cxx:1214
 AliQAManager.cxx:1215
 AliQAManager.cxx:1216
 AliQAManager.cxx:1217
 AliQAManager.cxx:1218
 AliQAManager.cxx:1219
 AliQAManager.cxx:1220
 AliQAManager.cxx:1221
 AliQAManager.cxx:1222
 AliQAManager.cxx:1223
 AliQAManager.cxx:1224
 AliQAManager.cxx:1225
 AliQAManager.cxx:1226
 AliQAManager.cxx:1227
 AliQAManager.cxx:1228
 AliQAManager.cxx:1229
 AliQAManager.cxx:1230
 AliQAManager.cxx:1231
 AliQAManager.cxx:1232
 AliQAManager.cxx:1233
 AliQAManager.cxx:1234
 AliQAManager.cxx:1235
 AliQAManager.cxx:1236
 AliQAManager.cxx:1237
 AliQAManager.cxx:1238
 AliQAManager.cxx:1239
 AliQAManager.cxx:1240
 AliQAManager.cxx:1241
 AliQAManager.cxx:1242
 AliQAManager.cxx:1243
 AliQAManager.cxx:1244
 AliQAManager.cxx:1245
 AliQAManager.cxx:1246
 AliQAManager.cxx:1247
 AliQAManager.cxx:1248
 AliQAManager.cxx:1249
 AliQAManager.cxx:1250
 AliQAManager.cxx:1251
 AliQAManager.cxx:1252
 AliQAManager.cxx:1253
 AliQAManager.cxx:1254
 AliQAManager.cxx:1255
 AliQAManager.cxx:1256
 AliQAManager.cxx:1257
 AliQAManager.cxx:1258
 AliQAManager.cxx:1259
 AliQAManager.cxx:1260
 AliQAManager.cxx:1261
 AliQAManager.cxx:1262
 AliQAManager.cxx:1263
 AliQAManager.cxx:1264
 AliQAManager.cxx:1265
 AliQAManager.cxx:1266
 AliQAManager.cxx:1267
 AliQAManager.cxx:1268
 AliQAManager.cxx:1269
 AliQAManager.cxx:1270
 AliQAManager.cxx:1271
 AliQAManager.cxx:1272
 AliQAManager.cxx:1273
 AliQAManager.cxx:1274
 AliQAManager.cxx:1275
 AliQAManager.cxx:1276
 AliQAManager.cxx:1277
 AliQAManager.cxx:1278
 AliQAManager.cxx:1279
 AliQAManager.cxx:1280
 AliQAManager.cxx:1281
 AliQAManager.cxx:1282
 AliQAManager.cxx:1283
 AliQAManager.cxx:1284
 AliQAManager.cxx:1285
 AliQAManager.cxx:1286
 AliQAManager.cxx:1287
 AliQAManager.cxx:1288
 AliQAManager.cxx:1289
 AliQAManager.cxx:1290
 AliQAManager.cxx:1291
 AliQAManager.cxx:1292
 AliQAManager.cxx:1293
 AliQAManager.cxx:1294
 AliQAManager.cxx:1295
 AliQAManager.cxx:1296
 AliQAManager.cxx:1297
 AliQAManager.cxx:1298
 AliQAManager.cxx:1299
 AliQAManager.cxx:1300
 AliQAManager.cxx:1301
 AliQAManager.cxx:1302
 AliQAManager.cxx:1303
 AliQAManager.cxx:1304
 AliQAManager.cxx:1305
 AliQAManager.cxx:1306
 AliQAManager.cxx:1307
 AliQAManager.cxx:1308
 AliQAManager.cxx:1309
 AliQAManager.cxx:1310
 AliQAManager.cxx:1311
 AliQAManager.cxx:1312
 AliQAManager.cxx:1313
 AliQAManager.cxx:1314
 AliQAManager.cxx:1315
 AliQAManager.cxx:1316
 AliQAManager.cxx:1317
 AliQAManager.cxx:1318
 AliQAManager.cxx:1319
 AliQAManager.cxx:1320
 AliQAManager.cxx:1321
 AliQAManager.cxx:1322
 AliQAManager.cxx:1323
 AliQAManager.cxx:1324
 AliQAManager.cxx:1325
 AliQAManager.cxx:1326
 AliQAManager.cxx:1327
 AliQAManager.cxx:1328
 AliQAManager.cxx:1329
 AliQAManager.cxx:1330
 AliQAManager.cxx:1331
 AliQAManager.cxx:1332
 AliQAManager.cxx:1333
 AliQAManager.cxx:1334
 AliQAManager.cxx:1335
 AliQAManager.cxx:1336
 AliQAManager.cxx:1337
 AliQAManager.cxx:1338
 AliQAManager.cxx:1339
 AliQAManager.cxx:1340
 AliQAManager.cxx:1341
 AliQAManager.cxx:1342
 AliQAManager.cxx:1343
 AliQAManager.cxx:1344
 AliQAManager.cxx:1345
 AliQAManager.cxx:1346
 AliQAManager.cxx:1347
 AliQAManager.cxx:1348
 AliQAManager.cxx:1349
 AliQAManager.cxx:1350
 AliQAManager.cxx:1351
 AliQAManager.cxx:1352
 AliQAManager.cxx:1353
 AliQAManager.cxx:1354
 AliQAManager.cxx:1355
 AliQAManager.cxx:1356
 AliQAManager.cxx:1357
 AliQAManager.cxx:1358
 AliQAManager.cxx:1359
 AliQAManager.cxx:1360
 AliQAManager.cxx:1361
 AliQAManager.cxx:1362
 AliQAManager.cxx:1363
 AliQAManager.cxx:1364
 AliQAManager.cxx:1365
 AliQAManager.cxx:1366
 AliQAManager.cxx:1367
 AliQAManager.cxx:1368
 AliQAManager.cxx:1369
 AliQAManager.cxx:1370
 AliQAManager.cxx:1371
 AliQAManager.cxx:1372
 AliQAManager.cxx:1373
 AliQAManager.cxx:1374
 AliQAManager.cxx:1375
 AliQAManager.cxx:1376
 AliQAManager.cxx:1377
 AliQAManager.cxx:1378
 AliQAManager.cxx:1379
 AliQAManager.cxx:1380
 AliQAManager.cxx:1381
 AliQAManager.cxx:1382
 AliQAManager.cxx:1383
 AliQAManager.cxx:1384
 AliQAManager.cxx:1385
 AliQAManager.cxx:1386
 AliQAManager.cxx:1387
 AliQAManager.cxx:1388
 AliQAManager.cxx:1389
 AliQAManager.cxx:1390
 AliQAManager.cxx:1391
 AliQAManager.cxx:1392
 AliQAManager.cxx:1393
 AliQAManager.cxx:1394
 AliQAManager.cxx:1395
 AliQAManager.cxx:1396
 AliQAManager.cxx:1397
 AliQAManager.cxx:1398
 AliQAManager.cxx:1399
 AliQAManager.cxx:1400
 AliQAManager.cxx:1401
 AliQAManager.cxx:1402
 AliQAManager.cxx:1403
 AliQAManager.cxx:1404
 AliQAManager.cxx:1405
 AliQAManager.cxx:1406
 AliQAManager.cxx:1407
 AliQAManager.cxx:1408
 AliQAManager.cxx:1409
 AliQAManager.cxx:1410
 AliQAManager.cxx:1411
 AliQAManager.cxx:1412
 AliQAManager.cxx:1413
 AliQAManager.cxx:1414
 AliQAManager.cxx:1415
 AliQAManager.cxx:1416
 AliQAManager.cxx:1417
 AliQAManager.cxx:1418
 AliQAManager.cxx:1419
 AliQAManager.cxx:1420
 AliQAManager.cxx:1421
 AliQAManager.cxx:1422
 AliQAManager.cxx:1423
 AliQAManager.cxx:1424
 AliQAManager.cxx:1425
 AliQAManager.cxx:1426
 AliQAManager.cxx:1427
 AliQAManager.cxx:1428
 AliQAManager.cxx:1429
 AliQAManager.cxx:1430
 AliQAManager.cxx:1431
 AliQAManager.cxx:1432
 AliQAManager.cxx:1433
 AliQAManager.cxx:1434
 AliQAManager.cxx:1435
 AliQAManager.cxx:1436
 AliQAManager.cxx:1437
 AliQAManager.cxx:1438
 AliQAManager.cxx:1439
 AliQAManager.cxx:1440
 AliQAManager.cxx:1441
 AliQAManager.cxx:1442
 AliQAManager.cxx:1443
 AliQAManager.cxx:1444
 AliQAManager.cxx:1445
 AliQAManager.cxx:1446
 AliQAManager.cxx:1447
 AliQAManager.cxx:1448
 AliQAManager.cxx:1449
 AliQAManager.cxx:1450
 AliQAManager.cxx:1451
 AliQAManager.cxx:1452
 AliQAManager.cxx:1453
 AliQAManager.cxx:1454
 AliQAManager.cxx:1455
 AliQAManager.cxx:1456
 AliQAManager.cxx:1457
 AliQAManager.cxx:1458
 AliQAManager.cxx:1459
 AliQAManager.cxx:1460
 AliQAManager.cxx:1461
 AliQAManager.cxx:1462
 AliQAManager.cxx:1463
 AliQAManager.cxx:1464
 AliQAManager.cxx:1465
 AliQAManager.cxx:1466
 AliQAManager.cxx:1467
 AliQAManager.cxx:1468
 AliQAManager.cxx:1469
 AliQAManager.cxx:1470
 AliQAManager.cxx:1471
 AliQAManager.cxx:1472
 AliQAManager.cxx:1473
 AliQAManager.cxx:1474
 AliQAManager.cxx:1475
 AliQAManager.cxx:1476
 AliQAManager.cxx:1477
 AliQAManager.cxx:1478
 AliQAManager.cxx:1479
 AliQAManager.cxx:1480
 AliQAManager.cxx:1481
 AliQAManager.cxx:1482
 AliQAManager.cxx:1483
 AliQAManager.cxx:1484
 AliQAManager.cxx:1485
 AliQAManager.cxx:1486
 AliQAManager.cxx:1487
 AliQAManager.cxx:1488
 AliQAManager.cxx:1489
 AliQAManager.cxx:1490
 AliQAManager.cxx:1491
 AliQAManager.cxx:1492
 AliQAManager.cxx:1493
 AliQAManager.cxx:1494
 AliQAManager.cxx:1495
 AliQAManager.cxx:1496
 AliQAManager.cxx:1497
 AliQAManager.cxx:1498
 AliQAManager.cxx:1499
 AliQAManager.cxx:1500
 AliQAManager.cxx:1501
 AliQAManager.cxx:1502
 AliQAManager.cxx:1503
 AliQAManager.cxx:1504
 AliQAManager.cxx:1505
 AliQAManager.cxx:1506
 AliQAManager.cxx:1507
 AliQAManager.cxx:1508
 AliQAManager.cxx:1509
 AliQAManager.cxx:1510
 AliQAManager.cxx:1511
 AliQAManager.cxx:1512
 AliQAManager.cxx:1513
 AliQAManager.cxx:1514
 AliQAManager.cxx:1515
 AliQAManager.cxx:1516
 AliQAManager.cxx:1517
 AliQAManager.cxx:1518
 AliQAManager.cxx:1519
 AliQAManager.cxx:1520
 AliQAManager.cxx:1521
 AliQAManager.cxx:1522
 AliQAManager.cxx:1523
 AliQAManager.cxx:1524
 AliQAManager.cxx:1525
 AliQAManager.cxx:1526
 AliQAManager.cxx:1527
 AliQAManager.cxx:1528
 AliQAManager.cxx:1529
 AliQAManager.cxx:1530
 AliQAManager.cxx:1531
 AliQAManager.cxx:1532
 AliQAManager.cxx:1533
 AliQAManager.cxx:1534
 AliQAManager.cxx:1535
 AliQAManager.cxx:1536
 AliQAManager.cxx:1537
 AliQAManager.cxx:1538
 AliQAManager.cxx:1539
 AliQAManager.cxx:1540
 AliQAManager.cxx:1541
 AliQAManager.cxx:1542
 AliQAManager.cxx:1543
 AliQAManager.cxx:1544
 AliQAManager.cxx:1545
 AliQAManager.cxx:1546
 AliQAManager.cxx:1547
 AliQAManager.cxx:1548
 AliQAManager.cxx:1549
 AliQAManager.cxx:1550
 AliQAManager.cxx:1551
 AliQAManager.cxx:1552
 AliQAManager.cxx:1553
 AliQAManager.cxx:1554
 AliQAManager.cxx:1555
 AliQAManager.cxx:1556
 AliQAManager.cxx:1557
 AliQAManager.cxx:1558
 AliQAManager.cxx:1559
 AliQAManager.cxx:1560
 AliQAManager.cxx:1561
 AliQAManager.cxx:1562
 AliQAManager.cxx:1563
 AliQAManager.cxx:1564
 AliQAManager.cxx:1565
 AliQAManager.cxx:1566
 AliQAManager.cxx:1567
 AliQAManager.cxx:1568
 AliQAManager.cxx:1569
 AliQAManager.cxx:1570
 AliQAManager.cxx:1571
 AliQAManager.cxx:1572
 AliQAManager.cxx:1573
 AliQAManager.cxx:1574
 AliQAManager.cxx:1575
 AliQAManager.cxx:1576
 AliQAManager.cxx:1577