]> git.uio.no Git - u/mrichter/AliRoot.git/blame - RICH/RichMenu.C
Correcting sources of warnings
[u/mrichter/AliRoot.git] / RICH / RichMenu.C
CommitLineData
473cb33a 1//globals for easy manual manipulations
2AliRun *a;
3AliRunLoader *al;
4AliLoader *rl;
5AliRICH *r;
6AliStack *s;
7
8void ph(Int_t event=0) {r->PrintHits(event);} //utility print hits for 'event' event
9void ps(Int_t event=0) {r->PrintSDigits(event);} //utility print sdigits
10void pd(Int_t event=0) {r->PrintDigits(event);} //utility print digits
11void pc(Int_t event=0) {r->PrintClusters(event);}//utility print clusters
12void pt(Int_t event=0) {r->PrintTracks(event);} //utility print tracks
d3eb6079 13Int_t nem(Int_t event=0) {AliRICHDisplFast::Nparticles(kElectron ,event,al);} //utility number of electrons
14Int_t nep(Int_t event=0) {AliRICHDisplFast::Nparticles(kPositron ,event,al);} //utility number of positrons
15Int_t nmup(Int_t event=0) {AliRICHDisplFast::Nparticles(kMuonPlus ,event,al);} //utility number of positive muons
16Int_t nmum(Int_t event=0) {AliRICHDisplFast::Nparticles(kMuonMinus ,event,al);} //utility number of negative muons
17Int_t npi0(Int_t event=0) {AliRICHDisplFast::Nparticles(kPi0 ,event,al);} //utility number of electrons
18Int_t npip(Int_t event=0) {AliRICHDisplFast::Nparticles(kPiPlus ,event,al);} //utility number of electrons
19Int_t npim(Int_t event=0) {AliRICHDisplFast::Nparticles(kPiMinus ,event,al);} //utility number of electrons
20Int_t nk0(Int_t event=0) {AliRICHDisplFast::Nparticles(kK0 ,event,al);} //utility number of electrons
21Int_t nkp(Int_t event=0) {AliRICHDisplFast::Nparticles(kKPlus ,event,al);} //utility number of electrons
22Int_t nkm(Int_t event=0) {AliRICHDisplFast::Nparticles(kKMinus ,event,al);} //utility number of electrons
23Int_t npp(Int_t event=0) {AliRICHDisplFast::Nparticles(kProton ,event,al);} //utility number of protons
473cb33a 24//__________________________________________________________________________________________________
25void pp(int tid)
26{
27 if(!al) return;
28 al->LoadHeader(); al->LoadKinematics();
29
30 if(tid<0||tid>=al->Stack()->GetNtrack())
31 cout<<"Valid tid number is 0-"<<al->Stack()->GetNtrack()-1<<" for this event.\n";
32 else
33 PrintParticleInfo(tid);
34
35 al->UnloadKinematics(); al->UnloadHeader();
36}
37//__________________________________________________________________________________________________
38void PrintParticleInfo(int tid)
39{
40// Prints particle info for a given TID
41 TParticle *p=al->Stack()->Particle(tid);
42 cout<<p->GetName()<<"("<<tid<<")";
43 if(p->GetMother(0)!=-1){cout<<" from "; PrintParticleInfo(p->GetMother(0));}
44 else {cout<<endl;}
45}
46//__________________________________________________________________________________________________
47Int_t prim(Int_t tid)
48{
49// Provides mother TID for the given TID
50 al->LoadHeader(); al->LoadKinematics();
51
52 if(tid<0||tid>=al->Stack()->GetNtrack())
53 cout<<"Valid tid number is 0-"<<al->Stack()->GetNtrack()-1<<" for this event.\n";
54 else
55 while(1){
56 TParticle *p=al->Stack()->Particle(tid);
57 if(p->GetMother(0)==-1) break;
58 tid=p->GetMother(0);
59 }
60
61 al->UnloadKinematics(); al->UnloadHeader();
62 return tid;
63}
64
65//__________________________________________________________________________________________________
66void Show()
67{
68 CreateHists();
69 Info("","\n\n\n");
70//load all trees
71 al->LoadHeader();
72 al->LoadKinematics();
73 Bool_t isHits=!rl->LoadHits();
74 Bool_t isSdigits=!rl->LoadSDigits();
75 Bool_t isDigits=!rl->LoadDigits();//loaders
76 Bool_t isClusters=!rl->LoadRecPoints();
77
78 for(Int_t iEventN=0;iEventN<a->GetEventsPerRun();iEventN++){//events loop
473cb33a 79
473cb33a 80
b8e2b4f4 81 Info("Show-STA","Evt %i-> %i particles %i primaries %i e- %i e+",
82 iEventN, iNparticles, iNprims, iElectronCounter, iPositronCounter);
83 Info("Show-STA","Evt %i-> %i particles %i primaries %i p+ %i p-",
84 iEventN, iNparticles, iNprims, iPiPlusCounter, iPiMinusCounter);
473cb33a 85 Info("Show-STA","Evt %i-> %i particles %i primaries %i K+ %i K-",
86 iEventN, iNparticles, iNprims, iKPlusCounter, iKMinusCounter);
b8e2b4f4 87 Info("Show-STA","Evt %i-> %i particles %i primaries %i p %i pbar",
88 iEventN, iNparticles, iNprims, iProtonCounter, iProtonBarCounter);
473cb33a 89
90 Int_t iHitsCounter=0;
473cb33a 91 Info("Show-HIT","Evt %i-> %i particles %i primaries %i entries in TreeH %i hits",
92 iEventN, iNparticles, iNprims, iNentries, iHitsCounter);
93
94 if(isSdigits){
95 rl->TreeS()->GetEntry(0);
96 Info("Show-SDI","Evt %i contains %5i sdigits",iEventN,r->SDigits()->GetEntries());
97 }
98 if(isDigits){
99 rl->TreeD()->GetEntry(0);
100 for(int i=1;i<=7;i++)
101 Info("Show-DIG","Evt %i chamber %i contains %5i digits",
102 iEventN, i, r->Digits(i)->GetEntries());
103 }else
104 Info("Show-DIG","There is no digits for this event");
105 if(isClusters){
106 rl->TreeR()->GetEntry(0);
107 for(int i=1;i<=7;i++)
108 Info("Show-CLU","Evt %i chamber %i contains %5i clusters",
109 iEventN, i, r->Clusters(i)->GetEntries());
110 }
111 cout<<endl;
112 }//events loop
113//unload all trees
114 rl->UnloadHits();
115 if(isSdigits) rl->UnloadSDigits();
116 if(isDigits) rl->UnloadDigits();
117 if(isClusters) rl->UnloadRecPoints();
118 al->UnloadHeader();
119 al->UnloadKinematics();
120 ShowHists();
121}//void Show()
122//__________________________________________________________________________________________________
123
124
125
126Bool_t ReadAlice()
127{
128 Info("ReadAlice","Tring to read ALICE from SIMULATED FILE.");
129 if(gAlice){
130 delete gAlice->GetRunLoader();
131 delete gAlice;
132 }
133 if(!(al=AliRunLoader::Open())){//if not possible to read from galice.root, then create the new session
134 gSystem->Exec("rm -rf *.root *.dat");
135 Error("menu.C::ReadAlice","galice.root broken, removing all this garbage then init new one");
136 new AliRun("gAlice","Alice experiment system");
137 AliLog::SetModuleDebugLevel("RICH",1);
138 gAlice->Init("Config.C");
139 r=(AliRICH*)gAlice->GetDetector("RICH");
140 a=gAlice; //for manual convinience
141 return kFALSE;
142 }
143 al->LoadgAlice();//before this gAlice is 0;
144 if(!gAlice) Fatal("menu.C::ReadAlice","No gAlice in file");
145 a=al->GetAliRun();//provides pointer to AliRun object
146//RICH
147 if(!(r=(AliRICH*)gAlice->GetDetector("RICH"))) Warning("RICH/menu.C::ReadAlice","No RICH in file");
148 if(!(rl=al->GetLoader("RICHLoader"))) Warning("RICH/menu.C::ReadAlice","No RICH loader in file");
149
150 Info("ReadAlice","Run contains %i event(s)",gAlice->GetEventsPerRun());
151 return kTRUE;
152}
153//__________________________________________________________________________________________________
154void TestMenu()
155{
156 TControlBar *pMenu = new TControlBar("vertical","RICH test");
157 pMenu->AddButton("Test segmentation" ,"rp->TestSeg()" ,"Test AliRICHParam segmentation methods");
158 pMenu->AddButton("Test response" ,"rp->TestResp()" ,"Test AliRICHParam response methods");
159 pMenu->AddButton("Test transformation","rp->TestTrans()","Test AliRICHParam transformation methods");
160 pMenu->AddButton("Test opticals" ,".x Opticals.h" ,"Test optical properties");
161 pMenu->Show();
162}//TestMenu()
163//__________________________________________________________________________________________________
164void RichMenu()
165{
166 TControlBar *pMenu = new TControlBar("vertical","RICH main");
167
168 if(ReadAlice()){//it's from file, show some info
169 pMenu->AddButton("Show", "Show()", "Shows the structure of events in files");
170 pMenu->AddButton("Display Fast", "AliRICHDisplFast *d = new AliRICHDisplFast(); d->Exec();", "Display Fast");
171 pMenu->AddButton("Control Plots", "ControlPlots()", "Create some control histograms");
d3eb6079 172 pMenu->AddButton("Recon with stack","r->CheckPR()", "Create RSR.root with ntuple hn");
473cb33a 173 }else{//it's aliroot, simulate
174 pMenu->AddButton("Debug ON", "DebugON();", "Switch debug on-off");
175 pMenu->AddButton("Debug OFF", "DebugOFF();", "Switch debug on-off");
176 pMenu->AddButton("Run", "a->Run(1)", "Process!");
177 pMenu->AddButton("Geo GUI", "GeomGui()", "Shows geometry");
178 pMenu->AddButton("Read RAW", "ReadRaw()", "Read a list of digits from test beam file");
179 }
180 pMenu->AddButton("Test submenu", "TestMenu()", "Shows test submenu");
181 pMenu->AddButton("Browser", "new TBrowser;", "Start ROOT TBrowser");
182 pMenu->AddButton("Quit", ".q", "Close session");
183 pMenu->Show();
184}//menu()
185//__________________________________________________________________________________________________
186void DebugOFF(){ Info("DebugOFF",""); AliLog::SetGlobalDebugLevel(0);}
187void DebugON() { Info("DebugON",""); AliLog::SetGlobalDebugLevel(AliLog::kDebug);}
473cb33a 188//__________________________________________________________________________________________________
189void GeomGui()
190{
191 if(gGeoManager){
192 gGeoManager->GetTopVolume()->Draw();
193 AliRICHParam::ShowAxis();
194 }else
195 new G3GeometryGUI;
196}
197//__________________________________________________________________________________________________
198void ControlPlots()
199{
200 r->ControlPlots();
201 new TBrowser;
202}
d3eb6079 203//__________________________________________________________________________________________________
204void ParticleComposition()
205{
206 TH2F *pFluxH2 =new TH2F("flux","Charged flux for central Hijing event with Vertex<470 P>5MeV for electrons and positrons, P>1GeV for others",10,-5,5, 10,0,10); pFluxH2->SetStats(0);
207 pFluxH2->GetXaxis()->SetBinLabel(1,Form("p^{-}>%dGeV" ,cutPproton));
208 pFluxH2->GetXaxis()->SetBinLabel(2,Form("K^{-}>%dGeV" ,cutPkaonminus));
209 pFluxH2->GetXaxis()->SetBinLabel(3,Form("#pi^{-}>%dGeV" , ));
210 pFluxH2->GetXaxis()->SetBinLabel(4,Form("#mu^{-}>%dGeV" , ));
211 pFluxH2->GetXaxis()->SetBinLabel(5,Form("e^{+}>%dGeV" ,));
212
213 pFluxH2->GetXaxis()->SetBinLabel(6,Form("e^{-}>%dGeV"));
214 pFluxH2->GetXaxis()->SetBinLabel(7,Form("#mu^{+}>%dGeV"));
215 pFluxH2->GetXaxis()->SetBinLabel(8,Form("#pi^{+}>%dGeV"));
216 pFluxH2->GetXaxis()->SetBinLabel(9,Form("K^{+}>%dGeV"));
217 pFluxH2->GetXaxis()->SetBinLabel(10,Form("p^{+}>%dGeV"));
218
219 pFluxH2->GetYaxis()->SetBinLabel(1,"sum");
220 pFluxH2->GetYaxis()->SetBinLabel(2,"ch1");
221 pFluxH2->GetYaxis()->SetBinLabel(3,"ch2");
222 pFluxH2->GetYaxis()->SetBinLabel(4,"ch3");
223 pFluxH2->GetYaxis()->SetBinLabel(5,"ch4");
224 pFluxH2->GetYaxis()->SetBinLabel(6,"ch5");
225 pFluxH2->GetYaxis()->SetBinLabel(7,"ch6");
226 pFluxH2->GetYaxis()->SetBinLabel(8,"ch7");
227 pFluxH2->GetYaxis()->SetBinLabel(9,"prim");
228 pFluxH2->GetYaxis()->SetBinLabel(10,"tot");
229
230 TH1F *pElecP=new TH1F("Pelec","Electrons made hit in RICH;p [GeV]",1000,-10,10);
231 TH1F *pMuonP=new TH1F("Pmuon","Muons made hit in RICH;p [GeV]" ,1000,-10,10);
232 TH1F *pPionP=new TH1F("Ppion","Pions made hit in RICH;p [GeV]" ,1000,-10,10);
233 TH1F *pKaonP=new TH1F("Pkaon","Kaon made hit in RICH;p [GeV]" ,1000,-10,10);
234 TH1F *pProtP=new TH1F("Pprot","Protons made hit in RICH;p [GeV]" ,1000,-10,10);
235
236 al->LoadHeader();
237 al->LoadKinematics();
238 Int_t iNparticles=al->Stack()->GetNtrack();
239 Int_t iNprims=al->Stack()->GetNprimary();
240
241 for(Int_t iParticleN=0;iParticleN<iNparticles;iParticleN++){//stack loop
242 TParticle *pPart=al->Stack()->Particle(iParticleN);
243
244 if(iParticleN%10000==0) Info("Show-STA"," %i particles read",iParticleN);
245
246 switch(pPart->GetPdgCode()){
247 case kPositron: pFluxH2->Fill(-1,9); break;
248 case kElectron: pFluxH2->Fill( 0,9); break;
249
250 case kMuonMinus: pFluxH2->Fill(-2,9); break;
251 case kMuonPlus: pFluxH2->Fill( 1,9); break;
252
253 case kPiMinus: pFluxH2->Fill(-3,9); break;
254 case kPiPlus: pFluxH2->Fill( 2,9); break;
255
256 case kKMinus: pFluxH2->Fill(-4,9); break;
257 case kKPlus: pFluxH2->Fill( 3,9); break;
258
259 case kProtonBar: pFluxH2->Fill(-5,9); break;
260 case kProton: pFluxH2->Fill( 4,9); break;
261 }//switch
262 }//stack loop
263
264
265
266
267 rl->LoadHits();
268
269
270 for(Int_t iEntryN=0;iEntryN < rl->TreeH()->GetEntries();iEntryN++){//TreeH loop
271 rl->TreeH()->GetEntry(iEntryN);//get current entry (prim)
272 for(Int_t iHitN=0;iHitN<r->Hits()->GetEntries();iHitN++){//hits loop
273 AliRICHhit *pHit = (AliRICHhit*)r->Hits()->At(iHitN);//get current hit
274 TParticle *pPart=al->Stack()->Particle(pHit->GetTrack());//get stack particle which produced the current hit
275
276 if(TMath::Sqrt(pPart->Vx()*pPart->Vx()+pPart->Vy()*pPart->Vy()+pPart->Vz()*pPart->Vz()) > 470) continue; //cut on vertex position
277 if(pPart->GetPdgCode()==kElectron && pPart->P()<0.005) continue; //cut on electron momentum 5MeV
278 if(pPart->GetPdgCode()==kPositron && pPart->P()<0.005) continue; //cut on electron momentum 5MeV
279 if(pPart->GetPdgCode()!=kElectron && pPart->P()<1) continue; //cut on others momentum 1GeV
280
281 switch(pPart->GetPdgCode()){
282 case kPositron : pElecP->Fill(-pPart->P()); pFluxH2->Fill(-1,pHit->C());break;
283 case kElectron : pElecP->Fill( pPart->P()); pFluxH2->Fill( 0,pHit->C());break;
284
285 case kMuonPlus : pMuonP->Fill( pPart->P()); pFluxH2->Fill(-2,pHit->C());break;
286 case kMuonMinus: pMuonP->Fill(-pPart->P()); pFluxH2->Fill( 1,pHit->C());break;
287
288 case kPiMinus : pPionP->Fill(-pPart->P()); pFluxH2->Fill(-3,pHit->C());break;
289 case kPiPlus : pPionP->Fill( pPart->P()); pFluxH2->Fill( 2,pHit->C());break;
290
291 case kKPlus : pKaonP->Fill( pPart->P()); pFluxH2->Fill(-4,pHit->C());break;
292 case kKMinus : pKaonP->Fill(-pPart->P()); pFluxH2->Fill( 3,pHit->C());break;
293
294 case kProton : pProtP->Fill( pPart->P()); pFluxH2->Fill(-5,pHit->C());break;
295 case kProtonBar: pProtP->Fill(-pPart->P()); pFluxH2->Fill( 4,pHit->C());break;
296 }
297 }//hits loop
298 }//TreeH loop
299
300 rl->UnloadHits();
301 al->UnloadHeader();
302 al->UnloadKinematics();
303
304
305 for(Int_t i=1;i<=pFluxH2->GetNbinsX();i++){
306 Stat_t sum=0;
307 for(Int_t j=2;j<=8;j++) sum+=pFluxH2->GetBinContent(i,j);
308 pFluxH2->SetBinContent(i,1,sum);
309 }
310
311 TCanvas *pC1=new TCanvas("canvas1",Form("Event Nprims=%i",iNprims),1000,900);
312 pFluxH2->Draw("text"); gPad->SetGrid();
313
314 new TCanvas("celec","",200,100); pElecP->Draw();
315 new TCanvas("cmuon","",200,100); pMuonP->Draw();
316 new TCanvas("cpion","",200,100); pPionP->Draw();
317 new TCanvas("ckaon","",200,100); pKaonP->Draw();
318 new TCanvas("cprot","",200,100); pProtP->Draw();
319
320}
321
322
323
324
325
326
327
328
329