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