CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
TopValidation.cc
Go to the documentation of this file.
1 // -*- C++ -*-
2 //
3 // Package: TopValidation
4 // Class: TopValidation
5 //
13 //
14 // Original Author: Patricia LOBELLE PARDO ()
15 // Created: Tue Sep 23 11:06:32 CEST 2008
16 // $Id: TopValidation.cc,v 1.10 2010/02/17 19:31:05 wdd Exp $
17 //
18 //
19 
20 
23 
24 
25 
27 
28 {
29 
30 
31  inputTag_ = iConfig.getParameter<edm::InputTag>("TriggerResultsCollection");
32  hlt_bitnames = iConfig.getParameter<std::vector<std::string> >("hltPaths");
33  hlt_bitnamesMu = iConfig.getParameter<std::vector<std::string> >("hltMuonPaths");
34  hlt_bitnamesEg = iConfig.getParameter<std::vector<std::string> >("hltEgPaths");
35  hlt_bitnamesJet = iConfig.getParameter<std::vector<std::string> >("hltJetPaths");
36  // triggerTag_ = iConfig.getUntrackedParameter<string>("DQMFolder","HLT/Top");
37  outputFileName = iConfig.getParameter<std::string>("OutputFileName");
38  outputMEsInRootFile = iConfig.getParameter<bool>("OutputMEsInRootFile");
39  FolderName_ = iConfig.getParameter<std::string>("FolderName");
40 
42 
43 
44 
45 }
46 
47 
49 {
50 
51  // do anything here that needs to be done at desctruction time
52  // (e.g. close files, deallocate resources etc.)
53 
54 }
55 
56 
57 //
58 // member functions
59 //
60 
61 
62 // ------------ method called to for each event ------------
63 void
65 {
66  using namespace edm;
67 
68 
69  // muon collection
71  iEvent.getByLabel("muons", muonsH);
72 
73  // tracks collection
75  iEvent.getByLabel("ctfWithMaterialTracks", tracks);
76 
77 
78  // get calo jet collection
80  iEvent.getByLabel("iterativeCone5CaloJets", jetsHandle);
81 
82 
83  // electron collection
85  // iEvent.getByLabel("pixelMatchGsfElectrons",electronsH);
86  iEvent.getByLabel("gsfElectrons",electronsH);
87 
88  // Trigger
90  iEvent.getByLabel(inputTag_,trh);
91  if( ! trh.isValid() ) {
92  LogDebug("") << "HL TriggerResults with label ["+inputTag_.encode()+"] not found!";
93  return;
94  }
95 
96 
97 
98  const edm::TriggerNames & triggerNames = iEvent.triggerNames(*trh);
99 
101  // generation info
103 
104  bool topevent = false;
105 
106  int ntop = 0;
107  int ngenel = 0;
108  int ngenmu = 0;
109  int ngentau = 0;
110  int ngenlep = 0;
111  int nmuaccept= 0;
112  int nelaccept= 0;
113 
114  // Gen Particles Collection
116  iEvent.getByLabel("genParticles", genParticles);
117 
118  for (size_t i=0; i < genParticles->size(); ++i){
119  const reco::Candidate & p = (*genParticles)[i];
120  int id = p.pdgId();
121  int st = p.status();
122 
123  if (abs(id) == 6 && st == 3) ntop++;
124 
125  if (st==3 && abs(id)==11) {
126  ngenel++;
127  if ( p.pt()>10 && fabs(p.eta())<2.4) nelaccept++;
128  }
129 
130  if (st==3 && abs(id)==13) {
131  ngenmu++;
132  if ( p.pt()>10 && fabs(p.eta())<2.4) nmuaccept++;
133  }
134 
135  if (st==3 && abs(id)==15) ngentau++;
136  if (st==3 && ( abs(id)==11 || abs(id)==13 || abs(id)==15)) ngenlep++;
137 
138  }
139 
140  if (ntop == 2) topevent = true;
141 
142 
143 
144  // if (topevent){
145 
149 
150  //Muon Collection to use
151  std::map<double,reco::Muon> muonMap;
152 
153  for (size_t i = 0; i< muonsH->size(); ++i){
154  if ( (*muonsH)[i].isGlobalMuon() && (*muonsH)[i].pt()>15 && fabs((*muonsH)[i].eta())<2.1){
155  muonMap[(*muonsH)[i].pt()] = (*muonsH)[i];
156  }
157  }
158 
159  //Muon selection
160  bool TwoMuonsAccepted = false;
161 
162  std::vector<reco::Muon> selected_muons;
163  reco::Muon muon1,muon2;
164 
165  for( std::map<double,reco::Muon>::reverse_iterator rit=muonMap.rbegin(); rit!=muonMap.rend(); ++rit){
166  selected_muons.push_back( (*rit).second );
167  }
168 
169  if (selected_muons.size()==1) muon1 = selected_muons[0];
170 
171  if (selected_muons.size()>1){
172  muon1 = selected_muons[0];
173  muon2 = selected_muons[1];
174  }
175 
176 
177  if( selected_muons.size()>1 && muon1.pt() >20 && muon1.charge()*muon2.charge()<0 ) TwoMuonsAccepted = true;
178 
179 
183 
184  //Electron Collection to use
185  std::map<double,reco::GsfElectron> electronMap;
186 
187  for (size_t i = 0; i<electronsH->size();++i){
188  if( (*electronsH)[i].pt()>15 && fabs( (*electronsH)[i].eta() )<2.4) {
189  electronMap[(*electronsH)[i].pt()] = (*electronsH)[i];
190  }
191  }
192 
193  //Electron selection
194  bool TwoElectronsAccepted = false;
195 
196  std::vector<reco::GsfElectron> selected_electrons;
197  reco::GsfElectron electron1, electron2;
198 
199  for( std::map<double,reco::GsfElectron>::reverse_iterator rit=electronMap.rbegin(); rit!=electronMap.rend(); ++rit){
200  selected_electrons.push_back( (*rit).second );
201  }
202 
203  if (selected_electrons.size()==1) electron1 = selected_electrons[0];
204 
205  if (selected_electrons.size()>1){
206 
207  electron1 = selected_electrons[0];
208  electron2 = selected_electrons[1];
209  }
210 
211 
212  if( selected_electrons.size()>1 && electron1.pt() >20 && electron1.charge()*electron2.charge()<0 ) TwoElectronsAccepted = true;
213 
214 
215 
219 
220  //Jet Collection to use
221 
222  // Raw jets
223  const reco::CaloJetCollection *jets = jetsHandle.product();
224  reco::CaloJetCollection::const_iterator jet;
225 
226  int n_jets_20=0;
227 
228  for (jet = jets->begin(); jet != jets->end(); jet++){
229  // if (fabs(jet->eta()) <2.4 && jet->et() > 20) n_jets_20++;
230  // if (fabs(jet->eta()) <2.4 && jet->et() > 13) n_jets_20++;
231  if (fabs(jet->eta()) <2.4 && jet->et() > 13) n_jets_20++;
232  }
233 
234 
236  /* std::map<double,reco::CaloJet> jetMap;
237 
238  for (size_t i = 0; i<jetsHandle->size();++i){
239  if ((*jetsHandle)[i].et()>13 && fabs( (*jetsHandle)[i].eta())<2.4){
240 
241 
242  jetMap[(*jetsHandle)[i].et()] = (*jetsHandle)[i];
243  }
244  }
245 
246  std::vector<reco::CaloJet> selected_jets;
247  reco::CaloJet jet1, jet2;
248 
249  for( std::map<double,reco::CaloJet>::reverse_iterator rit=jetMap.rbegin(); rit!=jetMap.rend(); ++rit){
250  selected_jets.push_back( (*rit).second );
251  }
252 
253  if (selected_jets.size()>1){
254  jet1 = selected_jets[0];
255  jet2 = selected_jets[1];
256  }
257 
258 */
259 
265 
266 
267 
268  bool offline_mu = false;
269  bool offline_dimu = false;
270  bool offline_el = false;
271  bool offline_diel = false;
272  bool offline_emu = false;
273 
274 
275  if ( selected_muons.size()>0 && muon1.pt()>20 && n_jets_20>1) offline_mu=true;
276  if ( TwoMuonsAccepted && n_jets_20>1) offline_dimu=true;
277  if ( selected_electrons.size()>0 && electron1.pt()>20 && n_jets_20>1) offline_el=true;
278  if ( TwoElectronsAccepted && n_jets_20>1) offline_diel=true;
279  if ( selected_muons.size()>0 && selected_electrons.size()>0 && (muon1.pt()>20 || electron1.pt()>20) && (muon1.charge()!= electron1.charge()) && n_jets_20>1) offline_emu=true;
280 
281 
282 
283 
285  // store fired bits
287 
288  int wtrig_[100] ={0};
289  int wtrig_m[100] ={0};
290  int wtrig_eg[100]={0};
291  int wtrig_jet[100]={0};
292 
293  bool HLTQuadJet30 = false;
294  bool HLTMu9 = false;
295 
296 
297  int n_hlt_bits = hlt_bitnames.size();
298  int n_hlt_bits_mu = hlt_bitnamesMu.size();
299  int n_hlt_bits_eg = hlt_bitnamesEg.size();
300  int n_hlt_bits_jet= hlt_bitnamesJet.size();
301 
302  const unsigned int n_TriggerResults( trh.product()->size());
303 
304  for (unsigned int itrig=0; itrig< n_TriggerResults; ++itrig) {
305 
307  if (triggerNames.triggerName(itrig) == "HLT_QuadJet30"){
308  if ( trh.product()->accept( itrig ) ) HLTQuadJet30=true;
309  }
310  if (triggerNames.triggerName(itrig) == "HLT_Mu9"){
311  if ( trh.product()->accept( itrig ) ) HLTMu9=true;
312  }
314  if (trh.product()->accept(itrig)) {
315 
316  for (int i=0;i<n_hlt_bits;i++) {
317  if ( triggerNames.triggerName(itrig)== hlt_bitnames[i]) {
318  wtrig_[i]=1;
319  }
320  }
321  for (int j=0;j<n_hlt_bits_mu;j++) {
322  if ( triggerNames.triggerName(itrig)== hlt_bitnamesMu[j]) {
323  wtrig_m[j]=1;
324  }
325  }
326  for (int k=0;k<n_hlt_bits_eg;k++) {
327  if ( triggerNames.triggerName(itrig)== hlt_bitnamesEg[k]) {
328  wtrig_eg[k]=1;
329  }
330  }
331 
332  for (int l=0;l<n_hlt_bits_jet;l++) {
333  if ( triggerNames.triggerName(itrig)== hlt_bitnamesJet[l]) {
334  wtrig_jet[l]=1;
335  }
336  }
337 
338  }
339  }
340 
341 
342 
346 
347  events_acc_off_muon->Fill(1,1);
348  if (ngenlep==1 && ngenmu==1) events_acc_off_muon->Fill(2,1);
350  if (ngenlep==1 && ngenel==1) events_acc_off_electron->Fill(2,1);
351 
353 
354 
355 
356  if ( ngenlep==1 && ngenmu==1 && nmuaccept==1){ //Select events within acceptance
357 
358  events_acc_off_muon->Fill(3,1);
359 
360  for (int j=0;j<n_hlt_bits_mu;j++) {
361  h_mu_gen->Fill(j+1);
362  if (wtrig_m[j]==1) {
364  }
365  }
366 
367  for (int it=0; it<n_hlt_bits_jet;it++){
368  h_jet_gen->Fill(it+1);
369  if (wtrig_jet[it]==1) {
370  hlt_bitjet_hist_gen->Fill(it+1);
371  }
372  }
373 
374 
375  // Efficiencies wrt MC + offline
376  if (offline_mu){
377 
378  events_acc_off_muon->Fill(4,1);
379 
380  // et_off_jet_mu -> Fill(jet1.et());
381  // eta_off_jet_mu-> Fill(jet1.eta());
382 
383  for (int it=0; it<n_hlt_bits_jet;it++){
384  h_jet_reco->Fill(it+1);
385  if (wtrig_jet[it]==1) {
386  hlt_bitjet_hist_reco->Fill(it+1);
387  // h_etjet1_trig_mu[it]->Fill(jet1.et());
388  // h_etajet1_trig_mu[it]->Fill(jet1.eta());
389 
390 
391  }
392 
393  }
394 
395  eta_off_mu->Fill(muon1.eta());
396  pt_off_mu-> Fill(muon1.pt());
397 
398  for (int j=0;j<n_hlt_bits_mu;j++) {
399  h_mu_reco->Fill(j+1);
400  if (wtrig_m[j]==1) {
401  h_ptmu1_trig[j]->Fill(muon1.pt());
402  h_etamu1_trig[j]->Fill(muon1.eta());
404  }
405  }
406 
407  }
408  }
409 
410 
411 
413 
414  if (HLTQuadJet30){ // events firing the 4jet30 trigger
415 
416  if (offline_mu){ // events with 1 rec muon+ 2jets
417 
418  ptmuon_4jet1muSel->Fill(muon1.pt());
419  etamuon_4jet1muSel->Fill(muon1.eta());
420  Njets_4jet1muSel->Fill(n_jets_20);
421 
422  if (HLTMu9){
423 
424  ptmuon_4jet1muSel_hltmu9->Fill(muon1.pt());
425  etamuon_4jet1muSel_hltmu9->Fill(muon1.eta());
426  Njets_4jet1muSel_hltmu9->Fill(n_jets_20);
427  }
428  }
429  }
430 
431 
433 
434 
435  // ***** tt->enubjjb *****
436  if ( ngenlep==1 && ngenel==1 && nelaccept==1){
437 
439 
440  for (int j=0;j<n_hlt_bits_eg;j++) {
441  h_el_gen->Fill(j+1);
442  if (wtrig_eg[j]==1) {
444  }
445  }
446 
447  for (int it=0; it<n_hlt_bits_jet;it++){
448  h_jet_gen_el->Fill(it+1);
449  if (wtrig_jet[it]==1) {
451  }
452  }
453 
454  // Efficiencies wrt mc + offline
455  if (offline_el){
456 
458 
459  /*/// jets
460  et_off_jet_el -> Fill(jet1.et());
461  eta_off_jet_el-> Fill(jet1.eta());*/
462 
463  for (int it=0; it<n_hlt_bits_jet;it++){
464  h_jet_reco_el->Fill(it+1);
465  if (wtrig_jet[it]==1) {
467  // h_etjet1_trig_el[it]->Fill(jet1.et());
468  // h_etajet1_trig_el[it]->Fill(jet1.eta());
469  }
470 
471  }
472 
473 
475  eta_off_el->Fill(electron1.eta());
476  pt_off_el->Fill(electron1.pt());
477 
478  for (int k=0;k<n_hlt_bits_eg;k++) {
479  h_el_reco->Fill(k+1);
480 
481  if (wtrig_eg[k]==1) {
482  h_ptel1_trig[k]->Fill(electron1.pt());
483  h_etael1_trig[k]->Fill(electron1.eta());
485  }
486  }
487 
488  }
489  }
490 
491 
492 
493  // ****** tt->munubmunub *****
494  if ( ngenlep==2 && ngenmu==2 && nmuaccept==2){
495 
496 
497  // Efficiencies wrt mc+offline
498  if (offline_dimu){
499 
500  eta_off_dimu1->Fill(muon1.eta());
501  eta_off_dimu2->Fill(muon2.eta());
502  pt_off_dimu1->Fill(muon1.pt());
503  pt_off_dimu2->Fill(muon2.pt());
504 
505  for (int j=0;j<n_hlt_bits_mu;j++) {
506 
507  if (wtrig_m[j]==1) {
508 
509  h_ptmu1_trig_dimu[j]->Fill(muon1.pt());
510  h_etamu1_trig_dimu[j]->Fill(muon1.eta());
511  }
512  }
513  }
514  }
515 
516 
517 
518  // ***** tt->enubenub *****
519  if ( ngenlep==2 && ngenel==2 && nelaccept==2){
520 
521 
522  // Efficiencies wrt mc+offline
523  if (offline_diel){
524 
525  eta_off_diel1->Fill(electron1.eta());
526  eta_off_diel2->Fill(electron2.eta());
527  pt_off_diel1->Fill(electron1.pt());
528  pt_off_diel2->Fill(electron2.pt());
529 
530  for (int k=0;k<n_hlt_bits_eg;k++) {
531 
532  if (wtrig_eg[k]==1) {
533 
534  h_ptel1_trig_diel[k]->Fill(electron1.pt());
535  h_etael1_trig_diel[k]->Fill(electron1.eta());
536  }
537  }
538 
539  }
540  }
541 
542 
543  // ***** tt->enubmunub
544  if ( ngenlep==2 && ngenel==1 && ngenmu==1 && nmuaccept==1 && nelaccept==1){ // tt->e mu events passing acceptance
545 
546 
547  // Efficiencies wrt mc+offline
548  if (offline_emu){
549 
550  eta_off_emu_muon->Fill(muon1.eta());
551  pt_off_emu_muon->Fill(muon1.pt());
552  eta_off_emu_electron->Fill(electron1.eta());
553  pt_off_emu_electron->Fill(electron1.pt());
554 
555  for (int i=0;i<n_hlt_bits;i++) {
556 
557  if (wtrig_[i]==1) {
558 
559  h_ptel1_trig_em[i]->Fill(electron1.pt());
560  h_etael1_trig_em[i]->Fill(electron1.eta());
561  h_ptmu1_trig_em[i]->Fill(muon1.pt());
562  h_etamu1_trig_em[i]->Fill(muon1.eta());
563  }
564  }
565 
566  }
567  }
568 
569 
571  //}
572 
573 }
574 
575 
576 
577 // ------------ method called once each job just before starting event loop ------------
578 void
580 {
581 
583 
584  //dbe->setCurrentFolder("HLT/Top");
585  //dbe->setCurrentFolder(triggerTag_);
586 
587 
588 
589 
593 
594 
595  dbe->setCurrentFolder(topFolder.str()+"Semileptonic_muon");
596 
597  hlt_bitmu_hist_reco = dbe->book1D("muHLT","muHLT",hlt_bitnamesMu.size(),0.5,hlt_bitnamesMu.size()+0.5);
598  h_mu_reco = dbe->book1D("MuonEvents","MuonEvents",hlt_bitnamesMu.size(),0.5,hlt_bitnamesMu.size()+0.5);
599 
600  hlt_bitmu_hist_gen = dbe->book1D("genmuHLT","genmuHLT",hlt_bitnamesMu.size(),0.5,hlt_bitnamesMu.size()+0.5);
601  h_mu_gen = dbe->book1D("genMuonEvents","genMuonEvents",hlt_bitnamesMu.size(),0.5,hlt_bitnamesMu.size()+0.5);
602 
603  events_acc_off_muon = dbe->book1D("NEvents_acc_off","NEvents_acc_off",4,0.5,4.5);
604  events_acc_off_muon -> setBinLabel(1,"Total Events");
605  events_acc_off_muon -> setBinLabel(2,"Gen semimuon");
606  events_acc_off_muon -> setBinLabel(3,"Acceptance");
607  events_acc_off_muon -> setBinLabel(4,"Acceptance+offline");
608 
609 
610  dbe->setCurrentFolder(topFolder.str()+"Semileptonic_electron");
611 
612  hlt_bitel_hist_reco = dbe->book1D("elHLT","elHLT",hlt_bitnamesEg.size(),0.5,hlt_bitnamesEg.size()+0.5);
613  h_el_reco = dbe->book1D("ElectronEvents","ElectronEvents",hlt_bitnamesEg.size(),0.5,hlt_bitnamesEg.size()+0.5);
614 
615 
616  hlt_bitel_hist_gen = dbe->book1D("genelHLT","genelHLT",hlt_bitnamesEg.size(),0.5,hlt_bitnamesEg.size()+0.5);
617  h_el_gen = dbe->book1D("genElectronEvents","genElectronEvents",hlt_bitnamesEg.size(),0.5,hlt_bitnamesEg.size()+0.5);
618 
619 
620  events_acc_off_electron = dbe->book1D("NEvents_acc_off","NEvents_acc_off",4,0.5,4.5);
621  events_acc_off_electron -> setBinLabel(1,"Total Events");
622  events_acc_off_electron -> setBinLabel(2,"Gen semielectron");
623  events_acc_off_electron -> setBinLabel(3,"Acceptance");
624  events_acc_off_electron -> setBinLabel(4,"Acceptance+offline");
625 
626 
627  dbe->setCurrentFolder(topFolder.str()+"Jets");
628 
629  h_jet_reco = dbe->book1D("denom","denom",hlt_bitnamesJet.size(),0.5,hlt_bitnamesJet.size()+0.5);
630  hlt_bitjet_hist_reco = dbe->book1D("numer","numer",hlt_bitnamesJet.size(),0.5,hlt_bitnamesJet.size()+0.5);
631 
632  h_jet_reco_el = dbe->book1D("denom_el","denom_el",hlt_bitnamesJet.size(),0.5,hlt_bitnamesJet.size()+0.5);
633  hlt_bitjet_hist_reco_el = dbe->book1D("numer_el","numer_el",hlt_bitnamesJet.size(),0.5,hlt_bitnamesJet.size()+0.5);
634 
636  h_jet_gen = dbe->book1D("denom_gen","denom_gen",hlt_bitnamesJet.size(),0.5,hlt_bitnamesJet.size()+0.5);
637  hlt_bitjet_hist_gen = dbe->book1D("numer_gen","numer_gen",hlt_bitnamesJet.size(),0.5,hlt_bitnamesJet.size()+0.5);
638 
639  h_jet_gen_el = dbe->book1D("denom_el_gen","denom_el_gen",hlt_bitnamesJet.size(),0.5,hlt_bitnamesJet.size()+0.5);
640  hlt_bitjet_hist_gen_el = dbe->book1D("numer_el_gen","numer_el_gen",hlt_bitnamesJet.size(),0.5,hlt_bitnamesJet.size()+0.5);
641 
642 
644  /* et_off_jet_mu = dbe->book1D ("Jet1Et_M","Jet1Et_M",51,0.0,150.0);
645  et_off_jet_el = dbe->book1D ("Jet1Et_E","Jet1Et_E",51,0.0,150.0);
646  eta_off_jet_mu = dbe->book1D ("Jet1Eta_M","Jet1Eta_M",51,-2.5,2.5);
647  eta_off_jet_el = dbe->book1D ("Jet1Eta_E","Jet1Eta_E",51,-2.5,2.5);
648  njets_off_mu = dbe->book1D ("NJets_M","NJets_M",11,-0.5,10.5);
649  njets_off_el = dbe->book1D ("NJets_E","NJets_E",11,-0.5,10.5);
650 
651 
652 
653 
654  for (size_t j=0;j<hlt_bitnamesJet.size();j++) {
655 
656  string histname_etjet = "Jet1Et_M_"+hlt_bitnamesJet[j];
657  string histname_etajet = "Jet1Eta_M_"+hlt_bitnamesJet[j];
658  string histname_etjet_el = "Jet1Et_E_"+hlt_bitnamesJet[j];
659  string histname_etajet_el = "Jet1Eta_E_"+hlt_bitnamesJet[j];
660  hlt_bitjet_hist_reco -> setBinLabel(j+1,hlt_bitnamesJet[j].c_str());
661  h_jet_reco -> setBinLabel(j+1,hlt_bitnamesJet[j].c_str());
662  h_jet_reco_el -> setBinLabel(j+1,hlt_bitnamesJet[j].c_str());
663  h_etjet1_trig_mu[j] = dbe->book1D((histname_etjet).c_str(),(hlt_bitnamesJet[j]+"jetEt_M").c_str(),51,0.0,150.);
664  h_etjet1_trig_el[j] = dbe->book1D((histname_etjet_el).c_str(),(hlt_bitnamesJet[j]+"jetEt_E").c_str(),51,0.0,150.);
665  h_etajet1_trig_mu[j] = dbe->book1D((histname_etajet).c_str(),(hlt_bitnamesJet[j]+"jetEta_M").c_str(),51,-2.5,2.5);
666  h_etajet1_trig_el[j] = dbe->book1D((histname_etajet_el).c_str(),(hlt_bitnamesJet[j]+"jetEta_E").c_str(),51,-2.5,2.5);
667 
668 
669  }
670  */
671 
672 
673 
674  dbe->setCurrentFolder(topFolder.str()+"Dileptonic_emu");
675 
676 
677  for (size_t j=0;j<hlt_bitnames.size();j++) {
678  std::string histname_ptmu_em = "Muon1Pt_EM_"+hlt_bitnames[j];
679  std::string histname_etamu_em = "Muon1Eta_EM_"+hlt_bitnames[j];
680  std::string histname_ptel_em = "Electron1Pt_EM_"+hlt_bitnames[j];
681  std::string histname_etael_em = "Electron1Eta_EM_"+hlt_bitnames[j];
682 
683  h_ptmu1_trig_em[j] = dbe->book1D((histname_ptmu_em).c_str(),(hlt_bitnames[j]+"_muonPt_EM").c_str(),40,0.0,150.);
684  h_etamu1_trig_em[j] = dbe->book1D((histname_etamu_em).c_str(),(hlt_bitnames[j]+"_muonEta_EM").c_str(),51,-2.5,2.5);
685 
686  h_ptel1_trig_em[j] = dbe->book1D((histname_ptel_em).c_str(),(hlt_bitnames[j]+"_electronPt_EM").c_str(),40,0.0,150.);
687  h_etael1_trig_em[j] = dbe->book1D((histname_etael_em).c_str(),(hlt_bitnames[j]+"_electronEta_EM").c_str(),51,-2.5,2.5);
688 
689  }
690 
691 
692 
693 
694  for (size_t jj=0;jj<hlt_bitnamesMu.size();jj++) {
695  std::string histname_ptmu = "Muon1Pt_M_"+hlt_bitnamesMu[jj];
696  std::string histname_etamu = "Muon1Eta_M_"+hlt_bitnamesMu[jj];
697  std::string histname_ptmu_dimu = "Muon1Pt_MM_"+hlt_bitnamesMu[jj];
698  std::string histname_etamu_dimu = "Muon1Eta_MM_"+hlt_bitnamesMu[jj];
699 
700  dbe->setCurrentFolder(topFolder.str()+"Semileptonic_muon");
701  h_ptmu1_trig[jj] = dbe->book1D((histname_ptmu).c_str(),(hlt_bitnamesMu[jj]+"muonPt_M").c_str(),40,0.0,150.);
702  h_etamu1_trig[jj] = dbe->book1D((histname_etamu).c_str(),(hlt_bitnamesMu[jj]+"muonEta_M").c_str(),51,-2.5,2.5);
703 
704  hlt_bitmu_hist_reco -> setBinLabel(jj+1,hlt_bitnamesMu[jj].c_str());
705  h_mu_reco -> setBinLabel(jj+1,hlt_bitnamesMu[jj].c_str());
706 
707  hlt_bitmu_hist_gen -> setBinLabel(jj+1,hlt_bitnamesMu[jj].c_str());
708  h_mu_gen -> setBinLabel(jj+1,hlt_bitnamesMu[jj].c_str());
709 
710  dbe->setCurrentFolder(topFolder.str()+"Dileptonic_muon");
711  h_ptmu1_trig_dimu[jj] = dbe->book1D((histname_ptmu_dimu).c_str(),(hlt_bitnamesMu[jj]+"muon1Pt_MM").c_str(),40,0.0,150.);
712  h_etamu1_trig_dimu[jj] = dbe->book1D((histname_etamu_dimu).c_str(),(hlt_bitnamesMu[jj]+"muon1Pt_MM").c_str(),51,-2.5,2.5);
713 
714 
715 
716 
717  }
718 
719 
720 
721 
722 
723 
724  for (size_t k=0;k<hlt_bitnamesEg.size();k++) {
725 
726 
727  std::string histname_ptel = "Electron1Pt_E_"+hlt_bitnamesEg[k];
728  std::string histname_etael = "Electron1Eta_E_"+hlt_bitnamesEg[k];
729  std::string histname_ptel_diel = "Electron1Pt_EE_"+hlt_bitnamesEg[k];
730  std::string histname_etael_diel = "Electron1Eta_EE_"+hlt_bitnamesEg[k];
731 
732 
733  dbe->setCurrentFolder(topFolder.str()+"Semileptonic_electron");
734 
735  h_ptel1_trig[k] = dbe->book1D((histname_ptel).c_str(),(hlt_bitnamesEg[k]+"electronPt_E").c_str(),40,0.0,150.);
736  h_etael1_trig[k] = dbe->book1D((histname_etael).c_str(),(hlt_bitnamesEg[k]+"electronEta_E").c_str(),51,-2.5,2.5);
737 
738  hlt_bitel_hist_reco -> setBinLabel(k+1,hlt_bitnamesEg[k].c_str());
739  h_el_reco -> setBinLabel(k+1,hlt_bitnamesEg[k].c_str());
740 
741  hlt_bitel_hist_gen -> setBinLabel(k+1,hlt_bitnamesEg[k].c_str());
742  h_el_gen -> setBinLabel(k+1,hlt_bitnamesEg[k].c_str());
743 
744 
745  dbe->setCurrentFolder(topFolder.str()+"Dileptonic_electron");
746  h_ptel1_trig_diel[k] = dbe->book1D((histname_ptel_diel).c_str(),(hlt_bitnamesEg[k]+"electron1Pt_EE").c_str(),40,0.0,150.);
747  h_etael1_trig_diel[k] = dbe->book1D((histname_etael_diel).c_str(),(hlt_bitnamesEg[k]+"electron1Eta_EE").c_str(),51,-2.5,2.5);
748 
749 
750 
751 
752 
753  }
754 
755 
756 
760 
761 
762  // 4 jets+1mu eff monitoring
763 
764  dbe->setCurrentFolder(topFolder.str()+"4JetsPlus1MuonToCompareWithData");
765 
766  ptmuon_4jet1muSel = dbe->book1D ("Muon1Pt_4Jets1MuonMon", "Muon1Pt_4Jets1MuonMon",40, 0.0,150.0);
767  etamuon_4jet1muSel = dbe->book1D ("Muon1Eta_4Jets1MuonMon","Muon1Eta_4Jets1MuonMon",51, -2.5,2.5);
768  Njets_4jet1muSel = dbe->book1D ("NJets_4Jets1MuonMon", "NJets_4Jets1MuonMon",11, -0.5,10.5);
769 
770  ptmuon_4jet1muSel_hltmu9 = dbe->book1D ("Muon1Pt_4Jets1MuonHLTMu9Mon", "Muon1Pt_4Jets1MuonHLTMu9Mon",40, 0.0,150.0);
771  etamuon_4jet1muSel_hltmu9 = dbe->book1D ("Muon1Eta_4Jets1MuonHLTMu9Mon","Muon1Eta_4Jets1MuonHLTMu9Mon",51, -2.5,2.5);
772  Njets_4jet1muSel_hltmu9 = dbe->book1D ("NJets_4Jets1MuonHLTMu9Mon", "NJets_4Jets1MuonHLTMu9Mon",11, -0.5,10.5);
773 
774 
775 
776  //semimu events
777  dbe->setCurrentFolder(topFolder.str()+"Semileptonic_muon");
778 
779 
780 
781  eta_off_mu = dbe->book1D ("Muon1Eta_M","Muon1Eta_M",51,-2.5,2.5);
782  pt_off_mu = dbe->book1D ("Muon1Pt_M","Muon1Pt_M",40,0.0,150.0);
783 
784 
785  //semiel events
786  dbe->setCurrentFolder(topFolder.str()+"Semileptonic_electron");
787 
788  eta_off_el = dbe->book1D ("Electron1Eta_E","Electron1Eta_E",51,-2.5,2.5);
789  pt_off_el = dbe->book1D ("Electron1Pt_E","Electron1Pt_E",40,0.0,150.0);
790 
791 
792 
793  //dimu events
794  dbe->setCurrentFolder(topFolder.str()+"Dileptonic_muon");
795 
796 
797  eta_off_dimu1 = dbe->book1D ("Muon1Eta_MM","Muon1Eta_MM",51,-2.5,2.5);
798  pt_off_dimu1 = dbe->book1D ("Muon1Pt_MM","Muon1Pt_MM",40,0.0,150.0);
799  eta_off_dimu2 = dbe->book1D ("Muon2Eta_MM","Muon2Eta_MM",51,-2.5,2.5);
800  pt_off_dimu2 = dbe->book1D ("Muon2Pt_MM","Muon2Pt_MM",40,0.0,150.0);
801 
802 
803 
804  //diel events
805  dbe->setCurrentFolder(topFolder.str()+"Dileptonic_electron");
806 
807 
808  eta_off_diel1 = dbe->book1D ("Electron1Eta_EE","Electron1Eta_EE",51,-2.5,2.5);
809  pt_off_diel1 = dbe->book1D ("Electron1Pt_EE","Electron1Pt_EE",40,0.0,150.0);
810  eta_off_diel2 = dbe->book1D ("Electron2Eta_EE","Electron2Eta_EE",51,-2.5,2.5);
811  pt_off_diel2 = dbe->book1D ("Electron2Pt_EE","Electron2Pt_EE",40,0.0,150.0);
812 
813 
814  //emu events
815  dbe->setCurrentFolder(topFolder.str()+"Dileptonic_emu");
816 
817 
818 
819  eta_off_emu_muon = dbe->book1D ("Muon1Eta_EM","Muon1Eta_EM",51,-2.5,2.5);
820  pt_off_emu_muon = dbe->book1D ("Muon1Pt_EM","Muon1Pt_EM",40,0.0,150.0);
821 
822  eta_off_emu_electron = dbe->book1D ("Electron1Eta_EM","Electron1Eta_EM",51,-2.5,2.5);
823  pt_off_emu_electron = dbe->book1D ("Electron1Pt_EM","Electron1Pt_EM",40,0.0,150.0);
824 
825 
826 
827 
828  return ;
829 
830 
831 }
832 
833 // ------------ method called once each job just after ending the event loop ------------
834 void
836 //Write DQM thing..
837  // outFile_ = "prueba";
838  //if(outFile_.size()>0)
839 
840 
841  // if (&*edm::Service<DQMStore>()) edm::Service<DQMStore>()->save (outFile_);
845  }
846 
847 
848 
849 
850 
851  return ;
852 }
853 
854 //define this as a plug-in
#define LogDebug(id)
MonitorElement * etamuon_4jet1muSel_hltmu9
T getParameter(std::string const &) const
MonitorElement * pt_off_dimu1
int i
Definition: DBlmapReader.cc:9
virtual edm::TriggerNames const & triggerNames(edm::TriggerResults const &triggerResults) const
Definition: Event.cc:208
MonitorElement * eta_off_emu_muon
MonitorElement * h_etamu1_trig[100]
MonitorElement * ptmuon_4jet1muSel_hltmu9
MonitorElement * h_mu_gen
MonitorElement * events_acc_off_muon
MonitorElement * eta_off_mu
MonitorElement * h_etael1_trig_em[100]
MonitorElement * hlt_bitel_hist_reco
MonitorElement * book1D(const char *name, const char *title, int nchX, double lowX, double highX)
Book 1D histogram.
Definition: DQMStore.cc:519
MonitorElement * eta_off_dimu2
MonitorElement * h_ptmu1_trig_em[100]
virtual double pt() const =0
transverse momentum
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:17
TopValidation(const edm::ParameterSet &)
std::string FolderName_
virtual int status() const =0
status word
MonitorElement * hlt_bitel_hist_gen
void save(const std::string &filename, const std::string &path="", const std::string &pattern="", const std::string &rewrite="", SaveReferenceTag ref=SaveWithReference, int minStatus=dqm::qstatus::STATUS_OK, const std::string &fileupdate="RECREATE")
Definition: DQMStore.cc:1883
MonitorElement * hlt_bitmu_hist_gen
#define abs(x)
Definition: mlp_lapack.h:159
MonitorElement * hlt_bitjet_hist_reco_el
MonitorElement * eta_off_emu_electron
MonitorElement * pt_off_diel1
std::vector< std::string > hlt_bitnamesMu
MonitorElement * pt_off_mu
MonitorElement * h_etael1_trig_diel[100]
T eta() const
std::string encode() const
Definition: InputTag.cc:72
MonitorElement * pt_off_emu_electron
MonitorElement * h_etamu1_trig_dimu[100]
return((rh^lh)&mask)
std::vector< std::string > hlt_bitnames
void Fill(long long x)
MonitorElement * pt_off_emu_muon
MonitorElement * eta_off_dimu1
std::vector< std::string > hlt_bitnamesJet
MonitorElement * hlt_bitmu_hist_reco
int iEvent
Definition: GenABIO.cc:243
MonitorElement * h_mu_reco
MonitorElement * eta_off_diel2
MonitorElement * ptmuon_4jet1muSel
MonitorElement * etamuon_4jet1muSel
int j
Definition: DBlmapReader.cc:9
MonitorElement * Njets_4jet1muSel
std::string outputFileName
MonitorElement * h_ptel1_trig[100]
MonitorElement * h_ptmu1_trig_dimu[100]
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:359
MonitorElement * pt_off_diel2
MonitorElement * h_jet_gen
MonitorElement * h_etael1_trig[100]
int k[5][pyjets_maxn]
virtual int pdgId() const =0
PDG identifier.
DQMStore * dbe
virtual void analyze(const edm::Event &, const edm::EventSetup &)
MonitorElement * h_jet_reco
bool outputMEsInRootFile
tuple tracks
Definition: testEve_cfg.py:39
MonitorElement * h_jet_reco_el
MonitorElement * hlt_bitjet_hist_reco
MonitorElement * h_el_gen
MonitorElement * Njets_4jet1muSel_hltmu9
virtual void endJob()
MonitorElement * h_ptmu1_trig[100]
std::vector< std::string > hlt_bitnamesEg
edm::InputTag inputTag_
MonitorElement * pt_off_dimu2
virtual void beginJob()
MonitorElement * events_acc_off_electron
MonitorElement * eta_off_diel1
MonitorElement * h_ptel1_trig_em[100]
void showDirStructure(void) const
Definition: DQMStore.cc:2539
MonitorElement * h_jet_gen_el
MonitorElement * h_ptel1_trig_diel[100]
MonitorElement * h_etamu1_trig_em[100]
MonitorElement * pt_off_el
MonitorElement * hlt_bitjet_hist_gen_el
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:237
MonitorElement * h_el_reco
MonitorElement * hlt_bitjet_hist_gen
std::vector< CaloJet > CaloJetCollection
collection of CaloJet objects
virtual double eta() const =0
momentum pseudorapidity
MonitorElement * eta_off_el
std::stringstream topFolder