16 namespace SingleTopTChannelLepton {
23 static const double WMASS = 80.4;
26 label_(label), pvSelect_(0), jetIDSelect_(0), includeBTag_(
false), lowerEdge_(-1.), upperEdge_(-1.), logged_(0)
191 hists_[
"triggerEff_" ] =
store_->
book1D(
"TriggerEff" ,
"Eff(trigger)" , nPaths, 0., nPaths);
193 hists_[
"triggerMon_" ] =
store_->
book1D(
"TriggerMon" ,
"Mon(trigger)" , nPaths, 0., nPaths);
220 hists_[
"muonPFRelIso_" ] =
store_->
book1D(
"MuonPFRelIso",
"PFIso_{Rel}(#mu)", 50, 0., 1.);
221 hists_[
"muonRelIso_" ] =
store_->
book1D(
"MuonRelIso" ,
"Iso_{Rel}(#mu)" , 50, 0., 1.);
227 hists_[
"elecPFRelIso_" ] =
store_->
book1D(
"ElecPFRelIso" ,
"PFIso_{Rel}(e)", 50, 0., 1.);
230 hists_[
"jetMultBEff_"] =
store_->
book1D(
"JetMultBEff",
"N_{30}(b/eff)" , 10, 0., 10.);
232 hists_[
"jetBDiscEff_"] =
store_->
book1D(
"JetBDiscEff",
"Disc_{b/eff}(jet)", 100, 0., 10.);
247 hists_[
"TaggedJetEta_" ] =
store_->
book1D(
"TaggedJetEta" ,
"#eta (Tagged jet)" , 50, -5., 5.);
248 hists_[
"TaggedJetPt_" ] =
store_->
book1D(
"TaggedJetPt" ,
"pt_{L2L3}(Tagged jet)" , 60, 0., 300.);
251 hists_[
"UnTaggedJetEta_" ] =
store_->
book1D(
"UnTaggedJetEta" ,
"#eta (UnTagged jet)" , 50, -5., 5.);
252 hists_[
"UnTaggedJetPt_" ] =
store_->
book1D(
"UnTaggedJetPt" ,
"pt_{L2L3}(UnTagged jet)" , 60, 0., 300.);
256 hists_[
"FwdJetPt_" ] =
store_->
book1D(
"FwdJetPt" ,
"pt_{L2L3}(Fwd jet)" , 60, 0., 300.);
260 hists_[
"TaggedJetPtEta_" ] =
store_->
book2D(
"TaggedJetPt_Eta" ,
"(pt vs #eta)_{L2L3}(Tagged jet)" , 60, 0., 300., 50, -5., 5.);
263 hists_[
"UnTaggedJetPtEta_" ] =
store_->
book2D(
"UnTaggedJetPt_Eta" ,
"(pt vs #eta)_{L2L3}(UnTagged jet)" , 60, 0., 300., 50, -5., 5.);
275 hists_[
"muonDelXY_" ] =
store_->
book2D(
"MuonDelXY" ,
"d_{xy}(#mu)" , 50, -0.1, 0.1, 50, -0.1, 0.1);
278 hists_[
"muonDelXY_" ]->setAxisTitle(
"x [cm]", 1);
hists_[
"muonDelXY_" ]->setAxisTitle(
"y [cm]", 2);
285 hists_[
"muonChHadIso_" ] =
store_->
book1D(
"MuonChHadIso" ,
"Iso_{ChHad}(#mu)" , 100, 0., 1.);
287 hists_[
"muonNeuHadIso_" ] =
store_->
book1D(
"MuonNeuHadIso" ,
"Iso_{NeuHad}(#mu)" , 100, 0., 1.);
292 hists_[
"elecChHadIso_" ] =
store_->
book1D(
"ElecChHadIso" ,
"Iso_{ChHad}(e)" , 100, 0., 1.);
294 hists_[
"elecNeuHadIso_" ] =
store_->
book1D(
"ElecNeuHadIso" ,
"Iso_{NeuHad}(e)" , 100, 0., 1.);
299 hists_[
"jetMultBPur_"] =
store_->
book1D(
"JetMultBPur",
"N_{30}(b/pur)" , 10, 0., 10.);
301 hists_[
"jetBDiscPur_"] =
store_->
book1D(
"JetBDiscPur",
"Disc_{b/pur}(Jet)", 200, -10., 10.);
303 hists_[
"jet1BDiscPur_"] =
store_->
book1D(
"Jet1BDiscPur",
"Disc_{b/pur}(Jet1)", 200, -10., 10.);
305 hists_[
"jet2BDiscPur_"] =
store_->
book1D(
"Jet2BDiscPur",
"Disc_{b/pur}(Jet2)", 200, -10., 10.);
309 hists_[
"jetMultBVtx_"] =
store_->
book1D(
"JetMultBVtx",
"N_{30}(b/vtx)" , 10, 0., 10.);
311 hists_[
"jetBDiscVtx_"] =
store_->
book1D(
"JetBDiscVtx",
"Disc_{b/vtx}(Jet)", 35, -1., 6.);
315 hists_[
"jetMultBCombVtx_"] =
store_->
book1D(
"JetMultBCombVtx",
"N_{30}(b/CSV)" , 10, 0., 10.);
317 hists_[
"jetBDiscCombVtx_"] =
store_->
book1D(
"JetBDiscCombVtx",
"Disc_{b/CSV}(Jet)", 60, -1., 2.);
319 hists_[
"jet1BDiscCombVtx_"] =
store_->
book1D(
"Jet1BDiscCombVtx",
"Disc_{b/CSV}(Jet1)", 60, -1., 2.);
321 hists_[
"jet2BDiscCombVtx_"] =
store_->
book1D(
"Jet2BDiscCombVtx",
"Disc_{b/CSV}(Jet2)", 60, -1., 2.);
325 hists_[
"jet1PtRaw_" ] =
store_->
book1D(
"Jet1PtRaw" ,
"pt_{Raw}(jet1)" , 60, 0., 300.);
327 hists_[
"jet2PtRaw_" ] =
store_->
book1D(
"Jet2PtRaw" ,
"pt_{Raw}(jet2)" , 60, 0., 300.);
330 hists_[
"eventLogger_"] =
store_->
book2D(
"EventLogger",
"Logged Events" , 9, 0., 9., 10, 0., 10.);
333 hists_[
"eventLogger_"]->getTH1()->SetOption(
"TEXT");
334 hists_[
"eventLogger_"]->setBinLabel( 1 ,
"Run" , 1);
335 hists_[
"eventLogger_"]->setBinLabel( 2 ,
"Block" , 1);
336 hists_[
"eventLogger_"]->setBinLabel( 3 ,
"Event" , 1);
337 hists_[
"eventLogger_"]->setBinLabel( 4 ,
"pt_{L2L3}(jet1)" , 1);
338 hists_[
"eventLogger_"]->setBinLabel( 5 ,
"pt_{L2L3}(jet2)" , 1);
339 hists_[
"eventLogger_"]->setBinLabel( 6 ,
"pt_{L2L3}(jet3)" , 1);
340 hists_[
"eventLogger_"]->setBinLabel( 7 ,
"pt_{L2L3}(jet4)" , 1);
341 hists_[
"eventLogger_"]->setBinLabel( 8 ,
"M_{W}" , 1);
342 hists_[
"eventLogger_"]->setBinLabel( 9 ,
"M_{Top}" , 1);
343 hists_[
"eventLogger_"]->setAxisTitle(
"logged evts" , 2);
368 unsigned int pvMult = 0;
373 fill(
"pvMult_", pvMult );
406 unsigned int eMult=0, eMultIso=0;
407 std::vector<const reco::GsfElectron*> isoElecs;
410 unsigned int idx_gsf = 0;
411 for(elec_it=elecs->begin(); elec_it!=elecs->end(); ++elec_it){
412 if(elec_it->gsfElectronRef().isNull())
continue ;
415 if(elec->gsfTrack().
isNull())
continue ;
420 eID = (
int)(*electronId)[elecs_gsf->refAt(idx_gsf)];
424 if( elecSelect(*elec_it)){
425 double isolationRel = (elec->dr03TkSumPt()+elec->dr03EcalRecHitSumEt()+elec->dr03HcalTowerSumEt())/elec->pt();
427 double isolationChHad = elec->pt()/(elec->pt()+elec->pfIsolationVariables().sumChargedHadronPt);
428 double isolationNeuHad = elec->pt()/(elec->pt()+elec->pfIsolationVariables().sumNeutralHadronEt);
429 double isolationPhoton = elec->pt()/(elec->pt()+elec->pfIsolationVariables().sumPhotonEt);
430 double PFisolationRel = (elec->pfIsolationVariables().sumChargedHadronPt+elec->pfIsolationVariables().sumNeutralHadronEt+elec->pfIsolationVariables().sumPhotonEt)/elec->pt();
434 fill(
"elecPt_" , elec->pt() );
435 fill(
"elecEta_", elec->eta());
436 fill(
"elecRelIso_" , isolationRel );
437 fill(
"elecPFRelIso_",PFisolationRel );
438 fill(
"elecChHadIso_" , isolationChHad );
439 fill(
"elecNeuHadIso_" , isolationNeuHad );
440 fill(
"elecPhIso_" , isolationPhoton );
445 ++eMult;
if( (elecIso)(*elec_it)){
if(eMultIso == 0) e = *elec; isoElecs.push_back(&(*elec)); ++eMultIso; }
451 fill(
"elecMult_", eMult );
452 fill(
"elecMultIso_", eMultIso);
464 unsigned int mMult=0, mMultIso=0;
484 for(muonit = muons->begin(); muonit != muons->end(); ++muonit){
487 if(muonit->muonRef().isNull())
continue ;
490 if(muon->innerTrack().
isNull())
continue ;
494 if( muon->isGlobalMuon() ){
495 fill(
"muonDelZ_" , muon->globalTrack()->vz());
496 fill(
"muonDelXY_", muon->globalTrack()->vx(), muon->globalTrack()->vy());
499 if( !muonSelect || (*muonSelect)(*muonit)) {
503 double isolationRel = (muon->isolationR03().sumPt+muon->isolationR03().emEt+muon->isolationR03().hadEt)/muon->pt();
504 double isolationChHad = muon->pt()/(muon->pt()+muon->pfIsolationR04().sumChargedHadronPt);
505 double isolationNeuHad = muon->pt()/(muon->pt()+muon->pfIsolationR04().sumNeutralHadronEt);
506 double isolationPhoton = muon->pt()/(muon->pt()+muon->pfIsolationR04().sumPhotonEt);
507 double PFisolationRel = (muon->pfIsolationR04().sumChargedHadronPt + muon->pfIsolationR04().sumNeutralHadronEt + muon->pfIsolationR04().sumPhotonEt)/muon->pt();
513 fill(
"muonPt_" , muon->pt() );
514 fill(
"muonEta_" , muon->eta());
515 fill(
"muonRelIso_" , isolationRel );
516 fill(
"muonChHadIso_" , isolationChHad );
517 fill(
"muonNeuHadIso_" , isolationNeuHad );
518 fill(
"muonPhIso_" , isolationPhoton );
519 fill(
"muonPFRelIso_" , PFisolationRel );
524 if( !muonIso || (*muonIso)(*muonit)) {
if(mMultIso == 0) mu = *
muon; ++mMultIso;}
528 fill(
"muonMult_", mMult );
529 fill(
"muonMultIso_", mMultIso);
551 if(setup.
find( edm::eventsetup::EventSetupRecordKey::makeKey<JetCorrectionsRecord>() )){
557 <<
"------------------------------------------------------------------------------------- \n"
558 <<
" No JetCorrectionsRecord available from EventSetup: \n"
559 <<
" - Jets will not be corrected. \n"
560 <<
" - If you want to change this add the following lines to your cfg file: \n"
562 <<
" ## load jet corrections \n"
563 <<
" process.load(\"JetMETCorrections.Configuration.JetCorrectionServicesAllAlgos_cff\") \n"
564 <<
" process.prefer(\"ak5CaloL2L3\") \n"
566 <<
"------------------------------------------------------------------------------------- \n";
571 std::vector<reco::Jet> correctedJets;
572 unsigned int mult=0, multBEff=0, multBPur=0, multNoBPur=0, multBVtx=0, multBCombVtx=0;
584 vector<double> bJetDiscVal;
585 vector<double> NobJetDiscVal;
591 unsigned int idx =
jet-jets->begin();
592 if(dynamic_cast<const reco::CaloJet*>(&*
jet)){
593 if(
jetIDSelect_ && dynamic_cast<const reco::CaloJet*>(jets->refAt(idx).get())){
594 if(!(*
jetIDSelect_)((*jetID)[jets->refAt(idx)]))
continue;
599 if(dynamic_cast<const reco::CaloJet*>(&*
jet)){
602 if(!jetSelect(sel)){
continue;}
604 else if(dynamic_cast<const reco::PFJet*>(&*
jet)){
607 if(!jetSelect(sel))
continue;
612 if(!jetSelect(sel))
continue;
623 correctedJets.push_back(monitorJet);
630 if( (*btagVtx)[jetRef]>
btagVtxWP_ ) ++multBVtx;
634 TaggedJetCand = monitorJet;
636 bJetDiscVal.push_back((*btagPur)[jetRef]);
639 else if (multBPur == 1){
640 bJetDiscVal.push_back((*btagPur)[jetRef]);
641 if (bJetDiscVal[1]>bJetDiscVal[0])
642 TaggedJetCand = monitorJet;
649 if (multNoBPur == 0){
650 UnTaggedJetCand = monitorJet;
651 NobJetDiscVal.push_back((*btagPur)[jetRef]);
654 else if (multNoBPur == 1){
655 NobJetDiscVal.push_back((*btagPur)[jetRef]);
656 if (NobJetDiscVal[1]<NobJetDiscVal[0])
657 UnTaggedJetCand = monitorJet;
663 if( (*btagEff)[jetRef]>
btagEffWP_ ) ++multBEff;
666 fill(
"jet1BDiscPur_", (*btagPur)[jetRef]);
667 fill(
"jet1BDiscCombVtx_", (*btagCombVtx)[jetRef]);
671 fill(
"jet2BDiscPur_", (*btagPur)[jetRef]);
672 fill(
"jet2BDiscCombVtx_", (*btagCombVtx)[jetRef]);
675 fill(
"jetBDiscEff_", (*btagEff)[jetRef]);
676 fill(
"jetBDiscPur_", (*btagPur)[jetRef]);
677 fill(
"jetBDiscVtx_", (*btagVtx)[jetRef]);
678 fill(
"jetBDiscCombVtx_", (*btagCombVtx)[jetRef]);
683 fill(
"jet1Pt_" , monitorJet.
pt());
684 fill(
"jet1Eta_", monitorJet.
eta());
685 fill(
"jet1PtRaw_",
jet->pt() );
686 FwdJetCand = monitorJet;
691 fill(
"jet2Pt_" , monitorJet.
pt());
692 fill(
"jet2Eta_", monitorJet.
eta());
693 fill(
"jet2PtRaw_",
jet->pt() );
696 FwdJetCand = monitorJet;
699 fill(
"FwdJetPt_" , FwdJetCand.
pt());
700 fill(
"FwdJetEta_", FwdJetCand.
eta());
708 if (multNoBPur == 1 && multBPur == 1){
710 fill(
"TaggedJetPtEta_" , TaggedJetCand.
pt(), TaggedJetCand.
eta());
711 fill(
"UnTaggedJetPtEta_" , UnTaggedJetCand.
pt(), UnTaggedJetCand.
eta());
714 fill(
"TaggedJetPt_" , TaggedJetCand.
pt());
715 fill(
"TaggedJetEta_", TaggedJetCand.
eta());
716 fill(
"UnTaggedJetPt_" , UnTaggedJetCand.
pt());
717 fill(
"UnTaggedJetEta_", UnTaggedJetCand.
eta());
720 fill(
"jetMult_" , mult );
721 fill(
"jetMultBEff_", multBEff);
722 fill(
"jetMultBPur_", multBPur);
723 fill(
"jetMultBVtx_", multBVtx);
724 fill(
"jetMultBCombVtx_", multBCombVtx);
740 if(met->begin()!=met->end()){
741 unsigned int idx=met_-
mets_.begin();
742 if(idx==0) {
fill(
"metCalo_" , met->begin()->et()); }
743 if(idx==1) {
fill(
"metTC_" , met->begin()->et()); }
744 if(idx==2) {
fill(
"metPflow_", met->begin()->et()); mET = *(met->begin()); }
759 double wMass = eventKinematics.
massWBoson (correctedJets);
760 double topMass = eventKinematics.
massTopQuark(correctedJets);
761 if(wMass>=0 && topMass>=0) {
fill(
"massW_" , wMass );
fill(
"massTop_" , topMass);}
765 if(
logged_<=
hists_.find(
"eventLogger_")->second->getNbinsY()){
771 if(correctedJets.size()>0)
fill(
"eventLogger_", 3.5,
logged_+0.5, correctedJets[0].
pt());
772 if(correctedJets.size()>1)
fill(
"eventLogger_", 4.5,
logged_+0.5, correctedJets[1].
pt());
773 if(correctedJets.size()>2)
fill(
"eventLogger_", 5.5,
logged_+0.5, correctedJets[2].
pt());
774 if(correctedJets.size()>3)
fill(
"eventLogger_", 6.5,
logged_+0.5, correctedJets[3].
pt());
780 if(multBPur != 0 && mMultIso == 1 ){
782 double mtW = eventKinematics.
tmassWBoson(&mu,mET,TaggedJetCand);
fill(
"MTWm_",mtW);
783 double MTT = eventKinematics.
tmassTopQuark(&mu,mET,TaggedJetCand);
fill(
"mMTT_", MTT);
787 if(multBPur != 0 && eMultIso == 1 ){
788 double mtW = eventKinematics.
tmassWBoson(&e,mET,TaggedJetCand);
fill(
"MTWe_",mtW);
789 double MTT = eventKinematics.
tmassTopQuark(&e,mET,TaggedJetCand);
fill(
"eMTT_", MTT);
798 MuonStep(0), PFMuonStep(0), ElectronStep(0), PFElectronStep(0), PvStep(0), METStep(0)
825 std::vector<edm::ParameterSet>
sel=cfg.
getParameter<std::vector<edm::ParameterSet> >(
"selection");
826 for(
unsigned int i=0;
i<sel.size(); ++
i){
836 if(
type==
"muons/pf"){
842 if(
type==
"elecs/pf"){
851 if(
type==
"jets/pf" ){
854 if(
type==
"jets/calo" ){
889 unsigned int passed=0;
890 unsigned int nJetSteps = -1;
891 unsigned int nPFJetSteps = -1;
892 unsigned int nCaloJetSteps = -1;
934 if(
type==
"jets/pf" ){
943 if(
type==
"jets/calo" ){
std::vector< std::string > selectionOrder_
std::string objectType(const std::string &label)
T getParameter(std::string const &) const
edm::EDGetTokenT< reco::JetIDValueMap > jetIDLabel_
jetID as an extra selection type
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
double btagEffWP_
btag working points
tuple met
____________________________________________________________________________||
bool existsAs(std::string const ¶meterName, bool trackiness=true) const
checks if a parameter exists as a given type
Jets made from CaloTowers.
bool select(const edm::Event &event)
apply selection
std::vector< std::string > triggerPaths_
trigger paths
Level verbosity_
verbosity level for booking
virtual float pt() const
transverse momentum
SelectionStep< reco::MET > * METStep
MonitorElement * book1D(const char *name, const char *title, int nchX, double lowX, double highX)
Book 1D histogram.
static const double WMASS
bool getByToken(EDGetToken token, Handle< PROD > &result) const
virtual double correction(const LorentzVector &fJet) const =0
get correction using Jet information only
std::vector< ParameterSet > VParameterSet
Base class for all types of Jets.
int logged_
number of logged interesting events
double massTopQuark(const std::vector< reco::Jet > &jets)
calculate t-quark mass estimate
edm::EDGetTokenT< reco::JetTagCollection > btagCombVtx_
std::vector< SelectionStep< reco::CaloJet > * > CaloJetSteps
edm::EDGetTokenT< edm::TriggerResults > triggerTable__
trigger table
virtual void scaleEnergy(double fScale)
scale energy of the jet
edm::InputTag beamspot_
beamspot
std::string muonIso_
extra isolation criterion on muon
std::vector< std::string > triggerPaths_
bool accept(const edm::Event &event, const edm::TriggerResults &triggerTable, const std::string &triggerPath)
std::string muonSelect_
extra selection on muons
edm::EDGetTokenT< edm::View< reco::PFCandidate > > muons_
std::map< std::string, std::pair< edm::ParameterSet, SingleTopTChannelLepton::MonitorEnsemble * > > selection_
Jets made from PFObjects.
double massWBoson(const std::vector< reco::Jet > &jets)
calculate W boson mass estimate
SingleTopTChannelLeptonDQM(const edm::ParameterSet &cfg)
default constructor
LuminosityBlockNumber_t luminosityBlock() const
const eventsetup::EventSetupRecord * find(const eventsetup::EventSetupRecordKey &) const
StringCutObjectSelector< reco::Vertex > * pvSelect_
extra selection on primary vertices; meant to investigate the pile-up effect
edm::InputTag vertex_
primary vertex
StringCutObjectSelector< reco::Vertex > * vertexSelect_
string cut selector
Helper class for the calculation of a top and a W boson mass estime.
std::string elecSelect_
extra selection on electrons
double lowerEdge_
mass window upper and lower edge
void triggerBinLabels(std::string channel, const std::vector< std::string > labels)
set configurable labels for trigger monitoring histograms
bool isNull() const
Checks for null.
SelectionStep< reco::Vertex > * PvStep
virtual float eta() const
momentum pseudorapidity
ConsumesCollector consumesCollector()
Use a ConsumesCollector to gather consumes information from helper functions.
edm::EDGetTokenT< edm::View< reco::GsfElectron > > elecs_gsf_
SelectionStep< reco::GsfElectron > * ElectronStep
Abs< T >::type abs(const T &t)
edm::EDGetTokenT< reco::JetTagCollection > btagPur_
double tmassTopQuark(reco::RecoCandidate *lep, const reco::MET &met, const reco::Jet &b)
calculate top quark transverse mass estimate
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
edm::EDGetTokenT< reco::JetTagCollection > btagEff_
btag discriminator labels
std::map< std::string, MonitorElement * > hists_
histogram container
edm::EDGetTokenT< edm::TriggerResults > triggerTable_
trigger table
std::vector< SelectionStep< reco::Jet > * > JetSteps
edm::EDGetTokenT< edm::ValueMap< float > > electronId_
electronId label
EventAuxiliary const & eventAuxiliary() const
std::string selectionStep(const std::string &label)
double tmassWBoson(reco::RecoCandidate *lep, const reco::MET &met, const reco::Jet &b)
calculate W boson transverse mass estimate
edm::EDGetTokenT< reco::JetTagCollection > btagVtx_
tuple idx
DEBUGGING if hasattr(process,"trackMonIterativeTracking2012"): print "trackMonIterativeTracking2012 D...
edm::EDGetTokenT< edm::View< reco::Vertex > > pvs_
static const JetCorrector * getJetCorrector(const std::string &fName, const edm::EventSetup &fSetup)
retrieve corrector from the event setup. troughs exception if something is missing ...
edm::EDGetTokenT< edm::View< reco::PFCandidate > > elecs_
SelectionStep< reco::Muon > * MuonStep
static const unsigned int MAXJETS
std::vector< SelectionStep< reco::PFJet > * > PFJetSteps
std::vector< edm::EDGetTokenT< edm::View< reco::MET > > > mets_
considers a vector of METs
void fill(const edm::Event &event, const edm::EventSetup &setup)
fill monitor histograms with electronId and jetCorrections
SelectionStep< reco::PFCandidate > * PFMuonStep
edm::EDGetTokenT< edm::View< reco::Jet > > jets_
input sources for monitoring
virtual void analyze(const edm::Event &event, const edm::EventSetup &setup)
do this during the event loop
StringCutObjectSelector< reco::BeamSpot > * beamspotSelect_
string cut selector
edm::EDGetTokenT< reco::Vertex > vertex__
StringCutObjectSelector< reco::JetID > * jetIDSelect_
extra jetID selection on calo jets
edm::EDGetTokenT< reco::BeamSpot > beamspot__
bool isUninitialized() const
SelectionStep< reco::PFCandidate > * PFElectronStep
std::string jetCorrector_
jetCorrector
volatile std::atomic< bool > shutdown_flag false
MonitorElement * book2D(const char *name, const char *title, int nchX, double lowX, double highX, int nchY, double lowY, double highY)
Book 2D histogram.
DQMStore * store_
storage manager
void setup(std::vector< TH2F > &depth, std::string name, std::string units="")
EventNumber_t event() const
void setCurrentFolder(const std::string &fullpath)
void book(std::string directory)
book histograms in subdirectory directory
std::string label_
instance label
std::string elecIso_
extra isolation criterion on electron