10 namespace TopDiLeptonOffline {
13 label_(label), eidPattern_(0), elecIso_(0), elecSelect_(0), muonIso_(0), muonSelect_(0), jetIDSelect_(0),
14 lowerEdge_(-1.), upperEdge_(-1.), elecMuLogged_(0), diMuonLogged_(0), diElecLogged_(0)
21 mets_ = sources.
getParameter<std::vector<edm::InputTag> >(
"mets" );
28 if( elecExtras.
existsAs<std::string>(
"select") ){
33 if( elecExtras.
existsAs<std::string>(
"isolation") ){
49 if( muonExtras.
existsAs<std::string>(
"select") ){
54 if( muonExtras.
existsAs<std::string>(
"isolation") ){
63 if( jetExtras.
existsAs<std::string>(
"jetCorrector") ){
64 jetCorrector_= jetExtras.
getParameter<std::string>(
"jetCorrector");
75 if( jetExtras.
existsAs<std::string>(
"select") ){
76 jetSelect_= jetExtras.
getParameter<std::string>(
"select");
83 elecMuPaths_ =triggerExtras.
getParameter<std::vector<std::string> >(
"pathsELECMU");
84 diMuonPaths_ =triggerExtras.
getParameter<std::vector<std::string> >(
"pathsDIMUON");
91 lowerEdge_= massExtras.
getParameter<
double>(
"lowerEdge");
92 upperEdge_= massExtras.
getParameter<
double>(
"upperEdge");
102 if(monitoring.
getParameter<std::string>(
"verbosity") ==
"DEBUG" )
104 if(monitoring.
getParameter<std::string>(
"verbosity") ==
"VERBOSE" )
106 if(monitoring.
getParameter<std::string>(
"verbosity") ==
"STANDARD")
107 verbosity_= STANDARD;
114 MonitorEnsemble::book(std::string
directory)
119 store_->setCurrentFolder(
current);
122 unsigned int nElecMu=elecMuPaths_.size();
123 unsigned int nDiMuon=diMuonPaths_.size();
127 hists_[
"RunNumb_" ] = store_->book1D(
"RunNumber" ,
"Run Nr." , 1.e4, 1.5e5, 3.e5);
129 hists_[
"invMass_" ] = store_->book1D(
"InvMass" ,
"M(lep1, lep2)" , 80, 0., 320.);
131 hists_[
"invMassLog_" ] = store_->book1D(
"InvMassLog" ,
"log_{10}(M(lep1, lep2))" , 80, .1, 2.5);
133 hists_[
"invMassWC_" ] = store_->book1D(
"InvMassWC" ,
"M_{WC}(L1, L2)" , 80, 0., 320.);
135 hists_[
"invMassWCLog_"] = store_->book1D(
"InvMassLogWC",
"log_{10}(M_{WC})" , 80, .1, 2.5);
137 hists_[
"decayChannel_"] = store_->book1D(
"DecayChannel",
"Decay Channel" , 3, 0, 3);
139 hists_[
"elecMuEff_" ] = store_->book1D(
"ElecMuEff" ,
"Eff(e/#mu paths)" , nElecMu, 0., nElecMu);
141 hists_[
"elecMuMon_" ] = store_->book1D(
"ElecMuMon" ,
"Mon(e/#mu paths)" , nElecMu, 0., nElecMu);
143 hists_[
"diMuonEff_" ] = store_->book1D(
"DiMuonEff" ,
"Eff(#mu/#mu paths)" , nDiMuon, 0., nDiMuon);
145 hists_[
"diMuonMon_" ] = store_->book1D(
"DiMuonMon" ,
"Mon(#mu/#mu paths)" , nDiMuon, 0., nDiMuon);
147 hists_[
"lep1Pt_" ] = store_->book1D(
"Lep1Pt" ,
"pt(lep1)" , 50, 0., 200.);
149 hists_[
"lep2Pt_" ] = store_->book1D(
"Lep2Pt" ,
"pt(lep2)" , 50, 0., 200.);
151 hists_[
"jetMult_" ] = store_->book1D(
"JetMult" ,
"N_{30}(jet)" , 21, -0.5, 20.5);
153 hists_[
"metCalo_" ] = store_->book1D(
"METCalo" ,
"MET_{Calo}" , 50, 0., 200.);
156 triggerBinLabels(std::string(
"elecMu"), elecMuPaths_);
157 triggerBinLabels(std::string(
"diMuon"), diMuonPaths_);
159 hists_[
"decayChannel_"]->setBinLabel( 1,
"#mu e" , 1);
160 hists_[
"decayChannel_"]->setBinLabel( 2,
"#mu #mu", 1);
161 hists_[
"decayChannel_"]->setBinLabel( 3,
"e e" , 1);
163 if( verbosity_==STANDARD)
return;
167 hists_[
"sumEtaL1L2_" ] = store_->book1D(
"SumEtaL1L2" ,
"<#eta>(lep1, lep2)" , 100, -5., 5.);
169 hists_[
"dEtaL1L2_" ] = store_->book1D(
"DEtaL1L2" ,
"#Delta#eta(lep1,lep2)" , 80, -4., 4.);
171 hists_[
"dPhiL1L2_" ] = store_->book1D(
"DPhiL1L2" ,
"#Delta#phi(lep1,lep2)" , 64, -3.2, 3.2);
173 hists_[
"elecPt_" ] = store_->book1D(
"ElecPt" ,
"pt(e)" , 50, 0., 200.);
175 hists_[
"elecRelIso_" ] = store_->book1D(
"ElecRelIso" ,
"Iso_{Rel}(e)" , 50, 0., 1.);
177 hists_[
"muonPt_" ] = store_->book1D(
"MuonPt" ,
"pt(#mu)" , 50, 0., 200.);
179 hists_[
"muonRelIso_" ] = store_->book1D(
"MuonRelIso" ,
"Iso_{Rel}(#mu)" , 50, 0., 1.);
181 hists_[
"jet1Pt_" ] = store_->book1D(
"Jet1Pt" ,
"pt_{L2L3}(jet1)" , 60, 0., 300.);
183 hists_[
"jet2Pt_" ] = store_->book1D(
"Jet2Pt" ,
"pt_{L2L3}(jet2)" , 60, 0., 300.);
185 hists_[
"metPflow_" ] = store_->book1D(
"METPflow" ,
"MET_{Pflow}" , 50, 0., 200.);
187 hists_[
"metTC_" ] = store_->book1D(
"METTC" ,
"MET_{TC}" , 50, 0., 200.);
189 hists_[
"muonDelZ_" ] = store_->book1D(
"MuonDelZ" ,
"d_{z}(#mu)" , 50, -25., 25.);
191 hists_[
"muonDelXY_" ] = store_->book2D(
"MuonDelXY" ,
"d_{xy}(#mu)" , 50, -1., 1., 50, -1., 1.);
193 hists_[
"lepMultIso_" ] = store_->book2D(
"LepMultIso" ,
"N_{Iso}(e) vs N_{Iso}(#mu)" , 5, 0., 5., 5, 0., 5.);
196 hists_[
"muonDelXY_" ]->setAxisTitle(
"x [cm]", 1); hists_[
"muonDelXY_" ]->setAxisTitle(
"y [cm]", 2);
198 hists_[
"lepMultIso_" ]->setAxisTitle(
"N_{Iso}(#mu)", 1); hists_[
"lepMultIso_" ]->setAxisTitle(
"N_{Iso}(elec)", 2);
200 if( verbosity_==VERBOSE)
return;
204 hists_[
"elecMultIso_" ] = store_->book1D(
"ElecMultIso" ,
"N_{Iso}(e)" , 11, -0.5, 10.5);
206 hists_[
"muonMultIso_" ] = store_->book1D(
"MuonMultIso" ,
"N_{Iso}(#mu)" , 11, -0.5, 10.5);
208 hists_[
"muonCalIso_" ] = store_->book1D(
"MuonCalIso" ,
"Iso_{Cal}(#mu)" , 50, 0., 1.);
210 hists_[
"muonTrkIso_" ] = store_->book1D(
"MuonTrkIso" ,
"Iso_{Trk}(#mu)" , 50, 0., 1.);
212 hists_[
"elecCalIso_" ] = store_->book1D(
"ElecCalIso" ,
"Iso_{Cal}(e)" , 50, 0., 1.);
214 hists_[
"elecTrkIso_" ] = store_->book1D(
"ElecTrkIso" ,
"Iso_{Trk}(e)" , 50, 0., 1.);
216 hists_[
"jet1Eta_" ] = store_->book1D(
"Jet1Eta" ,
"#eta(jet1)" , 30, -5., 5.);
218 hists_[
"jet2Eta_" ] = store_->book1D(
"Jet2Eta" ,
"#eta(jet2)" , 30, -5., 5.);
220 hists_[
"jet1PtRaw_" ] = store_->book1D(
"Jet1PtRaw" ,
"pt_{Raw}(jet1)" , 60, 0., 300.);
222 hists_[
"jet2PtRaw_" ] = store_->book1D(
"Jet2PtRaw" ,
"pt_{Raw}(jet2)" , 60, 0., 300.);
224 hists_[
"dEtaJet1Jet2_"] = store_->book1D(
"DEtaJet1Jet2",
"#Delta#eta(jet1,jet2)" , 80, -4., 4.);
226 hists_[
"dEtaJet1Lep1_"] = store_->book1D(
"DEtaJet1Lep1",
"#Delta#eta(jet1,lep1)" , 80, -4., 4.);
228 hists_[
"dEtaLep1MET_" ] = store_->book1D(
"DEtaLep1MET" ,
"#Delta#eta(lep1,MET)" , 80, -4., 4.);
230 hists_[
"dEtaJet1MET_" ] = store_->book1D(
"DEtaJet1MET" ,
"#Delta#eta(jet1,MET)" , 80, -4., 4.);
232 hists_[
"dPhiJet1Jet2_"] = store_->book1D(
"DPhiJet1Jet2",
"#Delta#phi(jet1,jet2)" , 64, -3.2, 3.2);
234 hists_[
"dPhiJet1Lep1_"] = store_->book1D(
"DPhiJet1Lep1",
"#Delta#phi(jet1,lep1)" , 64, -3.2, 3.2);
236 hists_[
"dPhiLep1MET_" ] = store_->book1D(
"DPhiLep1MET" ,
"#Delta#phi(lep1,MET)" , 64, -3.2, 3.2);
238 hists_[
"dPhiJet1MET_" ] = store_->book1D(
"DPhiJet1MET" ,
"#Delta#phi(jet1,MET)" , 64, -3.2, 3.2);
240 hists_[
"diMuonLogger_"] = store_->book2D(
"DiMuonLogger",
"Logged DiMuon Events" , 8, 0., 8., 10, 0., 10.);
242 hists_[
"diElecLogger_"] = store_->book2D(
"DiElecLogger",
"Logged DiElec Events" , 8, 0., 8., 10, 0., 10.);
244 hists_[
"elecMuLogger_"] = store_->book2D(
"ElecMuLogger",
"Logged ElecMu Events" , 8, 0., 8., 10, 0., 10.);
247 loggerBinLabels(std::string(
"diMuonLogger_"));
248 loggerBinLabels(std::string(
"diElecLogger_"));
249 loggerBinLabels(std::string(
"elecMuLogger_"));
258 if(!triggerTable_.label().empty()) {
259 if( !event.
getByLabel(triggerTable_, triggerTable) )
return;
273 double dummy=5.;
fill(
"InstLumi_", dummy);
285 std::vector<const reco::Muon*> isoMuons;
288 if( !event.
getByLabel(muons_, muons) )
return;
292 if(
muon->isGlobalMuon() ){
293 fill(
"muonDelZ_" ,
muon->globalTrack()->vz());
294 fill(
"muonDelXY_",
muon->globalTrack()->vx(),
muon->globalTrack()->vy());
296 if(!muonSelect_ || (*muonSelect_)(*muon)){
297 double isolationTrk =
muon->pt()/(
muon->pt()+
muon->isolationR03().sumPt);
298 double isolationCal =
muon->pt()/(
muon->pt()+
muon->isolationR03().emEt+
muon->isolationR03().hadEt);
299 double isolationRel = (
muon->isolationR03().sumPt+
muon->isolationR03().emEt+
muon->isolationR03().hadEt)/
muon->pt();
300 fill(
"muonTrkIso_" , isolationTrk);
fill(
"muonCalIso_" , isolationCal);
fill(
"muonRelIso_" , isolationRel);
301 if(!muonIso_ || (*muonIso_)(*
muon)) isoMuons.push_back(&(*
muon));
305 fill(
"muonMultIso_", isoMuons.size());
316 std::vector<const reco::GsfElectron*> isoElecs;
318 if(!electronId_.label().empty()) {
319 if( !event.
getByLabel(electronId_, electronId) )
return;
323 if( !event.
getByLabel(elecs_, elecs) )
return;
327 int idx = elec-elecs->begin();
328 if( electronId_.label().empty() ?
true : ((int)(*electronId)[elecs->refAt(idx)] & eidPattern_) ){
330 if(!elecSelect_ || (*elecSelect_)(*elec)){
331 double isolationTrk = elec->pt()/(elec->pt()+elec->dr03TkSumPt());
332 double isolationCal = elec->pt()/(elec->pt()+elec->dr03EcalRecHitSumEt()+elec->dr03HcalTowerSumEt());
333 double isolationRel = (elec->dr03TkSumPt()+elec->dr03EcalRecHitSumEt()+elec->dr03HcalTowerSumEt())/elec->pt();
334 fill(
"elecTrkIso_" , isolationTrk);
fill(
"elecCalIso_" , isolationCal);
fill(
"elecRelIso_" , isolationRel);
335 if(!elecIso_ || (*elecIso_)(*elec)) isoElecs.push_back(&(*elec));
339 fill(
"elecMultIso_", isoElecs.size());
350 if(!jetCorrector_.empty()){
352 if(setup.
find( edm::eventsetup::EventSetupRecordKey::makeKey<JetCorrectionsRecord>() )){
358 <<
"------------------------------------------------------------------------------------- \n"
359 <<
" No JetCorrectionsRecord available from EventSetup: \n"
360 <<
" - Jets will not be corrected. \n"
361 <<
" - If you want to change this add the following lines to your cfg file: \n"
363 <<
" ## load jet corrections \n"
364 <<
" process.load(\"JetMETCorrections.Configuration.JetCorrectionServicesAllAlgos_cff\") \n"
365 <<
" process.prefer(\"ak5CaloL2L3\") \n"
367 <<
"------------------------------------------------------------------------------------- \n";
373 std::vector<reco::Jet> leadingJets;
379 if( !event.
getByLabel(jetIDLabel_, jetID) )
return;
383 unsigned int idx=
jet-jets->begin();
384 if( jetIDSelect_ && dynamic_cast<const reco::CaloJet*>(jets->refAt(idx).get())){
385 if(!(*jetIDSelect_)((*jetID)[jets->refAt(idx)]))
continue;
388 if(dynamic_cast<const reco::CaloJet*>(&*
jet)){
392 else if(dynamic_cast<const reco::PFJet*>(&*
jet)){
402 for(std::vector<const reco::GsfElectron*>::const_iterator elec=isoElecs.begin(); elec!=isoElecs.end(); ++elec){
403 if(
reco::deltaR((*elec)->eta(), (*elec)->phi(),
jet->eta(),
jet->phi())<0.4){overlap=
true;
break;}
404 }
if(overlap){
continue;}
409 leadingJets.push_back(monitorJet);
410 fill(
"jet1Pt_" , monitorJet.
pt());
411 fill(
"jet1PtRaw_" ,
jet->pt() );
415 leadingJets.push_back(monitorJet);
416 fill(
"jet2Pt_" , monitorJet.
pt());
417 fill(
"jet2PtRaw_" ,
jet->pt() );
421 if(leadingJets.size()>1){
422 fill(
"dEtaJet1Jet2_" , leadingJets[0].
eta()-leadingJets[1].
eta());
424 if( !isoMuons.empty() ){
425 if( isoElecs.empty() || isoMuons[0]->pt()>isoElecs[0]->pt() ){
426 fill(
"dEtaJet1Lep1_" , isoMuons[0]->
eta()-leadingJets[0].
eta());
430 if( !isoElecs.empty() ){
431 if( isoMuons.empty() || isoElecs[0]->pt()>isoMuons[0]->pt() ){
432 fill(
"dEtaJet1Lep1_" , isoElecs[0]->
eta()-leadingJets[0].
eta());
437 fill(
"jetMult_", mult);
449 for(std::vector<edm::InputTag>::const_iterator met_=mets_.begin(); met_!=mets_.end(); ++met_){
454 if(met->begin()!=met->end()){
455 unsigned int idx=met_-mets_.begin();
457 caloMET=*met->begin();
458 fill(
"metCalo_", met->begin()->et());
459 if(!leadingJets.empty()){
460 fill(
"dEtaJet1MET_" , leadingJets[0].
eta()-met->begin()->eta());
463 if( !isoMuons.empty() ){
464 if( isoElecs.empty() || isoMuons[0]->pt()>isoElecs[0]->pt() ){
465 fill(
"dEtaLep1MET_" , isoMuons[0]->
eta()-met->begin()->eta());
469 if( !isoElecs.empty() ){
470 if( isoMuons.empty() || isoElecs[0]->pt()>isoMuons[0]->pt() ){
471 fill(
"dEtaLep1MET_" , isoElecs[0]->
eta()-met->begin()->eta());
476 if(idx==1){
fill(
"metTC_" , met->begin()->et());}
477 if(idx==2){
fill(
"metPflow_", met->begin()->et());}
491 fill(
"lepMultIso_", isoMuons.size(), isoElecs.size());
493 if( decayChannel(isoMuons, isoElecs) == ELECMU ){
494 fill(
"decayChannel_", 0.5);
495 double mass = (isoElecs[0]->p4()+isoMuons[0]->p4()).
mass();
496 if( (lowerEdge_==-1. && upperEdge_==-1.) || (lowerEdge_<mass && mass<upperEdge_) ){
498 fill(
"dEtaL1L2_" , isoElecs[0]->
eta()-isoMuons[0]->
eta());
499 fill(
"sumEtaL1L2_", (isoElecs[0]->
eta()+isoMuons[0]->
eta())/2);
501 fill(
"elecPt_", isoElecs[0]->pt());
fill(
"muonPt_", isoMuons[0]->pt());
502 fill(
"lep1Pt_", isoElecs[0]->pt()>isoMuons[0]->pt() ? isoElecs[0]->pt() : isoMuons[0]->pt());
503 fill(
"lep2Pt_", isoElecs[0]->pt()>isoMuons[0]->pt() ? isoMuons[0]->pt() : isoElecs[0]->pt());
505 if(!triggerTable_.label().empty())
fill(event, *triggerTable,
"elecMu", elecMuPaths_);
506 if(elecMuLogged_<=hists_.find(
"elecMuLogger_")->second->getNbinsY()){
512 fill(
"elecMuLogger_", 3.5, elecMuLogged_+0.5, isoMuons[0]->pt());
513 fill(
"elecMuLogger_", 4.5, elecMuLogged_+0.5, isoElecs[0]->pt());
514 if(leadingJets.size()>0)
fill(
"elecMuLogger_", 5.5, elecMuLogged_+0.5, leadingJets[0].pt());
515 if(leadingJets.size()>1)
fill(
"elecMuLogger_", 6.5, elecMuLogged_+0.5, leadingJets[1].pt());
516 fill(
"elecMuLogger_", 7.5, elecMuLogged_+0.5, caloMET.
et());
523 if( decayChannel(isoMuons, isoElecs) == DIMUON ){
524 fill(
"decayChannel_", 1.5);
525 int charge = isoMuons[0]->charge()*isoMuons[1]->charge();
526 double mass = (isoMuons[0]->p4()+isoMuons[1]->p4()).
mass();
528 fill(charge<0 ?
"invMass_" :
"invMassWC_" , mass );
529 fill(charge<0 ?
"invMassLog_" :
"invMassWCLog_" , log10(mass));
530 if((lowerEdge_==-1. && upperEdge_==-1.) || (lowerEdge_<mass && mass<upperEdge_) ){
531 fill(
"dEtaL1L2_" , isoMuons[0]->
eta()-isoMuons[1]->
eta() );
532 fill(
"sumEtaL1L2_", (isoMuons[0]->
eta()+isoMuons[1]->
eta())/2);
534 fill(
"muonPt_", isoMuons[0]->pt());
fill(
"muonPt_", isoMuons[1]->pt());
535 fill(
"lep1Pt_", isoMuons[0]->pt());
fill(
"lep2Pt_", isoMuons[1]->pt());
537 if(!triggerTable_.label().empty())
fill(event, *triggerTable,
"diMuon", diMuonPaths_);
538 if(diMuonLogged_<=hists_.find(
"diMuonLogger_")->second->getNbinsY()){
544 fill(
"diMuonLogger_", 3.5, diMuonLogged_+0.5, isoMuons[0]->pt());
545 fill(
"diMuonLogger_", 4.5, diMuonLogged_+0.5, isoMuons[1]->pt());
546 if(leadingJets.size()>0)
fill(
"diMuonLogger_", 5.5, diMuonLogged_+0.5, leadingJets[0].pt());
547 if(leadingJets.size()>1)
fill(
"diMuonLogger_", 6.5, diMuonLogged_+0.5, leadingJets[1].pt());
548 fill(
"diMuonLogger_", 7.5, diMuonLogged_+0.5, caloMET.
et());
555 if( decayChannel(isoMuons, isoElecs) == DIELEC ){
556 fill(
"decayChannel_", 2.5);
557 int charge = isoElecs[0]->charge()*isoElecs[1]->charge();
558 double mass = (isoElecs[0]->p4()+isoElecs[1]->p4()).
mass();
559 fill(charge<0 ?
"invMass_" :
"invMassWC_" , mass );
560 fill(charge<0 ?
"invMassLog_" :
"invMassWCLog_" , log10(mass));
561 if((lowerEdge_==-1. && upperEdge_==-1.) || (lowerEdge_<mass && mass<upperEdge_) ){
562 fill(
"dEtaL1L2_" , isoElecs[0]->
eta()-isoElecs[1]->
eta() );
563 fill(
"sumEtaL1L2_", (isoElecs[0]->
eta()+isoElecs[1]->
eta())/2);
565 fill(
"elecPt_", isoElecs[0]->pt());
fill(
"elecPt_", isoElecs[1]->pt());
566 fill(
"lep1Pt_", isoElecs[0]->pt());
fill(
"lep2Pt_", isoElecs[1]->pt());
567 if(diElecLogged_<=hists_.find(
"diElecLogger_")->second->getNbinsY()){
573 fill(
"diElecLogger_", 3.5, diElecLogged_+0.5, isoElecs[0]->pt());
574 fill(
"diElecLogger_", 4.5, diElecLogged_+0.5, isoElecs[1]->pt());
575 if(leadingJets.size()>0)
fill(
"diElecLogger_", 5.5, diElecLogged_+0.5, leadingJets[0].pt());
576 if(leadingJets.size()>1)
fill(
"diElecLogger_", 6.5, diElecLogged_+0.5, leadingJets[1].pt());
577 fill(
"diElecLogger_", 7.5, diElecLogged_+0.5, caloMET.
et());
607 std::vector<edm::ParameterSet> sel=cfg.
getParameter<std::vector<edm::ParameterSet> >(
"selection");
608 for(
unsigned int i=0;
i<sel.size(); ++
i){
625 if(vertex->empty() || !(*vertexSelect_)(vertex->front()))
return;
657 if(step.
select(event, setup)){
661 if(
type==
"jets/pf" ){
663 if(step.
select(event, setup)){
667 if(
type==
"jets/calo" ){
669 if(step.
select(event, setup)){
T getParameter(std::string const &) const
StringCutObjectSelector< reco::BeamSpot > * beamspotSelect_
string cut selector
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
virtual void analyze(const edm::Event &event, const edm::EventSetup &setup)
do this during the event loop
bool existsAs(std::string const ¶meterName, bool trackiness=true) const
checks if a parameter exists as a given type
Jets made from CaloTowers.
bool acceptHLT(const edm::Event &event, const edm::TriggerResults &triggerTable, const std::string &triggerPath)
virtual double et() const
transverse energy
Base class for all types of Jets.
virtual void scaleEnergy(double fScale)
scale energy of the jet
std::string selectionStep(const std::string &label)
Jets made from PFObjects.
std::vector< std::string > selectionOrder_
edm::InputTag triggerTable_
trigger table
std::vector< std::string > triggerPaths_
trigger paths
LuminosityBlockNumber_t luminosityBlock() const
const eventsetup::EventSetupRecord * find(const eventsetup::EventSetupRecordKey &) const
double deltaR(double eta1, double phi1, double eta2, double phi2)
bool overlap(const reco::Muon &muon1, const reco::Muon &muon2, double pullX=1.0, double pullY=1.0, bool checkAdjacentChambers=false)
StringCutObjectSelector< reco::Vertex > * vertexSelect_
string cut selector
std::map< std::string, std::pair< edm::ParameterSet, TopDiLeptonOffline::MonitorEnsemble * > > selection_
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger but the state exists so we define the behavior If all triggers are the negative crieriion will lead to accepting the event(this again matches the behavior of"!*"before the partial wildcard feature was incorporated).The per-event"cost"of each negative criterion with multiple relevant triggers is about the same as!*was in the past
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
bool select(const edm::Event &event)
apply selection
TopHLTDiLeptonOfflineDQM(const edm::ParameterSet &cfg)
default constructor
double deltaPhi(double phi1, double phi2)
EventAuxiliary const & eventAuxiliary() const
edm::InputTag beamspot_
beamspot
virtual double pt() const
transverse momentum
static const JetCorrector * getJetCorrector(const std::string &fName, const edm::EventSetup &fSetup)
retrieve corrector from the event setup. troughs exception if something is missing ...
std::string objectType(const std::string &label)
edm::InputTag vertex_
primary vertex
MonitorEnsemble(const char *label, const edm::ParameterSet &cfg)
default contructor
void setup(std::vector< TH2F > &depth, std::string name, std::string units="")
EventNumber_t event() const