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


// --- ROOT system ---
#include <TH1F.h> 
#include <TIterator.h> 
#include <TString.h> 
#include <TPaveText.h> 
#include <TObjArray.h>
#include <TParameter.h> 
#include <TList.h>

// --- AliRoot header files ---
#include "AliLog.h"
#include "AliCDBManager.h"
#include "AliCDBEntry.h"
#include "AliQAThresholds.h"
#include "AliZDCQAChecker.h"

ClassImp(AliZDCQAChecker)

 //_________________________________________________________________
AliZDCQAChecker::AliZDCQAChecker() : 
  AliQACheckerBase("ZDC","ZDC Quality Assurance Data Maker"), 
  fQAThresholds(NULL),
  fZDCQAThr_ZNCTDCRefThr(-322.7),
  fZDCQAThr_ZPCTDCRefThr(-321.4),
  fZDCQAThr_ZNATDCRefThr(-321.6),
  fZDCQAThr_ZPATDCRefThr(-321.7),
  fZDCQAThr_ZEM1TDCRefThr(-316.2),
  fZDCQAThr_ZEM2TDCRefThr(-315.4)
{
   //constructor
}

//____________________________________________________________________________
void AliZDCQAChecker::Check(Double_t *  test, AliQAv1::ALITASK_t index, TObjArray ** list,
      const AliDetectorRecoParam * /*recoParam*/) 
{
  // Checks the QA histograms on the input list: 
  //
  const char* taskName = AliQAv1::GetAliTaskName(index);
  //printf("\n\tAliZDCQAChecker -> checking QA histos for task %s\n",taskName);
  //
  Int_t ihitHisto=0, idigHisto=0;
  Int_t irecHisto=0, irawHisto=0, esdInd=0;

  TObjArray messages;
  messages.SetOwner(kTRUE);
  
  GetThresholds();

  for(Int_t specie = 0; specie<AliRecoParam::kNSpecies; specie++){
    Int_t count = 0; 
    if(!AliQAv1::Instance(AliQAv1::GetDetIndex(GetName()))->IsEventSpecieSet(AliRecoParam::ConvertIndex(specie))) 
      continue ;
    //printf("\tAliZDCQAChecker -> specie %d, AliRecoParam::ConvertIndex(specie) %d, AliRecoParam::kLowMult %d, IsEventSpecieSet(specie) %d\n",
    //  specie, AliRecoParam::ConvertIndex(specie) ,AliRecoParam::kLowMult,
    //  AliQAv1::Instance(AliQAv1::GetDetIndex(GetName()))->IsEventSpecieSet(AliRecoParam::ConvertIndex(specie)));
    
    // ====================================================================
    // 	Checks for p-p events
    // ====================================================================
    if(AliRecoParam::ConvertIndex(specie) == AliRecoParam::kLowMult){
      if(list[specie]->GetEntries()==0){  
        AliWarning("\t The list to be checked is empty!"); // nothing to check
        return;
      }
      //AliDebug(AliQAv1::GetQADebugLevel(), Form("\n\tAliZDCQAChecker-> checking QA histograms for task %s\n\n",taskName));
      TIter next(list[specie]); 
      count = 0; 
      TH1 * hdata;	  
      
      Float_t res=0., percentageDiff=0.30;
      Float_t meanZNA=0., meanZNC=0., meanZPA=0., meanZPC=0.;
      Float_t pmCZNA=0., pmCZNC=0., pmCZPA=0., pmCZPC=0.;
      Float_t pmQZNA=0., pmQZNC=0., pmQZPA=0., pmQZPC=0.;
      Float_t sumADCZNA=0., sumADCZNC=0., sumADCZPA=0., sumADCZPC=0.;
      Float_t adcCZNA=0., adcCZNC=0., adcCZPA=0., adcCZPC=0.;
      Float_t adcQZNA=0., adcQZNC=0., adcQZPA=0., adcQZPC=0.;
      Int_t nentries = -99;
      
      while((hdata = dynamic_cast<TH1 *>(next()))){
        if(hdata){ 
          // -------------------------------------------------------------------
          if(index == AliQAv1::kSIM){
            //AliDebug(AliQAv1::GetQADebugLevel(), Form("\tAliZDCQAChecker-> checking histo %s",hdata->GetName()));
            // Check HITS histos
            //
	    if(!(strncmp(hdata->GetName(),"hHits",5))){
              if(hdata->GetEntries()>0){
	        if(ihitHisto==0)      meanZNC = hdata->GetMean();
		else if(ihitHisto==1) meanZNA = hdata->GetMean();
		else if(ihitHisto==2) meanZPC = hdata->GetMean();
		else if(ihitHisto==3) meanZPA = hdata->GetMean();
	        else if(ihitHisto==4) pmQZNC = hdata->GetMean();
	        else if(ihitHisto==5) pmQZNA = hdata->GetMean();
	        else if(ihitHisto==6) pmQZPC = hdata->GetMean();
	        else if(ihitHisto==7) pmQZPA = hdata->GetMean();
	        else if(ihitHisto==8)  pmCZNC = hdata->GetMean();
	        else if(ihitHisto==9)  pmCZNA = hdata->GetMean();
	        else if(ihitHisto==10) pmCZPC = hdata->GetMean();
	        else if(ihitHisto==11) pmCZPA = hdata->GetMean();
	      }
	      //
	      // --- Check whether (sum PMQi - PMC)/PMC < percentageDiff
	      if(ihitHisto==11){
	        if(TMath::Abs(meanZNC)>1.e-10){
                  if((TMath::Abs(pmQZNC-pmCZNC)/pmCZNC)<percentageDiff) 
                    res=1.;
                  else 
                    res=.5;
                  test[specie] += res;
                  count++;
		}
	        if(TMath::Abs(meanZNA)>1.e-10){
                  if((TMath::Abs(pmQZNA-pmCZNA)/pmCZNA)<percentageDiff) 
                    res=1.;
                  else percentageDiff=
                    res=.5;
                  test[specie] += res;
                  count++;
		}
	        if(TMath::Abs(meanZPC)>1.e-10){
                  if((TMath::Abs(pmQZPC-pmCZPC)/pmCZPC)<percentageDiff) 
                    res=1.;
                  else 
                    res=.5;
                  test[specie] += res;
                  count++;
		}
	        if(TMath::Abs(meanZPA)>1.e-10){
                  if((TMath::Abs(pmQZPA-pmCZPA)/pmCZPA)<percentageDiff) 
                    res=1.;
                  else 
                    res=.5;
                  test[specie] += res;
                  count++;
		}
	      }
	      ihitHisto++;
            }
            // Check DIGIT HIGH GAIN CHAIN histos
            else if(!(strncmp(hdata->GetName(),"hDig",4))){ 
              if(hdata->GetEntries()>0){
	        if(idigHisto==0)      sumADCZNC = hdata->GetMean();
		else if(idigHisto==1) sumADCZNA = hdata->GetMean();
		else if(idigHisto==2) sumADCZPC = hdata->GetMean();
		else if(idigHisto==3) sumADCZPA = hdata->GetMean();
	        else if(idigHisto==4) pmQZNC = hdata->GetMean();
	        else if(idigHisto==5) pmQZNA = hdata->GetMean();
	        else if(idigHisto==6) pmQZPC = hdata->GetMean();
	        else if(idigHisto==7) pmQZPA = hdata->GetMean();
	        else if(idigHisto==8)  pmCZNC = hdata->GetMean();
	        else if(idigHisto==9)  pmCZNA = hdata->GetMean();
	        else if(idigHisto==10) pmCZPC = hdata->GetMean();
	        else if(idigHisto==11) pmCZPA = hdata->GetMean();
	      }
	      //
	      // --- Check whether (sum PMQi - PMC)/PMC < percentageDiff
	      if(idigHisto==11){
	        if(TMath::Abs(sumADCZNC)>1.e-10){
                  if((TMath::Abs(adcQZNC-adcCZNC)/adcCZNC)<percentageDiff) 
                    res=1.;
                  else 
                    res=.5;
                  test[specie] += res;
                  count++;
		}
	        if(TMath::Abs(sumADCZNA)>1.e-10){
                  if((TMath::Abs(adcQZNA-adcCZNA)/adcCZNA)<percentageDiff) 
                    res=1.;
                  else 
                    res=.5;
                  test[specie] += res;
                  count++;
		}
	        if(TMath::Abs(sumADCZPC)>1.e-10){
                  if((TMath::Abs(adcQZPC-adcCZPC)/adcCZPC)<percentageDiff) 
                    res=1.;
                  else 
                    res=.5;
                  test[specie] += res;
                  count++;
		}
	        if(TMath::Abs(sumADCZPA)>1.e-10){
                  if((TMath::Abs(adcQZPA-adcCZPA)/adcCZPA)<percentageDiff) 
                    res=1.;
                  else 
                    res=.5;
                  test[specie] += res;
                  count++;
		}
	      }
	      idigHisto++;	      
            }
          } 
          // -------------------------------------------------------------------
	  else if(index == AliQAv1::kRAW) {
	    //
            // Check RAW HIGH GAIN CHAIN histos
            
      	    messages.Clear();
	    
	    Bool_t iDetPM = kTRUE;
	    // --- Checks
	    if(irawHisto==20) nentries = Int_t (hdata->GetEntries());
	    if(irawHisto==22){ 
	      Float_t resADC=0.;
	      for(int ibin=1; ibin<=hdata->GetNbinsX(); ibin++){
		 if((hdata->GetBinContent(ibin))>10.){
		   res=1.;
		 }
		 else if((hdata->GetBinContent(ibin))<10.){
		   res=0.5;
		   if(ibin==1 || ibin==6 || ibin==11 || ibin==12 || ibin==13 || ibin==18){
		     iDetPM = kFALSE;
		   }
		 }
		 //
		 resADC += res;
            	 test[specie] += res;
            	 count++;
	      }
	      if(nentries != -99) messages.Add(new TObjString(Form("#entries %d",nentries)));
	      else messages.Add(new TObjString("#entries not known"));
	      //
	      Float_t rv=1.;
	      if(hdata->GetNbinsX() != 0) rv = resADC/hdata->GetNbinsX();
	      if(rv == 1.) messages.Add(new TObjString("ADCs are OK!")); 
	      else if(iDetPM==kFALSE){
	        messages.Add(new TObjString("Problem with some ADC!"));
                messages.Add(new TObjString("IF THIS IS A PHYSICS RUN"));
	      }
	      else if(iDetPM==kTRUE) messages.Add(new TObjString("Minor problem with ADCs"));
	      SetupHisto(messages, *hdata, rv);
	    }
	    else if(irawHisto==23){
	      // Reference values must be inserted in the order:
	      // ZNC, ZPC, ZNA, ZPA, ZEM1, ZEM2
	      // 2012 -> Reference values from RUN 177399
	      //Double_t refTDCs[6] = {-322.7,-321.4,-321.6,-321.7,-316.2,-315.4};
	      //  11/2012 -> QA threshold values x TDCs are read from configuration file
	      Double_t refTDCs[6];
	      refTDCs[0] = fZDCQAThr_ZNCTDCRefThr;
	      refTDCs[1] = fZDCQAThr_ZPCTDCRefThr;
	      refTDCs[2] = fZDCQAThr_ZNATDCRefThr;
	      refTDCs[3] = fZDCQAThr_ZPATDCRefThr;
	      refTDCs[4] = fZDCQAThr_ZEM1TDCRefThr;
	      refTDCs[5] = fZDCQAThr_ZEM2TDCRefThr;
	      //
	      Float_t resTDC=0.;
	      for(int ibin=1; ibin<=hdata->GetNbinsX(); ibin++){
		 if(TMath::Abs((hdata->GetBinContent(ibin))-refTDCs[ibin-1])<3.){
		   res=1.;
		 }
		 else if(TMath::Abs((hdata->GetBinContent(ibin))-refTDCs[ibin-1])<5.){
		   res=0.8;
            	 }
		 else res=0.5;
		 //
		 resTDC += res;
		 test[specie] += res;
            	 count++;
	      }
	      Float_t rv=1.;
	      if(hdata->GetNbinsX() != 0) rv = resTDC/hdata->GetNbinsX();
	      if(rv == 1.) messages.Add(new TObjString("TDCs are OK!")); 
	      else if(rv<1. && rv>0.75) messages.Add(new TObjString("Minor problem with TDCs"));
	      else{
	        messages.Add(new TObjString("Serious problem in ZDC timing"));
                messages.Add(new TObjString("IF THIS IS A PHYSICS RUN"));
	      }
	      SetupHisto(messages, *hdata, rv);
	    }
	    irawHisto++;
	    
          } 
          // -------------------------------------------------------------------
	  else if(index == AliQAv1::kREC) {
	    //
            // Check REC HIGH GAIN CHAIN histos
            if(hdata->GetEntries()>0){
	      if(irecHisto==0)       meanZNC = hdata->GetMean();
	      else if(irecHisto==1)  meanZNA = hdata->GetMean();
	      else if(irecHisto==2)  meanZPC = hdata->GetMean();
	      else if(irecHisto==3)  meanZPA = hdata->GetMean();
	      else if(irecHisto==4)  pmQZNC = hdata->GetMean();
	      else if(irecHisto==5)  pmQZNA = hdata->GetMean();
	      else if(irecHisto==6)  pmQZPC = hdata->GetMean();
	      else if(irecHisto==7)  pmQZPA = hdata->GetMean();
	      else if(irecHisto==8)  pmCZNC = hdata->GetMean();
	      else if(irecHisto==9)  pmCZNA = hdata->GetMean();
	      else if(irecHisto==10) pmCZPC = hdata->GetMean();
	      else if(irecHisto==11) pmCZPA = hdata->GetMean();
	    }
	    //
	    // --- Check whether (sum PMQi - PMC)/PMC < percentageDiff
	    if(irecHisto==11){
	      if(TMath::Abs(meanZNC)>1.e-10){
            	if((TMath::Abs(pmQZNC-pmCZNC)/pmCZNC)<percentageDiff) 
            	  res=1.;
            	else 
            	  res=.5;
            	test[specie] += res;
            	count++;
	      }
	      if(TMath::Abs(meanZNA)>1.e-10){
            	if((TMath::Abs(pmQZNA-pmCZNA)/pmCZNA)<percentageDiff) 
            	  res=1.;
            	else 
            	  res=.5;
            	test[specie] += res;
            	count++;
	      }
	      if(TMath::Abs(meanZPC)>1.e-10){
            	if((TMath::Abs(pmQZPC-pmCZPC)/pmCZPC)<percentageDiff) 
            	  res=1.;
            	else 
            	  res=.5;
            	test[specie] += res;
            	count++;
	      }
	      if(TMath::Abs(meanZPA)>1.e-10){
            	if((TMath::Abs(pmQZPA-pmCZPA)/pmCZPA)<percentageDiff) 
            	  res=1.;
            	else 
            	  res=.5;
            	test[specie] += res;
            	count++;
	      }
	    }
	    irecHisto++;	    
          } 
          // -------------------------------------------------------------------
	  else if(index == AliQAv1::kESD) {
	    //
            // Check ESD HIGH GAIN CHAIN histos
            if(hdata->GetEntries()>0){
	      if(esdInd==0)      sumADCZNC = hdata->GetMean();
	      else if(esdInd==1) sumADCZNA = hdata->GetMean();
	      else if(esdInd==2) sumADCZPC = hdata->GetMean();
	      else if(esdInd==3) sumADCZPA = hdata->GetMean();
	      else if(esdInd==6)  pmQZNC = hdata->GetMean();
	      else if(esdInd==7)  pmQZNA = hdata->GetMean();
	      else if(esdInd==8)  pmQZPC = hdata->GetMean();
	      else if(esdInd==9) pmQZPA = hdata->GetMean();
	      else if(esdInd==10) pmCZNC = hdata->GetMean();
	      else if(esdInd==11) pmCZNA = hdata->GetMean();
	      else if(esdInd==12) pmCZPC = hdata->GetMean();
	      else if(esdInd==13) pmCZPA = hdata->GetMean();
	    }
	    //
	    // --- Check whether (sum PMQi - PMC)/PMC < percentageDiff
	    if(esdInd==15){
	      if(TMath::Abs(sumADCZNC)>1.e-10){
            	if((TMath::Abs(pmQZNC-pmCZNC)/pmCZNC)<percentageDiff) 
            	  res=1.;
            	else 
            	  res=.5;
            	test[specie] += res;
            	count++;
	      }
	      if(TMath::Abs(sumADCZNA)>1.e-10){
            	if((TMath::Abs(pmQZNA-pmCZNA)/pmCZNA)<percentageDiff) 
            	  res=1.;
            	else 
            	  res=.5;
            	test[specie] += res;
            	count++;
	      }
	      if(TMath::Abs(sumADCZPC)>1.e-10){
            	if((TMath::Abs(pmQZPC-pmCZPC)/pmCZPC)<percentageDiff) 
            	  res=1.;
            	else 
            	  res=.5;
            	test[specie] += res;
            	count++;
	      }
	      if(TMath::Abs(sumADCZPA)>1.e-10){
            	if((TMath::Abs(pmQZPA-pmCZPA)/pmCZPA)<percentageDiff) 
            	  res=1.;
            	else 
            	  res=.5;
            	test[specie] += res;
            	count++;
	      }
            }
            esdInd++;
         }  
	 else {
           AliWarning(Form("\n\t No ZDC QA for %s task\n",taskName)); 
           return ;
         }
        }//if(hdata) 
	else AliError("AliZDCQAChecker-> No histos!!!\n");
      }
    } // LowMult (p-p)
    // ====================================================================
    // 	Checks for A-A events
    // ====================================================================
    if (AliRecoParam::ConvertIndex(specie) == AliRecoParam::kHighMult) {
      if(list[specie]->GetEntries()==0){  
        AliWarning("\t The list to be checked is empty!");
        return ;
      }
      //AliDebug(AliQAv1::GetQADebugLevel(), Form("\n\tAliZDCQAChecker-> checking QA histograms for task %s\n\n",taskName));
      //
      TIter next(list[specie]); 
      count = 0; 
      TH1 * hdata;	  
      
      Float_t res=0., percentageDiff=0.10;
      Float_t meanZNA=0., meanZNC=0., meanZPA=0., meanZPC=0.;
      Float_t pmCZNA=0., pmCZNC=0., pmCZPA=0., pmCZPC=0.;
      Float_t pmQZNA=0., pmQZNC=0., pmQZPA=0., pmQZPC=0.;
      Float_t sumADCZNA=0., sumADCZNC=0., sumADCZPA=0., sumADCZPC=0.;
      Float_t adcCZNA=0., adcCZNC=0., adcCZPA=0., adcCZPC=0.;
      Float_t adcQZNA=0., adcQZNC=0., adcQZPA=0., adcQZPC=0.;
      Int_t nentries=-99;
      
      while((hdata = dynamic_cast<TH1 *>(next()))){
        if(hdata){ 
          //AliDebug(AliQAv1::GetQADebugLevel(), Form("\tAliZDCQAChecker-> checking histo %s",hdata->GetName()));
          // -------------------------------------------------------------------
          if(index == AliQAv1::kSIM){
            // Check HITS histos
            if (!(strncmp(hdata->GetName(),"hHits",5))){
              if(hdata->GetEntries()>0){
	        if(ihitHisto==0)      meanZNC = hdata->GetMean();
		else if(ihitHisto==1) meanZNA = hdata->GetMean();
		else if(ihitHisto==2) meanZPC = hdata->GetMean();
		else if(ihitHisto==3) meanZPA = hdata->GetMean();
	        else if(ihitHisto==4) pmQZNC = hdata->GetMean();
	        else if(ihitHisto==5) pmQZNA = hdata->GetMean();
	        else if(ihitHisto==6) pmQZPC = hdata->GetMean();
	        else if(ihitHisto==7) pmQZPA = hdata->GetMean();
	        else if(ihitHisto==8)  pmCZNC = hdata->GetMean();
	        else if(ihitHisto==9)  pmCZNA = hdata->GetMean();
	        else if(ihitHisto==10) pmCZPC = hdata->GetMean();
	        else if(ihitHisto==11) pmCZPA = hdata->GetMean();
	      }
	      //
	      // --- Check whether 2*|Mean ZNA - Mean ZNC|/(Mean ZNA + Mean ZNC) < percentageDiff
	      // --- and 2*|Mean ZPA - Mean ZPC|/(Mean ZPA + Mean ZPC) < 2*percentageDiff
	      if(ihitHisto==3){
	        if(TMath::Abs(meanZNC)>1.e-10 && TMath::Abs(meanZNA)>1.e-10){
                  if((2*TMath::Abs(meanZNC-meanZNA)/(meanZNA+meanZNC))<percentageDiff) 
                    res=1.;
                  else 
                    res=.5;
                  test[specie] += res;
                  count++;
		}
	        if(TMath::Abs(meanZPC)>1.e-10 && TMath::Abs(meanZPA)>1.e-10){
                  if((TMath::Abs(meanZPC-meanZPA)/(meanZPA+meanZPC))<percentageDiff) 
                    res=1.;
                  else 
                    res=.5;
                  test[specie] += res;
                  count++;
		}
              }
	      // --- Check whether (mean PMQi - PMC)/PMC < percentageDiff
	      if(ihitHisto==11){
	        if(TMath::Abs(meanZNC)>1.e-10){
                  if((TMath::Abs(pmQZNC-pmCZNC)/pmCZNC)<percentageDiff) 
                    res=1.;
                  else 
                    res=.5;
                  test[specie] += res;
                  count++;
		}
	        if(TMath::Abs(meanZNA)>1.e-10){
                  if((TMath::Abs(pmQZNA-pmCZNA)/pmCZNA)<percentageDiff) 
                    res=1.;
                  else 
                    res=.5;
                  test[specie] += res;
                  count++;
		}
	        if(TMath::Abs(meanZPC)>1.e-10){
                  if((TMath::Abs(pmQZPC-pmCZPC)/pmCZPC)<percentageDiff) 
                    res=1.;
                  else 
                    res=.5;
                  test[specie] += res;
                  count++;
		}
	        if(TMath::Abs(meanZPA)>1.e-10){
                  if((TMath::Abs(pmQZPA-pmCZPA)/pmCZPA)<percentageDiff) 
                    res=1.;
                  else 
                    res=.5;
                  test[specie] += res;
                  count++;
		}
	      }
	      ihitHisto++;
            }
            // Check DIGITS histos
            else if (!(strncmp(hdata->GetName(),"hDig",4))){
              if(hdata->GetEntries()>0){
	        if(idigHisto==0)      sumADCZNC = hdata->GetMean();
		else if(idigHisto==1) sumADCZNA = hdata->GetMean();
		else if(idigHisto==2) sumADCZPC = hdata->GetMean();
		else if(idigHisto==3) sumADCZPA = hdata->GetMean();
	        else if(idigHisto==4) adcQZNC = hdata->GetMean();
	        else if(idigHisto==5) adcQZNA = hdata->GetMean();
	        else if(idigHisto==6) adcQZPC = hdata->GetMean();
	        else if(idigHisto==7) adcQZPA = hdata->GetMean();
	        else if(idigHisto==8)  adcCZNC = hdata->GetMean();
	        else if(idigHisto==9)  adcCZNA = hdata->GetMean();
	        else if(idigHisto==10) adcCZPC = hdata->GetMean();
	        else if(idigHisto==11) adcCZPA = hdata->GetMean();
	      }
	      //
	      // --- Check whether 2*|Mean ZNA - Mean ZNC|/(Mean ZNA + Mean ZNC) < percentageDiff
	      // --- and 2*|Mean ZPA - Mean ZPC|/(Mean ZPA + Mean ZPC) < 2*percentageDiff
	      if(idigHisto==3){
	        if(TMath::Abs(sumADCZNC)>1.e-10 && TMath::Abs(sumADCZNA)>1.e-10){
                  if((2*TMath::Abs(sumADCZNC-sumADCZNA)/(sumADCZNA+sumADCZNC))<percentageDiff) 
                    res=1.;
                  else 
                    res=.5;
                  test[specie] += res;
                  count++;
		}
	        if(TMath::Abs(sumADCZPC)>1.e-10 && TMath::Abs(sumADCZPA)>1.e-10){
                  if((TMath::Abs(sumADCZPC-sumADCZPA)/(sumADCZPA+sumADCZPC))<percentageDiff) 
                    res=1.;
                  else 
                    res=.5;
                  test[specie] += res;
                  count++;
		}
              }
	      // --- Check whether (sumADC PMQi - PMC)/PMC < percentageDiff
	      if(idigHisto==11){
	        if(TMath::Abs(sumADCZNC)>1.e-10){
                  if((TMath::Abs(adcQZNC-adcCZNC)/adcCZNC)<percentageDiff) 
                    res=1.;
                  else 
                    res=.5;
                  test[specie] += res;
                  count++;
		}
	        if(TMath::Abs(sumADCZNA)>1.e-10){
                  if((TMath::Abs(adcQZNA-adcCZNA)/adcCZNA)<percentageDiff) 
                    res=1.;
                  else 
                    res=.5;
                  test[specie] += res;
                  count++;
		}
	        if(TMath::Abs(sumADCZPC)>1.e-10){
                  if((TMath::Abs(adcQZPC-adcCZPC)/adcCZPC)<percentageDiff) 
                    res=1.;
                  else 
                    res=.5;
                  test[specie] += res;
                  count++;
		}
	        if(TMath::Abs(sumADCZPA)>1.e-10){
                  if((TMath::Abs(adcQZPA-adcCZPA)/adcCZPA)<percentageDiff) 
                    res=1.;
                  else 
                    res=.5;
                  test[specie] += res;
                  count++;
		}
	      }
              idigHisto++;
            }
          }
          // -------------------------------------------------------------------
          else if(index == AliQAv1::kRAW){
	    //
            // Check RAW HIGH GAIN CHAIN histos
            
      	    messages.Clear();
	    
	    Bool_t iDetPM = kTRUE;
	    // --- Checks
	    if(irawHisto==20) nentries = Int_t (hdata->GetEntries());
	    if(irawHisto==22){ 
	      Float_t resADC=0.;
	      for(int ibin=1; ibin<=hdata->GetNbinsX(); ibin++){
		 if((hdata->GetBinContent(ibin))>10.){
		   res=1.;
		 }
		 else if((hdata->GetBinContent(ibin))<10. && 
		   (ibin==1 || ibin==6 || ibin==11 || ibin==12 || ibin==13 || ibin==18)){
		   res=0.5;
		   iDetPM = kFALSE;
		 }
		 //
		 resADC += res;
            	 test[specie] += res;
            	 count++;
	      }
	      if(nentries != -99) messages.Add(new TObjString(Form("#entries %d",nentries)));
	      else messages.Add(new TObjString("#entries not known"));
	      //
	      Float_t rv=1.;
	      if(hdata->GetNbinsX() != 0) rv = resADC/hdata->GetNbinsX();
	      if(rv > 0.98) messages.Add(new TObjString("ADCs are OK!")); 
	      else if(iDetPM==kFALSE){
	        messages.Add(new TObjString("Problem with ADCs!"));
                messages.Add(new TObjString("IF THIS IS A PHYSICS RUN"));
	      }
	      else if(iDetPM==kTRUE) messages.Add(new TObjString("Minor problem with ADCs"));
	      SetupHisto(messages, *hdata, rv);
	    }
	    else if(irawHisto==23){
	      // Reference values from RUN 137161
	      //Double_t refTDCs[6] = {-320.7,-319.0,-318.6,-319.9,-321.3,-320.8};
	      //  11/2012 -> QA threshold values x TDCs are read from configuration file
	      Double_t refTDCs[6];
	      refTDCs[0] = fZDCQAThr_ZNCTDCRefThr;
	      refTDCs[1] = fZDCQAThr_ZPCTDCRefThr;
	      refTDCs[2] = fZDCQAThr_ZNATDCRefThr;
	      refTDCs[3] = fZDCQAThr_ZPATDCRefThr;
	      refTDCs[4] = fZDCQAThr_ZEM1TDCRefThr;
	      refTDCs[5] = fZDCQAThr_ZEM2TDCRefThr;
	      //
	      Float_t resTDC=0.;
	      for(int ibin=1; ibin<=hdata->GetNbinsX(); ibin++){
		 if(TMath::Abs((hdata->GetBinContent(ibin))-refTDCs[ibin-1])<3.){
		   res=1.;
		 }
		 else if(TMath::Abs((hdata->GetBinContent(ibin))-refTDCs[ibin-1])<4.){
		   res=0.8;
            	 }
		 else res=0.5;
		 //
		 resTDC += res;
		 test[specie] += res;
            	 count++;
	      }
	      Float_t rv=1.;
	      if(hdata->GetNbinsX() != 0) rv = resTDC/hdata->GetNbinsX();
	      if(rv == 1.) messages.Add(new TObjString("TDCs are OK!")); 
	      else if(rv<1 && rv>0.75) messages.Add(new TObjString("Minor problem with TDCs"));
	      else{
	        messages.Add(new TObjString("Serious problem in ZDC timing"));
                messages.Add(new TObjString("IF THIS IS A PHYSICS RUN"));
	      }
	      SetupHisto(messages, *hdata, rv);
	    }
	    irawHisto++;
	    
	  }   
          // -------------------------------------------------------------------
          else if(index == AliQAv1::kREC){
	    //
            // Check RAW HIGH GAIN CHAIN histos
            if(hdata->GetEntries()>0){
	      if(irecHisto==0)       meanZNC = hdata->GetMean();
	      else if(irecHisto==1)  meanZNA = hdata->GetMean();
	      else if(irecHisto==2)  meanZPC = hdata->GetMean();
	      else if(irecHisto==3)  meanZPA = hdata->GetMean();
	      else if(irecHisto==4)  pmQZNC = hdata->GetMean();
	      else if(irecHisto==5)  pmQZNA = hdata->GetMean();
	      else if(irecHisto==6)  pmQZPC = hdata->GetMean();
	      else if(irecHisto==7)  pmQZPA = hdata->GetMean();
	      else if(irecHisto==8)  pmCZNC = hdata->GetMean();
	      else if(irecHisto==9)  pmCZNA = hdata->GetMean();
	      else if(irecHisto==10) pmCZPC = hdata->GetMean();
	      else if(irecHisto==11) pmCZPA = hdata->GetMean();
	    }
            //
	    // --- Check whether 2*|Mean ZNA - Mean ZNC|/(Mean ZNA + Mean ZNC) < percentageDiff
	    // --- and 2*|Mean ZPA - Mean ZPC|/(Mean ZPA + Mean ZPC) < 2*percentageDiff
	    if(irecHisto==3){
	      if(TMath::Abs(meanZNC)>1.e-10 && TMath::Abs(meanZNA)>1.e-10){
            	if((2*TMath::Abs(meanZNC-meanZNA)/(meanZNA+meanZNC))<percentageDiff) 
            	  res=1.;
            	else 
            	  res=.5;
            	test[specie] += res;
            	count++;
	      }
	      if(TMath::Abs(meanZPC)>1.e-10 && TMath::Abs(meanZPA)>1.e-10){
            	if((TMath::Abs(meanZPC-meanZPA)/(meanZPA+meanZPC))<percentageDiff) 
            	  res=1.;
            	else 
            	  res=.5;
            	test[specie] += res;
            	count++;
	      }
            }
	    // --- Check whether (sum PMQi - PMC)/PMC < percentageDiff
	    if(irecHisto==11){
	      if((TMath::Abs(meanZNC)>1.e-10) && (pmCZNC>1.e-10)){
            	if((TMath::Abs(pmQZNC-pmCZNC)/pmCZNC)<percentageDiff) 
            	  res=1.;
            	else 
            	  res=.5;
            	test[specie] += res;
            	count++;
	      }
	      if((TMath::Abs(meanZNA)>1.e-10) && (pmCZNA>1.e-10)){
            	if((TMath::Abs(pmQZNA-pmCZNA)/pmCZNA)<percentageDiff) 
            	  res=1.;
            	else 
            	  res=.5;
            	test[specie] += res;
            	count++;
	      }
	      if((TMath::Abs(meanZPC)>1.e-10) && (pmCZPC>1.e-10)){
            	if((TMath::Abs(pmQZPC-pmCZPC)/pmCZPC)<percentageDiff) 
            	  res=1.;
            	else 
            	  res=.5;
            	test[specie] += res;
            	count++;
	      }
	      if((TMath::Abs(meanZPA)>1.e-10) && (pmCZPA>1.e-10)){
            	if((TMath::Abs(pmQZPA-pmCZPA)/pmCZPA)<percentageDiff) 
            	  res=1.;
            	else 
            	  res=.5;
            	test[specie] += res;
            	count++;
	      }
	    }
	    irecHisto++;	 
	  }   
          // -------------------------------------------------------------------
          else if(index == AliQAv1::kESD){
	    //
            // Check ESD HIGH GAIN CHAIN histos
            if(hdata->GetEntries()>0){
	      if(esdInd==0)      sumADCZNC = hdata->GetMean();
	      else if(esdInd==1) sumADCZNA = hdata->GetMean();
	      else if(esdInd==2) sumADCZPC = hdata->GetMean();
	      else if(esdInd==3) sumADCZPA = hdata->GetMean();
	      else if(esdInd==6)  pmQZNC = hdata->GetMean();
	      else if(esdInd==7)  pmQZNA = hdata->GetMean();
	      else if(esdInd==8) pmQZPC = hdata->GetMean();
	      else if(esdInd==9) pmQZPA = hdata->GetMean();
	      else if(esdInd==10) pmCZNC = hdata->GetMean();
	      else if(esdInd==11) pmCZNA = hdata->GetMean();
	      else if(esdInd==12) pmCZPC = hdata->GetMean();
	      else if(esdInd==13) pmCZPA = hdata->GetMean();
	    }
	    //
	    // --- Check whether 2*|Mean ZNA - Mean ZNC|/(Mean ZNA + Mean ZNC) < percentageDiff
	    // --- and 2*|Mean ZPA - Mean ZPC|/(Mean ZPA + Mean ZPC) < 2*percentageDiff
	    if(esdInd==5){
	      if(TMath::Abs(sumADCZNC)>1.e-10 && TMath::Abs(sumADCZNA)>1.e-10){
            	if((2*TMath::Abs(sumADCZNC-sumADCZNA)/(sumADCZNA+sumADCZNC))<percentageDiff) 
            	  res=1.;
            	else 
            	  res=.5;
            	test[specie] += res;
            	count++;
	      }
	      if(TMath::Abs(sumADCZPC)>1.e-10 && TMath::Abs(sumADCZPA)>1.e-10){
            	if((TMath::Abs(sumADCZPC-sumADCZPA)/(sumADCZPA+sumADCZPC))<percentageDiff) 
            	  res=1.;
            	else 
            	  res=.5;
            	test[specie] += res;
            	count++;
	      }
            }
	    // --- Check whether (sum PMQi - PMC)/PMC < percentageDiff
	    if(esdInd==15){
	      if(TMath::Abs(sumADCZNC)>1.e-10){
            	if((TMath::Abs(pmQZNC-pmCZNC)/pmCZNC)<percentageDiff) 
            	  res=1.;
            	else 
            	  res=.5;
            	test[specie] += res;
            	count++;
	      }
	      if(TMath::Abs(sumADCZNA)>1.e-10){
            	if((TMath::Abs(pmQZNA-pmCZNA)/pmCZNA)<percentageDiff) 
            	  res=1.;
            	else 
            	  res=.5;
            	test[specie] += res;
            	count++;
	      }
/*	      if(TMath::Abs(sumADCZPC)>1.e-10){
            	if((TMath::Abs(pmQZPC-pmCZPC)/pmCZPC)<percentageDiff) 
            	  res=1.;
            	else 
            	  res=.5;
            	test[specie] += res;
            	count++;
	      }
	      if(TMath::Abs(sumADCZPA)>1.e-10){
            	if((TMath::Abs(pmQZPA-pmCZPA)/pmCZPA)<percentageDiff) 
            	  res=1.;
            	else 
            	  res=.5;
            	test[specie] += res;
            	count++;
	      }
*/
            }
            esdInd++;
          }  
	  else {
            AliWarning(Form("\n\t No ZDC QA for %s task\n",taskName)); 
            return ;
          } 
        }//if(hdata) 
	else AliError("\t  No histos found for ZDC!!!\n");
      }
    } // HighMult (Pb-Pb) 
    // ====================================================================
    // 	Checks for Calibration events
    // ====================================================================
    if (AliRecoParam::ConvertIndex(specie) == AliRecoParam::kCalib) {
      AliWarning(Form("\n\t No check implemented in ZDC QA for %s task in CALIBRATION events\n",taskName)); 
      return ;
    } // Calibration
    // ====================================================================
    // 	Checks for cosmic events
    // ====================================================================
    else if (AliRecoParam::ConvertIndex(specie) == AliRecoParam::kCosmic) {
      AliWarning(Form("\n\t No check needed in ZDC QA for %s task in COSMIC events\n",taskName)); 
      return ; 
    } // Cosmic
    if(TMath::Abs(count)>1.e-10) test[specie] = test[specie]/count;
    AliDebug(AliQAv1::GetQADebugLevel(), Form("\n\t ZDC QA check result = %1.2f\n",test[specie]));
  } // Loop on species
}  

//___________________________________________________________________ 
void AliZDCQAChecker::SetupHisto(const TObjArray& messages, TH1& histo, Float_t& code)
{
  //
  /// Add text to histos
  //

  TPaveText* text = new TPaveText(0.70,0.70,0.99,0.99,"NDC");
    
  TIter next(&messages);
  TObjString* str;
    
  while ( ( str = static_cast<TObjString*>(next()) ) ){
    text->AddText(str->String());
  }

  TString defaultText = "";

  Int_t color = 0;
  if(code==1.){
    color = kGreen;
    defaultText = "Everything is fine!";
  }  
  else if(code<1. && code>=0.85){  
    color = kYellow;
    defaultText = "To be monitored in next runs";
  }
  else if(code<0.85 && code>=0.6){
    color = kOrange;
    defaultText = "notify the expert DURING THE DAY!";
  }
  else if(code<0.6){
    color = kRed;
    defaultText = "PLEASE CALL THE EXPERT!!!!";
  }


  text->AddText(defaultText.Data());
  text->SetFillColor(color);
                      
  //histo.SetFillStyle(1001);
  //histo.SetFillColor(color);

  histo.SetStats(kFALSE);
  
  TList* lst = histo.GetListOfFunctions();
  if(!lst){
    printf(" No list found\n");
  } 
  else {
     TObject *stats = lst->FindObject("stats");
     lst->Remove(stats);
     TObject *obj;
     while ((obj = lst->First())) {
       while(lst->Remove(obj)) { }
       delete obj;
    }
    if(stats) lst->Add(stats);
    lst->Add(text);
  }   
}

//______________________________________________________________  
void AliZDCQAChecker::GetThresholds()
{
  //
  // Init the online thresholds from GRP generated by AMORE
  //
  AliCDBManager* man = AliCDBManager::Instance(); 
  if(!man){     
     AliWarning("No CDB -> ZDC TDC thresholds not read from OCDB");     
     return;   
  }
  
  AliCDBEntry* entry = man->Get("GRP/Calib/QAThresholds");
  if(!entry){     
     AliWarning("No ZDC TDC thresholds object");
     return;    
  }
 
  TObjArray* obj = (TObjArray*) entry->GetObject();
  if(!obj ){
    AliWarning("No object inside OCDB entry GRP/Calib/QAThresholds");
    return;    
  }

  AliQAThresholds* thresholds = (AliQAThresholds*) obj->FindObject("ZDC");  
  if(!thresholds){ 
    AliWarning("No object for ZDC thresholds inside OCDB object");
    return;   
  }
  
  TParameter<double>* myParam0 = (TParameter<double>*) thresholds->GetThreshold(0); 
  fZDCQAThr_ZNCTDCRefThr = myParam0->GetVal();
  
  TParameter<double>* myParam1 = (TParameter<double>*) thresholds->GetThreshold(1); 
  fZDCQAThr_ZPCTDCRefThr = myParam1->GetVal();
  
  TParameter<double>* myParam2 = (TParameter<double>*) thresholds->GetThreshold(2); 
  fZDCQAThr_ZNATDCRefThr = myParam2->GetVal();
  
  TParameter<double>* myParam3 = (TParameter<double>*) thresholds->GetThreshold(3); 
  fZDCQAThr_ZPATDCRefThr = myParam3->GetVal();
  
  TParameter<double>* myParam4 = (TParameter<double>*) thresholds->GetThreshold(4); 
  fZDCQAThr_ZEM1TDCRefThr = myParam4->GetVal();
  
  TParameter<double>* myParam5 = (TParameter<double>*) thresholds->GetThreshold(5); 
  fZDCQAThr_ZEM2TDCRefThr = myParam5->GetVal();
  
  PrintThresholds();
}

//_______________________________________________________________________________
void AliZDCQAChecker::PrintThresholds()
{
  printf("\n ####    ZDC QA Thresholds  read from configuration file: \n");  
  printf(" \t fZDCQAThr_ZNCTDCRefThr %f \n",fZDCQAThr_ZNCTDCRefThr);
  printf(" \t fZDCQAThr_ZPCTDCRefThr %f \n",fZDCQAThr_ZPCTDCRefThr);
  printf(" \t fZDCQAThr_ZNATDCRefThr %f \n",fZDCQAThr_ZNATDCRefThr);
  printf(" \t fZDCQAThr_ZPATDCRefThr %f \n",fZDCQAThr_ZPATDCRefThr);
  printf(" \t fZDCQAThr_ZEM1TDCRefThr %f \n",fZDCQAThr_ZEM1TDCRefThr);
  printf(" \t fZDCQAThr_ZEM2TDCRefThr %f \n\n",fZDCQAThr_ZEM2TDCRefThr);
}
 AliZDCQAChecker.cxx:1
 AliZDCQAChecker.cxx:2
 AliZDCQAChecker.cxx:3
 AliZDCQAChecker.cxx:4
 AliZDCQAChecker.cxx:5
 AliZDCQAChecker.cxx:6
 AliZDCQAChecker.cxx:7
 AliZDCQAChecker.cxx:8
 AliZDCQAChecker.cxx:9
 AliZDCQAChecker.cxx:10
 AliZDCQAChecker.cxx:11
 AliZDCQAChecker.cxx:12
 AliZDCQAChecker.cxx:13
 AliZDCQAChecker.cxx:14
 AliZDCQAChecker.cxx:15
 AliZDCQAChecker.cxx:16
 AliZDCQAChecker.cxx:17
 AliZDCQAChecker.cxx:18
 AliZDCQAChecker.cxx:19
 AliZDCQAChecker.cxx:20
 AliZDCQAChecker.cxx:21
 AliZDCQAChecker.cxx:22
 AliZDCQAChecker.cxx:23
 AliZDCQAChecker.cxx:24
 AliZDCQAChecker.cxx:25
 AliZDCQAChecker.cxx:26
 AliZDCQAChecker.cxx:27
 AliZDCQAChecker.cxx:28
 AliZDCQAChecker.cxx:29
 AliZDCQAChecker.cxx:30
 AliZDCQAChecker.cxx:31
 AliZDCQAChecker.cxx:32
 AliZDCQAChecker.cxx:33
 AliZDCQAChecker.cxx:34
 AliZDCQAChecker.cxx:35
 AliZDCQAChecker.cxx:36
 AliZDCQAChecker.cxx:37
 AliZDCQAChecker.cxx:38
 AliZDCQAChecker.cxx:39
 AliZDCQAChecker.cxx:40
 AliZDCQAChecker.cxx:41
 AliZDCQAChecker.cxx:42
 AliZDCQAChecker.cxx:43
 AliZDCQAChecker.cxx:44
 AliZDCQAChecker.cxx:45
 AliZDCQAChecker.cxx:46
 AliZDCQAChecker.cxx:47
 AliZDCQAChecker.cxx:48
 AliZDCQAChecker.cxx:49
 AliZDCQAChecker.cxx:50
 AliZDCQAChecker.cxx:51
 AliZDCQAChecker.cxx:52
 AliZDCQAChecker.cxx:53
 AliZDCQAChecker.cxx:54
 AliZDCQAChecker.cxx:55
 AliZDCQAChecker.cxx:56
 AliZDCQAChecker.cxx:57
 AliZDCQAChecker.cxx:58
 AliZDCQAChecker.cxx:59
 AliZDCQAChecker.cxx:60
 AliZDCQAChecker.cxx:61
 AliZDCQAChecker.cxx:62
 AliZDCQAChecker.cxx:63
 AliZDCQAChecker.cxx:64
 AliZDCQAChecker.cxx:65
 AliZDCQAChecker.cxx:66
 AliZDCQAChecker.cxx:67
 AliZDCQAChecker.cxx:68
 AliZDCQAChecker.cxx:69
 AliZDCQAChecker.cxx:70
 AliZDCQAChecker.cxx:71
 AliZDCQAChecker.cxx:72
 AliZDCQAChecker.cxx:73
 AliZDCQAChecker.cxx:74
 AliZDCQAChecker.cxx:75
 AliZDCQAChecker.cxx:76
 AliZDCQAChecker.cxx:77
 AliZDCQAChecker.cxx:78
 AliZDCQAChecker.cxx:79
 AliZDCQAChecker.cxx:80
 AliZDCQAChecker.cxx:81
 AliZDCQAChecker.cxx:82
 AliZDCQAChecker.cxx:83
 AliZDCQAChecker.cxx:84
 AliZDCQAChecker.cxx:85
 AliZDCQAChecker.cxx:86
 AliZDCQAChecker.cxx:87
 AliZDCQAChecker.cxx:88
 AliZDCQAChecker.cxx:89
 AliZDCQAChecker.cxx:90
 AliZDCQAChecker.cxx:91
 AliZDCQAChecker.cxx:92
 AliZDCQAChecker.cxx:93
 AliZDCQAChecker.cxx:94
 AliZDCQAChecker.cxx:95
 AliZDCQAChecker.cxx:96
 AliZDCQAChecker.cxx:97
 AliZDCQAChecker.cxx:98
 AliZDCQAChecker.cxx:99
 AliZDCQAChecker.cxx:100
 AliZDCQAChecker.cxx:101
 AliZDCQAChecker.cxx:102
 AliZDCQAChecker.cxx:103
 AliZDCQAChecker.cxx:104
 AliZDCQAChecker.cxx:105
 AliZDCQAChecker.cxx:106
 AliZDCQAChecker.cxx:107
 AliZDCQAChecker.cxx:108
 AliZDCQAChecker.cxx:109
 AliZDCQAChecker.cxx:110
 AliZDCQAChecker.cxx:111
 AliZDCQAChecker.cxx:112
 AliZDCQAChecker.cxx:113
 AliZDCQAChecker.cxx:114
 AliZDCQAChecker.cxx:115
 AliZDCQAChecker.cxx:116
 AliZDCQAChecker.cxx:117
 AliZDCQAChecker.cxx:118
 AliZDCQAChecker.cxx:119
 AliZDCQAChecker.cxx:120
 AliZDCQAChecker.cxx:121
 AliZDCQAChecker.cxx:122
 AliZDCQAChecker.cxx:123
 AliZDCQAChecker.cxx:124
 AliZDCQAChecker.cxx:125
 AliZDCQAChecker.cxx:126
 AliZDCQAChecker.cxx:127
 AliZDCQAChecker.cxx:128
 AliZDCQAChecker.cxx:129
 AliZDCQAChecker.cxx:130
 AliZDCQAChecker.cxx:131
 AliZDCQAChecker.cxx:132
 AliZDCQAChecker.cxx:133
 AliZDCQAChecker.cxx:134
 AliZDCQAChecker.cxx:135
 AliZDCQAChecker.cxx:136
 AliZDCQAChecker.cxx:137
 AliZDCQAChecker.cxx:138
 AliZDCQAChecker.cxx:139
 AliZDCQAChecker.cxx:140
 AliZDCQAChecker.cxx:141
 AliZDCQAChecker.cxx:142
 AliZDCQAChecker.cxx:143
 AliZDCQAChecker.cxx:144
 AliZDCQAChecker.cxx:145
 AliZDCQAChecker.cxx:146
 AliZDCQAChecker.cxx:147
 AliZDCQAChecker.cxx:148
 AliZDCQAChecker.cxx:149
 AliZDCQAChecker.cxx:150
 AliZDCQAChecker.cxx:151
 AliZDCQAChecker.cxx:152
 AliZDCQAChecker.cxx:153
 AliZDCQAChecker.cxx:154
 AliZDCQAChecker.cxx:155
 AliZDCQAChecker.cxx:156
 AliZDCQAChecker.cxx:157
 AliZDCQAChecker.cxx:158
 AliZDCQAChecker.cxx:159
 AliZDCQAChecker.cxx:160
 AliZDCQAChecker.cxx:161
 AliZDCQAChecker.cxx:162
 AliZDCQAChecker.cxx:163
 AliZDCQAChecker.cxx:164
 AliZDCQAChecker.cxx:165
 AliZDCQAChecker.cxx:166
 AliZDCQAChecker.cxx:167
 AliZDCQAChecker.cxx:168
 AliZDCQAChecker.cxx:169
 AliZDCQAChecker.cxx:170
 AliZDCQAChecker.cxx:171
 AliZDCQAChecker.cxx:172
 AliZDCQAChecker.cxx:173
 AliZDCQAChecker.cxx:174
 AliZDCQAChecker.cxx:175
 AliZDCQAChecker.cxx:176
 AliZDCQAChecker.cxx:177
 AliZDCQAChecker.cxx:178
 AliZDCQAChecker.cxx:179
 AliZDCQAChecker.cxx:180
 AliZDCQAChecker.cxx:181
 AliZDCQAChecker.cxx:182
 AliZDCQAChecker.cxx:183
 AliZDCQAChecker.cxx:184
 AliZDCQAChecker.cxx:185
 AliZDCQAChecker.cxx:186
 AliZDCQAChecker.cxx:187
 AliZDCQAChecker.cxx:188
 AliZDCQAChecker.cxx:189
 AliZDCQAChecker.cxx:190
 AliZDCQAChecker.cxx:191
 AliZDCQAChecker.cxx:192
 AliZDCQAChecker.cxx:193
 AliZDCQAChecker.cxx:194
 AliZDCQAChecker.cxx:195
 AliZDCQAChecker.cxx:196
 AliZDCQAChecker.cxx:197
 AliZDCQAChecker.cxx:198
 AliZDCQAChecker.cxx:199
 AliZDCQAChecker.cxx:200
 AliZDCQAChecker.cxx:201
 AliZDCQAChecker.cxx:202
 AliZDCQAChecker.cxx:203
 AliZDCQAChecker.cxx:204
 AliZDCQAChecker.cxx:205
 AliZDCQAChecker.cxx:206
 AliZDCQAChecker.cxx:207
 AliZDCQAChecker.cxx:208
 AliZDCQAChecker.cxx:209
 AliZDCQAChecker.cxx:210
 AliZDCQAChecker.cxx:211
 AliZDCQAChecker.cxx:212
 AliZDCQAChecker.cxx:213
 AliZDCQAChecker.cxx:214
 AliZDCQAChecker.cxx:215
 AliZDCQAChecker.cxx:216
 AliZDCQAChecker.cxx:217
 AliZDCQAChecker.cxx:218
 AliZDCQAChecker.cxx:219
 AliZDCQAChecker.cxx:220
 AliZDCQAChecker.cxx:221
 AliZDCQAChecker.cxx:222
 AliZDCQAChecker.cxx:223
 AliZDCQAChecker.cxx:224
 AliZDCQAChecker.cxx:225
 AliZDCQAChecker.cxx:226
 AliZDCQAChecker.cxx:227
 AliZDCQAChecker.cxx:228
 AliZDCQAChecker.cxx:229
 AliZDCQAChecker.cxx:230
 AliZDCQAChecker.cxx:231
 AliZDCQAChecker.cxx:232
 AliZDCQAChecker.cxx:233
 AliZDCQAChecker.cxx:234
 AliZDCQAChecker.cxx:235
 AliZDCQAChecker.cxx:236
 AliZDCQAChecker.cxx:237
 AliZDCQAChecker.cxx:238
 AliZDCQAChecker.cxx:239
 AliZDCQAChecker.cxx:240
 AliZDCQAChecker.cxx:241
 AliZDCQAChecker.cxx:242
 AliZDCQAChecker.cxx:243
 AliZDCQAChecker.cxx:244
 AliZDCQAChecker.cxx:245
 AliZDCQAChecker.cxx:246
 AliZDCQAChecker.cxx:247
 AliZDCQAChecker.cxx:248
 AliZDCQAChecker.cxx:249
 AliZDCQAChecker.cxx:250
 AliZDCQAChecker.cxx:251
 AliZDCQAChecker.cxx:252
 AliZDCQAChecker.cxx:253
 AliZDCQAChecker.cxx:254
 AliZDCQAChecker.cxx:255
 AliZDCQAChecker.cxx:256
 AliZDCQAChecker.cxx:257
 AliZDCQAChecker.cxx:258
 AliZDCQAChecker.cxx:259
 AliZDCQAChecker.cxx:260
 AliZDCQAChecker.cxx:261
 AliZDCQAChecker.cxx:262
 AliZDCQAChecker.cxx:263
 AliZDCQAChecker.cxx:264
 AliZDCQAChecker.cxx:265
 AliZDCQAChecker.cxx:266
 AliZDCQAChecker.cxx:267
 AliZDCQAChecker.cxx:268
 AliZDCQAChecker.cxx:269
 AliZDCQAChecker.cxx:270
 AliZDCQAChecker.cxx:271
 AliZDCQAChecker.cxx:272
 AliZDCQAChecker.cxx:273
 AliZDCQAChecker.cxx:274
 AliZDCQAChecker.cxx:275
 AliZDCQAChecker.cxx:276
 AliZDCQAChecker.cxx:277
 AliZDCQAChecker.cxx:278
 AliZDCQAChecker.cxx:279
 AliZDCQAChecker.cxx:280
 AliZDCQAChecker.cxx:281
 AliZDCQAChecker.cxx:282
 AliZDCQAChecker.cxx:283
 AliZDCQAChecker.cxx:284
 AliZDCQAChecker.cxx:285
 AliZDCQAChecker.cxx:286
 AliZDCQAChecker.cxx:287
 AliZDCQAChecker.cxx:288
 AliZDCQAChecker.cxx:289
 AliZDCQAChecker.cxx:290
 AliZDCQAChecker.cxx:291
 AliZDCQAChecker.cxx:292
 AliZDCQAChecker.cxx:293
 AliZDCQAChecker.cxx:294
 AliZDCQAChecker.cxx:295
 AliZDCQAChecker.cxx:296
 AliZDCQAChecker.cxx:297
 AliZDCQAChecker.cxx:298
 AliZDCQAChecker.cxx:299
 AliZDCQAChecker.cxx:300
 AliZDCQAChecker.cxx:301
 AliZDCQAChecker.cxx:302
 AliZDCQAChecker.cxx:303
 AliZDCQAChecker.cxx:304
 AliZDCQAChecker.cxx:305
 AliZDCQAChecker.cxx:306
 AliZDCQAChecker.cxx:307
 AliZDCQAChecker.cxx:308
 AliZDCQAChecker.cxx:309
 AliZDCQAChecker.cxx:310
 AliZDCQAChecker.cxx:311
 AliZDCQAChecker.cxx:312
 AliZDCQAChecker.cxx:313
 AliZDCQAChecker.cxx:314
 AliZDCQAChecker.cxx:315
 AliZDCQAChecker.cxx:316
 AliZDCQAChecker.cxx:317
 AliZDCQAChecker.cxx:318
 AliZDCQAChecker.cxx:319
 AliZDCQAChecker.cxx:320
 AliZDCQAChecker.cxx:321
 AliZDCQAChecker.cxx:322
 AliZDCQAChecker.cxx:323
 AliZDCQAChecker.cxx:324
 AliZDCQAChecker.cxx:325
 AliZDCQAChecker.cxx:326
 AliZDCQAChecker.cxx:327
 AliZDCQAChecker.cxx:328
 AliZDCQAChecker.cxx:329
 AliZDCQAChecker.cxx:330
 AliZDCQAChecker.cxx:331
 AliZDCQAChecker.cxx:332
 AliZDCQAChecker.cxx:333
 AliZDCQAChecker.cxx:334
 AliZDCQAChecker.cxx:335
 AliZDCQAChecker.cxx:336
 AliZDCQAChecker.cxx:337
 AliZDCQAChecker.cxx:338
 AliZDCQAChecker.cxx:339
 AliZDCQAChecker.cxx:340
 AliZDCQAChecker.cxx:341
 AliZDCQAChecker.cxx:342
 AliZDCQAChecker.cxx:343
 AliZDCQAChecker.cxx:344
 AliZDCQAChecker.cxx:345
 AliZDCQAChecker.cxx:346
 AliZDCQAChecker.cxx:347
 AliZDCQAChecker.cxx:348
 AliZDCQAChecker.cxx:349
 AliZDCQAChecker.cxx:350
 AliZDCQAChecker.cxx:351
 AliZDCQAChecker.cxx:352
 AliZDCQAChecker.cxx:353
 AliZDCQAChecker.cxx:354
 AliZDCQAChecker.cxx:355
 AliZDCQAChecker.cxx:356
 AliZDCQAChecker.cxx:357
 AliZDCQAChecker.cxx:358
 AliZDCQAChecker.cxx:359
 AliZDCQAChecker.cxx:360
 AliZDCQAChecker.cxx:361
 AliZDCQAChecker.cxx:362
 AliZDCQAChecker.cxx:363
 AliZDCQAChecker.cxx:364
 AliZDCQAChecker.cxx:365
 AliZDCQAChecker.cxx:366
 AliZDCQAChecker.cxx:367
 AliZDCQAChecker.cxx:368
 AliZDCQAChecker.cxx:369
 AliZDCQAChecker.cxx:370
 AliZDCQAChecker.cxx:371
 AliZDCQAChecker.cxx:372
 AliZDCQAChecker.cxx:373
 AliZDCQAChecker.cxx:374
 AliZDCQAChecker.cxx:375
 AliZDCQAChecker.cxx:376
 AliZDCQAChecker.cxx:377
 AliZDCQAChecker.cxx:378
 AliZDCQAChecker.cxx:379
 AliZDCQAChecker.cxx:380
 AliZDCQAChecker.cxx:381
 AliZDCQAChecker.cxx:382
 AliZDCQAChecker.cxx:383
 AliZDCQAChecker.cxx:384
 AliZDCQAChecker.cxx:385
 AliZDCQAChecker.cxx:386
 AliZDCQAChecker.cxx:387
 AliZDCQAChecker.cxx:388
 AliZDCQAChecker.cxx:389
 AliZDCQAChecker.cxx:390
 AliZDCQAChecker.cxx:391
 AliZDCQAChecker.cxx:392
 AliZDCQAChecker.cxx:393
 AliZDCQAChecker.cxx:394
 AliZDCQAChecker.cxx:395
 AliZDCQAChecker.cxx:396
 AliZDCQAChecker.cxx:397
 AliZDCQAChecker.cxx:398
 AliZDCQAChecker.cxx:399
 AliZDCQAChecker.cxx:400
 AliZDCQAChecker.cxx:401
 AliZDCQAChecker.cxx:402
 AliZDCQAChecker.cxx:403
 AliZDCQAChecker.cxx:404
 AliZDCQAChecker.cxx:405
 AliZDCQAChecker.cxx:406
 AliZDCQAChecker.cxx:407
 AliZDCQAChecker.cxx:408
 AliZDCQAChecker.cxx:409
 AliZDCQAChecker.cxx:410
 AliZDCQAChecker.cxx:411
 AliZDCQAChecker.cxx:412
 AliZDCQAChecker.cxx:413
 AliZDCQAChecker.cxx:414
 AliZDCQAChecker.cxx:415
 AliZDCQAChecker.cxx:416
 AliZDCQAChecker.cxx:417
 AliZDCQAChecker.cxx:418
 AliZDCQAChecker.cxx:419
 AliZDCQAChecker.cxx:420
 AliZDCQAChecker.cxx:421
 AliZDCQAChecker.cxx:422
 AliZDCQAChecker.cxx:423
 AliZDCQAChecker.cxx:424
 AliZDCQAChecker.cxx:425
 AliZDCQAChecker.cxx:426
 AliZDCQAChecker.cxx:427
 AliZDCQAChecker.cxx:428
 AliZDCQAChecker.cxx:429
 AliZDCQAChecker.cxx:430
 AliZDCQAChecker.cxx:431
 AliZDCQAChecker.cxx:432
 AliZDCQAChecker.cxx:433
 AliZDCQAChecker.cxx:434
 AliZDCQAChecker.cxx:435
 AliZDCQAChecker.cxx:436
 AliZDCQAChecker.cxx:437
 AliZDCQAChecker.cxx:438
 AliZDCQAChecker.cxx:439
 AliZDCQAChecker.cxx:440
 AliZDCQAChecker.cxx:441
 AliZDCQAChecker.cxx:442
 AliZDCQAChecker.cxx:443
 AliZDCQAChecker.cxx:444
 AliZDCQAChecker.cxx:445
 AliZDCQAChecker.cxx:446
 AliZDCQAChecker.cxx:447
 AliZDCQAChecker.cxx:448
 AliZDCQAChecker.cxx:449
 AliZDCQAChecker.cxx:450
 AliZDCQAChecker.cxx:451
 AliZDCQAChecker.cxx:452
 AliZDCQAChecker.cxx:453
 AliZDCQAChecker.cxx:454
 AliZDCQAChecker.cxx:455
 AliZDCQAChecker.cxx:456
 AliZDCQAChecker.cxx:457
 AliZDCQAChecker.cxx:458
 AliZDCQAChecker.cxx:459
 AliZDCQAChecker.cxx:460
 AliZDCQAChecker.cxx:461
 AliZDCQAChecker.cxx:462
 AliZDCQAChecker.cxx:463
 AliZDCQAChecker.cxx:464
 AliZDCQAChecker.cxx:465
 AliZDCQAChecker.cxx:466
 AliZDCQAChecker.cxx:467
 AliZDCQAChecker.cxx:468
 AliZDCQAChecker.cxx:469
 AliZDCQAChecker.cxx:470
 AliZDCQAChecker.cxx:471
 AliZDCQAChecker.cxx:472
 AliZDCQAChecker.cxx:473
 AliZDCQAChecker.cxx:474
 AliZDCQAChecker.cxx:475
 AliZDCQAChecker.cxx:476
 AliZDCQAChecker.cxx:477
 AliZDCQAChecker.cxx:478
 AliZDCQAChecker.cxx:479
 AliZDCQAChecker.cxx:480
 AliZDCQAChecker.cxx:481
 AliZDCQAChecker.cxx:482
 AliZDCQAChecker.cxx:483
 AliZDCQAChecker.cxx:484
 AliZDCQAChecker.cxx:485
 AliZDCQAChecker.cxx:486
 AliZDCQAChecker.cxx:487
 AliZDCQAChecker.cxx:488
 AliZDCQAChecker.cxx:489
 AliZDCQAChecker.cxx:490
 AliZDCQAChecker.cxx:491
 AliZDCQAChecker.cxx:492
 AliZDCQAChecker.cxx:493
 AliZDCQAChecker.cxx:494
 AliZDCQAChecker.cxx:495
 AliZDCQAChecker.cxx:496
 AliZDCQAChecker.cxx:497
 AliZDCQAChecker.cxx:498
 AliZDCQAChecker.cxx:499
 AliZDCQAChecker.cxx:500
 AliZDCQAChecker.cxx:501
 AliZDCQAChecker.cxx:502
 AliZDCQAChecker.cxx:503
 AliZDCQAChecker.cxx:504
 AliZDCQAChecker.cxx:505
 AliZDCQAChecker.cxx:506
 AliZDCQAChecker.cxx:507
 AliZDCQAChecker.cxx:508
 AliZDCQAChecker.cxx:509
 AliZDCQAChecker.cxx:510
 AliZDCQAChecker.cxx:511
 AliZDCQAChecker.cxx:512
 AliZDCQAChecker.cxx:513
 AliZDCQAChecker.cxx:514
 AliZDCQAChecker.cxx:515
 AliZDCQAChecker.cxx:516
 AliZDCQAChecker.cxx:517
 AliZDCQAChecker.cxx:518
 AliZDCQAChecker.cxx:519
 AliZDCQAChecker.cxx:520
 AliZDCQAChecker.cxx:521
 AliZDCQAChecker.cxx:522
 AliZDCQAChecker.cxx:523
 AliZDCQAChecker.cxx:524
 AliZDCQAChecker.cxx:525
 AliZDCQAChecker.cxx:526
 AliZDCQAChecker.cxx:527
 AliZDCQAChecker.cxx:528
 AliZDCQAChecker.cxx:529
 AliZDCQAChecker.cxx:530
 AliZDCQAChecker.cxx:531
 AliZDCQAChecker.cxx:532
 AliZDCQAChecker.cxx:533
 AliZDCQAChecker.cxx:534
 AliZDCQAChecker.cxx:535
 AliZDCQAChecker.cxx:536
 AliZDCQAChecker.cxx:537
 AliZDCQAChecker.cxx:538
 AliZDCQAChecker.cxx:539
 AliZDCQAChecker.cxx:540
 AliZDCQAChecker.cxx:541
 AliZDCQAChecker.cxx:542
 AliZDCQAChecker.cxx:543
 AliZDCQAChecker.cxx:544
 AliZDCQAChecker.cxx:545
 AliZDCQAChecker.cxx:546
 AliZDCQAChecker.cxx:547
 AliZDCQAChecker.cxx:548
 AliZDCQAChecker.cxx:549
 AliZDCQAChecker.cxx:550
 AliZDCQAChecker.cxx:551
 AliZDCQAChecker.cxx:552
 AliZDCQAChecker.cxx:553
 AliZDCQAChecker.cxx:554
 AliZDCQAChecker.cxx:555
 AliZDCQAChecker.cxx:556
 AliZDCQAChecker.cxx:557
 AliZDCQAChecker.cxx:558
 AliZDCQAChecker.cxx:559
 AliZDCQAChecker.cxx:560
 AliZDCQAChecker.cxx:561
 AliZDCQAChecker.cxx:562
 AliZDCQAChecker.cxx:563
 AliZDCQAChecker.cxx:564
 AliZDCQAChecker.cxx:565
 AliZDCQAChecker.cxx:566
 AliZDCQAChecker.cxx:567
 AliZDCQAChecker.cxx:568
 AliZDCQAChecker.cxx:569
 AliZDCQAChecker.cxx:570
 AliZDCQAChecker.cxx:571
 AliZDCQAChecker.cxx:572
 AliZDCQAChecker.cxx:573
 AliZDCQAChecker.cxx:574
 AliZDCQAChecker.cxx:575
 AliZDCQAChecker.cxx:576
 AliZDCQAChecker.cxx:577
 AliZDCQAChecker.cxx:578
 AliZDCQAChecker.cxx:579
 AliZDCQAChecker.cxx:580
 AliZDCQAChecker.cxx:581
 AliZDCQAChecker.cxx:582
 AliZDCQAChecker.cxx:583
 AliZDCQAChecker.cxx:584
 AliZDCQAChecker.cxx:585
 AliZDCQAChecker.cxx:586
 AliZDCQAChecker.cxx:587
 AliZDCQAChecker.cxx:588
 AliZDCQAChecker.cxx:589
 AliZDCQAChecker.cxx:590
 AliZDCQAChecker.cxx:591
 AliZDCQAChecker.cxx:592
 AliZDCQAChecker.cxx:593
 AliZDCQAChecker.cxx:594
 AliZDCQAChecker.cxx:595
 AliZDCQAChecker.cxx:596
 AliZDCQAChecker.cxx:597
 AliZDCQAChecker.cxx:598
 AliZDCQAChecker.cxx:599
 AliZDCQAChecker.cxx:600
 AliZDCQAChecker.cxx:601
 AliZDCQAChecker.cxx:602
 AliZDCQAChecker.cxx:603
 AliZDCQAChecker.cxx:604
 AliZDCQAChecker.cxx:605
 AliZDCQAChecker.cxx:606
 AliZDCQAChecker.cxx:607
 AliZDCQAChecker.cxx:608
 AliZDCQAChecker.cxx:609
 AliZDCQAChecker.cxx:610
 AliZDCQAChecker.cxx:611
 AliZDCQAChecker.cxx:612
 AliZDCQAChecker.cxx:613
 AliZDCQAChecker.cxx:614
 AliZDCQAChecker.cxx:615
 AliZDCQAChecker.cxx:616
 AliZDCQAChecker.cxx:617
 AliZDCQAChecker.cxx:618
 AliZDCQAChecker.cxx:619
 AliZDCQAChecker.cxx:620
 AliZDCQAChecker.cxx:621
 AliZDCQAChecker.cxx:622
 AliZDCQAChecker.cxx:623
 AliZDCQAChecker.cxx:624
 AliZDCQAChecker.cxx:625
 AliZDCQAChecker.cxx:626
 AliZDCQAChecker.cxx:627
 AliZDCQAChecker.cxx:628
 AliZDCQAChecker.cxx:629
 AliZDCQAChecker.cxx:630
 AliZDCQAChecker.cxx:631
 AliZDCQAChecker.cxx:632
 AliZDCQAChecker.cxx:633
 AliZDCQAChecker.cxx:634
 AliZDCQAChecker.cxx:635
 AliZDCQAChecker.cxx:636
 AliZDCQAChecker.cxx:637
 AliZDCQAChecker.cxx:638
 AliZDCQAChecker.cxx:639
 AliZDCQAChecker.cxx:640
 AliZDCQAChecker.cxx:641
 AliZDCQAChecker.cxx:642
 AliZDCQAChecker.cxx:643
 AliZDCQAChecker.cxx:644
 AliZDCQAChecker.cxx:645
 AliZDCQAChecker.cxx:646
 AliZDCQAChecker.cxx:647
 AliZDCQAChecker.cxx:648
 AliZDCQAChecker.cxx:649
 AliZDCQAChecker.cxx:650
 AliZDCQAChecker.cxx:651
 AliZDCQAChecker.cxx:652
 AliZDCQAChecker.cxx:653
 AliZDCQAChecker.cxx:654
 AliZDCQAChecker.cxx:655
 AliZDCQAChecker.cxx:656
 AliZDCQAChecker.cxx:657
 AliZDCQAChecker.cxx:658
 AliZDCQAChecker.cxx:659
 AliZDCQAChecker.cxx:660
 AliZDCQAChecker.cxx:661
 AliZDCQAChecker.cxx:662
 AliZDCQAChecker.cxx:663
 AliZDCQAChecker.cxx:664
 AliZDCQAChecker.cxx:665
 AliZDCQAChecker.cxx:666
 AliZDCQAChecker.cxx:667
 AliZDCQAChecker.cxx:668
 AliZDCQAChecker.cxx:669
 AliZDCQAChecker.cxx:670
 AliZDCQAChecker.cxx:671
 AliZDCQAChecker.cxx:672
 AliZDCQAChecker.cxx:673
 AliZDCQAChecker.cxx:674
 AliZDCQAChecker.cxx:675
 AliZDCQAChecker.cxx:676
 AliZDCQAChecker.cxx:677
 AliZDCQAChecker.cxx:678
 AliZDCQAChecker.cxx:679
 AliZDCQAChecker.cxx:680
 AliZDCQAChecker.cxx:681
 AliZDCQAChecker.cxx:682
 AliZDCQAChecker.cxx:683
 AliZDCQAChecker.cxx:684
 AliZDCQAChecker.cxx:685
 AliZDCQAChecker.cxx:686
 AliZDCQAChecker.cxx:687
 AliZDCQAChecker.cxx:688
 AliZDCQAChecker.cxx:689
 AliZDCQAChecker.cxx:690
 AliZDCQAChecker.cxx:691
 AliZDCQAChecker.cxx:692
 AliZDCQAChecker.cxx:693
 AliZDCQAChecker.cxx:694
 AliZDCQAChecker.cxx:695
 AliZDCQAChecker.cxx:696
 AliZDCQAChecker.cxx:697
 AliZDCQAChecker.cxx:698
 AliZDCQAChecker.cxx:699
 AliZDCQAChecker.cxx:700
 AliZDCQAChecker.cxx:701
 AliZDCQAChecker.cxx:702
 AliZDCQAChecker.cxx:703
 AliZDCQAChecker.cxx:704
 AliZDCQAChecker.cxx:705
 AliZDCQAChecker.cxx:706
 AliZDCQAChecker.cxx:707
 AliZDCQAChecker.cxx:708
 AliZDCQAChecker.cxx:709
 AliZDCQAChecker.cxx:710
 AliZDCQAChecker.cxx:711
 AliZDCQAChecker.cxx:712
 AliZDCQAChecker.cxx:713
 AliZDCQAChecker.cxx:714
 AliZDCQAChecker.cxx:715
 AliZDCQAChecker.cxx:716
 AliZDCQAChecker.cxx:717
 AliZDCQAChecker.cxx:718
 AliZDCQAChecker.cxx:719
 AliZDCQAChecker.cxx:720
 AliZDCQAChecker.cxx:721
 AliZDCQAChecker.cxx:722
 AliZDCQAChecker.cxx:723
 AliZDCQAChecker.cxx:724
 AliZDCQAChecker.cxx:725
 AliZDCQAChecker.cxx:726
 AliZDCQAChecker.cxx:727
 AliZDCQAChecker.cxx:728
 AliZDCQAChecker.cxx:729
 AliZDCQAChecker.cxx:730
 AliZDCQAChecker.cxx:731
 AliZDCQAChecker.cxx:732
 AliZDCQAChecker.cxx:733
 AliZDCQAChecker.cxx:734
 AliZDCQAChecker.cxx:735
 AliZDCQAChecker.cxx:736
 AliZDCQAChecker.cxx:737
 AliZDCQAChecker.cxx:738
 AliZDCQAChecker.cxx:739
 AliZDCQAChecker.cxx:740
 AliZDCQAChecker.cxx:741
 AliZDCQAChecker.cxx:742
 AliZDCQAChecker.cxx:743
 AliZDCQAChecker.cxx:744
 AliZDCQAChecker.cxx:745
 AliZDCQAChecker.cxx:746
 AliZDCQAChecker.cxx:747
 AliZDCQAChecker.cxx:748
 AliZDCQAChecker.cxx:749
 AliZDCQAChecker.cxx:750
 AliZDCQAChecker.cxx:751
 AliZDCQAChecker.cxx:752
 AliZDCQAChecker.cxx:753
 AliZDCQAChecker.cxx:754
 AliZDCQAChecker.cxx:755
 AliZDCQAChecker.cxx:756
 AliZDCQAChecker.cxx:757
 AliZDCQAChecker.cxx:758
 AliZDCQAChecker.cxx:759
 AliZDCQAChecker.cxx:760
 AliZDCQAChecker.cxx:761
 AliZDCQAChecker.cxx:762
 AliZDCQAChecker.cxx:763
 AliZDCQAChecker.cxx:764
 AliZDCQAChecker.cxx:765
 AliZDCQAChecker.cxx:766
 AliZDCQAChecker.cxx:767
 AliZDCQAChecker.cxx:768
 AliZDCQAChecker.cxx:769
 AliZDCQAChecker.cxx:770
 AliZDCQAChecker.cxx:771
 AliZDCQAChecker.cxx:772
 AliZDCQAChecker.cxx:773
 AliZDCQAChecker.cxx:774
 AliZDCQAChecker.cxx:775
 AliZDCQAChecker.cxx:776
 AliZDCQAChecker.cxx:777
 AliZDCQAChecker.cxx:778
 AliZDCQAChecker.cxx:779
 AliZDCQAChecker.cxx:780
 AliZDCQAChecker.cxx:781
 AliZDCQAChecker.cxx:782
 AliZDCQAChecker.cxx:783
 AliZDCQAChecker.cxx:784
 AliZDCQAChecker.cxx:785
 AliZDCQAChecker.cxx:786
 AliZDCQAChecker.cxx:787
 AliZDCQAChecker.cxx:788
 AliZDCQAChecker.cxx:789
 AliZDCQAChecker.cxx:790
 AliZDCQAChecker.cxx:791
 AliZDCQAChecker.cxx:792
 AliZDCQAChecker.cxx:793
 AliZDCQAChecker.cxx:794
 AliZDCQAChecker.cxx:795
 AliZDCQAChecker.cxx:796
 AliZDCQAChecker.cxx:797
 AliZDCQAChecker.cxx:798
 AliZDCQAChecker.cxx:799
 AliZDCQAChecker.cxx:800
 AliZDCQAChecker.cxx:801
 AliZDCQAChecker.cxx:802
 AliZDCQAChecker.cxx:803
 AliZDCQAChecker.cxx:804
 AliZDCQAChecker.cxx:805
 AliZDCQAChecker.cxx:806
 AliZDCQAChecker.cxx:807
 AliZDCQAChecker.cxx:808
 AliZDCQAChecker.cxx:809
 AliZDCQAChecker.cxx:810
 AliZDCQAChecker.cxx:811
 AliZDCQAChecker.cxx:812
 AliZDCQAChecker.cxx:813
 AliZDCQAChecker.cxx:814
 AliZDCQAChecker.cxx:815
 AliZDCQAChecker.cxx:816
 AliZDCQAChecker.cxx:817
 AliZDCQAChecker.cxx:818
 AliZDCQAChecker.cxx:819
 AliZDCQAChecker.cxx:820
 AliZDCQAChecker.cxx:821
 AliZDCQAChecker.cxx:822
 AliZDCQAChecker.cxx:823
 AliZDCQAChecker.cxx:824
 AliZDCQAChecker.cxx:825
 AliZDCQAChecker.cxx:826
 AliZDCQAChecker.cxx:827
 AliZDCQAChecker.cxx:828
 AliZDCQAChecker.cxx:829
 AliZDCQAChecker.cxx:830
 AliZDCQAChecker.cxx:831
 AliZDCQAChecker.cxx:832
 AliZDCQAChecker.cxx:833
 AliZDCQAChecker.cxx:834
 AliZDCQAChecker.cxx:835
 AliZDCQAChecker.cxx:836
 AliZDCQAChecker.cxx:837
 AliZDCQAChecker.cxx:838
 AliZDCQAChecker.cxx:839
 AliZDCQAChecker.cxx:840
 AliZDCQAChecker.cxx:841
 AliZDCQAChecker.cxx:842
 AliZDCQAChecker.cxx:843
 AliZDCQAChecker.cxx:844
 AliZDCQAChecker.cxx:845
 AliZDCQAChecker.cxx:846
 AliZDCQAChecker.cxx:847
 AliZDCQAChecker.cxx:848
 AliZDCQAChecker.cxx:849
 AliZDCQAChecker.cxx:850
 AliZDCQAChecker.cxx:851
 AliZDCQAChecker.cxx:852
 AliZDCQAChecker.cxx:853
 AliZDCQAChecker.cxx:854
 AliZDCQAChecker.cxx:855
 AliZDCQAChecker.cxx:856
 AliZDCQAChecker.cxx:857
 AliZDCQAChecker.cxx:858
 AliZDCQAChecker.cxx:859
 AliZDCQAChecker.cxx:860
 AliZDCQAChecker.cxx:861
 AliZDCQAChecker.cxx:862
 AliZDCQAChecker.cxx:863
 AliZDCQAChecker.cxx:864
 AliZDCQAChecker.cxx:865
 AliZDCQAChecker.cxx:866
 AliZDCQAChecker.cxx:867
 AliZDCQAChecker.cxx:868
 AliZDCQAChecker.cxx:869
 AliZDCQAChecker.cxx:870
 AliZDCQAChecker.cxx:871
 AliZDCQAChecker.cxx:872
 AliZDCQAChecker.cxx:873
 AliZDCQAChecker.cxx:874
 AliZDCQAChecker.cxx:875
 AliZDCQAChecker.cxx:876
 AliZDCQAChecker.cxx:877
 AliZDCQAChecker.cxx:878
 AliZDCQAChecker.cxx:879
 AliZDCQAChecker.cxx:880
 AliZDCQAChecker.cxx:881
 AliZDCQAChecker.cxx:882
 AliZDCQAChecker.cxx:883
 AliZDCQAChecker.cxx:884
 AliZDCQAChecker.cxx:885
 AliZDCQAChecker.cxx:886
 AliZDCQAChecker.cxx:887
 AliZDCQAChecker.cxx:888
 AliZDCQAChecker.cxx:889
 AliZDCQAChecker.cxx:890
 AliZDCQAChecker.cxx:891
 AliZDCQAChecker.cxx:892
 AliZDCQAChecker.cxx:893
 AliZDCQAChecker.cxx:894
 AliZDCQAChecker.cxx:895
 AliZDCQAChecker.cxx:896
 AliZDCQAChecker.cxx:897
 AliZDCQAChecker.cxx:898
 AliZDCQAChecker.cxx:899
 AliZDCQAChecker.cxx:900
 AliZDCQAChecker.cxx:901
 AliZDCQAChecker.cxx:902
 AliZDCQAChecker.cxx:903
 AliZDCQAChecker.cxx:904
 AliZDCQAChecker.cxx:905
 AliZDCQAChecker.cxx:906
 AliZDCQAChecker.cxx:907
 AliZDCQAChecker.cxx:908
 AliZDCQAChecker.cxx:909
 AliZDCQAChecker.cxx:910
 AliZDCQAChecker.cxx:911
 AliZDCQAChecker.cxx:912
 AliZDCQAChecker.cxx:913
 AliZDCQAChecker.cxx:914
 AliZDCQAChecker.cxx:915
 AliZDCQAChecker.cxx:916
 AliZDCQAChecker.cxx:917
 AliZDCQAChecker.cxx:918
 AliZDCQAChecker.cxx:919
 AliZDCQAChecker.cxx:920
 AliZDCQAChecker.cxx:921
 AliZDCQAChecker.cxx:922
 AliZDCQAChecker.cxx:923
 AliZDCQAChecker.cxx:924
 AliZDCQAChecker.cxx:925
 AliZDCQAChecker.cxx:926
 AliZDCQAChecker.cxx:927
 AliZDCQAChecker.cxx:928
 AliZDCQAChecker.cxx:929
 AliZDCQAChecker.cxx:930
 AliZDCQAChecker.cxx:931
 AliZDCQAChecker.cxx:932
 AliZDCQAChecker.cxx:933
 AliZDCQAChecker.cxx:934
 AliZDCQAChecker.cxx:935
 AliZDCQAChecker.cxx:936
 AliZDCQAChecker.cxx:937
 AliZDCQAChecker.cxx:938
 AliZDCQAChecker.cxx:939
 AliZDCQAChecker.cxx:940
 AliZDCQAChecker.cxx:941
 AliZDCQAChecker.cxx:942
 AliZDCQAChecker.cxx:943
 AliZDCQAChecker.cxx:944
 AliZDCQAChecker.cxx:945
 AliZDCQAChecker.cxx:946
 AliZDCQAChecker.cxx:947
 AliZDCQAChecker.cxx:948
 AliZDCQAChecker.cxx:949
 AliZDCQAChecker.cxx:950
 AliZDCQAChecker.cxx:951
 AliZDCQAChecker.cxx:952
 AliZDCQAChecker.cxx:953
 AliZDCQAChecker.cxx:954
 AliZDCQAChecker.cxx:955
 AliZDCQAChecker.cxx:956
 AliZDCQAChecker.cxx:957
 AliZDCQAChecker.cxx:958
 AliZDCQAChecker.cxx:959
 AliZDCQAChecker.cxx:960
 AliZDCQAChecker.cxx:961
 AliZDCQAChecker.cxx:962
 AliZDCQAChecker.cxx:963
 AliZDCQAChecker.cxx:964
 AliZDCQAChecker.cxx:965
 AliZDCQAChecker.cxx:966
 AliZDCQAChecker.cxx:967
 AliZDCQAChecker.cxx:968
 AliZDCQAChecker.cxx:969
 AliZDCQAChecker.cxx:970