ROOT logo
////////////////////////////////////////////////////////////
// Test macro for AliITSPid class and tracking version V2 // 
// Rev. 25 July 2002 v3-08-03 + Root 3.02/07 + RedHat 6.2 //
////////////////////////////////////////////////////////////
void
AliITSSavePIDV2(Int_t evNumber1=0,Int_t evNumber2=0) {
  const char *filename="AliITStracksV2.root";

   TFile *file = (TFile*)gROOT->GetListOfFiles()->FindObject(filename);
   if (!file) file = new TFile(filename);

TFile *fpid = new TFile("AliITStracksV2Pid.root","recreate");


 Float_t factor=0;
 if(gAlice!=0)factor=gAlice->Field()->SolenoidField();
 if(factor==0.){
   cout<<" ================  WARNING ====================================\n";
   cout<<"  The default magnetic field value of 0.4 T will be used\n";
   cout<<" ==============================================================\n";
   factor=4.;  // Default  mag. field = 0.4T
 }
 else {
   cout<<"AliITSSavePIDV2.C:  Magnetic field is "<<factor/10.<<" T\n";
 }
 AliKalmanTrack::SetConvConst(1000/0.299792458/factor);



 AliITSPid *pid=new AliITSPid(100);
//
//   Loop over events 
//
 for (int nev=0; nev<= evNumber2; nev++) {
   char tname[30];
   sprintf(tname,"TreeT_ITS_%d;1",nev);
   TTree *tracktree=(TTree*)file->Get(tname);
   TBranch *tbranch=tracktree->GetBranch("tracks");
	
   Int_t nentr=tracktree->GetEntries();
   cout<<"Found "<<nentr<<" ITS tracks in event No "<<nev<<endl;

   char tpidname[30];
   sprintf(tpidname,"TreeT%d",nev);
   AliITStrackV2Pid pidtmp;
   TTree itspidTree(tpidname,"Tree with PID");
   AliITStrackV2Pid *outpid=&pidtmp;
   itspidTree.Branch("pids","AliITStrackV2Pid",&outpid,32000,1);
   AliITStrackV2 *iotrack=0;
   for (Int_t i=0; i<nentr; i++) {
      AliITStrackV2 *iotrack=new AliITStrackV2;
       tbranch->SetAddress(&iotrack);
       tracktree->GetEvent(i);
              iotrack->CookdEdx();
              Float_t  signal=iotrack->GetdEdx();
	      iotrack->PropagateTo(3.,0.0028,65.19);
	      iotrack->PropagateToVertex();
	      Double_t xk,par[5]; iotrack->GetExternalParameters(xk,par);
	      Float_t lam=TMath::ATan(par[3]);
	      Float_t pt_1=TMath::Abs(par[4]);
	      Float_t mom=0.;
	      if( (pt_1*TMath::Cos(lam))!=0. ){ mom=1./(pt_1*TMath::Cos(lam)); }else{mom=0.;};
	      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();
	      signal=signal/35.;
       pidtmp.fSignal=signal;
       pidtmp.fMom=mom;
       pidtmp.fPhi=phi;
       pidtmp.fLam=lam;
       pidtmp.fGlab=TMath::Abs(iotrack->GetLabel());
       Int_t pcode=pid->GetPcode(signal,mom);
       pidtmp.fPcode=pcode;
       pidtmp.fWpi=pid->GetWpi();
       pidtmp.fWk=pid->GetWk();
       pidtmp.fWp=pid->GetWp();
       //cout<<" pcode,sig,mom="<<pcode<<" "<<signal<<" "<<mom<<endl;
       //cout<<" wpi,wka,wp="<<pidtmp.fWpi<<" "<<pidtmp.fWk<<" "<<pidtmp.fWp<<endl;
       itspidTree.Fill();
       delete iotrack;
   }// End for i (tracks)
   cout<<"n ev="<<nev<<endl;
 fpid->Write();
 }// End for nev (events)
 file->Close();		 
 cout<<"File AliITStracksV2Pid.root written"<<endl;
 delete file;
 cout<<"end of AliITSSavePIDV2.C "<<endl;
 //return;
///////////////////////////////////////////////////////
}








 AliITSSavePIDV2.C:1
 AliITSSavePIDV2.C:2
 AliITSSavePIDV2.C:3
 AliITSSavePIDV2.C:4
 AliITSSavePIDV2.C:5
 AliITSSavePIDV2.C:6
 AliITSSavePIDV2.C:7
 AliITSSavePIDV2.C:8
 AliITSSavePIDV2.C:9
 AliITSSavePIDV2.C:10
 AliITSSavePIDV2.C:11
 AliITSSavePIDV2.C:12
 AliITSSavePIDV2.C:13
 AliITSSavePIDV2.C:14
 AliITSSavePIDV2.C:15
 AliITSSavePIDV2.C:16
 AliITSSavePIDV2.C:17
 AliITSSavePIDV2.C:18
 AliITSSavePIDV2.C:19
 AliITSSavePIDV2.C:20
 AliITSSavePIDV2.C:21
 AliITSSavePIDV2.C:22
 AliITSSavePIDV2.C:23
 AliITSSavePIDV2.C:24
 AliITSSavePIDV2.C:25
 AliITSSavePIDV2.C:26
 AliITSSavePIDV2.C:27
 AliITSSavePIDV2.C:28
 AliITSSavePIDV2.C:29
 AliITSSavePIDV2.C:30
 AliITSSavePIDV2.C:31
 AliITSSavePIDV2.C:32
 AliITSSavePIDV2.C:33
 AliITSSavePIDV2.C:34
 AliITSSavePIDV2.C:35
 AliITSSavePIDV2.C:36
 AliITSSavePIDV2.C:37
 AliITSSavePIDV2.C:38
 AliITSSavePIDV2.C:39
 AliITSSavePIDV2.C:40
 AliITSSavePIDV2.C:41
 AliITSSavePIDV2.C:42
 AliITSSavePIDV2.C:43
 AliITSSavePIDV2.C:44
 AliITSSavePIDV2.C:45
 AliITSSavePIDV2.C:46
 AliITSSavePIDV2.C:47
 AliITSSavePIDV2.C:48
 AliITSSavePIDV2.C:49
 AliITSSavePIDV2.C:50
 AliITSSavePIDV2.C:51
 AliITSSavePIDV2.C:52
 AliITSSavePIDV2.C:53
 AliITSSavePIDV2.C:54
 AliITSSavePIDV2.C:55
 AliITSSavePIDV2.C:56
 AliITSSavePIDV2.C:57
 AliITSSavePIDV2.C:58
 AliITSSavePIDV2.C:59
 AliITSSavePIDV2.C:60
 AliITSSavePIDV2.C:61
 AliITSSavePIDV2.C:62
 AliITSSavePIDV2.C:63
 AliITSSavePIDV2.C:64
 AliITSSavePIDV2.C:65
 AliITSSavePIDV2.C:66
 AliITSSavePIDV2.C:67
 AliITSSavePIDV2.C:68
 AliITSSavePIDV2.C:69
 AliITSSavePIDV2.C:70
 AliITSSavePIDV2.C:71
 AliITSSavePIDV2.C:72
 AliITSSavePIDV2.C:73
 AliITSSavePIDV2.C:74
 AliITSSavePIDV2.C:75
 AliITSSavePIDV2.C:76
 AliITSSavePIDV2.C:77
 AliITSSavePIDV2.C:78
 AliITSSavePIDV2.C:79
 AliITSSavePIDV2.C:80
 AliITSSavePIDV2.C:81
 AliITSSavePIDV2.C:82
 AliITSSavePIDV2.C:83
 AliITSSavePIDV2.C:84
 AliITSSavePIDV2.C:85
 AliITSSavePIDV2.C:86
 AliITSSavePIDV2.C:87
 AliITSSavePIDV2.C:88
 AliITSSavePIDV2.C:89
 AliITSSavePIDV2.C:90
 AliITSSavePIDV2.C:91
 AliITSSavePIDV2.C:92
 AliITSSavePIDV2.C:93
 AliITSSavePIDV2.C:94
 AliITSSavePIDV2.C:95
 AliITSSavePIDV2.C:96
 AliITSSavePIDV2.C:97
 AliITSSavePIDV2.C:98
 AliITSSavePIDV2.C:99
 AliITSSavePIDV2.C:100