]> git.uio.no Git - u/mrichter/AliRoot.git/blame - ITS/AliITSComparisonV1.C
Updated version of some files of tracking V1. New member fMass added. By default...
[u/mrichter/AliRoot.git] / ITS / AliITSComparisonV1.C
CommitLineData
ae0cd643 1#include "iostream.h"
2
3
4 void AliITSComparisonV1(Int_t evNumber1=0,Int_t evNumber2=0) {
5
6 const char *filename="itstracks.root";
7
8 ///////////////// Dynamically link some shared libs ////////////////////////////////
9
10 if (gClassTable->GetID("AliRun") < 0) {
11 gROOT->LoadMacro("loadlibs.C");
12 loadlibs();
13 } else {
14 delete gAlice;
15 gAlice=0;
16 }
17
18// Connect the Root Galice file containing Geometry, Kine and Hits
19 TFile *file = (TFile*)gROOT->GetListOfFiles()->FindObject(filename);
20 if (!file) file = new TFile(filename);
21
22 ifstream in("itsgood_tracks");
23//
24// Loop over events
25//
26
27 char tname[30];
28
29
30 struct GoodTrack {
31 Int_t fEventN;
32 Int_t lab,code;
33 Float_t px,py,pz,x,y,z,pxg,pyg,pzg,ptg;
34 Bool_t flag;
35 };
36 Int_t i;
37 GoodTrack gt[15000];
38 Int_t ngood=0;
39 cerr<<"Reading itsgood tracks...\n";
40 while (in>>gt[ngood].fEventN>>gt[ngood].lab>>gt[ngood].code
41 >>gt[ngood].px >>gt[ngood].py>>gt[ngood].pz
42 >>gt[ngood].x >>gt[ngood].y >>gt[ngood].z
43 >>gt[ngood].pxg >>gt[ngood].pyg >>gt[ngood].pzg
44 >>gt[ngood].ptg >>gt[ngood].flag) {
45 ngood++;
46 cerr<<ngood<<'\r';
47 if (ngood==15000) {
48 cerr<<"Too many good tracks !\n";
49 break;
50 }
51 }
52 if (!in.eof()) cerr<<"Read error (itsgood_tracks) !\n";
53 ofstream out1 ("AliITSTrag.out");
54 Int_t countpos=0,countneg=0;
55
56
57 //for (i=0; i<ngood; i++) out1 << gt[i].ptg << "\n";
58 for (i=0; i<ngood; i++) {
59 out1 << gt[i].ptg << "\n";
60 Int_t codpar=gt[i].code;
61 if(codpar==2212 || codpar==-11 || codpar==-13 || codpar==211 || codpar==321 || codpar==3222
62 || codpar==213 || codpar==323 || codpar==10323 || codpar==3224 || codpar==2224 || codpar==2214
63 || codpar==-1114 || codpar==-3112 || codpar==-3312 || codpar==3224 || codpar==-3114 || codpar==-3314
64 || codpar==411 || codpar==431 || codpar==413 || codpar==433 || codpar==-15 || codpar==4232
65 || codpar==4222 || codpar==4322 || codpar==4422 || codpar==4412 || codpar==4432 || codpar==4224
66 ||codpar==4214 || codpar==4324 || codpar==4424 || codpar==4414 || codpar==4434 || codpar==4444)
67 countpos++;
68 if(codpar==-2212 || codpar==11 || codpar==13 || codpar==-211 || codpar==-321 || codpar==3112
69 || codpar==-213 || codpar==-323 || codpar==-10323 || codpar==3114 || codpar==1114 || codpar==-2224
70 || codpar==-2214 || codpar==33112 || codpar==-3222 || codpar==3114 || codpar==3314 || codpar==3334
71 || codpar==-3224 || codpar==-411 || codpar==-431 || codpar==-413 || codpar==-433 || codpar==15
72 || codpar==-4422 || codpar==-4432 || codpar==-4214 || codpar==-4324 || codpar==-4424 || codpar==-4434
73 || codpar==-444)
74 countneg++;
75 }
76 out1.close();
77 ofstream out ("AliITSTra.out");
78/// definition of nm of good track for each event
79 TVector ntrackevtpc(evNumber2-evNumber1 +1);
80 Int_t nchange=-1;
81 Int_t nmev=-100;
82
83
84 Int_t i;
85 for( i =0; i<ngood ; i++){
86 if(gt[i].fEventN != nmev ){
87 nmev=gt[i].fEventN;
88 nchange++;
89 }
90 if(nmev == gt[i].fEventN) ntrackevtpc(nchange)++;
91 }
92//////////////////////////////////////////////////////////////
93
94 for (Int_t nev=evNumber1; nev<= evNumber2; nev++) {
95
96
97 sprintf(tname,"TreeT%d",nev);
98 TTree *tracktree=(TTree*)file->Get(tname);
99 TBranch *tbranch=tracktree->GetBranch("ITStracks");
100 cout<<" nev = "<<nev<<"\n";
101 //cout<<" open the file \n";
102
103 Int_t nentr=tracktree->GetEntries();
104
105 TObjArray tarray(nentr);
106 // AliITSIOTrack *iotrack=0;
107 printf("nentr %d\n",nentr);
108
109 for (Int_t i=0; i<nentr; i++) {
110 AliITSIOTrack *iotrack=new AliITSIOTrack;
111 // tarray.AddAt(new AliITSIOTrack,i);
112 // iotrack=(AliITSiotrack*)tarray.UncheckedAt(i);
113 tbranch->SetAddress(&iotrack);
114 tracktree->GetEvent(i);
115 tarray.AddLast(iotrack);
116 }
117 //file->Close();
118
119 AliITSIOTrack *iotrack;
120 for (Int_t i=0; i<nentr; i++) {
121 AliITSIOTrack *iotrack=new AliITSIOTrack;
122 iotrack=(AliITSIOTrack*)tarray.UncheckedAt(i);
123 if(!iotrack) continue;
124 Int_t labITS=iotrack->GetLabel();
61231d74 125 Int_t labTPC=iotrack->GetTPCLabel();
ae0cd643 126 Double_t phistate=iotrack->GetStatePhi();
127 Double_t tgl=iotrack->GetStateTgl();
128 Double_t Zstate=iotrack->GetStateZ();
129 Double_t Dr=iotrack->GetStateD();
130 Double_t C=iotrack->GetStateC();
131 Double_t px=iotrack->GetPx();
132 Double_t py=iotrack->GetPy();
133 Double_t pz=iotrack->GetPz();
134 Double_t pt=TMath::Sqrt(px*px+py*py);
135 Int_t c = iotrack->GetCharge();
136 Double_t x=iotrack->GetX();
137 Double_t y=iotrack->GetY();
61231d74 138 Double_t z= iotrack->GetZ();
139 Double_t Dz=iotrack->GetDz();
140
ae0cd643 141
142 // cout<<" track label = "<<label<<"\n";
143 // cout<<" phi z D tanl C = "<<phistate<<" "<<Zstate<<" "<<Dr<<" "<<tgl<<" "<<C<<"\n";
144
145 // Int_t ilab=TMath::Abs(iotrack->GetLabel());
146 Int_t flaglab=0;
147 Int_t iii=0;
335d71a8 148 Double_t ptg=0.,pxg=0.,pyg=0.,pzg=0.;
149 Double_t xo=0., yo=0., zo=0.;
ae0cd643 150
151 Int_t mingood=0, maxgood=0, jj=0;
152 if(nev==evNumber1) mingood=0;
153 else
154 {for(jj=evNumber1; jj<nev; jj++) mingood += ntrackevtpc(jj);}
155 for(jj=evNumber1; jj<=nev; jj++) maxgood+= ntrackevtpc(jj);
156
157 Int_t ilab=TMath::Abs(labTPC);
158 // for (iii=0;iii<ngood;iii++) {
159 for(iii=mingood; iii<maxgood; iii++){
160 //cout<<" ilab, gt[iii].lab = "<<ilab<<" "<<gt[iii].lab<<"\n"; getchar();
161 if (ilab==gt[iii].lab) {
162 flaglab=1;
163 ptg=gt[iii].ptg;
164 pxg=gt[iii].pxg;
165 pyg=gt[iii].pyg;
335d71a8 166 pzg=gt[iii].pzg;
167 xo=gt[iii].x;
168 yo=gt[iii].y;
169 zo=gt[iii].z;
ae0cd643 170 break;
171 }
172 }
173
174 if (!flaglab) continue;
175 //cout<<" j = " <<j<<"\n"; getchar();
176 TVector dataOut(10);
177 Int_t kkk=0;
178
179 dataOut(kkk) = ptg; kkk++; dataOut(kkk)=labITS; kkk++; dataOut(kkk)=labTPC; kkk++;
180
181 ///////////////////////////////
182 Double_t difpt= (pt-ptg)/ptg*100.;
183 //cout<<" difpt = "<<difpt<<"\n"; getchar();
184 dataOut(kkk)=difpt; kkk++;
185 Double_t lambdag=TMath::ATan(pzg/ptg);
186 Double_t lam=TMath::ATan(tgl);
187 Double_t diflam = (lam - lambdag)*1000.;
188 dataOut(kkk) = diflam; kkk++;
189 Double_t phig=TMath::ATan2(pyg,pxg); if(phig<0) phig=2.*TMath::Pi()+phig;
190 // Double_t phi=phivertex;
191 Double_t phi=TMath::ACos(px/pt);
192 Double_t duepi=2.*TMath::Pi();
193 if(phi>duepi) phi-=duepi;
194 if(phi<0.) phi+=duepi;
195 Double_t signC=0.;
196 if(c>0) signC=1.; else signC=-1.;
335d71a8 197 Double_t Dtot= TMath::Sqrt(Dr*Dr+Dz*Dz);
ae0cd643 198 Double_t difphi = (phi - phig)*1000.;
199 dataOut(kkk)=difphi; kkk++;
200 dataOut(kkk)=Dtot*1.e4; kkk++;
201 dataOut(kkk)=Dr*1.e4; kkk++;
202 dataOut(kkk)=Dz*1.e4; kkk++;
203 dataOut(kkk)=signC; kkk++;
204 Int_t r;
205 for (r=0; r<10; r++) { out<<dataOut(r)<<" ";}
206 out<<"\n";
207 kkk=0;
208
209 delete iotrack;
210 }
211 //out.close();
212 } // event loop
213 out.close();
214 in.close();
215 file->Close();
216}
217