]>
Commit | Line | Data |
---|---|---|
9be6ad43 | 1 | #ifndef __CINT__ |
0fb78a3e | 2 | #include "alles.h" |
3 | #include "AliRunDigitizer.h" | |
4 | #include "AliTPCDigitizer.h" | |
5 | #include "AliH2F.h" | |
6 | #include "TTree.h" | |
7 | ||
8 | ||
9be6ad43 | 9 | #endif |
0fb78a3e | 10 | |
a7a1dd76 | 11 | /// \file AliTPCTestMerge.C |
12 | /// | |
13 | /// test of the tpc merging using AliRunDigitizer and | |
14 | /// TPC Hits2Digits, Hits2SDigits and SDigits2Digits macros | |
15 | /// preparation | |
16 | /// 0. make 2 directorys - ev1 and ev2 | |
17 | /// 1.make hits, digits,sdigits and sdigits-digits in both directories | |
18 | /// 1.a galice -b -q grun.C and produce hits | |
19 | /// 1.b. cp galice.root galice.root.hits | |
20 | /// 1.c run AliTPCHits2Digits.C | |
21 | /// 1.d cp galice.root galice.root.digits | |
22 | /// 1.e copy back cp galice.root.hits galice.root | |
23 | /// 1.f run AliTPCSDigits2Digits.C | |
24 | /// 1.g cp galice.root galice.root.sdigits | |
25 | /// 1.h run AliTPCSDigits2Digit.C | |
26 | /// 1.i cp galice.root galice.root.dig2 | |
27 | /// 2. cp ev1/galice.root/galice.root.sdigit galice.root | |
28 | /// 3. load this macro and run testmerge() | |
29 | /// 4. run test function bellow to compare merged digits with original one | |
30 | /// 5. to be noticed output ftom testx() function - should be bigger than | |
31 | /// noise because in proces of digitisation we use different seed | |
32 | /// of random numbers for diffusion and gas gain | |
33 | /// -anyway in place where we have the signal should occur the signal in both casses | |
34 | /// - only the amplitude should be different - by factor of sqrt | |
35 | /// | |
36 | /// \author Marian Ivanov | |
3a4edebe | 37 | |
0fb78a3e | 38 | void testmerge() |
9be6ad43 | 39 | { |
a7a1dd76 | 40 | /// merge two example events |
3a4edebe | 41 | /// |
a7a1dd76 | 42 | /// it merge two events -one from current directory -second from directory ev2 |
43 | ||
7a09f434 | 44 | if(gAlice) delete gAlice; |
0fb78a3e | 45 | AliRunDigitizer * manager = new AliRunDigitizer(2,1); |
7a09f434 | 46 | manager->SetTreeDTPCBaseName("TreeD_75x40_100x60_150x60_"); |
47 | manager->SetInputTreeTPCSBaseName("TreeS_75x40_100x60_150x60_"); | |
0fb78a3e | 48 | manager->SetInputStream(0,"galice.root"); |
49 | manager->SetInputStream(1,"ev2/galice.root.sdigits"); | |
7a09f434 | 50 | AliTPCDigitizer *dTPC = new AliTPCDigitizer(manager); |
8ded1b7a | 51 | manager->SetNrOfEventsToWrite(1); |
52 | TStopwatch timer; | |
53 | timer.Start(); | |
54 | ||
55 | manager->Exec(""); | |
56 | timer.Stop(); | |
57 | timer.Print(); | |
9be6ad43 | 58 | |
0fb78a3e | 59 | } |
60 | ||
61 | void drawmerged(Int_t sec, Int_t row, Int_t x1=-1, Int_t x2=-1, Int_t y1=-1, Int_t y2=-1) | |
62 | { | |
a7a1dd76 | 63 | /// if you think that there is memory leak - |
64 | /// you are tru but othervise graphic doesn't work | |
65 | /// sec=0; row =0; | |
66 | ||
0fb78a3e | 67 | TFile * f = new TFile("galice.root"); |
8ded1b7a | 68 | TFile * f1= new TFile("ev1/galice.root.digits"); |
69 | TFile * f2= new TFile("ev2/galice.root.digits"); | |
7a09f434 | 70 | TTree * tree = (TTree*)f->Get("TreeD_75x40_100x60_150x60_0"); |
71 | TTree * tree1 = (TTree*)f1->Get("TreeD_75x40_100x60_150x60_0"); | |
72 | TTree * tree2 = (TTree*)f2->Get("TreeD_75x40_100x60_150x60_0"); | |
0fb78a3e | 73 | // |
74 | AliSimDigits *dig=0; | |
75 | AliSimDigits *dig1=0; | |
76 | AliSimDigits *dig2=0; | |
77 | // | |
78 | tree->GetBranch("Segment")->SetAddress(&dig); | |
79 | tree1->GetBranch("Segment")->SetAddress(&dig1); | |
80 | tree2->GetBranch("Segment")->SetAddress(&dig2); | |
81 | AliTPCParam * param =(AliTPCParam*) f->Get("75x40_100x60"); | |
7a09f434 | 82 | if(param){ |
83 | delete param; | |
84 | param=new AliTPCParamSR(); | |
85 | } | |
86 | else param=(AliTPCParam*) f->Get("75x40_100x60_150x60"); | |
0fb78a3e | 87 | Int_t index = param->GetIndex(sec,row); |
88 | tree->GetEvent(index); | |
89 | tree1->GetEvent(index); | |
90 | tree2->GetEvent(index); | |
9be6ad43 | 91 | |
0fb78a3e | 92 | TCanvas * c = new TCanvas(" Test merged digits", "test",600,900); |
93 | c->Divide(1,3); | |
94 | // | |
95 | c->cd(1); | |
96 | AliH2F * his = dig->DrawDigits("cont1",x1,x2,y1,y2); | |
97 | his->SetTitle("MergedDigits"); | |
8ded1b7a | 98 | his->SetName("Merged Digits"); |
99 | his->GetXaxis()->SetTitle("time"); | |
100 | his->GetYaxis()->SetTitle("pad"); | |
101 | his->DrawClone("cont1"); | |
0fb78a3e | 102 | // |
103 | c->cd(2); | |
104 | AliH2F * his1 =dig1->DrawDigits("cont1",x1,x2,y1,y2); | |
8ded1b7a | 105 | his1->SetTitle("background"); |
106 | his1->SetName("background"); | |
107 | his1->GetXaxis()->SetTitle("time"); | |
108 | his1->GetYaxis()->SetTitle("pad"); | |
109 | his1->DrawClone("cont1"); | |
0fb78a3e | 110 | // |
111 | c->cd(3); | |
112 | AliH2F * his2 =dig2->DrawDigits("cont1",x1,x2,y1,y2); | |
8ded1b7a | 113 | his2->SetTitle("signal"); |
114 | his2->SetName("signal"); | |
115 | his2->GetXaxis()->SetTitle("time"); | |
116 | his2->GetYaxis()->SetTitle("pad"); | |
117 | his2->DrawClone("cont1"); | |
0fb78a3e | 118 | } |
9be6ad43 | 119 | |
0fb78a3e | 120 | |
121 | void drawd(TFile * f, Int_t amp1, Int_t amp2) | |
122 | { | |
7a09f434 | 123 | TTree * tree = (TTree*)f->Get("TreeD_75x40_100x60_150x60_0"); |
0fb78a3e | 124 | AliSimDigits *dig=0; |
125 | tree->GetBranch("Segment")->SetAddress(&dig); | |
126 | TH1F * his = new TH1F("his","his",amp2-amp1,amp1,amp2); | |
127 | for (Int_t i=0;i<60;i++){ | |
128 | tree->GetEvent(i); | |
129 | dig->ExpandBuffer(); | |
130 | Int_t nrows = dig->GetNRows(); | |
131 | Int_t ncols = dig->GetNCols(); | |
132 | for (Int_t rows=0;rows<nrows; rows++) | |
133 | for (Int_t col=0;col<ncols; col++){ | |
134 | Int_t d = dig->GetDigitFast(rows,col); | |
135 | his->Fill(d); | |
136 | } | |
9be6ad43 | 137 | } |
0fb78a3e | 138 | his->Draw(); |
139 | } | |
9be6ad43 | 140 | |
0fb78a3e | 141 | void test1(){ |
a7a1dd76 | 142 | /// test of the merged digits |
143 | /// compare merged digits with standard digits | |
144 | ||
0fb78a3e | 145 | TFile f("galice.root"); |
146 | TFile f1("ev1/galice.root.digits"); | |
147 | TFile f2("ev2/galice.root.digits"); | |
7a09f434 | 148 | TTree * tree = (TTree*)f.Get("TreeD_75x40_100x60_150x60_0"); |
149 | TTree * tree1 = (TTree*)f1.Get("TreeD_75x40_100x60_150x60_0"); | |
150 | TTree * tree2 = (TTree*)f2.Get("TreeD_75x40_100x60_150x60_0"); | |
0fb78a3e | 151 | // |
152 | AliSimDigits *dig=0; | |
153 | AliSimDigits *dig1=0; | |
154 | AliSimDigits *dig2=0; | |
155 | // | |
156 | tree->GetBranch("Segment")->SetAddress(&dig); | |
157 | tree1->GetBranch("Segment")->SetAddress(&dig1); | |
158 | tree2->GetBranch("Segment")->SetAddress(&dig2); | |
159 | // | |
160 | for (Int_t i=0;i<6000;i++){ | |
161 | tree->GetEvent(i); | |
162 | tree1->GetEvent(i); | |
163 | tree2->GetEvent(i); | |
164 | dig->ExpandBuffer(); | |
165 | dig1->ExpandBuffer(); | |
166 | dig2->ExpandBuffer(); | |
167 | // | |
168 | Int_t nrows = dig->GetNRows(); | |
169 | Int_t ncols = dig->GetNCols(); | |
170 | for (Int_t rows=0;rows<nrows; rows++) | |
171 | for (Int_t col=0;col<ncols; col++){ | |
172 | Int_t d = dig->GetDigitFast(rows,col); | |
173 | Int_t d1 = dig1->GetDigitFast(rows,col); | |
174 | Int_t d2 = dig2->GetDigitFast(rows,col); | |
175 | ||
8ded1b7a | 176 | if (abs(d-(d1+d2))>4) |
0fb78a3e | 177 | printf("%d\t%d\t%d\t%d\t%d\t%d\n",i,rows,col,d,d1,d2); |
178 | } | |
9be6ad43 | 179 | } |
0fb78a3e | 180 | } |
9be6ad43 | 181 | |
0fb78a3e | 182 | void test5(){ |
a7a1dd76 | 183 | /// compare merged digits with digits obtained hits2sdig->sdigtodig |
184 | ||
0fb78a3e | 185 | TFile f("galice.root"); |
186 | TFile f1("ev1/galice.root.dig2"); | |
187 | TFile f2("ev2/galice.root.dig2"); | |
7a09f434 | 188 | TTree * tree = (TTree*)f.Get("TreeD_75x40_100x60_150x60_0"); |
189 | TTree * tree1 = (TTree*)f1.Get("TreeD_75x40_100x60_150x60_0"); | |
190 | TTree * tree2 = (TTree*)f2.Get("TreeD_75x40_100x60_150x60_0"); | |
9be6ad43 | 191 | |
0fb78a3e | 192 | AliSimDigits *dig=0; |
193 | AliSimDigits *dig1=0; | |
194 | AliSimDigits *dig2=0; | |
9be6ad43 | 195 | |
0fb78a3e | 196 | tree->GetBranch("Segment")->SetAddress(&dig); |
197 | tree1->GetBranch("Segment")->SetAddress(&dig1); | |
198 | tree2->GetBranch("Segment")->SetAddress(&dig2); | |
199 | ||
200 | ||
201 | ||
202 | ||
203 | for (Int_t i=0;i<6000;i++){ | |
204 | tree->GetEvent(i); | |
205 | tree1->GetEvent(i); | |
206 | tree2->GetEvent(i); | |
207 | dig->ExpandBuffer(); | |
208 | dig1->ExpandBuffer(); | |
209 | dig2->ExpandBuffer(); | |
9be6ad43 | 210 | |
0fb78a3e | 211 | Int_t nrows = dig->GetNRows(); |
212 | Int_t ncols = dig->GetNCols(); | |
213 | ||
214 | for (Int_t rows=0;rows<nrows; rows++) | |
215 | for (Int_t col=0;col<ncols; col++){ | |
216 | Int_t d = dig->GetDigitFast(rows,col); | |
217 | Int_t d1 = dig1->GetDigitFast(rows,col); | |
218 | Int_t d2 = dig2->GetDigitFast(rows,col); | |
219 | ||
220 | if (abs(d-d1-d2)>4) | |
221 | //if (d2>5) | |
222 | printf("%d\t%d\t%d\t%d\t%d\t%d\n",i,rows,col,d,d1,d2); | |
223 | } | |
224 | } | |
225 | } | |
226 | ||
227 | void test3(){ | |
a7a1dd76 | 228 | /// test of the merged digits |
229 | ||
0fb78a3e | 230 | TFile f("galice.root"); |
231 | TFile f1("ev1/galice.root.sdigits"); | |
232 | TFile f2("ev2/galice.root.sdigits"); | |
7a09f434 | 233 | TTree * tree = (TTree*)f.Get("TreeD_75x40_100x60_150x60_0"); |
234 | TTree * tree1 = (TTree*)f1.Get("TreeS_75x40_100x60_150x60_0"); | |
235 | TTree * tree2 = (TTree*)f2.Get("TreeS_75x40_100x60_150x60_0"); | |
0fb78a3e | 236 | // |
237 | AliSimDigits *dig=0; | |
238 | AliSimDigits *dig1=0; | |
239 | AliSimDigits *dig2=0; | |
240 | // | |
241 | tree->GetBranch("Segment")->SetAddress(&dig); | |
242 | tree1->GetBranch("Segment")->SetAddress(&dig1); | |
243 | tree2->GetBranch("Segment")->SetAddress(&dig2); | |
244 | // | |
245 | for (Int_t i=0;i<6000;i++){ | |
246 | tree->GetEvent(i); | |
247 | tree1->GetEvent(i); | |
248 | tree2->GetEvent(i); | |
249 | if ( (dig1->GetID()!=i) || (dig2->GetID()!=i) ) { | |
250 | printf("missed segments\n"); | |
251 | } | |
252 | // | |
253 | dig->ExpandBuffer(); | |
254 | dig1->ExpandBuffer(); | |
255 | dig2->ExpandBuffer(); | |
256 | // | |
257 | Int_t nrows = dig->GetNRows(); | |
258 | Int_t ncols = dig->GetNCols(); | |
259 | // | |
260 | for (Int_t rows=0;rows<nrows; rows++) | |
261 | for (Int_t col=0;col<ncols; col++){ | |
262 | Int_t d = dig->GetDigitFast(rows,col); | |
263 | Int_t d1 = dig1->GetDigitFast(rows,col)/16; | |
264 | Int_t d2 = dig2->GetDigitFast(rows,col)/16; | |
265 | if (abs(d-d1-d2)>4) | |
266 | //if (d2>5) | |
267 | printf("%d\t%d\t%d\t%d\t%d\t%d\n",i,rows,col,d,d1,d2); | |
268 | } | |
269 | } | |
270 | } | |
271 | ||
272 | ||
8ded1b7a | 273 | void TestSDigitsDig2(){ |
a7a1dd76 | 274 | /// test of the digits produced by the Hits2Digits |
275 | /// and Hits2SDigits - SDigits2Digits chain | |
276 | ||
8ded1b7a | 277 | TFile f1("galice.root.digits"); |
278 | TFile f2("galice.root.dig2"); | |
279 | // | |
7a09f434 | 280 | TTree * tree1 = (TTree*)f1.Get("TreeD_75x40_100x60_150x60_0"); |
281 | TTree * tree2 = (TTree*)f2.Get("TreeD_75x40_100x60_150x60_0"); | |
8ded1b7a | 282 | // |
283 | AliSimDigits *dig1=0; | |
284 | AliSimDigits *dig2=0; | |
285 | // | |
286 | tree1->GetBranch("Segment")->SetAddress(&dig1); | |
287 | tree2->GetBranch("Segment")->SetAddress(&dig2); | |
288 | // | |
289 | for (Int_t i=0;i<6000;i++){ | |
290 | //tree->GetEvent(i); | |
291 | tree1->GetEvent(i); | |
292 | tree2->GetEvent(i); | |
293 | //dig->ExpandBuffer(); | |
294 | if ( (dig1->GetID()!=i) || (dig2->GetID()!=i) ) { | |
295 | printf("miised semgnets\n"); | |
296 | } | |
297 | // | |
298 | dig1->ExpandBuffer(); | |
299 | dig2->ExpandBuffer(); | |
300 | dig1->ExpandTrackBuffer(); | |
301 | dig2->ExpandTrackBuffer(); | |
302 | // | |
303 | Int_t nrows = dig1->GetNRows(); | |
304 | Int_t ncols = dig1->GetNCols(); | |
305 | // | |
306 | for (Int_t rows=0;rows<nrows; rows++) | |
307 | for (Int_t col=0;col<ncols; col++){ | |
308 | Int_t d1 = dig1->GetDigitFast(rows,col); | |
309 | Int_t d2 = dig2->GetDigitFast(rows,col); | |
310 | Int_t t1_1 =dig1->GetTrackIDFast(rows,col,0); | |
311 | Int_t t1_2 =dig1->GetTrackIDFast(rows,col,1); | |
312 | Int_t t1_3 =dig1->GetTrackIDFast(rows,col,2); | |
313 | // | |
314 | Int_t t2_1 =dig2->GetTrackIDFast(rows,col,0); | |
315 | Int_t t2_2 =dig2->GetTrackIDFast(rows,col,1); | |
316 | Int_t t2_3 =dig2->GetTrackIDFast(rows,col,2); | |
317 | // | |
318 | if ( (d2>0) && (d1>0)) | |
319 | if ( ( ( d2>2) || (d1>2)) && (t2_1!=t1_1)) { | |
320 | printf("%d\t%d\t%d\t\t%d\t%d\n",i,rows,col,t1_1,t2_1); | |
321 | printf("\t\t\t\t%d\t%d\n",d1,d2); | |
322 | } | |
323 | } | |
324 | } | |
325 | } | |
326 | ||
327 | void TestSDigitsDig1(){ | |
a7a1dd76 | 328 | /// test of the digits produced by the Hits2Digits |
329 | /// and Hits2SDigits - SDigits2Digits chain | |
330 | ||
0fb78a3e | 331 | TFile f1("galice.root.digits"); |
332 | TFile f2("galice.root.dig2"); | |
333 | // | |
7a09f434 | 334 | TTree * tree1 = (TTree*)f1.Get("TreeD_75x40_100x60_150x60_0"); |
335 | TTree * tree2 = (TTree*)f2.Get("TreeD_75x40_100x60_150x60_0"); | |
0fb78a3e | 336 | // |
337 | AliSimDigits *dig1=0; | |
338 | AliSimDigits *dig2=0; | |
339 | // | |
340 | tree1->GetBranch("Segment")->SetAddress(&dig1); | |
341 | tree2->GetBranch("Segment")->SetAddress(&dig2); | |
342 | // | |
343 | for (Int_t i=0;i<6000;i++){ | |
344 | //tree->GetEvent(i); | |
345 | tree1->GetEvent(i); | |
346 | tree2->GetEvent(i); | |
347 | //dig->ExpandBuffer(); | |
348 | if ( (dig1->GetID()!=i) || (dig2->GetID()!=i) ) { | |
349 | printf("miised semgnets\n"); | |
350 | } | |
351 | // | |
352 | dig1->ExpandBuffer(); | |
353 | dig2->ExpandBuffer(); | |
8ded1b7a | 354 | dig1->ExpandTrackBuffer(); |
355 | dig2->ExpandTrackBuffer(); | |
0fb78a3e | 356 | // |
357 | Int_t nrows = dig1->GetNRows(); | |
358 | Int_t ncols = dig1->GetNCols(); | |
359 | // | |
360 | for (Int_t rows=0;rows<nrows; rows++) | |
361 | for (Int_t col=0;col<ncols; col++){ | |
362 | // Int_t d = dig->GetDigitFast(rows,col); | |
363 | Int_t d1 = dig1->GetDigitFast(rows,col); | |
364 | Int_t d2 = dig2->GetDigitFast(rows,col); | |
8ded1b7a | 365 | |
0fb78a3e | 366 | // |
8ded1b7a | 367 | if ( ((d2>4) || (d1>4)) && abs(d1-d2)>4) |
368 | printf("%d\t%d\t%d\t\t%d\t%d\n",i,rows,col,d1,d2); | |
0fb78a3e | 369 | } |
370 | } | |
371 | } | |
9be6ad43 | 372 | |
373 | ||
374 | ||
0fb78a3e | 375 | void test4(){ |
a7a1dd76 | 376 | /// TPC internal test |
377 | ||
0fb78a3e | 378 | TFile f1("galice.root.sdigits"); |
379 | TFile f2("galice.root.digits"); | |
7a09f434 | 380 | TTree * tree1 = (TTree*)f1.Get("TreeS_75x40_100x60_150x60_0"); |
381 | TTree * tree2 = (TTree*)f2.Get("TreeD_75x40_100x60_150x60_0"); | |
0fb78a3e | 382 | // |
383 | AliSimDigits *dig1=0; | |
384 | AliSimDigits *dig2=0; | |
385 | // | |
386 | tree1->GetBranch("Segment")->SetAddress(&dig1); | |
387 | tree2->GetBranch("Segment")->SetAddress(&dig2); | |
388 | // | |
389 | for (Int_t i=0;i<6000;i++){ | |
390 | //tree->GetEvent(i); | |
391 | tree1->GetEvent(i); | |
392 | tree2->GetEvent(i); | |
393 | //dig->ExpandBuffer(); | |
394 | if ( (dig1->GetID()!=i) || (dig2->GetID()!=i) ) { | |
395 | printf("miised semgnets\n"); | |
396 | } | |
397 | // | |
398 | dig1->ExpandBuffer(); | |
399 | dig2->ExpandBuffer(); | |
400 | // | |
401 | Int_t nrows = dig1->GetNRows(); | |
402 | Int_t ncols = dig1->GetNCols(); | |
403 | // | |
404 | for (Int_t rows=0;rows<nrows; rows++) | |
405 | for (Int_t col=0;col<ncols; col++){ | |
406 | Int_t d1 = dig1->GetDigitFast(rows,col)/16.; | |
407 | Int_t d2 = dig2->GetDigitFast(rows,col); | |
408 | if ((d2>5) &&abs(d1-d2)>2) printf("%d\t%d\t%d\t\t%d\t%d\n",i,rows,col,d1,d2); | |
409 | } | |
410 | } | |
411 | } | |
412 |