ROOT logo
////////////////////////////////////////////////
// Dubna, 22 Jan 2003                         //
////////////////////////////////////////////////
Int_t AliTPCSavePID(Int_t emax=3) {
///////////////////////////////////////
#include<fstream.h>
TFile *inkin = TFile::Open("galice.root");
if (!inkin->IsOpen()) {
  cerr<<"Can't open galice.root !\n";
}                                                                                        
gAlice = (AliRun*)inkin->Get("gAlice");
cout<<"AliRun object found on file "<<gAlice<<endl;
cout<<"!!!! field ="<<gAlice->Field()->SolenoidField()<<endl;
AliKalmanTrack::SetFieldMap(gAlice->Field());
inkin->Close();                                  
 cout<<" Convconst="<<AliKalmanTrack::GetConvConst()<<endl;
/////////////////////////////////////// 
AliTPCtrack *iotrack=0; 
TFile *tf=TFile::Open("AliTPCtracks.root");
   if (!tf->IsOpen()) {cerr<<"Can't open AliTPCtracks.root !\n"; return 3;}
                                        
AliTPCPid pid;
AliTPCtrackPid pidtmp;                                                                
AliTPCtrackPid *outpid=&pidtmp;
TFile fpid("AliTPCtracksPid.root","recreate");

 Int_t nentr=0,i=0;
 for(int je=0;je<emax;je++){
   char tname[100]; sprintf(tname,"TreeT_TPC_%d",je);
   TTree *tracktree=(TTree*)tf->Get(tname);
   if (!tracktree) {cerr<<"Can't get a tree with TPC tracks !\n"; return 4;}

   TBranch *tbranch=tracktree->GetBranch("tracks");
   nentr=(Int_t)tracktree->GetEntries();
   cout<<nentr<<" "<<" tracks in track tree "<<tname<<"."<<endl;

    char tpname[100]; sprintf(tpname,"TreeT%d",je);
    TTree *ptree = new  TTree(tpname,"Tree with PID"); 
    ptree->Branch("pids","AliTPCtrackPid",&outpid,32000,1); 

   for (i=0; i<nentr; i++) {
       iotrack=new AliTPCtrack;
       tbranch->SetAddress(&iotrack);
       tracktree->GetEvent(i);
      Double_t par[5],xx;xx=85.1951;
      iotrack->PropagateTo(xx); 
      iotrack->GetExternalParameters(xx,par);
      //cout<<" par="<<par[0]<<" "<<par[1]<<" "<<par[2]<<" "<<par[3]<<" "<<par[4]<<endl;
      Float_t phi=TMath::ASin(par[2]) + iotrack->GetAlpha();
      if (phi<-TMath::Pi()) phi+=2*TMath::Pi();
      if (phi>=TMath::Pi()) phi-=2*TMath::Pi();
      Float_t lam=TMath::ATan(par[3]); 
      Float_t pt_1=TMath::Abs(par[4]);
      //cout<<"pt_1,lam="<<pt_1<<" "<<lam<<endl;
    if(pt_1!=0.){
      Float_t mom=1./(pt_1*TMath::Cos(lam));
      Float_t dedx=iotrack->GetdEdx();
      Int_t pcode=pid.GetPcode(dedx/50.,mom);
       pidtmp.fPcode=pcode;
       pidtmp.fSignal=dedx;
       pidtmp.fMom=mom;
       pidtmp.fPhi=phi;
       pidtmp.fLam=lam;
       pidtmp.fWpi=pid.fWpi;
       pidtmp.fWk=pid.fWk;
       pidtmp.fWp=pid.fWp;
       pidtmp.fLabel=TMath::Abs(iotrack->GetLabel());
       cout<<"tlab,dedx,mom,pcode="<<pidtmp.fLabel<<" "<<dedx<<" "<<mom<<" "<<pcode<<endl;      
       ptree->Fill();
     }//if(pt...
   }//for(i...
  cout<<"Event "<<je+1<<" ok."<<endl;      
   delete tracktree; 
 }//End for(je...)   
tf->Close();
fpid.Write();
cout<<"File AliTPCtracksPid.root written"<<endl;
return 0;
}
 AliTPCSavePID.C:1
 AliTPCSavePID.C:2
 AliTPCSavePID.C:3
 AliTPCSavePID.C:4
 AliTPCSavePID.C:5
 AliTPCSavePID.C:6
 AliTPCSavePID.C:7
 AliTPCSavePID.C:8
 AliTPCSavePID.C:9
 AliTPCSavePID.C:10
 AliTPCSavePID.C:11
 AliTPCSavePID.C:12
 AliTPCSavePID.C:13
 AliTPCSavePID.C:14
 AliTPCSavePID.C:15
 AliTPCSavePID.C:16
 AliTPCSavePID.C:17
 AliTPCSavePID.C:18
 AliTPCSavePID.C:19
 AliTPCSavePID.C:20
 AliTPCSavePID.C:21
 AliTPCSavePID.C:22
 AliTPCSavePID.C:23
 AliTPCSavePID.C:24
 AliTPCSavePID.C:25
 AliTPCSavePID.C:26
 AliTPCSavePID.C:27
 AliTPCSavePID.C:28
 AliTPCSavePID.C:29
 AliTPCSavePID.C:30
 AliTPCSavePID.C:31
 AliTPCSavePID.C:32
 AliTPCSavePID.C:33
 AliTPCSavePID.C:34
 AliTPCSavePID.C:35
 AliTPCSavePID.C:36
 AliTPCSavePID.C:37
 AliTPCSavePID.C:38
 AliTPCSavePID.C:39
 AliTPCSavePID.C:40
 AliTPCSavePID.C:41
 AliTPCSavePID.C:42
 AliTPCSavePID.C:43
 AliTPCSavePID.C:44
 AliTPCSavePID.C:45
 AliTPCSavePID.C:46
 AliTPCSavePID.C:47
 AliTPCSavePID.C:48
 AliTPCSavePID.C:49
 AliTPCSavePID.C:50
 AliTPCSavePID.C:51
 AliTPCSavePID.C:52
 AliTPCSavePID.C:53
 AliTPCSavePID.C:54
 AliTPCSavePID.C:55
 AliTPCSavePID.C:56
 AliTPCSavePID.C:57
 AliTPCSavePID.C:58
 AliTPCSavePID.C:59
 AliTPCSavePID.C:60
 AliTPCSavePID.C:61
 AliTPCSavePID.C:62
 AliTPCSavePID.C:63
 AliTPCSavePID.C:64
 AliTPCSavePID.C:65
 AliTPCSavePID.C:66
 AliTPCSavePID.C:67
 AliTPCSavePID.C:68
 AliTPCSavePID.C:69
 AliTPCSavePID.C:70
 AliTPCSavePID.C:71
 AliTPCSavePID.C:72
 AliTPCSavePID.C:73
 AliTPCSavePID.C:74
 AliTPCSavePID.C:75
 AliTPCSavePID.C:76
 AliTPCSavePID.C:77
 AliTPCSavePID.C:78
 AliTPCSavePID.C:79
 AliTPCSavePID.C:80