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

///////////////////////////////////////////////////////////////////////////
//                                                                       //
//                        Basic Analysis Task                            //
//                      for PID        Analysis                          //
//                                                                       //
///////////////////////////////////////////////////////////////////////////

#include <TChain.h>
#include <TH1D.h>
#include <TH2D.h>

#include <AliVEvent.h>
#include <AliInputEventHandler.h>
#include <AliAnalysisManager.h>

#include <AliLog.h>
#include <AliPID.h>
#include <AliPIDCombined.h>
#include <AliPIDResponse.h>

#include "AliAnalysisTaskPIDCombined.h"

const char *AliAnalysisTaskPIDCombined::fgkBinMomDesc[AliAnalysisTaskPIDCombined::kPtBins] = {
  " 0 <= p < 0.5 GeV/c",
  " 0.5 <= p < 0.7 GeV/c",
  " 0.7 <= p < 1.0 GeV/c",
  " 1.0 <= p < 1.5 GeV/c",
  " 1.5 <= p < 2.0 GeV/c",
  " p >= 2.0 GeV/c"
};

ClassImp(AliAnalysisTaskPIDCombined)

//_________________________________________________________________________________
AliAnalysisTaskPIDCombined::AliAnalysisTaskPIDCombined() :
  AliAnalysisTaskSE(),
  fHistList(),
  fProbTPCnSigma(),
  fProbTOFnSigma(),
  fProbTPCTOFnSigmaTPC(),
  fProbTPC(),
  fProbTOF(),
  fProbTPCTOF(),
  fPriors(),
  fProbTPCTOFnSigTPCMom(),
  fProbTPCnSigTPCMom(),
  fProbTOFnSigTOFMom(),
  fPriorsUsed(),
  fPIDResponse(0x0),
  fPIDCombined(0x0),
  fTrackCuts(0x0),
  fTrackFilter(0x0),
  fDeDx(NULL),
  fDeDxTuned(NULL)
{
  //
  // Constructor
  //
}

//_________________________________________________________________________________
AliAnalysisTaskPIDCombined::AliAnalysisTaskPIDCombined(const char *name) :
  AliAnalysisTaskSE(name),
  fHistList(),
  fProbTPCnSigma(),
  fProbTOFnSigma(),
  fProbTPCTOFnSigmaTPC(),
  fProbTPC(),
  fProbTOF(),
  fProbTPCTOF(),
  fPriors(),
  fProbTPCTOFnSigTPCMom(),
  fProbTPCnSigTPCMom(),
  fProbTOFnSigTOFMom(),
  fPriorsUsed(),
  fPIDResponse(0x0),
  fPIDCombined(0x0),
  fTrackCuts(0x0),
  fTrackFilter(0x0),
  fDeDx(NULL),
  fDeDxTuned(NULL)
{
  //
  // Constructor
  //
  DefineInput(0,TChain::Class());
  DefineOutput(1, TList::Class());
}

//_________________________________________________________________________________
void AliAnalysisTaskPIDCombined::UserCreateOutputObjects()
{
  //
  // Initialise the framework objects
  //


  // ------- track cuts
  fTrackCuts = new AliESDtrackCuts("fTrackCuts", "Standard");
  fTrackCuts->SetAcceptKinkDaughters(kFALSE);
  fTrackCuts->SetMinNClustersTPC(80);
  fTrackCuts->SetMaxChi2PerClusterTPC(4);
  fTrackCuts->SetMaxDCAToVertexXY(3);
  fTrackCuts->SetMaxDCAToVertexZ(3);
  fTrackCuts->SetRequireTPCRefit(kTRUE);
  fTrackCuts->SetRequireITSRefit(kTRUE);
  fTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny);
  fTrackFilter = new AliAnalysisFilter("trackFilter");
  fTrackFilter->AddCuts(fTrackCuts);



  // ------- setup PIDCombined
  fPIDCombined=new AliPIDCombined;
  fPIDCombined->SetDefaultTPCPriors();
  fPIDCombined->SetDetectorMask(AliPIDResponse::kDetTPC+AliPIDResponse::kDetTOF);

  // no light nuclei - no need to call it, this is default
  //  fPIDCombined->SetSelectedSpecies(AliPID::kSPECIES);


  fHistList.Add(new TH1D("nEvents","Number of Evnets;Selection",2,0,2));

  for (Int_t ispec=0; ispec<5; ++ispec){

 
    fProbTPC[ispec]=new TH2D(Form("prob%s_mom_TPC",AliPID::ParticleName(ispec)),
                                   Form("%s probability vs. momentum;momentum;probability",AliPID::ParticleName(ispec)),
                                   100,0.,20.,50,0.,1.);
    fHistList.Add(fProbTPC[ispec]);
    fProbTPCnSigma[ispec]=new TH2D(Form("prob%s_nSigma_TPC",AliPID::ParticleName(ispec)),
                                   Form("%s probability vs. n#sigma;n#sigma;probability",AliPID::ParticleName(ispec)),
                                   20,-5.,5.,50,0.,1.);
    fHistList.Add(fProbTPCnSigma[ispec]);

    for (Int_t ibin=0;ibin<kPtBins;ibin++) {
      fProbTPCnSigTPCMom[ibin][ispec]=new TH2D(Form("prob%s_nSigma_TPC (%s)",AliPID::ParticleName(ispec),fgkBinMomDesc[ibin]),
					       Form("%s probability vs. n#sigma;n#sigma;probability",AliPID::ParticleName(ispec)),
					       20,-5.,5.,50,0.,1.);
      fHistList.Add(fProbTPCnSigTPCMom[ibin][ispec]);
    }



    fProbTOF[ispec]=new TH2D(Form("prob%s_mom_TOF",AliPID::ParticleName(ispec)),
                                   Form("%s probability vs. momentum;momentum;probability",AliPID::ParticleName(ispec)),
                                   100,0.,20.,50,0.,1.);
    fHistList.Add(fProbTOF[ispec]);
    fProbTOFnSigma[ispec]=new TH2D(Form("prob%s_nSigma_TOF",AliPID::ParticleName(ispec)),
                                   Form("%s probability vs. n#sigma;n#sigma;probability",AliPID::ParticleName(ispec)),
                                   20,-5.,5.,50,0.,1.);
    fHistList.Add(fProbTOFnSigma[ispec]);
    for (Int_t ibin=0;ibin<kPtBins;ibin++) {
      fProbTOFnSigTOFMom[ibin][ispec]=new TH2D(Form("prob%s_nSigma_TOF (%s)",AliPID::ParticleName(ispec),fgkBinMomDesc[ibin]),
					       Form("%s probability vs. n#sigma;n#sigma;probability",AliPID::ParticleName(ispec)),
					       20,-5.,5.,50,0.,1.);
      fHistList.Add(fProbTOFnSigTOFMom[ibin][ispec]);
    }



    fProbTPCTOF[ispec]=new TH2D(Form("prob%s_mom_TPCTOF",AliPID::ParticleName(ispec)),
                                   Form("%s probability vs. momentum;momentum;probability",AliPID::ParticleName(ispec)),
                                   100,0.,20.,50,0.,1.);
    fHistList.Add(fProbTPCTOF[ispec]);
    fProbTPCTOFnSigmaTPC[ispec]=new TH2D(Form("probTPCTOF%s_nSigma_TPC",AliPID::ParticleName(ispec)),
                                   Form("%s TPCTOF probability vs. n#sigmaTPC;n#sigma;probability",AliPID::ParticleName(ispec)),
                                   20,-5.,5.,50,0.,1.);
    fHistList.Add(fProbTPCTOFnSigmaTPC[ispec]);
    for (Int_t ibin=0;ibin<kPtBins;ibin++) {
      fProbTPCTOFnSigTPCMom[ibin][ispec]=new TH2D(Form("probTPCTOF%s_nSigma_TPC (%s)",AliPID::ParticleName(ispec),fgkBinMomDesc[ibin]),
					       Form("%s probability vs. n#sigma;n#sigma;probability",AliPID::ParticleName(ispec)),
					       20,-5.,5.,50,0.,1.);
      fHistList.Add(fProbTPCTOFnSigTPCMom[ibin][ispec]);
    }



    // basic priors
    fPriors[ispec]=new TH1F(Form("%s_priors",AliPID::ParticleName(ispec)),
			    Form("%s priors vs momentum",AliPID::ParticleName(ispec)),
			    100,0.,20.);
    fHistList.Add(fPriors[ispec]);
    switch (ispec) {
    case AliPID::kElectron:
      for (Int_t ich=1;ich<=100;ich++) fPriors[ispec]->SetBinContent(ich,0.02);
      break;
    case AliPID::kMuon:
      for (Int_t ich=1;ich<=100;ich++) fPriors[ispec]->SetBinContent(ich,0.02);
      break;
    case AliPID::kPion:
      for (Int_t ich=1;ich<=100;ich++) fPriors[ispec]->SetBinContent(ich,0.56);
      break;
    case AliPID::kKaon:
      for (Int_t ich=1;ich<=100;ich++) fPriors[ispec]->SetBinContent(ich,0.20);
      break;
    case AliPID::kProton:
      for (Int_t ich=1;ich<=100;ich++) fPriors[ispec]->SetBinContent(ich,0.20);
      break;
    default:
      break;
    }
    fPIDCombined->SetPriorDistribution((AliPID::EParticleType)ispec,fPriors[ispec]);

    // priors used
    fPriorsUsed[ispec] = new TH2D(Form("%s_priorsUsed",AliPID::ParticleName(ispec)),
			    Form("%s priors vs transverse momentum;p_{t} (GeV/c);priors",AliPID::ParticleName(ispec)),
				  100,0.,20.,101,0,1.01);      
    fHistList.Add(fPriorsUsed[ispec]);
  }


  fDeDx = new TH2D("hDeDx",";p_{TPC};dE/dx (a.u.)",500,0,5,500,0,500);
  fHistList.Add(fDeDx);
  fDeDxTuned = new TH2D("hDeDxTuned",";p_{TPC};dE/dx (a.u.)",500,0,5,500,0,500);
  fHistList.Add(fDeDxTuned);

  fHistList.SetOwner();
  PostData(1,&fHistList);


}

//_________________________________________________________________________________
void AliAnalysisTaskPIDCombined::UserExec(Option_t *)
{
  //
  // Main loop. Called for every event
  //
  AliAnalysisManager *man=AliAnalysisManager::GetAnalysisManager();
  AliInputEventHandler* inputHandler = (AliInputEventHandler*) (man->GetInputEventHandler());
  fPIDResponse=inputHandler->GetPIDResponse();
  if (!fPIDResponse) AliFatal("This Task needs the PID response attached to the inputHandler");

  //  Printf(" ---------------------- UserExec PID task ---------------------");
  
  FillHistogram("nEvents",0.);

  AliVEvent *event=InputEvent();
  AliVTrack *track=0x0;
  Int_t ntracks=event->GetNumberOfTracks();

  Double_t probTPC[AliPID::kSPECIES]={0.};
  Double_t probTOF[AliPID::kSPECIES]={0.};
  Double_t probTPCTOF[AliPID::kSPECIES]={0.};
  
  //loop over all tracks
  for (Int_t itrack=0; itrack<ntracks; ++itrack){

    track=(AliVTrack*)event->GetTrack(itrack);

    if ( fTrackFilter->IsSelected(track) ) {

      Double_t mom=track->GetTPCmomentum();
      Int_t ibin=GetMomBin(mom);

      fPIDCombined->SetDetectorMask(AliPIDResponse::kDetTPC);
      UInt_t detUsed = fPIDCombined->ComputeProbabilities(track, fPIDResponse, probTPC);
     
      if (detUsed != 0) {  // TPC is available
	for (Int_t ispec=0; ispec<AliPID::kSPECIES; ++ispec) {
	  Double_t nSigmaTPC = fPIDResponse->NumberOfSigmasTPC(track,(AliPID::EParticleType)ispec);
	  fProbTPC[ispec]->Fill(mom,probTPC[ispec]);
	  fProbTPCnSigma[ispec]->Fill(nSigmaTPC,probTPC[ispec]);
	  fProbTPCnSigTPCMom[ibin][ispec]->Fill(nSigmaTPC,probTPC[ispec]);
	}

	// compute priors for TPC+TOF, even if we ask just TOF for PID
	fPIDCombined->SetDetectorMask(AliPIDResponse::kDetTOF);
	detUsed = fPIDCombined->ComputeProbabilities(track, fPIDResponse, probTOF);
	Double_t priors[5]; 	// check priors used for TOF
	fPIDCombined->GetPriors(track,priors,fPIDResponse,detUsed);
	for(Int_t ispec=0;ispec<5;ispec++) fPriorsUsed[ispec]->Fill(TMath::Abs(track->Pt()),priors[ispec]);

	if (detUsed != 0) {  // TOF is available
	  for (Int_t ispec=0; ispec<AliPID::kSPECIES; ++ispec) {
	    Double_t nSigmaTOF = fPIDResponse->NumberOfSigmasTOF(track,(AliPID::EParticleType)ispec);
	    fProbTOF[ispec]->Fill(mom,probTOF[ispec]);
	    fProbTOFnSigma[ispec]->Fill(nSigmaTOF,probTOF[ispec]);
	    fProbTOFnSigTOFMom[ibin][ispec]->Fill(nSigmaTOF,probTOF[ispec]);
	  }
	}

	fPIDCombined->SetDetectorMask(AliPIDResponse::kDetTOF|AliPIDResponse::kDetTPC);
	detUsed = fPIDCombined->ComputeProbabilities(track, fPIDResponse, probTPCTOF);
	if (detUsed == (UInt_t)fPIDCombined->GetDetectorMask() ) {
	  for (Int_t ispec=0; ispec<AliPID::kSPECIES; ++ispec) {
	    Double_t nSigmaTPC = fPIDResponse->NumberOfSigmasTPC(track,(AliPID::EParticleType)ispec);
	    fProbTPCTOF[ispec]->Fill(mom,probTPCTOF[ispec]);
	    fProbTPCTOFnSigmaTPC[ispec]->Fill(nSigmaTPC,probTPCTOF[ispec]);
	    fProbTPCTOFnSigTPCMom[ibin][ispec]->Fill(nSigmaTPC,probTPCTOF[ispec]);
	  }
	}

      }

      fPIDResponse->GetTPCsignalTunedOnData(track);

      fDeDx->Fill(mom,track->GetTPCsignal());
      fDeDxTuned->Fill(mom,track->GetTPCsignalTunedOnData());

    }
  }

  PostData(1, &fHistList);
}

//_________________________________________________________________________________
void AliAnalysisTaskPIDCombined::FillHistogram(const char* name, Double_t x, Double_t weight)
{
  //
  // Fill 1D histogram by name
  //
  ((TH1*)fHistList.FindObject(name))->Fill(x,weight);
}

//_________________________________________________________________________________
void AliAnalysisTaskPIDCombined::FillHistogram(const char* name, Double_t x, Double_t y, Double_t weight)
{
  //
  // Fill 2D histogram by name
  //
  ((TH2*)fHistList.FindObject(name))->Fill(x,y,weight);
}


//_________________________________________________________________________________
Int_t AliAnalysisTaskPIDCombined::GetMomBin(Float_t mom)
{
  //
  // Given momentum return histogram to be filled
  //
  if (mom>0. && mom < 0.5) return 0;
  if (mom>=0.5 && mom < 0.7) return 1;
  if (mom>=0.7 && mom < 1.0) return 2;
  if (mom>=1.0 && mom < 1.5) return 3;
  if (mom>=1.5 && mom < 2.0) return 4;
  return kPtBins-1;
}

 AliAnalysisTaskPIDCombined.cxx:1
 AliAnalysisTaskPIDCombined.cxx:2
 AliAnalysisTaskPIDCombined.cxx:3
 AliAnalysisTaskPIDCombined.cxx:4
 AliAnalysisTaskPIDCombined.cxx:5
 AliAnalysisTaskPIDCombined.cxx:6
 AliAnalysisTaskPIDCombined.cxx:7
 AliAnalysisTaskPIDCombined.cxx:8
 AliAnalysisTaskPIDCombined.cxx:9
 AliAnalysisTaskPIDCombined.cxx:10
 AliAnalysisTaskPIDCombined.cxx:11
 AliAnalysisTaskPIDCombined.cxx:12
 AliAnalysisTaskPIDCombined.cxx:13
 AliAnalysisTaskPIDCombined.cxx:14
 AliAnalysisTaskPIDCombined.cxx:15
 AliAnalysisTaskPIDCombined.cxx:16
 AliAnalysisTaskPIDCombined.cxx:17
 AliAnalysisTaskPIDCombined.cxx:18
 AliAnalysisTaskPIDCombined.cxx:19
 AliAnalysisTaskPIDCombined.cxx:20
 AliAnalysisTaskPIDCombined.cxx:21
 AliAnalysisTaskPIDCombined.cxx:22
 AliAnalysisTaskPIDCombined.cxx:23
 AliAnalysisTaskPIDCombined.cxx:24
 AliAnalysisTaskPIDCombined.cxx:25
 AliAnalysisTaskPIDCombined.cxx:26
 AliAnalysisTaskPIDCombined.cxx:27
 AliAnalysisTaskPIDCombined.cxx:28
 AliAnalysisTaskPIDCombined.cxx:29
 AliAnalysisTaskPIDCombined.cxx:30
 AliAnalysisTaskPIDCombined.cxx:31
 AliAnalysisTaskPIDCombined.cxx:32
 AliAnalysisTaskPIDCombined.cxx:33
 AliAnalysisTaskPIDCombined.cxx:34
 AliAnalysisTaskPIDCombined.cxx:35
 AliAnalysisTaskPIDCombined.cxx:36
 AliAnalysisTaskPIDCombined.cxx:37
 AliAnalysisTaskPIDCombined.cxx:38
 AliAnalysisTaskPIDCombined.cxx:39
 AliAnalysisTaskPIDCombined.cxx:40
 AliAnalysisTaskPIDCombined.cxx:41
 AliAnalysisTaskPIDCombined.cxx:42
 AliAnalysisTaskPIDCombined.cxx:43
 AliAnalysisTaskPIDCombined.cxx:44
 AliAnalysisTaskPIDCombined.cxx:45
 AliAnalysisTaskPIDCombined.cxx:46
 AliAnalysisTaskPIDCombined.cxx:47
 AliAnalysisTaskPIDCombined.cxx:48
 AliAnalysisTaskPIDCombined.cxx:49
 AliAnalysisTaskPIDCombined.cxx:50
 AliAnalysisTaskPIDCombined.cxx:51
 AliAnalysisTaskPIDCombined.cxx:52
 AliAnalysisTaskPIDCombined.cxx:53
 AliAnalysisTaskPIDCombined.cxx:54
 AliAnalysisTaskPIDCombined.cxx:55
 AliAnalysisTaskPIDCombined.cxx:56
 AliAnalysisTaskPIDCombined.cxx:57
 AliAnalysisTaskPIDCombined.cxx:58
 AliAnalysisTaskPIDCombined.cxx:59
 AliAnalysisTaskPIDCombined.cxx:60
 AliAnalysisTaskPIDCombined.cxx:61
 AliAnalysisTaskPIDCombined.cxx:62
 AliAnalysisTaskPIDCombined.cxx:63
 AliAnalysisTaskPIDCombined.cxx:64
 AliAnalysisTaskPIDCombined.cxx:65
 AliAnalysisTaskPIDCombined.cxx:66
 AliAnalysisTaskPIDCombined.cxx:67
 AliAnalysisTaskPIDCombined.cxx:68
 AliAnalysisTaskPIDCombined.cxx:69
 AliAnalysisTaskPIDCombined.cxx:70
 AliAnalysisTaskPIDCombined.cxx:71
 AliAnalysisTaskPIDCombined.cxx:72
 AliAnalysisTaskPIDCombined.cxx:73
 AliAnalysisTaskPIDCombined.cxx:74
 AliAnalysisTaskPIDCombined.cxx:75
 AliAnalysisTaskPIDCombined.cxx:76
 AliAnalysisTaskPIDCombined.cxx:77
 AliAnalysisTaskPIDCombined.cxx:78
 AliAnalysisTaskPIDCombined.cxx:79
 AliAnalysisTaskPIDCombined.cxx:80
 AliAnalysisTaskPIDCombined.cxx:81
 AliAnalysisTaskPIDCombined.cxx:82
 AliAnalysisTaskPIDCombined.cxx:83
 AliAnalysisTaskPIDCombined.cxx:84
 AliAnalysisTaskPIDCombined.cxx:85
 AliAnalysisTaskPIDCombined.cxx:86
 AliAnalysisTaskPIDCombined.cxx:87
 AliAnalysisTaskPIDCombined.cxx:88
 AliAnalysisTaskPIDCombined.cxx:89
 AliAnalysisTaskPIDCombined.cxx:90
 AliAnalysisTaskPIDCombined.cxx:91
 AliAnalysisTaskPIDCombined.cxx:92
 AliAnalysisTaskPIDCombined.cxx:93
 AliAnalysisTaskPIDCombined.cxx:94
 AliAnalysisTaskPIDCombined.cxx:95
 AliAnalysisTaskPIDCombined.cxx:96
 AliAnalysisTaskPIDCombined.cxx:97
 AliAnalysisTaskPIDCombined.cxx:98
 AliAnalysisTaskPIDCombined.cxx:99
 AliAnalysisTaskPIDCombined.cxx:100
 AliAnalysisTaskPIDCombined.cxx:101
 AliAnalysisTaskPIDCombined.cxx:102
 AliAnalysisTaskPIDCombined.cxx:103
 AliAnalysisTaskPIDCombined.cxx:104
 AliAnalysisTaskPIDCombined.cxx:105
 AliAnalysisTaskPIDCombined.cxx:106
 AliAnalysisTaskPIDCombined.cxx:107
 AliAnalysisTaskPIDCombined.cxx:108
 AliAnalysisTaskPIDCombined.cxx:109
 AliAnalysisTaskPIDCombined.cxx:110
 AliAnalysisTaskPIDCombined.cxx:111
 AliAnalysisTaskPIDCombined.cxx:112
 AliAnalysisTaskPIDCombined.cxx:113
 AliAnalysisTaskPIDCombined.cxx:114
 AliAnalysisTaskPIDCombined.cxx:115
 AliAnalysisTaskPIDCombined.cxx:116
 AliAnalysisTaskPIDCombined.cxx:117
 AliAnalysisTaskPIDCombined.cxx:118
 AliAnalysisTaskPIDCombined.cxx:119
 AliAnalysisTaskPIDCombined.cxx:120
 AliAnalysisTaskPIDCombined.cxx:121
 AliAnalysisTaskPIDCombined.cxx:122
 AliAnalysisTaskPIDCombined.cxx:123
 AliAnalysisTaskPIDCombined.cxx:124
 AliAnalysisTaskPIDCombined.cxx:125
 AliAnalysisTaskPIDCombined.cxx:126
 AliAnalysisTaskPIDCombined.cxx:127
 AliAnalysisTaskPIDCombined.cxx:128
 AliAnalysisTaskPIDCombined.cxx:129
 AliAnalysisTaskPIDCombined.cxx:130
 AliAnalysisTaskPIDCombined.cxx:131
 AliAnalysisTaskPIDCombined.cxx:132
 AliAnalysisTaskPIDCombined.cxx:133
 AliAnalysisTaskPIDCombined.cxx:134
 AliAnalysisTaskPIDCombined.cxx:135
 AliAnalysisTaskPIDCombined.cxx:136
 AliAnalysisTaskPIDCombined.cxx:137
 AliAnalysisTaskPIDCombined.cxx:138
 AliAnalysisTaskPIDCombined.cxx:139
 AliAnalysisTaskPIDCombined.cxx:140
 AliAnalysisTaskPIDCombined.cxx:141
 AliAnalysisTaskPIDCombined.cxx:142
 AliAnalysisTaskPIDCombined.cxx:143
 AliAnalysisTaskPIDCombined.cxx:144
 AliAnalysisTaskPIDCombined.cxx:145
 AliAnalysisTaskPIDCombined.cxx:146
 AliAnalysisTaskPIDCombined.cxx:147
 AliAnalysisTaskPIDCombined.cxx:148
 AliAnalysisTaskPIDCombined.cxx:149
 AliAnalysisTaskPIDCombined.cxx:150
 AliAnalysisTaskPIDCombined.cxx:151
 AliAnalysisTaskPIDCombined.cxx:152
 AliAnalysisTaskPIDCombined.cxx:153
 AliAnalysisTaskPIDCombined.cxx:154
 AliAnalysisTaskPIDCombined.cxx:155
 AliAnalysisTaskPIDCombined.cxx:156
 AliAnalysisTaskPIDCombined.cxx:157
 AliAnalysisTaskPIDCombined.cxx:158
 AliAnalysisTaskPIDCombined.cxx:159
 AliAnalysisTaskPIDCombined.cxx:160
 AliAnalysisTaskPIDCombined.cxx:161
 AliAnalysisTaskPIDCombined.cxx:162
 AliAnalysisTaskPIDCombined.cxx:163
 AliAnalysisTaskPIDCombined.cxx:164
 AliAnalysisTaskPIDCombined.cxx:165
 AliAnalysisTaskPIDCombined.cxx:166
 AliAnalysisTaskPIDCombined.cxx:167
 AliAnalysisTaskPIDCombined.cxx:168
 AliAnalysisTaskPIDCombined.cxx:169
 AliAnalysisTaskPIDCombined.cxx:170
 AliAnalysisTaskPIDCombined.cxx:171
 AliAnalysisTaskPIDCombined.cxx:172
 AliAnalysisTaskPIDCombined.cxx:173
 AliAnalysisTaskPIDCombined.cxx:174
 AliAnalysisTaskPIDCombined.cxx:175
 AliAnalysisTaskPIDCombined.cxx:176
 AliAnalysisTaskPIDCombined.cxx:177
 AliAnalysisTaskPIDCombined.cxx:178
 AliAnalysisTaskPIDCombined.cxx:179
 AliAnalysisTaskPIDCombined.cxx:180
 AliAnalysisTaskPIDCombined.cxx:181
 AliAnalysisTaskPIDCombined.cxx:182
 AliAnalysisTaskPIDCombined.cxx:183
 AliAnalysisTaskPIDCombined.cxx:184
 AliAnalysisTaskPIDCombined.cxx:185
 AliAnalysisTaskPIDCombined.cxx:186
 AliAnalysisTaskPIDCombined.cxx:187
 AliAnalysisTaskPIDCombined.cxx:188
 AliAnalysisTaskPIDCombined.cxx:189
 AliAnalysisTaskPIDCombined.cxx:190
 AliAnalysisTaskPIDCombined.cxx:191
 AliAnalysisTaskPIDCombined.cxx:192
 AliAnalysisTaskPIDCombined.cxx:193
 AliAnalysisTaskPIDCombined.cxx:194
 AliAnalysisTaskPIDCombined.cxx:195
 AliAnalysisTaskPIDCombined.cxx:196
 AliAnalysisTaskPIDCombined.cxx:197
 AliAnalysisTaskPIDCombined.cxx:198
 AliAnalysisTaskPIDCombined.cxx:199
 AliAnalysisTaskPIDCombined.cxx:200
 AliAnalysisTaskPIDCombined.cxx:201
 AliAnalysisTaskPIDCombined.cxx:202
 AliAnalysisTaskPIDCombined.cxx:203
 AliAnalysisTaskPIDCombined.cxx:204
 AliAnalysisTaskPIDCombined.cxx:205
 AliAnalysisTaskPIDCombined.cxx:206
 AliAnalysisTaskPIDCombined.cxx:207
 AliAnalysisTaskPIDCombined.cxx:208
 AliAnalysisTaskPIDCombined.cxx:209
 AliAnalysisTaskPIDCombined.cxx:210
 AliAnalysisTaskPIDCombined.cxx:211
 AliAnalysisTaskPIDCombined.cxx:212
 AliAnalysisTaskPIDCombined.cxx:213
 AliAnalysisTaskPIDCombined.cxx:214
 AliAnalysisTaskPIDCombined.cxx:215
 AliAnalysisTaskPIDCombined.cxx:216
 AliAnalysisTaskPIDCombined.cxx:217
 AliAnalysisTaskPIDCombined.cxx:218
 AliAnalysisTaskPIDCombined.cxx:219
 AliAnalysisTaskPIDCombined.cxx:220
 AliAnalysisTaskPIDCombined.cxx:221
 AliAnalysisTaskPIDCombined.cxx:222
 AliAnalysisTaskPIDCombined.cxx:223
 AliAnalysisTaskPIDCombined.cxx:224
 AliAnalysisTaskPIDCombined.cxx:225
 AliAnalysisTaskPIDCombined.cxx:226
 AliAnalysisTaskPIDCombined.cxx:227
 AliAnalysisTaskPIDCombined.cxx:228
 AliAnalysisTaskPIDCombined.cxx:229
 AliAnalysisTaskPIDCombined.cxx:230
 AliAnalysisTaskPIDCombined.cxx:231
 AliAnalysisTaskPIDCombined.cxx:232
 AliAnalysisTaskPIDCombined.cxx:233
 AliAnalysisTaskPIDCombined.cxx:234
 AliAnalysisTaskPIDCombined.cxx:235
 AliAnalysisTaskPIDCombined.cxx:236
 AliAnalysisTaskPIDCombined.cxx:237
 AliAnalysisTaskPIDCombined.cxx:238
 AliAnalysisTaskPIDCombined.cxx:239
 AliAnalysisTaskPIDCombined.cxx:240
 AliAnalysisTaskPIDCombined.cxx:241
 AliAnalysisTaskPIDCombined.cxx:242
 AliAnalysisTaskPIDCombined.cxx:243
 AliAnalysisTaskPIDCombined.cxx:244
 AliAnalysisTaskPIDCombined.cxx:245
 AliAnalysisTaskPIDCombined.cxx:246
 AliAnalysisTaskPIDCombined.cxx:247
 AliAnalysisTaskPIDCombined.cxx:248
 AliAnalysisTaskPIDCombined.cxx:249
 AliAnalysisTaskPIDCombined.cxx:250
 AliAnalysisTaskPIDCombined.cxx:251
 AliAnalysisTaskPIDCombined.cxx:252
 AliAnalysisTaskPIDCombined.cxx:253
 AliAnalysisTaskPIDCombined.cxx:254
 AliAnalysisTaskPIDCombined.cxx:255
 AliAnalysisTaskPIDCombined.cxx:256
 AliAnalysisTaskPIDCombined.cxx:257
 AliAnalysisTaskPIDCombined.cxx:258
 AliAnalysisTaskPIDCombined.cxx:259
 AliAnalysisTaskPIDCombined.cxx:260
 AliAnalysisTaskPIDCombined.cxx:261
 AliAnalysisTaskPIDCombined.cxx:262
 AliAnalysisTaskPIDCombined.cxx:263
 AliAnalysisTaskPIDCombined.cxx:264
 AliAnalysisTaskPIDCombined.cxx:265
 AliAnalysisTaskPIDCombined.cxx:266
 AliAnalysisTaskPIDCombined.cxx:267
 AliAnalysisTaskPIDCombined.cxx:268
 AliAnalysisTaskPIDCombined.cxx:269
 AliAnalysisTaskPIDCombined.cxx:270
 AliAnalysisTaskPIDCombined.cxx:271
 AliAnalysisTaskPIDCombined.cxx:272
 AliAnalysisTaskPIDCombined.cxx:273
 AliAnalysisTaskPIDCombined.cxx:274
 AliAnalysisTaskPIDCombined.cxx:275
 AliAnalysisTaskPIDCombined.cxx:276
 AliAnalysisTaskPIDCombined.cxx:277
 AliAnalysisTaskPIDCombined.cxx:278
 AliAnalysisTaskPIDCombined.cxx:279
 AliAnalysisTaskPIDCombined.cxx:280
 AliAnalysisTaskPIDCombined.cxx:281
 AliAnalysisTaskPIDCombined.cxx:282
 AliAnalysisTaskPIDCombined.cxx:283
 AliAnalysisTaskPIDCombined.cxx:284
 AliAnalysisTaskPIDCombined.cxx:285
 AliAnalysisTaskPIDCombined.cxx:286
 AliAnalysisTaskPIDCombined.cxx:287
 AliAnalysisTaskPIDCombined.cxx:288
 AliAnalysisTaskPIDCombined.cxx:289
 AliAnalysisTaskPIDCombined.cxx:290
 AliAnalysisTaskPIDCombined.cxx:291
 AliAnalysisTaskPIDCombined.cxx:292
 AliAnalysisTaskPIDCombined.cxx:293
 AliAnalysisTaskPIDCombined.cxx:294
 AliAnalysisTaskPIDCombined.cxx:295
 AliAnalysisTaskPIDCombined.cxx:296
 AliAnalysisTaskPIDCombined.cxx:297
 AliAnalysisTaskPIDCombined.cxx:298
 AliAnalysisTaskPIDCombined.cxx:299
 AliAnalysisTaskPIDCombined.cxx:300
 AliAnalysisTaskPIDCombined.cxx:301
 AliAnalysisTaskPIDCombined.cxx:302
 AliAnalysisTaskPIDCombined.cxx:303
 AliAnalysisTaskPIDCombined.cxx:304
 AliAnalysisTaskPIDCombined.cxx:305
 AliAnalysisTaskPIDCombined.cxx:306
 AliAnalysisTaskPIDCombined.cxx:307
 AliAnalysisTaskPIDCombined.cxx:308
 AliAnalysisTaskPIDCombined.cxx:309
 AliAnalysisTaskPIDCombined.cxx:310
 AliAnalysisTaskPIDCombined.cxx:311
 AliAnalysisTaskPIDCombined.cxx:312
 AliAnalysisTaskPIDCombined.cxx:313
 AliAnalysisTaskPIDCombined.cxx:314
 AliAnalysisTaskPIDCombined.cxx:315
 AliAnalysisTaskPIDCombined.cxx:316
 AliAnalysisTaskPIDCombined.cxx:317
 AliAnalysisTaskPIDCombined.cxx:318
 AliAnalysisTaskPIDCombined.cxx:319
 AliAnalysisTaskPIDCombined.cxx:320
 AliAnalysisTaskPIDCombined.cxx:321
 AliAnalysisTaskPIDCombined.cxx:322
 AliAnalysisTaskPIDCombined.cxx:323
 AliAnalysisTaskPIDCombined.cxx:324
 AliAnalysisTaskPIDCombined.cxx:325
 AliAnalysisTaskPIDCombined.cxx:326
 AliAnalysisTaskPIDCombined.cxx:327
 AliAnalysisTaskPIDCombined.cxx:328
 AliAnalysisTaskPIDCombined.cxx:329
 AliAnalysisTaskPIDCombined.cxx:330
 AliAnalysisTaskPIDCombined.cxx:331
 AliAnalysisTaskPIDCombined.cxx:332
 AliAnalysisTaskPIDCombined.cxx:333
 AliAnalysisTaskPIDCombined.cxx:334
 AliAnalysisTaskPIDCombined.cxx:335
 AliAnalysisTaskPIDCombined.cxx:336
 AliAnalysisTaskPIDCombined.cxx:337
 AliAnalysisTaskPIDCombined.cxx:338
 AliAnalysisTaskPIDCombined.cxx:339
 AliAnalysisTaskPIDCombined.cxx:340
 AliAnalysisTaskPIDCombined.cxx:341
 AliAnalysisTaskPIDCombined.cxx:342
 AliAnalysisTaskPIDCombined.cxx:343
 AliAnalysisTaskPIDCombined.cxx:344
 AliAnalysisTaskPIDCombined.cxx:345
 AliAnalysisTaskPIDCombined.cxx:346
 AliAnalysisTaskPIDCombined.cxx:347
 AliAnalysisTaskPIDCombined.cxx:348
 AliAnalysisTaskPIDCombined.cxx:349
 AliAnalysisTaskPIDCombined.cxx:350
 AliAnalysisTaskPIDCombined.cxx:351
 AliAnalysisTaskPIDCombined.cxx:352
 AliAnalysisTaskPIDCombined.cxx:353
 AliAnalysisTaskPIDCombined.cxx:354
 AliAnalysisTaskPIDCombined.cxx:355