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


// 3 6D histograms  - THnSparse created in the task:
// TPC raw dEdx
// TPC normalized dEdx (dEdx_rec/dNdx_mc)
// TPC PID probabilities
//
// The values are binned in following variables:
// Some of them are correlated - but THnSpase handle it  
//                               ~ 14 MBy per object needed
//
// 0 - MC particle species as defined in the AliPID - negatives+5 <0,9>
// 1 - momenta - at the entrance of the TPC
// 2 - tan lambda- fP[3]
// 3 - betagamma
// 4 - npoints
// 5 - measurement - dEdx, dEdx/BB resp.  PID probability
// 6 - BB resp. rec particle


//
// ROOT includes
#include <TChain.h>
#include <TMath.h>
#include <TVectorD.h>
#include <TSystem.h>
#include <TFile.h>
#include <TParticle.h>

// ALIROOT includes
#include <AliAnalysisManager.h>
#include <AliESDInputHandler.h>
#include "AliStack.h"
#include "AliMCEvent.h"
#include "AliMCEventHandler.h"
#include "AliMathBase.h"

#include <AliESD.h>
#include "AliExternalTrackParam.h"
#include "AliTracker.h"
#include "AliTPCseed.h"
//
#include "AliTPCtaskPID.h"
//
#include <THnSparse.h>

//

// STL includes
#include <iostream>

using namespace std;


ClassImp(AliTPCtaskPID)

//________________________________________________________________________
AliTPCtaskPID::AliTPCtaskPID() : 
  AliAnalysisTask(), 
  fMCinfo(0),     //! MC event handler
  fESD(0),
  fList(0),
  fTPCsignal(0),
  fTPCsignalNorm(0),
  fTPCr(0)
{
  //
  // Default constructor (should not be used)
  //
}

AliTPCtaskPID::AliTPCtaskPID(const AliTPCtaskPID& info) : 
  AliAnalysisTask(info), 
  fMCinfo(info.fMCinfo),     //! MC event handler
  fESD(info.fESD),        //!
  fList(0),
  fTPCsignal(0),
  fTPCsignalNorm(0),
  fTPCr(0)
{
  //
  // Dummy Copy  constructor - no copy constructor for THnSparse 
  //
  fList = (TObjArray*)(info.fList->Clone());
}



//________________________________________________________________________
AliTPCtaskPID::AliTPCtaskPID(const char *name) : 
  AliAnalysisTask(name, "AliTPCtaskPID"), 
  fMCinfo(0),     //! MC event handler
  fESD(0),
  fList(0),
  fTPCsignal(0),
  fTPCsignalNorm(0),
  fTPCr(0)
{
  //
  // Normal constructor
  //
  // Input slot #0 works with a TChain
  DefineInput(0, TChain::Class());
  // Output slot #0 writes into a TList
  DefineOutput(0, TObjArray::Class());
  //
  //make histos
  Init(); 
}

void AliTPCtaskPID::Init(){
  //
  // Init dEdx histogram
  // Dimensions
  // 0 - particle specie as defined in the AliPID - negatives+5 <0,9>
  // 1 - momenta - at the entrance of the TPC
  // 2 - tan lambda- fP[3]
  // 3 - betagamma
  // 4 - npoints
  // 5 - measurement - dEdx or dEdx/BB
  // 6 - BB
  //
  Double_t xmin[7],  xmax[7];
  Int_t    nbins[7];
  // pid
  nbins[0]=10;
  xmin[0]=0; xmax[0]=10;
  // momenta
  nbins[1]=50;
  xmin[1]=0.1; xmax[1]=100;
  //pseudorapidity
  nbins[2]=40;
  xmin[2]=-1.4; xmax[2]=1.4;
  //
  // betagamma
  //
  nbins[3]=100;
  xmin[3]=0.1; xmax[3]=1000;
  //
  nbins[4]=11;
  xmin[4] =50; xmax[4]=160;
  //
  // 
  nbins[6]=60;
  xmin[6]=0.5; xmax[6]=6;

  nbins[5]=400;
  xmin[5]=20; xmax[5]=400;
  fTPCsignal = new THnSparseF("TPC signal","TPC signal",7,nbins,xmin,xmax);
  nbins[5]=100;
  xmin[5]=25; xmax[5]=75;
  fTPCsignalNorm = new THnSparseF("TPC signal Norm","TPC signal Norm",7,nbins,xmin,xmax);
  //
  nbins[5]=256;
  xmin[5]=-0.1; xmax[5]=1.1;
  nbins[6]=10;
  xmin[6]=0; xmax[6]=10;
  fTPCr = new THnSparseF("TPC pid probability ","TPC pid probability",7,nbins,xmin,xmax);
  //
  //
  BinLogX(fTPCsignal->GetAxis(1));
  BinLogX(fTPCsignal->GetAxis(3));
  BinLogX(fTPCsignal->GetAxis(6));
  BinLogX(fTPCsignalNorm->GetAxis(1));
  BinLogX(fTPCsignalNorm->GetAxis(3));
  BinLogX(fTPCsignalNorm->GetAxis(6));
  BinLogX(fTPCr->GetAxis(1));
  BinLogX(fTPCr->GetAxis(3));
  
  const char *hisAxisName[7] ={"pid","p (GeV/c)","#eta","#beta#gamma","Number of cluster","dEdx_{rec},dedx_{mc}"};
  const char *hisAxisNameNorm[7] ={"pid","p (GeV/c)","#eta","#beta#gamma","Number of cluster","dEdx_{rec}/dEdx_{mc},dedx_{mc}"};
  const char *hisAxisNameR[7] ={"pid","p (GeV/c)","#eta","#beta#gamma","Number of cluster","TPCr","pid2"};
  //  
  for (Int_t i=0;i<7;i++) {
    fTPCsignal->GetAxis(i)->SetTitle(hisAxisName[i]);
    fTPCsignal->GetAxis(i)->SetName(hisAxisName[i]);
    fTPCsignalNorm->GetAxis(i)->SetTitle(hisAxisNameNorm[i]);
    fTPCsignalNorm->GetAxis(i)->SetName(hisAxisNameNorm[i]);
    fTPCr->GetAxis(i)->SetTitle(hisAxisNameR[i]);
    fTPCr->GetAxis(i)->SetName(hisAxisNameR[i]);
  }

  fList = new TObjArray(3);
  fList->AddAt(fTPCsignal,0);
  fList->AddAt(fTPCsignalNorm,1);
  fList->AddAt(fTPCr,2);
}




AliTPCtaskPID::~AliTPCtaskPID(){
  //
  //
  //
  delete fTPCsignal;
  delete fTPCsignalNorm;
  delete fTPCr;
}


//________________________________________________________________________
void AliTPCtaskPID::ConnectInputData(Option_t *) 
{
  //
  // Connect the input data
  //

  TTree* tree=dynamic_cast<TTree*>(GetInputData(0));
  if (!tree) {
    //Printf("ERROR: Could not read chain from input slot 0");
  }
  else {
    AliESDInputHandler *esdH = dynamic_cast<AliESDInputHandler*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
    if (!esdH) {
      //Printf("ERROR: Could not get ESDInputHandler");
    }
    else {
      fESD = esdH->GetEvent();
      //Printf("*** CONNECTED NEW EVENT ****");
    }  
  }
  AliMCEventHandler* mcinfo = (AliMCEventHandler*) (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler());  
  mcinfo->SetReadTR(kTRUE);
  
  fMCinfo = mcinfo->MCEvent();


}






//________________________________________________________________________
void AliTPCtaskPID::CreateOutputObjects() 
{
  //
  // Connect the output objects
  //

}


//________________________________________________________________________
void AliTPCtaskPID::Exec(Option_t *) {
  //
  // Execute analysis for current event 
  //


  // If MC has been connected   

  if (!fMCinfo){
    cout << "Not MC info\n" << endl;
  }else{
    ProcessMCInfo();
    //mcinfo->Print();
    //DumpInfo();
  }
  //
  PostData(0, fList);
}      




//________________________________________________________________________
void AliTPCtaskPID::Terminate(Option_t *) {
    //
    // Terminate loop
    //
  //
  return;
}







void  AliTPCtaskPID::ProcessMCInfo(){
  //
  //
  //
  //

  if (!fTPCsignal) Init();
  Int_t npart   = fMCinfo->GetNumberOfTracks();
  Int_t ntracks = fESD->GetNumberOfTracks(); 
  if (npart<=0) return;
  if (ntracks<=0) return;
  //
  //
  TParticle * particle= new TParticle;
  TClonesArray * trefs = new TClonesArray("AliTrackReference");
  
  for (Int_t itrack=0;itrack<ntracks;itrack++){
    AliESDtrack *track = fESD->GetTrack(itrack);
    const AliExternalTrackParam *in=track->GetInnerParam();
    const AliExternalTrackParam *out=track->GetOuterParam();
    if (!in) continue;
    Int_t ipart = TMath::Abs(track->GetLabel());
    //
    Int_t status = fMCinfo->GetParticleAndTR(ipart, particle, trefs);
    if (status<0) continue;
    if (!particle) continue;
    if (!trefs) continue;
    //
    //
    Double_t mom = in->GetP();
    if (track->GetP()>5)  mom= track->GetP();
    if (out&&out->GetX()<260&&TMath::Abs(out->GetZ())<250)  mom= (in->GetP()+out->GetP())*0.5;
    //
    Double_t dedx=track->GetTPCsignal();
    Double_t mass = particle->GetMass();
    Double_t bg  =mom/mass;
    Double_t betheBloch = AliMathBase::BetheBlochAleph(bg);
    //
    // Fill histos
    //
    Double_t x[7];
    //PID
    Int_t pdg = particle->GetPdgCode();
    for (Int_t iType=0;iType<5;iType++) {
      if (AliPID::ParticleCode(iType)==TMath::Abs(pdg)){
	x[0]=iType;
	if (TDatabasePDG::Instance()->GetParticle(pdg)->Charge()<0) x[0]+=5;
      }
    }
    x[1]= mom;
    x[2]= -0.5*TMath::Log((track->P()+track->Pz())/(track->P()-track->Pz()));
    x[3]= bg;
    x[4]=track->GetTPCsignalN();
    x[5]= dedx;
    x[6]= betheBloch;
    //
    fTPCsignal->Fill(x);
    //
    x[5]=dedx/betheBloch;
    fTPCsignalNorm->Fill(x);
    for (Int_t ipart2=0;ipart2<5;ipart2++){
      x[6]=ipart2;
      Double_t tpcpid[AliPID::kSPECIES];
      track->GetTPCpid(tpcpid);
      x[5]=tpcpid[ipart2];
      fTPCr->Fill(x);
    }
  }
}




void AliTPCtaskPID::FinishTaskOutput()
{
  //
  // According description in AliAnalisysTask this method is call
  // on the slaves before sending data
  //
  Terminate("slave");
  gSystem->Exec("pwd");
}




void AliTPCtaskPID::BinLogX(TAxis *axis) {
  //
  //
  //
  Int_t bins = axis->GetNbins();
  
  Double_t from = axis->GetXmin();
  Double_t to   = axis->GetXmax();
  Double_t *new_bins = new Double_t[bins + 1];
  
  new_bins[0] = from;
  Double_t factor = pow(to/from, 1./bins);
  
  for (Int_t i = 1; i <= bins; i++) {
    new_bins[i] = factor * new_bins[i-1];
  }
  axis->Set(bins, new_bins);
  delete [] new_bins;
}
 AliTPCtaskPID.cxx:1
 AliTPCtaskPID.cxx:2
 AliTPCtaskPID.cxx:3
 AliTPCtaskPID.cxx:4
 AliTPCtaskPID.cxx:5
 AliTPCtaskPID.cxx:6
 AliTPCtaskPID.cxx:7
 AliTPCtaskPID.cxx:8
 AliTPCtaskPID.cxx:9
 AliTPCtaskPID.cxx:10
 AliTPCtaskPID.cxx:11
 AliTPCtaskPID.cxx:12
 AliTPCtaskPID.cxx:13
 AliTPCtaskPID.cxx:14
 AliTPCtaskPID.cxx:15
 AliTPCtaskPID.cxx:16
 AliTPCtaskPID.cxx:17
 AliTPCtaskPID.cxx:18
 AliTPCtaskPID.cxx:19
 AliTPCtaskPID.cxx:20
 AliTPCtaskPID.cxx:21
 AliTPCtaskPID.cxx:22
 AliTPCtaskPID.cxx:23
 AliTPCtaskPID.cxx:24
 AliTPCtaskPID.cxx:25
 AliTPCtaskPID.cxx:26
 AliTPCtaskPID.cxx:27
 AliTPCtaskPID.cxx:28
 AliTPCtaskPID.cxx:29
 AliTPCtaskPID.cxx:30
 AliTPCtaskPID.cxx:31
 AliTPCtaskPID.cxx:32
 AliTPCtaskPID.cxx:33
 AliTPCtaskPID.cxx:34
 AliTPCtaskPID.cxx:35
 AliTPCtaskPID.cxx:36
 AliTPCtaskPID.cxx:37
 AliTPCtaskPID.cxx:38
 AliTPCtaskPID.cxx:39
 AliTPCtaskPID.cxx:40
 AliTPCtaskPID.cxx:41
 AliTPCtaskPID.cxx:42
 AliTPCtaskPID.cxx:43
 AliTPCtaskPID.cxx:44
 AliTPCtaskPID.cxx:45
 AliTPCtaskPID.cxx:46
 AliTPCtaskPID.cxx:47
 AliTPCtaskPID.cxx:48
 AliTPCtaskPID.cxx:49
 AliTPCtaskPID.cxx:50
 AliTPCtaskPID.cxx:51
 AliTPCtaskPID.cxx:52
 AliTPCtaskPID.cxx:53
 AliTPCtaskPID.cxx:54
 AliTPCtaskPID.cxx:55
 AliTPCtaskPID.cxx:56
 AliTPCtaskPID.cxx:57
 AliTPCtaskPID.cxx:58
 AliTPCtaskPID.cxx:59
 AliTPCtaskPID.cxx:60
 AliTPCtaskPID.cxx:61
 AliTPCtaskPID.cxx:62
 AliTPCtaskPID.cxx:63
 AliTPCtaskPID.cxx:64
 AliTPCtaskPID.cxx:65
 AliTPCtaskPID.cxx:66
 AliTPCtaskPID.cxx:67
 AliTPCtaskPID.cxx:68
 AliTPCtaskPID.cxx:69
 AliTPCtaskPID.cxx:70
 AliTPCtaskPID.cxx:71
 AliTPCtaskPID.cxx:72
 AliTPCtaskPID.cxx:73
 AliTPCtaskPID.cxx:74
 AliTPCtaskPID.cxx:75
 AliTPCtaskPID.cxx:76
 AliTPCtaskPID.cxx:77
 AliTPCtaskPID.cxx:78
 AliTPCtaskPID.cxx:79
 AliTPCtaskPID.cxx:80
 AliTPCtaskPID.cxx:81
 AliTPCtaskPID.cxx:82
 AliTPCtaskPID.cxx:83
 AliTPCtaskPID.cxx:84
 AliTPCtaskPID.cxx:85
 AliTPCtaskPID.cxx:86
 AliTPCtaskPID.cxx:87
 AliTPCtaskPID.cxx:88
 AliTPCtaskPID.cxx:89
 AliTPCtaskPID.cxx:90
 AliTPCtaskPID.cxx:91
 AliTPCtaskPID.cxx:92
 AliTPCtaskPID.cxx:93
 AliTPCtaskPID.cxx:94
 AliTPCtaskPID.cxx:95
 AliTPCtaskPID.cxx:96
 AliTPCtaskPID.cxx:97
 AliTPCtaskPID.cxx:98
 AliTPCtaskPID.cxx:99
 AliTPCtaskPID.cxx:100
 AliTPCtaskPID.cxx:101
 AliTPCtaskPID.cxx:102
 AliTPCtaskPID.cxx:103
 AliTPCtaskPID.cxx:104
 AliTPCtaskPID.cxx:105
 AliTPCtaskPID.cxx:106
 AliTPCtaskPID.cxx:107
 AliTPCtaskPID.cxx:108
 AliTPCtaskPID.cxx:109
 AliTPCtaskPID.cxx:110
 AliTPCtaskPID.cxx:111
 AliTPCtaskPID.cxx:112
 AliTPCtaskPID.cxx:113
 AliTPCtaskPID.cxx:114
 AliTPCtaskPID.cxx:115
 AliTPCtaskPID.cxx:116
 AliTPCtaskPID.cxx:117
 AliTPCtaskPID.cxx:118
 AliTPCtaskPID.cxx:119
 AliTPCtaskPID.cxx:120
 AliTPCtaskPID.cxx:121
 AliTPCtaskPID.cxx:122
 AliTPCtaskPID.cxx:123
 AliTPCtaskPID.cxx:124
 AliTPCtaskPID.cxx:125
 AliTPCtaskPID.cxx:126
 AliTPCtaskPID.cxx:127
 AliTPCtaskPID.cxx:128
 AliTPCtaskPID.cxx:129
 AliTPCtaskPID.cxx:130
 AliTPCtaskPID.cxx:131
 AliTPCtaskPID.cxx:132
 AliTPCtaskPID.cxx:133
 AliTPCtaskPID.cxx:134
 AliTPCtaskPID.cxx:135
 AliTPCtaskPID.cxx:136
 AliTPCtaskPID.cxx:137
 AliTPCtaskPID.cxx:138
 AliTPCtaskPID.cxx:139
 AliTPCtaskPID.cxx:140
 AliTPCtaskPID.cxx:141
 AliTPCtaskPID.cxx:142
 AliTPCtaskPID.cxx:143
 AliTPCtaskPID.cxx:144
 AliTPCtaskPID.cxx:145
 AliTPCtaskPID.cxx:146
 AliTPCtaskPID.cxx:147
 AliTPCtaskPID.cxx:148
 AliTPCtaskPID.cxx:149
 AliTPCtaskPID.cxx:150
 AliTPCtaskPID.cxx:151
 AliTPCtaskPID.cxx:152
 AliTPCtaskPID.cxx:153
 AliTPCtaskPID.cxx:154
 AliTPCtaskPID.cxx:155
 AliTPCtaskPID.cxx:156
 AliTPCtaskPID.cxx:157
 AliTPCtaskPID.cxx:158
 AliTPCtaskPID.cxx:159
 AliTPCtaskPID.cxx:160
 AliTPCtaskPID.cxx:161
 AliTPCtaskPID.cxx:162
 AliTPCtaskPID.cxx:163
 AliTPCtaskPID.cxx:164
 AliTPCtaskPID.cxx:165
 AliTPCtaskPID.cxx:166
 AliTPCtaskPID.cxx:167
 AliTPCtaskPID.cxx:168
 AliTPCtaskPID.cxx:169
 AliTPCtaskPID.cxx:170
 AliTPCtaskPID.cxx:171
 AliTPCtaskPID.cxx:172
 AliTPCtaskPID.cxx:173
 AliTPCtaskPID.cxx:174
 AliTPCtaskPID.cxx:175
 AliTPCtaskPID.cxx:176
 AliTPCtaskPID.cxx:177
 AliTPCtaskPID.cxx:178
 AliTPCtaskPID.cxx:179
 AliTPCtaskPID.cxx:180
 AliTPCtaskPID.cxx:181
 AliTPCtaskPID.cxx:182
 AliTPCtaskPID.cxx:183
 AliTPCtaskPID.cxx:184
 AliTPCtaskPID.cxx:185
 AliTPCtaskPID.cxx:186
 AliTPCtaskPID.cxx:187
 AliTPCtaskPID.cxx:188
 AliTPCtaskPID.cxx:189
 AliTPCtaskPID.cxx:190
 AliTPCtaskPID.cxx:191
 AliTPCtaskPID.cxx:192
 AliTPCtaskPID.cxx:193
 AliTPCtaskPID.cxx:194
 AliTPCtaskPID.cxx:195
 AliTPCtaskPID.cxx:196
 AliTPCtaskPID.cxx:197
 AliTPCtaskPID.cxx:198
 AliTPCtaskPID.cxx:199
 AliTPCtaskPID.cxx:200
 AliTPCtaskPID.cxx:201
 AliTPCtaskPID.cxx:202
 AliTPCtaskPID.cxx:203
 AliTPCtaskPID.cxx:204
 AliTPCtaskPID.cxx:205
 AliTPCtaskPID.cxx:206
 AliTPCtaskPID.cxx:207
 AliTPCtaskPID.cxx:208
 AliTPCtaskPID.cxx:209
 AliTPCtaskPID.cxx:210
 AliTPCtaskPID.cxx:211
 AliTPCtaskPID.cxx:212
 AliTPCtaskPID.cxx:213
 AliTPCtaskPID.cxx:214
 AliTPCtaskPID.cxx:215
 AliTPCtaskPID.cxx:216
 AliTPCtaskPID.cxx:217
 AliTPCtaskPID.cxx:218
 AliTPCtaskPID.cxx:219
 AliTPCtaskPID.cxx:220
 AliTPCtaskPID.cxx:221
 AliTPCtaskPID.cxx:222
 AliTPCtaskPID.cxx:223
 AliTPCtaskPID.cxx:224
 AliTPCtaskPID.cxx:225
 AliTPCtaskPID.cxx:226
 AliTPCtaskPID.cxx:227
 AliTPCtaskPID.cxx:228
 AliTPCtaskPID.cxx:229
 AliTPCtaskPID.cxx:230
 AliTPCtaskPID.cxx:231
 AliTPCtaskPID.cxx:232
 AliTPCtaskPID.cxx:233
 AliTPCtaskPID.cxx:234
 AliTPCtaskPID.cxx:235
 AliTPCtaskPID.cxx:236
 AliTPCtaskPID.cxx:237
 AliTPCtaskPID.cxx:238
 AliTPCtaskPID.cxx:239
 AliTPCtaskPID.cxx:240
 AliTPCtaskPID.cxx:241
 AliTPCtaskPID.cxx:242
 AliTPCtaskPID.cxx:243
 AliTPCtaskPID.cxx:244
 AliTPCtaskPID.cxx:245
 AliTPCtaskPID.cxx:246
 AliTPCtaskPID.cxx:247
 AliTPCtaskPID.cxx:248
 AliTPCtaskPID.cxx:249
 AliTPCtaskPID.cxx:250
 AliTPCtaskPID.cxx:251
 AliTPCtaskPID.cxx:252
 AliTPCtaskPID.cxx:253
 AliTPCtaskPID.cxx:254
 AliTPCtaskPID.cxx:255
 AliTPCtaskPID.cxx:256
 AliTPCtaskPID.cxx:257
 AliTPCtaskPID.cxx:258
 AliTPCtaskPID.cxx:259
 AliTPCtaskPID.cxx:260
 AliTPCtaskPID.cxx:261
 AliTPCtaskPID.cxx:262
 AliTPCtaskPID.cxx:263
 AliTPCtaskPID.cxx:264
 AliTPCtaskPID.cxx:265
 AliTPCtaskPID.cxx:266
 AliTPCtaskPID.cxx:267
 AliTPCtaskPID.cxx:268
 AliTPCtaskPID.cxx:269
 AliTPCtaskPID.cxx:270
 AliTPCtaskPID.cxx:271
 AliTPCtaskPID.cxx:272
 AliTPCtaskPID.cxx:273
 AliTPCtaskPID.cxx:274
 AliTPCtaskPID.cxx:275
 AliTPCtaskPID.cxx:276
 AliTPCtaskPID.cxx:277
 AliTPCtaskPID.cxx:278
 AliTPCtaskPID.cxx:279
 AliTPCtaskPID.cxx:280
 AliTPCtaskPID.cxx:281
 AliTPCtaskPID.cxx:282
 AliTPCtaskPID.cxx:283
 AliTPCtaskPID.cxx:284
 AliTPCtaskPID.cxx:285
 AliTPCtaskPID.cxx:286
 AliTPCtaskPID.cxx:287
 AliTPCtaskPID.cxx:288
 AliTPCtaskPID.cxx:289
 AliTPCtaskPID.cxx:290
 AliTPCtaskPID.cxx:291
 AliTPCtaskPID.cxx:292
 AliTPCtaskPID.cxx:293
 AliTPCtaskPID.cxx:294
 AliTPCtaskPID.cxx:295
 AliTPCtaskPID.cxx:296
 AliTPCtaskPID.cxx:297
 AliTPCtaskPID.cxx:298
 AliTPCtaskPID.cxx:299
 AliTPCtaskPID.cxx:300
 AliTPCtaskPID.cxx:301
 AliTPCtaskPID.cxx:302
 AliTPCtaskPID.cxx:303
 AliTPCtaskPID.cxx:304
 AliTPCtaskPID.cxx:305
 AliTPCtaskPID.cxx:306
 AliTPCtaskPID.cxx:307
 AliTPCtaskPID.cxx:308
 AliTPCtaskPID.cxx:309
 AliTPCtaskPID.cxx:310
 AliTPCtaskPID.cxx:311
 AliTPCtaskPID.cxx:312
 AliTPCtaskPID.cxx:313
 AliTPCtaskPID.cxx:314
 AliTPCtaskPID.cxx:315
 AliTPCtaskPID.cxx:316
 AliTPCtaskPID.cxx:317
 AliTPCtaskPID.cxx:318
 AliTPCtaskPID.cxx:319
 AliTPCtaskPID.cxx:320
 AliTPCtaskPID.cxx:321
 AliTPCtaskPID.cxx:322
 AliTPCtaskPID.cxx:323
 AliTPCtaskPID.cxx:324
 AliTPCtaskPID.cxx:325
 AliTPCtaskPID.cxx:326
 AliTPCtaskPID.cxx:327
 AliTPCtaskPID.cxx:328
 AliTPCtaskPID.cxx:329
 AliTPCtaskPID.cxx:330
 AliTPCtaskPID.cxx:331
 AliTPCtaskPID.cxx:332
 AliTPCtaskPID.cxx:333
 AliTPCtaskPID.cxx:334
 AliTPCtaskPID.cxx:335
 AliTPCtaskPID.cxx:336
 AliTPCtaskPID.cxx:337
 AliTPCtaskPID.cxx:338
 AliTPCtaskPID.cxx:339
 AliTPCtaskPID.cxx:340
 AliTPCtaskPID.cxx:341
 AliTPCtaskPID.cxx:342
 AliTPCtaskPID.cxx:343
 AliTPCtaskPID.cxx:344
 AliTPCtaskPID.cxx:345
 AliTPCtaskPID.cxx:346
 AliTPCtaskPID.cxx:347
 AliTPCtaskPID.cxx:348
 AliTPCtaskPID.cxx:349
 AliTPCtaskPID.cxx:350
 AliTPCtaskPID.cxx:351
 AliTPCtaskPID.cxx:352
 AliTPCtaskPID.cxx:353
 AliTPCtaskPID.cxx:354
 AliTPCtaskPID.cxx:355
 AliTPCtaskPID.cxx:356
 AliTPCtaskPID.cxx:357
 AliTPCtaskPID.cxx:358
 AliTPCtaskPID.cxx:359
 AliTPCtaskPID.cxx:360
 AliTPCtaskPID.cxx:361
 AliTPCtaskPID.cxx:362
 AliTPCtaskPID.cxx:363
 AliTPCtaskPID.cxx:364
 AliTPCtaskPID.cxx:365
 AliTPCtaskPID.cxx:366
 AliTPCtaskPID.cxx:367
 AliTPCtaskPID.cxx:368
 AliTPCtaskPID.cxx:369
 AliTPCtaskPID.cxx:370
 AliTPCtaskPID.cxx:371
 AliTPCtaskPID.cxx:372
 AliTPCtaskPID.cxx:373
 AliTPCtaskPID.cxx:374
 AliTPCtaskPID.cxx:375
 AliTPCtaskPID.cxx:376
 AliTPCtaskPID.cxx:377
 AliTPCtaskPID.cxx:378
 AliTPCtaskPID.cxx:379
 AliTPCtaskPID.cxx:380
 AliTPCtaskPID.cxx:381
 AliTPCtaskPID.cxx:382
 AliTPCtaskPID.cxx:383
 AliTPCtaskPID.cxx:384
 AliTPCtaskPID.cxx:385
 AliTPCtaskPID.cxx:386
 AliTPCtaskPID.cxx:387
 AliTPCtaskPID.cxx:388
 AliTPCtaskPID.cxx:389
 AliTPCtaskPID.cxx:390
 AliTPCtaskPID.cxx:391
 AliTPCtaskPID.cxx:392
 AliTPCtaskPID.cxx:393
 AliTPCtaskPID.cxx:394
 AliTPCtaskPID.cxx:395
 AliTPCtaskPID.cxx:396
 AliTPCtaskPID.cxx:397
 AliTPCtaskPID.cxx:398
 AliTPCtaskPID.cxx:399
 AliTPCtaskPID.cxx:400
 AliTPCtaskPID.cxx:401
 AliTPCtaskPID.cxx:402
 AliTPCtaskPID.cxx:403
 AliTPCtaskPID.cxx:404
 AliTPCtaskPID.cxx:405
 AliTPCtaskPID.cxx:406
 AliTPCtaskPID.cxx:407
 AliTPCtaskPID.cxx:408
 AliTPCtaskPID.cxx:409
 AliTPCtaskPID.cxx:410