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

// --- ROOT system ---
#include <TClonesArray.h>
#include <TFile.h> 
#include <TLine.h> 
#include <TH1F.h> 
#include <TH2F.h>
#include <TProfile.h>
#include <TProfile2D.h>
#include <Riostream.h>
// --- Standard library ---

// --- AliRoot header files ---
#include "AliESDCaloCluster.h"
#include "AliESDEvent.h"
#include "AliQAChecker.h"
#include "AliLog.h"
#include "AliHMPIDDigit.h"
#include "AliHMPIDHit.h"
#include "AliHMPIDDigit.h"
#include "AliHMPIDCluster.h"
#include "AliHMPIDQADataMakerRec.h"
#include "AliHMPIDQAChecker.h"
#include "AliHMPIDParam.h"
#include "AliHMPIDRawStream.h"
#include "AliLog.h"

//.
// HMPID AliHMPIDQADataMakerRec base class
// for QA of reconstruction
// here also errors are calculated
//.

ClassImp(AliHMPIDQADataMakerRec)
           
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  AliHMPIDQADataMakerRec::AliHMPIDQADataMakerRec() : 
  AliQADataMakerRec(AliQAv1::GetDetName(AliQAv1::kHMPID), "HMPID Quality Assurance Data Maker"), fLineDdlDatSizeLow(0x0), fLineDdlDatSizeUp(0x0), fLineDdlPadOCcLow(0x0), fLineDdlPadOCcUp(0x0), fChannel(0) 
{
  // ctor
  for(Int_t i=0; i<6; i++) fModline[i]=0x0;
}

//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
AliHMPIDQADataMakerRec::AliHMPIDQADataMakerRec(const AliHMPIDQADataMakerRec& qadm) :
  AliQADataMakerRec(),fLineDdlDatSizeLow(qadm.fLineDdlDatSizeLow), fLineDdlDatSizeUp(qadm.fLineDdlDatSizeUp), fLineDdlPadOCcLow(qadm.fLineDdlPadOCcLow), fLineDdlPadOCcUp(qadm.fLineDdlPadOCcUp), fChannel(qadm.fChannel)
{
  //copy ctor 
  for(Int_t i=0; i<6; i++) fModline[i]=qadm.fModline[i];
  SetName((const char*)qadm.GetName()) ; 
  SetTitle((const char*)qadm.GetTitle()); 
}

//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
AliHMPIDQADataMakerRec& AliHMPIDQADataMakerRec::operator = (const AliHMPIDQADataMakerRec& qadm )
{
  // Equal operator.
  this->~AliHMPIDQADataMakerRec();
  new(this) AliHMPIDQADataMakerRec(qadm);
  return *this;
}
 
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
void AliHMPIDQADataMakerRec::InitDigits()
{
  // create Digits histograms in Digits subdir
  const Bool_t expert   = kTRUE ; 
  const Bool_t image    = kTRUE ; 
  
  TH1F *hDigChEvt = new TH1F("hDigChEvt","Chamber occupancy per event;Occupancy [%];Counts",AliHMPIDParam::kMaxCh+1,AliHMPIDParam::kMinCh,AliHMPIDParam::kMaxCh+1);
  TH1F *hDigPcEvt = new TH1F("hDigPcEvt","PC occupancy",156,-1,77);
  TH2F *hDigMap[7];
  TH1F *hDigQ[42];
  for(Int_t iCh =0; iCh < 7; iCh++){
    hDigMap[iCh] = new TH2F(Form("MapCh%i",iCh),Form("Digit Map in Chamber %i",iCh),159,0,159,143,0,143);
    for(Int_t iPc =0; iPc < 6; iPc++ ){
      hDigQ[iCh*6+iPc] = new TH1F(Form("QCh%iPc%i        ",iCh,iPc),Form("Charge of digits (ADC) in Chamber %i and PC %i;Charge [ADC counts];Counts",iCh,iPc),4100,0,4100);
    }
  }
  
  Add2DigitsList(hDigChEvt,0, !expert, image);
  Add2DigitsList(hDigPcEvt,1,expert, !image);
  for(Int_t iMap=0; iMap < 7; iMap++) Add2DigitsList(hDigMap[iMap],2+iMap,expert, !image);
  for(Int_t iH =0; iH < 42 ; iH++) Add2DigitsList(hDigQ[iH]    ,9+iH,expert,!image);
  //
  ClonePerTrigClass(AliQAv1::kDIGITS); // this should be the last line
}

//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
void AliHMPIDQADataMakerRec::InitRecPoints()
{
  // create cluster histograms in RecPoint subdir
  const Bool_t expert   = kTRUE ; 
  const Bool_t image    = kTRUE ; 
 
  TProfile *hCluMult          = new TProfile("CluMult"   ,"Cluster multiplicity per chamber;Chamber Id;# of clusters"    , 16, -1 , 7  , 0, 500);
  Add2RecPointsList(hCluMult    , 0,expert, !image);
  
  TH2F *hCluFlg          = new TH2F("CluFlg"      ,"Cluster flag;??;??"                              ,  56  ,-1.5, 12.5, 70, -0.5, 6.5);
  Add2RecPointsList(hCluFlg    , 1,expert, !image);
  
  TH1F *hCluSizeMip[7], *hCluSizePho[7];
  
  TH1F *hCluQSect[42], *hCluQSectZoom[42];
  
  for(Int_t iCh =0; iCh <7; iCh++){
    hCluSizeMip[iCh] = new TH1F(Form("CluSizeMipCh%i",iCh),Form("Cluster size  MIP  (cluster Q > 100 ADC) in Chamber %i;Size [MIP];Counts",iCh),  50  , 0  , 50  );
    Add2RecPointsList(hCluSizeMip[iCh], iCh+2,expert,!image);

    hCluSizePho[iCh]  = new TH1F(Form("CluSizePho%i",iCh ),Form("Cluster size  Phots(cluster Q < 100 ADC) in Chamber %i;Size [MIP];Counts",iCh),  50  , 0  , 50  );
    Add2RecPointsList(hCluSizePho[iCh], iCh+7+2,expert,!image);
    
    for(Int_t iSect =0; iSect < 6; iSect++){
      hCluQSectZoom[iCh*6+iSect] = new TH1F(Form("QClusCh%iSect%iZoom",iCh,iSect) ,Form("Zoom on Cluster charge (ADC) in Chamber %i and sector %i;Charge [ADC counts];Counts",iCh,iSect),100,0,100);
      Add2RecPointsList(hCluQSectZoom[iCh*6+iSect],2+14+iCh*6+iSect,expert,!image);
      
      hCluQSect[iCh*6+iSect] = new TH1F(Form("QClusCh%iSect%i",iCh,iSect) ,Form("Cluster charge (ADC) in Chamber %i and sector %i;Charge [ADC counts];Counts",iCh,iSect),250,0,5000);
      Add2RecPointsList(hCluQSect[iCh*6+iSect],2+14+42+iCh*6+iSect, !expert, image);
    }  
  }
  //
  ClonePerTrigClass(AliQAv1::kRECPOINTS); // this should be the last line
}

//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
void AliHMPIDQADataMakerRec::InitRaws()
{
//
// Booking QA histo for Raw data
//
// All histograms implemented in InitRaws are used in AMORE. Any change here should be propagated to the amoreHMP-QA as well!!! (clm)
//  
  
  const Bool_t expert   = kTRUE ; 
  const Bool_t saveCorr = kTRUE ; 
  const Bool_t image    = kTRUE ; 
  
  const Int_t kNerr = (Int_t)AliHMPIDRawStream::kSumErr+1;
  TH1F *hSumErr[14];
  TH2F *hDilo[14];
  TH2I *hPadMap[42]; //AMORE monitoring
  TH1I *hPadQ[42]; //AMORE monitoring

  fLineDdlDatSizeLow  = new TLine(0.5,932,14.5,932);   fLineDdlDatSizeLow->SetLineColor(kGreen); fLineDdlDatSizeLow->SetLineWidth(2);
  fLineDdlDatSizeUp   = new TLine(0.5,1500,14.5,1500); fLineDdlDatSizeUp->SetLineColor(kGreen);  fLineDdlDatSizeUp->SetLineWidth(2);
  
  fLineDdlPadOCcLow  = new TLine(0.5,0.086,14.5,0.086);   fLineDdlPadOCcLow->SetLineColor(kGreen); fLineDdlPadOCcLow->SetLineWidth(2);
  fLineDdlPadOCcUp   = new TLine(0.5,0.86,14.5,0.86); fLineDdlPadOCcUp->SetLineColor(kGreen);  fLineDdlPadOCcUp->SetLineWidth(2);       

  for(Int_t modcnt=0; modcnt < 6; modcnt++){ fModline[modcnt] = new TLine(0,(1+modcnt)*144,160,(1+modcnt)*144);  }
      
  for(Int_t iddl =0; iddl<AliHMPIDRawStream::kNDDL; iddl++) {
    
    hSumErr[iddl] = new TH1F(Form("hSumErrDDL%i",iddl), Form("Error summary for DDL %i;??;??",iddl), 2*kNerr,0,2*kNerr);
    for(Int_t ilabel=0; ilabel< kNerr; ilabel++) {
      hSumErr[iddl]->GetXaxis()->CenterLabels(kTRUE);
      hSumErr[iddl]->GetXaxis()->SetBinLabel((2*ilabel+1),Form("%i  %s",ilabel+1,AliHMPIDRawStream::GetErrName(ilabel)));
    }
    
   Add2RawsList(hSumErr[iddl],iddl,expert,!image, !saveCorr);
    
    hDilo[iddl] = new TH2F(Form("hDiloDDL%i",iddl),Form("Dilogic response at DDL %i;Row # ;Dilogic #",iddl),24,1,25,10,1,11);
    Add2RawsList(hDilo[iddl],14+iddl,expert,!image, !saveCorr);
  }//DDL loop
  for(Int_t iCh = AliHMPIDParam::kMinCh; iCh <=AliHMPIDParam::kMaxCh ;iCh++) {
    for(Int_t iPc = AliHMPIDParam::kMinPc; iPc <= AliHMPIDParam::kMaxPc ;iPc++) {
      hPadMap[iPc+6*iCh] = new TH2I(Form("hPadMap_Ch_%i_Pc%i",iCh,iPc),Form("Pad Map of Ch: %i Pc: %i;Pad X;Pad Y;",iCh,iPc),80,0,80,48,0,48);
     Add2RawsList(hPadMap[iPc+6*iCh],28+iPc+6*iCh,expert,!image, !saveCorr); 
      hPadQ[iPc+6*iCh]   = new TH1I(Form("hPadQ_Ch_%i_Pc%i",iCh,iPc),Form("Pad Charge of Ch: %i Pc: %i;Pad Q;Entries;",iCh,iPc),4100,0,4100);
      Add2RawsList(hPadQ[iPc+6*iCh],70+iPc+6*iCh,expert,!image, !saveCorr); 
    }//PC loop
  }//Ch loop  
  
  TH2I *hGeneralErrorSummary = new TH2I("GeneralErrorSummary"," DDL index vs Error type plot", 2*kNerr, 0, 2*kNerr, 2*AliHMPIDRawStream::kNDDL,0,2*AliHMPIDRawStream::kNDDL);
  for(Int_t igenlabel =0 ; igenlabel< kNerr; igenlabel++) hGeneralErrorSummary->GetXaxis()->SetBinLabel((2*igenlabel+1),Form("%i  %s",igenlabel+1,AliHMPIDRawStream::GetErrName(igenlabel)));
  Add2RawsList(hGeneralErrorSummary,14+14+42+42, expert, !image, !saveCorr);
  
  //___ for DQM shifter and eLogBook ___ start
  //___ Double booking of histograms since TProfile cannot be display in summary image
  //___ hence TProfile plots will not be shown in QA and LogBook!
 
  TH1F* hHmpDdlDataSize = new TH1F("hHmpDdlDataSize","HMP Data Size per DDL;;Data Size (Bytes)",14,0.5,14.5);
  hHmpDdlDataSize->Sumw2();
  hHmpDdlDataSize->SetOption("P");
  hHmpDdlDataSize->SetMinimum(0);
  for(Int_t iddl=0;iddl<14;iddl++)  hHmpDdlDataSize->GetXaxis()->SetBinLabel(iddl+1,Form("DDL_%d",1535+iddl+1));
  hHmpDdlDataSize->SetStats(0);hHmpDdlDataSize->SetMinimum(0);hHmpDdlDataSize->SetMarkerStyle(20);
  hHmpDdlDataSize->GetListOfFunctions()->Add(fLineDdlDatSizeLow);
  hHmpDdlDataSize->GetListOfFunctions()->Add(fLineDdlDatSizeUp);    
  Add2RawsList(hHmpDdlDataSize,14+14+42+42+1,!expert,image,saveCorr);   //shifter, image
  
  TH1F *fHmpPadOcc = new TH1F("fHmpPadOcc","HMP Average pad occupancy per DDL;;Pad occupancy (%)",14,0.5,14.5);
  fHmpPadOcc->Sumw2();fHmpPadOcc->SetMinimum(0);
  fHmpPadOcc->SetMinimum(0);
  for(Int_t iddl=0;iddl<14;iddl++)  fHmpPadOcc->GetXaxis()->SetBinLabel(iddl+1,Form("DDL_%d",1535+iddl+1));
  fHmpPadOcc->SetStats(0);fHmpPadOcc->SetMinimum(0);fHmpPadOcc->SetMarkerStyle(20);
  fHmpPadOcc->GetListOfFunctions()->Add(fLineDdlPadOCcLow);
  fHmpPadOcc->GetListOfFunctions()->Add(fLineDdlPadOCcUp);  
  Add2RawsList(fHmpPadOcc,14+14+42+42+2,!expert,image,!saveCorr);       //shifter, image

  TH2F* fHmpBigMap = new TH2F("hHmpBigMap","HMP Sum Q Maps Ch: 0-6;Ch 0-6: pad X;Ch0, Ch1, Ch2, Ch3, Ch4, Ch5, Ch6 pad Y ;Sum Q / Nevt",160,0,160,1008,0,1008);  
  fHmpBigMap->SetStats(0);  fHmpBigMap->SetOption("COLZ");
  for(Int_t modcnt=0; modcnt < 6; modcnt++) fHmpBigMap->GetListOfFunctions()->Add(fModline[modcnt]);  
  Add2RawsList(fHmpBigMap,14+14+42+42+3,!expert,image,!saveCorr);       //shifter, image
   
  TH2F *fHmpHvSectorQ = new TH2F("fHmpHvSectorQ","HMP HV Sector vs Q; Q (ADC);HV Sector (Ch0-Sc0,Ch0-Sc1,...);Entries*Q/Nevt",410,1,4101,42,0,42);
  fHmpHvSectorQ->SetStats(0); fHmpHvSectorQ->SetOption("colz");
  Add2RawsList(fHmpHvSectorQ,14+14+42+42+4,!expert,image,!saveCorr);    //shifter, image
  
  // TProfiles
  TProfile* hHmpDdlDataSizePrf = new TProfile("hHmpDdlDataSizePrf","HMP Data Size per DDL;;Data Size (Bytes)",14,0.5,14.5);
  hHmpDdlDataSizePrf->Sumw2();
  hHmpDdlDataSizePrf->SetOption("P");
  hHmpDdlDataSizePrf->SetMinimum(0);
  for(Int_t iddl=0;iddl<14;iddl++)  hHmpDdlDataSizePrf->GetXaxis()->SetBinLabel(iddl+1,Form("DDL_%d",1535+iddl+1));
  hHmpDdlDataSizePrf->SetStats(0);hHmpDdlDataSizePrf->SetMinimum(0);hHmpDdlDataSizePrf->SetMarkerStyle(20);
  Add2RawsList(hHmpDdlDataSizePrf,14+14+42+42+5,expert,!image,saveCorr);   //expert, no image
  
  TProfile *fHmpPadOccPrf = new TProfile("fHmpPadOccPrf","HMP Average pad occupancy per DDL;;Pad occupancy (%)",14,0.5,14.5);
  fHmpPadOccPrf->Sumw2();fHmpPadOccPrf->SetMinimum(0);
  fHmpPadOccPrf->SetMinimum(0);
  for(Int_t iddl=0;iddl<14;iddl++)  fHmpPadOccPrf->GetXaxis()->SetBinLabel(iddl+1,Form("DDL_%d",1535+iddl+1));
  fHmpPadOccPrf->SetStats(0);fHmpPadOccPrf->SetMinimum(0);fHmpPadOccPrf->SetMarkerStyle(20);
  Add2RawsList(fHmpPadOccPrf,14+14+42+42+6,expert,!image,saveCorr);       //expert, no image
  //___ for DQM shifter and eLogBook ___ stop
  //
  ClonePerTrigClass(AliQAv1::kRAWS); // this should be the last line
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
void AliHMPIDQADataMakerRec::InitESDs()
{
  //
  //Booking ESDs histograms
  const Bool_t expert   = kTRUE ; 
  const Bool_t image    = kTRUE ; 

  TH2F*  hCkovP  = new TH2F("CkovP" , "#theta_{c}, [rad];P, [GeV]"   , 150,      0,  7  ,100, 0, 1)   ;
  TH2F*  hSigP   = new TH2F("SigP"  ,"#sigma_{#theta_c} [mrad];[GeV]", 150,      0,  7  ,100, 0, 1)   ;
  TH2F*  hDifXY  = new TH2F("DifXY" ,"diff"                          , 200,    -10, 10  ,200,-10,10)  ;
  TH2F*  hMvsP = new TH2F("MvsP","Reconstructed Mass vs P",60,0,6,1000,0,1) ;
  TH1F*  hPid[5];
  hPid[0] = new TH1F("PidE" ,"electron response"              , 101, -0.005,1.005)             ;
  hPid[1] = new TH1F("PidMu","#mu response"                   , 101, -0.005,1.005)             ;
  hPid[2] = new TH1F("PidPi","#pi response"                   , 101, -0.005,1.005)             ;
  hPid[3] = new TH1F("PidK" ,"K response"                     , 101, -0.005,1.005)             ;
  hPid[4] = new TH1F("PidP" ,"p response"                     , 101, -0.005,1.005)             ;
  
  Add2ESDsList(hCkovP,0, !expert, image);
  Add2ESDsList(hSigP ,1, expert, !image);
  Add2ESDsList(hDifXY,2, !expert, image);
  Add2ESDsList(hMvsP,3, expert, !image);
  for(Int_t i=0; i< 5; i++) Add2ESDsList(hPid[i],i+4, expert, !image);
  //
  ClonePerTrigClass(AliQAv1::kESDS); // this should be the last line
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
void AliHMPIDQADataMakerRec::MakeRaws(AliRawReader *rawReader)
{
//
// Filling Raws QA histos
//
    rawReader->Reset() ; 
    Int_t hmpDaqId = AliDAQ::DetectorID("HMPID");                               // shoudl be number 6
    const UInt_t *detPattern = rawReader->GetDetectorPattern(); 
    UInt_t isHmpInRawData = ( ((1 << hmpDaqId) & detPattern[0]) >> hmpDaqId);   // check the 6th bit if HMP is there or not
    if (! isHmpInRawData ) return;                                              // if HMP is not in the event then skip it
    
    AliHMPIDRawStream stream(rawReader);
    //    Int_t ddlOcc[14]={0};  
    Int_t isHMPin=0;
    UInt_t word; Int_t Nddl, r, d, a;
    Int_t numPadsInDdl;
               
    while(stream.Next())
     {
       UInt_t ddl=stream.GetDDLNumber(); //returns 0,1,2 ... 13   
       if(ddl > 13) continue;
 
     //  FillRawsData(14+14+42+42+1,ddl+1,stream.GetDdlDataSize());
       FillRawsData(14+14+42+42+5,ddl+1,stream.GetDdlDataSize());
       if(stream.GetDdlDataSize() > 0) 
	 {
	   isHMPin++;
	   //___ fill error histo
           for(Int_t iErr =1; iErr<(Int_t)AliHMPIDRawStream::kSumErr; iErr++){
	     Int_t numOfErr = stream.GetErrors(ddl,iErr);
	     FillRawsData(ddl,iErr,numOfErr);
	     FillRawsData(14+14+42+42,iErr,ddl,iErr); //
           }
	   
	   numPadsInDdl= stream.GetNPads();
	   //           ddlOcc[ddl] = numPadsInDdl;
           FillRawsData(14+14+42+42+6,ddl+1,numPadsInDdl/11520.0*100.0);
            
	   //___ loop on pads from raw data from a ddl
	   for(Int_t iPad=0;iPad<numPadsInDdl;iPad++) {
	     AliHMPIDDigit dig(stream.GetPadArray()[iPad],stream.GetChargeArray()[iPad]);dig.Raw(word,Nddl,r,d,a);    
	     //for DQM shifter 
	     FillRawsData(14+14+42+42+3,dig.PadChX(), dig.Ch()*144+dig.PadChY(),dig.Q());
	     FillRawsData(14+14+42+42+4,dig.Q(),(ddl/2*6)+dig.PadChY()/24,dig.Q());
            
	     FillRawsData(ddl+14,r,d);
	     FillRawsData(28+stream.Pc(Nddl,r,d,a)+6*AliHMPIDParam::DDL2C(ddl),stream.PadPcX(Nddl,r,d,a),stream.PadPcY(Nddl,r,d,a));
	     FillRawsData(70+stream.Pc(Nddl,r,d,a)+6*AliHMPIDParam::DDL2C(ddl),stream.GetChargeArray()[iPad]);
            // FillRawsData(14+14+42+42+6,ddl+1,1);
	   }//pad loop
         }     
     }//next
    
    
    if(isHMPin > 0) { // RS: instead of former fEvtRaw
      IncEvCountCycleRaws();
      IncEvCountTotalRaws();
    }
     
    
}//MakeRaws


//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
void AliHMPIDQADataMakerRec::MakeDigits()
{
  //
  //filling QA histos for Digits
  //

  Int_t i = fChannel ; 
  FillDigitsData(0,i,fDigitsArray->GetEntriesFast()/(48.*80.*6.));
  TIter next(fDigitsArray); 
  AliHMPIDDigit * digit; 
  while ( (digit = dynamic_cast<AliHMPIDDigit *>(next())) ) {
    FillDigitsData(1,10.*i+digit->Pc(),1./(48.*80.));
    FillDigitsData(2+i,digit->PadChX(),digit->PadChY());
    FillDigitsData(9+i*6+digit->Pc(),digit->Q());
  }  
}  
  
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
void AliHMPIDQADataMakerRec::MakeDigits(TTree * digTree)
{
  //
  //Opening the Digit Tree
  //

  if(fDigitsArray) 
    fDigitsArray->Clear() ; 
  else
    fDigitsArray=new TClonesArray("AliHMPIDDigit");
  
  for(Int_t iCh=AliHMPIDParam::kMinCh;iCh<=AliHMPIDParam::kMaxCh;iCh++){
    fChannel = iCh ; 
    fDigitsArray->Clear() ; 
    TBranch *branch = digTree->GetBranch(Form("HMPID%d",iCh));
    branch->SetAddress(&fDigitsArray);
    branch->GetEntry(0); 
    MakeDigits();
  }
  //
  IncEvCountCycleDigits();
  IncEvCountTotalDigits();
  //
}

//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
void AliHMPIDQADataMakerRec::MakeRecPoints(TTree * clustersTree)
{
  //
  //filling QA histos for clusters
  //
  AliHMPIDParam *pPar =AliHMPIDParam::Instance();
 
  if (fRecPointsArray) 
    fRecPointsArray->Clear() ; 
  else 
    fRecPointsArray = new TClonesArray("AliHMPIDCluster");
  
  for(Int_t iCh=AliHMPIDParam::kMinCh;iCh<=AliHMPIDParam::kMaxCh;iCh++){
    TBranch *branch = clustersTree->GetBranch(Form("HMPID%d",iCh));
    branch->SetAddress(&fRecPointsArray);
    branch->GetEntry(0);
    FillRecPointsData(0,iCh,fRecPointsArray->GetEntries());
    TIter next(fRecPointsArray);
    AliHMPIDCluster *clu;
    while ( (clu = dynamic_cast<AliHMPIDCluster *>(next())) ) {
      FillRecPointsData(1,clu->Status(),iCh);
      Int_t sect =  pPar->InHVSector(clu->Y());
      if(clu->Q()>100) FillRecPointsData(2+iCh,clu->Size());
      else {
        FillRecPointsData(2+7+iCh,clu->Size());
        FillRecPointsData(2+14+iCh*6+sect,clu->Q());
      }    
      FillRecPointsData(2+14+42+iCh*6+sect,clu->Q());
    }
  }
  IncEvCountCycleRecPoints();
  IncEvCountTotalRecPoints();
  //
}

//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
void AliHMPIDQADataMakerRec::MakeESDs(AliESDEvent * esd)
{
  //
  //fills QA histos for ESD
  //
 
  for(Int_t iTrk = 0 ; iTrk < esd->GetNumberOfTracks() ; iTrk++){
    AliESDtrack *pTrk = esd->GetTrack(iTrk) ;
    Float_t thetaCkov = -999.;
    if(pTrk->GetHMPIDsignal()<0.) thetaCkov = pTrk->GetHMPIDsignal();
    else                          thetaCkov = pTrk->GetHMPIDsignal() - (Int_t)pTrk->GetHMPIDsignal();;
    FillESDsData(0,pTrk->GetP(),thetaCkov);
    FillESDsData(1, pTrk->GetP(),TMath::Sqrt(pTrk->GetHMPIDchi2()));
    Float_t xm,ym; Int_t q,np;  
    pTrk->GetHMPIDmip(xm,ym,q,np);                       //mip info
    Float_t xRad,yRad,th,ph;        
    pTrk->GetHMPIDtrk(xRad,yRad,th,ph);              //track info at the middle of the radiator
    Float_t xPc = xRad+9.25*TMath::Tan(th)*TMath::Cos(ph); // temporar: linear extrapol (B=0!)
    Float_t yPc = yRad+9.25*TMath::Tan(th)*TMath::Sin(ph); // temporar:          "
    FillESDsData(2,xm-xPc,ym-yPc); //track info
    if(pTrk->GetHMPIDsignal()>0) {
     Double_t a = 1.292*1.292*TMath::Cos(thetaCkov)*TMath::Cos(thetaCkov)-1.;
     if(a > 0) {
    Double_t mass = pTrk->P()*TMath::Sqrt(1.292*1.292*TMath::Cos(thetaCkov)*TMath::Cos(thetaCkov)-1.);
    FillESDsData(3, pTrk->GetP(),mass);
     }
    }
   Double_t pid[5] ;      pTrk->GetHMPIDpid(pid) ;
    for(Int_t i = 0 ; i < 5 ; i++) FillESDsData(4+i,pid[i]) ;
  }
  //
  IncEvCountCycleESDs();
  IncEvCountTotalESDs();
  //
}

//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
void AliHMPIDQADataMakerRec::StartOfDetectorCycle()
{
  //Detector specific actions at start of cycle
  
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

void AliHMPIDQADataMakerRec::EndOfDetectorCycle(AliQAv1::TASKINDEX_t task, TObjArray **histos)
{
  //Detector specific actions at end of cycle
  // do the QA checking
  ResetEventTrigClasses(); // reset triggers list to select all histos
  TH1* htmp = 0;
  //
  for (int itc=-1;itc<GetNTrigClasses();itc++) { // RS: loop over eventual clones per trigger class
    //
    if(task==AliQAv1::kRAWS) {
      for (Int_t specie = 0 ; specie < AliRecoParam::kNSpecies ; specie++) {
	if (! IsValidEventSpecie(specie, histos) ) continue;
	SetEventSpecie(AliRecoParam::ConvertIndex(specie));
	Int_t nEvtRaw = GetEvCountCycleRaws(itc);
	if (nEvtRaw>0) {
	  //ddl histos scaled by the number of events 
	  for(Int_t iddl=0;iddl<14;iddl++) if ( (htmp=GetData(histos, 14+iddl,itc)) ) htmp->Scale(1.0/(Float_t)nEvtRaw);
	  if ( (htmp=GetData(histos, 14+14+42+42+3, itc)) ) htmp->Scale(1.0/(Float_t)nEvtRaw);
	  if ( (htmp=GetData(histos, 14+14+42+42+4, itc)) ) htmp->Scale(1.0/(Float_t)nEvtRaw);
	}      
	Double_t binval=0,binerr=0;	
	TH1F     *h4    = (TH1F*)    GetData(histos, 14+14+42+42+1, itc);
	TProfile *h4prf = (TProfile*)GetData(histos, 14+14+42+42+5, itc);
	if (h4 && h4prf) {
	  for(Int_t iddl=1;iddl<=14;iddl++) {
	    binval=h4prf->GetBinContent(iddl);  binerr=h4prf->GetBinError(iddl);
	    h4->SetBinContent(iddl,binval);     h4->SetBinError(iddl,binerr);
	  }
	}
	//if (nEvtRaw>0) h4->Scale(1./(Float_t)nEvtRaw);
	//
	TH1F     *h5    = (TH1F*)    GetData(histos, 14+14+42+42+2, itc);
	TProfile *h5prf = (TProfile*)GetData(histos, 14+14+42+42+6, itc);
	if (h4 && h4prf) {
	  for(Int_t iddl=1;iddl<=14;iddl++) {
	    binval=h5prf->GetBinContent(iddl);  binerr=h5prf->GetBinError(iddl);
	    h5->SetBinContent(iddl,binval);     h5->SetBinError(iddl,binerr);
	  }
	}
	//if(nEvtRaw>0) h5->Scale(1./(Float_t)nEvtRaw/11520.0*100.0);           
      }//specie loop     
    }//RAWS
    //
  } // RS: loop over eventual clones per trigger class
  //
  AliQAChecker::Instance()->Run(AliQAv1::kHMPID, task, histos);
  //
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 AliHMPIDQADataMakerRec.cxx:1
 AliHMPIDQADataMakerRec.cxx:2
 AliHMPIDQADataMakerRec.cxx:3
 AliHMPIDQADataMakerRec.cxx:4
 AliHMPIDQADataMakerRec.cxx:5
 AliHMPIDQADataMakerRec.cxx:6
 AliHMPIDQADataMakerRec.cxx:7
 AliHMPIDQADataMakerRec.cxx:8
 AliHMPIDQADataMakerRec.cxx:9
 AliHMPIDQADataMakerRec.cxx:10
 AliHMPIDQADataMakerRec.cxx:11
 AliHMPIDQADataMakerRec.cxx:12
 AliHMPIDQADataMakerRec.cxx:13
 AliHMPIDQADataMakerRec.cxx:14
 AliHMPIDQADataMakerRec.cxx:15
 AliHMPIDQADataMakerRec.cxx:16
 AliHMPIDQADataMakerRec.cxx:17
 AliHMPIDQADataMakerRec.cxx:18
 AliHMPIDQADataMakerRec.cxx:19
 AliHMPIDQADataMakerRec.cxx:20
 AliHMPIDQADataMakerRec.cxx:21
 AliHMPIDQADataMakerRec.cxx:22
 AliHMPIDQADataMakerRec.cxx:23
 AliHMPIDQADataMakerRec.cxx:24
 AliHMPIDQADataMakerRec.cxx:25
 AliHMPIDQADataMakerRec.cxx:26
 AliHMPIDQADataMakerRec.cxx:27
 AliHMPIDQADataMakerRec.cxx:28
 AliHMPIDQADataMakerRec.cxx:29
 AliHMPIDQADataMakerRec.cxx:30
 AliHMPIDQADataMakerRec.cxx:31
 AliHMPIDQADataMakerRec.cxx:32
 AliHMPIDQADataMakerRec.cxx:33
 AliHMPIDQADataMakerRec.cxx:34
 AliHMPIDQADataMakerRec.cxx:35
 AliHMPIDQADataMakerRec.cxx:36
 AliHMPIDQADataMakerRec.cxx:37
 AliHMPIDQADataMakerRec.cxx:38
 AliHMPIDQADataMakerRec.cxx:39
 AliHMPIDQADataMakerRec.cxx:40
 AliHMPIDQADataMakerRec.cxx:41
 AliHMPIDQADataMakerRec.cxx:42
 AliHMPIDQADataMakerRec.cxx:43
 AliHMPIDQADataMakerRec.cxx:44
 AliHMPIDQADataMakerRec.cxx:45
 AliHMPIDQADataMakerRec.cxx:46
 AliHMPIDQADataMakerRec.cxx:47
 AliHMPIDQADataMakerRec.cxx:48
 AliHMPIDQADataMakerRec.cxx:49
 AliHMPIDQADataMakerRec.cxx:50
 AliHMPIDQADataMakerRec.cxx:51
 AliHMPIDQADataMakerRec.cxx:52
 AliHMPIDQADataMakerRec.cxx:53
 AliHMPIDQADataMakerRec.cxx:54
 AliHMPIDQADataMakerRec.cxx:55
 AliHMPIDQADataMakerRec.cxx:56
 AliHMPIDQADataMakerRec.cxx:57
 AliHMPIDQADataMakerRec.cxx:58
 AliHMPIDQADataMakerRec.cxx:59
 AliHMPIDQADataMakerRec.cxx:60
 AliHMPIDQADataMakerRec.cxx:61
 AliHMPIDQADataMakerRec.cxx:62
 AliHMPIDQADataMakerRec.cxx:63
 AliHMPIDQADataMakerRec.cxx:64
 AliHMPIDQADataMakerRec.cxx:65
 AliHMPIDQADataMakerRec.cxx:66
 AliHMPIDQADataMakerRec.cxx:67
 AliHMPIDQADataMakerRec.cxx:68
 AliHMPIDQADataMakerRec.cxx:69
 AliHMPIDQADataMakerRec.cxx:70
 AliHMPIDQADataMakerRec.cxx:71
 AliHMPIDQADataMakerRec.cxx:72
 AliHMPIDQADataMakerRec.cxx:73
 AliHMPIDQADataMakerRec.cxx:74
 AliHMPIDQADataMakerRec.cxx:75
 AliHMPIDQADataMakerRec.cxx:76
 AliHMPIDQADataMakerRec.cxx:77
 AliHMPIDQADataMakerRec.cxx:78
 AliHMPIDQADataMakerRec.cxx:79
 AliHMPIDQADataMakerRec.cxx:80
 AliHMPIDQADataMakerRec.cxx:81
 AliHMPIDQADataMakerRec.cxx:82
 AliHMPIDQADataMakerRec.cxx:83
 AliHMPIDQADataMakerRec.cxx:84
 AliHMPIDQADataMakerRec.cxx:85
 AliHMPIDQADataMakerRec.cxx:86
 AliHMPIDQADataMakerRec.cxx:87
 AliHMPIDQADataMakerRec.cxx:88
 AliHMPIDQADataMakerRec.cxx:89
 AliHMPIDQADataMakerRec.cxx:90
 AliHMPIDQADataMakerRec.cxx:91
 AliHMPIDQADataMakerRec.cxx:92
 AliHMPIDQADataMakerRec.cxx:93
 AliHMPIDQADataMakerRec.cxx:94
 AliHMPIDQADataMakerRec.cxx:95
 AliHMPIDQADataMakerRec.cxx:96
 AliHMPIDQADataMakerRec.cxx:97
 AliHMPIDQADataMakerRec.cxx:98
 AliHMPIDQADataMakerRec.cxx:99
 AliHMPIDQADataMakerRec.cxx:100
 AliHMPIDQADataMakerRec.cxx:101
 AliHMPIDQADataMakerRec.cxx:102
 AliHMPIDQADataMakerRec.cxx:103
 AliHMPIDQADataMakerRec.cxx:104
 AliHMPIDQADataMakerRec.cxx:105
 AliHMPIDQADataMakerRec.cxx:106
 AliHMPIDQADataMakerRec.cxx:107
 AliHMPIDQADataMakerRec.cxx:108
 AliHMPIDQADataMakerRec.cxx:109
 AliHMPIDQADataMakerRec.cxx:110
 AliHMPIDQADataMakerRec.cxx:111
 AliHMPIDQADataMakerRec.cxx:112
 AliHMPIDQADataMakerRec.cxx:113
 AliHMPIDQADataMakerRec.cxx:114
 AliHMPIDQADataMakerRec.cxx:115
 AliHMPIDQADataMakerRec.cxx:116
 AliHMPIDQADataMakerRec.cxx:117
 AliHMPIDQADataMakerRec.cxx:118
 AliHMPIDQADataMakerRec.cxx:119
 AliHMPIDQADataMakerRec.cxx:120
 AliHMPIDQADataMakerRec.cxx:121
 AliHMPIDQADataMakerRec.cxx:122
 AliHMPIDQADataMakerRec.cxx:123
 AliHMPIDQADataMakerRec.cxx:124
 AliHMPIDQADataMakerRec.cxx:125
 AliHMPIDQADataMakerRec.cxx:126
 AliHMPIDQADataMakerRec.cxx:127
 AliHMPIDQADataMakerRec.cxx:128
 AliHMPIDQADataMakerRec.cxx:129
 AliHMPIDQADataMakerRec.cxx:130
 AliHMPIDQADataMakerRec.cxx:131
 AliHMPIDQADataMakerRec.cxx:132
 AliHMPIDQADataMakerRec.cxx:133
 AliHMPIDQADataMakerRec.cxx:134
 AliHMPIDQADataMakerRec.cxx:135
 AliHMPIDQADataMakerRec.cxx:136
 AliHMPIDQADataMakerRec.cxx:137
 AliHMPIDQADataMakerRec.cxx:138
 AliHMPIDQADataMakerRec.cxx:139
 AliHMPIDQADataMakerRec.cxx:140
 AliHMPIDQADataMakerRec.cxx:141
 AliHMPIDQADataMakerRec.cxx:142
 AliHMPIDQADataMakerRec.cxx:143
 AliHMPIDQADataMakerRec.cxx:144
 AliHMPIDQADataMakerRec.cxx:145
 AliHMPIDQADataMakerRec.cxx:146
 AliHMPIDQADataMakerRec.cxx:147
 AliHMPIDQADataMakerRec.cxx:148
 AliHMPIDQADataMakerRec.cxx:149
 AliHMPIDQADataMakerRec.cxx:150
 AliHMPIDQADataMakerRec.cxx:151
 AliHMPIDQADataMakerRec.cxx:152
 AliHMPIDQADataMakerRec.cxx:153
 AliHMPIDQADataMakerRec.cxx:154
 AliHMPIDQADataMakerRec.cxx:155
 AliHMPIDQADataMakerRec.cxx:156
 AliHMPIDQADataMakerRec.cxx:157
 AliHMPIDQADataMakerRec.cxx:158
 AliHMPIDQADataMakerRec.cxx:159
 AliHMPIDQADataMakerRec.cxx:160
 AliHMPIDQADataMakerRec.cxx:161
 AliHMPIDQADataMakerRec.cxx:162
 AliHMPIDQADataMakerRec.cxx:163
 AliHMPIDQADataMakerRec.cxx:164
 AliHMPIDQADataMakerRec.cxx:165
 AliHMPIDQADataMakerRec.cxx:166
 AliHMPIDQADataMakerRec.cxx:167
 AliHMPIDQADataMakerRec.cxx:168
 AliHMPIDQADataMakerRec.cxx:169
 AliHMPIDQADataMakerRec.cxx:170
 AliHMPIDQADataMakerRec.cxx:171
 AliHMPIDQADataMakerRec.cxx:172
 AliHMPIDQADataMakerRec.cxx:173
 AliHMPIDQADataMakerRec.cxx:174
 AliHMPIDQADataMakerRec.cxx:175
 AliHMPIDQADataMakerRec.cxx:176
 AliHMPIDQADataMakerRec.cxx:177
 AliHMPIDQADataMakerRec.cxx:178
 AliHMPIDQADataMakerRec.cxx:179
 AliHMPIDQADataMakerRec.cxx:180
 AliHMPIDQADataMakerRec.cxx:181
 AliHMPIDQADataMakerRec.cxx:182
 AliHMPIDQADataMakerRec.cxx:183
 AliHMPIDQADataMakerRec.cxx:184
 AliHMPIDQADataMakerRec.cxx:185
 AliHMPIDQADataMakerRec.cxx:186
 AliHMPIDQADataMakerRec.cxx:187
 AliHMPIDQADataMakerRec.cxx:188
 AliHMPIDQADataMakerRec.cxx:189
 AliHMPIDQADataMakerRec.cxx:190
 AliHMPIDQADataMakerRec.cxx:191
 AliHMPIDQADataMakerRec.cxx:192
 AliHMPIDQADataMakerRec.cxx:193
 AliHMPIDQADataMakerRec.cxx:194
 AliHMPIDQADataMakerRec.cxx:195
 AliHMPIDQADataMakerRec.cxx:196
 AliHMPIDQADataMakerRec.cxx:197
 AliHMPIDQADataMakerRec.cxx:198
 AliHMPIDQADataMakerRec.cxx:199
 AliHMPIDQADataMakerRec.cxx:200
 AliHMPIDQADataMakerRec.cxx:201
 AliHMPIDQADataMakerRec.cxx:202
 AliHMPIDQADataMakerRec.cxx:203
 AliHMPIDQADataMakerRec.cxx:204
 AliHMPIDQADataMakerRec.cxx:205
 AliHMPIDQADataMakerRec.cxx:206
 AliHMPIDQADataMakerRec.cxx:207
 AliHMPIDQADataMakerRec.cxx:208
 AliHMPIDQADataMakerRec.cxx:209
 AliHMPIDQADataMakerRec.cxx:210
 AliHMPIDQADataMakerRec.cxx:211
 AliHMPIDQADataMakerRec.cxx:212
 AliHMPIDQADataMakerRec.cxx:213
 AliHMPIDQADataMakerRec.cxx:214
 AliHMPIDQADataMakerRec.cxx:215
 AliHMPIDQADataMakerRec.cxx:216
 AliHMPIDQADataMakerRec.cxx:217
 AliHMPIDQADataMakerRec.cxx:218
 AliHMPIDQADataMakerRec.cxx:219
 AliHMPIDQADataMakerRec.cxx:220
 AliHMPIDQADataMakerRec.cxx:221
 AliHMPIDQADataMakerRec.cxx:222
 AliHMPIDQADataMakerRec.cxx:223
 AliHMPIDQADataMakerRec.cxx:224
 AliHMPIDQADataMakerRec.cxx:225
 AliHMPIDQADataMakerRec.cxx:226
 AliHMPIDQADataMakerRec.cxx:227
 AliHMPIDQADataMakerRec.cxx:228
 AliHMPIDQADataMakerRec.cxx:229
 AliHMPIDQADataMakerRec.cxx:230
 AliHMPIDQADataMakerRec.cxx:231
 AliHMPIDQADataMakerRec.cxx:232
 AliHMPIDQADataMakerRec.cxx:233
 AliHMPIDQADataMakerRec.cxx:234
 AliHMPIDQADataMakerRec.cxx:235
 AliHMPIDQADataMakerRec.cxx:236
 AliHMPIDQADataMakerRec.cxx:237
 AliHMPIDQADataMakerRec.cxx:238
 AliHMPIDQADataMakerRec.cxx:239
 AliHMPIDQADataMakerRec.cxx:240
 AliHMPIDQADataMakerRec.cxx:241
 AliHMPIDQADataMakerRec.cxx:242
 AliHMPIDQADataMakerRec.cxx:243
 AliHMPIDQADataMakerRec.cxx:244
 AliHMPIDQADataMakerRec.cxx:245
 AliHMPIDQADataMakerRec.cxx:246
 AliHMPIDQADataMakerRec.cxx:247
 AliHMPIDQADataMakerRec.cxx:248
 AliHMPIDQADataMakerRec.cxx:249
 AliHMPIDQADataMakerRec.cxx:250
 AliHMPIDQADataMakerRec.cxx:251
 AliHMPIDQADataMakerRec.cxx:252
 AliHMPIDQADataMakerRec.cxx:253
 AliHMPIDQADataMakerRec.cxx:254
 AliHMPIDQADataMakerRec.cxx:255
 AliHMPIDQADataMakerRec.cxx:256
 AliHMPIDQADataMakerRec.cxx:257
 AliHMPIDQADataMakerRec.cxx:258
 AliHMPIDQADataMakerRec.cxx:259
 AliHMPIDQADataMakerRec.cxx:260
 AliHMPIDQADataMakerRec.cxx:261
 AliHMPIDQADataMakerRec.cxx:262
 AliHMPIDQADataMakerRec.cxx:263
 AliHMPIDQADataMakerRec.cxx:264
 AliHMPIDQADataMakerRec.cxx:265
 AliHMPIDQADataMakerRec.cxx:266
 AliHMPIDQADataMakerRec.cxx:267
 AliHMPIDQADataMakerRec.cxx:268
 AliHMPIDQADataMakerRec.cxx:269
 AliHMPIDQADataMakerRec.cxx:270
 AliHMPIDQADataMakerRec.cxx:271
 AliHMPIDQADataMakerRec.cxx:272
 AliHMPIDQADataMakerRec.cxx:273
 AliHMPIDQADataMakerRec.cxx:274
 AliHMPIDQADataMakerRec.cxx:275
 AliHMPIDQADataMakerRec.cxx:276
 AliHMPIDQADataMakerRec.cxx:277
 AliHMPIDQADataMakerRec.cxx:278
 AliHMPIDQADataMakerRec.cxx:279
 AliHMPIDQADataMakerRec.cxx:280
 AliHMPIDQADataMakerRec.cxx:281
 AliHMPIDQADataMakerRec.cxx:282
 AliHMPIDQADataMakerRec.cxx:283
 AliHMPIDQADataMakerRec.cxx:284
 AliHMPIDQADataMakerRec.cxx:285
 AliHMPIDQADataMakerRec.cxx:286
 AliHMPIDQADataMakerRec.cxx:287
 AliHMPIDQADataMakerRec.cxx:288
 AliHMPIDQADataMakerRec.cxx:289
 AliHMPIDQADataMakerRec.cxx:290
 AliHMPIDQADataMakerRec.cxx:291
 AliHMPIDQADataMakerRec.cxx:292
 AliHMPIDQADataMakerRec.cxx:293
 AliHMPIDQADataMakerRec.cxx:294
 AliHMPIDQADataMakerRec.cxx:295
 AliHMPIDQADataMakerRec.cxx:296
 AliHMPIDQADataMakerRec.cxx:297
 AliHMPIDQADataMakerRec.cxx:298
 AliHMPIDQADataMakerRec.cxx:299
 AliHMPIDQADataMakerRec.cxx:300
 AliHMPIDQADataMakerRec.cxx:301
 AliHMPIDQADataMakerRec.cxx:302
 AliHMPIDQADataMakerRec.cxx:303
 AliHMPIDQADataMakerRec.cxx:304
 AliHMPIDQADataMakerRec.cxx:305
 AliHMPIDQADataMakerRec.cxx:306
 AliHMPIDQADataMakerRec.cxx:307
 AliHMPIDQADataMakerRec.cxx:308
 AliHMPIDQADataMakerRec.cxx:309
 AliHMPIDQADataMakerRec.cxx:310
 AliHMPIDQADataMakerRec.cxx:311
 AliHMPIDQADataMakerRec.cxx:312
 AliHMPIDQADataMakerRec.cxx:313
 AliHMPIDQADataMakerRec.cxx:314
 AliHMPIDQADataMakerRec.cxx:315
 AliHMPIDQADataMakerRec.cxx:316
 AliHMPIDQADataMakerRec.cxx:317
 AliHMPIDQADataMakerRec.cxx:318
 AliHMPIDQADataMakerRec.cxx:319
 AliHMPIDQADataMakerRec.cxx:320
 AliHMPIDQADataMakerRec.cxx:321
 AliHMPIDQADataMakerRec.cxx:322
 AliHMPIDQADataMakerRec.cxx:323
 AliHMPIDQADataMakerRec.cxx:324
 AliHMPIDQADataMakerRec.cxx:325
 AliHMPIDQADataMakerRec.cxx:326
 AliHMPIDQADataMakerRec.cxx:327
 AliHMPIDQADataMakerRec.cxx:328
 AliHMPIDQADataMakerRec.cxx:329
 AliHMPIDQADataMakerRec.cxx:330
 AliHMPIDQADataMakerRec.cxx:331
 AliHMPIDQADataMakerRec.cxx:332
 AliHMPIDQADataMakerRec.cxx:333
 AliHMPIDQADataMakerRec.cxx:334
 AliHMPIDQADataMakerRec.cxx:335
 AliHMPIDQADataMakerRec.cxx:336
 AliHMPIDQADataMakerRec.cxx:337
 AliHMPIDQADataMakerRec.cxx:338
 AliHMPIDQADataMakerRec.cxx:339
 AliHMPIDQADataMakerRec.cxx:340
 AliHMPIDQADataMakerRec.cxx:341
 AliHMPIDQADataMakerRec.cxx:342
 AliHMPIDQADataMakerRec.cxx:343
 AliHMPIDQADataMakerRec.cxx:344
 AliHMPIDQADataMakerRec.cxx:345
 AliHMPIDQADataMakerRec.cxx:346
 AliHMPIDQADataMakerRec.cxx:347
 AliHMPIDQADataMakerRec.cxx:348
 AliHMPIDQADataMakerRec.cxx:349
 AliHMPIDQADataMakerRec.cxx:350
 AliHMPIDQADataMakerRec.cxx:351
 AliHMPIDQADataMakerRec.cxx:352
 AliHMPIDQADataMakerRec.cxx:353
 AliHMPIDQADataMakerRec.cxx:354
 AliHMPIDQADataMakerRec.cxx:355
 AliHMPIDQADataMakerRec.cxx:356
 AliHMPIDQADataMakerRec.cxx:357
 AliHMPIDQADataMakerRec.cxx:358
 AliHMPIDQADataMakerRec.cxx:359
 AliHMPIDQADataMakerRec.cxx:360
 AliHMPIDQADataMakerRec.cxx:361
 AliHMPIDQADataMakerRec.cxx:362
 AliHMPIDQADataMakerRec.cxx:363
 AliHMPIDQADataMakerRec.cxx:364
 AliHMPIDQADataMakerRec.cxx:365
 AliHMPIDQADataMakerRec.cxx:366
 AliHMPIDQADataMakerRec.cxx:367
 AliHMPIDQADataMakerRec.cxx:368
 AliHMPIDQADataMakerRec.cxx:369
 AliHMPIDQADataMakerRec.cxx:370
 AliHMPIDQADataMakerRec.cxx:371
 AliHMPIDQADataMakerRec.cxx:372
 AliHMPIDQADataMakerRec.cxx:373
 AliHMPIDQADataMakerRec.cxx:374
 AliHMPIDQADataMakerRec.cxx:375
 AliHMPIDQADataMakerRec.cxx:376
 AliHMPIDQADataMakerRec.cxx:377
 AliHMPIDQADataMakerRec.cxx:378
 AliHMPIDQADataMakerRec.cxx:379
 AliHMPIDQADataMakerRec.cxx:380
 AliHMPIDQADataMakerRec.cxx:381
 AliHMPIDQADataMakerRec.cxx:382
 AliHMPIDQADataMakerRec.cxx:383
 AliHMPIDQADataMakerRec.cxx:384
 AliHMPIDQADataMakerRec.cxx:385
 AliHMPIDQADataMakerRec.cxx:386
 AliHMPIDQADataMakerRec.cxx:387
 AliHMPIDQADataMakerRec.cxx:388
 AliHMPIDQADataMakerRec.cxx:389
 AliHMPIDQADataMakerRec.cxx:390
 AliHMPIDQADataMakerRec.cxx:391
 AliHMPIDQADataMakerRec.cxx:392
 AliHMPIDQADataMakerRec.cxx:393
 AliHMPIDQADataMakerRec.cxx:394
 AliHMPIDQADataMakerRec.cxx:395
 AliHMPIDQADataMakerRec.cxx:396
 AliHMPIDQADataMakerRec.cxx:397
 AliHMPIDQADataMakerRec.cxx:398
 AliHMPIDQADataMakerRec.cxx:399
 AliHMPIDQADataMakerRec.cxx:400
 AliHMPIDQADataMakerRec.cxx:401
 AliHMPIDQADataMakerRec.cxx:402
 AliHMPIDQADataMakerRec.cxx:403
 AliHMPIDQADataMakerRec.cxx:404
 AliHMPIDQADataMakerRec.cxx:405
 AliHMPIDQADataMakerRec.cxx:406
 AliHMPIDQADataMakerRec.cxx:407
 AliHMPIDQADataMakerRec.cxx:408
 AliHMPIDQADataMakerRec.cxx:409
 AliHMPIDQADataMakerRec.cxx:410
 AliHMPIDQADataMakerRec.cxx:411
 AliHMPIDQADataMakerRec.cxx:412
 AliHMPIDQADataMakerRec.cxx:413
 AliHMPIDQADataMakerRec.cxx:414
 AliHMPIDQADataMakerRec.cxx:415
 AliHMPIDQADataMakerRec.cxx:416
 AliHMPIDQADataMakerRec.cxx:417
 AliHMPIDQADataMakerRec.cxx:418
 AliHMPIDQADataMakerRec.cxx:419
 AliHMPIDQADataMakerRec.cxx:420
 AliHMPIDQADataMakerRec.cxx:421
 AliHMPIDQADataMakerRec.cxx:422
 AliHMPIDQADataMakerRec.cxx:423
 AliHMPIDQADataMakerRec.cxx:424
 AliHMPIDQADataMakerRec.cxx:425
 AliHMPIDQADataMakerRec.cxx:426
 AliHMPIDQADataMakerRec.cxx:427
 AliHMPIDQADataMakerRec.cxx:428
 AliHMPIDQADataMakerRec.cxx:429
 AliHMPIDQADataMakerRec.cxx:430
 AliHMPIDQADataMakerRec.cxx:431
 AliHMPIDQADataMakerRec.cxx:432
 AliHMPIDQADataMakerRec.cxx:433
 AliHMPIDQADataMakerRec.cxx:434
 AliHMPIDQADataMakerRec.cxx:435
 AliHMPIDQADataMakerRec.cxx:436
 AliHMPIDQADataMakerRec.cxx:437
 AliHMPIDQADataMakerRec.cxx:438
 AliHMPIDQADataMakerRec.cxx:439
 AliHMPIDQADataMakerRec.cxx:440
 AliHMPIDQADataMakerRec.cxx:441
 AliHMPIDQADataMakerRec.cxx:442
 AliHMPIDQADataMakerRec.cxx:443
 AliHMPIDQADataMakerRec.cxx:444
 AliHMPIDQADataMakerRec.cxx:445
 AliHMPIDQADataMakerRec.cxx:446
 AliHMPIDQADataMakerRec.cxx:447
 AliHMPIDQADataMakerRec.cxx:448
 AliHMPIDQADataMakerRec.cxx:449
 AliHMPIDQADataMakerRec.cxx:450
 AliHMPIDQADataMakerRec.cxx:451
 AliHMPIDQADataMakerRec.cxx:452
 AliHMPIDQADataMakerRec.cxx:453
 AliHMPIDQADataMakerRec.cxx:454
 AliHMPIDQADataMakerRec.cxx:455
 AliHMPIDQADataMakerRec.cxx:456
 AliHMPIDQADataMakerRec.cxx:457
 AliHMPIDQADataMakerRec.cxx:458
 AliHMPIDQADataMakerRec.cxx:459
 AliHMPIDQADataMakerRec.cxx:460
 AliHMPIDQADataMakerRec.cxx:461
 AliHMPIDQADataMakerRec.cxx:462
 AliHMPIDQADataMakerRec.cxx:463
 AliHMPIDQADataMakerRec.cxx:464
 AliHMPIDQADataMakerRec.cxx:465
 AliHMPIDQADataMakerRec.cxx:466
 AliHMPIDQADataMakerRec.cxx:467
 AliHMPIDQADataMakerRec.cxx:468
 AliHMPIDQADataMakerRec.cxx:469
 AliHMPIDQADataMakerRec.cxx:470
 AliHMPIDQADataMakerRec.cxx:471
 AliHMPIDQADataMakerRec.cxx:472
 AliHMPIDQADataMakerRec.cxx:473
 AliHMPIDQADataMakerRec.cxx:474
 AliHMPIDQADataMakerRec.cxx:475
 AliHMPIDQADataMakerRec.cxx:476
 AliHMPIDQADataMakerRec.cxx:477
 AliHMPIDQADataMakerRec.cxx:478
 AliHMPIDQADataMakerRec.cxx:479
 AliHMPIDQADataMakerRec.cxx:480
 AliHMPIDQADataMakerRec.cxx:481
 AliHMPIDQADataMakerRec.cxx:482
 AliHMPIDQADataMakerRec.cxx:483
 AliHMPIDQADataMakerRec.cxx:484
 AliHMPIDQADataMakerRec.cxx:485
 AliHMPIDQADataMakerRec.cxx:486
 AliHMPIDQADataMakerRec.cxx:487
 AliHMPIDQADataMakerRec.cxx:488
 AliHMPIDQADataMakerRec.cxx:489
 AliHMPIDQADataMakerRec.cxx:490
 AliHMPIDQADataMakerRec.cxx:491
 AliHMPIDQADataMakerRec.cxx:492
 AliHMPIDQADataMakerRec.cxx:493
 AliHMPIDQADataMakerRec.cxx:494
 AliHMPIDQADataMakerRec.cxx:495
 AliHMPIDQADataMakerRec.cxx:496
 AliHMPIDQADataMakerRec.cxx:497
 AliHMPIDQADataMakerRec.cxx:498
 AliHMPIDQADataMakerRec.cxx:499
 AliHMPIDQADataMakerRec.cxx:500
 AliHMPIDQADataMakerRec.cxx:501
 AliHMPIDQADataMakerRec.cxx:502
 AliHMPIDQADataMakerRec.cxx:503
 AliHMPIDQADataMakerRec.cxx:504
 AliHMPIDQADataMakerRec.cxx:505
 AliHMPIDQADataMakerRec.cxx:506
 AliHMPIDQADataMakerRec.cxx:507
 AliHMPIDQADataMakerRec.cxx:508
 AliHMPIDQADataMakerRec.cxx:509
 AliHMPIDQADataMakerRec.cxx:510