#include "TF1.h" #include "TCanvas.h" #include "TPad.h" #include "TText.h" #include "Stntuple/obj/TStnHeaderBlock.hh" #include "Stntuple/obj/TStnTrackBlock.hh" #include "TJetAnaModule.hh" //_____________________________________________________________________________ TJetAnaModule::TJetAnaModule(const char* name, const char* title): TStnModule(name,title) { fMinEt = 1000.; } //_____________________________________________________________________________ TJetAnaModule::~TJetAnaModule() { } //_____________________________________________________________________________ void TJetAnaModule::BookHistograms() { char name [200]; char title[200]; // book histograms Delete("hist"); sprintf(name, "%s_njets",GetName()); sprintf(title,"%s: N(jets)",GetName()); fHist.fNJets = new TH1F(name, title,50 ,0,50); AddHistogram(fHist.fNJets); sprintf(name, "%s_ntracks",GetName()); sprintf(title,"%s: N(tracks)",GetName()); fHist.fNTracks = new TH1F(name, title,100 ,0,100); AddHistogram(fHist.fNTracks); sprintf(name, "%s_jet_et",GetName()); sprintf(title,"%s: jet Et ",GetName()); fHist.fEt = new TH1F(name, title,100,0,200); AddHistogram(fHist.fEt); sprintf(name, "%s_jet_phi",GetName()); sprintf(title,"%s: Jet(phi)",GetName()); fHist.fPhi = new TH1F(name, title,128 ,0,6.3); AddHistogram(fHist.fPhi); sprintf(name, "%s_jet_eta",GetName()); sprintf(title,"%s: jet Eta ",GetName()); fHist.fEta = new TH1F(name, title,100,-5,5); AddHistogram(fHist.fEta); sprintf(name, "%s_jet_emfr",GetName()); sprintf(title,"%s: jet EM fraction ",GetName()); fHist.fEmfr = new TH1F(name, title,100,0,1); AddHistogram(fHist.fEmfr); } //_____________________________________________________________________________ int TJetAnaModule::BeginJob() { // register the data block RegisterDataBlock("JetBlock",&fJetBlock); // book histograms BookHistograms(); return 0; } //_____________________________________________________________________________ int TJetAnaModule::BeginRun() { return 0; } //_____________________________________________________________________________ int TJetAnaModule::Event(int ientry) { fJetBlock->GetEntry(ientry); // do whatever you want int print_this_event = 0; if (PrintLevel() == 1) { print_this_event = 1; } int njets = fJetBlock->NJets(); fHist.fNJets->Fill(njets); for (int i=0; iJet(i); fHist.fEt->Fill(jet->Et()); fHist.fEta->Fill(jet->Momentum()->Eta()); fHist.fPhi->Fill(TVector2::Phi_0_2pi(jet->Momentum()->Phi())); fHist.fNTracks->Fill(jet->NTracks()); fHist.fEmfr->Fill(jet->EmFract()); if ((PrintLevel() == 2) && (jet->Et() > fMinEt)) { print_this_event = 1; } } if (print_this_event) { GetHeaderBlock()->Print(); fJetBlock->Print(); } return 0; } //_____________________________________________________________________________ int TJetAnaModule::EndJob() { printf("----- end job: ---- %s\n",GetName()); return 0; } //_____________________________________________________________________________ void TJetAnaModule::PlotHistograms(int run_number, int slide) { // plot slides char name[120], canvas_name[120], title[120], pad_name[120]; sprintf(name,"run_%i_%i",run_number,slide); sprintf(title,"run %i slide %i ",run_number, slide); sprintf(canvas_name,"%s_%s",GetName(),name); sprintf(pad_name,"%s_p1",canvas_name); if (slide == 1) { //----------------------------------------------------------------------------- // //----------------------------------------------------------------------------- // TPostScript ps("l1ana.ps",-111); TCanvas* c = NewSlide(name,title,2,3); TPad* p1 = (TPad*) c->GetPrimitive(pad_name); p1->cd(1); fHist.fNJets->Draw(); p1->cd(2); fHist.fEt->Draw(); p1->cd(3); fHist.fEta->Draw(); p1->cd(4); fHist.fPhi->Draw(); p1->cd(5); fHist.fNTracks->Draw(); p1->cd(6); fHist.fEmfr->Draw(); gPad->Update(); } }