3b96aee8 |
1 | void ControlPlots() |
2 | { |
3 | Int_t iChamber=1; |
4 | |
a239137a |
5 | TH1F *pCqH1=new TH1F("clusq","Cluster Charge;q [QDC]",AliRICHParam::MaxQdc(),0,AliRICHParam::MaxQdc()); |
6 | TH1F *pDqH1=new TH1F("digq","Digit Charge;q [QDC]",AliRICHParam::MaxQdc(),0,AliRICHParam::MaxQdc()); |
3b96aee8 |
7 | al->LoadHeader(); al->LoadKinematics(); |
8 | |
9 | Bool_t isHits=!rl->LoadHits(); |
10 | Bool_t isSDigits=!rl->LoadSDigits(); |
11 | Bool_t isClusters=!rl->LoadRecPoints(); |
12 | Bool_t isDigits=!rl->LoadDigits(); |
13 | |
14 | for(Int_t iEventN=0;iEventN<a->GetEventsPerRun();iEventN++){//events loop |
15 | al->GetEvent(iEventN); |
16 | if(isHits){ |
17 | for(Int_t iPrimN=0;iPrimN<rl->TreeH()->GetEntries();iPrimN++){//prims loop |
18 | rl->TreeH()->GetEntry(iPrimN); |
19 | Int_t iTotalHits=0,iTotalCerenkovs=0,iTotalSpecials=0; |
20 | iTotalHits+=r->Hits()->GetEntries(); |
21 | iTotalCerenkovs+=r->Cerenkovs()->GetEntries(); |
22 | iTotalSpecials+=r->Specials()->GetEntries(); |
23 | }//prims loop |
24 | }//isHits |
25 | if(isSDigits){ |
26 | rl->TreeS()->GetEntry(0); |
27 | }//isSdigits |
28 | if(isDigits){ |
29 | rl->TreeD()->GetEntry(0); |
a239137a |
30 | Int_t iTotalDigits=0; |
31 | for(int i=1;i<=7;i++) iTotalDigits+=r->Clusters(i)->GetEntries(); |
32 | for(Int_t iDigitN=0;iDigitN<r->Digits(iChamber)->GetEntries();iDigitN++){ |
33 | pDqH1->Fill(((AliRICHdigit*)r->Digits(iChamber)->At(iDigitN))->Q()); |
34 | }//digits loop |
3b96aee8 |
35 | }//isDigits |
36 | if(isClusters){ |
37 | rl->TreeR()->GetEntry(0); |
38 | Int_t iTotalClusters=0; |
39 | for(int i=1;i<=7;i++) iTotalClusters+=r->Clusters(i)->GetEntries(); |
40 | for(Int_t iClusterN=0;iClusterN<r->Clusters(iChamber)->GetEntries();iClusterN++){ |
a239137a |
41 | pCqH1->Fill(((AliRICHcluster*)r->Clusters(iChamber)->At(iClusterN))->Q()); |
3b96aee8 |
42 | }//clusters loop |
43 | }//isClusters |
a239137a |
44 | cout<<"Event "<<iEventN<<endl; |
3b96aee8 |
45 | }//events loop |
46 | if(isHits) rl->UnloadHits(); |
47 | if(isSDigits) rl->UnloadSDigits(); |
48 | if(isDigits) rl->UnloadDigits(); |
49 | if(isClusters) rl->UnloadRecPoints(); |
a239137a |
50 | al->UnloadHeader(); al->UnloadKinematics(); |
51 | TCanvas *pC=new TCanvas("c","Control Plots",600,500); |
52 | pC->Divide(2,2); |
53 | pC->cd(1); pCqH1->Draw(); |
54 | pC->cd(2); pDqH1->Draw(); |
3b96aee8 |
55 | }//void ControlPlots() |
56 | //__________________________________________________________________________________________________ |
c67b2d9f |
57 | void MainTrank() |
58 | { |
59 | TStopwatch sw;TDatime time; |
3b96aee8 |
60 | OLD_S_SD(); SD_D(); D_C(); |
c67b2d9f |
61 | cout<<"\nInfo in <MainTrank>: Start time: ";time.Print(); |
62 | cout<<"Info in <MainTrank>: Stop time: ";time.Set(); time.Print(); |
63 | cout<<"Info in <MainTrank>: Time used: ";sw.Print(); |
64 | } |
3b96aee8 |
65 | //__________________________________________________________________________________________________ |
66 | void sh() |
67 | { |
68 | if(rl->LoadHits()) return; |
69 | |
70 | Int_t iTotalHits=0; |
71 | for(Int_t iPrimN=0;iPrimN<rl->TreeH()->GetEntries();iPrimN++){//prims loop |
72 | rl->TreeH()->GetEntry(iPrimN); |
73 | r->Hits()->Print(); |
74 | iTotalHits+=r->Hits()->GetEntries(); |
75 | } |
76 | Info("sh","totally %i hits",iTotalHits); |
77 | rl->UnloadHits(); |
78 | } |
79 | //__________________________________________________________________________________________________ |
80 | void ssp() |
81 | { |
82 | if(rl->LoadHits()) return; |
83 | |
84 | Int_t iTotalSpecials=0; |
85 | for(Int_t iPrimN=0;iPrimN<rl->TreeH()->GetEntries();iPrimN++){//prims loop |
86 | rl->TreeH()->GetEntry(iPrimN); |
87 | r->Specials()->Print(); |
88 | iTotalSpecials+=r->Specials()->GetEntries(); |
89 | } |
90 | Info("ssp","totally %i specials",iTotalSpecials); |
91 | rl->UnloadHits(); |
92 | } |
93 | //__________________________________________________________________________________________________ |
d32d34bf |
94 | void ss() |
95 | { |
c1863e3c |
96 | if(rl->LoadSDigits()) return; |
d32d34bf |
97 | rl->TreeS()->GetEntry(0); |
98 | r->SDigits()->Print(); |
3b96aee8 |
99 | Info("ss","totally %i sdigits",r->SDigits()->GetEntries()); |
d32d34bf |
100 | rl->UnloadSDigits(); |
101 | } |
3b96aee8 |
102 | //__________________________________________________________________________________________________ |
c1863e3c |
103 | void sd() |
104 | { |
105 | if(rl->LoadDigits()) return; |
106 | rl->TreeD()->GetEntry(0); |
3b96aee8 |
107 | Int_t iTotalDigits=0; |
108 | for(int i=1;i<=7;i++){ |
109 | r->Digits(i)->Print(); |
110 | iTotalDigits+=r->Digits(i)->GetEntries(); |
111 | } |
112 | Info("sd","totally %i digits",iTotalDigits); |
c1863e3c |
113 | rl->UnloadDigits(); |
114 | } |
115 | |
116 | void sc() |
117 | { |
118 | if(rl->LoadRecPoints()) return; |
c67b2d9f |
119 | r->SetTreeAddress(); |
c1863e3c |
120 | rl->TreeR()->GetEntry(0); |
121 | for(int i=1;i<=7;i++) r->Clusters(i)->Print(); |
122 | rl->UnloadRecPoints(); |
123 | } |
8fc0dab8 |
124 | |
125 | Double_t r2d = TMath::RadToDeg(); |
126 | Double_t d2r = TMath::DegToRad(); |
127 | |
fa49f877 |
128 | void DisplFast() |
129 | { |
130 | AliRICHDisplFast *d = new AliRICHDisplFast(); |
aed240d4 |
131 | d->Exec(); |
fa49f877 |
132 | } |
133 | |
134 | |
543d5224 |
135 | void Digits2Recos() |
c60862bf |
136 | { |
5cb4dfc3 |
137 | AliRICHRecon *detect = new AliRICHRecon("RICH patrec algorithm","Reconstruction"); |
543d5224 |
138 | |
139 | |
8fc0dab8 |
140 | for (int nev=0; nev< a->GetEventsPerRun(); nev++) { // Event Loop |
543d5224 |
141 | al->GetEvent(nev); |
142 | cout <<endl<< "Processing event:" <<nev<<endl; |
5cb4dfc3 |
143 | detect->StartProcessEvent(); |
543d5224 |
144 | } // event loop |
fa49f877 |
145 | delete detect; |
543d5224 |
146 | } |
147 | |
148 | |
149 | |
543d5224 |
150 | |
d32d34bf |
151 | void D_C() |
543d5224 |
152 | { |
153 | AliRICHClusterFinder *z=new AliRICHClusterFinder(r); |
154 | z->Exec(); |
155 | } |
d32d34bf |
156 | //__________________________________________________________________________________________________ |
157 | void OLD_S_SD() |
c60862bf |
158 | { |
d32d34bf |
159 | Info("OLD_S_SD","Start."); |
c60862bf |
160 | |
543d5224 |
161 | rl->LoadHits(); |
c60862bf |
162 | |
163 | for(Int_t iEventN=0;iEventN<a->GetEventsPerRun();iEventN++){//events loop |
a239137a |
164 | al->GetEvent(iEventN); cout<<"Event "<<iEventN<<endl; |
c60862bf |
165 | |
543d5224 |
166 | rl->MakeTree("S"); r->MakeBranch("S"); |
d32d34bf |
167 | r->ResetSDigits(); r->ResetSpecialsOld(); |
543d5224 |
168 | |
c60862bf |
169 | for(Int_t iPrimN=0;iPrimN<rl->TreeH()->GetEntries();iPrimN++){//prims loop |
170 | rl->TreeH()->GetEntry(iPrimN); |
171 | for(Int_t i=0;i<r->Specials()->GetEntries();i++){//specials loop |
a239137a |
172 | Int_t padx=1+ ((AliRICHSDigit*)r->Specials()->At(i))->PadX()+r->Param()->NpadsX()/2; |
173 | Int_t pady=1+ ((AliRICHSDigit*)r->Specials()->At(i))->PadY()+r->Param()->NpadsY()/2; |
d32d34bf |
174 | Double_t q= ((AliRICHSDigit*)r->Specials()->At(i))->QPad(); |
543d5224 |
175 | Int_t hitN= ((AliRICHSDigit*)r->Specials()->At(i))->HitNumber()-1;//!!! important -1 |
176 | Int_t chamber=((AliRICHhit*)r->Hits()->At(hitN))->C(); |
177 | Int_t track=((AliRICHhit*)r->Hits()->At(hitN))->GetTrack(); |
3b96aee8 |
178 | if(padx<1 || padx>r->Param()->NpadsX() ||pady<1 || pady>r->Param()->NpadsY()) |
a239137a |
179 | Warning("OLD_S_SD","pad is out of valid range padx= %i pady=%i event %i",padx,pady,iEventN); |
3b96aee8 |
180 | else |
181 | r->AddSDigit(chamber,padx,pady,q,track); |
c60862bf |
182 | }//specials loop |
183 | }//prims loop |
184 | rl->TreeS()->Fill(); |
185 | rl->WriteSDigits("OVERWRITE"); |
c60862bf |
186 | }//events loop |
187 | rl->UnloadHits(); rl->UnloadSDigits(); |
d32d34bf |
188 | Info("OLD_S_SD","Stop."); |
3b96aee8 |
189 | }//OLD_S_SD() |
543d5224 |
190 | //__________________________________________________________________________________________________ |
c712cb2f |
191 | void H_SD() |
c60862bf |
192 | { |
c712cb2f |
193 | Info("H_SD","Start."); |
c60862bf |
194 | |
195 | for(Int_t iEventN=0;iEventN<a->GetEventsPerRun();iEventN++){//events loop |
196 | al->GetEvent(iEventN); |
197 | |
198 | if(!rl->TreeH()) rl->LoadHits();//from |
199 | if(!rl->TreeS()) rl->MakeTree("S"); r->MakeBranch("S");//to |
543d5224 |
200 | |
c60862bf |
201 | for(Int_t iPrimN=0;iPrimN<rl->TreeH()->GetEntries();iPrimN++){//prims loop |
202 | rl->TreeH()->GetEntry(iPrimN); |
d32d34bf |
203 | for(Int_t iHitN=0;iHitN<3;iHitN++){//hits loop ??? |
c712cb2f |
204 | AliRICHhit *pHit=r->Hits()->At(iHitN); |
205 | TVector3 globX3(pHit->X(),pHit->Y(),pHit->Z()); |
206 | TVector3 locX3=r->C(pHit->C())->Glob2Loc(globX3); |
207 | |
208 | Int_t sector; |
209 | Int_t iTotQdc=r->Param()->Loc2TotQdc(locX3,pHit->Eloss(),pHit->Pid(),sector); |
210 | |
211 | Int_t iPadXmin,iPadXmax,iPadYmin,iPadYmax; |
212 | r->Param()->Loc2Area(locX3,iPadXmin,iPadYmin,iPadXmax,iPadYmax); |
213 | cout<<"left-down=("<<iPadXmin<<","<<iPadYmin<<") right-up=("<<iPadXmax<<','<<iPadYmax<<')'<<endl; |
214 | for(Int_t iPadY=iPadYmin;iPadY<=iPadYmax;iPadY++) |
215 | for(Int_t iPadX=iPadXmin;iPadX<=iPadXmax;iPadX++){ |
d32d34bf |
216 | Double_t padQdc=iTotQdc*r->Param()->Loc2PadFrac(locX3,iPadX,iPadY); |
217 | if(padQdc>0.1)r->AddSDigit(pHit->C(),iPadX,iPadY,padQdc,pHit->GetTrack()); |
218 | } |
c712cb2f |
219 | }//hits loop |
220 | }//prims loop |
c60862bf |
221 | rl->TreeS()->Fill(); |
222 | rl->WriteSDigits("OVERWRITE"); |
223 | }//events loop |
224 | |
225 | rl->UnloadHits(); |
226 | rl->UnloadSDigits(); |
d32d34bf |
227 | Info("H_SD","Stop."); |
3b96aee8 |
228 | }//H_SD() |
543d5224 |
229 | //__________________________________________________________________________________________________ |
d32d34bf |
230 | void SD_D() |
543d5224 |
231 | { |
d32d34bf |
232 | Info("SD_D","Start."); |
543d5224 |
233 | |
a239137a |
234 | r->Param()->GenSigmaThMap(); |
543d5224 |
235 | rl->LoadSDigits(); |
236 | |
237 | for(Int_t iEventN=0;iEventN<a->GetEventsPerRun();iEventN++){//events loop |
a239137a |
238 | al->GetEvent(iEventN); cout<<"Event "<<iEventN<<endl; |
543d5224 |
239 | rl->MakeTree("D");r->MakeBranch("D"); //create TreeD with RICH branches |
d32d34bf |
240 | r->ResetSDigits();r->ResetDigits();//reset lists of sdigits and digits |
543d5224 |
241 | rl->TreeS()->GetEntry(0); |
d32d34bf |
242 | r->SDigits()->Sort(); |
543d5224 |
243 | |
244 | Int_t kBad=-101; |
d32d34bf |
245 | Int_t chamber,x,y,tr[3],id; |
246 | Double_t q=kBad; |
247 | chamber=x=y=tr[0]=tr[1]=tr[2]=id=kBad; |
543d5224 |
248 | Int_t iNdigitsPerPad=kBad;//how many sdigits for a given pad |
249 | |
d32d34bf |
250 | for(Int_t i=0;i<r->SDigits()->GetEntries();i++){//sdigits loop (sorted) |
251 | AliRICHdigit *pSdig=(AliRICHdigit*)r->SDigits()->At(i); |
543d5224 |
252 | if(pSdig->Id()==id){//still the same pad |
253 | iNdigitsPerPad++; |
d32d34bf |
254 | q+=pSdig->Q(); |
543d5224 |
255 | if(iNdigitsPerPad<=3) |
256 | tr[iNdigitsPerPad-1]=pSdig->T(0); |
3b96aee8 |
257 | // else |
258 | // Info("","More then 3 sdigits for the given pad"); |
543d5224 |
259 | }else{//new pad, add the pevious one |
a239137a |
260 | if(id!=kBad&&r->Param()->IsOverTh(chamber,x,y,q)) |
261 | r->AddDigit(chamber,x,y,q,tr[0],tr[1],tr[2]);//ch-xpad-ypad-qdc-tr1-2-3 |
d32d34bf |
262 | chamber=pSdig->C();x=pSdig->X();y=pSdig->Y();q=pSdig->Q();tr[0]=pSdig->T(0);id=pSdig->Id(); |
543d5224 |
263 | iNdigitsPerPad=1;tr[1]=tr[2]=kBad; |
264 | } |
265 | }//sdigits loop (sorted) |
266 | |
a239137a |
267 | if(r->SDigits()->GetEntries()&&r->Param()->IsOverTh(chamber,x,y,q)) |
268 | r->AddDigit(chamber,x,y,q,tr[0],tr[1],tr[2]);//add the last digit |
543d5224 |
269 | |
270 | rl->TreeD()->Fill(); |
271 | rl->WriteDigits("OVERWRITE"); |
272 | }//events loop |
273 | rl->UnloadSDigits(); rl->UnloadDigits(); |
d32d34bf |
274 | r->ResetSDigits();r->ResetDigits();//reset lists of sdigits and digits |
275 | Info("SD_D","Stop."); |
3b96aee8 |
276 | }//SD_D() |
08479a10 |
277 | //__________________________________________________________________________________________________ |
3b96aee8 |
278 | void Show() |
d48cca74 |
279 | { |
abb44d7c |
280 | cout<<endl; |
c60862bf |
281 | al->LoadHeader(); al->LoadKinematics(); |
abb44d7c |
282 | |
aed240d4 |
283 | rl->LoadHits(); |
284 | Bool_t isSdigits=!rl->LoadSDigits(); |
285 | Bool_t isClusters=!rl->LoadRecPoints(); |
286 | Bool_t isDigits=!rl->LoadDigits();//loaders |
c60862bf |
287 | |
288 | cout<<endl; cout<<endl; |
289 | for(Int_t iEventN=0;iEventN<a->GetEventsPerRun();iEventN++){//events loop |
290 | Int_t iNparticles=a->GetEvent(iEventN); |
abb44d7c |
291 | Int_t iNprims=rl->TreeH()->GetEntries(); |
c60862bf |
292 | |
293 | Int_t iTotalHits=0,iTotalCerenkovs=0,iTotalSpecials=0; |
abb44d7c |
294 | for(Int_t iPrimN=0;iPrimN<iNprims;iPrimN++){//prims loop |
c60862bf |
295 | rl->TreeH()->GetEntry(iPrimN); |
296 | iTotalHits+=r->Hits()->GetEntries(); |
297 | iTotalCerenkovs+=r->Cerenkovs()->GetEntries(); |
298 | iTotalSpecials+=r->Specials()->GetEntries(); |
abb44d7c |
299 | TParticle *pPrim=al->Stack()->Particle(iPrimN); |
543d5224 |
300 | Info("Show","Evt %4i prim %4i has %4i hits %5i cerenkovs and %5i specials from %s (,%7.2f,%7.2f)", |
c60862bf |
301 | iEventN, |
302 | iPrimN, |
303 | r->Hits()->GetEntries(), |
304 | r->Cerenkovs()->GetEntries(), |
305 | r->Specials()->GetEntries(), |
306 | pPrim->GetName(), |
307 | pPrim->Theta()*r2d,pPrim->Phi()*r2d); |
abb44d7c |
308 | }//prims loop |
543d5224 |
309 | Info("Show-HITS","Evt %i total: %i particles %i primaries %i hits %i cerenkovs %i specials", |
c60862bf |
310 | iEventN, iNparticles, iNprims, iTotalHits,iTotalCerenkovs,iTotalSpecials); |
311 | if(isSdigits){ |
312 | rl->TreeS()->GetEntry(0); |
d32d34bf |
313 | Info("Show-SDIGITS","Evt %i contains %5i sdigits",iEventN,r->SDigits()->GetEntries()); |
abb44d7c |
314 | } |
c60862bf |
315 | if(isDigits){ |
316 | rl->TreeD()->GetEntry(0); |
543d5224 |
317 | for(int i=1;i<=7;i++) |
aed240d4 |
318 | Info("Show-DIGITS","Evt %i chamber %i contains %5i digits", |
319 | iEventN, i, r->Digits(i)->GetEntries()); |
320 | } |
321 | if(isClusters){ |
322 | rl->TreeR()->GetEntry(0); |
323 | for(int i=1;i<=7;i++) |
324 | Info("Show-CLUSTERS","Evt %i chamber %i contains %5i clusters", |
325 | iEventN, i, r->Clusters(i)->GetEntries()); |
c60862bf |
326 | } |
327 | cout<<endl; |
abb44d7c |
328 | }//events loop |
aed240d4 |
329 | rl->UnloadHits(); |
330 | if(isSdigits) rl->UnloadSDigits(); |
331 | if(isDigits) rl->UnloadDigits(); |
332 | if(isClusters) rl->UnloadRecPoints(); |
abb44d7c |
333 | al->UnloadHeader(); |
334 | al->UnloadKinematics(); |
335 | cout<<endl; |
d48cca74 |
336 | }//void Show() |
aed240d4 |
337 | //__________________________________________________________________________________________________ |
abb44d7c |
338 | |
d48cca74 |
339 | |
d48cca74 |
340 | AliRun *a; |
853634d3 |
341 | AliRunLoader *al; |
342 | AliLoader *rl,*tl,*il; |
343 | |
344 | AliRICH *r; |
853634d3 |
345 | |
d32d34bf |
346 | Bool_t ReadAlice() |
d48cca74 |
347 | { |
d32d34bf |
348 | Info("ReadAlice","Tring to read ALICE from SIMULATED FILE."); |
abb44d7c |
349 | AliLoader::SetDebug(0); |
350 | if(gAlice) delete gAlice; |
351 | if(!(al=AliRunLoader::Open("galice.root","AlicE","update"))){ |
352 | gSystem->Exec("rm -rf *.root *.dat"); |
d32d34bf |
353 | Error("ReadAlice","galice.root broken, removing all this garbage then init new one"); |
354 | new AliRun("gAlice","Alice experiment system"); |
355 | gAlice->SetDebug(-1); |
356 | gAlice->Init("ConfigRich.C"); |
357 | r=(AliRICH*)gAlice->GetDetector("RICH"); |
358 | return kFALSE; |
abb44d7c |
359 | } |
360 | al->LoadgAlice(); |
361 | if(!gAlice) Fatal("ReadAlice","No gAlice in file"); |
362 | a=al->GetAliRun(); |
363 | a->SetDebug(0); |
364 | //RICH |
365 | if(!(r=(AliRICH*)gAlice->GetDetector("RICH"))) Warning("RICH/menu.C::ReadAlice","No RICH in file"); |
366 | r->SetDebug(0); |
367 | if(!(rl=al->GetLoader("RICHLoader"))) Warning("RICH/menu.C::ReadAlice","No RICH loader in file"); |
368 | |
369 | Info("ReadAlice","Run contains %i event(s)",gAlice->GetEventsPerRun()); |
d32d34bf |
370 | return kTRUE; |
abb44d7c |
371 | } |
372 | //__________________________________________________________________________________________________ |
d48cca74 |
373 | void PrintGeo(Float_t rotDeg=0) |
374 | { |
375 | AliRICHParam *p=new AliRICHParam; |
376 | Double_t r=p->Offset(); |
377 | Double_t kP=p->AngleXY(); |
378 | Double_t kT=p->AngleYZ(); |
379 | Double_t kRot; |
380 | |
381 | if(rotDeg==0) |
382 | kRot=p->AngleRot(); |
383 | else |
384 | kRot=rotDeg*deg; |
385 | |
386 | cout<<endl; |
3ea9cb08 |
387 | Double_t phi=90*deg+kRot+kP,theta=90*deg+kT; |
d48cca74 |
388 | Info(" menu for 1","r=%8.3f theta=%5.1f phi=%5.1f x=%8.3f y=%8.3f z=%8.3f", |
853634d3 |
389 | r, theta*r2d, phi*r2d, |
d48cca74 |
390 | r*sin(theta)*cos(phi), |
391 | r*sin(theta)*sin(phi), |
392 | r*cos(theta)); |
393 | |
3ea9cb08 |
394 | phi=90*deg+kRot+kP,theta=90*deg; |
d48cca74 |
395 | Info(" menu for 2","r=%8.3f theta=%5.1f phi=%5.1f x=%8.3f y=%8.3f z=%8.3f", |
853634d3 |
396 | r, theta*r2d, phi*r2d, |
d48cca74 |
397 | r*sin(theta)*cos(phi), |
398 | r*sin(theta)*sin(phi), |
399 | r*cos(theta)); |
d48cca74 |
400 | |
3ea9cb08 |
401 | phi=90*deg+kRot,theta=90*deg-kT; |
d48cca74 |
402 | Info(" menu for 3","r=%8.3f theta=%5.1f phi=%5.1f x=%8.3f y=%8.3f z=%8.3f", |
853634d3 |
403 | r, theta*r2d, phi*r2d, |
d48cca74 |
404 | r*sin(theta)*cos(phi), |
405 | r*sin(theta)*sin(phi), |
406 | r*cos(theta)); |
3ea9cb08 |
407 | |
408 | |
409 | phi=90*deg+kRot,theta=90*deg; |
d48cca74 |
410 | Info(" menu for 4","r=%8.3f theta=%5.1f phi=%5.1f x=%8.3f y=%8.3f z=%8.3f", |
853634d3 |
411 | r, theta*r2d, phi*r2d, |
d48cca74 |
412 | r*sin(theta)*cos(phi), |
413 | r*sin(theta)*sin(phi), |
414 | r*cos(theta)); |
3ea9cb08 |
415 | |
d48cca74 |
416 | |
417 | phi=90*deg+kRot,theta=90*deg+kT; |
418 | Info(" menu for 5","r=%8.3f theta=%5.1f phi=%5.1f x=%8.3f y=%8.3f z=%8.3f", |
853634d3 |
419 | r, theta*r2d, phi*r2d, |
d48cca74 |
420 | r*sin(theta)*cos(phi), |
421 | r*sin(theta)*sin(phi), |
422 | r*cos(theta)); |
423 | |
3ea9cb08 |
424 | |
425 | phi=90*deg+kRot-kP,theta=90*deg; |
d48cca74 |
426 | Info(" menu for 6","r=%8.3f theta=%5.1f phi=%5.1f x=%8.3f y=%8.3f z=%8.3f", |
853634d3 |
427 | r, theta*r2d, phi*r2d, |
d48cca74 |
428 | r*sin(theta)*cos(phi), |
429 | r*sin(theta)*sin(phi), |
430 | r*cos(theta)); |
3ea9cb08 |
431 | |
432 | phi=90*deg+kRot-kP,theta=90*deg+kT; |
433 | Info(" menu for 7","r=%8.3f theta=%5.1f phi=%5.1f x=%8.3f y=%8.3f z=%8.3f", |
434 | r, theta*r2d, phi*r2d, |
435 | r*sin(theta)*cos(phi), |
436 | r*sin(theta)*sin(phi), |
437 | r*cos(theta)); |
d48cca74 |
438 | |
439 | delete p; |
c33c49f0 |
440 | }//PrintGeo() |
543d5224 |
441 | //__________________________________________________________________________________________________ |
c33c49f0 |
442 | void TestResponse() |
abb44d7c |
443 | { |
c33c49f0 |
444 | TCanvas *pC=new TCanvas("c","Amplification test",900,800); |
445 | pC->Divide(1,2); |
446 | pC->cd(1); |
447 | TF1 *pF1=new TF1("f1","9e-6*pow(x,4)+2e-7*pow(x,3)-0.0316*pow(x,2)-3e-4*x+25.367",-70,70); |
448 | pF1->Draw(); |
449 | |
450 | pC->cd(2); |
451 | |
452 | const Int_t nPoints=8; |
453 | THStack *pStack=new THStack("stack","photons"); |
454 | TLegend *pLeg=new TLegend(0.6,0.2,0.9,0.5,"legend"); |
455 | TH1F *apH[nPoints]; |
456 | |
457 | Double_t starty=AliRICHParam::DeadZone()/2; |
458 | Double_t deltay=AliRICHParam::SectorSizeY()/nPoints; |
459 | |
460 | for(int i=0;i<nPoints;i++){ |
461 | apH[i]=new TH1F(Form("h%i",i),"Qdc for Photon;QDC;Counts",1000,0,1000); apH[i]->SetLineColor(i); |
462 | pStack->Add(apH[i]); |
463 | pLeg->AddEntry(apH[i],Form("@(0,%5.2f->%5.2f)",starty+i*deltay,starty+i*deltay-AliRICHParam::SectorSizeY()/2)); |
abb44d7c |
464 | } |
c33c49f0 |
465 | |
466 | |
467 | TVector3 x3(0,0,0); |
468 | Int_t sector=10; |
469 | // AliRICHParam::ResetWireSag(); |
470 | for(Int_t i=0;i<10000;i++){//events loop |
471 | for(int j=0;j<nPoints;j++){ |
472 | x3.SetY(starty-j*deltay); |
473 | apH[j]->Fill(AliRICHParam::Loc2TotQdc(x3,400e-9,500000,sector)); |
474 | } |
abb44d7c |
475 | } |
c33c49f0 |
476 | pStack->Draw("nostack"); |
477 | pLeg->Draw(); |
478 | }//TestResponse() |
abb44d7c |
479 | //__________________________________________________________________________________________________ |
d32d34bf |
480 | void TestSD() |
abb44d7c |
481 | { |
d32d34bf |
482 | Info("TestSD","Creating test sdigits."); |
abb44d7c |
483 | rl->MakeTree("S");r->MakeBranch("S"); |
abb44d7c |
484 | |
d32d34bf |
485 | for(Int_t iEventN=0;iEventN<a->GetEventsPerRun();iEventN++){//events loop |
486 | al->GetEvent(iEventN); |
abb44d7c |
487 | |
d32d34bf |
488 | if(!rl->TreeH()) rl->LoadHits();//from |
489 | if(!rl->TreeS()) rl->MakeTree("S"); r->MakeBranch("S");//to |
490 | |
491 | for(Int_t iPrimN=0;iPrimN<rl->TreeH()->GetEntries();iPrimN++){//prims loop |
492 | rl->TreeH()->GetEntry(iPrimN); |
493 | for(Int_t iHitN=0;iHitN<3;iHitN++){//hits loop ??? |
494 | AliRICHhit *pHit=r->Hits()->At(iHitN); |
495 | TVector3 globX3(pHit->X(),pHit->Y(),pHit->Z()); |
496 | TVector3 locX3=r->C(pHit->C())->Glob2Loc(globX3); |
497 | |
498 | Int_t sector; |
499 | Int_t iTotQdc=r->Param()->Loc2TotQdc(locX3,pHit->Eloss(),pHit->Pid(),sector); |
500 | |
501 | Int_t iPadXmin,iPadXmax,iPadYmin,iPadYmax; |
502 | r->Param()->Loc2Area(locX3,iPadXmin,iPadYmin,iPadXmax,iPadYmax); |
503 | cout<<"left-down=("<<iPadXmin<<","<<iPadYmin<<") right-up=("<<iPadXmax<<','<<iPadYmax<<')'<<endl; |
504 | for(Int_t iPadY=iPadYmin;iPadY<=iPadYmax;iPadY++) |
505 | for(Int_t iPadX=iPadXmin;iPadX<=iPadXmax;iPadX++){ |
506 | Float_t iPadQdc=iTotQdc*r->Param()->Loc2PadFrac(locX3,iPadX,iPadY); |
507 | Int_t padx,pady; r->Param()->Loc2Pad(locX3.X(),locX3.Y(),padx,pady); |
508 | cout<<"hit="<<iHitN<<" ("<<locX3.X()<<','<<locX3.Y()<<")("<<padx<<','<<pady<<") cur pad("<<iPadX<<","<<iPadY<<") qtot="<<iTotQdc<<" qfrac="<<r->Param()->Loc2PadFrac(locX3,iPadX,iPadY)<<endl; |
509 | } |
c67b2d9f |
510 | // r->AddSDigit(pHit->C(),padx,pady,r->Param()->Local2PadQdc(localX3,padx,pady),pHit->GetTrack()); |
d32d34bf |
511 | }//hits loop |
512 | }//prims loop |
513 | rl->TreeS()->Fill(); |
514 | rl->WriteSDigits("OVERWRITE"); |
515 | }//events loop |
abb44d7c |
516 | |
d32d34bf |
517 | rl->UnloadHits(); |
518 | rl->UnloadSDigits(); |
519 | |
abb44d7c |
520 | rl->TreeS()->Fill(); |
521 | rl->WriteSDigits("OVERWRITE"); |
522 | rl->UnloadSDigits(); |
523 | cout<<endl;r->Sdigits()->Print(); |
524 | r->ResetSDigits(); |
543d5224 |
525 | Info("TestSdigits","Stop."); |
526 | }//void TestSdigits() |
abb44d7c |
527 | //__________________________________________________________________________________________________ |
c67b2d9f |
528 | void TestC() |
abb44d7c |
529 | { |
c67b2d9f |
530 | Info("TestC","Creating test clusters."); |
543d5224 |
531 | rl->MakeTree("R");r->MakeBranch("R"); |
532 | |
c67b2d9f |
533 | AliRICHcluster c; |
534 | c.AddDigit(new AliRICHdigit(1,20,21,200,1,2,3)); |
535 | c.AddDigit(new AliRICHdigit(1,22,21,250,1,2,3)); |
536 | c.CoG(); |
537 | |
538 | r->AddCluster(c); |
539 | |
543d5224 |
540 | rl->TreeR()->Fill(); |
541 | rl->WriteRecPoints("OVERWRITE"); |
542 | rl->UnloadRecPoints(); |
c67b2d9f |
543 | r->ResetClusters(); |
543d5224 |
544 | |
c67b2d9f |
545 | Info("TestC","Stop."); |
546 | }//TestC() |
543d5224 |
547 | //__________________________________________________________________________________________________ |
548 | void TestSeg() |
549 | { |
550 | AliRICHParam *p=r->Param(); |
abb44d7c |
551 | Int_t padx,pady; |
d32d34bf |
552 | Double_t x,y; |
553 | Double_t dz=p->DeadZone(); |
554 | Double_t sx=p->SectorSizeX(); Double_t sy=p->SectorSizeY(); Double_t px=p->PcSizeX(); Double_t py=p->PcSizeY(); |
543d5224 |
555 | cout<<endl; |
d32d34bf |
556 | Info(" 1- 1","sec=%i padx=%3i pady=%3i",p->Loc2Pad(-px/2 , -py/2 ,padx,pady),padx,pady); |
557 | Info(" 48- 1","sec=%i padx=%3i pady=%3i",p->Loc2Pad(-sx/2-dz , -py/2 ,padx,pady),padx,pady); |
558 | Info(" 49- 1","sec=%i padx=%3i pady=%3i",p->Loc2Pad(-sx/2 , -py/2 ,padx,pady),padx,pady); |
559 | Info(" 96- 1","sec=%i padx=%3i pady=%3i",p->Loc2Pad( sx/2 , -py/2 ,padx,pady),padx,pady); |
560 | Info(" 97- 1","sec=%i padx=%3i pady=%3i",p->Loc2Pad( sx/2+dz , -py/2 ,padx,pady),padx,pady); |
561 | Info("144- 1","sec=%i padx=%3i pady=%3i",p->Loc2Pad( px/2 , -py/2 ,padx,pady),padx,pady); |
abb44d7c |
562 | cout<<endl; |
d32d34bf |
563 | Info(" 1- 80","sec=%i padx=%3i pady=%3i",p->Loc2Pad(-px/2 , -dz/2 ,padx,pady),padx,pady); |
564 | Info(" 48- 80","sec=%i padx=%3i pady=%3i",p->Loc2Pad(-sx/2-dz , -dz/2 ,padx,pady),padx,pady); |
565 | Info(" 49- 80","sec=%i padx=%3i pady=%3i",p->Loc2Pad(-sx/2 , -dz/2 ,padx,pady),padx,pady); |
566 | Info(" 96- 80","sec=%i padx=%3i pady=%3i",p->Loc2Pad( sx/2 , -dz/2 ,padx,pady),padx,pady); |
567 | Info(" 97- 80","sec=%i padx=%3i pady=%3i",p->Loc2Pad( sx/2+dz , -dz/2 ,padx,pady),padx,pady); |
568 | Info("144- 80","sec=%i padx=%3i pady=%3i",p->Loc2Pad( px/2 , -dz/2 ,padx,pady),padx,pady); |
abb44d7c |
569 | cout<<endl; |
d32d34bf |
570 | Info(" 1- 81","sec=%i padx=%3i pady=%3i",p->Loc2Pad(-px/2 , dz/2 ,padx,pady),padx,pady); |
571 | Info(" 48- 81","sec=%i padx=%3i pady=%3i",p->Loc2Pad(-sx/2-dz , dz/2 ,padx,pady),padx,pady); |
572 | Info(" 49- 81","sec=%i padx=%3i pady=%3i",p->Loc2Pad(-sx/2 , dz/2 ,padx,pady),padx,pady); |
573 | Info(" 96- 81","sec=%i padx=%3i pady=%3i",p->Loc2Pad( sx/2 , dz/2 ,padx,pady),padx,pady); |
574 | Info(" 97- 81","sec=%i padx=%3i pady=%3i",p->Loc2Pad( sx/2+dz , dz/2 ,padx,pady),padx,pady); |
575 | Info("144- 81","sec=%i padx=%3i pady=%3i",p->Loc2Pad( px/2 , dz/2 ,padx,pady),padx,pady); |
abb44d7c |
576 | cout<<endl; |
d32d34bf |
577 | Info(" 1-160","sec=%i padx=%3i pady=%3i",p->Loc2Pad(-px/2 , py/2 ,padx,pady),padx,pady); |
578 | Info(" 48-160","sec=%i padx=%3i pady=%3i",p->Loc2Pad(-sx/2-dz , py/2 ,padx,pady),padx,pady); |
579 | Info(" 49-160","sec=%i padx=%3i pady=%3i",p->Loc2Pad(-sx/2 , py/2 ,padx,pady),padx,pady); |
580 | Info(" 96-160","sec=%i padx=%3i pady=%3i",p->Loc2Pad( sx/2 , py/2 ,padx,pady),padx,pady); |
581 | Info(" 97-160","sec=%i padx=%3i pady=%3i",p->Loc2Pad( sx/2+dz , py/2 ,padx,pady),padx,pady); |
582 | Info("144-160","sec=%i padx=%3i pady=%3i",p->Loc2Pad( px/2 , py/2 ,padx,pady),padx,pady); |
abb44d7c |
583 | cout<<endl; |
d32d34bf |
584 | Info(" 73-160","sec=%i padx=%3i pady=%3i",p->Loc2Pad( 0 , py/2 ,padx,pady),padx,pady); |
585 | Info(" 73- 81","sec=%i padx=%3i pady=%3i",p->Loc2Pad( 0 , dz/2 ,padx,pady),padx,pady); |
586 | Info("0-0dead","sec=%i padx=%3i pady=%3i",p->Loc2Pad( 0 , 0 ,padx,pady),padx,pady); |
587 | Info(" 73- 80","sec=%i padx=%3i pady=%3i",p->Loc2Pad( 0 , -dz/2 ,padx,pady),padx,pady); |
588 | Info(" 73- 1","sec=%i padx=%3i pady=%3i",p->Loc2Pad( 0 , -py/2 ,padx,pady),padx,pady); |
abb44d7c |
589 | cout<<endl; |
d32d34bf |
590 | p->Pad2Loc(padx= 1,pady=1,x,y); cout<<"padx="<<padx<<" pady="<<pady<<" x="<<x<<" y="<<y<<endl; |
591 | p->Pad2Loc(padx= 48,pady=1,x,y); cout<<"padx="<<padx<<" pady="<<pady<<" x="<<x<<" y="<<y<<endl; |
592 | p->Pad2Loc(padx= 49,pady=1,x,y); cout<<"padx="<<padx<<" pady="<<pady<<" x="<<x<<" y="<<y<<endl; |
593 | p->Pad2Loc(padx= 96,pady=1,x,y); cout<<"padx="<<padx<<" pady="<<pady<<" x="<<x<<" y="<<y<<endl; |
594 | p->Pad2Loc(padx= 97,pady=1,x,y); cout<<"padx="<<padx<<" pady="<<pady<<" x="<<x<<" y="<<y<<endl; |
595 | p->Pad2Loc(padx=144,pady=1,x,y); cout<<"padx="<<padx<<" pady="<<pady<<" x="<<x<<" y="<<y<<endl; |
543d5224 |
596 | cout<<endl; |
d32d34bf |
597 | p->Pad2Loc(padx= 1,pady=80,x,y); cout<<"padx="<<padx<<" pady="<<pady<<" x="<<x<<" y="<<y<<endl; |
598 | p->Pad2Loc(padx= 48,pady=80,x,y); cout<<"padx="<<padx<<" pady="<<pady<<" x="<<x<<" y="<<y<<endl; |
599 | p->Pad2Loc(padx= 49,pady=80,x,y); cout<<"padx="<<padx<<" pady="<<pady<<" x="<<x<<" y="<<y<<endl; |
600 | p->Pad2Loc(padx= 96,pady=80,x,y); cout<<"padx="<<padx<<" pady="<<pady<<" x="<<x<<" y="<<y<<endl; |
601 | p->Pad2Loc(padx= 97,pady=80,x,y); cout<<"padx="<<padx<<" pady="<<pady<<" x="<<x<<" y="<<y<<endl; |
602 | p->Pad2Loc(padx=144,pady=80,x,y); cout<<"padx="<<padx<<" pady="<<pady<<" x="<<x<<" y="<<y<<endl; |
543d5224 |
603 | cout<<endl; |
d32d34bf |
604 | p->Pad2Loc(padx= 1,pady=81,x,y); cout<<"padx="<<padx<<" pady="<<pady<<" x="<<x<<" y="<<y<<endl; |
605 | p->Pad2Loc(padx= 48,pady=81,x,y); cout<<"padx="<<padx<<" pady="<<pady<<" x="<<x<<" y="<<y<<endl; |
606 | p->Pad2Loc(padx= 49,pady=81,x,y); cout<<"padx="<<padx<<" pady="<<pady<<" x="<<x<<" y="<<y<<endl; |
607 | p->Pad2Loc(padx= 96,pady=81,x,y); cout<<"padx="<<padx<<" pady="<<pady<<" x="<<x<<" y="<<y<<endl; |
608 | p->Pad2Loc(padx= 97,pady=81,x,y); cout<<"padx="<<padx<<" pady="<<pady<<" x="<<x<<" y="<<y<<endl; |
609 | p->Pad2Loc(padx=144,pady=81,x,y); cout<<"padx="<<padx<<" pady="<<pady<<" x="<<x<<" y="<<y<<endl; |
543d5224 |
610 | cout<<endl; |
d32d34bf |
611 | p->Pad2Loc(padx= 1,pady=160,x,y); cout<<"padx="<<padx<<" pady="<<pady<<" x="<<x<<" y="<<y<<endl; |
612 | p->Pad2Loc(padx= 48,pady=160,x,y); cout<<"padx="<<padx<<" pady="<<pady<<" x="<<x<<" y="<<y<<endl; |
613 | p->Pad2Loc(padx= 49,pady=160,x,y); cout<<"padx="<<padx<<" pady="<<pady<<" x="<<x<<" y="<<y<<endl; |
614 | p->Pad2Loc(padx= 96,pady=160,x,y); cout<<"padx="<<padx<<" pady="<<pady<<" x="<<x<<" y="<<y<<endl; |
615 | p->Pad2Loc(padx= 97,pady=160,x,y); cout<<"padx="<<padx<<" pady="<<pady<<" x="<<x<<" y="<<y<<endl; |
616 | p->Pad2Loc(padx=144,pady=160,x,y); cout<<"padx="<<padx<<" pady="<<pady<<" x="<<x<<" y="<<y<<endl; |
543d5224 |
617 | }//void TestSeg() |
abb44d7c |
618 | //__________________________________________________________________________________________________ |
543d5224 |
619 | void TestMenu() |
abb44d7c |
620 | { |
543d5224 |
621 | TControlBar *pMenu = new TControlBar("vertical","RICH test"); |
c67b2d9f |
622 | pMenu->AddButton("Test segmentation", "TestSeg()", "Test AliRICHParam segmentation methods"); |
623 | pMenu->AddButton("Test transform", "TestTransform()", "Test ALiRICHChamber methods"); |
c33c49f0 |
624 | pMenu->AddButton("Test response", "TestResponse()", "Test AliRICHParam response methods"); |
d32d34bf |
625 | pMenu->AddButton("Test sdigits", "TestSD()", "Create test set of sdigits"); |
c67b2d9f |
626 | pMenu->AddButton("Test digits OLD", "TestDigitsOLD()", "Create test set of OLD digits"); |
627 | pMenu->AddButton("Test clusters", "TestC()", "Create test set of clusters"); |
543d5224 |
628 | pMenu->Show(); |
629 | }//TestMenu() |
630 | //__________________________________________________________________________________________________ |
631 | void GeoMenu() |
632 | { |
633 | TControlBar *pMenu = new TControlBar("vertical","RICH draw"); |
634 | pMenu->AddButton("RICH Isometry", "gMC->Gdraw(\"ALIC\", 60,40,0, 10,10, 0.008,0.008)","Draws ALIC volume in isometry"); |
635 | pMenu->AddButton("RICH Front XY", "gMC->Gdraw(\"ALIC\", 0,0,0, 10,10, 0.01,0.01)","Draws ALIC volume in XY view"); |
636 | pMenu->AddButton("RICH Side YZ", "gMC->Gdraw(\"ALIC\",90,180, 0, 10,10, 0.01,0.01)","Draws ALIC volume in YZ view"); |
637 | pMenu->AddButton("RICH Top XZ", "gMC->Gdraw(\"ALIC\",90, 90, 0, 10,10, 0.01,0.01)","Draws ALIC volume in XZ view"); |
638 | pMenu->AddButton("Module Isometry","gMC->Gdraw(\"SRIC\", 30,60,0, 10,10, 0.1,0.1)","Draws SRIC volume in isometry"); |
639 | pMenu->AddButton("Module Front XY","gMC->Gdraw(\"SRIC\", 0,0,0, 10,10, 0.1,0.1)","Draws SRIC volume in XY view"); |
640 | pMenu->AddButton("Module Top XZ", "gMC->Gdraw(\"SRIC\",90, 90, 0, 10,10, 0.1,0.1)","Draws SRIC volume in XZ view"); |
641 | pMenu->AddButton("ALICE Tree", "((TGeant3*)gMC)->Gdtree(\"ALIC\")","Draws ALICE tree"); |
642 | pMenu->AddButton("RICH Tree", "((TGeant3*)gMC)->Gdtree(\"RICH\")","Draws RICH tree"); |
643 | pMenu->AddButton("Geo test", "GeoTest()", "Draw RICH geo as a macro"); |
644 | pMenu->AddButton("Print ref", "PrintGeo()", "Print RICH chambers default position"); |
645 | pMenu->AddButton("AliRICH::Print", "r->Print();", "Print RICH chambers default position"); |
646 | pMenu->AddButton("Test transform","TestTransform()","Test L2G and G2L methods"); |
543d5224 |
647 | pMenu->Show(); |
648 | }//GeoMenu() |
649 | //__________________________________________________________________________________________________ |
650 | void menu() |
651 | { |
652 | TControlBar *pMenu = new TControlBar("vertical","RICH main"); |
653 | |
d32d34bf |
654 | if(ReadAlice()){//it's from file, reconstruct |
3b96aee8 |
655 | pMenu->AddButton("hits->sdigits->digits->clusters","MainTrank()","Convert"); |
d32d34bf |
656 | |
c712cb2f |
657 | pMenu->AddButton("hits->sdigits", "H_SD()", "Perform first phase converstion"); |
c712cb2f |
658 | pMenu->AddButton("sdigits->digits", "SD_D()", "Perform first phase converstion"); |
659 | pMenu->AddButton("digits->clusters", "D_C()", "Perform first phase converstion"); |
543d5224 |
660 | |
3b96aee8 |
661 | pMenu->AddButton("Show","Show()","Shows the structure of events in files"); |
d32d34bf |
662 | pMenu->AddButton("OLD specials->sdigits", "OLD_S_SD()", "Perform first phase converstion"); |
543d5224 |
663 | |
664 | }else{//it's aliroot, simulate |
665 | pMenu->AddButton("Run", "a->Run(1)", "Process!"); |
666 | } |
667 | pMenu->AddButton("Geo submenu", "GeoMenu()", "Shows geomentry submenu"); |
d32d34bf |
668 | pMenu->AddButton("Geo GUI", "new G3GeometryGUI;","Create instance of G4GeometryGUI"); |
543d5224 |
669 | pMenu->AddButton("Test submenu", "TestMenu()", "Shows test submenu"); |
670 | pMenu->AddButton("Browser", "new TBrowser;", "Start ROOT TBrowser"); |
fa49f877 |
671 | pMenu->AddButton("Display Fast", "DisplFast()", "Display Fast"); |
3b96aee8 |
672 | pMenu->AddButton("Control Plots", "ControlPlots()", "Display some control histograms"); |
673 | pMenu->AddButton("Debug ON", "DebugON();", "Switch debug on-off"); |
674 | pMenu->AddButton("Debug OFF", "DebugOFF();", "Switch debug on-off"); |
543d5224 |
675 | pMenu->AddButton("Quit", ".q", "Close session"); |
676 | pMenu->Show(); |
677 | a=gAlice;//for manual manipulation convinience |
678 | }//menu() |
679 | //__________________________________________________________________________________________________ |
3b96aee8 |
680 | void DebugOFF(){ Info("DebugOFF",""); a->SetDebug(0); r->SetDebug(0); AliLoader::SetDebug(0);} |
681 | void DebugON() { Info("DebugON",""); a->SetDebug(1); r->SetDebug(1); AliLoader::SetDebug(1);} |