1 //__________________________________________________________________________________________________
6 for(Int_t iEventN=0;iEventN<a->GetEventsPerRun();iEventN++){//events loop
9 if(!rl->TreeH()) rl->LoadHits(); al->LoadHeader(); al->LoadKinematics();//from
10 if(!rl->TreeS()) rl->MakeTree("S"); r->MakeBranch("S");//to
12 for(Int_t iPrimN=0;iPrimN<rl->TreeH()->GetEntries();iPrimN++){//prims loop
13 rl->TreeH()->GetEntry(iPrimN);
14 for(Int_t iHitN=0;iHitN<r->Hits()->GetEntries();iHitN++){//hits loop ???
15 AliRICHhit *pHit=r->Hits()->At(iHitN);
17 TVector2 x2 = r->Param()->ShiftToWirePos(r->C(pHit->C())->Glob2Loc(pHit->OutX3()));
19 Int_t iTotQdc=r->Param()->TotQdc(x2,pHit->Eloss());
21 Int_t iPadXmin,iPadXmax,iPadYmin,iPadYmax;
22 r->Param()->Loc2Area(x2,iPadXmin,iPadYmin,iPadXmax,iPadYmax);
23 cout<<"left-down=("<<iPadXmin<<","<<iPadYmin<<") right-up=("<<iPadXmax<<','<<iPadYmax<<')'<<endl;
24 for(Int_t iPadY=iPadYmin;iPadY<=iPadYmax;iPadY++)
25 for(Int_t iPadX=iPadXmin;iPadX<=iPadXmax;iPadX++){
26 Double_t padQdc=iTotQdc*r->Param()->FracQdc(x2,iPadX,iPadY);
28 if(padQdc>0.1) r->AddSDigit(pHit->C(),iPadX,iPadY,padQdc,al->Stack()->Particle(pHit->GetTrack())->GetPdgCode(),pHit->GetTrack());
33 rl->WriteSDigits("OVERWRITE");
36 rl->UnloadHits(); al->UnloadHeader(); al->UnloadKinematics();
40 //__________________________________________________________________________________________________
42 Int_t countContrib[7][3];
48 TFile *pFile = new TFile("$(HOME)/plots.root","RECREATE");
49 TH1F *pCqH1=new TH1F("ClusQ", "Cluster Charge all chambers;q [QDC]",r->P()->MaxQdc(),0,r->P()->MaxQdc());
50 TH1F *pCsH1=new TH1F("ClusSize","Cluster size all chambers;size [number of pads in cluster]",100,0,100);
51 TH2F *pCmH2=new TH2F("ClusMap", "Cluster map;x [cm];y [cm]",1000,-r->P()->PcSizeX()/2,r->P()->PcSizeX()/2,
52 1000,-r->P()->PcSizeY()/2,r->P()->PcSizeY()/2);
54 TH1F *pCqMipH1=new TH1F("MipClusQ", "MIP Cluster Charge all chambers;q [QDC]",r->P()->MaxQdc(),0,r->P()->MaxQdc());
55 TH1F *pCsMipH1=new TH1F("MipClusSize","MIP Cluster size all chambers;size [number of pads in cluster]",100,0,100);
56 TH2F *pCmMipH2=new TH2F("MipClusMap", "MIP Cluster map;x [cm];y [cm]",1000,-r->P()->PcSizeX()/2,r->P()->PcSizeX()/2,
57 1000,-r->P()->PcSizeY()/2,r->P()->PcSizeY()/2);
59 TH1F *pCqCerH1=new TH1F("CerClusQ", "Cerenkov Cluster Charge all chambers;q [QDC]",r->P()->MaxQdc(),0,r->P()->MaxQdc());
60 TH1F *pCsCerH1=new TH1F("CerClusSize","Cernekov Cluster size all chambers;size [number of pads in cluster]",100,0,100);
61 TH2F *pCmCerH2=new TH2F("CerClusMap", "Cerenkov Cluster map;x [cm];y [cm]",1000,-r->P()->PcSizeX()/2,r->P()->PcSizeX()/2,
62 1000,-r->P()->PcSizeY()/2,r->P()->PcSizeY()/2);
63 TH1F *pCqFeeH1=new TH1F("FeeClusQ", "Feedback Cluster Charge all chambers;q [QDC]",r->P()->MaxQdc(),0,r->P()->MaxQdc());
64 TH1F *pCsFeeH1=new TH1F("FeeClusSize","Feedback Cluster size all chambers;size [number of pads in cluster]",100,0,100);
65 TH2F *pCmFeeH2=new TH2F("FeeClusMap", "Feedback Cluster map;x [cm];y [cm]",1000,-r->P()->PcSizeX()/2,r->P()->PcSizeX()/2,
66 1000,-r->P()->PcSizeY()/2,r->P()->PcSizeY()/2);
67 Bool_t isClusters=!rl->LoadRecPoints();
69 for(Int_t iEventN=0;iEventN<a->GetEventsPerRun();iEventN++){//events loop
70 al->GetEvent(iEventN);
72 rl->TreeR()->GetEntry(0);
73 Int_t iTotalClusters=0;
74 for(int i=1;i<=7;i++){//chambers loop
75 iTotalClusters+=r->Clusters(i)->GetEntries();
76 for(Int_t iClusterN=0;iClusterN<r->Clusters(i)->GetEntries();iClusterN++){//clusters loop
77 AliRICHcluster *pClus=(AliRICHcluster*)r->Clusters(i)->At(iClusterN);
79 countContrib[i-1][0] += pClus->Nmips();
80 countContrib[i-1][1] += pClus->Ncerenkovs();
81 countContrib[i-1][2] += pClus->Nfeedbacks();
83 pCqH1->Fill(pClus->Q());
84 pCsH1->Fill(pClus->Size());
85 pCmH2->Fill(pClus->X(),pClus->Y());
87 if(pClus->IsPureMip()){ //Pure Mips
88 pCqMipH1->Fill(pClus->Q());
89 pCsMipH1->Fill(pClus->Size());
90 pCmMipH2->Fill(pClus->X(),pClus->Y());
92 if(pClus->IsPureCerenkov()){ //Pure Photons
93 pCqCerH1->Fill(pClus->Q());
94 pCsCerH1->Fill(pClus->Size());
95 pCmCerH2->Fill(pClus->X(),pClus->Y());
97 if(pClus->IsPureFeedback()){ //Pure Feedbacks
98 pCqFeeH1->Fill(pClus->Q());
99 pCsFeeH1->Fill(pClus->Size());
100 pCmFeeH2->Fill(pClus->X(),pClus->Y());
105 Info("ControlPlots","Event %i processed.",iEventN);
107 if(isClusters) rl->UnloadRecPoints();
111 for(Int_t i=0;i<7;i++)
112 cout <<" chamber " << i+1 << " n. mips " << countContrib[i][0] << " n. ckovs " << countContrib[i][1] << " n. fdbks " << countContrib[i][2] << endl;
113 }//void ControlPlots()
114 //__________________________________________________________________________________________________
117 TStopwatch sw;TDatime time;
118 H_SD(); SD_D(); AliRICHClusterFinder *z=new AliRICHClusterFinder(r); z->Exec();//delete z;
119 cout<<"\nInfo in <MainTrank>: Start time: ";time.Print();
120 cout<<"Info in <MainTrank>: Stop time: ";time.Set(); time.Print();
121 cout<<"Info in <MainTrank>: Time used: ";sw.Print();
123 //__________________________________________________________________________________________________
126 if(rl->LoadHits()) return;
129 for(Int_t iPrimN=0;iPrimN<rl->TreeH()->GetEntries();iPrimN++){//prims loop
130 rl->TreeH()->GetEntry(iPrimN);
132 iTotalHits+=r->Hits()->GetEntries();
134 Info("sh","totally %i hits",iTotalHits);
137 //__________________________________________________________________________________________________
140 if(rl->LoadSDigits()) return;
141 rl->TreeS()->GetEntry(0);
142 r->SDigits()->Print();
143 Info("ss","totally %i sdigits",r->SDigits()->GetEntries());
146 //__________________________________________________________________________________________________
149 if(rl->LoadDigits()) return;
150 rl->TreeD()->GetEntry(0);
151 Int_t iTotalDigits=0;
152 for(int i=1;i<=7;i++){
153 r->Digits(i)->Print();
154 iTotalDigits+=r->Digits(i)->GetEntries();
156 Info("sd","totally %i digits",iTotalDigits);
162 if(rl->LoadRecPoints()) return;
164 rl->TreeR()->GetEntry(0);
165 for(int i=1;i<=7;i++) r->Clusters(i)->Print();
166 rl->UnloadRecPoints();
169 Double_t r2d = TMath::RadToDeg();
170 Double_t d2r = TMath::DegToRad();
172 void DisplFast(){ AliRICHDisplFast *d = new AliRICHDisplFast(); d->Exec();}
177 AliRICHRecon *detect = new AliRICHRecon("RICH patrec algorithm","Reconstruction");
180 for (int nev=0; nev< a->GetEventsPerRun(); nev++) { // Event Loop
182 cout <<endl<< "Processing event:" <<nev<<endl;
183 detect->StartProcessEvent();
187 //__________________________________________________________________________________________________
190 TStopwatch sw;TDatime time;
192 AliRICHClusterFinder *z=new AliRICHClusterFinder(r); z->Exec();
195 cout << "Info in Digits->Clusters: Start time: ";time.Print();
196 cout << "Info in Digits->Clusters: Stop time: ";time.Set(); time.Print();
197 cout << "Info in Digits->Clusters: Time used: ";sw.Print();
199 //__________________________________________________________________________________________________
202 Info("OLD_S_SD","Start.");
204 for(Int_t iEventN=0;iEventN<a->GetEventsPerRun();iEventN++){//events loop
205 al->GetEvent(iEventN); Info("OLD_S_SD","Processing event %i",iEventN);
207 rl->MakeTree("S"); r->MakeBranch("S");
208 r->ResetSDigits(); r->ResetSpecialsOld();
210 for(Int_t iPrimN=0;iPrimN<rl->TreeH()->GetEntries();iPrimN++){//prims loop
211 rl->TreeH()->GetEntry(iPrimN);
212 for(Int_t i=0;i<r->Specials()->GetEntries();i++){//specials loop
213 Int_t padx=1+ ((AliRICHSDigit*)r->Specials()->At(i))->PadX()+r->Param()->NpadsX()/2;
214 Int_t pady=1+ ((AliRICHSDigit*)r->Specials()->At(i))->PadY()+r->Param()->NpadsY()/2;
215 Double_t q= ((AliRICHSDigit*)r->Specials()->At(i))->QPad();
217 Int_t hitN= ((AliRICHSDigit*)r->Specials()->At(i))->HitNumber()-1;//!!! important -1
218 Int_t chamber=((AliRICHhit*)r->Hits()->At(hitN))->C();
219 Int_t tid=((AliRICHhit*)r->Hits()->At(hitN))->GetTrack();
220 Int_t pid=((AliRICHhit*)r->Hits()->At(hitN))->Pid();
221 if(padx<1 || padx>r->Param()->NpadsX() ||pady<1 || pady>r->Param()->NpadsY())
222 Warning("OLD_S_SD","pad is out of valid range padx= %i pady=%i event %i",padx,pady,iEventN);
224 r->AddSDigit(chamber,padx,pady,q,pid,tid);
228 rl->WriteSDigits("OVERWRITE");
230 rl->UnloadHits(); rl->UnloadSDigits();
231 Info("OLD_S_SD","Stop.");
233 //__________________________________________________________________________________________________
236 Info("SD_D","Start.");
238 r->Param()->GenSigmaThMap();
241 for(Int_t iEventN=0;iEventN<a->GetEventsPerRun();iEventN++){//events loop
242 al->GetEvent(iEventN); cout<<"Event "<<iEventN<<endl;
243 rl->MakeTree("D");r->MakeBranch("D"); //create TreeD with RICH branches
244 r->ResetSDigits();r->ResetDigits();//reset lists of sdigits and digits
245 rl->TreeS()->GetEntry(0);
246 r->SDigits()->Sort();
248 Int_t combiPid,chamber,x,y,tid[3],id; Double_t q;
249 Int_t iNdigitsPerPad;//how many sdigits for a given pad
250 const int kBad=-101;//??? to be removed in code
251 for(Int_t i=0;i<r->SDigits()->GetEntries();i++){//sdigits loop (sorted)
252 AliRICHdigit *pSdig=(AliRICHdigit*)r->SDigits()->At(i);
253 if(pSdig->Id()==id){//still the same pad
256 combiPid+=pSdig->CombiPid();
257 if(iNdigitsPerPad<=3)
258 tid[iNdigitsPerPad-1]=pSdig->Tid(0);
260 Warning("SDigits2Digits","More then 3 sdigits for the given pad");
261 }else{//new pad, add the pevious one
262 if(id!=kBad&&r->Param()->IsOverTh(chamber,x,y,q)) {
263 r->AddDigit(chamber,x,y,q,combiPid,tid);
265 combiPid=pSdig->CombiPid();chamber=pSdig->C();id=pSdig->Id();
266 x=pSdig->X();y=pSdig->Y();
268 tid[0]=pSdig->Tid(0);
269 iNdigitsPerPad=1;tid[1]=tid[2]=kBad;
271 }//sdigits loop (sorted)
273 if(r->SDigits()->GetEntries()&&r->Param()->IsOverTh(chamber,x,y,q))
274 r->AddDigit(chamber,x,y,q,combiPid,tid);//add the last digit
277 rl->WriteDigits("OVERWRITE");
279 rl->UnloadSDigits(); rl->UnloadDigits();
280 r->ResetSDigits();r->ResetDigits();//reset lists of sdigits and digits
281 Info("SD_D","Stop.");
283 //__________________________________________________________________________________________________
287 al->LoadHeader(); al->LoadKinematics();
290 Bool_t isSdigits=!rl->LoadSDigits();
291 Bool_t isClusters=!rl->LoadRecPoints();
292 Bool_t isDigits=!rl->LoadDigits();//loaders
294 cout<<endl; cout<<endl;
295 for(Int_t iEventN=0;iEventN<a->GetEventsPerRun();iEventN++){//events loop
296 Int_t iNparticles=a->GetEvent(iEventN);
297 Int_t iNprims=rl->TreeH()->GetEntries();
300 for(Int_t iPrimN=0;iPrimN<iNprims;iPrimN++){//prims loop
301 rl->TreeH()->GetEntry(iPrimN);
302 iTotalHits+=r->Hits()->GetEntries();
303 TParticle *pPrim=al->Stack()->Particle(iPrimN);
304 Info("Show","Evt %4i prim %4i has %4i hits from %s (,%7.2f,%7.2f)",
307 r->Hits()->GetEntries(),
309 pPrim->Theta()*r2d,pPrim->Phi()*r2d);
311 Info("Show-HITS","Evt %i total: %i particles %i primaries %i hits",
312 iEventN, iNparticles, iNprims, iTotalHits);
314 rl->TreeS()->GetEntry(0);
315 Info("Show-SDIGITS","Evt %i contains %5i sdigits",iEventN,r->SDigits()->GetEntries());
318 rl->TreeD()->GetEntry(0);
319 for(int i=1;i<=7;i++)
320 Info("Show-DIGITS","Evt %i chamber %i contains %5i digits",
321 iEventN, i, r->Digits(i)->GetEntries());
324 rl->TreeR()->GetEntry(0);
325 for(int i=1;i<=7;i++)
326 Info("Show-CLUSTERS","Evt %i chamber %i contains %5i clusters",
327 iEventN, i, r->Clusters(i)->GetEntries());
332 if(isSdigits) rl->UnloadSDigits();
333 if(isDigits) rl->UnloadDigits();
334 if(isClusters) rl->UnloadRecPoints();
336 al->UnloadKinematics();
339 //__________________________________________________________________________________________________
344 AliLoader *rl,*tl,*il;
350 Info("ReadAlice","Tring to read ALICE from SIMULATED FILE.");
351 AliLoader::SetDebug(0);
352 if(gAlice) delete gAlice;
353 if(!(al=AliRunLoader::Open("galice.root","AlicE","update"))){
354 gSystem->Exec("rm -rf *.root *.dat");
355 Error("ReadAlice","galice.root broken, removing all this garbage then init new one");
356 new AliRun("gAlice","Alice experiment system");
357 gAlice->SetDebug(-1);
358 gAlice->Init("Config.C");
359 r=(AliRICH*)gAlice->GetDetector("RICH");
363 if(!gAlice) Fatal("ReadAlice","No gAlice in file");
367 if(!(r=(AliRICH*)gAlice->GetDetector("RICH"))) Warning("RICH/menu.C::ReadAlice","No RICH in file");
369 if(!(rl=al->GetLoader("RICHLoader"))) Warning("RICH/menu.C::ReadAlice","No RICH loader in file");
371 Info("ReadAlice","Run contains %i event(s)",gAlice->GetEventsPerRun());
374 //__________________________________________________________________________________________________
377 TCanvas *pC=new TCanvas("c","Amplification test",900,800);
380 TF1 *pF1=new TF1("f1",Gain,-70,70,1); pF1->SetParameters(1,1);pF1->SetParNames("Sector");
381 TF1 *pF2=new TF1("f2",Gain,-70,70,1); pF2->SetParameters(2,1);pF2->SetParNames("Sector");
382 pF1->Draw();pF2->Draw("same");
386 const Int_t nPoints=8;
387 THStack *pStack=new THStack("stack","photons");
388 TLegend *pLeg=new TLegend(0.6,0.2,0.9,0.5,"legend");
391 Double_t starty=AliRICHParam::DeadZone()/2;
392 Double_t deltay=AliRICHParam::SectorSizeY()/nPoints;
394 for(int i=0;i<nPoints;i++){
395 apH[i]=new TH1F(Form("h%i",i),"Qdc for Photon;QDC;Counts",500,0,500); apH[i]->SetLineColor(i);
397 pLeg->AddEntry(apH[i],Form("@(0,%5.2f->%5.2f)",starty+i*deltay,starty+i*deltay-AliRICHParam::SectorSizeY()/2));
402 // AliRICHParam::ResetWireSag();
403 for(Int_t i=0;i<10000;i++){//events loop
404 for(int j=0;j<nPoints;j++){
405 x2.Set(0,starty-j*deltay);
406 apH[j]->Fill(AliRICHParam::TotQdc(x2,0));
409 pStack->Draw("nostack");
412 //__________________________________________________________________________________________________
415 Info("TestSD","Creating test sdigits.");
416 TVector3 hit(426.55,246.28,17.21);
417 TVector2 x2=r->C(4)->Glob2Loc(hit);
418 Int_t iTotQdc=r->Param()->TotQdc(x2,624e-9);
419 Int_t iPadXmin,iPadXmax,iPadYmin,iPadYmax;
421 Int_t sec=r->Param()->Loc2Pad(x2,padx,pady);
422 r->Param()->Loc2Area(x2,iPadXmin,iPadYmin,iPadXmax,iPadYmax);
423 Info("TestSD","Initial hit (%7.2f,%7.2f,%7.2f)->(%7.2f,%7.2f)->(%4i,%4i,%4i) gives %i charge",
424 hit.X(),hit.Y(),hit.Z(),x2.X(),x2.Y(),sec,padx,pady,iTotQdc);
426 cout<<"left-down=("<<iPadXmin<<","<<iPadYmin<<") right-up=("<<iPadXmax<<','<<iPadYmax<<')'<<endl;
427 for(Int_t iPadY=iPadYmin;iPadY<=iPadYmax;iPadY++)
428 for(Int_t iPadX=iPadXmin;iPadX<=iPadXmax;iPadX++)
429 cout<<r->Param()->FracQdc(x2,iPadX,iPadY)<<endl;
430 Info("TestSD","Stop.");
431 }//void TestSdigits()
432 //__________________________________________________________________________________________________
435 Info("TestC","Creating test clusters.");
436 rl->MakeTree("R");r->MakeBranch("R");
439 c.AddDigit(new AliRICHdigit(1,20,21,200,1,2,3));
440 c.AddDigit(new AliRICHdigit(1,22,21,250,1,2,3));
446 rl->WriteRecPoints("OVERWRITE");
447 rl->UnloadRecPoints();
450 Info("TestC","Stop.");
452 //__________________________________________________________________________________________________
455 AliRICHParam *p=r->Param();
458 Double_t eps=0.0000001;
459 Double_t x1=-0.5*p->PcSizeX()+eps; Double_t x2=-0.5*p->SectorSizeX()-p->DeadZone()-eps; Double_t x3=-0.5*p->SectorSizeX()+eps;
460 Double_t x6= 0.5*p->PcSizeX()-eps; Double_t x5= 0.5*p->SectorSizeX()+p->DeadZone()+eps; Double_t x4= 0.5*p->SectorSizeX()-eps;
461 Double_t y1=-0.5*p->PcSizeY()+eps; Double_t y2=-0.5*p->DeadZone()-eps;
462 Double_t y4= 0.5*p->PcSizeY()-eps; Double_t y3= 0.5*p->DeadZone()+eps;
465 AliRICHParam::Print();
467 sec=p->Loc2Pad(TVector2(x= 0,y=y1),padx,pady); v2=p->Pad2Loc(padx,pady); Info(" 73- 1","(%7.2f,%7.2f)->(%5i,%5i,%5i) center=(%7.2f,%7.2f)",x,y,sec,padx,pady,v2.X(),v2.Y());
468 sec=p->Loc2Pad(TVector2(x= 0,y=y2),padx,pady); v2=p->Pad2Loc(padx,pady); Info(" 73- 80","(%7.2f,%7.2f)->(%5i,%5i,%5i) center=(%7.2f,%7.2f)",x,y,sec,padx,pady,v2.X(),v2.Y());
469 sec=p->Loc2Pad(TVector2(x= 0,y= 0),padx,pady); v2=p->Pad2Loc(padx,pady); Info(" dead ","(%7.2f,%7.2f)->(%5i,%5i,%5i) center=(%7.2f,%7.2f)",x,y,sec,padx,pady,v2.X(),v2.Y());
470 sec=p->Loc2Pad(TVector2(x= 0,y=y3),padx,pady); v2=p->Pad2Loc(padx,pady); Info(" 73- 81","(%7.2f,%7.2f)->(%5i,%5i,%5i) center=(%7.2f,%7.2f)",x,y,sec,padx,pady,v2.X(),v2.Y());
471 sec=p->Loc2Pad(TVector2(x= 0,y=y4),padx,pady); v2=p->Pad2Loc(padx,pady); Info(" 73-160","(%7.2f,%7.2f)->(%5i,%5i,%5i) center=(%7.2f,%7.2f)\n",x,y,sec,padx,pady,v2.X(),v2.Y());
473 sec=p->Loc2Pad(TVector2(x=x1,y=y4),padx,pady); v2=p->Pad2Loc(padx,pady); Info(" 1-160","(%7.2f,%7.2f)->(%5i,%5i,%5i) center=(%7.2f,%7.2f)",x,y,sec,padx,pady,v2.X(),v2.Y());
474 sec=p->Loc2Pad(TVector2(x=x2,y=y4),padx,pady); v2=p->Pad2Loc(padx,pady); Info(" 48-160","(%7.2f,%7.2f)->(%5i,%5i,%5i) center=(%7.2f,%7.2f)",x,y,sec,padx,pady,v2.X(),v2.Y());
475 sec=p->Loc2Pad(TVector2(x=x3,y=y4),padx,pady); v2=p->Pad2Loc(padx,pady); Info(" 49-160","(%7.2f,%7.2f)->(%5i,%5i,%5i) center=(%7.2f,%7.2f)",x,y,sec,padx,pady,v2.X(),v2.Y());
476 sec=p->Loc2Pad(TVector2(x=x4,y=y4),padx,pady); v2=p->Pad2Loc(padx,pady); Info(" 96-160","(%7.2f,%7.2f)->(%5i,%5i,%5i) center=(%7.2f,%7.2f)",x,y,sec,padx,pady,v2.X(),v2.Y());
477 sec=p->Loc2Pad(TVector2(x=x5,y=y4),padx,pady); v2=p->Pad2Loc(padx,pady); Info(" 97-160","(%7.2f,%7.2f)->(%5i,%5i,%5i) center=(%7.2f,%7.2f)",x,y,sec,padx,pady,v2.X(),v2.Y());
478 sec=p->Loc2Pad(TVector2(x=x6,y=y4),padx,pady); v2=p->Pad2Loc(padx,pady); Info("144-160","(%7.2f,%7.2f)->(%5i,%5i,%5i) center=(%7.2f,%7.2f)\n",x,y,sec,padx,pady,v2.X(),v2.Y());
480 sec=p->Loc2Pad(TVector2(x=x1,y=y3),padx,pady); v2=p->Pad2Loc(padx,pady); Info(" 1- 81","(%7.2f,%7.2f)->(%5i,%5i,%5i) center=(%7.2f,%7.2f)",x,y,sec,padx,pady,v2.X(),v2.Y());
481 sec=p->Loc2Pad(TVector2(x=x2,y=y3),padx,pady); v2=p->Pad2Loc(padx,pady); Info(" 48- 81","(%7.2f,%7.2f)->(%5i,%5i,%5i) center=(%7.2f,%7.2f)",x,y,sec,padx,pady,v2.X(),v2.Y());
482 sec=p->Loc2Pad(TVector2(x=x3,y=y3),padx,pady); v2=p->Pad2Loc(padx,pady); Info(" 49- 81","(%7.2f,%7.2f)->(%5i,%5i,%5i) center=(%7.2f,%7.2f)",x,y,sec,padx,pady,v2.X(),v2.Y());
483 sec=p->Loc2Pad(TVector2(x=x4,y=y3),padx,pady); v2=p->Pad2Loc(padx,pady); Info(" 96- 81","(%7.2f,%7.2f)->(%5i,%5i,%5i) center=(%7.2f,%7.2f)",x,y,sec,padx,pady,v2.X(),v2.Y());
484 sec=p->Loc2Pad(TVector2(x=x5,y=y3),padx,pady); v2=p->Pad2Loc(padx,pady); Info(" 97- 81","(%7.2f,%7.2f)->(%5i,%5i,%5i) center=(%7.2f,%7.2f)",x,y,sec,padx,pady,v2.X(),v2.Y());
485 sec=p->Loc2Pad(TVector2(x=x6,y=y3),padx,pady); v2=p->Pad2Loc(padx,pady); Info("144- 81","(%7.2f,%7.2f)->(%5i,%5i,%5i) center=(%7.2f,%7.2f)\n",x,y,sec,padx,pady,v2.X(),v2.Y());
487 sec=p->Loc2Pad(TVector2(x=x1,y=y2),padx,pady); v2=p->Pad2Loc(padx,pady); Info(" 1- 80","(%7.2f,%7.2f)->(%5i,%5i,%5i) center=(%7.2f,%7.2f)",x,y,sec,padx,pady,v2.X(),v2.Y());
488 sec=p->Loc2Pad(TVector2(x=x2,y=y2),padx,pady); v2=p->Pad2Loc(padx,pady); Info(" 48- 80","(%7.2f,%7.2f)->(%5i,%5i,%5i) center=(%7.2f,%7.2f)",x,y,sec,padx,pady,v2.X(),v2.Y());
489 sec=p->Loc2Pad(TVector2(x=x3,y=y2),padx,pady); v2=p->Pad2Loc(padx,pady); Info(" 49- 80","(%7.2f,%7.2f)->(%5i,%5i,%5i) center=(%7.2f,%7.2f)",x,y,sec,padx,pady,v2.X(),v2.Y());
490 sec=p->Loc2Pad(TVector2(x=x4,y=y2),padx,pady); v2=p->Pad2Loc(padx,pady); Info(" 96- 80","(%7.2f,%7.2f)->(%5i,%5i,%5i) center=(%7.2f,%7.2f)",x,y,sec,padx,pady,v2.X(),v2.Y());
491 sec=p->Loc2Pad(TVector2(x=x5,y=y2),padx,pady); v2=p->Pad2Loc(padx,pady); Info(" 97- 80","(%7.2f,%7.2f)->(%5i,%5i,%5i) center=(%7.2f,%7.2f)",x,y,sec,padx,pady,v2.X(),v2.Y());
492 sec=p->Loc2Pad(TVector2(x=x6,y=y2),padx,pady); v2=p->Pad2Loc(padx,pady); Info("144- 80","(%7.2f,%7.2f)->(%5i,%5i,%5i) center=(%7.2f,%7.2f)\n",x,y,sec,padx,pady,v2.X(),v2.Y());
494 sec=p->Loc2Pad(TVector2(x=x1,y=y1),padx,pady); v2=p->Pad2Loc(padx,pady); Info(" 1- 1","(%7.2f,%7.2f)->(%5i,%5i,%5i) center=(%7.2f,%7.2f)",x,y,sec,padx,pady,v2.X(),v2.Y());
495 sec=p->Loc2Pad(TVector2(x=x2,y=y1),padx,pady); v2=p->Pad2Loc(padx,pady); Info(" 48- 1","(%7.2f,%7.2f)->(%5i,%5i,%5i) center=(%7.2f,%7.2f)",x,y,sec,padx,pady,v2.X(),v2.Y());
496 sec=p->Loc2Pad(TVector2(x=x3,y=y1),padx,pady); v2=p->Pad2Loc(padx,pady); Info(" 49- 1","(%7.2f,%7.2f)->(%5i,%5i,%5i) center=(%7.2f,%7.2f)",x,y,sec,padx,pady,v2.X(),v2.Y());
497 sec=p->Loc2Pad(TVector2(x=x4,y=y1),padx,pady); v2=p->Pad2Loc(padx,pady); Info(" 96- 1","(%7.2f,%7.2f)->(%5i,%5i,%5i) center=(%7.2f,%7.2f)",x,y,sec,padx,pady,v2.X(),v2.Y());
498 sec=p->Loc2Pad(TVector2(x=x5,y=y1),padx,pady); v2=p->Pad2Loc(padx,pady); Info(" 97- 1","(%7.2f,%7.2f)->(%5i,%5i,%5i) center=(%7.2f,%7.2f)",x,y,sec,padx,pady,v2.X(),v2.Y());
499 sec=p->Loc2Pad(TVector2(x=x6,y=y1),padx,pady); v2=p->Pad2Loc(padx,pady); Info("144- 1","(%7.2f,%7.2f)->(%5i,%5i,%5i) center=(%7.2f,%7.2f)\n",x,y,sec,padx,pady,v2.X(),v2.Y());
502 //__________________________________________________________________________________________________
505 TControlBar *pMenu = new TControlBar("vertical","RICH test");
506 pMenu->AddButton("Test segmentation", "TestSeg()", "Test AliRICHParam segmentation methods");
507 pMenu->AddButton("Test response", "TestResponse()", "Test AliRICHParam response methods");
508 pMenu->AddButton("Test sdigits", "TestSD()", "Create test set of sdigits");
509 pMenu->AddButton("Test clusters", "TestC()", "Create test set of clusters");
510 pMenu->AddButton("Test digits OLD", "TestDigitsOLD()", "Create test set of OLD digits");
513 //__________________________________________________________________________________________________
516 TControlBar *pMenu = new TControlBar("vertical","RICH main");
518 if(ReadAlice()){//it's from file, reconstruct
519 pMenu->AddButton("hits->sdigits->digits->clusters","MainTrank()","Convert");
521 pMenu->AddButton("hits->sdigits" ,"H_SD()" ,"AliRICH::Hits2SDigits");
522 pMenu->AddButton("sdigits->digits" ,"SD_D()" ,"AliRICHDigitizer");
523 pMenu->AddButton("digits->clusters" ,"D_C()" ,"AliRICHClusterFinder");
524 pMenu->AddButton("clusters->recos" ,"C_R()" ,"AliRICHRecon");
526 pMenu->AddButton("Show", "Show()","Shows the structure of events in files");
527 pMenu->AddButton("Display Fast", "DisplFast()", "Display Fast");
528 pMenu->AddButton("Control Plots", "ControlPlots()", "Display some control histograms");
529 pMenu->AddButton("OLD specials->sdigits", "OLD_S_SD()", "Perform first phase converstion");
531 }else{//it's aliroot, simulate
532 pMenu->AddButton("Run", "a->Run(1)", "Process!");
533 pMenu->AddButton("Geo GUI", "new G3GeometryGUI;","Create instance of G4GeometryGUI");
535 pMenu->AddButton("Test submenu", "TestMenu()", "Shows test submenu");
536 pMenu->AddButton("Browser", "new TBrowser;", "Start ROOT TBrowser");
537 pMenu->AddButton("Debug ON", "DebugON();", "Switch debug on-off");
538 pMenu->AddButton("Debug OFF", "DebugOFF();", "Switch debug on-off");
539 pMenu->AddButton("Quit", ".q", "Close session");
541 a=gAlice;//for manual manipulation convinience
543 //__________________________________________________________________________________________________
544 void DebugOFF(){ Info("DebugOFF",""); a->SetDebug(0); r->SetDebug(0); AliLoader::SetDebug(0);}
545 void DebugON() { Info("DebugON",""); a->SetDebug(1); r->SetDebug(1); AliLoader::SetDebug(1);}