#include "TF1.h" #include "TCanvas.h" #include "TPad.h" #include "TText.h" #include "TMuoAnaModule.hh" //_____________________________________________________________________________ void TMuoAnaModule::BookMuMuHistograms(MuMuHist_t& Hist, Int_t I) { char name [200]; char title[200]; // book histograms sprintf(name, "mm_mass_%i",I); sprintf(title,"Mass of 2 muon objects, set %i",I); HBook1F(Hist.fMass,name,title,100,0,200); sprintf(name, "mm_charge_%i",I); sprintf(title,"Charge of 2 muon objects, set %i",I); HBook1F(Hist.fCharge,name,title,10,-5,5); sprintf(name, "mm_pt_%i",I); sprintf(title,"Pt of 2 muon objects, set %i",I); HBook1F(Hist.fPt,name,title,100,0,200); } //_____________________________________________________________________________ void TMuoAnaModule::BookMuonHistograms(MuoHist_t& Hist, const char* Folder) { char name [200]; char title[200]; // book histograms int I = 0; HBook1F(Hist.fDetector,"detector","Muon detector code",50,0,50,Folder); sprintf(title,"Muon detector code Vs Eta"); HBook2F(Hist.fDetectorVsEta,"detector_vs_eta",title,200,-5,5,50,0,50,Folder); sprintf(title,"muon object Pt"); HBook1F(Hist.fPt,"pt",title,200,0,200,Folder); sprintf(title,"muon object Pt vs Eta"); HBook2F(Hist.fPtVsEta,"pt_vs_eta",title,100,-5,5,200,0,200,Folder); sprintf(title,"Wedge Vs DelX(CES) pos"); HBook2F(Hist.fWedgeVsCmuDelXPos,"wedge_vs_delx_pos",title,100,-10,10,50,0,50,Folder); sprintf(name, "wedge_vs_delx_neg"); sprintf(title,"Wedge Vs DelX(CES) neg (%i)",I); HBook2F(Hist.fWedgeVsCmuDelXNeg,name, title,100,-10,10,50,0,50,Folder); sprintf(title,"muon object phi (%i)",I); HBook1F(Hist.fPhi,"phi",title,128 ,0,6.3,Folder); sprintf(name, "iso_%i",I); sprintf(title,"EM object isolation energy (%i)",I); HBook1F(Hist.fEIso,name,title,100,0,50,Folder); sprintf(name, "tiso_%i",I); sprintf(title," EM object Track Iso (%i)",I); HBook1F(Hist.fTIso,name,title,100,0,5,Folder); sprintf(title," muon object delX (%i)",I); HBook1F(Hist.fCmuDelX,"cmu_delx",title,200,-10,10,Folder); sprintf(title,"%s: muon object del(Z)",Folder); HBook1F(Hist.fCmuDelZ,"cmu_delz",title,250,-25,25,Folder); sprintf(title," muon object CMP delX"); HBook1F(Hist.fCmpDelX,"cmp_delx",title,200,-10,10,Folder); sprintf(title," muon object CMX delX"); HBook1F(Hist.fCmxDelX,"cmx_delx",title,200,-10,10,Folder); sprintf(title," muon E(Had)"); HBook1F(Hist.fHadEnergy,"ehad",title,200,0,20,Folder); sprintf(title," muon object E(em) (%i)",I); HBook1F(Hist.fEmEnergy,"eem",title,200,0,20,Folder); //----------------------------------------------------------------------------- // track histograms //----------------------------------------------------------------------------- sprintf(name, "track_d0"); sprintf(title," Muon track D0"); HBook1F(Hist.fTrackD0,name,title,500,-5,5,Folder); sprintf(name, "track_d0corr"); sprintf(title," Ele track D0 corr"); HBook1F(Hist.fTrackD0Corr,name,title,500,-2.5,2.5,Folder); sprintf(title," muon track Z0 (%i)"); HBook1F(Hist.fTrackZ0,"track_z0",title,200,-200,200,Folder); sprintf(name, "track_chi2_%i",I); sprintf(title," muon track chi**2 (%i)",I); HBook1F(Hist.fTrackChi2,name,title,200,0,10,Folder); sprintf(name, "track_cot_chi2_%i",I); sprintf(title," muon track COT chi**2 (%i)",I); HBook1F(Hist.fTrackCotChi2,name,title,200,0,10,Folder); sprintf(name, "track_n_cot_hits_tot_%i",I); sprintf(title," muon track N(COT hits) total (%i)",I); HBook1F(Hist.fTrackNCotHitsTot,name,title,100,0,100,Folder); sprintf(name, "track_n_cot_hits_ax_%i",I); sprintf(title,"%s: muon track N(COT hits) axial",Folder); HBook1F(Hist.fTrackNCotHitsAx,name,title,100,0,100,Folder); sprintf(name, "track_n_cot_hits_st"); sprintf(title,"muon track N(COT hits) stereo"); HBook1F(Hist.fTrackNCotHitsSt,name,title,100,0,100,Folder); sprintf(title,"%s: Muon track Pt",Folder); HBook1F(Hist.fTrackPt,"track_pt",title,200 ,0,100,Folder); sprintf(title,"%s: Algorithm for a muon track",Folder); HBook1F(Hist.fTrackAlgorithm,"track_algorithm",title,50 ,0,50,Folder); // sprintf(name, "track_xces_%i",I); // sprintf(title,"EM object track X(CES) (%i)",I); // Hist.fTrackXCes = new TH1F(name,title,200 ,0,100); // AddHistogram(Hist.fTrackXCes); // sprintf(name, "track_zces_%i",I); // sprintf(title,"EM object track Z(CES) (%i)",I); // Hist.fTrackZCes = new TH1F(name,title,50,0,250); // AddHistogram(Hist.fTrackZCes); sprintf(name, "ext_dx_%i",I); sprintf(title,"Extrapolator DX(xw-bob) (%i)",I); HBook1F(Hist.fExtDx,name,title,100,-5,5,Folder); sprintf(name, "ext_dz_%i",I); sprintf(title,"Extrapolator DZ(zw-bob) (%i)",I); HBook1F(Hist.fExtDz,name,title,100,-5,5,Folder); } //_____________________________________________________________________________ void TMuoAnaModule::BookMuonIDHistograms(MuoIDHist_t& Hist, const char* Folder) { char name [200]; char title[200]; //----------------------------------------------------------------------------- // Muon ID histograms //----------------------------------------------------------------------------- for (int i=0; i<5; i++) { sprintf(name, "detector_%i",i); sprintf(title,"Muon detector code cut [%i]",i); HBook1F(Hist.fDetector[i],name, title,50,0,50,Folder); sprintf(name, "iso_%i",i); sprintf(title,"Muon ID: ISO_04 cut [%i]",i); HBook1F(Hist.fEIso[i],name,title,200,0,20,Folder); sprintf(name, "iso1_%i",i); sprintf(title,"Muon ID: ISO_04/Et cut [%i]",i); HBook1F(Hist.fIso1[i],name,title,100,0,1,Folder); sprintf(name, "track_pt_%i",i); sprintf(title,"Muon ID: Track Pt cut [%i]",i); HBook1F(Hist.fTrackPt[i],name,title,100,0,100,Folder); sprintf(name, "had_energy_%i",i); sprintf(title,"Muon ID: HAD energy cut [%i]",i); HBook1F(Hist.fHadEnergy[i],name,title,200,0,20,Folder); sprintf(name, "em_energy_%i",i); sprintf(title,"Muon ID: EM energy cut [%i]",i); HBook1F(Hist.fEmEnergy[i],name,title,200,0,10,Folder); sprintf(name, "cmu_dx_%i",i); sprintf(title,"Muon ID: DelX(CMU) cut [%i]",i); HBook1F(Hist.fCmuDelX[i],name,title,200,-10,10,Folder); sprintf(name, "cmu_dz_%i",i); sprintf(title,"Muon ID: DelZ(CMU) cut [%i]",i); HBook1F(Hist.fCmuDelZ[i],name,title,200,-20,20,Folder); sprintf(name, "cmp_dx_%i",i); sprintf(title,"Muon ID: DelX(CMP) cut [%i], set %i",i); HBook1F(Hist.fCmpDelX[i],name,title,200,-20,20,Folder); sprintf(name, "cmx_dx_%i",i); sprintf(title,"DelX(CMX) cut [%i]",i); HBook1F(Hist.fCmxDelX[i],name,title,200,-20,20,Folder); sprintf(name, "tiso_%i",i); sprintf(title,"Muon ID: Track ISO cut [%i]",i); HBook1F(Hist.fTIso[i],name,title,100,0,5,Folder); sprintf(name, "d0_%i",i); sprintf(title,"Muon ID: Track DO cut [%i]",i); HBook1F(Hist.fTrackD0[i],name,title,1000,-2.5,2.5,Folder); sprintf(name, "z0_%i",i); sprintf(title,"Muon ID: Track Z0 cut [%i]",i); HBook1F(Hist.fTrackZ0[i],name,title,200,-200,200,Folder); sprintf(name, "nax_%i",i); sprintf(title,"Muon ID: Track N(AX hits) cut [%i]",i); HBook1F(Hist.fCotNAxHits[i],name,title,50,0,50,Folder); sprintf(name, "nst_%i",i); sprintf(title,"Muon ID: Track N(ST hits) cut [%i]",i); HBook1F(Hist.fCotNStHits[i],name,title,50,0,50,Folder); } HBook1F(Hist.fFailedBits,"failed_bits","Mu ID: failed bits",32,0,32,Folder); HBook1F(Hist.fPassed ,"passed" ,"Mu ID: passed cuts",3,0,3,Folder); } //_____________________________________________________________________________ void TMuoAnaModule::BookEventHistograms(EventHist_t& Hist,Int_t I) { // book histograms char name [200]; char title[200]; HBook1F(Hist.fNMuons,Form("nmuons_%i",I),Form("N(muons) (%i)",I),20,0,20); HBook1F(Hist.fNGoodMuons, Form("n_good_muons_%i",I), Form("N(good muons) (%i)",I), 20,0,20); // HBook1F(Hist.fMet0,Form("met0_%i",I),Form("MET0 (%i)",I),100,0,100); // HBook1F(Hist.fMet1,Form("met1_%i",I),Form("MET1 (%i)",I),100,0,100); sprintf(name,"mt0_%i",I); sprintf(title,"MT0, [%i]",I); HBook1F(Hist.fMt[0],name,title,75,0,150); sprintf(name,"mt1_%i",I); sprintf(title,"MT1, [%i]",I); HBook1F(Hist.fMt[1],name,title,75,0,150); sprintf(name,"n_good_muo_%i",I); sprintf(title,"N(good muons), set %i",I); HBook1F(Hist.fNGoodMuons,name,title,20,0,20); sprintf(name,"n_loose_muons_%i",I); sprintf(title,"N(loose muons), set %i",I); HBook1F(Hist.fNLooseMuons,name,title,20,0,20); sprintf(name,"n_cmu_stubs_%i",I); sprintf(title,"Number of reconstructed CMU stubs, set %i",I); HBook1F(Hist.fNCmuStubs,name,title,50,0,50); sprintf(name,"n_cmp_stubs_%i",I); sprintf(title,"Number of reconstructed CMP stubs, set %i",I); HBook1F(Hist.fNCmpStubs,name,title,50,0,50); sprintf(name,"n_cmx_stubs_%i",I); sprintf(title,"Number of reconstructed CMX stubs, set %i",I); HBook1F(Hist.fNCmxStubs,name,title,50,0,50); sprintf(name,"iso_vs_met_%i",I); sprintf(title,"Et(iso) vs MET, [%i]",I); HBook2F(Hist.fIsoVsMet,name,title,100,0,100,100,0,50); sprintf(name,"iso1_vs_met_%i",I); sprintf(title,"Et(iso) vs MET, [%i]",I); HBook2F(Hist.fIso1VsMet,name,title,100,0,100,100,0,1); sprintf(name,"met_perp0_%i",I); sprintf(title,"MET perp0 (i)",I); HBook1F(Hist.fMetPerp[0],name,title,100,-50,50); sprintf(name,"met_perp1_%i",I); sprintf(title,"MET perp1 (i)",I); HBook1F(Hist.fMetPerp[1],name,title,100,-50,50); } //_____________________________________________________________________________ void TMuoAnaModule::BookHistograms() { TFolder* fol; TFolder* hist_folder; char folder_name[200]; //----------------------------------------------------------------------------- // clear the histogram list //----------------------------------------------------------------------------- DeleteHistograms(); hist_folder = (TFolder*) GetFolder()->FindObject("Hist"); //----------------------------------------------------------------------------- // always the histogram for run number //----------------------------------------------------------------------------- HBook1F(fHist.fRunNumber,"run_number","Run Number",1000,100000,200000); HBook1F(fHist.fFilterResult,"filter_result","Filter result",5,0,5); //----------------------------------------------------------------------------- // individual muon histograms //----------------------------------------------------------------------------- for (int i=0; iFindObject(folder_name); if (! fol) fol = hist_folder->AddFolder(folder_name,folder_name); BookMuonHistograms(fHist.fMuo[i],Form("Hist/%s",folder_name)); } //----------------------------------------------------------------------------- // muon ID histograms //----------------------------------------------------------------------------- for (int i=0; i<4; i++) { sprintf(folder_name,"id_%02i",i); fol = (TFolder*) hist_folder->FindObject(folder_name); if (! fol) fol = hist_folder->AddFolder(folder_name,folder_name); BookMuonIDHistograms(fHist.fMuoID[i],Form("Hist/%s",folder_name)); } //----------------------------------------------------------------------------- // Z histograms //----------------------------------------------------------------------------- for (int i=0; i<5; i++) { BookMuMuHistograms(fHist.fMuMu[i],i); } //----------------------------------------------------------------------------- // do the rest //----------------------------------------------------------------------------- BookEventHistograms(fHist.fEvent,0); }