ROOT logo
/*  created by fbellini@cern.ch on 29/04/2013 */
/*  last modified by fbellini   on 19/08/2013 */


#ifndef ALIANALYSISTASKTOFQAID_CXX
#define ALIANALYSISTASKTOFQAID_CXX

#include "TChain.h"
#include "TTree.h"
#include "TH1F.h"
#include "TH2F.h"
#include "TProfile.h"
#include "TCanvas.h"
#include "AliAnalysisTaskSE.h"
#include "AliAnalysisManager.h"
#include "AliVEvent.h"
#include "AliVTrack.h"
#include "AliESDEvent.h"
#include "AliMCEvent.h"
#include "AliMCParticle.h"
#include "AliESDInputHandler.h"
#include "AliMCEventHandler.h"
#include "AliESDpid.h"
#include "AliTOFPIDParams.h"
#include "AliCDBManager.h"
#include "AliTOFcalib.h"
#include "AliTOFT0maker.h"
#include "AliTOFT0v1.h"
#include "AliAnalysisTaskTOFqaID.h"
#include "AliAnalysisFilter.h"
#include "AliESDtrackCuts.h"
#include "AliLog.h"
#include "AliTOFRawStream.h"
#include "AliTOFGeometry.h"

ClassImp(AliAnalysisTaskTOFqaID)

//________________________________________________________________________
AliAnalysisTaskTOFqaID::AliAnalysisTaskTOFqaID() :
  fRunNumber(0), 
  fESD(0x0), 
  fMCevent(0x0),
  fTrackFilter(0x0), 
  fVertex(0x0),
  fESDpid(new AliESDpid()),
  fTOFHeader(0x0),
  fEnableAdvancedCheck(kFALSE),
  fEnableChargeSplit(kFALSE),
  fExpTimeBinWidth(24.4),
  fExpTimeRangeMin(-25010.),
  fExpTimeRangeMax(25010.),
  fExpTimeSmallRangeMin(-5002.),
  fExpTimeSmallRangeMax(5002.),
  fnExpTimeBins(1),
  fnExpTimeSmallBins(1),  
  fMyTimeZeroTOF(1e20),
  fMyTimeZeroTOFsigma(1e20),
  fMyTimeZeroTOFtracks(-1),
  fIsMC(kFALSE),
  fSelectedPdg(0),
  fP(1e10),
  fPt(1e10),
  fEta(1e10),
  fPhi(1e10),
  fTPCOuterPhi(1e10),
  fL(1e10),
  fMatchingMomCut(0.0),
  fMatchingEtaCut(1e10),
  fTof(1e10),
  fHlist(0x0),
  fHlistTimeZero(0x0),
  fHlistPID(0x0),
  fHlistTRD(0x0),
  fHlistTrigger(0x0)
{
  // Default constructor
   
   for (Int_t j=0;j<3;j++ ) {
     if (j<3) {
       fT0[j]=0.0;
       fNTOFtracks[j]=0;
     }
     fSigmaSpecie[j]=0.0;
     fTrkExpTimes[j]=0.0;
     fThExpTimes[j]=0.0;
   }
}
//________________________________________________________________________
AliAnalysisTaskTOFqaID::AliAnalysisTaskTOFqaID(const char *name) : 
  AliAnalysisTaskSE(name), 
  fRunNumber(0), 
  fESD(0x0), 
  fMCevent(0x0),
  fTrackFilter(0x0),
  fVertex(0x0),
  fESDpid(new AliESDpid()),
  fTOFHeader(0x0),
  fEnableAdvancedCheck(kFALSE),
  fEnableChargeSplit(kFALSE),
  fExpTimeBinWidth(24.4),
  fExpTimeRangeMin(-25010.),
  fExpTimeRangeMax(25010.),
  fExpTimeSmallRangeMin(-5002.),
  fExpTimeSmallRangeMax(5002.),
  fnExpTimeBins(1),
  fnExpTimeSmallBins(1),
  fMyTimeZeroTOF(1e20),
  fMyTimeZeroTOFsigma(1e20),
  fMyTimeZeroTOFtracks(-1),
  fIsMC(kFALSE),
  fSelectedPdg(0),
  fP(1e10),
  fPt(1e10),
  fEta(1e10),
  fPhi(1e10),
  fTPCOuterPhi(1e10),
  fL(1e10),
  fMatchingMomCut(1.0),
  fMatchingEtaCut(0.8),
  fTof(1e10),
  fHlist(0x0),
  fHlistTimeZero(0x0),
  fHlistPID(0x0),
  fHlistTRD(0x0),
  fHlistTrigger(0x0)
 {
  // Constructor
  // Define input and output slots here
   Info("AliAnalysisTaskTOFqaID","Calling Constructor");
   
   for (Int_t j=0;j<5;j++ ) {
     if (j<3){ 
       fT0[j]=0.0;
       fNTOFtracks[j]=0;
     }
     fSigmaSpecie[j]=0.0;
     fTrkExpTimes[j]=0.0;
     fThExpTimes[j]=0.0;
   }
   // Input slot #0 works with a TChain
   DefineInput(0, TChain::Class());
   
   // Output slot #0 writes into a TH1 container
   // Output slot #1 writes into a user defined  container
   DefineOutput(1, TList::Class());
   DefineOutput(2, TList::Class());
   DefineOutput(3, TList::Class());
   DefineOutput(4, TList::Class());
   DefineOutput(5, TList::Class());
   
 }

//________________________________________________________________________
AliAnalysisTaskTOFqaID::AliAnalysisTaskTOFqaID(const AliAnalysisTaskTOFqaID& copy) 
: AliAnalysisTaskSE(), 
  fRunNumber(copy.fRunNumber), 
  fESD(copy.fESD), 
  fMCevent(copy.fMCevent),
  fTrackFilter(copy.fTrackFilter), 
  fVertex(copy.fVertex),
  fESDpid(copy.fESDpid),
  fTOFHeader(copy.fTOFHeader),
  fEnableAdvancedCheck(copy.fEnableAdvancedCheck),
  fEnableChargeSplit(copy.fEnableChargeSplit),
  fExpTimeBinWidth(copy.fExpTimeBinWidth),
  fExpTimeRangeMin(copy.fExpTimeRangeMin),
  fExpTimeRangeMax(copy.fExpTimeRangeMax),
  fExpTimeSmallRangeMin(copy.fExpTimeSmallRangeMin),
  fExpTimeSmallRangeMax(copy.fExpTimeSmallRangeMax),
  fnExpTimeBins(copy.fnExpTimeBins),
  fnExpTimeSmallBins(copy.fnExpTimeSmallBins),
  fMyTimeZeroTOF(copy.fMyTimeZeroTOF),
  fMyTimeZeroTOFsigma(copy.fMyTimeZeroTOFsigma),
  fMyTimeZeroTOFtracks(copy.fMyTimeZeroTOFtracks),
  fIsMC(copy.fIsMC),
  fSelectedPdg(copy.fSelectedPdg),
  fP(copy.fP),
  fPt(copy.fPt),
  fEta(copy.fEta),
  fPhi(copy.fPhi),
  fTPCOuterPhi(copy.fTPCOuterPhi),
  fL(copy.fL),
  fMatchingMomCut(copy.fMatchingMomCut),
  fMatchingEtaCut(copy.fMatchingEtaCut),
  fTof(copy.fTof),
  fHlist(copy.fHlist),
  fHlistTimeZero(copy.fHlistTimeZero),
  fHlistPID(copy.fHlistPID),
  fHlistTRD(copy.fHlistTRD),
  fHlistTrigger(copy.fHlistTrigger)
{
  // Copy constructor
   for (Int_t j=0;j<5;j++ ) {
     if (j<3) { 
       fT0[j]=copy.fT0[j];
       fNTOFtracks[j]=copy.fNTOFtracks[j];
     }
     fSigmaSpecie[j]=copy.fSigmaSpecie[j];
     fTrkExpTimes[j]=copy.fTrkExpTimes[j];
     fThExpTimes[j]=copy.fThExpTimes[j];
   }
  

}

//___________________________________________________________________________
AliAnalysisTaskTOFqaID& AliAnalysisTaskTOFqaID::operator=(const AliAnalysisTaskTOFqaID& copy) 
{
  //
  // Assignment operator
  //
  if (this!=&copy) {
    AliAnalysisTaskSE::operator=(copy) ;
    fRunNumber=copy.fRunNumber; 
    fESD=copy.fESD;
    fMCevent=copy.fMCevent;
    fTrackFilter=copy.fTrackFilter;
    fVertex=copy.fVertex;
    fESDpid=copy.fESDpid;
    fTOFHeader=copy.fTOFHeader;
    fEnableAdvancedCheck=copy.fEnableAdvancedCheck;
    fEnableChargeSplit=copy.fEnableChargeSplit;
    fExpTimeBinWidth=copy.fExpTimeBinWidth;
    fExpTimeRangeMin=copy.fExpTimeRangeMin;
    fExpTimeRangeMax=copy.fExpTimeRangeMax;
    fExpTimeSmallRangeMin=copy.fExpTimeSmallRangeMin;
    fExpTimeSmallRangeMax=copy.fExpTimeSmallRangeMax;
    fnExpTimeBins=copy.fnExpTimeBins;
    fnExpTimeSmallBins=copy.fnExpTimeSmallBins;
    fMyTimeZeroTOF=copy.fMyTimeZeroTOF;
    fMyTimeZeroTOFsigma=copy.fMyTimeZeroTOFsigma;
    fMyTimeZeroTOFtracks=copy.fMyTimeZeroTOFtracks;
    for (Int_t j=0;j<5;j++ ) {
      if (j<3) {
	fT0[j]=copy.fT0[j];
        fNTOFtracks[j]=copy.fNTOFtracks[j];
      }
      fSigmaSpecie[j]=copy.fSigmaSpecie[j];
      fTrkExpTimes[j]=copy.fTrkExpTimes[j];
      fThExpTimes[j]=copy.fThExpTimes[j];
    }
    fIsMC=copy.fIsMC;
    fSelectedPdg=copy.fSelectedPdg;
    fP=copy.fP;
    fPt=copy.fPt;
    fEta=copy.fEta;
    fPhi=copy.fPhi;
    fTPCOuterPhi=copy.fTPCOuterPhi;
    fL=copy.fL;
    fMatchingMomCut=copy.fMatchingMomCut;
    fMatchingEtaCut=copy.fMatchingEtaCut;
    fTof=copy.fTof;
    fHlist=copy.fHlist;
    fHlistTimeZero=copy.fHlistTimeZero;
    fHlistPID=copy.fHlistPID;
    fHlistTRD=copy.fHlistTRD;
    fHlistTrigger=copy.fHlistTrigger;
  }
  return *this;
}

//___________________________________________________________________________
AliAnalysisTaskTOFqaID::~AliAnalysisTaskTOFqaID() {
  //
  //destructor
  //

  Info("~AliAnalysisTaskTOFqaID","Calling Destructor");
  if (fESDpid) delete fESDpid;
  if (fTOFHeader) delete fTOFHeader;
  if (fVertex) delete fVertex;
  if (fTrackFilter) delete fTrackFilter;
  if (AliAnalysisManager::GetAnalysisManager()->IsProofMode()) return;  

  if (fHlist) {
    delete fHlist;
    fHlist = 0;
  }
  if (fHlistTimeZero) {
    delete fHlistTimeZero;
    fHlistTimeZero = 0;
  }
  if (fHlistPID){
    delete fHlistPID;
    fHlistPID = 0;
  }
  if (fHlistTRD){
    delete fHlistTRD;
    fHlistTRD = 0;
  }
  if (fHlistTrigger){
    delete fHlistTrigger;
    fHlistTrigger = 0;
  }
}

//________________________________________________________________________
void AliAnalysisTaskTOFqaID::UserCreateOutputObjects()
{
  //
  //Define output objects and histograms
  //

  //retrieve PID response object 
  AliAnalysisManager *man=AliAnalysisManager::GetAnalysisManager();
  if (!man)  AliFatal("Analysis manager needed");
  AliInputEventHandler *inputHandler=dynamic_cast<AliInputEventHandler*>(man->GetInputEventHandler());
  if (!inputHandler) AliFatal("Input handler needed");
  //pid response object
  fESDpid=(AliESDpid*)inputHandler->GetPIDResponse();
  if (!fESDpid) AliError("PIDResponse object was not created");
  //fESDpid->SetOADBPath("$ALICE_ROOT/OADB");

  Info("CreateOutputObjects","CreateOutputObjects (TList) of task %s", GetName());
  OpenFile(1);

  if (!fHlist) fHlist = new TList();	
  fHlist->SetOwner(kTRUE);
  fHlist->SetName("base");

  if (!fHlistTimeZero) fHlistTimeZero = new TList();	
  fHlistTimeZero->SetOwner(kTRUE);
  fHlistTimeZero->SetName("startTime");

  if (!fHlistPID) fHlistPID = new TList();	
  fHlistPID->SetOwner(kTRUE);
  fHlistPID->SetName("pid");

  if (!fHlistTRD) fHlistTRD = new TList();	
  fHlistTRD->SetOwner(kTRUE);  
  fHlistTRD->SetName("TRD");

  if (!fHlistTrigger) fHlistTrigger = new TList();	
  fHlistTrigger->SetOwner(kTRUE);  
  fHlistTrigger->SetName("trigger");

  if (fExpTimeRangeMax<fExpTimeRangeMin) {
    SetExpTimeHistoRange(-25010.,25010.);
  }
  fnExpTimeBins = TMath::Nint((fExpTimeRangeMax - fExpTimeRangeMin)/fExpTimeBinWidth);//ps
  fExpTimeRangeMax=fExpTimeRangeMin+fnExpTimeBins*fExpTimeBinWidth;//ps
  
  if (fExpTimeSmallRangeMax<fExpTimeSmallRangeMin) {
    SetExpTimeHistoSmallRange(-5002.,5002.);
  }
  fnExpTimeSmallBins = TMath::Nint((fExpTimeSmallRangeMax - fExpTimeSmallRangeMin)/fExpTimeBinWidth);//ps
  fExpTimeSmallRangeMax=fExpTimeSmallRangeMin+fnExpTimeSmallBins*fExpTimeBinWidth;//ps
  
  //add plots for start time QA
  AddStartTimeHisto(fHlistTimeZero,"");
  
  //add plots for base TOF quantities
  if (fEnableChargeSplit) {
    AddTofBaseHisto(fHlist,  1, "");
    AddTofBaseHisto(fHlist, -1, "");
  } else {
    AddTofBaseHisto(fHlist,  0, "");
  }
  //add plots for matching efficiency
   if (fEnableChargeSplit) {
     AddMatchingEffHisto(fHlist,  1, "");
     AddMatchingEffHisto(fHlist, -1, "");
   } else {
     AddMatchingEffHisto(fHlist,  0, "");
   }
  //add plots for PID checks
   if (fEnableChargeSplit) {
     AddPidHisto(fHlistPID,  1, ""); 
     AddPidHisto(fHlistPID, -1, ""); 
   } else {
     AddPidHisto(fHlistPID,  0, ""); 
   }
  //add trd plots
  if (fEnableAdvancedCheck) {
    AddTrdHisto();
  }
  //Add trigger plots
  AddTofTrgHisto("");
  
  PostData(1, fHlist);
  PostData(2, fHlistTimeZero);
  PostData(3, fHlistPID);
  PostData(4, fHlistTRD);
  PostData(5, fHlistTrigger);
}
//________________________________________________________________________
void AliAnalysisTaskTOFqaID::UserExec(Option_t *) 
{ 
  /* Main - executed for each event.
    It extracts event information and track information after selecting 
    primary tracks via standard cuts. */
  /*
  AliESDInputHandler *esdH = dynamic_cast<AliESDInputHandler*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
  if (!esdH) {
    AliError("ERROR: Could not get ESDInputHandler");
    return;
  } else {
    fESD = (AliESDEvent*) esdH->GetEvent();
  } 
  
  */
  fESD=(AliESDEvent*)InputEvent();
  if (!fESD) {
    AliError("fESD event not available");
    return;
  }
  
  if (!fESDpid) {
    AliError("PID object fESDpid not available");
    return;
  }
  
  //retrieve default start time type from PIDresponse
  AliPIDResponse::EStartTimeType_t startTimeMethodDefault = AliPIDResponse::kBest_T0;  
  if (fESDpid->GetTOFPIDParams()) {  // during reconstruction OADB not yet available
    startTimeMethodDefault = ((AliTOFPIDParams *)fESDpid->GetTOFPIDParams())->GetStartTimeMethod();
  }
  
  //access MC event handler for MC truth information
  if (fIsMC) {
    AliMCEventHandler *mcH = dynamic_cast<AliMCEventHandler*> (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler());
    if (!mcH) {
      AliError("Cannot get MCeventHandler");
      return;
    } else {
      fMCevent = (AliMCEvent *) mcH->MCEvent();
      if (!fMCevent) {
	AliError("Trying to retrieve an invalid MC event.");
	return;
      }
    }
  }
  
  // get run number
  Int_t runNb = fESD->GetRunNumber();
  if (runNb>0) fRunNumber = runNb;  

  //reset matched track counters
  for (Int_t j=0;j<3;j++){fNTOFtracks[j]=0;}  

  //Get vertex info and apply vertex cut
  if (!IsEventSelected(fESD)) return;
  
  //set response tof_t0 for all other checks
  fESDpid->SetTOFResponse(fESD,AliESDpid::kTOF_T0);//(fill_t0, tof_t0, t0_t0, best_t0)
  
  AliDebug(3, Form("Momentum cut for eta and phi distributions set: Pt>%3.2f", fMatchingMomCut));

  //check existence of track filter
  if (!fTrackFilter){
    AliInfo("No track filter found, skipping the track loop");
    return;
  }
  
  // loop over ESD tracks
  for (Int_t iTracks = 0; iTracks < fESD->GetNumberOfTracks(); iTracks++) {
    AliESDtrack* track = fESD->GetTrack(iTracks);
    if (!track) {
      AliInfo(Form("Cannot receive track %d", iTracks));
      continue;
    }
    
    //primary tracks selection: kTPCrefit and std cuts
    if (!fTrackFilter->IsSelected(track)) continue;
    
    //select specie if MC
    if ( fIsMC && 
	 (!SelectMCspecies(fMCevent, track))) {
      AliDebug(4, Form("MC tracks selection: Track=%i  label=%i  Not Accepted", iTracks, track->GetLabel()));
      continue;
    }
    
    //apply cut for eta acceptance
    fEta=track->Eta();
    if (TMath::Abs(fEta)>fMatchingEtaCut) continue; 
    
    //get other track variables
    fP = track->P();
    fPt = track->Pt();
    fPhi = track->Phi()*TMath::RadToDeg();
    fTPCOuterPhi = GetPhiAtTPCouterRadius(track);
    fL = track->GetIntegratedLength();
    track->GetIntegratedTimes(fTrkExpTimes);
    
    Int_t charge = 0;
    if (fEnableChargeSplit) charge = track->Charge();
    
    //Fill histograms for primary particles
    FillPrimaryTrkHisto(charge,"");
    
    if (IsTPCTOFMatched(track)) {     
      fTof=track->GetTOFsignal()*1E-3;//in ps
      //increment track counters
      fNTOFtracks[0]++;
      if (charge>0) fNTOFtracks[1]++;
      if (charge<0) fNTOFtracks[2]++;
      //fill histos
      FillTofBaseHisto(track, charge,"");
      FillMatchedTrkHisto(charge,"");
      FillPidHisto(track, charge, "");
    }    
    if (fEnableAdvancedCheck) FillTrdHisto(track, charge);
  }//end loop on tracks
  
  //fill time zero histos  
  FillStartTimeHisto("");  
  if (fEnableChargeSplit) {
    ((TH1F*)fHlist->FindObject("hTOFmulti_pos"))->Fill(fNTOFtracks[1]);
    ((TH1F*)fHlist->FindObject("hTOFmulti_neg"))->Fill(fNTOFtracks[2]);
  } else {
    ((TH1F*)fHlist->FindObject("hTOFmulti_all"))->Fill(fNTOFtracks[0]);
  }
  //fill TOF trg histos from infos in TOF header
  fTOFHeader=(AliTOFHeader*)fESD->GetTOFHeader();
  if (!fTOFHeader) {
    AliWarning("Cannot get TOF header: no TOF trigger info available");
  } else {
    FillTofTrgHisto("");
  }
  
  //restore value set by AliPIDResponseTask for subsequent wagons
  fESDpid->SetTOFResponse(fESD,startTimeMethodDefault);
  
  PostData(1, fHlist);
  PostData(2, fHlistTimeZero);
  PostData(3, fHlistPID);
  PostData(4, fHlistTRD);
  PostData(5, fHlistTrigger);

}      

//________________________________________________________________________
void AliAnalysisTaskTOFqaID::Terminate(Option_t *) 
{
  //check on output validity
  fHlist = dynamic_cast<TList*> (GetOutputData(1));
  if (!fHlist) {
    AliError("Base histograms list not available");
    return;   
  } 
  
  // TH1F*hDummy = ((TH1F*)fHlist->FindObject("hTOFmatchedESDPt"));
  // TH1F*hMatchingEff = (TH1F*) hDummy->Clone("hMatchingEff");
  // hMatchingEff->SetTitle("Matching efficiency");
  // hMatchingEff->Divide((TH1F*) fHlist->FindObject("hESDprimaryTrackPt"));
  // TCanvas *c1 = new TCanvas("AliAnalysisTaskTOFqaID","Matching vs Pt",10,10,510,510);
  // c1->cd(1)->SetLogy();
  // hMatchingEff->DrawCopy("E");
  // fHlist->AddLast(hMatchingEff);
  ComputeMatchingEfficiency(fHlist, "pt");
  ComputeMatchingEfficiency(fHlist, "eta");
  ComputeMatchingEfficiency(fHlist, "phi");

  PostData(1, fHlist);
}

//---------------------------------------------------------------
Int_t AliAnalysisTaskTOFqaID::GetStripIndex(const Int_t * in)
{
  /* return tof strip index between 0 and 91 */
  
  Int_t nStripA = AliTOFGeometry::NStripA();
  Int_t nStripB = AliTOFGeometry::NStripB();
  Int_t nStripC = AliTOFGeometry::NStripC();

  Int_t iplate = in[1];
  Int_t istrip = in[2];
  
  Int_t stripOffset = 0;
  switch (iplate) {
  case 0:
    stripOffset = 0;
      break;
  case 1:
    stripOffset = nStripC;
    break;
  case 2:
    stripOffset = nStripC+nStripB;
    break;
  case 3:
    stripOffset = nStripC+nStripB+nStripA;
    break;
  case 4:
    stripOffset = nStripC+nStripB+nStripA+nStripB;
    break;
  default:
    stripOffset=-1;
    break;
  };
  
  if (stripOffset<0 || stripOffset>92) return -1;
  else 
    return (stripOffset+istrip);
}

//-----------------------------------------------------------------
Double_t AliAnalysisTaskTOFqaID::GetPhiAtTPCouterRadius(AliESDtrack * track)
{
  //get track phi at TPC outer radius
  if (!track) return 1e10;
  Double_t tpcoutcoord[3]={0.,0.,0.};
  track->GetOuterXYZ(tpcoutcoord);
  Double_t phiOuterTPC=TMath::ATan2(tpcoutcoord[1],tpcoutcoord[0])*TMath::RadToDeg();
  if (phiOuterTPC<0) 
    phiOuterTPC+= (2*TMath::Pi()*TMath::RadToDeg());
  return phiOuterTPC;
}
//-----------------------------------------------------------------
Bool_t  AliAnalysisTaskTOFqaID::IsEventSelected(AliESDEvent * event)
{
  //select event based on primary vertex
  if (!event) {
    AliError("Invalid ESD event");
    return kFALSE;
  }
  fVertex = (AliESDVertex*) event->GetPrimaryVertexTracks(); 
  if(fVertex->GetNContributors()<1) { 
    // SPD vertex
    fVertex = (AliESDVertex*) event->GetPrimaryVertexSPD(); 
    if(fVertex->GetNContributors()<1) fVertex = 0x0;
  }
  if (!fVertex) return kFALSE; 
  if (TMath::Abs(fVertex->GetZ())<10.0) return kTRUE;
  else return kFALSE;
}

//-----------------------------------------------------------------
Bool_t  AliAnalysisTaskTOFqaID::IsTPCTOFMatched(AliESDtrack * track)
{
  //defines TOF matching
  if (!track){
    AliWarning("Invalid track object");
    return kFALSE;
  }
  
  if ( (track->IsOn(AliESDtrack::kTOFout)) &&
       (track->IsOn(AliESDtrack::kTIME)) &&
       (track->IsOn(AliESDtrack::kTPCout))  )
    return kTRUE;
  else 
    return kFALSE;
}
//-----------------------------------------------------------------
Bool_t  AliAnalysisTaskTOFqaID::IsInTRD(AliESDtrack * track)
{
  //defines cut to select particles in/out TRD
  if (!track){
    AliWarning("Invalid track object");
    return kFALSE;
  }
  
  if ( track->IsOn(AliESDtrack::kTPCout) 
       && track->IsOn(AliESDtrack::kTRDout) )
    return kTRUE;
  else 
    return kFALSE; 
}
//-----------------------------------------------------------------
void AliAnalysisTaskTOFqaID::FillStartTimeMaskHisto(TString suffix)
{
  /* set pid response to use best_T0 and for each
     accepted track fills the histogram with the 
     used start time 
  */

  //set response best_t0 
  //fESDpid->SetTOFResponse(fESD,AliESDpid::kBest_T0);

  for (Int_t iTracks = 0; iTracks < fESD->GetNumberOfTracks(); iTracks++) {
    AliESDtrack* track = fESD->GetTrack(iTracks);
    if (!track) {
      AliInfo(Form("Cannot receive track %d", iTracks));
      continue;
    }    
    //primary tracks selection: kTPCrefit and std cuts
    if (fTrackFilter){
      if(!fTrackFilter->IsSelected(track)) continue;
    }
    else{
      AliInfo("No track filter found, skipping the track loop");
      break;
    }
    if (TMath::Abs(track->Eta())>fMatchingEtaCut) continue; //cut for acceptance  
    
    Int_t StartTimeBit = fESDpid->GetTOFResponse().GetStartTimeMask(track->P());
    ((TH2F*)fHlistTimeZero->FindObject(Form("hStartTimeMask%s",suffix.Data())))->Fill(track->P(),StartTimeBit);
    
    //matched tracks selection: kTOFout and kTIME
    if ( (track->IsOn(AliESDtrack::kTOFout)) &&
	 (track->IsOn(AliESDtrack::kTIME)) &&
	 (track->IsOn(AliESDtrack::kTPCout))  ) {
      ((TH2F*)fHlistTimeZero->FindObject(Form("hStartTimeMaskMatched%s",suffix.Data())))->Fill(track->P(),StartTimeBit);
    }
  }
  return;
}

//----------------------------------------------------
Bool_t AliAnalysisTaskTOFqaID::ComputeTimeZeroByTOF1GeV()
{
  /* compute T0-TOF for tracks within momentum range [0.95, 1.05] */
  /* init T0-TOF */
  AliTOFT0v1 *fTOFT0v1 = new AliTOFT0v1(fESDpid); // TOF-T0 v1
  fTOFT0v1->Init(fESD);
  fTOFT0v1->DefineT0("all", 0.95, 1.05);
  fMyTimeZeroTOF = -1000. * fTOFT0v1->GetResult(0);
  fMyTimeZeroTOFsigma = 1000. * fTOFT0v1->GetResult(1);
  fMyTimeZeroTOFtracks = fTOFT0v1->GetResult(3);
  Bool_t hasTimeZeroTOF = kFALSE;
  /* check T0-TOF sigma */
  if (fMyTimeZeroTOFsigma < 250.)
    hasTimeZeroTOF = kTRUE;  
  return hasTimeZeroTOF;
}

//------------------------------------------------------
TString AliAnalysisTaskTOFqaID::GetSpeciesName(Int_t absPdgCode)
{
  //returns name of selected specie 
  TString name;
  switch (absPdgCode){
  case 11:
    name = "electron";
    break;
  case 13:
    name = "muon";
    break;
  case 211:
    name = "pion";
    break;
  case 321:
    name = "kaon";
      break;
  case 2212:
    name = "proton";
    break;
  default:
    name = "noPID";
    break;
  }
  return name.Data();
}

//-----------------------------------------------
Bool_t AliAnalysisTaskTOFqaID::SelectMCspecies(AliMCEvent * ev, AliESDtrack * track)
{
  //
  //Retrieves particle true ID from MC and selects the desired species
  //
  if ((!ev) || (!track)) {
    AliError("SelectMCspecies - Invalid object set as argument");
    return kFALSE;
  }
  
  if (fSelectedPdg==0) return kTRUE;   //if fSelectedPdg==0, no species selection is applied

  Long_t label = track->GetLabel();
  if (label<0) return kFALSE;
  
  // get number of particles
  Long_t nMC = ev->GetNumberOfTracks();
  // if label too large --> failed
  if (label>= nMC) {
    AliWarning(Form("Stack overflow: track label = %li -- stack maximum = %li", label, nMC));
    return kFALSE;
  } 
  // retrieve particle
  AliMCParticle *mcPart = (AliMCParticle *)ev->GetTrack(label);
  if (!mcPart) {// if particle = NULL --> failed
    AliWarning(Form("Stack discontinuity: label %li refers to a NULL object", label));
    return kFALSE;
  }

  Int_t pdgCode = mcPart->PdgCode();
  if (!(TMath::Abs(pdgCode)==fSelectedPdg))
    return kFALSE;
  else  
    return  kTRUE;
}

//----------------------------------------------------------------------------------
Bool_t  AliAnalysisTaskTOFqaID::ComputeMatchingEfficiency(TList* list, TString variable)
{
  //computes matching efficiency from previously filled histos
  // to be called in terminate function  
  if (!list) return kFALSE;

  TString matchedName, primaryName, xAxisTitle;
  if (variable.Contains("pt")) {
    matchedName = "hTOFmatchedESDPt";
    primaryName = "hESDprimaryTrackPt";
    xAxisTitle = "p_{T} (GeV/c)";
  }
  if (variable.Contains("eta")) {
    matchedName = "hTOFmatchedESDeta";
    primaryName = "hTOFprimaryESDeta";
    xAxisTitle = "#eta";
  }
  if (variable.Contains("phi")) {
    matchedName = "hTOFmatchedESDphi";
    primaryName = "hTOFprimaryESDphi";
    xAxisTitle = "#phi_vtx (deg)";
  }
  
  TH1F*hDummy = ((TH1F*)list->FindObject(matchedName.Data()));
  if (!hDummy) return 0;

  TH1F*hMatchingEff = (TH1F*) hDummy->Clone("hMatchingEff");
  hMatchingEff->SetNameTitle(Form("hMatchingEff_%s", variable.Data()),Form("Matching efficiency vs %s", variable.Data()));
  hMatchingEff->Divide((TH1F*) list->FindObject(primaryName.Data()));
  hMatchingEff->GetXaxis()->SetTitle(xAxisTitle.Data());
  hMatchingEff->GetYaxis()->SetRangeUser(0.0,1.0);
  hMatchingEff->GetYaxis()->SetTitle("#epsilon_{match}");
  list->AddLast(hMatchingEff);
  return 1;
}
//----------------------------------------------------------------------------------
void AliAnalysisTaskTOFqaID::HistogramMakeUp(TH1* hist, Color_t color, Int_t markerStyle, TString drawOpt, TString newName, TString newTitle, TString xTitle, TString yTitle)
{
  //set histogram style and axes style at once
  if (!hist) return;  
  if (!newName.IsNull()) hist->SetName(newName.Data());
  if (!newTitle.IsNull()) hist->SetTitle(newTitle.Data());
  if (!xTitle.IsNull()) hist->GetXaxis()->SetTitle(xTitle.Data());
  if (!yTitle.IsNull()) hist->GetYaxis()->SetTitle(yTitle.Data());
  hist->SetLineColor(color);
  hist->SetMarkerColor(color);
  hist->SetMarkerStyle(markerStyle);
  hist->SetMarkerSize(0.7);
  hist->SetDrawOption(drawOpt.Data());
  //hist->Sumw2();
  return;
}

//----------------------------------------------------------------------------------
void AliAnalysisTaskTOFqaID::AddTofBaseHisto(TList *list, Int_t charge, TString suffix)
{
  //Creates histograms for monitoring TOF signal, time alignement and matching-related quantities
  if (!list){
    AliError("Invalid list passed as argument.");
    return;
  }
 
  TString cLabel; 
  if (charge == 0) cLabel.Form("all");
  else 
    if (charge<0) cLabel.Form("neg"); 
    else 
      if (charge>0) cLabel.Form("pos"); 
  
  
  TH1I* hTOFmulti = new TH1I(Form("hTOFmulti%s_%s",suffix.Data(), cLabel.Data()), Form("%s matched trk per event (|#eta|#leq%3.2f, p_{T}#geq0.3 GeV/c)", cLabel.Data(), fMatchingEtaCut), 100, 0, 100);  
  HistogramMakeUp(hTOFmulti, ((charge>0)? kRed : kBlue+2), 1, "E1", "","", "N","events");
  list->AddLast(hTOFmulti);
  
  TH1F* hTOFtime = new TH1F(Form("hTime%s_%s",suffix.Data(),cLabel.Data()), Form("%s matched trk TOF signal", cLabel.Data()), 250, 0., 610. ) ; 
  HistogramMakeUp(hTOFtime,((charge>0)? kRed+2 : kBlue+2), 1, "E1", "","", "t (ns)","tracks");
  list->AddLast(hTOFtime);
  
  TH1F* hTOFrawTime = new TH1F(Form("hRawTime%s_%s",suffix.Data(),cLabel.Data()), Form("%s matched trk TOF raw signal", cLabel.Data()), 250, 0., 610. ) ; 
  HistogramMakeUp(hTOFrawTime,((charge>0)? kRed+2 : kBlue+2), 1, "E1", "","", "t_{raw} (ns)","tracks");
  list->AddLast(hTOFrawTime);

  TH1F* hTOFtot = new TH1F(Form("hTot%s_%s",suffix.Data(),cLabel.Data()), Form("%s matched trk ToT", cLabel.Data()), 50, 0., 50. ) ; 
  HistogramMakeUp(hTOFtot,((charge>0)? kRed+2 : kBlue+2), 1, "E1", "","", "ToT (ns)","tracks");
  list->AddLast(hTOFtot);
    
  TH1F* hMatchedL  = new TH1F(Form("hMatchedL%s_%s",suffix.Data(),cLabel.Data()), Form("%s matched trk lenght", cLabel.Data()), 900, -100., 800) ; 
  HistogramMakeUp(hMatchedL,((charge>0)? kRed+2 : kBlue+2), 1, "E1", "","", "L (cm)","tracks");
  list->AddLast(hMatchedL);
  
  const Int_t nBinsPt = 300;
  Double_t xBins[nBinsPt+1];
  for (Int_t j=0;j<nBinsPt+1; j++) {  
    if (j<200) xBins[j] = j*0.025;
    else xBins[j] = 5.0 + (j-200)*0.050;  
  }

  TH2F* hMatchedDxVsPt = new TH2F(Form("hMatchedDxVsPt%s_%s",suffix.Data(),cLabel.Data()), Form("%s matched trk dx vs.p_{T}", cLabel.Data()), nBinsPt, xBins, 200, -10., 10.); 
  HistogramMakeUp(hMatchedDxVsPt,((charge>0)? kRed+2 : kBlue+2), 1, "colz", "","", "p_{T} (GeV/c)","dx (cm)");
  list->AddLast(hMatchedDxVsPt); 

  TH2F* hMatchedDzVsStrip = new TH2F(Form("hMatchedDzVsStrip%s_%s",suffix.Data(),cLabel.Data()), Form("%s matched trk dz vs. strip (#eta)", cLabel.Data()), 92, 0., 92., 200, -10., 10.) ; 
  HistogramMakeUp(hMatchedDzVsStrip,((charge>0)? kRed+2 : kBlue+2), 1, "colz", "","", "strip index","dz (cm)");
  list->AddLast(hMatchedDzVsStrip) ; 

  TProfile *hMatchedDxVsCh = new TProfile(Form("hMatchedDxVsCh%s_%s",suffix.Data(),cLabel.Data()), Form("%s matched trk dx vs. channel", cLabel.Data()), 157248., 0.,157248.);
  HistogramMakeUp(hMatchedDxVsCh,((charge>0)? kRed+2 : kBlue+2), 1, "", "","", "channel index","dx (cm)");
  list->AddLast(hMatchedDxVsCh);
   
  TProfile *hMatchedDzVsCh = new TProfile(Form("hMatchedDzVsCh%s_%s",suffix.Data(),cLabel.Data()), Form("%s matched trk dz vs. channel", cLabel.Data()), 157248., 0.,157248.);
  HistogramMakeUp(hMatchedDzVsCh,((charge>0)? kRed+2 : kBlue+2), 1, "", "","", "channel index","dz (cm)");
  list->AddLast(hMatchedDzVsCh);    

  return;
}

//----------------------------------------------------------------------------------
void    AliAnalysisTaskTOFqaID::AddMatchingEffHisto(TList *list, Int_t charge, TString suffix)
{
  if (!list){
    AliError("Invalid list passed as argument.");
    return;
  }
  TString cLabel; 
  if (charge == 0) cLabel.Form("all");
  else 
    if (charge<0) cLabel.Form("neg"); 
    else 
      if (charge>0) cLabel.Form("pos"); 

  const Int_t nBinsX = 300;
  Double_t xBins[nBinsX+1];
  for (Int_t j=0;j<nBinsX+1; j++) {  
    if (j<200) xBins[j] = j*0.025;
    else xBins[j] = 5.0 + (j-200)*0.050;  
  }

  TH1F* hMatchedP  = new TH1F(Form("hMatchedP%s_%s",suffix.Data(),cLabel.Data()), Form("%s matched trk p", cLabel.Data()), nBinsX, xBins);// 1000,0.,10.) ;  
  HistogramMakeUp(hMatchedP,((charge>0)? kRed+2 : kBlue+2), 1, "E1", "","", "p (GeV/c)","tracks");
  list->AddLast(hMatchedP) ; 

  TH1F* hMatchedPt  = new TH1F(Form("hMatchedPt%s_%s",suffix.Data(),cLabel.Data()), Form("%s matched trk p_{T}", cLabel.Data()), nBinsX, xBins);// 1000,0.,10.) ;  
  HistogramMakeUp(hMatchedPt,((charge>0)? kRed+2 : kBlue+2), 1, "E1", "","", "p_{T} (GeV/c)","tracks");
  list->AddLast(hMatchedPt) ; 

  TH1F* hMatchedEta = new TH1F(Form("hMatchedEta%s_%s",suffix.Data(),cLabel.Data()), Form("%s matched trk #eta", cLabel.Data()), 200, -1., 1.) ; 
  HistogramMakeUp(hMatchedEta,((charge>0)? kRed+2 : kBlue+2), 1, "E1", "","", "#eta","tracks");
  list->AddLast(hMatchedEta) ; 

  TH1F* hMatchedPhi = new TH1F(Form("hMatchedPhi%s_%s",suffix.Data(),cLabel.Data()), Form("%s matched trk #phi_{vtx}", cLabel.Data()), 72, 0., 360.) ; 
  HistogramMakeUp(hMatchedPhi,((charge>0)? kRed+2 : kBlue+2), 1, "E1", "","", "#phi_{vtx} (deg)","tracks");
  list->AddLast(hMatchedPhi) ; 

  TH2F* hMatchedPtVsOutPhi  = new TH2F(Form("hMatchedPtVsOutPhi%s_%s",suffix.Data(),cLabel.Data()), Form("%s matched trk p_{T} vs. #phi_{TPC out}", cLabel.Data()), 72, 0.0, 360.0, nBinsX, xBins);// 1000,0.,10.) ;  
  HistogramMakeUp(hMatchedPtVsOutPhi,((charge>0)? kRed+2 : kBlue+2), 1, "colz", "","", "#phi_{TPC out} (deg)","p_{T} (GeV/c)");
  list->AddLast(hMatchedPtVsOutPhi) ;
   
  TH1F* hPrimaryP  = new TH1F(Form("hPrimaryP%s_%s",suffix.Data(),cLabel.Data()), Form("%s matched trk p", cLabel.Data()), nBinsX, xBins);// 1000,0.,10.) ;  
  HistogramMakeUp(hPrimaryP,((charge>0)? kRed+2 : kBlue+2), 1, "E1", "","", "p (GeV/c)","tracks");
  list->AddLast(hPrimaryP) ; 

  TH1F* hPrimaryPt  = new TH1F(Form("hPrimaryPt%s_%s",suffix.Data(),cLabel.Data()), Form("%s matched trk p_{T}", cLabel.Data()), nBinsX, xBins);// 1000,0.,10.) ;  
  HistogramMakeUp(hPrimaryPt,((charge>0)? kRed+2 : kBlue+2), 1, "E1", "","", "p_{T} (GeV/c)","tracks");
  list->AddLast(hPrimaryPt) ; 

  TH1F* hPrimaryEta = new TH1F(Form("hPrimaryEta%s_%s",suffix.Data(),cLabel.Data()), Form("%s matched trk #eta", cLabel.Data()), 200, -1., 1.) ; 
  HistogramMakeUp(hPrimaryEta,((charge>0)? kRed+2 : kBlue+2), 1, "E1", "","", "#eta","tracks");
  list->AddLast(hPrimaryEta) ; 

  TH1F* hPrimaryPhi = new TH1F(Form("hPrimaryPhi%s_%s",suffix.Data(),cLabel.Data()), Form("%s matched trk #phi_{vtx}", cLabel.Data()), 72, 0., 360.) ; 
  HistogramMakeUp(hPrimaryPhi,((charge>0)? kRed+2 : kBlue+2), 1, "E1", "","", "#phi_{vtx} (deg)","tracks");
  list->AddLast(hPrimaryPhi) ; 
   
  TH2F* hPrimaryPtVsOutPhi  = new TH2F(Form("hPrimaryPtVsOutPhi%s_%s",suffix.Data(),cLabel.Data()), Form("%s matched trk p_{T} vs. #phi_{TPC out}", cLabel.Data()), 72, 0.0, 360.0, nBinsX, xBins);// 1000,0.,10.) ;  
  HistogramMakeUp(hPrimaryPtVsOutPhi,((charge>0)? kRed+2 : kBlue+2), 1, "colz", "","", "#phi_{TPC out} (deg)","p_{T} (GeV/c)");
  list->AddLast(hPrimaryPtVsOutPhi) ; 
  return;
}
  
//----------------------------------------------------------------------------------
void  AliAnalysisTaskTOFqaID::AddPidHisto(TList *list, Int_t charge, TString suffix)
{
  //Creates histograms for monitoring TOF PID
  if (!list){
    AliError("Invalid list passed as argument.");
    return;
  }
  TString cLabel; 
  if (charge == 0) cLabel.Form("all");
  else 
    if (charge<0) cLabel.Form("neg"); 
    else 
      if (charge>0) cLabel.Form("pos"); 
  
  const Int_t nBinsX = 300;
  Double_t xBins[nBinsX+1];
  for (Int_t j=0;j<nBinsX+1; j++) {  
    if (j<200) xBins[j] = j*0.025;
    else xBins[j] = 5.0 + (j-200)*0.050;  
  }

  TH2F* hMatchedBetaVsP  = new TH2F(Form("hMatchedBetaVsP%s_%s",suffix.Data(),cLabel.Data()), Form("%s matched trk #beta vs. p", cLabel.Data()), nBinsX, xBins, 150, 0., 1.5) ; 
  HistogramMakeUp(hMatchedBetaVsP,((charge>0)? kRed+2 : kBlue+2), 1, "colz", "","", "p (GeV/c)","#beta");
  list->AddLast(hMatchedBetaVsP);
    
  TH1F* hMatchedMass= new TH1F(Form("hMatchedMass%s_%s",suffix.Data(),cLabel.Data()), Form("%s matched p.le M", cLabel.Data()), 500, 0., 5. );
  HistogramMakeUp(hMatchedMass,((charge>0)? kRed+2 : kBlue+2), 1, "", "","", "M (GeV/c^{2})","entries");
  list->AddLast(hMatchedMass);
    
  TH1F* hMatchedMass2= new TH1F(Form("hMatchedMass2%s_%s",suffix.Data(),cLabel.Data()), Form("%s matched p.le M^{2}", cLabel.Data()), 500, 0., 10. );
  HistogramMakeUp(hMatchedMass2,((charge>0)? kRed+2 : kBlue+2), 1, "", "","", "M^{2} (GeV^{2}/c^{4})","entries");
  list->AddLast(hMatchedMass2);

  TH2F* hExpTimePiVsStrip = new TH2F(Form("hExpTimePiVsStrip%s_%s",suffix.Data(),cLabel.Data()),Form("%s matched trk t_{TOF}-t_{#pi,exp} vs strip",cLabel.Data()), 92, 0, 92,  fnExpTimeSmallBins, fExpTimeSmallRangeMin, fExpTimeSmallRangeMax) ; 
  HistogramMakeUp(hExpTimePiVsStrip,((charge>0)? kRed+2 : kBlue+2), 1, "", "","", "strip (#eta)","t_{TOF}-t_{#pi,exp} [ps]");
  list->AddLast(hExpTimePiVsStrip);
  
  TH2F* hExpTimePiT0Sub1GeV = new TH2F(Form("hExpTimePiT0Sub1GeV%s_%s",suffix.Data(),cLabel.Data()), Form("%s trk (0.95#leq p_{T}#leq 1.05 GeV/c) t_{TOF}-t_{#pi,exp}-t_{0}^{TOF}",cLabel.Data()), 500, 0., 500., fnExpTimeBins, fExpTimeRangeMin, fExpTimeRangeMax) ; 
  HistogramMakeUp(hExpTimePiT0Sub1GeV,((charge>0)? kRed+2 : kBlue+2), 1, "colz", "","","n. tracks used for t_{0}^{TOF}","t_{TOF}-t_{#pi,exp}-t_{0}^{TOF}");    
  list->AddLast(hExpTimePiT0Sub1GeV) ;

  TH1F* hExpTimePiFillSub = new TH1F(Form("hExpTimePiFillSub%s_%s",suffix.Data(),cLabel.Data()), Form("%s trk t_{TOF}-t_{#pi,exp}-t_{0,fill}",cLabel.Data()), fnExpTimeBins, fExpTimeRangeMin, fExpTimeRangeMax) ; 
  HistogramMakeUp(hExpTimePiFillSub,((charge>0)? kRed+2 : kBlue+2), 1, "", "","","t_{TOF}-t_{#pi,exp} -t_{0,fill} [ps]","entries");    
  list->AddLast(hExpTimePiFillSub) ;
  
  TH1F* hExpTimePi = new TH1F(Form("hExpTimePi%s_%s",suffix.Data(),cLabel.Data()),Form("%s matched trk t_{TOF}-t_{#pi,exp}",cLabel.Data()), fnExpTimeBins, fExpTimeRangeMin, fExpTimeRangeMax) ; 
  HistogramMakeUp(hExpTimePi,((charge>0)? kRed+2 : kBlue+2), 1, "", "","", "t_{TOF}-t_{#pi,exp} [ps]","tracks");
  list->AddLast(hExpTimePi);
  
  TH2F* hExpTimePiVsP = new TH2F(Form("hExpTimePiVsP%s_%s",suffix.Data(),cLabel.Data()),Form("%s matched trk t_{TOF}-t_{#pi,exp}",cLabel.Data()), nBinsX, xBins, fnExpTimeBins, fExpTimeRangeMin, fExpTimeRangeMax) ; 
  HistogramMakeUp(hExpTimePiVsP,kRed+2, 1, "colz", "","", "p (GeV/c)","t_{TOF}-t_{#pi,exp} [ps]");
  list->AddLast(hExpTimePiVsP);
  
  TH2F* hExpTimeKaVsP = new TH2F(Form("hExpTimeKaVsP%s_%s",suffix.Data(),cLabel.Data()),Form("%s matched trk t_{TOF}-t_{K,exp}",cLabel.Data()), nBinsX, xBins, fnExpTimeBins, fExpTimeRangeMin, fExpTimeRangeMax) ; 
  HistogramMakeUp(hExpTimeKaVsP,kBlue+2, 1, "colz", "","", "p (GeV/c)","t_{TOF}-t_{K,exp} [ps]");
  list->AddLast(hExpTimeKaVsP);
  
  TH2F* hExpTimeProVsP = new TH2F(Form("hExpTimeProVsP%s_%s",suffix.Data(),cLabel.Data()),Form("%s matched trk t_{TOF}-t_{p,exp}",cLabel.Data()), nBinsX, xBins, fnExpTimeBins, fExpTimeRangeMin, fExpTimeRangeMax) ; 
  HistogramMakeUp(hExpTimeProVsP,kGreen+2, 1, "colz", "","", "p (GeV/c)","t_{TOF}-t_{p,exp} [ps]");
  list->AddLast(hExpTimeProVsP);
  
  TH2F* hTOFpidSigmaPi = new TH2F(Form("hTOFpidSigmaPi%s_%s",suffix.Data(),cLabel.Data()), Form("%s trk n#sigma^{TOF}_{#pi} vs p_{T}",cLabel.Data()), 500,0.,5.,200, -10., 10. ) ; 
  HistogramMakeUp(hTOFpidSigmaPi,kRed+2, 1, "colz", "","", "p (GeV/c)","n#sigma_{#pi,exp} [ps]");
  list->AddLast(hTOFpidSigmaPi) ;
  
  TH2F* hTOFpidSigmaKa = new TH2F(Form("hTOFpidSigmaKa%s_%s",suffix.Data(),cLabel.Data()), Form("%s trk n#sigma^{TOF}_{K} vs p_{T}",cLabel.Data()), 500, 0.,5.,200, -10., 10. ) ; 
  HistogramMakeUp(hTOFpidSigmaKa,kBlue+2, 1, "colz", "","", "p (GeV/c)","n#sigma_{K,exp} [ps]");
  list->AddLast(hTOFpidSigmaKa) ;
    
  TH2F* hTOFpidSigmaPro = new TH2F(Form("hTOFpidSigmaPro%s_%s",suffix.Data(),cLabel.Data()), Form("%s trk TOF n#sigma^{TOF}_{p} vs p_{T}",cLabel.Data()), 500, 0.,5.,200, -10., 10. ) ; 
  HistogramMakeUp(hTOFpidSigmaPro,kGreen+2, 1, "colz", "","","p (GeV/c)","n#sigma_{p,exp} [ps]");
  list->AddLast(hTOFpidSigmaPro);
    
  TH2F* hExpTimePiT0SubVsP = new TH2F(Form("hExpTimePiT0SubVsP%s_%s",suffix.Data(),cLabel.Data()), Form("%s trk t_{TOF}-t_{#pi,exp}-t_{0}^{TOF}",cLabel.Data()), nBinsX, xBins, fnExpTimeBins, fExpTimeRangeMin, fExpTimeRangeMax) ; 
  HistogramMakeUp(hExpTimePiT0SubVsP,kRed+2, 1, "colz", "","","p (GeV/c)","t_{TOF}-t_{#pi,exp}-t_{0}^{TOF}");
  list->AddLast(hExpTimePiT0SubVsP) ;
    
  TH2F* hExpTimeKaT0SubVsP = new TH2F(Form("hExpTimeKaT0SubVsP%s_%s",suffix.Data(),cLabel.Data()), Form("%s trk t_{TOF}-t_{K,exp}-t_{0}^{TOF}",cLabel.Data()), nBinsX, xBins, fnExpTimeBins, fExpTimeRangeMin, fExpTimeRangeMax) ; 
  HistogramMakeUp(hExpTimeKaT0SubVsP,kBlue+2, 1, "colz", "","","p (GeV/c)","t_{TOF}-t_{K,exp}-t_{0}^{TOF}");
  list->AddLast(hExpTimeKaT0SubVsP) ;
    
  TH2F* hExpTimeProT0SubVsP = new TH2F(Form("hExpTimeProT0SubVsP%s_%s",suffix.Data(),cLabel.Data()), Form("%s trk t_{TOF}-t_{p,exp}-t_{0}^{TOF}",cLabel.Data()), nBinsX, xBins, fnExpTimeBins, fExpTimeRangeMin, fExpTimeRangeMax) ; 
  HistogramMakeUp(hExpTimeProT0SubVsP,kGreen+2, 1, "colz", "","","p (GeV/c)","t_{TOF}-t_{p,exp}-t_{0}^{TOF}");
  list->AddLast(hExpTimeProT0SubVsP) ;
  
  TH2F* hExpTimePiVsOutPhi = new TH2F(Form("hExpTimePiVsOutPhi%s_%s",suffix.Data(),cLabel.Data()),Form("%s matched trk t_{TOF}-t_{#pi,exp} vs #phi_{TPC out}",cLabel.Data()), 72, 0.0, 360.0, fnExpTimeBins, fExpTimeRangeMin, fExpTimeRangeMax) ; 
  HistogramMakeUp(hExpTimePiVsOutPhi,kRed+2, 1, "colz", "","", "#phi_{TPC out} (deg)","t_{TOF}-t_{#pi,exp} [ps]");
  list->AddLast(hExpTimePiVsOutPhi);
  
  TH2F* hExpTimeKaVsOutPhi = new TH2F(Form("hExpTimeKaVsOutPhi%s_%s",suffix.Data(),cLabel.Data()),Form("%s matched trk t_{TOF}-t_{K,exp} vs #phi_{TPC out}",cLabel.Data()), 72, 0.0, 360.0, fnExpTimeBins, fExpTimeRangeMin, fExpTimeRangeMax) ; 
  HistogramMakeUp(hExpTimeKaVsOutPhi,kBlue+2, 1, "colz", "","", "#phi_{TPC out} (deg)","t_{TOF}-t_{K,exp} [ps]");
  list->AddLast(hExpTimeKaVsOutPhi);
  
  TH2F* hExpTimeProVsOutPhi = new TH2F(Form("hExpTimeProVsOutPhi%s_%s",suffix.Data(),cLabel.Data()),Form("%s matched trk t_{TOF}-t_{p,exp} vs #phi_{TPC out}",cLabel.Data()), 72, 0.0, 360.0, fnExpTimeBins, fExpTimeRangeMin, fExpTimeRangeMax) ; 
  HistogramMakeUp(hExpTimeProVsOutPhi,kGreen+2, 1, "colz", "","", "#phi_{TPC out} (deg)","t_{TOF}-t_{p,exp} [ps]");
  list->AddLast(hExpTimeProVsOutPhi);
  
  return;
}
//----------------------------------------------------------------------------------
void    AliAnalysisTaskTOFqaID::AddStartTimeHisto(TList *list, TString suffix)
{  
  //Creates histograms for monitoring T0 signal and start-time related quantities
  if (!list){
    AliError("Invalid list passed as argument.");
    return;
  }
  TH1F* hT0AC = new TH1F(Form("hT0AC%s",suffix.Data()), "Event timeZero from T0A&C; t_{0,AC} [ps]; events", 1000, -12500., 12500.) ; 
  HistogramMakeUp(hT0AC, kRed+2, 20, "", "","","","");    
  list->AddLast(hT0AC);

  TH1F* hT0A = new TH1F(Form("hT0A%s",suffix.Data()), "Event timeZero from T0A; t_{0,A} [ps]; events", 1000, -12500., 12500.) ; 
  HistogramMakeUp(hT0A, kBlue+2, 25, "", "","","","");    
  list->AddLast(hT0A);
    
  TH1F* hT0C = new TH1F(Form("hT0C%s",suffix.Data()), "Event timeZero from T0C; t_{0,C} [ps]; events", 1000, -12500., 12500.) ; 
  HistogramMakeUp(hT0C, kGreen+2, 28, "", "","","","");    
  list->AddLast(hT0C);
    
  TH1F* hT0DetRes = new TH1F(Form("hT0DetRes%s",suffix.Data()), "T0 detector (T0A-T0C)/2; (T0A-T0C)/2 [ps]; events", 200, -500.,500. ) ; 
  HistogramMakeUp(hT0DetRes, kMagenta+1, 1, "", "","","","");    
  list->AddLast(hT0DetRes) ; 

  TH1F* hT0fill = new TH1F(Form("hT0fill%s",suffix.Data()), "Event timeZero of fill; t_{0,fill} [ps]; events", 1000, -12500., 12500. ) ; 
  HistogramMakeUp(hT0fill, kOrange+1, 25, "", "","","","");    
  list->AddLast(hT0fill) ; 
    
  TH1F* hT0TOF = new TH1F(Form("hT0TOF%s",suffix.Data()), "Event timeZero estimated by TOF; t0 [ps]; events", 1000, -12500., 12500. ) ; 
  HistogramMakeUp(hT0TOF, kTeal-5, 21, "", "","","","");    
  list->AddLast(hT0TOF) ; 
    
  TH1F* hT0T0 = new TH1F(Form("hT0T0%s",suffix.Data()), "Best timeZero between AC, A, C; t_{0} [ps]; events", 1000, -12500., 12500. ) ; 
  HistogramMakeUp(hT0T0, kAzure+7, 26, "", "","","","");    
  list->AddLast(hT0T0) ; 
    
  TH1F* hT0best = new TH1F(Form("hT0best%s",suffix.Data()), "Event timeZero estimated as T0best; t0 [ps]; events", 1000, -12500., 12500.) ; 
  HistogramMakeUp(hT0best, kBlack, 20, "", "","","","");    
  list->AddLast(hT0best) ; 

  TH1F* hT0fillRes = new TH1F(Form("hT0fillRes%s",suffix.Data()), "Resolution of fillT0; #sigma_{fillT0} [ps];events", 250, 0.,250. ) ; 
  HistogramMakeUp(hT0fillRes, kOrange+1, 25, "", "","","","");    
  list->AddLast(hT0fillRes) ; 
    
  TH1F* hT0TOFRes = new TH1F(Form("hT0TOFRes%s",suffix.Data()), "Resolution of timeZero from TOF; #sigma_{TOFT0} [ps];events", 250, 0.,250. ) ; 
  HistogramMakeUp(hT0TOFRes, kTeal-5, 21, "", "","","","");    
  list->AddLast(hT0TOFRes) ; 

  TH1F* hT0T0Res = new TH1F(Form("hT0T0Res%s",suffix.Data()), "Resolution of timeZero from T0;#sigma_{T0T0}  [ps];events", 250, -0., 250. ) ; 
  HistogramMakeUp(hT0T0Res, kAzure+7, 26, "", "","","","");    
  list->AddLast(hT0T0Res) ; 
  
  TH1F* hT0bestRes = new TH1F(Form("hT0bestRes%s",suffix.Data()), "Resolution of bestT0; #sigma_{bestT0} [ps];events", 250, 0.,250. ) ; 
  HistogramMakeUp(hT0bestRes, kBlack, 20, "", "","","","");    
  list->AddLast(hT0bestRes) ; 

  TH2F* hT0TOFvsNtrk = new TH2F(Form("hT0TOFvsNtrk%s",suffix.Data()), "Event timeZero estimated by TOF vs. number of tracks in event;TOF-matching tracks; t0 [ps]", 100, 0., 100., 500,-2500.,2500. ) ; 
  HistogramMakeUp(hT0TOFvsNtrk, kTeal-5, 1, "colz", "","","","");    
  list->AddLast(hT0TOFvsNtrk) ;
  
  TH2F* hEventT0MeanVsVtx = new TH2F(Form("hEventT0MeanVsVtx%s",suffix.Data()), "T0 detector: mean vs vertex ; (t0_{A}-t0_{C})/2 [ns]; (t0_{A}+t0_{C})/2 [ns]; events", 50, -25., 25., 50, -25., 25. ) ; 
  HistogramMakeUp(hEventT0MeanVsVtx, kBlue+2, 1, "colz", "","","","");    
  list->AddLast(hEventT0MeanVsVtx) ;
    
  TH2F* hEventV0MeanVsVtx = new TH2F(Form("hEventV0MeanVsVtx%s",suffix.Data()), "V0 detector: mean vs vertex ; (V0_{A}-V0_{C})/2 [ns]; (V0_{A}+V0_{C})/2 [ns]; events", 50, -25., 25., 50, -25., 25.) ; 
  HistogramMakeUp(hEventV0MeanVsVtx, kBlack, 1, "colz", "","","","");    
  list->AddLast(hEventV0MeanVsVtx) ;
  
  const Double_t startTimeMomBins[13]={ 0.0, 0.3, 0.5, 0.6, 0.7, 0.8, 0.9, 1., 1.2, 1.5, 2., 3., 10.};
    
  TH2F* hStartTimeMaskMatched = new TH2F(Form("hStartTimeMaskMatched%s",suffix.Data()),"Start Time Mask vs p bin for matched tracks; p(GeV/c);", 12, startTimeMomBins, 8,0.,8.);
  hStartTimeMaskMatched->GetYaxis()->SetBinLabel(1,"fill_t0");
  hStartTimeMaskMatched->GetYaxis()->SetBinLabel(2,"tof_t0");
  hStartTimeMaskMatched->GetYaxis()->SetBinLabel(3,"T0AC");
  hStartTimeMaskMatched->GetYaxis()->SetBinLabel(4,"T0AC & tof_t0");
  hStartTimeMaskMatched->GetYaxis()->SetBinLabel(5,"T0A");
  hStartTimeMaskMatched->GetYaxis()->SetBinLabel(6,"T0A & tof_t0");
  hStartTimeMaskMatched->GetYaxis()->SetBinLabel(7,"T0C");
  hStartTimeMaskMatched->GetYaxis()->SetBinLabel(8,"T0C & tof_t0");
  HistogramMakeUp(hStartTimeMaskMatched, kRed+2, 1, "colz", "","","","");    
  list->AddLast(hStartTimeMaskMatched);
    
  TH2F* hStartTimeMask = new TH2F(Form("hStartTimeMask%s",suffix.Data()),"Start Time Mask vs p bin for primary tracks; p(GeV/c);", 12, startTimeMomBins, 8,0.,8.);
  hStartTimeMask->GetYaxis()->SetBinLabel(1,"fill_t0");
  hStartTimeMask->GetYaxis()->SetBinLabel(2,"tof_t0");
  hStartTimeMask->GetYaxis()->SetBinLabel(3,"T0AC");
  hStartTimeMask->GetYaxis()->SetBinLabel(4,"T0AC & tof_t0");
  hStartTimeMask->GetYaxis()->SetBinLabel(5,"T0A");
  hStartTimeMask->GetYaxis()->SetBinLabel(6,"T0A & tof_t0");
  hStartTimeMask->GetYaxis()->SetBinLabel(7,"T0C");
  hStartTimeMask->GetYaxis()->SetBinLabel(8,"T0C & tof_t0");
  HistogramMakeUp(hStartTimeMask, kRed+2, 1, "colz", "","","","");    
  list->AddLast(hStartTimeMask);

  return;
}
//----------------------------------------------------------------------------------
void AliAnalysisTaskTOFqaID::AddTrdHisto()
{
  //Creates histograms for monitoring TOF base quantities wrt TRD/no TRD selection
  if (!fHlistTRD){
    AliError("Invalid TRD list");
    return;
  }

  if (fEnableChargeSplit) {
    AddMatchingEffHisto(fHlistTRD, 1, "_noTrd");
    AddMatchingEffHisto(fHlistTRD, -1, "_noTrd");
    AddMatchingEffHisto(fHlistTRD, 1, "_Trd");
    AddMatchingEffHisto(fHlistTRD, -1, "_Trd");
    
    AddPidHisto(fHlistTRD, 1, "_noTrd");
    AddPidHisto(fHlistTRD, -1, "_noTrd");
    AddPidHisto(fHlistTRD, 1, "_Trd");
    AddPidHisto(fHlistTRD, -1, "_Trd");
  } else {
    AddMatchingEffHisto(fHlistTRD, 0, "_noTrd");
    AddMatchingEffHisto(fHlistTRD, 0, "_Trd");
    AddPidHisto(fHlistTRD, 0, "_noTrd");
    AddPidHisto(fHlistTRD, 0, "_Trd");
  }

  return;
}
 

//----------------------------------------------------------------------------------
void AliAnalysisTaskTOFqaID::AddTofTrgHisto(TString suffix)
{
  //defines histo with trigger info
  if (!fHlistTrigger){
    AliError("Invalid TOF trigger list");
    return;
  }
  
  TH1I* hFiredMaxipad = new TH1I(Form("hFiredMaxipad%s",suffix.Data()), Form("Fired maxipad per event"), 1584, 0, 1584);  
  HistogramMakeUp(hFiredMaxipad, kBlue+2, 1, "E1", "","", "N_{maxipad}","events");
  fHlistTrigger->AddLast(hFiredMaxipad);
  
  TH1I* hFiredReadoutPad = new TH1I(Form("hFiredReadoutPad%s",suffix.Data()), Form("Fired readout pad per event"), 153000, 0, 153000);  
  HistogramMakeUp(hFiredReadoutPad, kRed+2, 1, "E1", "","", "N_{pad}","events");
  fHlistTrigger->AddLast(hFiredReadoutPad);
  
  TH1I* hFiredReadoutTrgPad = new TH1I(Form("hFiredReadoutTrgPad%s",suffix.Data()), Form("Fired readout pad in trg window"), 153000, 0, 153000);  
  HistogramMakeUp(hFiredReadoutTrgPad, kBlack, 1, "E1", "","", "N_{pad} in trg window","events");
  fHlistTrigger->AddLast(hFiredReadoutTrgPad);
  
  TH2I* hFiredMaxipadVsTrgPad = new TH2I(Form("hFiredMaxipadVsTrgPad%s",suffix.Data()), Form("Fired maxipad vs pads in trg window per event"), 100, 0, 100, 100, 0, 100);  
  HistogramMakeUp(hFiredMaxipadVsTrgPad, kBlue+2, 1, "colz", "","", "N_{pad} in trg window","N_{maxipad}");
  fHlistTrigger->AddLast(hFiredMaxipadVsTrgPad);
  
  TH2I* hTrgMap = new TH2I(Form("hTrgMap%s",suffix.Data()), Form("Map of fired maxipads"), 72, 0, 72, 23, 0, 23);  
  HistogramMakeUp(hTrgMap, kBlue+2, 1, "colz", "","", "LTM","maxipad");
  fHlistTrigger->AddLast(hTrgMap);
  
  return;
}

//----------------------------------------------------------------------------------
void AliAnalysisTaskTOFqaID::FillTofBaseHisto(AliESDtrack * track, Int_t charge, TString suffix)
{
  //fill histo with TOF base quantities
  if (!track) return;
  
  //  Double_t tofTime=track->GetTOFsignal();//in ps
  Double_t tofTimeRaw=track->GetTOFsignalRaw();//in ps
  Double_t tofToT=track->GetTOFsignalToT(); //in ps
  Int_t channel=track->GetTOFCalChannel(); 
  Int_t volId[5]; //(sector, plate,strip,padZ,padX)
  AliTOFGeometry::GetVolumeIndices(channel,volId);
  TString cLabel;
  if (charge == 0) cLabel.Form("all");
  else 
    if (charge<0) cLabel.Form("neg"); 
    else 
      if (charge>0) cLabel.Form("pos"); 

  ((TH1F*)fHlist->FindObject(Form("hTime%s_%s",suffix.Data(),cLabel.Data())))->Fill(fTof); //ns
  ((TH1F*)fHlist->FindObject(Form("hRawTime%s_%s",suffix.Data(),cLabel.Data())))->Fill(tofTimeRaw*1E-3); //ns
  ((TH1F*)fHlist->FindObject(Form("hTot%s_%s",suffix.Data(),cLabel.Data())))->Fill(tofToT);
  ((TH1F*)fHlist->FindObject(Form("hMatchedL%s_%s", suffix.Data(), cLabel.Data())))->Fill(fL);      
  ((TH2F*)fHlist->FindObject(Form("hMatchedDxVsPt%s_%s",suffix.Data(),cLabel.Data())))->Fill(fPt,track->GetTOFsignalDx());
  ((TH2F*)fHlist->FindObject(Form("hMatchedDzVsStrip%s_%s",suffix.Data(),cLabel.Data())))->Fill((Int_t)GetStripIndex(volId),track->GetTOFsignalDz());
  ((TProfile*)fHlist->FindObject(Form("hMatchedDxVsCh%s_%s",suffix.Data(),cLabel.Data())))->Fill(channel,track->GetTOFsignalDx());
  ((TProfile*)fHlist->FindObject(Form("hMatchedDzVsCh%s_%s",suffix.Data(),cLabel.Data())))->Fill(channel,track->GetTOFsignalDz());
  
  return;
}
//----------------------------------------------------------------------------------
void AliAnalysisTaskTOFqaID::FillPrimaryTrkHisto(Int_t charge, TString suffix)
{
  // fill histos with primary tracks info
  // => denominator for matching efficiency
  TString cLabel; 
  if (charge == 0) cLabel.Form("all");
  else 
    if (charge<0) cLabel.Form("neg"); 
    else 
      if (charge>0) cLabel.Form("pos"); 
  
  if (suffix.Contains("Trd")) {
    ((TH1F*)fHlistTRD->FindObject(Form("hPrimaryP%s_%s",suffix.Data(),cLabel.Data())))->Fill(fP); 
    ((TH1F*)fHlistTRD->FindObject(Form("hPrimaryPt%s_%s",suffix.Data(),cLabel.Data())))->Fill(fPt); 
    ((TH2F*)fHlistTRD->FindObject(Form("hPrimaryPtVsOutPhi%s_%s",suffix.Data(),cLabel.Data())))->Fill(fTPCOuterPhi,fPt);
    if (fPt>=fMatchingMomCut) {
      ((TH1F*)fHlistTRD->FindObject(Form("hPrimaryEta%s_%s",suffix.Data(),cLabel.Data())))->Fill(fEta);
      ((TH1F*)fHlistTRD->FindObject(Form("hPrimaryPhi%s_%s",suffix.Data(),cLabel.Data())))->Fill(fPhi);
    }
  } else {
    ((TH1F*)fHlist->FindObject(Form("hPrimaryP%s_%s",suffix.Data(),cLabel.Data())))->Fill(fP); 
    ((TH1F*)fHlist->FindObject(Form("hPrimaryPt%s_%s",suffix.Data(),cLabel.Data())))->Fill(fPt); 
    ((TH2F*)fHlist->FindObject(Form("hPrimaryPtVsOutPhi%s_%s",suffix.Data(),cLabel.Data())))->Fill(fTPCOuterPhi,fPt); 
    if (fPt>=fMatchingMomCut) {
      ((TH1F*)fHlist->FindObject(Form("hPrimaryEta%s_%s",suffix.Data(),cLabel.Data())))->Fill(fEta);
      ((TH1F*)fHlist->FindObject(Form("hPrimaryPhi%s_%s",suffix.Data(),cLabel.Data())))->Fill(fPhi);
    }
  }
  return;
}
//----------------------------------------------------------------------------------
void AliAnalysisTaskTOFqaID::FillMatchedTrkHisto(Int_t charge, TString suffix)
{
  //get matched tracks variables (matching cut to be applied externally)
  //=> numerator for matching efficiency
  TString cLabel; 
  if (charge == 0) cLabel.Form("all");
  else 
    if (charge<0) cLabel.Form("neg"); 
    else 
      if (charge>0) cLabel.Form("pos"); 
  
  if (suffix.Contains("Trd")) { 
    ((TH1F*)fHlistTRD->FindObject(Form("hMatchedP%s_%s",suffix.Data(),cLabel.Data())))->Fill(fP); 
    ((TH1F*)fHlistTRD->FindObject(Form("hMatchedPt%s_%s",suffix.Data(),cLabel.Data())))->Fill(fPt); 
    ((TH2F*)fHlistTRD->FindObject(Form("hMatchedPtVsOutPhi%s_%s",suffix.Data(),cLabel.Data())))->Fill(fTPCOuterPhi,fPt);
    if (fPt>=fMatchingMomCut) {
      ((TH1F*)fHlistTRD->FindObject(Form("hMatchedEta%s_%s",suffix.Data(),cLabel.Data())))->Fill(fEta);
      ((TH1F*)fHlistTRD->FindObject(Form("hMatchedPhi%s_%s",suffix.Data(),cLabel.Data())))->Fill(fPhi);
    }
  } else {
    ((TH1F*)fHlist->FindObject(Form("hMatchedP%s_%s",suffix.Data(),cLabel.Data())))->Fill(fP); 
    ((TH1F*)fHlist->FindObject(Form("hMatchedPt%s_%s",suffix.Data(),cLabel.Data())))->Fill(fPt); 
    ((TH2F*)fHlist->FindObject(Form("hMatchedPtVsOutPhi%s_%s",suffix.Data(),cLabel.Data())))->Fill(fTPCOuterPhi,fPt);
    if (fPt>=fMatchingMomCut) {
      ((TH1F*)fHlist->FindObject(Form("hMatchedEta%s_%s",suffix.Data(),cLabel.Data())))->Fill(fEta);
      ((TH1F*)fHlist->FindObject(Form("hMatchedPhi%s_%s",suffix.Data(),cLabel.Data())))->Fill(fPhi);
    }
  }
  return;
}

//----------------------------------------------------------------------------------
void AliAnalysisTaskTOFqaID::FillPidHisto(AliESDtrack * track, Int_t charge, TString suffix)
{
  //basic PID performance check
  if (fTof<=0) {
    printf("WARNING: track with negative TOF time found! Skipping this track for PID checks\n");
    return;
  }
  if (fL<=0){
    printf("WARNING: track with negative length found!Skipping this track for PID checks\n");
    return;
  }
  if (!track) return;
  
  TString cLabel; 
  if (charge == 0) cLabel.Form("all");
  else 
    if (charge<0) cLabel.Form("neg"); 
    else 
      if (charge>0) cLabel.Form("pos"); 
  
  //calculate beta
  Double_t c=TMath::C()*1.E-9;// m/ns
  Double_t mass=0.; //GeV
  Double_t length=fL*0.01; // in meters
  Double_t tof=fTof*c;
  Double_t beta=length/tof;
  Double_t fact= (tof/length)*(tof/length) -1.;
  Double_t fP2 = fP*fP;
  
  if(fact<=0) {
    mass = -fP*TMath::Sqrt(-fact);
  } else { 
    mass = fP*TMath::Sqrt(fact); 
  }
  
  if (suffix.Contains("Trd")) {
    ((TH2F*) fHlistTRD->FindObject(Form("hMatchedBetaVsP%s_%s",suffix.Data(),cLabel.Data())))->Fill(fP,beta);
    ((TH1F*) fHlistTRD->FindObject(Form("hMatchedMass%s_%s",suffix.Data(),cLabel.Data())))->Fill(mass);
    ((TH1F*) fHlistTRD->FindObject(Form("hMatchedMass2%s_%s",suffix.Data(),cLabel.Data())))->Fill(mass*mass);
  } else {
    ((TH2F*) fHlistPID->FindObject(Form("hMatchedBetaVsP%s_%s",suffix.Data(),cLabel.Data())))->Fill(fP,beta);
    ((TH1F*) fHlistPID->FindObject(Form("hMatchedMass%s_%s",suffix.Data(),cLabel.Data())))->Fill(mass);
    ((TH1F*) fHlistPID->FindObject(Form("hMatchedMass2%s_%s",suffix.Data(),cLabel.Data())))->Fill(mass*mass);
  }
  
  //PID sigmas
  Bool_t isValidBeta[AliPID::kSPECIES]={0,0,0,0,0};
  for (Int_t specie = 0; specie < AliPID::kSPECIES; specie++){
    fSigmaSpecie[specie] = fESDpid->GetTOFResponse().GetExpectedSigma(fP, fTrkExpTimes[specie], AliPID::ParticleMass(specie));
    beta=1/TMath::Sqrt(1+AliPID::ParticleMass(specie)*AliPID::ParticleMass(specie)/(fP2));
    if (beta>0) {
      fThExpTimes[specie]=length*1.E3/(beta*c);//ps
      isValidBeta[specie]=kTRUE;
    } else {
      fThExpTimes[specie]=1E-10;
      isValidBeta[specie]=kFALSE;
    }
  }
  Float_t timeZeroTOF = (Float_t) fESDpid->GetTOFResponse().GetStartTime(fPt);
  Double_t tofps=fTof*1E3;//ps for t-texp
  Int_t channel=track->GetTOFCalChannel(); 
  Int_t volId[5]; //(sector, plate,strip,padZ,padX)
  AliTOFGeometry::GetVolumeIndices(channel,volId);
  Char_t partName[3][4] = {"Pi","Ka","Pro"}; 
  
  if (suffix.Contains("Trd")) {
    //fill histos for pion only
    ((TH2F*)fHlistTRD->FindObject(Form("hExpTimePiVsStrip%s_%s",suffix.Data(),cLabel.Data())))->Fill((Int_t)GetStripIndex(volId),tofps-fTrkExpTimes[AliPID::kPion]);//ps
    ((TH1F*)fHlistTRD->FindObject(Form("hExpTimePi%s_%s",suffix.Data(),cLabel.Data())))->Fill(tofps-fTrkExpTimes[AliPID::kPion]);//ps	
    if (ComputeTimeZeroByTOF1GeV() && (fPt>0.95) && (fPt<1.05) ){
      ((TH2F*)fHlistTRD->FindObject(Form("hExpTimePiT0Sub1GeV%s_%s",suffix.Data(),cLabel.Data())))->Fill(fMyTimeZeroTOFtracks,tofps-fMyTimeZeroTOF-fTrkExpTimes[AliPID::kPion]);
    }
    //fill sigmas and deltas for each specie
    for (Int_t specie = AliPID::kPion; specie <= AliPID::kProton; specie++){
      if (isValidBeta[specie]){
	((TH2F*)fHlistTRD->FindObject(Form("hExpTime%sVsP%s_%s",partName[specie-2], suffix.Data(),cLabel.Data())))->Fill(fP, tofps-fTrkExpTimes[specie]);
	((TH2F*)fHlistTRD->FindObject(Form("hTOFpidSigma%s%s_%s",partName[specie-2], suffix.Data(),cLabel.Data())))->Fill(fPt, (tofps-fTrkExpTimes[specie])/fSigmaSpecie[specie]);
	((TH2F*)fHlistTRD->FindObject(Form("hExpTime%sT0SubVsP%s_%s",partName[specie-2], suffix.Data(),cLabel.Data())))->Fill(fP,tofps-fTrkExpTimes[specie]-timeZeroTOF);  
	((TH2F*)fHlistTRD->FindObject(Form("hExpTime%sVsOutPhi%s_%s",partName[specie-2], suffix.Data(),cLabel.Data())))->Fill(fTPCOuterPhi,tofps-fTrkExpTimes[specie]-timeZeroTOF);
	  
      }// end check on beta
    }
  } else { 
    
    //fill histos for pion only
    ((TH2F*)fHlistPID->FindObject(Form("hExpTimePiVsStrip%s_%s",suffix.Data(),cLabel.Data())))->Fill((Int_t)GetStripIndex(volId),tofps-fTrkExpTimes[AliPID::kPion]);//ps
    ((TH1F*)fHlistPID->FindObject(Form("hExpTimePi%s_%s",suffix.Data(),cLabel.Data())))->Fill(tofps-fTrkExpTimes[AliPID::kPion]);//ps    
    if (ComputeTimeZeroByTOF1GeV() && (fPt>0.95) && (fPt<1.05) ){
      ((TH2F*)fHlistPID->FindObject(Form("hExpTimePiT0Sub1GeV%s_%s",suffix.Data(),cLabel.Data())))->Fill(fMyTimeZeroTOFtracks,tofps-fMyTimeZeroTOF-fTrkExpTimes[AliPID::kPion]);
    }
    //fill sigmas and deltas for each specie
    for (Int_t specie = AliPID::kPion; specie <= AliPID::kProton; specie++){
      if (isValidBeta[specie]){
	((TH2F*)fHlistPID->FindObject(Form("hExpTime%sVsP%s_%s",partName[specie-2], suffix.Data(),cLabel.Data())))->Fill(fP, tofps-fTrkExpTimes[specie]);
	((TH2F*)fHlistPID->FindObject(Form("hTOFpidSigma%s%s_%s",partName[specie-2], suffix.Data(),cLabel.Data())))->Fill(fPt, (tofps-fTrkExpTimes[specie])/fSigmaSpecie[specie]);
	((TH2F*)fHlistPID->FindObject(Form("hExpTime%sT0SubVsP%s_%s",partName[specie-2], suffix.Data(),cLabel.Data())))->Fill(fP,tofps-fTrkExpTimes[specie]-timeZeroTOF);  
	((TH2F*)fHlistPID->FindObject(Form("hExpTime%sVsOutPhi%s_%s",partName[specie-2], suffix.Data(),cLabel.Data())))->Fill(fTPCOuterPhi,tofps-fTrkExpTimes[specie]-timeZeroTOF);
      }// end check on beta
    } 
 
  }
  
  //re-set response kFILL_T0 to check post-alignment wih OADB
  fESDpid->SetTOFResponse(fESD,AliESDpid::kFILL_T0);//(fill_t0, tof_t0, t0_t0, best_t0)
  Float_t startTimeFill=fESDpid->GetTOFResponse().GetStartTime(fP); //timeZero for bin pT>10GeV/c
  if (suffix.Contains("Trd"))
    ((TH1F*)fHlistTRD->FindObject(Form("hExpTimePiFillSub%s_%s",suffix.Data(),cLabel.Data())))->Fill(tofps-fTrkExpTimes[AliPID::kPion]-startTimeFill);//ps
  else 
    ((TH1F*)fHlistPID->FindObject(Form("hExpTimePiFillSub%s_%s",suffix.Data(),cLabel.Data())))->Fill(tofps-fTrkExpTimes[AliPID::kPion]-startTimeFill);//ps
 
  // if (fEnableAdvancedCheck && (fPt<1.)) {
  //   Double_t pos[3]={0.,0.,0.};
  //   track->GetXYZAt(378.,5.,pos);
  //   if ((pos[0]==0.)&&(pos[1]==0.)&&(pos[2]==0.))continue;
  
  //   Double_t phiTOF=TMath::ATan2(pos[1],pos[0])*TMath::RadToDeg();
  //   if (phiTOF<0) phiTOF+= (2*TMath::Pi()*TMath::RadToDeg());
  
  //   //fill t-texp vs phi@TOF
  //    if ((phiOuterTPC<=75) || ((phiOuterTPC>=125)&&(phiOuterTPC<=235)) || (phiOuterTPC>=305) ) { //TRD sectors 2012
  //    if ( ((phiOuterTPC>=85)&&(phiOuterTPC<=115)) || ((phiOuterTPC>=245)&&(phiOuterTPC<=295)) ) {//no TRD sectors 2012
  // }
  return;      
}
//----------------------------------------------------------------------------------
void AliAnalysisTaskTOFqaID::FillStartTimeHisto(TString suffix)
{
  //fill start time histo
  if (!fESD) {
    AliError("Invalid event object");
    return;
  }
  // info from V0 detector QA 
  AliESDVZERO * vzero = fESD->GetVZEROData();
  Float_t V0Atime = vzero->GetV0ATime();
  Float_t V0Ctime = vzero->GetV0CTime(); 
  ((TH2F*)fHlistTimeZero->FindObject(Form("hEventV0MeanVsVtx%s",suffix.Data())))->Fill((V0Atime-V0Ctime)*0.5,(V0Atime+V0Ctime)*0.5);
  
  // info from T0 detector QA 
  for (Int_t j=0;j<3;j++){
    fT0[j]= (Float_t) fESD->GetT0TOF(j);//ps
    if (fT0[j]>90000.) fT0[j]=99999.;//fix old default values to the new one
  }
  
  Float_t t0cut = 90000.; 
  //Float_t t0cut =3 * t0spread; //use this cut to check t0 used in tof response
  // if(t0cut < 500) t0cut = 500;
  
  if(TMath::Abs(fT0[1]) < t0cut && TMath::Abs(fT0[2]) < t0cut ) {
    //&& TMath::Abs(fT0[2]-fT0[1]) < 500)  //add this condition to check t0 used in tof response
    ((TH1F*)fHlistTimeZero->FindObject(Form("hT0DetRes%s",suffix.Data())))->Fill((fT0[2]-fT0[1])*0.5);
    ((TH1F*)fHlistTimeZero->FindObject(Form("hT0AC%s",suffix.Data())))->Fill(fT0[0]);  
    ((TH2F*)fHlistTimeZero->FindObject(Form("hEventT0MeanVsVtx%s",suffix.Data())))->Fill( ((fT0[2]-fT0[1])*0.5e-3), ((fT0[2]+fT0[1])*0.5e-3) );
  } 
  if(TMath::Abs(fT0[1]) < t0cut){
    ((TH1F*)fHlistTimeZero->FindObject(Form("hT0A%s",suffix.Data())))->Fill(fT0[1]);   
  }
  if(TMath::Abs(fT0[2]) < t0cut){
    ((TH1F*)fHlistTimeZero->FindObject(Form("hT0C%s",suffix.Data())))->Fill(fT0[2]);
  }
  
  //  event timeZero QA via AliESDpid::SetTOFResponse() 
  Double_t timeZero[4]={99999.,99999.,99999.,99999.};
  Double_t timeZeroRes[4]={99999.,99999.,99999.,99999.}; 
  
  TString timeZeroHisto[4]={"hT0fill","hT0TOF","hT0T0","hT0best"};
  TString timeZeroHistoRes[4]={"hT0fillRes","hT0TOFRes","hT0T0Res","hT0bestRes"};
  for (Int_t j=0;j<4;j++){
    timeZeroHisto[j].Append(suffix.Data());
    timeZeroHistoRes[j].Append(suffix.Data());
    fESDpid->SetTOFResponse(fESD, (AliESDpid::EStartTimeType_t) j);//(fill_t0, tof_t0, t0_t0, best_t0)
    timeZero[j]=fESDpid->GetTOFResponse().GetStartTime(10.); //timeZero for bin pT>10GeV/c
    timeZeroRes[j]=fESDpid->GetTOFResponse().GetStartTimeRes(10.); //timeZero for bin pT>10GeV/c
    ((TH1F*)(fHlistTimeZero->FindObject(timeZeroHisto[j].Data())))->Fill(timeZero[j]);
    ((TH1F*)(fHlistTimeZero->FindObject(timeZeroHistoRes[j].Data())))->Fill(timeZeroRes[j]);
  }
  ((TH2F*)fHlistTimeZero->FindObject("hT0TOFvsNtrk"))->Fill(fNTOFtracks[0],timeZero[AliESDpid::kTOF_T0]);
   
  //response set to best_t0 by previous loop
  FillStartTimeMaskHisto(suffix.Data());

  return;
}
//----------------------------------------------------------------------------------
void AliAnalysisTaskTOFqaID::FillTrdHisto(AliESDtrack * track, Int_t charge)
{
  //fill histograms for TRD/noTRD
  if (!track){
    AliError("Invalid track object");
    return;
  }
  
  if (IsInTRD(track)){
    FillPrimaryTrkHisto(charge,"_Trd");
    if (IsTPCTOFMatched(track)) {      
      FillMatchedTrkHisto(charge,"_Trd");
      FillPidHisto(track,charge, "_Trd");
    }
  } else {
    FillPrimaryTrkHisto(charge,"_noTrd");    
    if (IsTPCTOFMatched(track)) {      
      FillMatchedTrkHisto(charge,"_noTrd");
      FillPidHisto(track, charge, "_noTrd");
    }
  }
  return;
}
//----------------------------------------------------------------------------------
void AliAnalysisTaskTOFqaID::FillTofTrgHisto(TString suffix)
{
  //fills histo with trigger info
  if (!fHlistTrigger){
    AliError("Invalid TOF trigger list");
    return;
  }
  if (!fTOFHeader) {
    AliWarning("Invalid AliTOFHeader object - cannot fill trg histo");
    return;    
  }
  
  Int_t nPad = fTOFHeader->GetNumberOfTOFclusters(); //all fired readout pads
  Int_t nTrgPad = fTOFHeader->GetNumberOfTOFtrgPads();// fired readout pads in the trigger window
  Int_t nMaxiPad = fTOFHeader->GetNumberOfTOFmaxipad(); //fired maxipads
  
  // update histo with fired macropads
  AliTOFTriggerMask *trgMask = fTOFHeader->GetTriggerMask();
  for(Int_t j=0;j<72;j++){
    for(Int_t i=22;i>=0;i--){
      if(trgMask->IsON(j,i))
	((TH1I*)fHlistTrigger->FindObject(Form("hTrgMap%s",suffix.Data())))->Fill(j+1,i+1); 
    }	
  }
  ((TH1I*)fHlistTrigger->FindObject(Form("hFiredMaxipad%s",suffix.Data())))->Fill(nMaxiPad);
  ((TH1I*)fHlistTrigger->FindObject(Form("hFiredReadoutPad%s",suffix.Data())))->Fill(nPad);
  ((TH1I*)fHlistTrigger->FindObject(Form("hFiredReadoutTrgPad%s",suffix.Data())))->Fill(nTrgPad);
  ((TH2I*)fHlistTrigger->FindObject(Form("hFiredMaxipadVsTrgPad%s",suffix.Data())))->Fill(nTrgPad,nMaxiPad);
  
  return;
}

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