]> git.uio.no Git - u/mrichter/AliRoot.git/blame_incremental - RICH/menu.C
New Stepmanager function.
[u/mrichter/AliRoot.git] / RICH / menu.C
... / ...
CommitLineData
1void SDigits2Digits()
2{
3 rl->LoadSDigits();
4 rl->MakeTree("D");r->MakeBranch("D");
5
6 rl->TreeS()->GetEntry(0);
7 r->Sdigits()->Sort();
8
9 Int_t chamber,x,y,qdc,tr[3],id;
10 Int_t kBad=-101;
11 chamber=x=y=qdc=tr[0]=tr[1]=tr[2]=id=kBad;
12 Int_t counter=kBad;//how many sdigits for a given pad
13 Int_t start=0,end=0;
14
15 for(Int_t i=0;i<r->Sdigits()->GetEntries();i++){//sdigits loop (sorted)
16 AliRICHdigit *pSdig=(AliRICHdigit*)r->Sdigits()->At(i);
17 if(pSdig->Id()==id){//still the same pad
18 end++;
19 }else{//new pad, add the pevious one
20 if(id!=kBad) r->AddDigits(chamber,x,y,qdc,tr[0],tr[1],tr[2]);//cm-xpad-ypad-qdc-tr1-2-3
21 chamber=pSdig->C();x=pSdig->X();y=pSdig->Y();qdc=pSdig->Qdc();tr[0]=pSdig->T(0);id=pSdig->Id();
22 start=i;
23 }
24 }//sdigits loop (sorted)
25
26 r->AddDigits(chamber,x,y,qdc,tr[0],tr[1],tr[2]);//add the last digit
27
28 rl->TreeD()->Fill();
29 rl->WriteDigits("OVERWRITE");
30
31 cout<<endl;
32 r->Digits(1)->Print();
33}
34
35void Show3()
36{
37 cout<<endl;
38 al->LoadHeader();
39 al->LoadKinematics();
40 rl->LoadHits();
41
42 for(Int_t iEventN=0;iEventN<gAlice->GetEventsPerRun();iEventN++){//events loop
43 Int_t iNparticles=gAlice->GetEvent(iEventN);
44 Int_t iNprims=rl->TreeH()->GetEntries();
45 Info("Show3","Event %i contains %i particles in total while %i are primary",
46 iEventN, iNparticles, iNprims);
47 for(Int_t iPrimN=0;iPrimN<iNprims;iPrimN++){//prims loop
48 rl->TreeH()->GetEntry(iPrimN);
49 TParticle *pPrim=al->Stack()->Particle(iPrimN);
50 Info("Show3","prim %i has %i hits and %i sdigits from %s (,%7.2f,%7.2f)",
51 iPrimN,
52 r->Hits()->GetEntries(),
53 r->Specials()->GetEntries(),
54 pPrim->GetName(),
55 pPrim->Theta()*r2d,pPrim->Phi()*r2d);
56// for(AliRICHhit *pHit=r->FirstHit(-1);pHit;pHit=r->NextHit()){
57// pRichHit->Dump();
58// }//loop on hits of given prim track
59 }//prims loop
60 if(!rl->LoadDigits()){
61 Info("Show3","Event %i contains %i digits",iEventN,r->Digits(1)->GetEntries());
62 }
63 }//events loop
64 rl->UnloadHits();
65 rl->UnloadDigits();
66 al->UnloadHeader();
67 al->UnloadKinematics();
68 cout<<endl;
69}//void Show()
70
71void menu()// How many events to generate.
72{
73
74
75 TControlBar *pMenu = new TControlBar("vertical","RICH main");
76
77 pMenu->AddButton("Debug ON", "DebugON();", "Switch debug on-off");
78 pMenu->AddButton("Debug OFF", "DebugOFF();", "Switch debug on-off");
79 if(CheckAlice()){//it's from file, reconstruct
80 pMenu->AddButton("Show3","Show3()","Shows the structure of events in files");
81 pMenu->AddButton("Hits2SDigits","r->Hits2SDigits()","Perform first phase converstion");
82 pMenu->AddButton("SDigits2Digits","SDigits2Digits()","Perform second phase converstion");
83 pMenu->AddButton("RingViewer","RingViewer()","Show rings with reconstructed info");
84 }else{//it's aliroot, simulate
85 pMenu->AddButton("Run", "a->Run(1)", "Process!");
86 }
87 pMenu->AddButton("Geo submenu", "Geo()", "Shows geomentry submenu");
88 pMenu->AddButton("Test submenu", "TestMenu()", "Shows test submenu");
89 pMenu->AddButton("Browser", "new TBrowser;", "Start ROOT TBrowser");
90 pMenu->AddButton("Quit", ".q", "Close session");
91 pMenu->Show();
92 a=gAlice;//for manual manipulation convinience
93}//void menu(Int_t iNevents)
94
95
96void DebugOFF()
97{
98 Info("DebugOFF","");
99 a->SetDebug(0);
100 r->SetDebug(0);
101 AliLoader::SetDebug(0);
102}//void DebugOFF()
103
104void DebugON()
105{
106 Info("DebugON","");
107 a->SetDebug(1);
108 r->SetDebug(1);
109 AliLoader::SetDebug(1);
110}//void DebugON()
111
112
113AliRun *a;
114AliRunLoader *al;
115AliLoader *rl,*tl,*il;
116
117AliRICH *r;
118
119Bool_t CheckAlice()
120{
121 if(gAlice){//it's aliroot
122 if(gSystem->Exec("ls galice.root")){
123 Info("CheckAlice","It's AliRoot, and no galice.root: SIMULATION");
124 gAlice->Init("AliceConfig.C");
125 r=(AliRICH*)gAlice->GetDetector("RICH");
126 return kFALSE;
127 }else{//galice.root is present we want to read alice from file
128 ReadAlice();
129 return kTRUE;
130 }
131 }else{//it's root with ALICE libs loaded
132 ReadAlice();
133 return kTRUE;
134 }
135}//void CheckAlice()
136
137void ReadAlice()
138{
139 Info("ReadAlice","Reading ALICE from SIMULATED FILE.");
140 AliLoader::SetDebug(0);
141 if(gAlice) delete gAlice;
142 if(!(al=AliRunLoader::Open("galice.root","AlicE","update"))){
143 gSystem->Exec("rm -rf *.root *.dat");
144 Fatal("ReadAlice","galice.root broken, removing all this garbage");
145 }
146 al->LoadgAlice();
147 if(!gAlice) Fatal("ReadAlice","No gAlice in file");
148 a=al->GetAliRun();
149 a->SetDebug(0);
150//RICH
151 if(!(r=(AliRICH*)gAlice->GetDetector("RICH"))) Warning("RICH/menu.C::ReadAlice","No RICH in file");
152 r->SetDebug(0);
153 if(!(rl=al->GetLoader("RICHLoader"))) Warning("RICH/menu.C::ReadAlice","No RICH loader in file");
154
155 Info("ReadAlice","Run contains %i event(s)",gAlice->GetEventsPerRun());
156}
157//__________________________________________________________________________________________________
158void RingViewer()
159{
160 gStyle->SetPalette(1);
161 TCanvas *view=new TCanvas("Display","ALICE RICH Display",0,0,600,600);
162
163 TH2F *pH2=new TH2F("pH2F","RICH DISPLAY",r->Param()->Nx(),0,r->Param()->Nx(),r->Param()->Ny(),0,r->Param()->Ny());
164 pH2->SetStats(0);
165 pH2->SetMaximum(100);
166
167 Int_t Nevents = gAlice->GetEventsPerRun();
168}
169//______________________________________________________________________________
170void Geo()
171{
172 TControlBar *pMenu = new TControlBar("vertical","RICH draw");
173 pMenu->AddButton("RICH Isometry", "gMC->Gdraw(\"ALIC\", 60,120,0, 10,10, 0.01,0.01)","Draws ALIC volume in isometry");
174 pMenu->AddButton("RICH Front XY", "gMC->Gdraw(\"ALIC\", 0,0,0, 10,10, 0.01,0.01)","Draws ALIC volume in XY view");
175 pMenu->AddButton("RICH Side YZ", "gMC->Gdraw(\"ALIC\",90,180, 0, 10,10, 0.01,0.01)","Draws ALIC volume in YZ view");
176 pMenu->AddButton("RICH Top XZ", "gMC->Gdraw(\"ALIC\",90, 90, 0, 10,10, 0.01,0.01)","Draws ALIC volume in XZ view");
177 pMenu->AddButton("Module Isometry","gMC->Gdraw(\"SRIC\", 30,60,0, 10,10, 0.1,0.1)","Draws SRIC volume in isometry");
178 pMenu->AddButton("Module Front XY","gMC->Gdraw(\"SRIC\", 0,0,0, 10,10, 0.1,0.1)","Draws SRIC volume in XY view");
179 pMenu->AddButton("Module Top XZ", "gMC->Gdraw(\"SRIC\",90, 90, 0, 10,10, 0.1,0.1)","Draws SRIC volume in XZ view");
180 pMenu->AddButton("ALICE Tree", "((TGeant3*)gMC)->Gdtree(\"ALIC\")","Draws ALICE tree");
181 pMenu->AddButton("RICH Tree", "((TGeant3*)gMC)->Gdtree(\"RICH\")","Draws RICH tree");
182 pMenu->AddButton("Geo test", "GeoTest()", "Draw RICH geo as a macro");
183 pMenu->AddButton("Print ref", "PrintGeo()", "Print RICH chambers default position");
184 pMenu->AddButton("AliRICH::Print", "r->Print();", "Print RICH chambers default position");
185 pMenu->AddButton("Test transform","TestTransform()","Test L2G and G2L methods");
186 pMenu->AddButton("Geo GUI", "new G3GeometryGUI;","Create instance of G4GeometryGUI");
187 pMenu->Show();
188}//void Draw()
189//__________________________________________________________________________________________________
190void GeoTest()
191{
192
193 TBRIK *pAliceBRIK=new TBRIK("aliceBRIK","ALICE mother volume","void",500,500,500);
194 TBRIK *pArmBRIK=new TBRIK("armBRIK","RICH arm1","void",pRICH->GetSizeX(),pRICH->GetSizeY(),pRICH->GetSizeZ());
195
196 TNode *pAliceNode=new TNode("aliceNode","Mother volume","aliceBRIK");
197 pAliceNode->cd();
198
199// ARM 1 LEFT
200 TRotation rot1;
201 TVector3 v1(0,pRICH->GetOffset(),0);
202
203
204 rot1.RotateX(pRICH->GetYZAngle()*kDegrad); v1.RotateX(pRICH->GetYZAngle()*kDegrad);
205 rot1.RotateZ(pRICH->GetXYAngle()*kDegrad); v1.RotateZ(pRICH->GetXYAngle()*kDegrad);
206 rot1.RotateZ(pRICH->GetRotAngle()*kDegrad); v1.RotateZ(pRICH->GetRotAngle()*kDegrad);
207
208 TRotMatrix *pArm1RotMatrix=new TRotMatrix("rotArm1","rotArm1",rot1.ThetaX()*kRaddeg, rot1.PhiX()*kRaddeg,
209 rot1.ThetaY()*kRaddeg, rot1.PhiY()*kRaddeg,
210 rot1.ThetaZ()*kRaddeg, rot1.PhiZ()*kRaddeg);
211
212 TNode *pArm1Node=new TNode("arm1Node","Left arm","armBRIK",v1.X(),v1.Y(),v1.Z(),"rotArm1");
213 arm1Node->SetLineColor(kRed);
214
215// ARM 2 LEFT
216 TRotation rot2;
217 TVector3 v2(0,pRICH->GetOffset(),0);
218
219
220 rot2.RotateX( pRICH->YZAngle()*kDegrad); v2.RotateX(pRICH->GetYZAngle()*kDegrad);
221 rot2.RotateZ(-pRICH->XYAngle()*kDegrad); v2.RotateZ(-pRICH->GetXYAngle()*kDegrad);
222 rot2.RotateZ( pRICH->RotAngle()*kDegrad); v2.RotateZ(pRICH->GetRotAngle()*kDegrad);
223
224 TRotMatrix *pArm2RotMatrix=new TRotMatrix("rotArm2","rotArm2",rot2.ThetaX()*kRaddeg, rot2.PhiX()*kRaddeg,
225 rot2.ThetaY()*kRaddeg, rot2.PhiY()*kRaddeg,
226 rot2.ThetaZ()*kRaddeg, rot2.PhiZ()*kRaddeg);
227
228 TNode *pArm2Node=new TNode("arm2Node","Left arm","armBRIK",v2.X(),v2.Y(),v2.Z(),"rotArm2");
229 arm2Node->SetLineColor(kBlue);
230
231 aliceNode->Draw();
232}//void GeoTest()
233//__________________________________________________________________________________________________
234void PrintGeo(Float_t rotDeg=0)
235{
236 AliRICHParam *p=new AliRICHParam;
237 Double_t r=p->Offset();
238 Double_t kP=p->AngleXY();
239 Double_t kT=p->AngleYZ();
240 Double_t kRot;
241
242 if(rotDeg==0)
243 kRot=p->AngleRot();
244 else
245 kRot=rotDeg*deg;
246
247 cout<<endl;
248 Double_t phi=90*deg+kRot+kP,theta=90*deg+kT;
249 Info(" menu for 1","r=%8.3f theta=%5.1f phi=%5.1f x=%8.3f y=%8.3f z=%8.3f",
250 r, theta*r2d, phi*r2d,
251 r*sin(theta)*cos(phi),
252 r*sin(theta)*sin(phi),
253 r*cos(theta));
254
255 phi=90*deg+kRot+kP,theta=90*deg;
256 Info(" menu for 2","r=%8.3f theta=%5.1f phi=%5.1f x=%8.3f y=%8.3f z=%8.3f",
257 r, theta*r2d, phi*r2d,
258 r*sin(theta)*cos(phi),
259 r*sin(theta)*sin(phi),
260 r*cos(theta));
261
262 phi=90*deg+kRot,theta=90*deg-kT;
263 Info(" menu for 3","r=%8.3f theta=%5.1f phi=%5.1f x=%8.3f y=%8.3f z=%8.3f",
264 r, theta*r2d, phi*r2d,
265 r*sin(theta)*cos(phi),
266 r*sin(theta)*sin(phi),
267 r*cos(theta));
268
269
270 phi=90*deg+kRot,theta=90*deg;
271 Info(" menu for 4","r=%8.3f theta=%5.1f phi=%5.1f x=%8.3f y=%8.3f z=%8.3f",
272 r, theta*r2d, phi*r2d,
273 r*sin(theta)*cos(phi),
274 r*sin(theta)*sin(phi),
275 r*cos(theta));
276
277
278 phi=90*deg+kRot,theta=90*deg+kT;
279 Info(" menu for 5","r=%8.3f theta=%5.1f phi=%5.1f x=%8.3f y=%8.3f z=%8.3f",
280 r, theta*r2d, phi*r2d,
281 r*sin(theta)*cos(phi),
282 r*sin(theta)*sin(phi),
283 r*cos(theta));
284
285
286 phi=90*deg+kRot-kP,theta=90*deg;
287 Info(" menu for 6","r=%8.3f theta=%5.1f phi=%5.1f x=%8.3f y=%8.3f z=%8.3f",
288 r, theta*r2d, phi*r2d,
289 r*sin(theta)*cos(phi),
290 r*sin(theta)*sin(phi),
291 r*cos(theta));
292
293 phi=90*deg+kRot-kP,theta=90*deg+kT;
294 Info(" menu for 7","r=%8.3f theta=%5.1f phi=%5.1f x=%8.3f y=%8.3f z=%8.3f",
295 r, theta*r2d, phi*r2d,
296 r*sin(theta)*cos(phi),
297 r*sin(theta)*sin(phi),
298 r*cos(theta));
299
300 delete p;
301}//void PrintGeo()
302
303
304
305void TestMenu()
306{
307 TControlBar *pMenu = new TControlBar("vertical","RICH test");
308 pMenu->AddButton("Test segmentation", "TestSegmentation()","Test AliRICHParam::L2P() method");
309 pMenu->AddButton("Test transform", "TestTransform()", "Test ALiRICHChamber::L2G() and G2L methods");
310 pMenu->AddButton("Test gain", "TestGain()", "Test AliRICHParam::Gain() method");
311 pMenu->AddButton("Test MIP charge", "TestMipCharge()", "Test AliRICHParam::TotalCharge() method");
312 pMenu->AddButton("Test Sdigits", "TestSdigits()", "Create test set of sdigits");
313 pMenu->AddButton("Test Digits", "TestDigits()", "Create test set of digits");
314 pMenu->Show();
315}//void Draw()
316
317
318void TestGain()
319{
320 AliRICHParam *pParam=new AliRICHParam;
321 AliRICHResponseV0 *pRes=new AliRICHResponseV0;
322
323 TLegend *pLegend=new TLegend(0.6,0.3,0.85,0.5);
324 TH1F *pH0=new TH1F("pH1","Gain",100,0,600);
325 TH1F *pH10=new TH1F("pH10","Gain",100,0,600);
326 TH1F *pH20=new TH1F("pH20","Gain",100,0,600);
327 TH1F *pH30=new TH1F("pH30","Gain",100,0,600);
328 TH1F *pHold=new TH1F("pHold","Mip Charge",100,0,2000);
329 for(int i=0;i<1000;i++){
330 pH0 ->Fill(pParam->Gain(0));
331 pH10->Fill(pParam->Gain(10));
332 pH20->Fill(pParam->Gain(20));
333 pH30->Fill(pParam->Gain(30));
334 pHold->Fill(pRes->IntPH(30));
335 }
336 pH0->Draw();
337 pH10->Draw("same");
338 pH20->Draw("same");
339 pH30->Draw("same");
340 pHold->Draw("same");
341 pLegend->AddEntry(pH0,"y=0");
342 pLegend->AddEntry(pH10,"y=10");pH10->SetLineColor(kRed);
343 pLegend->AddEntry(pH20,"y=20");pH20->SetLineColor(kBlue);
344 pLegend->AddEntry(pH30,"y=30");pH30->SetLineColor(kGreen);
345 pLegend->AddEntry(pHold,"res");pHold->SetLineColor(kMagenta);
346 pLegend->Draw();
347}//void TestGain()
348//__________________________________________________________________________________________________
349void TestMipCharge()
350{
351 AliRICHParam *pParam=new AliRICHParam;
352 AliRICHResponseV0 *pRes=new AliRICHResponseV0;
353
354 TLegend *pLegend=new TLegend(0.6,0.3,0.85,0.5);
355 TH1F *pH0= new TH1F("pH1", "Mip Charge",100,0,500);
356 TH1F *pH10=new TH1F("pH10","Mip Charge",100,0,500);
357 TH1F *pH20=new TH1F("pH20","Mip Charge",100,0,500);
358 TH1F *pH30=new TH1F("pH30","Mip Charge",100,0,500);
359 TH1F *pHold=new TH1F("pHold","Mip Charge",100,0,500);
360 for(int i=0;i<1000;i++){
361 pH0 ->Fill(pParam->TotalCharge(kPiPlus,0.5e-9,0));
362 pH10->Fill(pParam->TotalCharge(kPiPlus,0.5e-9,10));
363 pH20->Fill(pParam->TotalCharge(kPiPlus,0.5e-9,20));
364 pH30->Fill(pParam->TotalCharge(kPiPlus,0.5e-9,30));
365 pHold->Fill(pRes->IntPH(0.5e-9,-30));
366 }
367 pH0->Draw();
368 pH10->Draw("same");
369 pH20->Draw("same");
370 pH30->Draw("same");
371 pHold->Draw("same");
372 pLegend->AddEntry(pH0,"y=0");
373 pLegend->AddEntry(pH10,"y=10");pH10->SetLineColor(kRed);
374 pLegend->AddEntry(pH20,"y=20");pH20->SetLineColor(kBlue);
375 pLegend->AddEntry(pH30,"y=30");pH30->SetLineColor(kGreen);
376 pLegend->AddEntry(pHold,"res");pHold->SetLineColor(kMagenta);
377 pLegend->Draw();
378}//void TestGain()
379//__________________________________________________________________________________________________
380void TestDigits()
381{
382 rl->MakeTree("D");r->MakeBranch("D");
383
384 r->AddDigits(1,10,11,25,0);
385
386 r->AddDigits(1,25,30,25,10,12);
387 r->AddDigits(1,26,30,25,10,12);
388
389 rl->TreeD()->Fill();
390 rl->WriteDigits("OVERWRITE");
391 rl->UnloadDigits();
392 r->ResetDigits();
393}//void TestDigits()
394//__________________________________________________________________________________________________
395void TestSdigits()
396{
397 rl->MakeTree("S");r->MakeBranch("S");
398//totally 19 must be trasformd to 6 digits
399 r->AddSdigit(1,40,40,10,40); r->AddSdigit(1,40,40,10,41); r->AddSdigit(1,40,40,10,42); r->AddSdigit(1,40,40,10,43);
400 r->AddSdigit(1,45,45,10,45); r->AddSdigit(1,45,45,10,45); r->AddSdigit(1,45,45,10,45); r->AddSdigit(1,45,45,10,45);
401
402 r->AddSdigit(1,20,20,10,20); r->AddSdigit(1,20,20,10,21);
403 r->AddSdigit(1,25,25,10,25); r->AddSdigit(1,25,25,10,25);
404
405 r->AddSdigit(1,30,30,10,30); r->AddSdigit(1,30,30,10,31); r->AddSdigit(1,30,30,10,32);
406 r->AddSdigit(1,35,35,10,35); r->AddSdigit(1,35,35,10,35); r->AddSdigit(1,35,35,10,35);
407
408
409 r->AddSdigit(1,10,10,10,10);
410
411//N2
412// r->AddSdigit(2,23,43,8,0);
413//
414// r->AddSdigit(2,22,42,8,0);
415// r->AddSdigit(2,23,42,8,0);
416//
417// r->AddSdigit(2,18,41,8,0);
418// r->AddSdigit(2,25,41,8,0);
419//
420// r->AddSdigit(2,17,40,8,0);
421//
422// r->AddSdigit(2,27,38,8,0);
423// r->AddSdigit(2,28,38,8,0);
424//
425// r->AddSdigit(2,16,37,8,0);
426// r->AddSdigit(2,21,37,8,0);
427// r->AddSdigit(2,22,37,8,0);
428//
429// r->AddSdigit(2,16,36,8,0);
430// r->AddSdigit(2,21,36,8,0);
431//
432// r->AddSdigit(2,22,35,8,0);
433// r->AddSdigit(2,28,35,8,0);
434//
435// r->AddSdigit(2,16,34,8,0);
436//
437// r->AddSdigit(2,18,32,8,0);
438// r->AddSdigit(2,25,32,8,0);
439// r->AddSdigit(2,27,32,8,0);
440//
441// r->AddSdigit(2,19,31,8,0);
442// r->AddSdigit(2,23,31,8,0);
443// r->AddSdigit(2,24,31,8,0);
444//
445// r->AddSdigit(2,19,30,8,0);
446// r->AddSdigit(2,20,30,8,0);
447
448 rl->TreeS()->Fill();
449 rl->WriteSDigits("OVERWRITE");
450 rl->UnloadSDigits();
451 cout<<endl;r->Sdigits()->Print();
452 r->ResetSDigits();
453}//void TestDigits()
454//__________________________________________________________________________________________________
455void TestSegmentation()
456{
457 AliRICHParam *p=r->Param();
458 Float_t dz=p->DeadZone();
459 Float_t sx=p->SectorSizeX();Float_t sy=p->SectorSizeY();
460 Float_t px=p->PcSizeX(); Float_t py=p->PcSizeY();
461 Int_t padx,pady;
462 cout<<endl;
463 Info(" 1- 1","sec=%i padx=%3i pady=%3i",p->L2P(-px/2 , -py/2 ,padx,pady),padx,pady);
464 Info(" 48- 1","sec=%i padx=%3i pady=%3i",p->L2P(-sx/2-dz , -py/2 ,padx,pady),padx,pady);
465 Info(" 49- 1","sec=%i padx=%3i pady=%3i",p->L2P(-sx/2 , -py/2 ,padx,pady),padx,pady);
466 Info(" 96- 1","sec=%i padx=%3i pady=%3i",p->L2P( sx/2 , -py/2 ,padx,pady),padx,pady);
467 Info(" 97- 1","sec=%i padx=%3i pady=%3i",p->L2P( sx/2+dz , -py/2 ,padx,pady),padx,pady);
468 Info("144- 1","sec=%i padx=%3i pady=%3i",p->L2P( px/2 , -py/2 ,padx,pady),padx,pady);
469 cout<<endl;
470 Info(" 1- 80","sec=%i padx=%3i pady=%3i",p->L2P(-px/2 , -dz/2 ,padx,pady),padx,pady);
471 Info(" 48- 80","sec=%i padx=%3i pady=%3i",p->L2P(-sx/2-dz , -dz/2 ,padx,pady),padx,pady);
472 Info(" 49- 80","sec=%i padx=%3i pady=%3i",p->L2P(-sx/2 , -dz/2 ,padx,pady),padx,pady);
473 Info(" 96- 80","sec=%i padx=%3i pady=%3i",p->L2P( sx/2 , -dz/2 ,padx,pady),padx,pady);
474 Info(" 97- 80","sec=%i padx=%3i pady=%3i",p->L2P( sx/2+dz , -dz/2 ,padx,pady),padx,pady);
475 Info("144- 80","sec=%i padx=%3i pady=%3i",p->L2P( px/2 , -dz/2 ,padx,pady),padx,pady);
476 cout<<endl;
477 Info(" 1- 81","sec=%i padx=%3i pady=%3i",p->L2P(-px/2 , dz/2 ,padx,pady),padx,pady);
478 Info(" 48- 81","sec=%i padx=%3i pady=%3i",p->L2P(-sx/2-dz , dz/2 ,padx,pady),padx,pady);
479 Info(" 49- 81","sec=%i padx=%3i pady=%3i",p->L2P(-sx/2 , dz/2 ,padx,pady),padx,pady);
480 Info(" 96- 81","sec=%i padx=%3i pady=%3i",p->L2P( sx/2 , dz/2 ,padx,pady),padx,pady);
481 Info(" 97- 81","sec=%i padx=%3i pady=%3i",p->L2P( sx/2+dz , dz/2 ,padx,pady),padx,pady);
482 Info("144- 81","sec=%i padx=%3i pady=%3i",p->L2P( px/2 , dz/2 ,padx,pady),padx,pady);
483 cout<<endl;
484 Info(" 1-160","sec=%i padx=%3i pady=%3i",p->L2P(-px/2 , py/2 ,padx,pady),padx,pady);
485 Info(" 48-160","sec=%i padx=%3i pady=%3i",p->L2P(-sx/2-dz , py/2 ,padx,pady),padx,pady);
486 Info(" 49-160","sec=%i padx=%3i pady=%3i",p->L2P(-sx/2 , py/2 ,padx,pady),padx,pady);
487 Info(" 96-160","sec=%i padx=%3i pady=%3i",p->L2P( sx/2 , py/2 ,padx,pady),padx,pady);
488 Info(" 97-160","sec=%i padx=%3i pady=%3i",p->L2P( sx/2+dz , py/2 ,padx,pady),padx,pady);
489 Info("144-160","sec=%i padx=%3i pady=%3i",p->L2P( px/2 , py/2 ,padx,pady),padx,pady);
490 cout<<endl;
491 Info(" 73-160","sec=%i padx=%3i pady=%3i",p->L2P( 0 , py/2 ,padx,pady),padx,pady);
492 Info(" 73- 81","sec=%i padx=%3i pady=%3i",p->L2P( 0 , dz/2 ,padx,pady),padx,pady);
493 Info(" 73- 80","sec=%i padx=%3i pady=%3i",p->L2P( 0 , 0 ,padx,pady),padx,pady);
494 Info("144- 81","sec=%i padx=%3i pady=%3i",p->L2P( 0 , -dz/2 ,padx,pady),padx,pady);
495 Info("144- 81","sec=%i padx=%3i pady=%3i",p->L2P( 0 , -py/2 ,padx,pady),padx,pady);
496}//void TestSegmentation()
497//__________________________________________________________________________________________________
498void TestClusters()
499{
500 rl->MakeTree("R");r->MakeBranch("R");
501 r->AddCluster
502 rl->TreeR()->Fill();
503 rl->WriteRecPoints("OVERWRITE");
504 rl->UnloadRecPoints();
505 r->ResetClusters();
506}//void TestClusters()