1 Int_t diaglevel=2; // 1->Hits, 2->Spectra, 3->Statistics
4 void RICHpadtestC (Int_t evNumber1=0,Int_t evNumber2=0)
6 /////////////////////////////////////////////////////////////////////////
7 // This macro is a small example of a ROOT macro
8 // illustrating how to read the output of GALICE
9 // and do some analysis.
11 /////////////////////////////////////////////////////////////////////////
14 Int_t NpadX = 162; // number of pads on X
15 Int_t NpadY = 162; // number of pads on Y
18 for (Int_t i=0;i<NpadX;i++) {
19 for (Int_t j=0;j<NpadY;j++) {
26 // Dynamically link some shared libs
28 if (gClassTable->GetID("AliRun") < 0) {
29 gROOT->LoadMacro("loadlibs.C");
33 // Connect the Root Galice file containing Geometry, Kine and Hits
35 TFile *file = (TFile*)gROOT->GetListOfFiles()->FindObject("galice.root");
36 if (!file) file = new TFile("galice.root");
38 // Get AliRun object from file or create it if not on file
41 gAlice = (AliRun*)file->Get("gAlice");
42 if (gAlice) printf("AliRun object found on file\n");
43 if (!gAlice) gAlice = new AliRun("gAlice","Alice test program");
46 // Create some histograms
53 /*TH2F *hc1 = new TH2F("hc1","Chamber 1 signal distribution",NpadX,xmin,xmax,NpadY,ymin,ymax);
54 TH2F *hc2 = new TH2F("hc2","Chamber 2 signal distribution",NpadX,xmin,xmax,NpadY,ymin,ymax);
55 TH2F *hc3 = new TH2F("hc3","Chamber 3 signal distribution",NpadX,xmin,xmax,NpadY,ymin,ymax);
56 TH2F *hc4 = new TH2F("hc4","Chamber 4 signal distribution",NpadX,xmin,xmax,NpadY,ymin,ymax);
57 TH2F *hc5 = new TH2F("hc5","Chamber 5 signal distribution",NpadX,xmin,xmax,NpadY,ymin,ymax);
58 TH2F *hc6 = new TH2F("hc6","Chamber 6 signal distribution",NpadX,xmin,xmax,NpadY,ymin,ymax);
59 TH2F *hc7 = new TH2F("hc7","Chamber 7 signal distribution",NpadX,xmin,xmax,NpadY,ymin,ymax);
60 TH2F *h = new TH2F("h","Detector hit distribution",150,-300,300,150,-300,300);
61 TH1F *Clcharge = new TH1F("Clcharge","Cluster Charge Distribution",500,0.,500.);
62 TH2F *cerenkov = new TH2F("cerenkov","Cerenkov hit distribution",150,-300,300,150,-300,300);
63 TH1F *ckovangle = new TH1F("ckovangle","Cerenkov angle per photon",200,.6,.85);
64 TH1F *hckphi = new TH1F("hckphi","Cerenkov phi angle per photon",620,-3.1,3.1);
65 TH2F *feedback = new TH2F("feedback","Feedback hit distribution",150,-300,300,150,-300,300);
66 TH2F *mip = new TH2F("mip","Mip hit distribution",150,-300,300,150,-300,300);
67 TH1F *mother = new TH1F("mother","Cerenkovs per Mip",75,0.,75.);
68 TH1F *radius = new TH1F("radius","Mean distance to Mip",200,0.,20.);
69 TH1F *phspectra1 = new TH1F("phspectra","Photon Spectra",200,5.,10.);
70 TH1F *phspectra2 = new TH1F("phspectra","Photon Spectra",200,5.,10.);
71 TH1F *totalphotons = new TH1F("totalphotons","Produced Photons per Mip",100,200,700.);
72 TH1F *feedbacks = new TH1F("feedbacks","Produced Feedbacks per Mip",50,0.5,50.);
73 TH1F *padnumber = new TH1F("padnumber","Number of pads per cluster",50,-0.5,50.);
74 TH1F *padsev = new TH1F("padsev","Number of pads hit per event",50,0.5,100.);
75 TH1F *clusev = new TH1F("clusev","Number of clusters per event",50,0.5,50.);
76 TH1F *photev = new TH1F("photev","Number of photons per event",50,0.5,50.);
77 TH1F *feedev = new TH1F("feedev","Number of feedbacks per event",50,0.5,50.);
78 TH1F *padsmip = new TH1F("padsmip","Number of pads per event inside MIP region",50,0.5,50.);
79 TH1F *padscl = new TH1F("padscl","Number of pads per event from cluster count",50,0.5,100.);*/
80 TH1F *pionspectra1 = new TH1F("pionspectra1","Pion Spectra",200,-4,2);
81 TH1F *pionspectra2 = new TH1F("pionspectra2","Pion Spectra",200,-4,2);
82 TH1F *pionspectra3 = new TH1F("pionspectra3","Pion Spectra",200,-4,2);
83 TH1F *protonspectra1 = new TH1F("protonspectra1","Proton Spectra",200,-4,2);
84 TH1F *protonspectra2 = new TH1F("protonspectra2","Proton Spectra",200,-4,2);
85 TH1F *protonspectra3 = new TH1F("protonspectra3","Proton Spectra",200,-4,2);
86 TH1F *kaonspectra1 = new TH1F("kaonspectra1","Kaon Spectra",100,-4,2);
87 TH1F *kaonspectra2 = new TH1F("kaonspectra2","Kaon Spectra",100,-4,2);
88 TH1F *kaonspectra3 = new TH1F("kaonspectra3","Kaon Spectra",100,-4,2);
89 TH1F *electronspectra1 = new TH1F("electronspectra1","Electron Spectra",100,-4,2);
90 TH1F *electronspectra2 = new TH1F("electronspectra2","Electron Spectra",100,-4,2);
91 TH1F *electronspectra3 = new TH1F("electronspectra3","Electron Spectra",100,-4,2);
92 TH1F *muonspectra1 = new TH1F("muonspectra1","Muon Spectra",100,-4,2);
93 TH1F *muonspectra2 = new TH1F("muonspectra2","Muon Spectra",100,-4,2);
94 TH1F *muonspectra3 = new TH1F("muonspectra3","Muon Spectra",100,-4,2);
95 TH1F *neutronspectra1 = new TH1F("neutronspectra1","Neutron Spectra",100,-4,2);
96 TH1F *neutronspectra2 = new TH1F("neutronspectra2","Neutron Spectra",100,-4,2);
97 TH1F *neutronspectra3 = new TH1F("neutronspectra2","Neutron Spectra",100,-4,2);
98 TH1F *chargedspectra1 = new TH1F("chargedspectra1","Charged particles above 1 GeV Spectra",100,-1,3);
99 TH1F *chargedspectra2 = new TH1F("chargedspectra2","Charged particles above 1 GeV Spectra",100,-1,3);
100 TH1F *chargedspectra3 = new TH1F("chargedspectra2","Charged particles above 1 GeV Spectra",100,-1,3);
101 /* TH1F *hitsX = new TH1F("digitsX","Distribution of hits along x-axis",200,-300,300);
102 TH1F *hitsY = new TH1F("digitsY","Distribution of hits along z-axis",200,-300,300);*/
103 TH2F *production = new TH2F("production","Mother production vertices",100,-300,300,100,0,600);
108 // Start loop over events
113 //Int_t mothers[100000];
114 //Int_t mothers2[100000];
121 Int_t pion=0, kaon=0, proton=0, electron=0, neutron=0, muon=0;
122 //for (Int_t i=0;i<100;i++) mothers[i]=0;
123 for (int nev=0; nev<= evNumber2; nev++) {
124 Int_t nparticles = gAlice->GetEvent(nev);
127 //cout<<"nev "<<nev<<endl;
128 printf ("Event number : %d\n",nev);
129 //cout<<"nparticles "<<nparticles<<endl;
130 printf ("Number of particles: %d\n",nparticles);
131 if (nev < evNumber1) continue;
132 if (nparticles <= 0) return;
134 // Get pointers to RICH detector and Hits containers
136 AliRICH *RICH = (AliRICH*)gAlice->GetDetector("RICH");
137 Int_t nent=(Int_t)gAlice->TreeR()->GetEntries();
138 gAlice->TreeR()->GetEvent(nent-1);
139 TClonesArray *Rawclusters = RICH->RawClustAddress(2); // Raw clusters branch
140 //printf ("Rawclusters:%p",Rawclusters);
141 Int_t nrawclusters = Rawclusters->GetEntriesFast();
142 //printf (" nrawclusters:%d\n",nrawclusters);
143 TTree *TH = gAlice->TreeH();
144 Int_t ntracks = TH->GetEntries();
148 /* Int_t nent=(Int_t)gAlice->TreeD()->GetEntries();
149 gAlice->TreeD()->GetEvent(nent-1);
152 TClonesArray *Digits = RICH->DigitsAddress(2); // Raw clusters branch
153 Int_t ndigits = Digits->GetEntriesFast();
154 //printf("Digits:%d\n",ndigits);
155 padsev->Fill(ndigits,(float) 1);*/
157 /* for (Int_t ich=0;ich<7;ich++)
159 TClonesArray *Digits = RICH->DigitsAddress(ich); // Raw clusters branch
160 Int_t ndigits = Digits->GetEntriesFast();
161 //printf("Digits:%d\n",ndigits);
162 padsev->Fill(ndigits,(float) 1);
164 for (Int_t hit=0;hit<ndigits;hit++) {
165 dHit = (AliRICHDigit*) Digits->UncheckedAt(hit);
166 //Int_t nchamber = padHit->fChamber; // chamber number
167 //Int_t nhit = dHit->fHitNumber; // hit number
168 Int_t qtot = dHit->fSignal; // charge
169 Int_t ipx = dHit->fPadX; // pad number on X
170 Int_t ipy = dHit->fPadY; // pad number on Y
171 //Int_t iqpad = dHit->fQpad; // charge per pad
172 //Int_t rpad = dHit->fRSec; // R-position of pad
173 //printf ("Pad hit, PadX:%d, PadY:%d\n",ipx,ipy);
174 if( ipx<=162 && ipy <=162 && ich==0) hc1->Fill(ipx,ipy,(float) qtot);
175 if( ipx<=162 && ipy <=162 && ich==1) hc2->Fill(ipx,ipy,(float) qtot);
176 if( ipx<=162 && ipy <=162 && ich==2) hc3->Fill(ipx,ipy,(float) qtot);
177 if( ipx<=162 && ipy <=162 && ich==3) hc4->Fill(ipx,ipy,(float) qtot);
178 if( ipx<=162 && ipy <=162 && ich==4) hc5->Fill(ipx,ipy,(float) qtot);
179 if( ipx<=162 && ipy <=162 && ich==5) hc6->Fill(ipx,ipy,(float) qtot);
180 if( ipx<=162 && ipy <=162 && ich==6) hc7->Fill(ipx,ipy,(float) qtot);
185 // Start loop on tracks in the hits containers
187 for (Int_t track=0; track<ntracks;track++) {
188 printf ("Processing Track: %d\n",track);
190 Int_t nbytes += TH->GetEvent(track);
192 //RICH->ResetRawClusters();
193 TClonesArray *PadHits = RICH->PadHits(); // Cluster branch
194 TClonesArray *Hits = RICH->Hits(); // Hits branch
195 TClonesArray *Cerenkovs = RICH->Cerenkovs(); // Cerenkovs branch
197 //see hits distribution
198 Int_t nhits = Hits->GetEntriesFast();
199 if (nhits) Nh+=nhits;
200 //printf("nhits %d\n",nhits);
201 for (Int_t hit=0;hit<nhits;hit++) {
202 mHit = (AliRICHHit*) Hits->UncheckedAt(hit);
203 Int_t nch = mHit->fChamber; // chamber number
204 Float_t x = mHit->fX; // x-pos of hit
205 Float_t y = mHit->fZ; // y-pos
206 Float_t z = mHit->fY;
207 Int_t index = mHit->fTrack;
208 Int_t particle = mHit->fParticle;
211 //hitsX->Fill(x,(float) 1);
212 //hitsY->Fill(y,(float) 1);
214 //printf("Particle:%d\n",particle);
216 TParticle *current = (TParticle*)(*gAlice->Particles())[index];
218 R=TMath::Sqrt(current->Vx()*current->Vx() + current->Vy()*current->Vy());
220 //printf("Particle type: %d\n",current->GetPdgCode());
221 if (TMath::Abs(particle) < 50000051)
223 if (TMath::Abs(particle) == 50000050)
225 gMC->Rndm(&random, 1);
227 production->Fill(current->Vz(),R,(float) 1);
231 production->Fill(current->Vz(),R,(float) 1);
233 //mip->Fill(x,y,(float) 1);
236 if (TMath::Abs(particle)==211 || TMath::Abs(particle)==111)
238 pionspectra1->Fill(TMath::Log10(current->Energy() - current->GetCalcMass()),(float) 1);
239 if (current->Vx()>.005 && current->Vy()>.005 && current->Vz()>.005)
240 pionspectra2->Fill(TMath::Log10(current->Energy() - current->GetCalcMass()),(float) 1);
243 pionspectra3->Fill(TMath::Log10(current->Energy() - current->GetCalcMass()),(float) 1);
244 printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\R:%f\n\n\n\n\n\n\n\n\n",R);
246 printf("Pion mass: %e\n",current->GetCalcMass());
249 if (TMath::Abs(particle)==2212)
251 protonspectra1->Fill(TMath::Log10(current->Energy() - current->GetCalcMass()),(float) 1);
252 if (current->Vx()>.005 && current->Vy()>.005 && current->Vz()>.005)
253 protonspectra2->Fill(TMath::Log10(current->Energy() - current->GetCalcMass()),(float) 1);
255 protonspectra3->Fill(TMath::Log10(current->Energy() - current->GetCalcMass()),(float) 1);
256 //printf("\n\n\n\n\n\n\nProton mass: %e\n\n\n\n\n\n\n\n\n",current->GetCalcMass());
259 if (TMath::Abs(particle)==321 || TMath::Abs(particle)==130 || TMath::Abs(particle)==310
260 || TMath::Abs(particle)==311)
262 kaonspectra1->Fill(TMath::Log10(current->Energy() - current->GetCalcMass()),(float) 1);
263 if (current->Vx()>.005 && current->Vy()>.005 && current->Vz()>.005)
264 kaonspectra2->Fill(TMath::Log10(current->Energy() - current->GetCalcMass()),(float) 1);
266 kaonspectra3->Fill(TMath::Log10(current->Energy() - current->GetCalcMass()),(float) 1);
267 printf("Kaon mass: %e\n",current->GetCalcMass());
270 if (TMath::Abs(particle)==11)
272 electronspectra1->Fill(TMath::Log10(current->Energy() - current->GetCalcMass()),(float) 1);
273 if (current->Vx()>.005 && current->Vy()>.005 && current->Vz()>.005)
274 electronspectra2->Fill(TMath::Log10(current->Energy() - current->GetCalcMass()),(float) 1);
276 electronspectra3->Fill(TMath::Log10(current->Energy() - current->GetCalcMass()),(float) 1);
277 printf("Electron mass: %e\n",current->GetCalcMass());
280 if (TMath::Abs(particle)==13)
282 muonspectra1->Fill(TMath::Log10(current->Energy() - current->GetCalcMass()),(float) 1);
283 if (current->Vx()>.005 && current->Vy()>.005 && current->Vz()>.005)
284 muonspectra2->Fill(TMath::Log10(current->Energy() - current->GetCalcMass()),(float) 1);
286 muonspectra3->Fill(TMath::Log10(current->Energy() - current->GetCalcMass()),(float) 1);
287 printf("Muon mass: %e\n",current->GetCalcMass());
290 if (TMath::Abs(particle)==2112)
292 neutronspectra1->Fill(TMath::Log10(current->Energy() - current->GetCalcMass()),(float) 1);
293 if (current->Vx()>.005 && current->Vy()>.005 && current->Vz()>.005)
294 neutronspectra2->Fill(TMath::Log10(current->Energy() - current->GetCalcMass()),(float) 1);
297 neutronspectra3->Fill(TMath::Log10(current->Energy() - current->GetCalcMass()),(float) 1);
298 printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\R:%f\n\n\n\n\n\n\n\n\n",R);
300 printf("Neutron mass: %e\n",current->GetCalcMass());
303 if(TMath::Abs(particle)==211 || TMath::Abs(particle)==2212 || TMath::Abs(particle)==321)
305 if (current->Energy()-current->GetCalcMass()>1)
307 chargedspectra1->Fill(TMath::Log10(current->Energy() - current->GetCalcMass()),(float) 1);
308 if (current->Vx()>.005 && current->Vy()>.005 && current->Vz()>.005)
309 chargedspectra2->Fill(TMath::Log10(current->Energy() - current->GetCalcMass()),(float) 1);
311 chargedspectra3->Fill(TMath::Log10(current->Energy() - current->GetCalcMass()),(float) 1);
314 //printf("Hits:%d\n",hit);
315 //printf ("Chamber number:%d x:%f y:%f\n",nch,x,y);
316 // Fill the histograms
318 //h->Fill(x,y,(float) 1);
323 /* Int_t ncerenkovs = Cerenkovs->GetEntriesFast();
326 for (Int_t hit=0;hit<ncerenkovs;hit++) {
327 cHit = (AliRICHCerenkov*) Cerenkovs->UncheckedAt(hit);
328 Int_t nchamber = cHit->fChamber; // chamber number
329 Int_t index = cHit->fTrack;
330 Int_t pindex = cHit->fIndex;
331 Int_t cx = cHit->fX; // x-position
332 Int_t cy = cHit->fZ; // y-position
333 Int_t cmother = cHit->fCMother; // Index of mother particle
334 Int_t closs = cHit->fLoss; // How did the paryicle get lost?
335 //printf ("Cerenkov hit, X:%d, Y:%d\n",cx,cy);
337 TParticle *current = (TParticle*)(*gAlice->Particles())[index];
339 if (current->GetPdgCode() == 50000051)
343 feedback->Fill(cx,cy,(float) 1);
347 if (current->GetPdgCode() == 50000050)
350 cerenkov->Fill(cx,cy,(float) 1);
352 TParticle *MIP = (TParticle*)(*gAlice->Particles())[current->GetFirstMother()];
353 //TParticle *MIP = (TParticle*)(*gAlice->Particles())[MIP1->GetFirstDaughter()];
354 //printf("Second Mother:%d",MIP1->GetFirstDaughter());
355 mom[0] = current->Px();
356 mom[1] = current->Py();
357 mom[2] = current->Pz();
358 Float_t energy = current->Energy();
359 Float_t Mip_px = MIP->Px();
360 Float_t Mip_py = MIP->Py();
361 Float_t Mip_pz = MIP->Pz();
363 Float_t r = mom[0]*mom[0] + mom[1]*mom[1] + mom[2]*mom[2];
364 Float_t rt = TMath::Sqrt(r);
365 Float_t Mip_r = Mip_px*Mip_px + Mip_py*Mip_py + Mip_pz*Mip_pz;
366 Float_t Mip_rt = TMath::Sqrt(Mip_r);
367 Float_t coscerenkov = (mom[0]*Mip_px + mom[1]*Mip_py + mom[2]*Mip_pz)/(rt*Mip_rt);
368 Float_t cherenkov = TMath::ACos(coscerenkov);
369 ckovangle->Fill(cherenkov,(float) 1); //Cerenkov angle calculus
370 Float_t ckphi=TMath::ATan2(mom[0], mom[2]);
371 hckphi->Fill(ckphi,(float) 1);
373 //mipHit = (AliRICHHit*) Hits->UncheckedAt(0);
375 Float_t mx = MIP->Vx();
376 Float_t my = MIP->Vz();
377 Float_t mz = MIP->Vy();
379 //Float_t mx = mipHit->fX;
380 //Float_t my = mipHit->fZ;
381 Float_t dx = cx - mx;
382 Float_t dy = cy - my;
383 Float_t final_radius = TMath::Sqrt(dx*dx+dy*dy);
384 radius->Fill(final_radius,(float) 1);
388 phspectra1->Fill(energy*1e9,(float) 1);
392 phspectra2->Fill(energy*1e9,(float) 1);
393 for (Int_t nmothers=0;nmothers<=ntracks;nmothers++){
394 if (cmother == nmothers){
405 for (Int_t hit=0;hit<nrawclusters;hit++) {
406 rcHit = (AliRICHRawCluster*) Rawclusters->UncheckedAt(hit);
407 //Int_t nchamber = rcHit->fChamber; // chamber number
408 //Int_t nhit = cHit->fHitNumber; // hit number
409 Int_t qtot = rcHit->fQ; // charge
410 Int_t fx = rcHit->fX; // x-position
411 Int_t fy = rcHit->fY; // y-position
412 Int_t type = rcHit->fCtype; // cluster type ?
413 Int_t mult = rcHit->fMultiplicity; // How many pads form the cluster
416 if (fx>-4 && fx<4 && fy>-4 && fy<4) {
419 padnumber->Fill(mult,(float) 1);
421 if (mult<4) Clcharge->Fill(qtot,(float) 1);
428 /* for (Int_t nmothers=0;nmothers<ntracks;nmothers++){
429 totalphotons->Fill(mothers[nmothers],(float) 1);
430 mother->Fill(mothers2[nmothers],(float) 1);
431 //printf ("Entries in %d : %d\n",nmothers, mothers[nmothers]);
434 /* clusev->Fill(nraw,(float) 1);
435 photev->Fill(phot,(float) 1);
436 feedev->Fill(feed,(float) 1);
437 padsmip->Fill(padmip,(float) 1);
438 padscl->Fill(pads,(float) 1);
439 printf("Photons:%d\n",phot);
448 //Create canvases, set the view range, show histograms
454 TCanvas *c1 = new TCanvas("c1","Alice RICH pad hits",50,10,1200,700);
457 hc1->SetXTitle("ix (npads)");
460 hc2->SetXTitle("ix (npads)");
463 hc3->SetXTitle("ix (npads)");
466 hc4->SetXTitle("ix (npads)");
469 hc5->SetXTitle("ix (npads)");
472 hc6->SetXTitle("ix (npads)");
475 hc7->SetXTitle("ix (npads)");
478 TCanvas *c4 = new TCanvas("c4","Hits per type",400,10,600,700);
482 feedback->SetFillColor(42);
483 feedback->SetXTitle("x (pads)");
484 feedback->SetYTitle("y (pads)");
488 mip->SetFillColor(42);
489 mip->SetXTitle("x (pads)");
490 mip->SetYTitle("y (pads)");
494 cerenkov->SetFillColor(42);
495 cerenkov->SetXTitle("x (pads)");
496 cerenkov->SetYTitle("y (pads)");
501 h->SetXTitle("x (cm)");
502 h->SetYTitle("y (cm)");
505 TCanvas *c10 = new TCanvas("c10","Hits distribution",400,10,600,350);
509 hitsX->SetFillColor(42);
510 hitsX->SetXTitle("(GeV)");
514 hitsY->SetFillColor(42);
515 hitsY->SetXTitle("(GeV)");
523 /*TCanvas *c6 = new TCanvas("c6","Photon Spectra",50,10,600,350);
527 phspectra2->SetFillColor(42);
528 phspectra2->SetXTitle("energy (eV)");
531 phspectra1->SetFillColor(42);
532 phspectra1->SetXTitle("energy (eV)");
533 phspectra1->Draw();*/
535 //TCanvas *c9 = new TCanvas("c9","Particles Spectra",400,10,600,700);
536 TCanvas *c9 = new TCanvas("c9","Pion Spectra",400,10,600,700);
540 pionspectra1->SetFillColor(42);
541 pionspectra1->SetXTitle("log(GeV)");
542 pionspectra2->SetFillColor(46);
543 pionspectra2->SetXTitle("log(GeV)");
544 pionspectra3->SetFillColor(10);
545 pionspectra3->SetXTitle("log(GeV)");
547 pionspectra1->Draw();
548 pionspectra2->Draw("same");
549 pionspectra3->Draw("same");
553 TCanvas *c10 = new TCanvas("c10","Proton Spectra",400,10,600,700);
554 protonspectra1->SetFillColor(42);
555 protonspectra1->SetXTitle("log(GeV)");
556 protonspectra2->SetFillColor(46);
557 protonspectra2->SetXTitle("log(GeV)");
558 protonspectra3->SetFillColor(10);
559 protonspectra3->SetXTitle("log(GeV)");
561 protonspectra1->Draw();
562 protonspectra2->Draw("same");
563 protonspectra3->Draw("same");
566 TCanvas *c11 = new TCanvas("c11","Kaon Spectra",400,10,600,700);
567 kaonspectra1->SetFillColor(42);
568 kaonspectra1->SetXTitle("log(GeV)");
569 kaonspectra2->SetFillColor(46);
570 kaonspectra2->SetXTitle("log(GeV)");
571 kaonspectra3->SetFillColor(10);
572 kaonspectra3->SetXTitle("log(GeV)");
574 kaonspectra1->Draw();
575 kaonspectra2->Draw("same");
576 kaonspectra3->Draw("same");
579 TCanvas *c12 = new TCanvas("c12","Charged Particles Spectra",400,10,600,700);
580 chargedspectra1->SetFillColor(42);
581 chargedspectra1->SetXTitle("log(GeV)");
582 chargedspectra2->SetFillColor(46);
583 chargedspectra2->SetXTitle("log(GeV)");
584 chargedspectra3->SetFillColor(10);
585 chargedspectra3->SetXTitle("log(GeV)");
587 chargedspectra1->Draw();
588 chargedspectra2->Draw("same");
589 chargedspectra3->Draw("same");
591 //TCanvas *c16 = new TCanvas("c16","Particles Spectra II",400,10,600,700);
595 TCanvas *c13 = new TCanvas("c13","Electron Spectra",400,10,600,700);
596 electronspectra1->SetFillColor(42);
597 electronspectra1->SetXTitle("log(GeV)");
598 electronspectra2->SetFillColor(46);
599 electronspectra2->SetXTitle("log(GeV)");
600 electronspectra3->SetFillColor(10);
601 electronspectra3->SetXTitle("log(GeV)");
603 electronspectra1->Draw();
604 electronspectra2->Draw("same");
605 electronspectra3->Draw("same");
608 TCanvas *c14 = new TCanvas("c14","Muon Spectra",400,10,600,700);
609 muonspectra1->SetFillColor(42);
610 muonspectra1->SetXTitle("log(GeV)");
611 muonspectra2->SetFillColor(46);
612 muonspectra2->SetXTitle("log(GeV)");
613 muonspectra3->SetFillColor(10);
614 muonspectra3->SetXTitle("log(GeV)");
616 muonspectra1->Draw();
617 muonspectra2->Draw("same");
618 muonspectra3->Draw("same");
621 TCanvas *c16 = new TCanvas("c16","Neutron Spectra",400,10,600,700);
622 neutronspectra1->SetFillColor(42);
623 neutronspectra1->SetXTitle("log(GeV)");
624 neutronspectra2->SetFillColor(46);
625 neutronspectra2->SetXTitle("log(GeV)");
626 neutronspectra3->SetFillColor(10);
627 neutronspectra3->SetXTitle("log(GeV)");
629 neutronspectra1->Draw();
630 neutronspectra2->Draw("same");
631 neutronspectra3->Draw("same");
633 TCanvas *c15 = new TCanvas("c15","Mothers Production Vertices",500,100,800,800);
634 production->SetFillColor(42);
635 production->SetXTitle("z (m)");
636 production->SetYTitle("R (m)");
644 TCanvas *c3=new TCanvas("c3","Clusters Statistics",400,10,600,700);
648 Clcharge->SetFillColor(42);
649 Clcharge->SetXTitle("ADC units");
653 padnumber->SetFillColor(42);
654 padnumber->SetXTitle("(counts)");
658 clusev->SetFillColor(42);
659 clusev->SetXTitle("(counts)");
665 TCanvas *c11 = new TCanvas("c11","Cherenkov per Mip",400,10,600,700);
666 mother->SetFillColor(42);
667 mother->SetXTitle("counts");
672 TCanvas *c5 = new TCanvas("c5","Ring Statistics",50,10,600,350);
676 ckovangle->SetFillColor(42);
677 ckovangle->SetXTitle("angle (radians)");
681 radius->SetFillColor(42);
682 radius->SetXTitle("radius (cm)");
685 TCanvas *c7 = new TCanvas("c7","Production Statistics",400,10,600,700);
689 totalphotons->SetFillColor(42);
690 totalphotons->SetXTitle("Photons (counts)");
691 totalphotons->Draw();
694 photev->SetFillColor(42);
695 photev->SetXTitle("(counts)");
699 feedev->SetFillColor(42);
700 feedev->SetXTitle("(counts)");
704 padsev->SetFillColor(42);
705 padsev->SetXTitle("(counts)");
713 TCanvas *c8 = new TCanvas("c25","Number of pads per event inside MIP region",400,10,600,700);
714 padsmip->SetFillColor(42);
715 padsmip->SetXTitle("(counts)");
720 /*TCanvas *c8 = new TCanvas("c8","Number of pads per event inside MIP region",400,10,600,700);
721 hckphi->SetFillColor(42);
722 hckphi->SetXTitle("phi");
726 // calculate the number of pads which give a signal
730 for (Int_t i=0; i< NpadX;i++) {
731 for (Int_t j=0;j< NpadY;j++) {
737 //printf("The total number of pads which give a signal: %d %d\n",Nh,Nh1);
739 printf("Total number of electrons:%d\n",electron);
740 printf("Total number of muons:%d\n",muon);
741 printf("Total number of pions:%d\n",pion);
742 printf("Total number of kaons:%d\n",kaon);
743 printf("Total number of protons:%d\n",proton);
744 printf("Total number of neutrons:%d\n",neutron);
746 printf("End of macro\n");