1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
16 //_________________________________________________________________________
17 // TTask class for TOF PID.
18 // Use case: start root and execute the following macro
21 // Dynamically link some shared libs
22 if (gClassTable->GetID("AliRun") < 0) {
23 gROOT->LoadMacro("loadlibs.C");
26 // create an instance of the AliTOFPID class
27 // You have to pass the ntuple and cuts filenames
28 AliTOFPID* tofpid=new AliTOFPID("ntuple.root","cuts.root");
30 // option "pp" for pp events (it includes also electron in the analysis)
31 // option "visual" to shows interactively histos
32 // option "asC" or "asEPS" to save canvas in the current dir in .C or .eps format
34 // make a choice: uncomment one of these lines
35 // tofpid->Exec("pp","visual","asC");
36 // tofpid->Exec("pp","novisual","asC");
37 // tofpid->Exec("Pb-Pb","visual","asC");
38 // tofpid->Exec("pp","visual","asC");
39 // tofpid->Exec("pp","novisual","asEPS");
50 //-- Authors: B. Zagreev , F. Pierella
51 //////////////////////////////////////////////////////////////////////////////
62 #include "TPaveLabel.h"
63 #include "TPaveText.h"
76 #include "AliTOFGeometry.h"
77 #include "AliTOFPID.h"
80 #include <Riostream.h>
81 #include <Riostream.h>
85 //____________________________________________________________________________
86 AliTOFPID::AliTOFPID():TTask("AliTOFPID","")
88 // default ctor - set the pointer member vars to zero
101 //____________________________________________________________________________
102 AliTOFPID::AliTOFPID(char* headerFile, char *cutsFile, const Option_t* opt):TTask("AliTOFPID","")
108 fhfile = TFile::Open(headerFile); // connect file with ntuple
109 fcut = TFile::Open(cutsFile); // connect file for cuts
110 foutfileName=headerFile;
115 // add Task to //root/Tasks folder
116 TTask * roottasks = (TTask*)gROOT->GetRootFolder()->FindObject("Tasks") ;
117 roottasks->Add(this) ;
120 //____________________________________________________________________________
121 void AliTOFPID::Init(const Option_t* opt)
123 if(strstr(opt,"pp")){
124 if(fcut->GetKey("electron")) felectron = (TCutG*)fcut->Get("electron");
126 if(fcut->GetKey("pion")) fpion = (TCutG*)fcut->Get("pion");
129 if(fcut->GetKey("kaon")) fkaon = (TCutG*)fcut->Get("kaon");
131 if(fcut->GetKey("proton")) fproton = (TCutG*)fcut->Get("proton");
134 fNtuple= (TNtuple*)fhfile->Get("Ntuple"); // get ntuple from file
135 Int_t nvar = fNtuple->GetNvar(); cout <<"N of var.="<< nvar << endl;
136 fNtuple->GetEvent(0);
140 //____________________________________________________________________________
141 AliTOFPID::~AliTOFPID()
144 // dtor (free used memory)
205 //____________________________________________________________________________
206 void AliTOFPID::Exec(const Option_t *eventType, const Option_t *outputmode, const Option_t *outputsavemode)
209 // Performs PID for TOF detector
214 ////////// Create histograms /////////////////
215 // for electron only in pp case
223 if(strstr(eventType,"pp")){
224 eleff = new TH1F("eleff","",10,0,0.6);
225 xaxis=eleff->GetYaxis();
226 xaxis->SetLabelSize(.08);
227 eleffls = new TH1F("eleffls","",10,0,0.6);
228 xaxis=eleffls->GetYaxis();
229 xaxis->SetLabelSize(.08);
230 elcon = new TH1F("elcon","",10,0,0.6);
231 xaxis=elcon->GetXaxis();
232 xaxis->SetLabelSize(.09);
233 xaxis=elcon->GetYaxis();
234 xaxis->SetLabelSize(.08);
235 elid = new TH1F("elid","Identified electrons",10,0,0.6);
236 elmatch = new TH1F("elmatch","N(e)",10,0,0.6);
237 elall = new TH1F("elall","Electrons",10,0,0.6);
241 TH1F *pit = new TH1F("pit","",15,0,2.5); //part. with tracks
242 TH1F *pig = new TH1F("pig","",15,0,2.5); //part. in geometry acceptance
243 TH1F *pieff = new TH1F("pieff","",15,0,2.5); //efficiency
244 TH1F *pieffls = new TH1F("pieffls","",15,0,2.5); //efficiency (last step)
245 xaxis=pieff->GetYaxis();
246 xaxis->SetLabelSize(.08);
247 xaxis=pieffls->GetYaxis();
248 xaxis->SetLabelSize(.08);
249 TH1F *picon = new TH1F("picon","",15,0,2.5); //contamination
250 xaxis=picon->GetXaxis();
251 xaxis->SetLabelSize(.09);
252 xaxis=picon->GetYaxis();
253 xaxis->SetLabelSize(.08);
254 TH1F *piid = new TH1F("piid","Identified pions",15,0,2.5);
255 TH1F *piall = new TH1F("piall","Pions",15,0,2.5);
256 TH1F *pimatch = new TH1F("pimatch","N(Pions)",15,0,2.5);
257 TH1F *pigen = new TH1F("pigen","Pions",15,0,2.5);
258 xaxis=pigen->GetXaxis();
259 xaxis->SetLabelSize(.09);
260 pigen->SetXTitle("P?t! (GeV/c)");
261 xaxis->SetTitleSize(.09);
262 xaxis=pigen->GetYaxis();
263 xaxis->SetLabelSize(.08);
264 //pigen->SetYTitle("1/P?t!dN/dP?t! (GeV/c)^-2!");
265 xaxis->SetTitleSize(.09);
268 TH1F *kat = new TH1F("kat","",15,0,2.5);
269 TH1F *kag = new TH1F("kag","",15,0,2.5);
270 TH1F *kaeff = new TH1F("kaeff","",15,0,2.5);
271 xaxis=kaeff->GetYaxis();
272 xaxis->SetLabelSize(.08);
273 TH1F *kaeffls = new TH1F("kaeffls","",15,0,2.5);
274 xaxis=kaeffls->GetYaxis();
275 xaxis->SetLabelSize(.08);
276 TH1F *kacon = new TH1F("kacon","",15,0,2.5);
277 xaxis=kacon->GetXaxis();
278 xaxis->SetLabelSize(.09);
279 xaxis=kacon->GetYaxis();
280 xaxis->SetLabelSize(.08);
281 TH1F *kaid = new TH1F("kaid","Identified kaons",15,0,2.5);
282 TH1F *kamatch = new TH1F("kamatch","N(K)",15,0,2.5);
283 TH1F *kaall = new TH1F("kaall","Kaons",15,0,2.5);
284 TH1F *kagen = new TH1F("kagen","Kaons",15,0,2.5);
285 xaxis=kagen->GetXaxis();
286 xaxis->SetLabelSize(.09);
287 kagen->SetXTitle("P?t! (GeV/c)");
288 xaxis->SetTitleSize(.09);
289 xaxis=kagen->GetYaxis();
290 xaxis->SetLabelSize(.08);
291 //kagen->SetYTitle("1/P?t!dN/dP?t! (GeV/c)^-2!");
292 xaxis->SetTitleSize(.09);
295 TH1F *prt = new TH1F("prt","",15,0,4.4);
296 TH1F *prg = new TH1F("prg","",15,0,4.4);
297 TH1F *preff = new TH1F("preff","",15,0,4.4);
298 xaxis=preff->GetYaxis();
299 xaxis->SetLabelSize(.08);
300 TH1F *preffls = new TH1F("preffls","",15,0,4.4);
301 xaxis=preffls->GetYaxis();
302 xaxis->SetLabelSize(.08);
303 TH1F *prcon = new TH1F("prcon","",15,0,4.4);
304 xaxis=prcon->GetXaxis();
305 xaxis->SetLabelSize(.09);
306 xaxis=prcon->GetYaxis();
307 xaxis->SetLabelSize(.08);
308 TH1F *prid = new TH1F("prid","Identified protons",15,0,4.4);
309 TH1F *prmatch = new TH1F("prmatch","N(p)",15,0,4.4);
310 TH1F *prall = new TH1F("prall","Protons",15,0,4.4);
311 TH1F *prgen = new TH1F("prgen","Protons",15,0,4.4);
312 xaxis=prgen->GetXaxis();
313 xaxis->SetLabelSize(.09);
314 prgen->SetXTitle("P?t! (GeV/c)");
315 xaxis->SetTitleSize(.09);
316 xaxis=prgen->GetYaxis();
317 xaxis->SetLabelSize(.08);
318 //prgen->SetYTitle("1/P?t!dN/dP?t! (GeV/c)^-2!");
319 xaxis->SetTitleSize(.09);
321 // 2-D histos (extrapolated mass vs momentum)
323 if(strstr(eventType,"pp")){
324 hel = new TH2F("hel","",1000,-.2,1.2,1000,-4.2,0.);
325 hel->SetXTitle("Mass (GeV/c^{2})");
326 hel->SetYTitle("Momentum (GeV/c)");
328 TH2F *hpi = new TH2F("hpi","",1000,-.2,1.2,1000,-4.2,0.);
329 hpi->SetXTitle("Mass (GeV/c^{2})");
330 hpi->SetYTitle("Momentum (GeV/c)");
331 TH2F *hka = new TH2F("hka","",1000,-.2,1.2,1000,-4.2,0.);
332 hka->SetXTitle("Mass (GeV/c^{2})");
333 hka->SetYTitle("Momentum (GeV/c)");
334 TH2F *hpr = new TH2F("hpr","",1000,-.2,1.2,1000,-4.2,0.);
335 hpr->SetXTitle("Mass (GeV/c^{2})");
336 hpr->SetYTitle("Momentum (GeV/c)");
340 Int_t nparticles = (Int_t)fNtuple->GetEntries();
341 cout << " Number of nparticles =" << nparticles << endl;
342 if (nparticles <= 0) return;
344 Float_t ka=0, pi=0, pr=0, kaal=0, pial=0, pral=0;
345 Float_t pitrack=0, pimag=0, pigeom=0;
346 Float_t katrack=0, kamag=0, kageom=0;
347 Float_t prtrack=0, prmag=0, prgeom=0;
348 Float_t pif=0, kaf=0, prf=0, pin=0, kan=0, prn=0;
349 Float_t px, py, pz, x, y, z, mass;
350 Int_t event, matc, imam, pdgcode;
351 Int_t indexOfFile=0, numfile=0;
352 //////// Loop over tracks (particles)///////////////////////
354 for (Int_t i=0; i < nparticles; i++) {
355 fNtuple->GetEvent(i);
356 event=(Int_t)(fNtuple->GetLeaf("event")->GetValue());
357 pdgcode=(Int_t)(fNtuple->GetLeaf("ipart")->GetValue());
358 mass=fNtuple->GetLeaf("mext")->GetValue(0);
359 matc=(Int_t)(fNtuple->GetLeaf("matc")->GetValue(0));
360 imam=(Int_t)(fNtuple->GetLeaf("imam")->GetValue(0));
361 px=fNtuple->GetLeaf("pxvtx")->GetValue(0);
362 py=fNtuple->GetLeaf("pyvtx")->GetValue(0);
363 pz=fNtuple->GetLeaf("pzvtx")->GetValue(0);
364 x=fNtuple->GetLeaf("xvtx")->GetValue(0);
365 y=fNtuple->GetLeaf("yvtx")->GetValue(0);
366 z=fNtuple->GetLeaf("zvtx")->GetValue(0);
367 Float_t pvtx=TMath::Sqrt(px*px+py*py+pz*pz);
368 Float_t ptvtx=TMath::Sqrt(px*px+py*py);
370 Bool_t isSelected=(imam == 0 && pz !=0 && TMath::ATan(TMath::Abs(ptvtx/pz))>TMath::Pi()*45./180.);
371 Int_t abspdgcode=TMath::Abs(pdgcode);
374 if(isSelected && (matc==3 || matc==4)) kamatch->Fill(pvtx);
375 mt=TMath::Sqrt(AliTOFGeometry::KaonMass()*AliTOFGeometry::KaonMass()+px*px+py*py);
378 if(isSelected && (matc==2 || matc==3 || matc==4)) prmatch->Fill(pvtx);
379 mt=TMath::Sqrt(AliTOFGeometry::ProtonMass()*AliTOFGeometry::ProtonMass()+px*px+py*py);
382 if(strstr(eventType,"pp") && (matc==3 || matc==4)) elmatch->Fill(pvtx); // as in kaon case
383 mt=TMath::Sqrt(AliTOFGeometry::ElectronMass()*AliTOFGeometry::ElectronMass()+px*px+py*py);
386 if(isSelected && matc>0) pimatch->Fill(pvtx);
387 mt=TMath::Sqrt(AliTOFGeometry::PionMass()*AliTOFGeometry::PionMass()+px*px+py*py);
392 {//only primary +/-45
393 if (fkaon->IsInside(mass,-pvtx) && matc>2) {
395 if (fTask!=2) kaid->Fill(pvtx); else {kaid->Fill(ptvtx);}
396 if (TMath::Abs(pdgcode)==321) {kaf++; kaeff->Fill(pvtx); kaeffls->Fill(pvtx);} else {kan++; kacon->Fill(pvtx);}
397 } else if (fproton->IsInside(mass,-pvtx) && matc>1) {
399 if (fTask!=2) prid->Fill(pvtx); else
401 if (TMath::Abs(pdgcode)==2212) {prf++; preff->Fill(pvtx); preffls->Fill(pvtx);} else {prn++; prcon->Fill(pvtx);}
402 } else if (strstr(eventType,"pp") && felectron->IsInside(mass,-pvtx) && matc>2) {elid->Fill(pvtx);
403 if (strstr(eventType,"pp") && TMath::Abs(pdgcode)==11) {eleff->Fill(pvtx); eleffls->Fill(pvtx);} else {elcon->Fill(pvtx);}
405 //||matc==-4&&fpion->IsInside(mass,-pvtx)
407 if (fTask!=2) piid->Fill(pvtx); else {piid->Fill(ptvtx);}
408 if (TMath::Abs(pdgcode)==211) {pif++; pieff->Fill(pvtx); pieffls->Fill(pvtx);} else {pin++; picon->Fill(pvtx);}
411 //////////////// Normalization histograms ////////////////////
412 if (strstr(eventType,"pp") && TMath::Abs(pdgcode)==11) {
413 if (fTask!=2) elall->Fill(pvtx); else elall->Fill(ptvtx);
414 if (fTask==1) hel->Fill(mass,-pvtx);
416 } else if (TMath::Abs(pdgcode)==211) {
423 if (matc>-2 || matc==-4) {
429 if (fTask!=2) piall->Fill(pvtx);
431 piall->Fill(ptvtx,1/ptvtx);
433 if (fTask==1) hpi->Fill(mass,-pvtx);
435 } else if (TMath::Abs(pdgcode)==321) {
442 if (matc>-2 || matc==-4) {
448 if (fTask!=2) kaall->Fill(pvtx);
450 kaall->Fill(ptvtx,1/ptvtx);
452 if (fTask==1) hka->Fill(mass,-pvtx);
454 } else if (TMath::Abs(pdgcode)==2212) {
461 if (matc>-2 || matc==-4) {
467 if (fTask!=2) prall->Fill(pvtx);
469 prall->Fill(ptvtx,1/ptvtx);
471 if (fTask==1) hpr->Fill(mass,-pvtx);}
473 }// End of cuts appling
474 }// End of loop over particles
477 cout<< "Pions in 45-135 deg. "<< pial <<" (100%)"<< endl;
478 cout<< "Pions that have track "<< pitrack/pial*100 <<" %"<<endl;
479 cout<< "Magnetic field "<< pimag/pial*100 <<" %"<<endl;
480 cout<< "Geometry efficiency "<< pigeom/pial*100 <<" %"<<endl;
481 cout<< "PID procedure "<< pif/pial*100 <<" %"<<endl;
482 cout<< "Contamination "<< pin/pi*100 <<" %"<<endl;
484 cout<< "Kaons in 45-135 deg. "<< kaal <<" (100%)"<< endl;
485 cout<< "Kaons that have track "<< katrack/kaal*100 <<" %"<<endl;
486 cout<< "Magnetic field "<< kamag/kaal*100 <<" %"<<endl;
487 cout<< "Geometry efficiency "<< kageom/kaal*100 <<" %"<<endl;
488 cout<< "PID procedure(+decays) "<< kaf/kaal*100 <<" %"<<endl;
489 cout<< "Contamination "<< kan/ka*100 <<" %"<<endl;
491 cout<< "Protons in 45-135 deg. "<< pral <<" (100%)"<< endl;
492 cout<< "Protons that have track "<< prtrack/pral*100 <<" %"<<endl;
493 cout<< "Magnetic field "<< prmag/pral*100 <<" %"<<endl;
494 cout<< "Geometry efficiency "<< prgeom/pral*100 <<" %"<<endl;
495 cout<< "PID procedure "<< prf/pral*100 <<" %"<<endl;
496 cout<< "Contamination "<< prn/pr*100 <<" %"<<endl;
498 cout<< "All part. in 45-135 deg. "<< pial+kaal+pral <<" (100%)"<< endl;
499 cout<< "All part. that have track "<< (pitrack+katrack+prtrack)/(pial+kaal+pral)*100 <<" %"<<endl;
500 cout<< "Magnetic field "<< (pimag+kamag+prmag)/(pial+kaal+pral)*100 <<" %"<<endl;
501 cout<< "Geometry efficiency "<< (pigeom+kageom+prgeom)/(pial+kaal+pral)*100 <<" %"<<endl;
502 cout<< "PID procedure "<< (pif+kaf+prf)/(pial+kaal+pral)*100 <<" %"<<endl;
503 cout<< "Contamination "<< (pin+kan+prn)/(pi+ka+pr)*100 <<" %"<<endl;
506 TCanvas *pidCanvas=0; // overall
507 TCanvas *pidCanvasls=0; // last step of PID
508 TCanvas *momvsmassCanvas=0;
509 // overall Efficiency
520 // last step Efficiency
531 //////////////////////// For fTask 1 ///////////////////////////
533 if (strstr(eventType,"pp")){
534 eleff->Divide(elall);
535 eleffls->Divide(elmatch);
537 // overall efficiency
538 pieff->Divide(piall);
539 kaeff->Divide(kaall);
540 preff->Divide(prall);
542 // last step efficiency
543 pieffls->Divide(pimatch);
544 kaeffls->Divide(kamatch);
545 preffls->Divide(prmatch);
553 if (strstr(eventType,"pp")){
561 //Create a canvas, set the view range, show histograms
563 if (indexOfFile==0) {
564 // overall Efficiency canvas
565 pidCanvas = new TCanvas("pidCanvas","PID (Overall)",10,100,800,500);
566 pidCanvas->SetBorderMode(0);
567 pidCanvas->SetBorderSize(0);
568 pidCanvas->SetFillColor(0);
569 pidCanvas->SetFillStyle(0);
571 // last step Efficiency canvas
572 pidCanvasls = new TCanvas("pidCanvasls","PID (Last Step)",10,100,800,500);
573 pidCanvasls->SetBorderMode(0);
574 pidCanvasls->SetBorderSize(0);
575 pidCanvasls->SetFillColor(0);
576 pidCanvasls->SetFillStyle(0);
578 if (strstr(outputmode,"visual")) {
583 Float_t pxs=0.25+0.125; //X size of pad
584 Float_t pys=0.5+0.055; //y size of pad
586 tp = new TPad("histo","Histograms",.1,.1,.9,.9);
588 tpls = new TPad("histo","Histograms",.1,.1,.9,.9);
590 if (strstr(eventType,"Pb-Pb")){
591 // overall efficiency
592 //pad1 = new TPad("pad1","electron efficiency",0.,.5-.055,0.+pxs,.5-.055+pys-.00001,0,0,0);
593 pad2 = new TPad("pad2","pion efficiency",0.,0.5-.055,0.+pxs,0.5-.055+pys-.00001,0,0,0);
594 pad3 = new TPad("pad3","kaon efficiency",0.3,0.5-.055,0.3+pxs,0.5-.055+pys-.00001,0,0,0);
595 pad4 = new TPad("pad4","proton efficiency",0.6,0.5-.055,0.6+pxs,0.5-.055+pys-.00001,0,0,0);
598 //pad5 = new TPad("pad5","electron contamination",0.,0.,0.+pxs,0.+pys,0,0,0);
599 pad6 = new TPad("pad6","pion contamination",0.,0.,0.+pxs,0.+pys,0,0,0);
600 pad7 = new TPad("pad7","kaon contamination",.3,0.,0.3+pxs,0.+pys,0,0,0);
601 pad8 = new TPad("pad8","proton contamination",.6,0.,0.6+pxs,0.+pys,0,0,0);
603 // we repeat the same for the last step of PID
604 //pad1ls = new TPad("pad1ls","electron efficiency",0.,.5-.055,0.+pxs,.5-.055+pys-.00001,0,0,0);
605 pad2ls = new TPad("pad2ls","pion efficiency",0.,0.5-.055,0.+pxs,0.5-.055+pys-.00001,0,0,0);
606 pad3ls = new TPad("pad3ls","kaon efficiency",0.3,0.5-.055,0.3+pxs,0.5-.055+pys-.00001,0,0,0);
607 pad4ls = new TPad("pad4ls","proton efficiency",0.6,0.5-.055,0.6+pxs,0.5-.055+pys-.00001,0,0,0);
610 //pad5 = new TPad("pad5","electron contamination",0.,0.,0.+pxs,0.+pys,0,0,0);
611 pad6ls = new TPad("pad6ls","pion contamination",0.,0.,0.+pxs,0.+pys,0,0,0);
612 pad7ls = new TPad("pad7ls","kaon contamination",.3,0.,0.3+pxs,0.+pys,0,0,0);
613 pad8ls = new TPad("pad8ls","proton contamination",.6,0.,0.6+pxs,0.+pys,0,0,0);
617 if (strstr(eventType,"pp")){
618 // overall Efficiency
619 pad1 = new TPad("pad1","electron efficiency",0.,.5-.055,0.25+0.045,1.,0,0,0);
620 pad2 = new TPad("pad2","pion efficiency",0.25-0.015,0.5-.055,0.5+0.03,1.,0,0,0);
621 pad3 = new TPad("pad3","kaon efficiency",0.5-0.03,0.5-.055,0.75+0.015,1.,0,0,0);
622 pad4 = new TPad("pad4","proton efficiency",0.75-0.045,0.5-.055,1.,1.,0,0,0);
625 pad5 = new TPad("pad5","electron contamination",0.,0.,.25+.045,.5+.055,0,0,0);
626 pad6 = new TPad("pad6","pion contamination",.25-.015,0.,.5+.03,.5+.055,0,0,0);
627 pad7 = new TPad("pad7","kaon contamination",.5-.03,0.,.75+.015,.5+.055,0,0,0);
628 pad8 = new TPad("pad8","proton contamination",.75-.045,0.,1.,.5+.055,0,0,0);
631 // we repeat the same for the last step of PID
632 pad1ls = new TPad("pad1ls","electron efficiency",0.,.5-.055,0.25+0.045,1.,0,0,0);
633 pad2ls = new TPad("pad2ls","pion efficiency",0.25-0.015,0.5-.055,0.5+0.03,1.,0,0,0);
634 pad3ls = new TPad("pad3ls","kaon efficiency",0.5-0.03,0.5-.055,0.75+0.015,1.,0,0,0);
635 pad4ls = new TPad("pad4ls","proton efficiency",0.75-0.045,0.5-.055,1.,1.,0,0,0);
638 pad5ls = new TPad("pad5ls","electron contamination",0.,0.,.25+.045,.5+.055,0,0,0);
639 pad6ls = new TPad("pad6ls","pion contamination",.25-.015,0.,.5+.03,.5+.055,0,0,0);
640 pad7ls = new TPad("pad7ls","kaon contamination",.5-.03,0.,.75+.015,.5+.055,0,0,0);
641 pad8ls = new TPad("pad8ls","proton contamination",.75-.045,0.,1.,.5+.055,0,0,0);
647 gStyle->SetOptStat(0);
648 tpls->SetFillStyle(0);
649 tpls->SetFillColor(0);
650 tpls->SetBorderSize(0);
652 TText *text1ls= new TText(.1,.2,"Contamination Efficiency");
653 text1ls->SetTextAngle(90);
654 if (strstr(outputmode,"visual")) text1ls->Draw();
655 //tp->DrawText(.3,.0,"p (GeV/c");
657 TText *text2ls= new TText(.8,.0,"p (GeV/c)");
658 if (strstr(outputmode,"visual")) {
664 gStyle->SetOptStat(0);
667 tp->SetBorderSize(0);
669 TText *text1= new TText(.1,.2,"Contamination Efficiency");
670 text1->SetTextAngle(90);
671 if (strstr(outputmode,"visual")) text1->Draw();
672 //tp->DrawText(.3,.0,"p (GeV/c");
674 TText *text2= new TText(.8,.0,"p (GeV/c)");
675 if (strstr(outputmode,"visual")) {
683 // drawing histos for overall case
684 if (strstr(eventType,"pp")){
685 pad1->SetFillStyle(0);
686 pad1->SetFillColor(10);
688 if (strstr(outputmode,"visual")) pad1->Draw();
690 //eleff->SetLineWidth(15);
691 eleff->SetLineWidth(3);
692 eleff->SetMaximum(1.);
693 if (indexOfFile==0) {
694 //eleff->SetFillColor(33);
695 //eleff->SetFillColor(30);
696 //eleff->SetFillColor(0);
697 //eleff->SetLineColor(4);
698 eleff->SetLineColor(1);
699 if (strstr(outputmode,"visual")) eleff->Draw();
701 eleff->SetFillStyle(0);
702 eleff->SetFillColor(30);
703 if (indexOfFile==2) {
704 eleff->SetLineColor(3);
705 eleff->SetLineWidth(3);
707 //eleff->SetLineColor(2);
708 eleff->SetLineColor(1);
709 eleff->SetLineStyle(2);}
710 if (strstr(outputmode,"visual")) eleff->Draw("same");
712 // eleff->Fit("pol1");
713 TPaveLabel *ellab = new TPaveLabel(.42,.85,.52,1.05,"e");
714 if (strstr(outputmode,"visual")) ellab->Draw();
717 pad2->SetFillStyle(0);
718 pad2->SetFillColor(10);
720 if (strstr(outputmode,"visual")) pad2->Draw();
722 pieff->SetLineWidth(3);
723 pieff->SetMaximum(1.);
724 if (indexOfFile==0) {
725 pieff->SetLineColor(1);
726 if (strstr(outputmode,"visual")) pieff->Draw();
728 pieff->SetFillStyle(0);
729 pieff->SetFillColor(30);
730 if (indexOfFile==1) {
731 pieff->SetLineStyle(2);
732 } else if (indexOfFile==2) {
733 pieff->SetLineStyle(3);
735 pieff->SetLineStyle(4);}
736 if (strstr(outputmode,"visual")) pieff->Draw("same");
738 TPaveLabel *pilab = new TPaveLabel(1.7,.85,2.2,1.05,"#pi");
739 if (strstr(outputmode,"visual")) pilab->Draw();
741 pad3->SetFillStyle(0);
742 pad3->SetFillColor(10);
744 if (strstr(outputmode,"visual")) pad3->Draw();
746 kaeff->SetLineWidth(3);
747 kaeff->SetMaximum(1.);
748 if (indexOfFile==0) {
749 kaeff->SetLineColor(1);
750 if (strstr(outputmode,"visual")) kaeff->Draw();
752 kaeff->SetFillStyle(0);
753 kaeff->SetFillColor(30);
754 if (indexOfFile==1) {
755 kaeff->SetLineStyle(2);
756 } else if (indexOfFile==2) {
757 kaeff->SetLineStyle(3);
759 kaeff->SetLineStyle(4);}
760 if (strstr(outputmode,"visual")) kaeff->Draw("same");
762 TPaveLabel *kalab = new TPaveLabel(1.7,.85,2.2,1.05,"K");
763 if (strstr(outputmode,"visual")) kalab->Draw();
765 pad4->SetFillStyle(0);
766 pad4->SetFillColor(10);
768 if (strstr(outputmode,"visual")) pad4->Draw();
770 preff->SetLineWidth(3);
771 preff->SetMaximum(1.);
772 if (indexOfFile==0) {
773 preff->SetLineColor(1);
774 if (strstr(outputmode,"visual")) preff->Draw();
776 preff->SetFillStyle(0);
777 preff->SetFillColor(30);
778 if (indexOfFile==1) {
779 preff->SetLineStyle(2);
780 } else if (indexOfFile==2) {
781 preff->SetLineStyle(3);
783 preff->SetLineStyle(4);}
784 if (strstr(outputmode,"visual")) preff->Draw("same");
786 TPaveLabel *prlab = new TPaveLabel(3.2,.85,4.1,1.05,"p");
787 if (strstr(outputmode,"visual")) prlab->Draw();
789 if (strstr(eventType,"pp")){
790 pad5->SetFillStyle(0);
791 pad5->SetFillColor(10);
793 if (strstr(outputmode,"visual")) pad5->Draw();
795 //elcon->SetLineWidth(5);
796 elcon->SetLineWidth(3);
797 elcon->SetMaximum(1.);
798 if (indexOfFile==0) {
799 //elcon->SetFillColor(33);
800 //elcon->SetFillColor(30);
801 //elcon->SetLineColor(4);
802 elcon->SetLineColor(1);
803 if (strstr(outputmode,"visual")) elcon->Draw();
805 elcon->SetFillStyle(4000);
806 elcon->SetFillColor(30);
807 if (indexOfFile==2) {
808 elcon->SetLineColor(3);
809 elcon->SetLineWidth(3);
811 elcon->SetLineColor(2);
812 elcon->SetLineStyle(2);}
813 if (strstr(outputmode,"visual")) elcon->Draw("same");
818 pad6->SetFillStyle(0);
819 pad6->SetFillColor(10);
821 if (strstr(outputmode,"visual")) pad6->Draw();
823 picon->SetLineWidth(3);
824 picon->SetMaximum(1.);
825 if (indexOfFile==0) {
826 picon->SetLineColor(1);
827 if (strstr(outputmode,"visual")) picon->Draw();
829 picon->SetFillStyle(0);
830 picon->SetFillColor(30);
831 if (indexOfFile==1) {
832 picon->SetLineStyle(2);
833 } else if (indexOfFile==2) {
834 picon->SetLineStyle(3);
836 picon->SetLineStyle(4);
838 line = new TLine(0.2,0.85,0.9,0.85);
839 line->SetLineStyle(2);
840 line->SetLineWidth(1);
841 if (strstr(outputmode,"visual")) line->Draw();
842 line = new TLine(0.2,0.65,0.9,0.65);
843 line->SetLineWidth(2);
844 if (strstr(outputmode,"visual")) line->Draw();
845 line = new TLine(0.2,0.45,0.9,0.45);
846 line->SetLineStyle(3);
847 line->SetLineWidth(1);
848 if (strstr(outputmode,"visual")) line->Draw();
849 line = new TLine(0.2,0.25,0.9,0.25);
850 line->SetLineStyle(4);
851 line->SetLineWidth(1);
852 if (strstr(outputmode,"visual")) line->Draw();
853 TPaveLabel *pl = new TPaveLabel(1.1,0.8,1.9,0.9,"100 ps","br");
854 pl->SetFillColor(18);
855 pl->SetTextSize(0.99);
856 if (strstr(outputmode,"visual")) pl->Draw();
857 pl = new TPaveLabel(1.1,0.6,1.9,0.7,"150 ps","br");
858 pl->SetFillColor(18);
859 pl->SetTextSize(0.99);
860 if (strstr(outputmode,"visual")) pl->Draw();
861 pl = new TPaveLabel(1.1,0.4,1.9,0.5,"200 ps","br");
862 pl->SetFillColor(18);
863 pl->SetTextSize(0.99);
864 if (strstr(outputmode,"visual")) pl->Draw();
865 pl = new TPaveLabel(1.1,0.2,1.9,0.3,"300 ps","br");
866 pl->SetFillColor(18);
867 pl->SetTextSize(0.99);
868 if (strstr(outputmode,"visual")) pl->Draw();
870 if (strstr(outputmode,"visual")) picon->Draw("same");
873 pad7->SetFillStyle(0);
874 pad7->SetFillColor(10);
876 if (strstr(outputmode,"visual")) pad7->Draw();
878 kacon->SetLineWidth(3);
879 kacon->SetMaximum(1.);
880 if (indexOfFile==0) {
881 kacon->SetLineColor(1);
882 if (strstr(outputmode,"visual")) kacon->Draw();
884 kacon->SetFillStyle(0);
885 kacon->SetFillColor(30);
886 if (indexOfFile==1) {
887 kacon->SetLineStyle(2);
888 } else if (indexOfFile==2) {
889 kacon->SetLineStyle(3);
891 kacon->SetLineStyle(4);}
892 if (strstr(outputmode,"visual")) kacon->Draw("same");
895 pad8->SetFillStyle(0);
896 pad8->SetFillColor(10);
898 if (strstr(outputmode,"visual")) pad8->Draw();
900 prcon->SetLineWidth(3);
901 prcon->SetMaximum(1.);
902 if (indexOfFile==0) {
903 prcon->SetLineColor(1);
904 if (strstr(outputmode,"visual")) prcon->Draw();
906 prcon->SetFillStyle(0);
907 prcon->SetFillColor(30);
908 if (indexOfFile==1) {
909 prcon->SetLineStyle(2);
910 } else if (indexOfFile==2) {
911 prcon->SetLineStyle(3);
913 prcon->SetLineStyle(4);}
914 if (strstr(outputmode,"visual")) prcon->Draw("same");
919 // last step case (it is just a copy of the previous lines)
920 // moving to pidCanvasls canvas
922 // drawing histos for overall case
923 if (strstr(eventType,"pp")){
924 pad1ls->SetFillStyle(0);
925 pad1ls->SetFillColor(10);
927 if (strstr(outputmode,"visual")) pad1ls->Draw();
929 //eleff->SetLineWidth(15);
930 eleffls->SetLineWidth(3);
931 eleffls->SetMaximum(1.);
932 if (indexOfFile==0) {
933 //eleff->SetFillColor(33);
934 //eleff->SetFillColor(30);
935 //eleff->SetFillColor(0);
936 //eleff->SetLineColor(4);
937 eleffls->SetLineColor(1);
938 if (strstr(outputmode,"visual")) eleffls->Draw();
940 eleffls->SetFillStyle(0);
941 eleffls->SetFillColor(30);
942 if (indexOfFile==2) {
943 eleffls->SetLineColor(3);
944 eleffls->SetLineWidth(3);
946 //eleff->SetLineColor(2);
947 eleffls->SetLineColor(1);
948 eleffls->SetLineStyle(2);}
949 if (strstr(outputmode,"visual")) eleffls->Draw("same");
951 // eleff->Fit("pol1");
952 TPaveLabel *ellabls = new TPaveLabel(.42,.85,.52,1.05,"e");
953 if (strstr(outputmode,"visual")) ellabls->Draw();
956 pad2ls->SetFillStyle(0);
957 pad2ls->SetFillColor(10);
959 if (strstr(outputmode,"visual")) pad2ls->Draw();
961 pieffls->SetLineWidth(3);
962 pieffls->SetMaximum(1.);
963 if (indexOfFile==0) {
964 pieffls->SetLineColor(1);
965 if (strstr(outputmode,"visual")) pieffls->Draw();
967 pieffls->SetFillStyle(0);
968 pieffls->SetFillColor(30);
969 if (indexOfFile==1) {
970 pieffls->SetLineStyle(2);
971 } else if (indexOfFile==2) {
972 pieffls->SetLineStyle(3);
974 pieffls->SetLineStyle(4);}
975 if (strstr(outputmode,"visual")) pieffls->Draw("same");
977 TPaveLabel *pilabls = new TPaveLabel(1.7,.85,2.2,1.05,"#pi");
978 if (strstr(outputmode,"visual")) pilabls->Draw();
980 pad3ls->SetFillStyle(0);
981 pad3ls->SetFillColor(10);
983 if (strstr(outputmode,"visual")) pad3ls->Draw();
985 kaeffls->SetLineWidth(3);
986 kaeffls->SetMaximum(1.);
987 if (indexOfFile==0) {
988 kaeffls->SetLineColor(1);
989 if (strstr(outputmode,"visual")) kaeffls->Draw();
991 kaeffls->SetFillStyle(0);
992 kaeffls->SetFillColor(30);
993 if (indexOfFile==1) {
994 kaeffls->SetLineStyle(2);
995 } else if (indexOfFile==2) {
996 kaeffls->SetLineStyle(3);
998 kaeffls->SetLineStyle(4);}
999 if (strstr(outputmode,"visual")) kaeffls->Draw("same");
1001 TPaveLabel *kalabls = new TPaveLabel(1.7,.85,2.2,1.05,"K");
1002 if (strstr(outputmode,"visual")) kalabls->Draw();
1004 pad4ls->SetFillStyle(0);
1005 pad4ls->SetFillColor(10);
1007 if (strstr(outputmode,"visual")) pad4ls->Draw();
1009 preffls->SetLineWidth(3);
1010 preffls->SetMaximum(1.);
1011 if (indexOfFile==0) {
1012 preffls->SetLineColor(1);
1013 if (strstr(outputmode,"visual")) preffls->Draw();
1015 preffls->SetFillStyle(0);
1016 preffls->SetFillColor(30);
1017 if (indexOfFile==1) {
1018 preffls->SetLineStyle(2);
1019 } else if (indexOfFile==2) {
1020 preffls->SetLineStyle(3);
1022 preffls->SetLineStyle(4);}
1023 if (strstr(outputmode,"visual")) preffls->Draw("same");
1025 TPaveLabel *prlabls = new TPaveLabel(3.2,.85,4.1,1.05,"p");
1026 if (strstr(outputmode,"visual")) prlabls->Draw();
1028 if (strstr(eventType,"pp")){
1029 pad5ls->SetFillStyle(0);
1030 pad5ls->SetFillColor(10);
1032 if (strstr(outputmode,"visual")) pad5ls->Draw();
1034 //elcon->SetLineWidth(5);
1035 elcon->SetLineWidth(3);
1036 elcon->SetMaximum(1.);
1037 if (indexOfFile==0) {
1038 //elcon->SetFillColor(33);
1039 //elcon->SetFillColor(30);
1040 //elcon->SetLineColor(4);
1041 elcon->SetLineColor(1);
1042 if (strstr(outputmode,"visual")) elcon->Draw();
1044 elcon->SetFillStyle(4000);
1045 elcon->SetFillColor(30);
1046 if (indexOfFile==2) {
1047 elcon->SetLineColor(3);
1048 elcon->SetLineWidth(3);
1050 elcon->SetLineColor(2);
1051 elcon->SetLineStyle(2);}
1052 if (strstr(outputmode,"visual")) elcon->Draw("same");
1057 pad6ls->SetFillStyle(0);
1058 pad6ls->SetFillColor(10);
1060 if (strstr(outputmode,"visual")) pad6ls->Draw();
1062 picon->SetLineWidth(3);
1063 picon->SetMaximum(1.);
1064 if (indexOfFile==0) {
1065 picon->SetLineColor(1);
1066 if (strstr(outputmode,"visual")) picon->Draw();
1068 picon->SetFillStyle(0);
1069 picon->SetFillColor(30);
1070 if (indexOfFile==1) {
1071 picon->SetLineStyle(2);
1072 } else if (indexOfFile==2) {
1073 picon->SetLineStyle(3);
1075 picon->SetLineStyle(4);
1077 line = new TLine(0.2,0.85,0.9,0.85);
1078 line->SetLineStyle(2);
1079 line->SetLineWidth(1);
1080 if (strstr(outputmode,"visual")) line->Draw();
1081 line = new TLine(0.2,0.65,0.9,0.65);
1082 line->SetLineWidth(2);
1083 if (strstr(outputmode,"visual")) line->Draw();
1084 line = new TLine(0.2,0.45,0.9,0.45);
1085 line->SetLineStyle(3);
1086 line->SetLineWidth(1);
1087 if (strstr(outputmode,"visual")) line->Draw();
1088 line = new TLine(0.2,0.25,0.9,0.25);
1089 line->SetLineStyle(4);
1090 line->SetLineWidth(1);
1091 if (strstr(outputmode,"visual")) line->Draw();
1092 TPaveLabel *pl = new TPaveLabel(1.1,0.8,1.9,0.9,"100 ps","br");
1093 pl->SetFillColor(18);
1094 pl->SetTextSize(0.99);
1095 if (strstr(outputmode,"visual")) pl->Draw();
1096 pl = new TPaveLabel(1.1,0.6,1.9,0.7,"150 ps","br");
1097 pl->SetFillColor(18);
1098 pl->SetTextSize(0.99);
1099 if (strstr(outputmode,"visual")) pl->Draw();
1100 pl = new TPaveLabel(1.1,0.4,1.9,0.5,"200 ps","br");
1101 pl->SetFillColor(18);
1102 pl->SetTextSize(0.99);
1103 if (strstr(outputmode,"visual")) pl->Draw();
1104 pl = new TPaveLabel(1.1,0.2,1.9,0.3,"300 ps","br");
1105 pl->SetFillColor(18);
1106 pl->SetTextSize(0.99);
1107 if (strstr(outputmode,"visual")) pl->Draw();
1109 if (strstr(outputmode,"visual")) picon->Draw("same");
1112 pad7ls->SetFillStyle(0);
1113 pad7ls->SetFillColor(10);
1115 if (strstr(outputmode,"visual")) pad7ls->Draw();
1117 kacon->SetLineWidth(3);
1118 kacon->SetMaximum(1.);
1119 if (indexOfFile==0) {
1120 kacon->SetLineColor(1);
1121 if (strstr(outputmode,"visual")) kacon->Draw();
1123 kacon->SetFillStyle(0);
1124 kacon->SetFillColor(30);
1125 if (indexOfFile==1) {
1126 kacon->SetLineStyle(2);
1127 } else if (indexOfFile==2) {
1128 kacon->SetLineStyle(3);
1130 kacon->SetLineStyle(4);}
1131 if (strstr(outputmode,"visual")) kacon->Draw("same");
1134 pad8ls->SetFillStyle(0);
1135 pad8ls->SetFillColor(10);
1137 if (strstr(outputmode,"visual")) pad8ls->Draw();
1139 prcon->SetLineWidth(3);
1140 prcon->SetMaximum(1.);
1141 if (indexOfFile==0) {
1142 prcon->SetLineColor(1);
1143 if (strstr(outputmode,"visual")) prcon->Draw();
1145 prcon->SetFillStyle(0);
1146 prcon->SetFillColor(30);
1147 if (indexOfFile==1) {
1148 prcon->SetLineStyle(2);
1149 } else if (indexOfFile==2) {
1150 prcon->SetLineStyle(3);
1152 prcon->SetLineStyle(4);}
1153 if (strstr(outputmode,"visual")) prcon->Draw("same");
1162 // momentum vs mass 2-D histos
1164 if (indexOfFile==0) {
1165 momvsmassCanvas = new TCanvas("momvsmassCanvas","Momentum vs mass disribution",500,10,700,700);
1166 momvsmassCanvas->SetFillColor(0);
1167 momvsmassCanvas->SetBorderMode(0);
1168 gPad->SetFillStyle(0);
1169 gPad->SetBorderMode(0);
1170 gPad->SetFillColor(0);
1171 // gStyle->SetOptStat(11);
1172 if (numfile==4) momvsmassCanvas->Divide(1,2,0,0);
1173 } else if (indexOfFile==1 && numfile == 4) {
1174 momvsmassCanvas->cd(1);
1175 TPaveLabel *pl = new TPaveLabel(-0.0376218,-3.03586,0.0979277,-2.70158,"100 ps","br");
1176 pl->SetFillColor(18);
1177 pl->SetTextSize(0.99);
1178 if (strstr(outputmode,"visual")) pl->Draw();
1179 } else if (indexOfFile==3 && numfile == 4) {
1180 momvsmassCanvas->cd(2);
1181 TPaveLabel *pl = new TPaveLabel(-0.0591866,-3.17077,0.076363,-2.86857,"300 ps","br");
1182 pl->SetFillColor(18);
1183 pl->SetTextSize(0.99);
1184 if (strstr(outputmode,"visual")) pl->Draw();
1186 if (numfile !=4) momvsmassCanvas->cd();
1187 if (numfile !=4 || indexOfFile==1 || indexOfFile==3) {
1188 // hpi->PaintStat2(01);
1189 hpi->SetMarkerColor(5);
1190 if (strstr(outputmode,"visual")) hpi->Draw();
1191 if(strstr(eventType,"pp")){
1192 hel->SetMarkerColor(2);
1193 if (strstr(outputmode,"visual")) hel->Draw("same");
1195 hka->SetMarkerColor(4);
1196 if (strstr(outputmode,"visual")) hka->Draw("same");
1197 hpr->SetMarkerColor(3);
1198 if (strstr(outputmode,"visual")) hpr->Draw("same");
1199 if (strstr(outputmode,"visual")) {
1202 if(strstr(eventType,"pp")){
1207 if(strstr(eventType,"pp")){
1208 //TPaveText *ep = new TPaveText(-0.05,-0.5,0.05,-0.3);
1210 TPaveLabel *ep = new TPaveLabel(.42,.85,.52,1.05,"e");
1211 if (strstr(outputmode,"visual")) ep->Draw();
1214 TPaveText *pip = new TPaveText(0.15,-1.0,0.25,-0.8);
1215 pip->AddText("#pi");
1216 if (strstr(outputmode,"visual")) pip->Draw();
1217 TPaveText *kp = new TPaveText(0.5,-2.0,0.6,-1.8);
1219 if (strstr(outputmode,"visual")) kp->Draw();
1220 TPaveText *prp = new TPaveText(0.9,-2.7,1.0,-2.5);
1222 if (strstr(outputmode,"visual")) prp->Draw();
1223 // TText *text2= new TText(.59,.06,"Momentum");
1224 // text1->SetTextAngle(90);
1226 //pidCanvas->DrawText(.1,.2,"Contamination Efficiency");
1227 momvsmassCanvas->Update();
1228 if(strstr(outputsavemode,"asC")) momvsmassCanvas->Print("momvsmassCanvas.C");
1229 if(strstr(outputsavemode,"asEPS")) momvsmassCanvas->Print("momvsmassCanvas.eps");
1231 pidCanvas->Update();
1232 if(strstr(outputsavemode,"asC")) pidCanvas->Print("pidCanvas.C");
1233 if(strstr(outputsavemode,"asEPS")) pidCanvas->Print("pidCanvas.eps");
1234 char outFileName[100];
1235 strcpy(outFileName,"histos");
1236 strcat(outFileName,foutfileName);
1237 TFile *houtfile = new TFile(outFileName,"recreate");
1240 pidCanvas->Write(0,TObject::kOverwrite);
1241 momvsmassCanvas->Write(0,TObject::kOverwrite);
1242 // saving 1-D histos
1243 pit->Write(0,TObject::kOverwrite);
1244 pig->Write(0,TObject::kOverwrite);
1245 pieff->Write(0,TObject::kOverwrite);
1246 pieffls->Write(0,TObject::kOverwrite);
1247 picon->Write(0,TObject::kOverwrite);
1248 piid->Write(0,TObject::kOverwrite);
1249 pimatch->Write(0,TObject::kOverwrite);
1250 piall->Write(0,TObject::kOverwrite);
1251 pigen->Write(0,TObject::kOverwrite);
1252 kat->Write(0,TObject::kOverwrite);
1253 kag->Write(0,TObject::kOverwrite);
1254 kaeff->Write(0,TObject::kOverwrite);
1255 kaeffls->Write(0,TObject::kOverwrite);
1256 kaid->Write(0,TObject::kOverwrite);
1257 kamatch->Write(0,TObject::kOverwrite);
1258 kaall->Write(0,TObject::kOverwrite);
1259 kagen->Write(0,TObject::kOverwrite);
1260 kacon->Write(0,TObject::kOverwrite);
1261 prt->Write(0,TObject::kOverwrite);
1262 prg->Write(0,TObject::kOverwrite);
1263 preff->Write(0,TObject::kOverwrite);
1264 preffls->Write(0,TObject::kOverwrite);
1265 prcon->Write(0,TObject::kOverwrite);
1266 prid->Write(0,TObject::kOverwrite);
1267 prmatch->Write(0,TObject::kOverwrite);
1268 prall->Write(0,TObject::kOverwrite);
1269 prgen->Write(0,TObject::kOverwrite);
1270 // saving 2-D histos
1271 hpi->Write(0,TObject::kOverwrite);
1272 hka->Write(0,TObject::kOverwrite);
1273 hpr->Write(0,TObject::kOverwrite);
1275 if (hel && eleff && elcon && elid && elall){
1276 hel->Write(0,TObject::kOverwrite);
1277 eleff->Write(0,TObject::kOverwrite);
1278 elcon->Write(0,TObject::kOverwrite);
1279 elid->Write(0,TObject::kOverwrite);
1280 elmatch->Write(0,TObject::kOverwrite);
1281 elall->Write(0,TObject::kOverwrite);
1283 cout << "file " << houtfile << " has been created" << endl;
1284 cout << "it contains PID histos and canvas" << endl;
1286 houtfile->Write(0,TObject::kOverwrite);
1290 if (strstr(outputmode,"novisual")){
1294 delete pieff; pieff=0;
1295 delete pieffls; pieffls=0;
1296 delete picon; picon=0;
1297 delete piid ; piid=0;
1298 delete pimatch; pimatch=0;
1299 delete piall; piall=0;
1300 delete pigen; pigen=0;
1303 delete kaeff; kaeff=0;
1304 delete kaeffls; kaeffls=0;
1305 delete kaid; kaid=0;
1306 delete kamatch; kamatch=0;
1307 delete kaall; kaall=0;
1308 delete kagen; kagen=0;
1309 delete kacon; kacon=0;
1312 delete preff; preff=0;
1313 delete preffls; preffls=0;
1314 delete prcon; prcon=0;
1315 delete prid; prid=0;
1316 delete prmatch; prmatch=0;
1317 delete prall; prall=0;
1318 delete prgen; prgen=0;
1355 //__________________________________________________________________
1356 Bool_t AliTOFPID::operator==( AliTOFPID const & /*tofrec*/)const
1358 // dummy version of Equal operator.
1359 // requested by coding conventions