ROOT logo
///////////////////////////////////////////////////////////
// Test macro for AliITStracksV1Pid.root file            //
// JINR Dubna Jan 2002                                   //
///////////////////////////////////////////////////////////
void
AliITSScanPIDV1(Int_t evNumber1=0,Int_t evNumber2=0) {
  //................. Prepare histogramms ................
     TH2F *qplot =  new TH2F("Qtrm","Qtrm vs Pmom",100,0,1300,100,0,13);
     TH2F *qplotP=  new TH2F("Qtrm","Qtrm vs Pmom",100,0,1300,100,0,13); 
     TH2F *qplotKa= new TH2F("Qtrm","Qtrm vs Pmom",100,0,1300,100,0,13);
     TH2F *qplotPi= new TH2F("Qtrm","Qtrm vs Pmom",100,0,1300,100,0,13);
     TH2F *qplotE=  new TH2F("Qtrm","Qtrm vs Pmom",100,0,1300,100,0,13);
     qplotP.SetMarkerStyle(8); qplotP.SetMarkerColor(kBlack); qplotP.SetMarkerSize(.3);
     qplotKa.SetMarkerStyle(8); qplotKa.SetMarkerColor(kRed); qplotKa.SetMarkerSize(.3);
     qplotPi.SetMarkerStyle(8); qplotPi.SetMarkerColor(kBlue); qplotPi.SetMarkerSize(.3);
     qplotE.SetMarkerStyle(8); qplotE.SetMarkerColor(kGreen); qplotE.SetMarkerSize(.3);
  //......................................................
  TH1F *signal_mip = new TH1F("signal_mip","Signal (mips) for track",100,0.,15.);

//*****************************************************************************************************************************************

  const char *filename="itstracks.root";
  
  ///////////////// Dynamically link some shared libs ////////////////////////////////
  
  if (gClassTable->GetID("AliRun") < 0) {
    gROOT->LoadMacro("loadlibs.C");
    loadlibs();
  } else {
    delete gAlice;
    gAlice=0;
  }

// Connect the Root Galice file containing Geometry, Kine and Hits
   TFile *file = (TFile*)gROOT->GetListOfFiles()->FindObject(filename);
   if (!file) file = new TFile(filename);

//
//   Loop over events 
//
   char tname[30];
   for (int nev=evNumber1; nev<= evNumber2; nev++) {
 

  // for (int nev=0; nev<= evNumber2; nev++) {

   sprintf(tname,"TreeT%d",nev);
   TTree *tracktree=(TTree*)file->Get(tname);
   TBranch *tbranch=tracktree->GetBranch("ITStracks");
   cout<<" nev = "<<nev<<"\n";
	//cout<<" open the file \n"; 
	
   Int_t nentr=tracktree->GetEntries();

   TObjArray tarray(nentr);
  // AliITSIOTrack *iotrack=0;
   printf("nentr %d\n",nentr);
	
   for (Int_t i=0; i<nentr; i++) {
      AliITSIOTrack *iotrack=new AliITSIOTrack;
      // tarray.AddAt(new AliITSIOTrack,i);
      // iotrack=(AliITSiotrack*)tarray.UncheckedAt(i);
       tbranch->SetAddress(&iotrack);
       tracktree->GetEvent(i);
       tarray.AddLast(iotrack);
   }
   //file->Close();		 
	
	  AliITSIOTrack *iotrack;
   for (Int_t i=0; i<nentr; i++) {
         AliITSIOTrack *iotrack=new AliITSIOTrack;   	
	 iotrack=(AliITSIOTrack*)tarray.UncheckedAt(i);
	 if(!iotrack) continue;
	  
	 Float_t Px=iotrack->GetPx();
	 Float_t Py=iotrack->GetPy();
	 Float_t Pz=iotrack->GetPz();
	  
	 Float_t momentum = TMath::Sqrt(Px*Px+Py*Py+Pz*Pz);
	 Float_t dEdx = iotrack->GetdEdx();
	 Int_t pcode = 211;//iotrack->GetPDG();

	 signal_mip->Fill(dEdx);
	 
         if(pcode == 2212) qplotP.Fill(1000*momentum,dEdx);
	 if(pcode ==  321) qplotKa.Fill(1000*momentum,dEdx);
	 if(pcode ==  211) qplotPi.Fill(1000*momentum,dEdx);
	 if(pcode ==   11) qplotE.Fill(1000*momentum,dEdx);
	 
    delete iotrack;		 
   }  

   }   // event loop 
   file->Close();   

//*****************************************************************************************************************************************
  
  //...................... Draw histogramms .................
   TCanvas *c1 = new TCanvas("PID_test","Scan PID ",200,10,900,700);
   c1->Divide(2,1);
  //.........................................................
   c1->cd(1); gPad->SetFillColor(33);
   signal_mip->Draw();

   c1->cd(2); //gPad->SetFillColor(33);
   qplot->Draw();
   qplotP.Draw("same"); qplotKa.Draw("same"); qplotPi.Draw("same"); qplotE.Draw("same");
   AliITSPid *pid =new AliITSPid(1000);
    c1->Range(0,0,1300,10);
    gStyle->SetLineColor(kRed);
    gStyle->SetLineWidth(2);
	TLine *lj[3],*lk[3]; 
	for(Int_t j=0;j<3;j++){
		Float_t x1,x2,y1,y2,xx1,xx2,yy1,yy2;
		x1=pid->cut[j+1][0]; x2=pid->cut[j+2][0];
		y1=y2=pid->cut[j+2][2];
	    lj[j]=new TLine(1000*x1,y1,1000*x2,y2); lj[j]->Draw();
	    if(j==0){yy1=10.;}else{yy1=lj[j-1]->GetY1();}
	    yy2=lj[j]->GetY1();
	    xx1=xx2=x1;
	    lk[j]=new TLine(1000*xx1,yy1,1000*xx2,yy2); lk[j]->Draw();
	}
	//Draw pions-kaons cuts.
	TLine *mj[7],*mk[7]; 
	for(Int_t j=0;j<7;j++){
		Float_t x1,x2,y1,y2,xx1,xx2,yy1,yy2;
		x1=pid->cut[j+2][0]; x2=pid->cut[j+3][0];
		y1=y2=pid->cut[j+3][5];
	    mj[j]=new TLine(1000*x1,y1,1000*x2,y2); mj[j]->Draw();
	    if(j==0){yy1=10.;}else{yy1=mj[j-1]->GetY1();}
	    yy2=mj[j]->GetY1();
	    xx1=xx2=x1;
	    mk[j]=new TLine(1000*xx1,yy1,1000*xx2,yy2); mk[j]->Draw();
	}
  cout<<"End of file AliITStracksV1Pid.root "<<endl; 
  return;
}

 AliITSScanPIDV1.C:1
 AliITSScanPIDV1.C:2
 AliITSScanPIDV1.C:3
 AliITSScanPIDV1.C:4
 AliITSScanPIDV1.C:5
 AliITSScanPIDV1.C:6
 AliITSScanPIDV1.C:7
 AliITSScanPIDV1.C:8
 AliITSScanPIDV1.C:9
 AliITSScanPIDV1.C:10
 AliITSScanPIDV1.C:11
 AliITSScanPIDV1.C:12
 AliITSScanPIDV1.C:13
 AliITSScanPIDV1.C:14
 AliITSScanPIDV1.C:15
 AliITSScanPIDV1.C:16
 AliITSScanPIDV1.C:17
 AliITSScanPIDV1.C:18
 AliITSScanPIDV1.C:19
 AliITSScanPIDV1.C:20
 AliITSScanPIDV1.C:21
 AliITSScanPIDV1.C:22
 AliITSScanPIDV1.C:23
 AliITSScanPIDV1.C:24
 AliITSScanPIDV1.C:25
 AliITSScanPIDV1.C:26
 AliITSScanPIDV1.C:27
 AliITSScanPIDV1.C:28
 AliITSScanPIDV1.C:29
 AliITSScanPIDV1.C:30
 AliITSScanPIDV1.C:31
 AliITSScanPIDV1.C:32
 AliITSScanPIDV1.C:33
 AliITSScanPIDV1.C:34
 AliITSScanPIDV1.C:35
 AliITSScanPIDV1.C:36
 AliITSScanPIDV1.C:37
 AliITSScanPIDV1.C:38
 AliITSScanPIDV1.C:39
 AliITSScanPIDV1.C:40
 AliITSScanPIDV1.C:41
 AliITSScanPIDV1.C:42
 AliITSScanPIDV1.C:43
 AliITSScanPIDV1.C:44
 AliITSScanPIDV1.C:45
 AliITSScanPIDV1.C:46
 AliITSScanPIDV1.C:47
 AliITSScanPIDV1.C:48
 AliITSScanPIDV1.C:49
 AliITSScanPIDV1.C:50
 AliITSScanPIDV1.C:51
 AliITSScanPIDV1.C:52
 AliITSScanPIDV1.C:53
 AliITSScanPIDV1.C:54
 AliITSScanPIDV1.C:55
 AliITSScanPIDV1.C:56
 AliITSScanPIDV1.C:57
 AliITSScanPIDV1.C:58
 AliITSScanPIDV1.C:59
 AliITSScanPIDV1.C:60
 AliITSScanPIDV1.C:61
 AliITSScanPIDV1.C:62
 AliITSScanPIDV1.C:63
 AliITSScanPIDV1.C:64
 AliITSScanPIDV1.C:65
 AliITSScanPIDV1.C:66
 AliITSScanPIDV1.C:67
 AliITSScanPIDV1.C:68
 AliITSScanPIDV1.C:69
 AliITSScanPIDV1.C:70
 AliITSScanPIDV1.C:71
 AliITSScanPIDV1.C:72
 AliITSScanPIDV1.C:73
 AliITSScanPIDV1.C:74
 AliITSScanPIDV1.C:75
 AliITSScanPIDV1.C:76
 AliITSScanPIDV1.C:77
 AliITSScanPIDV1.C:78
 AliITSScanPIDV1.C:79
 AliITSScanPIDV1.C:80
 AliITSScanPIDV1.C:81
 AliITSScanPIDV1.C:82
 AliITSScanPIDV1.C:83
 AliITSScanPIDV1.C:84
 AliITSScanPIDV1.C:85
 AliITSScanPIDV1.C:86
 AliITSScanPIDV1.C:87
 AliITSScanPIDV1.C:88
 AliITSScanPIDV1.C:89
 AliITSScanPIDV1.C:90
 AliITSScanPIDV1.C:91
 AliITSScanPIDV1.C:92
 AliITSScanPIDV1.C:93
 AliITSScanPIDV1.C:94
 AliITSScanPIDV1.C:95
 AliITSScanPIDV1.C:96
 AliITSScanPIDV1.C:97
 AliITSScanPIDV1.C:98
 AliITSScanPIDV1.C:99
 AliITSScanPIDV1.C:100
 AliITSScanPIDV1.C:101
 AliITSScanPIDV1.C:102
 AliITSScanPIDV1.C:103
 AliITSScanPIDV1.C:104
 AliITSScanPIDV1.C:105
 AliITSScanPIDV1.C:106
 AliITSScanPIDV1.C:107
 AliITSScanPIDV1.C:108
 AliITSScanPIDV1.C:109
 AliITSScanPIDV1.C:110
 AliITSScanPIDV1.C:111
 AliITSScanPIDV1.C:112
 AliITSScanPIDV1.C:113
 AliITSScanPIDV1.C:114
 AliITSScanPIDV1.C:115
 AliITSScanPIDV1.C:116
 AliITSScanPIDV1.C:117
 AliITSScanPIDV1.C:118
 AliITSScanPIDV1.C:119
 AliITSScanPIDV1.C:120
 AliITSScanPIDV1.C:121
 AliITSScanPIDV1.C:122
 AliITSScanPIDV1.C:123
 AliITSScanPIDV1.C:124
 AliITSScanPIDV1.C:125
 AliITSScanPIDV1.C:126
 AliITSScanPIDV1.C:127
 AliITSScanPIDV1.C:128
 AliITSScanPIDV1.C:129
 AliITSScanPIDV1.C:130
 AliITSScanPIDV1.C:131
 AliITSScanPIDV1.C:132
 AliITSScanPIDV1.C:133
 AliITSScanPIDV1.C:134
 AliITSScanPIDV1.C:135
 AliITSScanPIDV1.C:136
 AliITSScanPIDV1.C:137
 AliITSScanPIDV1.C:138
 AliITSScanPIDV1.C:139