]> git.uio.no Git - u/mrichter/AliRoot.git/blame - ITS/AliITSScanPIDV1.C
Further modifications in OpenOutput and WriteCluster
[u/mrichter/AliRoot.git] / ITS / AliITSScanPIDV1.C
CommitLineData
955c92aa 1///////////////////////////////////////////////////////////
2// Test macro for AliITStracksV1Pid.root file //
3// JINR Dubna Jan 2002 //
4///////////////////////////////////////////////////////////
5void
6AliITSScanPIDV1(Int_t evNumber1=0,Int_t evNumber2=0) {
7 //................. Prepare histogramms ................
8 TH2F *qplot = new TH2F("Qtrm","Qtrm vs Pmom",100,0,1300,100,0,13);
9 TH2F *qplotP= new TH2F("Qtrm","Qtrm vs Pmom",100,0,1300,100,0,13);
10 TH2F *qplotKa= new TH2F("Qtrm","Qtrm vs Pmom",100,0,1300,100,0,13);
11 TH2F *qplotPi= new TH2F("Qtrm","Qtrm vs Pmom",100,0,1300,100,0,13);
12 TH2F *qplotE= new TH2F("Qtrm","Qtrm vs Pmom",100,0,1300,100,0,13);
13 qplotP.SetMarkerStyle(8); qplotP.SetMarkerColor(kBlack); qplotP.SetMarkerSize(.3);
14 qplotKa.SetMarkerStyle(8); qplotKa.SetMarkerColor(kRed); qplotKa.SetMarkerSize(.3);
15 qplotPi.SetMarkerStyle(8); qplotPi.SetMarkerColor(kBlue); qplotPi.SetMarkerSize(.3);
16 qplotE.SetMarkerStyle(8); qplotE.SetMarkerColor(kGreen); qplotE.SetMarkerSize(.3);
17 //......................................................
18 TH1F *signal_mip = new TH1F("signal_mip","Signal (mips) for track",100,0.,15.);
19
20//*****************************************************************************************************************************************
21
22 const char *filename="itstracks.root";
23
24 ///////////////// Dynamically link some shared libs ////////////////////////////////
25
26 if (gClassTable->GetID("AliRun") < 0) {
27 gROOT->LoadMacro("loadlibs.C");
28 loadlibs();
29 } else {
30 delete gAlice;
31 gAlice=0;
32 }
33
34// Connect the Root Galice file containing Geometry, Kine and Hits
35 TFile *file = (TFile*)gROOT->GetListOfFiles()->FindObject(filename);
36 if (!file) file = new TFile(filename);
37
38//
39// Loop over events
40//
41 char tname[30];
42 for (int nev=evNumber1; nev<= evNumber2; nev++) {
43
44
45 // for (int nev=0; nev<= evNumber2; nev++) {
46
47 sprintf(tname,"TreeT%d",nev);
48 TTree *tracktree=(TTree*)file->Get(tname);
49 TBranch *tbranch=tracktree->GetBranch("ITStracks");
50 cout<<" nev = "<<nev<<"\n";
51 //cout<<" open the file \n";
52
53 Int_t nentr=tracktree->GetEntries();
54
55 TObjArray tarray(nentr);
56 // AliITSIOTrack *iotrack=0;
57 printf("nentr %d\n",nentr);
58
59 for (Int_t i=0; i<nentr; i++) {
60 AliITSIOTrack *iotrack=new AliITSIOTrack;
61 // tarray.AddAt(new AliITSIOTrack,i);
62 // iotrack=(AliITSiotrack*)tarray.UncheckedAt(i);
63 tbranch->SetAddress(&iotrack);
64 tracktree->GetEvent(i);
65 tarray.AddLast(iotrack);
66 }
67 //file->Close();
68
69 AliITSIOTrack *iotrack;
70 for (Int_t i=0; i<nentr; i++) {
71 AliITSIOTrack *iotrack=new AliITSIOTrack;
72 iotrack=(AliITSIOTrack*)tarray.UncheckedAt(i);
73 if(!iotrack) continue;
74
75 Float_t Px=iotrack->GetPx();
76 Float_t Py=iotrack->GetPy();
77 Float_t Pz=iotrack->GetPz();
78
79 Float_t momentum = TMath::Sqrt(Px*Px+Py*Py+Pz*Pz);
80 Float_t dEdx = iotrack->GetdEdx();
81 Int_t pcode = 211;//iotrack->GetPDG();
82
83 signal_mip->Fill(dEdx);
84
85 if(pcode == 2212) qplotP.Fill(1000*momentum,dEdx);
86 if(pcode == 321) qplotKa.Fill(1000*momentum,dEdx);
87 if(pcode == 211) qplotPi.Fill(1000*momentum,dEdx);
88 if(pcode == 11) qplotE.Fill(1000*momentum,dEdx);
89
90 delete iotrack;
91 }
92
93 } // event loop
94 file->Close();
95
96//*****************************************************************************************************************************************
97
98 //...................... Draw histogramms .................
99 TCanvas *c1 = new TCanvas("PID_test","Scan PID ",200,10,900,700);
100 c1->Divide(2,1);
101 //.........................................................
102 c1->cd(1); gPad->SetFillColor(33);
103 signal_mip->Draw();
104
105 c1->cd(2); //gPad->SetFillColor(33);
106 qplot->Draw();
107 qplotP.Draw("same"); qplotKa.Draw("same"); qplotPi.Draw("same"); qplotE.Draw("same");
108 AliITSPid *pid =new AliITSPid(1000);
109 c1->Range(0,0,1300,10);
110 gStyle->SetLineColor(kRed);
111 gStyle->SetLineWidth(2);
112 TLine *lj[3],*lk[3];
113 for(Int_t j=0;j<3;j++){
114 Float_t x1,x2,y1,y2,xx1,xx2,yy1,yy2;
115 x1=pid->cut[j+1][0]; x2=pid->cut[j+2][0];
116 y1=y2=pid->cut[j+2][2];
117 lj[j]=new TLine(1000*x1,y1,1000*x2,y2); lj[j]->Draw();
118 if(j==0){yy1=10.;}else{yy1=lj[j-1]->GetY1();}
119 yy2=lj[j]->GetY1();
120 xx1=xx2=x1;
121 lk[j]=new TLine(1000*xx1,yy1,1000*xx2,yy2); lk[j]->Draw();
122 }
123 //Draw pions-kaons cuts.
124 TLine *mj[7],*mk[7];
125 for(Int_t j=0;j<7;j++){
126 Float_t x1,x2,y1,y2,xx1,xx2,yy1,yy2;
127 x1=pid->cut[j+2][0]; x2=pid->cut[j+3][0];
128 y1=y2=pid->cut[j+3][5];
129 mj[j]=new TLine(1000*x1,y1,1000*x2,y2); mj[j]->Draw();
130 if(j==0){yy1=10.;}else{yy1=mj[j-1]->GetY1();}
131 yy2=mj[j]->GetY1();
132 xx1=xx2=x1;
133 mk[j]=new TLine(1000*xx1,yy1,1000*xx2,yy2); mk[j]->Draw();
134 }
135 cout<<"End of file AliITStracksV1Pid.root "<<endl;
136 return;
137}
138