ROOT logo
/*************************************************************************
* Copyright(c) 1998-2009, ALICE Experiment at CERN, All rights reserved. *
*                                                                        *
* Author: The ALICE Off-line Project.                                    *
* Contributors are mentioned in the code where appropriate.              *
*                                                                        *
* Permission to use, copy, modify and distribute this software and its   *
* documentation strictly for non-commercial purposes is hereby granted   *
* without fee, provided that the above copyright notice appears in all   *
* copies and that both the copyright notice and this permission notice   *
* appear in the supporting documentation. The authors make no claims     *
* about the suitability of this software for any purpose. It is          *
* provided "as is" without express or implied warranty.                  *
**************************************************************************/

///////////////////////////////////////////////////////////////////////////
//                                                                       //
//     Analysis task for computing single particle efficiencies          //
//                                                                       //
///////////////////////////////////////////////////////////////////////////

#include <TChain.h>
#include <TH1D.h>
#include <TList.h>
#include <THashList.h>
#include <TString.h>

#include <AliPID.h>
#include <AliCFContainer.h>
#include <AliInputEventHandler.h>
#include <AliESDInputHandler.h>
#include <AliAODInputHandler.h>
#include <AliAnalysisManager.h>
#include <AliVEvent.h>
#include <AliESDEvent.h>
#include <AliESDv0.h>
#include <AliESDv0Cuts.h>
#include <AliESDv0KineCuts.h>
#include <AliKFVertex.h>
#include <AliESDfriendTrack.h>
#include <AliESDfriend.h>
#include <AliTRDseedV1.h>
#include <AliTRDcluster.h>
#include <AliTRDtrackV1.h>

#include "AliDielectron.h"
#include "AliDielectronHistos.h"
#include "AliDielectronPair.h"
#include "AliDielectronCF.h"
#include "AliDielectronMC.h"
#include "AliDielectronHistos.h"
#include "AliAnalysisTaskSingleParticle.h"

#include <iostream>
using namespace std;

ClassImp(AliAnalysisTaskSingleParticle)

//_________________________________________________________________________________
AliAnalysisTaskSingleParticle::AliAnalysisTaskSingleParticle() :
  AliAnalysisTaskSE(),
  fCfContainer(0x0),
  fHistos(0x0),
  fHistogramList(),
  fSelectPhysics(kTRUE),
  fTriggerMask(AliVEvent::kMB),
  fRejectPileup(kFALSE),
  fFillTRDfriendPH(kFALSE),
  fEventFilter(0x0),
  fTrackFilter(0x0),
  fPairFilter(0x0),
  fV0Cuts(0x0),
  fLambdaFilter(0x0),
  fK0sFilter(0x0),
  fV0KineCuts(0x0),
  fCFNVars(0),
  fEventStat(0x0)
{
  //
  // Constructor
  //
  for(Int_t i=0; i<kNMaxDimensions; ++i) {
    fCFVarsEnabled[i] = -1; fCFVarsNbins[i] = 0;
    fCFVarRanges[i][0] = 0.0; fCFVarRanges[i][1] = -1.0;
    fCFVarBins[i] = "";
  }
}

//_________________________________________________________________________________
AliAnalysisTaskSingleParticle::AliAnalysisTaskSingleParticle(const char *name) :
  AliAnalysisTaskSE(name),
  fCfContainer(0x0),
  fHistos(0x0),
  fHistogramList(),
  fSelectPhysics(kTRUE),
  fTriggerMask(AliVEvent::kMB),
  fRejectPileup(kFALSE),
  fFillTRDfriendPH(kFALSE),
  fEventFilter(0x0),
  fTrackFilter(0x0),
  fPairFilter(0x0),
  fV0Cuts(0x0),
  fLambdaFilter(0x0),
  fK0sFilter(0x0),
  fV0KineCuts(0x0),
  fCFNVars(0),
  fEventStat(0x0)
{
  //
  // Constructor
  //
  for(Int_t i=0; i<kNMaxDimensions; ++i) {
    fCFVarsEnabled[i] = -1; fCFVarsNbins[i] = 0;
    fCFVarRanges[i][0] = 0.0; fCFVarRanges[i][1] = -1.0;
    fCFVarBins[i] = "";
  }
  fHistogramList.SetName("QAhistos");
  fHistogramList.SetOwner();
  DefineInput(0, TChain::Class());
  DefineOutput(1, AliCFContainer::Class());
  DefineOutput(2, TList::Class());
  DefineOutput(3, TH1D::Class());
}


//____________________________________________________________________
AliAnalysisTaskSingleParticle::~AliAnalysisTaskSingleParticle()
{
  //
  // Destructor
  // 
  fHistogramList.SetOwner(kFALSE);
  if(fHistos) delete fHistos;
  delete fCfContainer;
}


//____________________________________________________________________
void AliAnalysisTaskSingleParticle::AddCFVar(Int_t var, Int_t nbins, Double_t lowLim, Double_t highLim) {
  //
  // Configure variables for the CF container
  //
  if(fCFNVars>=kNMaxDimensions) return;
  fCFVarsEnabled[fCFNVars] = var;
  fCFVarsNbins[fCFNVars] = nbins;
  fCFVarRanges[fCFNVars][0] = lowLim;
  fCFVarRanges[fCFNVars][1] = highLim;
  ++fCFNVars;
}


//____________________________________________________________________
void AliAnalysisTaskSingleParticle::AddCFVar(Int_t var, const Char_t* bins) {
  //
  // Configure variables for the CF container
  //
  if(fCFNVars>=kNMaxDimensions) return;
  fCFVarsEnabled[fCFNVars] = var;
  fCFVarBins[fCFNVars] = bins;
  ++fCFNVars;
}


//_________________________________________________________________________________
void AliAnalysisTaskSingleParticle::UserCreateOutputObjects()
{
  //
  // Initialize CF container
  //
  if(fCfContainer) return;
  if(!fHistogramList.IsEmpty()) return;
  
  if (!fEventStat){
    fEventStat=new TH1D("hEventStat","Event statistics",4,-0.5,3.5);
    fEventStat->GetXaxis()->SetBinLabel(1,"Before Phys. Sel.");
    fEventStat->GetXaxis()->SetBinLabel(2,"After Phys. Sel.");
    fEventStat->GetXaxis()->SetBinLabel(3,"After event filter");
    fEventStat->GetXaxis()->SetBinLabel(4,"After pileup rejection");
  }
  
  //Bool_t hasMC = AliDielectronMC::Instance()->HasMC();
  
  if(!fCfContainer) {
    for(Int_t ivar=0; ivar<fCFNVars; ++ivar) {
      if(fCFVarBins[ivar][0]!='\0') {
        TObjArray* arr = fCFVarBins[ivar].Tokenize(",");
        fCFVarsNbins[ivar] = arr->GetEntries()-1;
      }
    }
    fCFVarsNbins[fCFNVars] = AliPID::kSPECIES;
    //
    // If fFillTRDfriendPH is toggled then add some predefined variables to the CF
    // Hardcoded variables and binning !! TODO: Implement them in the VarManager ??
    // This container is filled for every TRD time bin, and every tracklet from a track
    Double_t phLimits[2] = {0.0, 2000.}; Int_t phBins = 200;
    Double_t detLimits[2] = {-0.5, 539.5}; Int_t detBins = 540;
    const Int_t kNTrdMomBins = 17;
    Double_t trdMomLimits[kNTrdMomBins+1] = {0.0, 0.5, 0.7, 0.9, 1.1, 1.3, 1.5, 1.7, 1.9, 2.1, 2.5, 3.0, 3.5, 4.0, 5.0, 6.0, 8.0, 10.0};
    Int_t trdNtb = 30; Double_t trdTbLims[2] = {0.5, 30.5};
    Int_t trdQtotNbins = 200; Double_t trdQtotLims[2] = {0.0, 10000.};
    fCFVarsNbins[fCFNVars+1] = kNTrdMomBins;
    fCFVarsNbins[fCFNVars+2] = detBins;
    fCFVarsNbins[fCFNVars+3] = trdNtb;
    fCFVarsNbins[fCFNVars+4] = phBins;
    fCFVarsNbins[fCFNVars+5] = trdQtotNbins;
    
    if(fCFNVars>0 || fFillTRDfriendPH) {
      fCfContainer = new AliCFContainer("SingleParticle", "Single Particle CF", 1, (fFillTRDfriendPH ? fCFNVars+6 : fCFNVars+1), fCFVarsNbins);
      for(Int_t ivar=0; ivar<fCFNVars; ++ivar) {
        if(fCFVarBins[ivar][0]=='\0')
	  fCfContainer->SetBinLimits(ivar, fCFVarRanges[ivar][0], fCFVarRanges[ivar][1]);
        else {
	  TObjArray* arr = fCFVarBins[ivar].Tokenize(",");
	  if(arr->GetEntries()-1>0) {
	    Double_t* binLims = new Double_t[arr->GetEntries()];
	    for(Int_t ib=0;ib<arr->GetEntries();++ib) {
	      TString binStr = arr->At(ib)->GetName();
	      binLims[ib] = binStr.Atof();
	    }
	    fCfContainer->SetBinLimits(ivar, binLims);
	  }
        }
        fCfContainer->SetVarTitle(ivar, AliDielectronVarManager::GetValueName(fCFVarsEnabled[ivar]));
      }
      fCfContainer->SetBinLimits(fCFNVars, -0.5+AliPID::kElectron, 0.5+AliPID::kProton);
      fCfContainer->SetVarTitle(fCFNVars, "specie");
      if(fFillTRDfriendPH) {
	fCfContainer->SetBinLimits(fCFNVars+1, trdMomLimits);
	fCfContainer->SetVarTitle(fCFNVars+1, "TRD_trackletMom");
	fCfContainer->SetBinLimits(fCFNVars+2, detLimits[0], detLimits[1]);
	fCfContainer->SetVarTitle(fCFNVars+2, "TRD_detector");
	fCfContainer->SetBinLimits(fCFNVars+3, trdTbLims[0], trdTbLims[1]);
	fCfContainer->SetVarTitle(fCFNVars+3, "TRD_tb");
	fCfContainer->SetBinLimits(fCFNVars+4, phLimits[0], phLimits[1]);
	fCfContainer->SetVarTitle(fCFNVars+4, "TRD_PH");
	fCfContainer->SetBinLimits(fCFNVars+5, trdQtotLims[0], trdQtotLims[1]);
	fCfContainer->SetVarTitle(fCFNVars+5, "TRD_Qtot");
      }
      fCfContainer->SetStepTitle(0, "Tracking");
    }
  }
  
  if(fHistos) {
    fHistogramList.Add(const_cast<THashList*>(fHistos->GetHistogramList()));
  }
  
  if(fCfContainer) PostData(1, fCfContainer);
  if(fHistos) PostData(2, &fHistogramList);
  PostData(3, fEventStat);
}

//_________________________________________________________________________________
void AliAnalysisTaskSingleParticle::UserExec(Option_t *)
{
  //
  // Main loop. Called for every event
  //

  AliAnalysisManager *man=AliAnalysisManager::GetAnalysisManager();
  //Bool_t isESD=man->GetInputEventHandler()->IsA()==AliESDInputHandler::Class();
  //Bool_t isAOD=man->GetInputEventHandler()->IsA()==AliAODInputHandler::Class();
  
  AliInputEventHandler* inputHandler = (AliInputEventHandler*) (man->GetInputEventHandler());
  if (!inputHandler) return;
  
  if ( inputHandler->GetPIDResponse() ){
    AliDielectronVarManager::SetPIDResponse( inputHandler->GetPIDResponse() );
  } else {
    AliFatal("This task needs the PID response attached to the input event handler!");   
  } 
  // Was event selected ?
  UInt_t isSelected = AliVEvent::kAny;
  if( fSelectPhysics && inputHandler && inputHandler->GetEventSelection() ) {
    isSelected = inputHandler->IsEventSelected();
    isSelected&=fTriggerMask;
  }
  
  //Before physics selection
  fEventStat->Fill(0);
  if (isSelected==0) {
    PostData(3,fEventStat);
    return;
  }
  //after physics selection
  fEventStat->Fill(1);

  //event filter
  if (fEventFilter) {
    if (!fEventFilter->IsSelected(InputEvent())) {PostData(3, fEventStat); return;}
  }
  fEventStat->Fill(2);
  
  //pileup
  if (fRejectPileup){
    if (InputEvent()->IsPileupFromSPD(3,0.8,3.,2.,5.)) {PostData(3, fEventStat); return;}
  }
  fEventStat->Fill(3);
  
  if(!fCfContainer) {PostData(3, fEventStat); return;}
  //bz for AliKF
  Double_t bz = InputEvent()->GetMagneticField();
  AliKFParticle::SetField( bz );

  AliDielectronPID::SetCorrVal((Double_t)InputEvent()->GetRunNumber());
  
  AliESDEvent* esd = (AliESDEvent*)InputEvent();
  AliDielectronVarManager::SetEvent(esd);
  
  Double_t valuesPos[AliDielectronVarManager::kNMaxValues];
  Double_t valuesNeg[AliDielectronVarManager::kNMaxValues];
  Double_t valuesPair[AliDielectronVarManager::kNMaxValues];
  AliDielectronVarManager::Fill(esd, valuesPos);
  AliDielectronVarManager::Fill(esd, valuesNeg);
  AliDielectronVarManager::Fill(esd, valuesPair);
  
  if(fHistos && fHistos->GetHistogramList()->FindObject("Event"))
    fHistos->FillClass("Event", AliDielectronVarManager::kNMaxValues, valuesPos);
  
  const AliESDVertex *primaryVertex = esd->GetPrimaryVertex();
  AliKFVertex primaryVertexKF(*primaryVertex);
    
  fV0KineCuts->SetEvent(esd);
  fV0KineCuts->SetPrimaryVertex(&primaryVertexKF);
  
  Int_t pdgV0=0; Int_t pdgP=0; Int_t pdgN=0;
  for(Int_t iV0=0; iV0<InputEvent()->GetNumberOfV0s(); ++iV0) {   // loop over V0s
    //cout << "iV0 = " << iV0 << endl;
    AliESDv0 *v0 = esd->GetV0(iV0);
       
    AliESDtrack* legPos = esd->GetTrack(v0->GetPindex());
    AliESDtrack* legNeg = esd->GetTrack(v0->GetNindex());
 
    if(legPos->GetSign() == legNeg->GetSign()) {
      //cout << "V0 rejected: same sign legs" << endl;
      continue;
    }

    //To avoid ghosts test of trunk for the refit
    if(!(legPos->GetStatus() & AliESDtrack::kTPCrefit)) {
      //cout << "pos leg rejected: no TPCrefit" << endl;
      continue;
    }
    if(!(legNeg->GetStatus() & AliESDtrack::kTPCrefit)) {
      //cout << "neg leg rejected: no TPCrefit" << endl;
      continue;
    }
    
    Bool_t v0ChargesAreCorrect = (legPos->GetSign()==+1 ? kTRUE : kFALSE);
    legPos = (!v0ChargesAreCorrect ? esd->GetTrack(v0->GetNindex()) : legPos);
    legNeg = (!v0ChargesAreCorrect ? esd->GetTrack(v0->GetPindex()) : legNeg);
    
    Bool_t good = fV0KineCuts->ProcessV0(v0, pdgV0, pdgP, pdgN);
    if(!good) {
      //cout << "V0KineCuts rejected V0" << endl;
      continue;
    }
    
    if(!fFillTRDfriendPH) {
      //cout << "No TRD friend filling" << endl;
      if(pdgV0!=22) continue;
      if(TMath::Abs(pdgN)!=11) continue;
      if(TMath::Abs(pdgP)!=11) continue;
    }
    /*
    // V0 standard cuts
    if(fV0Cuts) {
      TList v0List;
      v0List.Add(v0);
      v0List.Add(legPos); v0List.Add(legNeg);
      v0List.Add(const_cast<AliESDVertex*>(primaryVertex));
      if(!fV0Cuts->IsSelected(&v0List)) continue;
    }*/
    
    // additional track filtering
    if(fTrackFilter && !fTrackFilter->IsSelected(legPos)) {
      //cout << "pos leg rejected: track filter" << endl;
      continue;
    }
    if(fTrackFilter && !fTrackFilter->IsSelected(legNeg)) {
      //cout << "neg leg rejected: track filter" << endl;
      continue;
    }
    
    AliKFParticle* posKF = (v0ChargesAreCorrect ? new AliKFParticle(*(v0->GetParamP()),pdgP) : new AliKFParticle(*(v0->GetParamN()),pdgN));
    AliKFParticle* negKF = (v0ChargesAreCorrect ? new AliKFParticle(*(v0->GetParamN()),pdgN) : new AliKFParticle(*(v0->GetParamP()),pdgP));
    AliDielectronPair pair;
    pair.SetTracks(posKF, negKF, legPos, legNeg);
    pair.SetType(1);
    if(fPairFilter && !fPairFilter->IsSelected(&pair)) {
      //cout << "diele pair rejected: pair filter" << endl;
      continue;
    }
    
    // additional filtering on the KF pair (mass, chi2, etc.)
    // Gamma conversion inclusion cuts
    /*
    AliKFParticle* posKFGammaEle = (v0ChargesAreCorrect ? new AliKFParticle(*(v0->GetParamP()),-11) : new AliKFParticle(*(v0->GetParamN()),-11));
    AliKFParticle* negKFGammaEle = (v0ChargesAreCorrect ? new AliKFParticle(*(v0->GetParamN()),+11) : new AliKFParticle(*(v0->GetParamP()),+11));
    AliDielectronPair gammaPair;
    gammaPair.SetTracks(posKFGammaEle, negKFGammaEle, legPos, legNeg);
    gammaPair.SetType(1);
    if(fPairFilter && !fPairFilter->IsSelected(&gammaPair)) continue;
    */
    /*
    // Lambda exclusion cuts
    AliKFParticle* posKFLambdaPro = (v0ChargesAreCorrect ? new AliKFParticle(*(v0->GetParamP()),2212) : new AliKFParticle(*(v0->GetParamN()),2212));
    AliKFParticle* negKFLambdaPio = (v0ChargesAreCorrect ? new AliKFParticle(*(v0->GetParamN()),-211) : new AliKFParticle(*(v0->GetParamP()),-211));
    AliDielectronPair lambdaPair;
    lambdaPair.SetTracks(posKFLambdaPro, negKFLambdaPio, legPos, legNeg);
    lambdaPair.SetType(1);
    if(fLambdaFilter && fLambdaFilter->IsSelected(&lambdaPair)) continue;
    // Anti-Lambda exclusion cuts
    AliKFParticle* posKFALambdaPio = (v0ChargesAreCorrect ? new AliKFParticle(*(v0->GetParamP()),211) : new AliKFParticle(*(v0->GetParamN()),211));
    AliKFParticle* negKFALambdaPro = (v0ChargesAreCorrect ? new AliKFParticle(*(v0->GetParamN()),-2212) : new AliKFParticle(*(v0->GetParamP()),-2212));
    AliDielectronPair alambdaPair;
    alambdaPair.SetTracks(posKFALambdaPio, negKFALambdaPro, legPos, legNeg);
    alambdaPair.SetType(1);
    if(fLambdaFilter && fLambdaFilter->IsSelected(&alambdaPair)) continue;
    // K0s exclusion cuts
    AliKFParticle* posKFK0sPio = (v0ChargesAreCorrect ? new AliKFParticle(*(v0->GetParamP()),211) : new AliKFParticle(*(v0->GetParamN()),211));
    AliKFParticle* negKFK0sPio = (v0ChargesAreCorrect ? new AliKFParticle(*(v0->GetParamN()),-211) : new AliKFParticle(*(v0->GetParamP()),-211));
    AliDielectronPair k0sPair;
    k0sPair.SetTracks(posKFK0sPio, negKFK0sPio, legPos, legNeg);
    k0sPair.SetType(1);
    if(fK0sFilter && fK0sFilter->IsSelected(&k0sPair)) continue;
    */
    
    //  Fill histograms and the CF container
    AliDielectronVarManager::Fill(legPos, valuesPos);
    AliDielectronVarManager::Fill(legNeg, valuesNeg);
    
    if(fHistos && fHistos->GetHistogramList()->FindObject("Track_Pos"))
      fHistos->FillClass("Track_Pos", AliDielectronVarManager::kNMaxValues, valuesPos);
    if(fHistos && fHistos->GetHistogramList()->FindObject("Track_Neg"))
      fHistos->FillClass("Track_Neg", AliDielectronVarManager::kNMaxValues, valuesNeg);
    
    AliDielectronVarManager::Fill(&pair, valuesPair);
    if(fHistos && fHistos->GetHistogramList()->FindObject(Form("Pair_%s",AliDielectron::PairClassName(1))))
      fHistos->FillClass(Form("Pair_%s",AliDielectron::PairClassName(1)), AliDielectronVarManager::kNMaxValues, valuesPair);
    
    if(valuesPos[AliDielectronVarManager::kPOut]>=0.5)
      FillContainer(0, valuesPos, (v0ChargesAreCorrect ? v0->GetPindex() : v0->GetNindex()), (v0ChargesAreCorrect ? pdgP : pdgN));
    if(valuesNeg[AliDielectronVarManager::kPOut]>=0.5)
      FillContainer(0, valuesNeg, (v0ChargesAreCorrect ? v0->GetNindex() : v0->GetPindex()), (v0ChargesAreCorrect ? pdgN : pdgP));
  }   // end loop over online V0s

  //delete gammaPair;

  PostData(1, fCfContainer);
  PostData(2, &fHistogramList);
  PostData(3, fEventStat);
}

//_________________________________________________________________________________
void AliAnalysisTaskSingleParticle::FinishTaskOutput()
{
  //
  //
  //
}


//_________________________________________________________________________________
void AliAnalysisTaskSingleParticle::FillContainer(Int_t step, const Double_t* values, Int_t trackId, Int_t pdg) {
  //
  // Fill the CF container
  //
  Double_t valuesCF[kNMaxDimensions];
  for(Int_t i=0; i<fCFNVars; ++i) valuesCF[i] = values[fCFVarsEnabled[i]];
  
  Double_t pid = -1.0;
  if(TMath::Abs(pdg)==11)   pid = AliPID::kElectron;
  if(TMath::Abs(pdg)==13)   pid = AliPID::kMuon;
  if(TMath::Abs(pdg)==211)  pid = AliPID::kPion;
  if(TMath::Abs(pdg)==321)  pid = AliPID::kKaon;
  if(TMath::Abs(pdg)==2212) pid = AliPID::kProton;
  valuesCF[fCFNVars] = pid;
  
  if(fFillTRDfriendPH) {
    AliESDfriendTrack* friendTrk = fESDfriend->GetTrack(trackId);
    if(!friendTrk) return;
    if(values[AliDielectronVarManager::kTRDntracklets]>0.001) {
      TObject* o=0x0; Int_t ical = 0; 
      AliTRDtrackV1* trdTrack=0x0;
      while(1) {
	o = friendTrk->GetCalibObject(ical++);
	if(!o) break;
	TString objName = o->IsA()->GetName();
	if(!objName.Contains("AliTRDtrackV1")) continue;
	trdTrack = dynamic_cast<AliTRDtrackV1*>(o);
	break;
      }
      if(!trdTrack) return;
      
      Double_t charge = 0.0;
      for(Int_t ipl = 0; ipl < 6; ipl++) {  // loop over TRD layers
	AliTRDseedV1 *tracklet = trdTrack->GetTracklet(ipl);
	if(!tracklet) continue;
	if(!tracklet->IsOK()) continue;
	valuesCF[fCFNVars+1] = tracklet->GetMomentum();
	valuesCF[fCFNVars+2] = tracklet->GetDetector();
	charge = 0.0;
	for(Int_t itb = 0; itb < AliTRDseedV1::kNtb; itb++){
	  AliTRDcluster *c = tracklet->GetClusters(itb);
	  AliTRDcluster *c1 = tracklet->GetClusters(itb + AliTRDseedV1::kNtb);  // second pad row
	  if(c) charge += TMath::Abs(c->GetQ()); //
	  if(c1) charge += TMath::Abs(c1->GetQ());
	}
	valuesCF[fCFNVars+5] = charge;
	
	for(Int_t itb = 0; itb < AliTRDseedV1::kNtb; itb++){
	  AliTRDcluster *c = tracklet->GetClusters(itb);
	  AliTRDcluster *c1 = tracklet->GetClusters(itb + AliTRDseedV1::kNtb);  // second pad row
	  if(!(c || c1)) continue;
	  AliTRDcluster *cptr = (c ? c : c1);
	  Int_t tcal = cptr->GetLocalTimeBin();
	  Float_t sig = 0;
	  if(c) sig += TMath::Abs(c->GetQ()); //
	  if(c1) sig += TMath::Abs(c1->GetQ());
	  valuesCF[fCFNVars+3] = tcal;
	  valuesCF[fCFNVars+4] = sig;
	  
	  fCfContainer->Fill(valuesCF, step);
	}        // end loop over time bins
      }       // end loop over tracklets
    }      // end if track has TRD tracklets
  }     // end if fill TRD friend PH
  if(!fFillTRDfriendPH)
    fCfContainer->Fill(valuesCF, step);
}

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