ROOT logo

//---------------------------------------------------------------------------------
// The example of usage of AliKFParticle & AliKFVertex classes for V0 analysis
// .
// @author  S.Gorbunov, I.Kisel
// @version 1.0
// @since   13.05.07
// 
// The AliKFParticleTest macro contains a toy V0 finder for ESD tracks.
// At the first step, event primary vertex is reconstructed. 
// At the second step, ideal PID hypothesis are assigned to all the particles.
// At the third step, V0 candidates are constructed for each pair 
// of positive and negative particles.
// V0 candidate considered as good when it passes Chi^2 cut and 
// it is placed >= 3 Sigma away from the primary vertex.
// Invariant mass distribution for all good V0 candidates is plotted.
//
//  -= Copyright &copy ALICE HLT Group =-
//_________________________________________________________________________________



#if !defined( __CINT__) || defined(__MAKECINT__)

  //gSystem->AddIncludePath("-I\"$ALICE_ROOT/include\"");

  #include <Riostream.h>
  #include <TTree.h>
  #include <TFile.h>
  #include <TCanvas.h>
  #include <TH1D.h>
  #include <TLatex.h>
  #include <TDatabasePDG.h>
  #include <TParticle.h>

  #include "AliRun.h"
  #include "AliStack.h"
  #include "AliESDEvent.h"
  #include "AliTracker.h"
  #include "AliKFParticle.h"
  #include "AliKFVertex.h"

#endif


Bool_t old_file = 1;
TCanvas *canvas=0;
TH1D  *histoMass[3]={0,0,0};
Int_t histoPDG [4]= {22,310,3122,421};
char* histoName[4]= {"#gamma","K^{0}_{s}","#Lambda","D^{0}"};
TLatex *histoText[4]={0,0,0,0};

void DrawV0() 
{
  //* Draw the invariant mass histogram

  if( !canvas ) return;
  histoMass[0]->Draw();
  for( Int_t i=1; i<3; i++ ) histoMass[i]->Draw("same");
  for( Int_t i=0; i<4; i++ ){
    Double_t mass = TDatabasePDG::Instance()->GetParticle(histoPDG[i])->Mass();    
    Int_t bin = histoMass[2]->FindBin(mass) -5;
    if( bin<0 ) bin =0;
    Double_t max = 0;
    for( Int_t j=bin; j<bin+10; j++ ) 
    if( max<histoMass[2]->GetBinContent(j) ) max = histoMass[2]->GetBinContent(j);
    histoText[i]->SetY(max);
    histoText[i]->SetX(mass+.05);
    if(max>0) histoText[i]->Draw();
  }
  if( canvas ) canvas->Update();
}

void StartV0()
{
  //* (Re)create histograms and fill them from temporary file
  
  TDirectory *curr = gDirectory;
  canvas = new TCanvas();
  histoMass[0] = new TH1D("massAll","AliKFParticle test", 500,0,3);
  histoMass[0]->SetXTitle("V^{0} invariant mass [GeV]");
  histoMass[1] = new TH1D("massMulti","V^{+-} contributions", 500,0,3);
  histoMass[2] = new TH1D("massV0","V^{0} signal", 500,0,3);
  histoMass[0]->SetLineColor(8);
  histoMass[0]->SetFillColor(8);
  histoMass[1]->SetLineColor(kMagenta);
  histoMass[1]->SetFillColor(kMagenta);
  histoMass[2]->SetLineColor(kBlue);
  histoMass[2]->SetFillColor(kBlue);
  for( Int_t i=0; i<4; i++ ){
    histoText[i] = new TLatex(0,0,histoName[i]);
    histoText[i]->SetTextColor(kBlue);
  }
  TFile* file = new TFile("AliKFParticleTest.root", "READ" );
  if( !old_file && file ){
    file->cd();
    for( Int_t i=0; i<3; i++ ){
      TObject *old = file->FindObjectAny(histoMass[i]->GetName());
      if( old && histoMass[i] ) histoMass[i]->Add( (TH1D*) old);
    }
    file->Close();
  }
  curr->cd();
  DrawV0();
}

void EndV0()
{
  //* End of gAlice -> store all histos in temporary file, clean memory

  TDirectory *curr = gDirectory;
  TFile* file = new TFile("AliKFParticleTest.root", "RECREATE" );
  old_file = 0;
  file->cd();
  for( Int_t i=0; i<3; i++ ) histoMass[i]->Write();
  file->Close();
  for( Int_t i=0; i<3; i++ ) delete histoMass[i];
  for( Int_t i=0; i<4; i++ ) delete histoText[i];
  delete canvas;
  curr->cd();
}

class TESDTrackInfo
{
public:
  TESDTrackInfo(){}
  AliKFParticle fParticle; //* assigned KFParticle
  Bool_t fPrimUsedFlag;    //* flag shows that the particle was used for primary vertex fit
  Bool_t fOK;              //* is the track good enough
  Int_t mcPDG;             //* Monte Carlo PDG code
  Int_t mcMotherID;        //* Monte Carlo ID of its mother
};

void RunV0(  AliESDEvent *event )
{
  //* V0 finder

  static Int_t iEvent = 0;
  cout<<"Event "<<iEvent++<<endl;

  if( !gAlice ) return;
  AliRunLoader *rl = AliRunLoader::Instance(); 
 
  AliStack *stack = rl->Stack();
  if( !stack ) return;  

  Int_t nESDTracks=event->GetNumberOfTracks();
  if( nESDTracks>1000 ) nESDTracks=1000;


  TESDTrackInfo ESDTrackInfo[1000]; //* parallel to ESD tracks

  //* Fill ESDTrackInfo array

  for (Int_t iTr=0; iTr<nESDTracks; iTr++)
    {   
      TESDTrackInfo &info = ESDTrackInfo[iTr];
      info.fOK = 0;
      info.fPrimUsedFlag = 0;
      info.mcPDG = -1;
      info.mcMotherID = -1;

      //* track quality check

      AliESDtrack *pTrack = event->GetTrack(iTr);    
      if( !pTrack  ) continue;
      if (pTrack->GetKinkIndex(0)>0) continue;
      if ( !( pTrack->GetStatus()&AliESDtrack::kITSrefit ) ) continue;
      Int_t indi[12];
      if( pTrack->GetITSclusters(indi) <5 ) continue;
      Int_t PDG = ( pTrack->GetSigned1Pt() <0 ) ?321 :211;

      //* take MC PDG  
      { 
	Int_t mcID = TMath::Abs(pTrack->GetLabel());
	TParticle * part = stack->Particle(TMath::Abs(mcID));
	if( part ){
	  info.mcPDG = part->GetPdgCode();
	  PDG = info.mcPDG;
	  if( mcID>=0 ) info.mcMotherID = part->GetFirstMother();
	}    
      }

      //* Construct KFParticle for the track

      info.fParticle = AliKFParticle( *pTrack, PDG );
      info.fOK = 1;   
    }

  //* Find event primary vertex
  
  AliKFVertex primVtx;  
  {
    const AliKFParticle * vSelected[1000]; //* Selected particles for vertex fit
    Int_t vIndex[1000];                    //* Indices of selected particles
    Bool_t vFlag[1000];                    //* Flags returned by the vertex finder

    Int_t nSelected = 0;
    for( Int_t i = 0; i<nESDTracks; i++){ 
      if(ESDTrackInfo[i].fOK ){
	vSelected[nSelected] = &(ESDTrackInfo[i].fParticle);
	vIndex[nSelected] = i;
	nSelected++;
      }
    }
    primVtx.ConstructPrimaryVertex( vSelected, nSelected, vFlag, 3. );
    for( Int_t i = 0; i<nSelected; i++){ 
      if( vFlag[i] ) ESDTrackInfo[vIndex[i]].fPrimUsedFlag = 1;
    }
    if( primVtx.GetNDF() <1 ) return; //* Less then two tracks in primary vertex 
  }

  //* V0 finder

  for( Int_t iTr = 0; iTr<nESDTracks; iTr++ ){ //* first daughter

    TESDTrackInfo &info = ESDTrackInfo[iTr];
    if( !info.fOK ) continue;    

    for( Int_t jTr = iTr+1; jTr<nESDTracks; jTr++ ){  //* second daughter
      TESDTrackInfo &jnfo = ESDTrackInfo[jTr];
      if( !jnfo.fOK ) continue;
      
      //* check for different charge

      if( info.fParticle.GetQ() == jnfo.fParticle.GetQ() ) continue;      

      //* construct V0 mother

      AliKFParticle V0( info.fParticle, jnfo.fParticle );     

      //* check V0 Chi^2

      if( V0.GetNDF()<1 ) continue;
      if( TMath::Sqrt(TMath::Abs(V0.GetChi2()/V0.GetNDF())) >3. ) continue;

      //* subtruct daughters from primary vertex 

      AliKFVertex primVtxCopy = primVtx;
       
      if( info.fPrimUsedFlag ) primVtxCopy -= info.fParticle;
      if( jnfo.fPrimUsedFlag ) primVtxCopy -= jnfo.fParticle;

      //* Check V0 Chi^2 deviation from primary vertex 

      if( V0.GetDeviationFromVertex( primVtxCopy ) >3. ) continue;

      //* Add V0 to primary vertex to improve the primary vertex resolution

      primVtxCopy += V0;      

      //* Set production vertex for V0

      V0.SetProductionVertex( primVtxCopy );

      //* Check chi^2 for a case

      if( TMath::Sqrt( TMath::Abs(V0.GetChi2()/V0.GetNDF())) >3. ) continue;

      //* Get V0 decay length with estimated error

      Double_t length, sigmaLength;
      if( V0.GetDecayLength( length, sigmaLength ) ) continue;

      //* Reject V0 if it decays too close to the primary vertex

      if( length  <3.*sigmaLength ) continue;

      //* Get V0 invariant mass and plot it

      Double_t mass, sigmaMass;
      if( V0.GetMass( mass, sigmaMass ) ) continue;
      histoMass[0]->Fill(mass);            

      //* Fill signal histograms using MC information

      if( info.mcMotherID==jnfo.mcMotherID && info.mcMotherID>=0 ){
	TParticle *mother = stack->Particle(info.mcMotherID);
	if( mother && TMath::Abs(mother->GetPdgCode())!=21 ){
	  histoMass[1]->Fill(mass);
	  if( mother->GetNDaughters()==2 ){
	    histoMass[2]->Fill(mass);	
	  }
	  cout<<"PDG V0,pi,pj, ndaughters, mc mass, reco mass = "<<mother->GetPdgCode()<<","<<info.mcPDG<<","<<jnfo.mcPDG<<", "
	      << mother->GetNDaughters()<<", "<<mother->GetMass()<<", "<<mass<<endl;
	}
      }
    }
  }
  if( iEvent %100 == 0 || (iEvent<100 && iEvent %10==0)) DrawV0();     
}



Int_t AliKFParticleTest(Int_t n1=0,Int_t n2=1000,char *dire="/d/alice10/sma/my_v4-05-Release/pp/"){
  //* Main macro
    
  //  LOOP  OVER  SERIES  OF  DIRECTORIES
  
  for (Int_t ifi=n1; ifi<=n2; ifi++) {
   
    char nstring[5], filename[100], esdfile[100];
    sprintf(nstring,"%3.3d",ifi);
    sprintf(filename,"%s%s/galice.root",dire,nstring);
    sprintf(esdfile,"%s%s/AliESDs.root",dire,nstring);
    
    cout <<"  Opening "<<filename<<"\nand ESD "<<esdfile<<endl;
    
    TFile* ftemp = TFile::Open(filename);
    Printf("ftemp = %p", ftemp);
    if (!ftemp) continue;

    if (gAlice) {
      delete AliRunLoader::Instance();
      delete gAlice;
      gAlice=0;
    }
    
    AliRunLoader *rl = AliRunLoader::Open(filename);
    if ( !rl ) { 
      ::Error("AliKFParticleTest.C","Can not open session !");
      continue;
    }
    if (rl->LoadgAlice()) {
      ::Error("AliKFParticleTest.C","LoadgAlice returned error !");
      delete rl;
      continue;
    }
    if (rl->LoadHeader()) {
      ::Error("AliKFParticleTest.C","LoadHeader returned error !");
      delete rl;
      continue;
    }
    rl->LoadKinematics();

    //---------------------------------------//
    //                                       //
    //               ESD  file               //
    //                                       //
    //---------------------------------------//
    
    // Open file with the ESD
    TFile *ef=TFile::Open(esdfile);

    //Check if the file could be opened
    if (!ef || !ef->IsOpen()) {cerr<<"Error open AliESDs.root !\n"; continue ;}

    //create event object
    AliESDEvent *event = new AliESDEvent;

    //Set pointer to the esd tree in the file
    TTree* tree = (TTree*) ef->Get("esdTree");
    
    //check if the tree exists
    if (!tree) {cerr<<"no ESD tree found\n"; continue;};
    
    //Set pointer to the esd object in the tree
    event->ReadFromTree(tree);
    
    //Number of events
    Int_t nevents=tree->GetEntriesFast();
    cout << "Number of events: " << nevents << endl;

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