CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Member Functions | Private Attributes
HLTOfflineDQMTopSingleLepton::MonitorSingleLepton Class Reference

#include <TopSingleLeptonHLTOfflineDQM.h>

Public Member Functions

void book (DQMStore::IBooker &store_)
 book histograms in subdirectory directory More...
 
void fill (const edm::Event &event, const edm::EventSetup &setup, const HLTConfigProvider &hltConfig, const std::vector< std::string > triggerPaths)
 fill monitor histograms with electronId and jetCorrections More...
 
 MonitorSingleLepton (const char *label, const edm::ParameterSet &cfg, edm::ConsumesCollector &&iC)
 default contructor More...
 
 ~MonitorSingleLepton ()
 default destructor More...
 

Private Member Functions

bool booked (const std::string histName) const
 check if histogram was booked More...
 
void fill (const edm::Event &event, const edm::TriggerResults &triggerTable, std::string channel, const std::vector< std::string > &labels) const
 fill trigger monitoring histograms More...
 
void fill (const std::string histName, double value) const
 fill histogram if it had been booked before More...
 
void fill (const std::string histName, double xValue, double yValue) const
 fill histogram if it had been booked before (2-dim version) More...
 
void fill (const std::string histName, double xValue, double yValue, double zValue) const
 fill histogram if it had been booked before (2-dim version) More...
 
std::string monitorPath (const std::string &label) const
 
std::string selectionPath (const std::string &label) const
 
void triggerBinLabels (std::string channel, const std::vector< std::string > &labels)
 set configurable labels for trigger monitoring histograms More...
 

Private Attributes

edm::EDGetTokenT
< reco::JetTagCollection
btagEff_
 btag discriminator labels More...
 
double btagEffWP_
 btag working points More...
 
edm::EDGetTokenT
< reco::JetTagCollection
btagPur_
 
double btagPurWP_
 
edm::EDGetTokenT
< reco::JetTagCollection
btagVtx_
 
double btagVtxWP_
 
int eidPattern_
 
StringCutObjectSelector
< reco::GsfElectron > * 
elecIso_
 extra isolation criterion on electron More...
 
edm::EDGetTokenT< edm::View
< reco::GsfElectron > > 
elecs_
 input sources for monitoring More...
 
StringCutObjectSelector
< reco::GsfElectron > * 
elecSelect_
 extra selection on electrons More...
 
edm::EDGetTokenT
< edm::ValueMap< float > > 
electronId_
 electronId label More...
 
trigger::Vids electronIds_
 
trigger::VRelectron electronRefs_
 
std::string folder_
 
std::map< std::string,
MonitorElement * > 
hists_
 histogram container More...
 
bool includeBTag_
 
std::string jetCorrector_
 jetCorrector More...
 
edm::EDGetTokenT
< reco::JetIDValueMap
jetIDLabel_
 jetID as an extra selection type More...
 
StringCutObjectSelector
< reco::JetID > * 
jetIDSelect_
 extra jetID selection on calo jets More...
 
edm::EDGetTokenT< edm::View
< reco::Jet > > 
jets_
 
std::string jetSelect_
 
std::string label_
 instance label More...
 
int logged_
 number of logged interesting events More...
 
double lowerEdge_
 mass window upper and lower edge More...
 
std::vector< edm::EDGetTokenT
< edm::View< reco::MET > > > 
mets_
 considers a vector of METs More...
 
trigger::Vids muonIds_
 
StringCutObjectSelector
< reco::Muon > * 
muonIso_
 extra isolation criterion on muon More...
 
trigger::VRmuon muonRefs_
 
edm::EDGetTokenT< edm::View
< reco::Muon > > 
muons_
 
StringCutObjectSelector
< reco::Muon > * 
muonSelect_
 extra selection on muons More...
 
trigger::Vids pfjetIds_
 
trigger::VRpfjet pfjetRefs_
 
std::string processName_
 hlt objects More...
 
edm::EDGetTokenT< edm::View
< reco::Vertex > > 
pvs_
 
StringCutObjectSelector
< reco::Vertex > * 
pvSelect_
 extra selection on primary vertices; meant to investigate the pile-up effect More...
 
edm::EDGetTokenT
< trigger::TriggerEventWithRefs
triggerEventWithRefsTag_
 
std::vector< std::string > triggerPaths_
 
edm::EDGetTokenT
< edm::TriggerResults
triggerTable_
 trigger table More...
 
double upperEdge_
 

Detailed Description

Definition at line 46 of file TopSingleLeptonHLTOfflineDQM.h.

Constructor & Destructor Documentation

MonitorSingleLepton::MonitorSingleLepton ( const char *  label,
const edm::ParameterSet cfg,
edm::ConsumesCollector &&  iC 
)

default contructor

Definition at line 37 of file TopSingleLeptonHLTOfflineDQM.cc.

References btagEff_, btagEffWP_, btagPur_, btagPurWP_, btagVtx_, btagVtxWP_, eidPattern_, elecIso_, elecs_, elecSelect_, electronId_, edm::ParameterSet::existsAs(), folder_, edm::ParameterSet::getParameter(), includeBTag_, HLT_25ns14e33_v1_cff::InputTag, jetCorrector_, jetIDLabel_, jetIDSelect_, jets_, jetSelect_, lowerEdge_, objects.METAnalyzer::met, mets_, muonIso_, muons_, muonSelect_, LaserDQM_cfg::process, processName_, pvs_, pvSelect_, AlCaHLTBitMon_QueryRunRegistry::string, triggerEventWithRefsTag_, triggerPaths_, triggerTable_, and upperEdge_.

37  :
39  {
40  // sources have to be given; this PSet is not optional
41  edm::ParameterSet sources=cfg.getParameter<edm::ParameterSet>("sources");
43  elecs_= iC.consumes< edm::View<reco::GsfElectron> >(sources.getParameter<edm::InputTag>("elecs"));
44  jets_ = iC.consumes< edm::View<reco::Jet> >(sources.getParameter<edm::InputTag>("jets" ));
45 
46  const auto& mets = sources.getParameter<std::vector<edm::InputTag>>("mets");
47  for (const auto& met: mets) {
48  mets_.push_back(iC.consumes<edm::View<reco::MET>>(met));
49  }
50 
51  pvs_ = iC.consumes< edm::View<reco::Vertex> >(sources.getParameter<edm::InputTag>("pvs" ));
52 
53  // electronExtras are optional; they may be omitted or
54  // empty
55  if( cfg.existsAs<edm::ParameterSet>("elecExtras") ){
56  edm::ParameterSet elecExtras=cfg.getParameter<edm::ParameterSet>("elecExtras");
57  // select is optional; in case it's not found no
58  // selection will be applied
59  if( elecExtras.existsAs<std::string>("select") ){
61  }
62  // isolation is optional; in case it's not found no
63  // isolation will be applied
64  if( elecExtras.existsAs<std::string>("isolation") ){
66  }
67  // electronId is optional; in case it's not found the
68  // InputTag will remain empty
69  if( elecExtras.existsAs<edm::ParameterSet>("electronId") ){
70  edm::ParameterSet elecId=elecExtras.getParameter<edm::ParameterSet>("electronId");
72  eidPattern_= elecId.getParameter<int>("pattern");
73  }
74  }
75  // pvExtras are optional; they may be omitted or empty
76  if(cfg.existsAs<edm::ParameterSet>("pvExtras")){
77  edm::ParameterSet pvExtras=cfg.getParameter<edm::ParameterSet>("pvExtras");
78  // select is optional; in case it's not found no
79  // selection will be applied
80  if( pvExtras.existsAs<std::string>("select") ){
82  }
83  }
84  // muonExtras are optional; they may be omitted or empty
85  if( cfg.existsAs<edm::ParameterSet>("muonExtras") ){
86  edm::ParameterSet muonExtras=cfg.getParameter<edm::ParameterSet>("muonExtras");
87  // select is optional; in case it's not found no
88  // selection will be applied
89  if( muonExtras.existsAs<std::string>("select") ){
91  }
92  // isolation is optional; in case it's not found no
93  // isolation will be applied
94  if( muonExtras.existsAs<std::string>("isolation") ){
96  }
97  }
98 
99  // jetExtras are optional; they may be omitted or
100  // empty
101  if( cfg.existsAs<edm::ParameterSet>("jetExtras") ){
102  edm::ParameterSet jetExtras=cfg.getParameter<edm::ParameterSet>("jetExtras");
103  // jetCorrector is optional; in case it's not found
104  // the InputTag will remain empty
105  if( jetExtras.existsAs<std::string>("jetCorrector") ){
106  jetCorrector_= jetExtras.getParameter<std::string>("jetCorrector");
107  }
108  // read jetID information if it exists
109  if(jetExtras.existsAs<edm::ParameterSet>("jetID")){
110  edm::ParameterSet jetID=jetExtras.getParameter<edm::ParameterSet>("jetID");
112  jetIDSelect_= new StringCutObjectSelector<reco::JetID>(jetID.getParameter<std::string>("select"));
113  }
114  // select is optional; in case it's not found no
115  // selection will be applied (only implemented for
116  // CaloJets at the moment)
117  if( jetExtras.existsAs<std::string>("select") ){
118  jetSelect_= jetExtras.getParameter<std::string>("select");
119  }
120  // jetBDiscriminators are optional; in case they are
121  // not found the InputTag will remain empty; they
122  // consist of pairs of edm::JetFlavorAssociation's &
123  // corresponding working points
124  includeBTag_=jetExtras.existsAs<edm::ParameterSet>("jetBTaggers");
125  if( includeBTag_ ){
126  edm::ParameterSet btagEff=jetExtras.getParameter<edm::ParameterSet>("jetBTaggers").getParameter<edm::ParameterSet>("trackCountingEff");
127  btagEff_= iC.consumes< reco::JetTagCollection >(btagEff.getParameter<edm::InputTag>("label")); btagEffWP_= btagEff.getParameter<double>("workingPoint");
128  edm::ParameterSet btagPur=jetExtras.getParameter<edm::ParameterSet>("jetBTaggers").getParameter<edm::ParameterSet>("trackCountingPur");
129  btagPur_= iC.consumes< reco::JetTagCollection >(btagPur.getParameter<edm::InputTag>("label")); btagPurWP_= btagPur.getParameter<double>("workingPoint");
130  edm::ParameterSet btagVtx=jetExtras.getParameter<edm::ParameterSet>("jetBTaggers").getParameter<edm::ParameterSet>("secondaryVertex" );
131  btagVtx_= iC.consumes< reco::JetTagCollection >(btagVtx.getParameter<edm::InputTag>("label")); btagVtxWP_= btagVtx.getParameter<double>("workingPoint");
132  }
133  }
134 
135  // triggerExtras are optional; they may be omitted or empty
136  processName_ = "HLT";
137  if( cfg.existsAs<edm::ParameterSet>("triggerExtras") ){
138  edm::ParameterSet triggerExtras=cfg.getParameter<edm::ParameterSet>("triggerExtras");
140  processName_ = triggerExtras.getParameter<edm::InputTag>("src").process();
141  triggerPaths_=triggerExtras.getParameter<std::vector<std::string> >("paths");
142  }
143 
144  // massExtras is optional; in case it's not found no mass
145  // window cuts are applied for the same flavor monitor
146  // histograms
147  if( cfg.existsAs<edm::ParameterSet>("massExtras") ){
148  edm::ParameterSet massExtras=cfg.getParameter<edm::ParameterSet>("massExtras");
149  lowerEdge_= massExtras.getParameter<double>("lowerEdge");
150  upperEdge_= massExtras.getParameter<double>("upperEdge");
151  }
152 
153  // and don't forget to do the histogram booking
154  folder_=cfg.getParameter<std::string>("directory");
155 
157 
158  }
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
T getParameter(std::string const &) const
bool existsAs(std::string const &parameterName, bool trackiness=true) const
checks if a parameter exists as a given type
Definition: ParameterSet.h:185
StringCutObjectSelector< reco::JetID > * jetIDSelect_
extra jetID selection on calo jets
StringCutObjectSelector< reco::GsfElectron > * elecSelect_
extra selection on electrons
StringCutObjectSelector< reco::Vertex > * pvSelect_
extra selection on primary vertices; meant to investigate the pile-up effect
edm::EDGetTokenT< reco::JetTagCollection > btagPur_
edm::EDGetTokenT< edm::View< reco::GsfElectron > > elecs_
input sources for monitoring
edm::EDGetTokenT< reco::JetIDValueMap > jetIDLabel_
jetID as an extra selection type
std::vector< edm::EDGetTokenT< edm::View< reco::MET > > > mets_
considers a vector of METs
edm::EDGetTokenT< trigger::TriggerEventWithRefs > triggerEventWithRefsTag_
edm::EDGetTokenT< edm::View< reco::Muon > > muons_
edm::EDGetTokenT< reco::JetTagCollection > btagEff_
btag discriminator labels
edm::EDGetTokenT< edm::View< reco::Vertex > > pvs_
StringCutObjectSelector< reco::Muon > * muonIso_
extra isolation criterion on muon
StringCutObjectSelector< reco::GsfElectron > * elecIso_
extra isolation criterion on electron
edm::EDGetTokenT< edm::View< reco::Jet > > jets_
edm::EDGetTokenT< edm::TriggerResults > triggerTable_
trigger table
edm::EDGetTokenT< reco::JetTagCollection > btagVtx_
edm::EDGetTokenT< edm::ValueMap< float > > electronId_
electronId label
StringCutObjectSelector< reco::Muon > * muonSelect_
extra selection on muons
tuple process
Definition: LaserDQM_cfg.py:3
HLTOfflineDQMTopSingleLepton::MonitorSingleLepton::~MonitorSingleLepton ( )
inline

default destructor

Definition at line 53 of file TopSingleLeptonHLTOfflineDQM.h.

53 {};

Member Function Documentation

void MonitorSingleLepton::book ( DQMStore::IBooker store_)

book histograms in subdirectory directory

Definition at line 161 of file TopSingleLeptonHLTOfflineDQM.cc.

References DQMStore::IBooker::book1D(), DQMStore::IBooker::book2D(), cond::rpcobimon::current, folder_, hists_, label_, DQMStore::IBooker::setCurrentFolder(), AlCaHLTBitMon_QueryRunRegistry::string, triggerBinLabels(), and triggerPaths_.

162  {
163  //set up the current directory path
165  store_.setCurrentFolder(current);
166 
167  // determine number of bins for trigger monitoring
168  unsigned int nPaths=triggerPaths_.size();
169 
170  // number of selected primary vertices
171  hists_["pvMult_" ] = store_.book1D("PvMult" , "N_{pvs}" , 100, 0., 100.);
172  // multiplicity of jets with pt>20 (corrected to L2+L3)
173  hists_["jetMult_" ] = store_.book1D("JetMult" , "N_{20}(jet)" , 10, 0., 10.);
174  // // trigger efficiency estimates for single lepton triggers
175  // hists_["triggerEff_" ] = store_.book1D("TriggerEff" , "Eff(trigger)" , nPaths, 0., nPaths);
176  // monitored trigger occupancy for single lepton triggers
177  hists_["triggerMon_" ] = store_.book1D("TriggerMon" , "Mon(trigger)" , nPaths, 0., nPaths);
178  // W mass estimate
179  hists_["massW_" ] = store_.book1D("MassW" , "M(W)" , 60, 0., 300.);
180  // Top mass estimate
181  hists_["massTop_" ] = store_.book1D("MassTop" , "M(Top)" , 50, 0., 500.);
182  // Mlb mu
183  hists_["mMub_" ] = store_.book1D("mMub" , "m_{#mub}" , 50, 0., 500.);
184  // W mass transverse estimate mu
185  hists_["MTWm_" ] = store_.book1D("MTWm" , "M_{T}^{W}(#mu)" , 60, 0., 300.);
186  // Top mass transverse estimate mu
187  hists_["mMTT_" ] = store_.book1D("mMTT" , "M_{T}^{t}(#mu)" , 50, 0., 500.);
188  // Mlb e
189  hists_["mEb_" ] = store_.book1D("mEb" , "m_{eb}" , 50, 0., 500.);
190  // W mass transverse estimate e
191  hists_["MTWe_" ] = store_.book1D("MTWe" , "M_{T}^{W}(e)" , 60, 0., 300.);
192  // Top mass transverse estimate e
193  hists_["eMTT_" ] = store_.book1D("eMTT" , "M_{T}^{t}(e)" , 50, 0., 500.);
194  // set bin labels for trigger monitoring
196  // multiplicity of btagged jets (for track counting high efficiency) with pt(L2L3)>20
197  hists_["jetMultBEff_"] = store_.book1D("JetMultBProb", "N_{20}(b/prob)" , 10, 0., 10.);
198  // btag discriminator for track counting high efficiency for jets with pt(L2L3)>20
199  hists_["jetBDiscEff_"] = store_.book1D("JetBDiscProb", "Disc_{b/prob}(jet)", 25, 0., 2.5);
200  // multiplicity of btagged jets (for track counting high purity) with pt(L2L3)>20
201  hists_["jetMultBPur_"] = store_.book1D("JetMultBPur", "N_{20}(b/pur)" , 10, 0., 10.);
202  // btag discriminator for track counting high purity
203  hists_["jetBDiscPur_"] = store_.book1D("JetBDiscPur", "Disc_{b/pur}(Jet)", 100, 0., 10.);
204  // multiplicity of btagged jets (for simple secondary vertex) with pt(L2L3)>20
205  hists_["jetMultBVtx_"] = store_.book1D("JetMultBVtx", "N_{20}(b/vtx)" , 10, 0., 10.);
206  // btag discriminator for simple secondary vertex
207  hists_["jetBDiscVtx_"] = store_.book1D("JetBDiscVtx", "Disc_{b/vtx}(Jet)", 35, -1., 6.);
208  // selected events
209  hists_["eventLogger_"] = store_.book2D("EventLogger", "Logged Events" , 3, 0., 3., 4, 0., 4.);
210  // set axes titles for selected events
211  hists_["eventLogger_"]->getTH1()->SetOption("TEXT");
212  hists_["eventLogger_"]->setBinLabel( 1 , "Run" , 1);
213  hists_["eventLogger_"]->setBinLabel( 2 , "Block" , 1);
214  hists_["eventLogger_"]->setBinLabel( 3 , "Event" , 1);
215  hists_["eventLogger_"]->setAxisTitle("logged evts" , 2);
216 
217  // deltaR min between hlt iso lepton and reco iso lepton wrt eta
218  hists_["leptDeltaREta_"] = store_.book2D("DeltaRMinEtaLepton", "#Delta R_{min}(leptons) wrt #eta", 30, -3, 3, 10, 0., 0.1);
219  // deltaR min between hlt jets and reco jets wrt eta
220  hists_["jetDeltaREta_"] = store_.book2D("DeltaRMinEtaJet", "#Delta R_{min}(jets) wrt #eta", 30, -3, 3, 10, 0., 0.1);
221  // resolution in pT for matched isolated leptons
222  hists_["leptResolution_"] = store_.book1D("ResIsoLeptons", "#Delta p_{T}/p_{T}(matched leptons)", 20, 0., 0.1);
223  // resolution in pT for matched jets
224  hists_["jetResolution_"] = store_.book1D("ResIsoJets", "#Delta p_{T}/p_{T}(matched jets)", 20, 0., 0.1);
225  // matching monitoring
226  hists_["matchingMon_"] = store_.book1D("MatchingMon", "Mon(matching)", 5, 0., 5.);
227  // set axes titles for matching monitoring
228  hists_["matchingMon_"]->setBinLabel( 1 , "iso lepton" );
229  hists_["matchingMon_"]->setBinLabel( 2 , "1st jet" );
230  hists_["matchingMon_"]->setBinLabel( 3 , "2nd jet" );
231  hists_["matchingMon_"]->setBinLabel( 4 , "3rd jet" );
232  hists_["matchingMon_"]->setBinLabel( 5 , "all " );
233 
234  return;
235  }
std::map< std::string, MonitorElement * > hists_
histogram container
MonitorElement * book1D(Args &&...args)
Definition: DQMStore.h:115
void triggerBinLabels(std::string channel, const std::vector< std::string > &labels)
set configurable labels for trigger monitoring histograms
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:274
MonitorElement * book2D(Args &&...args)
Definition: DQMStore.h:133
bool HLTOfflineDQMTopSingleLepton::MonitorSingleLepton::booked ( const std::string  histName) const
inlineprivate

check if histogram was booked

Definition at line 74 of file TopSingleLeptonHLTOfflineDQM.h.

References hists_.

Referenced by fill().

74 { return hists_.find(histName.c_str())!=hists_.end(); };
std::map< std::string, MonitorElement * > hists_
histogram container
void MonitorSingleLepton::fill ( const edm::Event event,
const edm::EventSetup setup,
const HLTConfigProvider hltConfig,
const std::vector< std::string >  triggerPaths 
)

fill monitor histograms with electronId and jetCorrections

Definition at line 238 of file TopSingleLeptonHLTOfflineDQM.cc.

References btagEff_, btagEffWP_, btagPur_, btagPurWP_, btagVtx_, btagVtxWP_, JetCorrector::correction(), mvaPFMET_cff::corrector, deltaR(), HLTOfflineDQMTopSingleLepton::DRMIN, alignCSCRings::e, eidPattern_, elecIso_, elecs_, elecSelect_, electronId_, electronIds_, electronRefs_, eta(), edm::EventSetup::find(), edm::Event::getByToken(), JetCorrector::getJetCorrector(), hists_, i, customizeTrackingMonitorSeedNumber::idx, includeBTag_, trackerHitRTTI::isMatched(), edm::EDGetTokenT< T >::isUninitialized(), j, metsig::jet, jetCorrector_, jetIDLabel_, jetIDSelect_, fwrapper::jets, jets_, jetSelect_, relval_steps::k, WDecay::kElec, WDecay::kMuon, logged_, lowerEdge_, CalculateHLT::masslb(), CalculateHLT::massTopQuark(), CalculateHLT::massWBoson(), HLTOfflineDQMTopSingleLepton::MAXJETS, objects.METAnalyzer::met, mets_, HLTConfigProvider::moduleLabels(), HLTConfigProvider::moduleType(), RPCpg::mu, VarParsing::mult, metsig::muon, muonIds_, muonIso_, muonRefs_, patZpeak::muons, muons_, muonSelect_, mergeVDriftHistosByStation::name, pfjetIds_, pfjetRefs_, processName_, EnergyCorrector::pt, MetAnalyzer::pv(), pvs_, pvSelect_, reco::Jet::scaleEnergy(), EgammaValidation_Wenu_cff::sel, findQualityFiles::size, CalculateHLT::tmassTopQuark(), CalculateHLT::tmassWBoson(), triggerEventWithRefsTag_, edm::TriggerNames::triggerIndex(), edm::TriggerNames::triggerNames(), triggerPaths_, triggerTable_, upperEdge_, and HLTOfflineDQMTopSingleLepton::WMASS.

Referenced by fill().

239  {
240  // fetch trigger event if configured such
243  if( !event.getByToken(triggerTable_, triggerTable) ) return;
244  }
245 
246  /*
247  ------------------------------------------------------------
248 
249  Primary Vertex Monitoring
250 
251  ------------------------------------------------------------
252  */
253  // fill monitoring plots for primary verices
255  if( !event.getByToken(pvs_, pvs) ) {
256  edm::LogWarning( "TopSingleLeptonHLTOfflineDQM" )
257  << "Vertex collection not found \n";
258  return;
259  }
260  unsigned int pvMult = 0;
261  for(edm::View<reco::Vertex>::const_iterator pv=pvs->begin(); pv!=pvs->end(); ++pv){
262  if(!pvSelect_ || (*pvSelect_)(*pv))
263  pvMult++;
264  }
265  fill("pvMult_", pvMult );
266 
267  /*
268  ------------------------------------------------------------
269 
270  Electron Monitoring
271 
272  ------------------------------------------------------------
273  */
274 
275  // fill monitoring plots for electrons
277  if( !event.getByToken(elecs_, elecs) ) {
278  edm::LogWarning( "TopSingleLeptonHLTOfflineDQM" )
279  << "Electron collection not found \n";
280  return;
281  }
282 
283  // check availability of electron id
284  edm::Handle<edm::ValueMap<float> > electronId;
286  if( !event.getByToken(electronId_, electronId) ) return;
287  }
288 
289  // loop electron collection
290  unsigned int eMultIso=0;
291  std::vector<const reco::GsfElectron*> isoElecs;
293  for(edm::View<reco::GsfElectron>::const_iterator elec=elecs->begin(); elec!=elecs->end(); ++elec){
294  unsigned int idx = elec-elecs->begin();
295  // restrict to electrons with good electronId
296  if( electronId_.isUninitialized() ? true : ((int)(*electronId)[elecs->refAt(idx)] & eidPattern_) ){
297  if(!elecSelect_ || (*elecSelect_)(*elec)){
298  if(!elecIso_ || (*elecIso_)(*elec)){ if(eMultIso == 0) e = *elec; isoElecs.push_back(&(*elec)); ++eMultIso;}
299  }
300  }
301  }
302 
303  /*
304  ------------------------------------------------------------
305 
306  Muon Monitoring
307 
308  ------------------------------------------------------------
309  */
310 
311  // fill monitoring plots for muons
312  unsigned int mMultIso=0;
314  std::vector<const reco::Muon*> isoMuons;
315  if( !event.getByToken(muons_, muons) ) {
316  edm::LogWarning( "TopSingleLeptonHLTOfflineDQM" )
317  << "Muon collection not found \n";
318  return;
319  }
320  reco::Muon mu;
321  for(edm::View<reco::Muon>::const_iterator muon=muons->begin(); muon!=muons->end(); ++muon){
322  // restrict to globalMuons
323  if( muon->isGlobalMuon() ){
324  // apply preselection
325  if(!muonSelect_ || (*muonSelect_)(*muon)){
326  if(!muonIso_ || (*muonIso_)(*muon)) {if(mMultIso == 0) mu = *muon; isoMuons.push_back(&(*muon)); ++mMultIso;}
327  }
328  }
329  }
330 
331  /*
332  ------------------------------------------------------------
333 
334  Jet Monitoring
335 
336  ------------------------------------------------------------
337  */
338 
339  // check availability of the btaggers
340  edm::Handle<reco::JetTagCollection> btagEff, btagPur, btagVtx;
341  if( includeBTag_ ){
342  if( !event.getByToken(btagEff_, btagEff) ) return;
343  if( !event.getByToken(btagPur_, btagPur) ) return;
344  if( !event.getByToken(btagVtx_, btagVtx) ) return;
345  }
346  // load jet corrector if configured such
347  const JetCorrector* corrector=0;
348  if(!jetCorrector_.empty()){
349  // check whether a jet corrector is in the event setup or not
350  if(setup.find( edm::eventsetup::EventSetupRecordKey::makeKey<JetCorrectionsRecord>() )){
351  corrector = JetCorrector::getJetCorrector(jetCorrector_, setup);
352  }
353  else{
354  edm::LogVerbatim( "TopSingleLeptonHLTOfflineDQM" )
355  << "\n"
356  << "------------------------------------------------------------------------------------- \n"
357  << " No JetCorrectionsRecord available from EventSetup: \n"
358  << " - Jets will not be corrected. \n"
359  << " - If you want to change this add the following lines to your cfg file: \n"
360  << " \n"
361  << " ## load jet corrections \n"
362  << " process.load(\"JetMETCorrections.Configuration.JetCorrectionServicesAllAlgos_cff\") \n"
363  << " process.prefer(\"ak5CaloL2L3\") \n"
364  << " \n"
365  << "------------------------------------------------------------------------------------- \n";
366  }
367  }
368 
369  // loop jet collection
370  std::vector<reco::Jet> correctedJets;
371  unsigned int mult=0, multBEff=0, multBPur=0, multBVtx=0;
372 
374  if( !event.getByToken(jets_, jets) ) {
375  edm::LogWarning( "TopSingleLeptonHLTOfflineDQM" )
376  << "Jet collection not found \n";
377  return;
378  }
379 
381  if(jetIDSelect_){
382  if( !event.getByToken(jetIDLabel_, jetID) ) return;
383  }
384  reco::Jet bJetCand;
385  for(edm::View<reco::Jet>::const_iterator jet=jets->begin(); jet!=jets->end(); ++jet){
386  // check jetID for calo jets
387  unsigned int idx = jet-jets->begin();
388  if( jetIDSelect_ && dynamic_cast<const reco::CaloJet*>(jets->refAt(idx).get())){
389  if(!(*jetIDSelect_)((*jetID)[jets->refAt(idx)])) continue;
390  }
391  // chekc additional jet selection for calo, pf and bare reco jets
392  if(dynamic_cast<const reco::CaloJet*>(&*jet)){
393  reco::CaloJet sel = dynamic_cast<const reco::CaloJet&>(*jet); sel.scaleEnergy(corrector ? corrector->correction(*jet) : 1.);
394  StringCutObjectSelector<reco::CaloJet> jetSelect(jetSelect_); if(!jetSelect(sel)){ continue;}
395  }
396  else if(dynamic_cast<const reco::PFJet*>(&*jet)){
397  reco::PFJet sel= dynamic_cast<const reco::PFJet&>(*jet); sel.scaleEnergy(corrector ? corrector->correction(*jet) : 1.);
398  StringCutObjectSelector<reco::PFJet> jetSelect(jetSelect_); if(!jetSelect(sel)) continue;
399  }
400  else{
401  reco::Jet sel = *jet; sel.scaleEnergy(corrector ? corrector->correction(*jet) : 1.);
402  StringCutObjectSelector<reco::Jet> jetSelect(jetSelect_); if(!jetSelect(sel)) continue;
403  }
404 
405  // prepare jet to fill monitor histograms
406  reco::Jet monitorJet = *jet; monitorJet.scaleEnergy(corrector ? corrector->correction(*jet) : 1.);
407  correctedJets.push_back(monitorJet);
408  ++mult; // determine jet multiplicity
409  if( includeBTag_ ){
410  // fill b-discriminators
411  edm::RefToBase<reco::Jet> jetRef = jets->refAt(idx);
412  // for the btagEff collection
413  double btagEffDisc = (*btagEff)[jetRef];
414  fill("jetBDiscEff_", btagEffDisc);
415  if( (*btagEff)[jetRef]>btagEffWP_ ) ++multBEff;
416  // for the btagPur collection
417  double btagPurDisc = (*btagPur)[jetRef];
418  fill("jetBDiscPur_", btagPurDisc);
419  if( (*btagPur)[jetRef]>btagPurWP_ ) {if(multBPur == 0) bJetCand = *jet; ++multBPur;}
420  // for the btagVtx collection
421  double btagVtxDisc = (*btagVtx)[jetRef];
422  fill("jetBDiscVtx_", btagVtxDisc);
423  if( (*btagVtx)[jetRef]>btagVtxWP_ ) ++multBVtx;
424  }
425  }
426  fill("jetMult_" , mult );
427  fill("jetMultBEff_", multBEff);
428  fill("jetMultBPur_", multBPur);
429  fill("jetMultBVtx_", multBVtx);
430 
431  /*
432  ------------------------------------------------------------
433 
434  MET Monitoring
435 
436  ------------------------------------------------------------
437  */
438 
439  // fill monitoring histograms for met
440  reco::MET mET;
441  for(std::vector< edm::EDGetTokenT< edm::View<reco::MET> > >::const_iterator met_=mets_.begin(); met_!=mets_.end(); ++met_){
443  if( !event.getByToken(*met_, met) ) continue;
444  if(met->begin()!=met->end()){
445  mET = *(met->begin());
446  }
447  }
448 
449  /*
450  ------------------------------------------------------------
451 
452  Event Monitoring
453 
454  ------------------------------------------------------------
455  */
456 
457  // fill W boson and top mass estimates
458  CalculateHLT eventKinematics(MAXJETS, WMASS);
459  double wMass = eventKinematics.massWBoson (correctedJets);
460  double topMass = eventKinematics.massTopQuark(correctedJets);
461  if(wMass>=0 && topMass>=0) {fill("massW_" , wMass ); fill("massTop_" , topMass);}
462  // fill plots for trigger monitoring
463  if((lowerEdge_==-1. && upperEdge_==-1.) || (lowerEdge_<wMass && wMass<upperEdge_) ){
464  if(!triggerTable_.isUninitialized()) fill(event, *triggerTable, "trigger", triggerPaths_);
465  if(logged_<=hists_.find("eventLogger_")->second->getNbinsY()){
466  // log runnumber, lumi block, event number & some
467  // more pysics infomation for interesting events
468  // We're doing a static_cast here to denote the explicity of the cast
469  double runID = static_cast<double>(event.eventAuxiliary().run());
470  double luminosityBlockID = static_cast<double>(event.eventAuxiliary().luminosityBlock());
471  double eventID = static_cast<double>(event.eventAuxiliary().event());
472  fill("eventLogger_", 0.5, logged_+0.5, runID);
473  fill("eventLogger_", 1.5, logged_+0.5, luminosityBlockID);
474  fill("eventLogger_", 2.5, logged_+0.5, eventID);
475  ++logged_;
476  }
477  }
478  if(multBPur != 0 && mMultIso == 1 ){
479  double mtW = eventKinematics.tmassWBoson(&mu,mET,bJetCand); if (mtW == mtW) fill("MTWm_",mtW);
480  double Mlb = eventKinematics.masslb(&mu,mET,bJetCand); if (Mlb == Mlb) fill("mMub_", Mlb);
481  double MTT = eventKinematics.tmassTopQuark(&mu,mET,bJetCand); if (MTT == MTT) fill("mMTT_", MTT);
482  }
483 
484  if(multBPur != 0 && eMultIso == 1 ){
485  double mtW = eventKinematics.tmassWBoson(&mu,mET,bJetCand); if (mtW == mtW)fill("MTWe_",mtW);
486  double Mlb = eventKinematics.masslb(&mu,mET,bJetCand); if (Mlb == Mlb) fill("mEb_", Mlb);
487  double MTT = eventKinematics.tmassTopQuark(&mu,mET,bJetCand); if (MTT == MTT) fill("eMTT_", MTT);
488  }
489 
490 
491  /*
492  ------------------------------------------------------------
493 
494  HLT Objects Monitoring
495 
496  ------------------------------------------------------------
497  */
498 
499  edm::Handle<trigger::TriggerEventWithRefs> triggerEventWithRefsHandle;
500  if(event.getByToken(triggerEventWithRefsTag_,triggerEventWithRefsHandle)) {
501 
502  const edm::TriggerNames& triggerNames = event.triggerNames(*triggerTable);
503  // loop over trigger paths
504  for(unsigned int i=0; i<triggerNames.triggerNames().size(); ++i){
505  // consider only path from triggerPaths
506  string name = triggerNames.triggerNames()[i];
507  bool isInteresting = false;
508  for (unsigned int j=0; j<triggerPaths.size(); j++) {
509  if (TString(name.c_str()).Contains(TString(triggerPaths[j]), TString::kIgnoreCase)) isInteresting = true;
510  }
511  if (!isInteresting) continue;
512  // dump infos on the considered trigger path
513  const unsigned int triggerIndex = triggerNames.triggerIndex(name);
514  // get modules for the considered trigger path
515  const vector<string>& moduleLabels(hltConfig.moduleLabels(triggerIndex));
516  const unsigned int moduleIndex(triggerTable->index(triggerIndex));
517  // Results from TriggerEventWithRefs product
518  electronIds_.clear(); electronRefs_.clear();
519  muonIds_.clear(); muonRefs_.clear();
520  pfjetIds_.clear(); pfjetRefs_.clear();
521  // look only for modules actually run in this path
522  unsigned int kElec=0;
523  unsigned int kMuon=0;
524  unsigned int kJet=0;
525  for (unsigned int k=0; k<=moduleIndex; ++k) {
526  const string& moduleLabel(moduleLabels[k]);
527  const string moduleType(hltConfig.moduleType(moduleLabel));
528  // check whether the module is packed up in TriggerEventWithRef product
529  const unsigned int filterIndex(triggerEventWithRefsHandle->filterIndex(edm::InputTag(moduleLabel,"",processName_)));
530  if (filterIndex<triggerEventWithRefsHandle->size()) {
531  triggerEventWithRefsHandle->getObjects(filterIndex,electronIds_,electronRefs_);
532  const unsigned int nElectrons(electronIds_.size());
533  if (nElectrons>0) kElec = k;
534 
535  triggerEventWithRefsHandle->getObjects(filterIndex,muonIds_,muonRefs_);
536  const unsigned int nMuons(muonIds_.size());
537  if (nMuons>0) kMuon = k;
538 
539  triggerEventWithRefsHandle->getObjects(filterIndex,pfjetIds_,pfjetRefs_);
540  const unsigned int nPFJets(pfjetIds_.size());
541  if (nPFJets>0) kJet = k;
542  }
543  }
544  bool isMatched = true;
545  bool lMatched = false;
546  bool j1Matched = false;
547  bool j2Matched = false;
548  bool j3Matched = false;
549  // access to hlt elecs
550  double eDeltaRMin = 500.;
551  unsigned int eIndMatched = 500;
552  electronIds_.clear(); electronRefs_.clear();
553  if (kElec > 0) {
554  const string& moduleLabelElec(moduleLabels[kElec]);
555  const string moduleTypeElec(hltConfig.moduleType(moduleLabelElec));
556  const unsigned int filterIndexElec(triggerEventWithRefsHandle->filterIndex(edm::InputTag(moduleLabelElec,"",processName_)));
557  triggerEventWithRefsHandle->getObjects(filterIndexElec,electronIds_,electronRefs_);
558  for (unsigned int inde = 0; inde < isoElecs.size(); inde++) {
559  double deltar = deltaR(*electronRefs_[0],*isoElecs[inde]);
560  if (deltar < eDeltaRMin) {
561  eDeltaRMin = deltar;
562  eIndMatched = inde;
563  }
564  }
565  if (eDeltaRMin < DRMIN) lMatched = true;
566  }
567  // access to hlt muons
568  muonIds_.clear(); muonRefs_.clear();
569  double mDeltaRMin = 500.;
570  unsigned int mIndMatched = 500;
571  if (kMuon > 0) {
572  const string& moduleLabelMuon(moduleLabels[kMuon]);
573  const string moduleTypeMuon(hltConfig.moduleType(moduleLabelMuon));
574  const unsigned int filterIndexMuon(triggerEventWithRefsHandle->filterIndex(edm::InputTag(moduleLabelMuon,"",processName_)));
575  triggerEventWithRefsHandle->getObjects(filterIndexMuon,muonIds_,muonRefs_);
576  for (unsigned int indm = 0; indm < isoMuons.size(); indm++) {
577  double deltar = deltaR(*muonRefs_[0],*isoMuons[indm]);
578  if (deltar < mDeltaRMin) {
579  mDeltaRMin = deltar;
580  mIndMatched = indm;
581  }
582  }
583  if (mDeltaRMin < DRMIN) lMatched = true;
584  }
585  // access to hlt pf jets
586  const unsigned int nPFJets(pfjetIds_.size());
587  pfjetIds_.clear(); pfjetRefs_.clear();
588  double j1DeltaRMin = 500.;
589  double j2DeltaRMin = 500.;
590  double j3DeltaRMin = 500.;
591  unsigned int j1IndMatched = 500;
592  unsigned int j2IndMatched = 500;
593  unsigned int j3IndMatched = 500;
594  if (kJet > 0) {
595  const string& moduleLabelJet(moduleLabels[kJet]);
596  const string moduleTypeJet(hltConfig.moduleType(moduleLabelJet));
597  const unsigned int filterIndexJet(triggerEventWithRefsHandle->filterIndex(edm::InputTag(moduleLabelJet,"",processName_)));
598  triggerEventWithRefsHandle->getObjects(filterIndexJet,pfjetIds_,pfjetRefs_);
599  for (unsigned int indj = 0; indj < correctedJets.size(); indj++) {
600  double deltar1 = deltaR(*pfjetRefs_[0],correctedJets[indj]);
601  if (deltar1 < j1DeltaRMin) {j1DeltaRMin = deltar1; j1IndMatched = indj;}
602  if (nPFJets > 1) {
603  double deltar2 = deltaR(*pfjetRefs_[1],correctedJets[indj]);
604  if (deltar2 < j2DeltaRMin) {j2DeltaRMin = deltar2; j2IndMatched = indj;}
605  if (nPFJets > 2) {
606  double deltar3 = deltaR(*pfjetRefs_[2],correctedJets[indj]);
607  if (deltar3 < j3DeltaRMin) {j3DeltaRMin = deltar3; j3IndMatched = indj;}
608  }
609  }
610  }
611  if (nPFJets > 0 && j1DeltaRMin < DRMIN) j1Matched = true;
612  if (nPFJets > 1 && j2DeltaRMin < DRMIN) j2Matched = true;
613  if (nPFJets > 2 && j3DeltaRMin < DRMIN) j3Matched = true;
614  }
615  if (eIndMatched < 500) {
616  fill("leptDeltaREta_", isoElecs[eIndMatched]->eta(), eDeltaRMin);
617  if (lMatched) fill("leptResolution_", fabs(isoElecs[eIndMatched]->pt()-electronRefs_[0]->pt())/isoElecs[eIndMatched]->pt() );
618  }
619  if (mIndMatched < 500) {
620  fill("leptDeltaREta_", isoMuons[mIndMatched]->eta(), mDeltaRMin);
621  if (lMatched) fill("leptResolution_", fabs(isoMuons[mIndMatched]->pt()-muonRefs_[0]->pt())/isoMuons[mIndMatched]->pt() );
622  }
623  if (lMatched) fill("matchingMon_", 0.5 );
624  else isMatched = false;
625  if (j1IndMatched < 500) {
626  fill("jetDeltaREta_", correctedJets[j1IndMatched].eta(), j1DeltaRMin);
627  if (j1Matched) {
628  fill("jetResolution_", fabs(correctedJets[j1IndMatched].pt()-pfjetRefs_[0]->pt())/correctedJets[j1IndMatched].pt() );
629  fill("matchingMon_", 1.5 );
630  }
631  else isMatched = false;
632  if (j2IndMatched < 500) {
633  fill("jetDeltaREta_", correctedJets[j2IndMatched].eta(), j2DeltaRMin);
634  if (j2Matched) {
635  fill("jetResolution_", fabs(correctedJets[j2IndMatched].pt()-pfjetRefs_[1]->pt())/correctedJets[j2IndMatched].pt() );
636  fill("matchingMon_", 2.5 );
637  }
638  else isMatched = false;
639  if (j3IndMatched < 500) {
640  fill("jetDeltaREta_", correctedJets[j3IndMatched].eta(), j3DeltaRMin);
641  if (j3Matched) {
642  fill("jetResolution_", fabs(correctedJets[j3IndMatched].pt()-pfjetRefs_[2]->pt())/correctedJets[j3IndMatched].pt() );
643  fill("matchingMon_", 3.5 );
644  }
645  else isMatched = false;
646  }
647  }
648  }
649  if (isMatched) fill("matchingMon_", 4.5 );
650 
651  }
652 
653  }
654  }
int i
Definition: DBlmapReader.cc:9
const std::string moduleType(const std::string &module) const
C++ class name of module.
Jets made from CaloTowers.
Definition: CaloJet.h:29
virtual void scaleEnergy(double fScale)
scale energy of the jet
StringCutObjectSelector< reco::JetID > * jetIDSelect_
extra jetID selection on calo jets
StringCutObjectSelector< reco::GsfElectron > * elecSelect_
extra selection on electrons
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:449
virtual double correction(const LorentzVector &fJet) const =0
get correction using Jet information only
Base class for all types of Jets.
Definition: Jet.h:20
StringCutObjectSelector< reco::Vertex > * pvSelect_
extra selection on primary vertices; meant to investigate the pile-up effect
std::map< std::string, MonitorElement * > hists_
histogram container
edm::EDGetTokenT< reco::JetTagCollection > btagPur_
edm::EDGetTokenT< edm::View< reco::GsfElectron > > elecs_
input sources for monitoring
T eta() const
edm::EDGetTokenT< reco::JetIDValueMap > jetIDLabel_
jetID as an extra selection type
std::vector< edm::EDGetTokenT< edm::View< reco::MET > > > mets_
considers a vector of METs
Strings const & triggerNames() const
Definition: TriggerNames.cc:24
Jets made from PFObjects.
Definition: PFJet.h:21
const eventsetup::EventSetupRecord * find(const eventsetup::EventSetupRecordKey &) const
Definition: EventSetup.cc:90
edm::EDGetTokenT< trigger::TriggerEventWithRefs > triggerEventWithRefsTag_
unsigned int triggerIndex(std::string const &name) const
Definition: TriggerNames.cc:32
void fill(const edm::Event &event, const edm::EventSetup &setup, const HLTConfigProvider &hltConfig, const std::vector< std::string > triggerPaths)
fill monitor histograms with electronId and jetCorrections
tuple corrector
Definition: mvaPFMET_cff.py:88
Definition: MET.h:42
edm::EDGetTokenT< edm::View< reco::Muon > > muons_
vector< PseudoJet > jets
edm::EDGetTokenT< reco::JetTagCollection > btagEff_
btag discriminator labels
int j
Definition: DBlmapReader.cc:9
bool isMatched(TrackingRecHit const &hit)
const int mu
Definition: Constants.h:22
edm::EDGetTokenT< edm::View< reco::Vertex > > pvs_
const std::vector< std::string > & moduleLabels(unsigned int trigger) const
label(s) of module(s) on a trigger path
double deltaR(double eta1, double eta2, double phi1, double phi2)
Definition: TreeUtility.cc:17
StringCutObjectSelector< reco::Muon > * muonIso_
extra isolation criterion on muon
StringCutObjectSelector< reco::GsfElectron > * elecIso_
extra isolation criterion on electron
tuple idx
DEBUGGING if hasattr(process,&quot;trackMonIterativeTracking2012&quot;): print &quot;trackMonIterativeTracking2012 D...
static const JetCorrector * getJetCorrector(const std::string &fName, const edm::EventSetup &fSetup)
retrieve corrector from the event setup. troughs exception if something is missing ...
Definition: JetCorrector.cc:50
edm::EDGetTokenT< edm::View< reco::Jet > > jets_
tuple muons
Definition: patZpeak.py:38
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
Definition: View.h:81
edm::EDGetTokenT< edm::TriggerResults > triggerTable_
trigger table
bool isUninitialized() const
Definition: EDGetToken.h:71
edm::EDGetTokenT< reco::JetTagCollection > btagVtx_
edm::EDGetTokenT< edm::ValueMap< float > > electronId_
electronId label
StringCutObjectSelector< reco::Muon > * muonSelect_
extra selection on muons
static std::string const triggerPaths
Definition: EdmProvDump.cc:41
tuple size
Write out results.
void MonitorSingleLepton::fill ( const edm::Event event,
const edm::TriggerResults triggerTable,
std::string  channel,
const std::vector< std::string > &  labels 
) const
inlineprivate

fill trigger monitoring histograms

Definition at line 172 of file TopSingleLeptonHLTOfflineDQM.h.

References acceptHLT(), fill(), customizeTrackingMonitorSeedNumber::idx, and monitorPath().

173  {
174  for(unsigned int idx=0; idx<labels.size(); ++idx){
175  if( acceptHLT(event, triggerTable, monitorPath(labels[idx])) ){
176  fill((channel+"Mon_").c_str(), idx+0.5 );
177  }
178  }
179  }
std::string monitorPath(const std::string &label) const
void fill(const edm::Event &event, const edm::EventSetup &setup, const HLTConfigProvider &hltConfig, const std::vector< std::string > triggerPaths)
fill monitor histograms with electronId and jetCorrections
bool acceptHLT(const edm::Event &event, const edm::TriggerResults &triggerTable, const std::string &triggerPath)
tuple idx
DEBUGGING if hasattr(process,&quot;trackMonIterativeTracking2012&quot;): print &quot;trackMonIterativeTracking2012 D...
void HLTOfflineDQMTopSingleLepton::MonitorSingleLepton::fill ( const std::string  histName,
double  value 
) const
inlineprivate

fill histogram if it had been booked before

Definition at line 76 of file TopSingleLeptonHLTOfflineDQM.h.

References booked(), hists_, and edm::second().

76 { if(booked(histName.c_str())) hists_.find(histName.c_str())->second->Fill(value); };
std::map< std::string, MonitorElement * > hists_
histogram container
U second(std::pair< T, U > const &p)
bool booked(const std::string histName) const
check if histogram was booked
void HLTOfflineDQMTopSingleLepton::MonitorSingleLepton::fill ( const std::string  histName,
double  xValue,
double  yValue 
) const
inlineprivate

fill histogram if it had been booked before (2-dim version)

Definition at line 78 of file TopSingleLeptonHLTOfflineDQM.h.

References booked(), hists_, and edm::second().

78 { if(booked(histName.c_str())) hists_.find(histName.c_str())->second->Fill(xValue, yValue); };
std::map< std::string, MonitorElement * > hists_
histogram container
U second(std::pair< T, U > const &p)
bool booked(const std::string histName) const
check if histogram was booked
void HLTOfflineDQMTopSingleLepton::MonitorSingleLepton::fill ( const std::string  histName,
double  xValue,
double  yValue,
double  zValue 
) const
inlineprivate

fill histogram if it had been booked before (2-dim version)

Definition at line 80 of file TopSingleLeptonHLTOfflineDQM.h.

80 { if(booked(histName.c_str())) hists_.find(histName.c_str())->second->Fill(xValue, yValue, zValue); };
std::map< std::string, MonitorElement * > hists_
histogram container
U second(std::pair< T, U > const &p)
bool booked(const std::string histName) const
check if histogram was booked
std::string HLTOfflineDQMTopSingleLepton::MonitorSingleLepton::monitorPath ( const std::string &  label) const
inlineprivate

deduce monitorPath from label, the label is expected to be of type 'selectionPath:monitorPath'

Definition at line 63 of file TopSingleLeptonHLTOfflineDQM.h.

Referenced by fill(), and triggerBinLabels().

63 { return label.substr(label.find(':')+1); };
std::string HLTOfflineDQMTopSingleLepton::MonitorSingleLepton::selectionPath ( const std::string &  label) const
inlineprivate

deduce selectionPath from label, the label is expected to be of type 'selectionPath:monitorPath'

Definition at line 66 of file TopSingleLeptonHLTOfflineDQM.h.

66 { return label.substr(0, label.find(':')); };
void MonitorSingleLepton::triggerBinLabels ( std::string  channel,
const std::vector< std::string > &  labels 
)
inlineprivate

set configurable labels for trigger monitoring histograms

Definition at line 164 of file TopSingleLeptonHLTOfflineDQM.h.

References hists_, customizeTrackingMonitorSeedNumber::idx, and monitorPath().

Referenced by book().

165  {
166  for(unsigned int idx=0; idx<labels.size(); ++idx){
167  hists_[(channel+"Mon_").c_str()]->setBinLabel( idx+1, "["+monitorPath(labels[idx])+"]", 1);
168  }
169  }
std::string monitorPath(const std::string &label) const
std::map< std::string, MonitorElement * > hists_
histogram container
tuple idx
DEBUGGING if hasattr(process,&quot;trackMonIterativeTracking2012&quot;): print &quot;trackMonIterativeTracking2012 D...

Member Data Documentation

edm::EDGetTokenT< reco::JetTagCollection > HLTOfflineDQMTopSingleLepton::MonitorSingleLepton::btagEff_
private

btag discriminator labels

Definition at line 140 of file TopSingleLeptonHLTOfflineDQM.h.

Referenced by fill(), and MonitorSingleLepton().

double HLTOfflineDQMTopSingleLepton::MonitorSingleLepton::btagEffWP_
private

btag working points

Definition at line 144 of file TopSingleLeptonHLTOfflineDQM.h.

Referenced by fill(), and MonitorSingleLepton().

edm::EDGetTokenT< reco::JetTagCollection > HLTOfflineDQMTopSingleLepton::MonitorSingleLepton::btagPur_
private

Definition at line 141 of file TopSingleLeptonHLTOfflineDQM.h.

Referenced by fill(), and MonitorSingleLepton().

double HLTOfflineDQMTopSingleLepton::MonitorSingleLepton::btagPurWP_
private

Definition at line 144 of file TopSingleLeptonHLTOfflineDQM.h.

Referenced by fill(), and MonitorSingleLepton().

edm::EDGetTokenT< reco::JetTagCollection > HLTOfflineDQMTopSingleLepton::MonitorSingleLepton::btagVtx_
private

Definition at line 142 of file TopSingleLeptonHLTOfflineDQM.h.

Referenced by fill(), and MonitorSingleLepton().

double HLTOfflineDQMTopSingleLepton::MonitorSingleLepton::btagVtxWP_
private

Definition at line 144 of file TopSingleLeptonHLTOfflineDQM.h.

Referenced by fill(), and MonitorSingleLepton().

int HLTOfflineDQMTopSingleLepton::MonitorSingleLepton::eidPattern_
private

electronId pattern we expect the following pattern: 0: fails 1: passes electron ID only 2: passes electron Isolation only 3: passes electron ID and Isolation only 4: passes conversion rejection 5: passes conversion rejection and ID 6: passes conversion rejection and Isolation 7: passes the whole selection As described on https://twiki.cern.ch/twiki/bin/view/CMS/SimpleCutBasedEleID

Definition at line 113 of file TopSingleLeptonHLTOfflineDQM.h.

Referenced by fill(), and MonitorSingleLepton().

StringCutObjectSelector<reco::GsfElectron>* HLTOfflineDQMTopSingleLepton::MonitorSingleLepton::elecIso_
private

extra isolation criterion on electron

Definition at line 115 of file TopSingleLeptonHLTOfflineDQM.h.

Referenced by fill(), and MonitorSingleLepton().

edm::EDGetTokenT< edm::View<reco::GsfElectron> > HLTOfflineDQMTopSingleLepton::MonitorSingleLepton::elecs_
private

input sources for monitoring

Definition at line 89 of file TopSingleLeptonHLTOfflineDQM.h.

Referenced by fill(), and MonitorSingleLepton().

StringCutObjectSelector<reco::GsfElectron>* HLTOfflineDQMTopSingleLepton::MonitorSingleLepton::elecSelect_
private

extra selection on electrons

Definition at line 117 of file TopSingleLeptonHLTOfflineDQM.h.

Referenced by fill(), and MonitorSingleLepton().

edm::EDGetTokenT< edm::ValueMap<float> > HLTOfflineDQMTopSingleLepton::MonitorSingleLepton::electronId_
private

electronId label

Definition at line 102 of file TopSingleLeptonHLTOfflineDQM.h.

Referenced by fill(), and MonitorSingleLepton().

trigger::Vids HLTOfflineDQMTopSingleLepton::MonitorSingleLepton::electronIds_
private

Definition at line 155 of file TopSingleLeptonHLTOfflineDQM.h.

Referenced by fill().

trigger::VRelectron HLTOfflineDQMTopSingleLepton::MonitorSingleLepton::electronRefs_
private

Definition at line 156 of file TopSingleLeptonHLTOfflineDQM.h.

Referenced by fill().

std::string HLTOfflineDQMTopSingleLepton::MonitorSingleLepton::folder_
private

Definition at line 80 of file TopSingleLeptonHLTOfflineDQM.h.

Referenced by book(), and MonitorSingleLepton().

std::map<std::string,MonitorElement*> HLTOfflineDQMTopSingleLepton::MonitorSingleLepton::hists_
private

histogram container

Definition at line 151 of file TopSingleLeptonHLTOfflineDQM.h.

Referenced by book(), booked(), fill(), and triggerBinLabels().

bool HLTOfflineDQMTopSingleLepton::MonitorSingleLepton::includeBTag_
private

include btag information or not to be determined from the cfg

Definition at line 138 of file TopSingleLeptonHLTOfflineDQM.h.

Referenced by fill(), and MonitorSingleLepton().

std::string HLTOfflineDQMTopSingleLepton::MonitorSingleLepton::jetCorrector_
private

jetCorrector

Definition at line 128 of file TopSingleLeptonHLTOfflineDQM.h.

Referenced by fill(), and MonitorSingleLepton().

edm::EDGetTokenT< reco::JetIDValueMap > HLTOfflineDQMTopSingleLepton::MonitorSingleLepton::jetIDLabel_
private

jetID as an extra selection type

Definition at line 130 of file TopSingleLeptonHLTOfflineDQM.h.

Referenced by fill(), and MonitorSingleLepton().

StringCutObjectSelector<reco::JetID>* HLTOfflineDQMTopSingleLepton::MonitorSingleLepton::jetIDSelect_
private

extra jetID selection on calo jets

Definition at line 132 of file TopSingleLeptonHLTOfflineDQM.h.

Referenced by fill(), and MonitorSingleLepton().

edm::EDGetTokenT< edm::View<reco::Jet> > HLTOfflineDQMTopSingleLepton::MonitorSingleLepton::jets_
private

Definition at line 91 of file TopSingleLeptonHLTOfflineDQM.h.

Referenced by fill(), and MonitorSingleLepton().

std::string HLTOfflineDQMTopSingleLepton::MonitorSingleLepton::jetSelect_
private

extra selection on jets (here given as std::string as it depends on the the jet type, which selections are valid and which not)

Definition at line 135 of file TopSingleLeptonHLTOfflineDQM.h.

Referenced by fill(), and MonitorSingleLepton().

std::string HLTOfflineDQMTopSingleLepton::MonitorSingleLepton::label_
private
int HLTOfflineDQMTopSingleLepton::MonitorSingleLepton::logged_
private

number of logged interesting events

Definition at line 149 of file TopSingleLeptonHLTOfflineDQM.h.

Referenced by fill().

double HLTOfflineDQMTopSingleLepton::MonitorSingleLepton::lowerEdge_
private

mass window upper and lower edge

Definition at line 146 of file TopSingleLeptonHLTOfflineDQM.h.

Referenced by fill(), and MonitorSingleLepton().

std::vector< edm::EDGetTokenT< edm::View<reco::MET> > > HLTOfflineDQMTopSingleLepton::MonitorSingleLepton::mets_
private

considers a vector of METs

Definition at line 87 of file TopSingleLeptonHLTOfflineDQM.h.

Referenced by fill(), and MonitorSingleLepton().

trigger::Vids HLTOfflineDQMTopSingleLepton::MonitorSingleLepton::muonIds_
private

Definition at line 157 of file TopSingleLeptonHLTOfflineDQM.h.

Referenced by fill().

StringCutObjectSelector<reco::Muon>* HLTOfflineDQMTopSingleLepton::MonitorSingleLepton::muonIso_
private

extra isolation criterion on muon

Definition at line 123 of file TopSingleLeptonHLTOfflineDQM.h.

Referenced by fill(), and MonitorSingleLepton().

trigger::VRmuon HLTOfflineDQMTopSingleLepton::MonitorSingleLepton::muonRefs_
private

Definition at line 158 of file TopSingleLeptonHLTOfflineDQM.h.

Referenced by fill().

edm::EDGetTokenT< edm::View<reco::Muon> > HLTOfflineDQMTopSingleLepton::MonitorSingleLepton::muons_
private

Definition at line 90 of file TopSingleLeptonHLTOfflineDQM.h.

Referenced by fill(), and MonitorSingleLepton().

StringCutObjectSelector<reco::Muon>* HLTOfflineDQMTopSingleLepton::MonitorSingleLepton::muonSelect_
private

extra selection on muons

Definition at line 125 of file TopSingleLeptonHLTOfflineDQM.h.

Referenced by fill(), and MonitorSingleLepton().

trigger::Vids HLTOfflineDQMTopSingleLepton::MonitorSingleLepton::pfjetIds_
private

Definition at line 159 of file TopSingleLeptonHLTOfflineDQM.h.

Referenced by fill().

trigger::VRpfjet HLTOfflineDQMTopSingleLepton::MonitorSingleLepton::pfjetRefs_
private

Definition at line 160 of file TopSingleLeptonHLTOfflineDQM.h.

Referenced by fill().

std::string HLTOfflineDQMTopSingleLepton::MonitorSingleLepton::processName_
private

hlt objects

Definition at line 154 of file TopSingleLeptonHLTOfflineDQM.h.

Referenced by fill(), and MonitorSingleLepton().

edm::EDGetTokenT< edm::View<reco::Vertex> > HLTOfflineDQMTopSingleLepton::MonitorSingleLepton::pvs_
private

Definition at line 92 of file TopSingleLeptonHLTOfflineDQM.h.

Referenced by fill(), and MonitorSingleLepton().

StringCutObjectSelector<reco::Vertex>* HLTOfflineDQMTopSingleLepton::MonitorSingleLepton::pvSelect_
private

extra selection on primary vertices; meant to investigate the pile-up effect

Definition at line 120 of file TopSingleLeptonHLTOfflineDQM.h.

Referenced by fill(), and MonitorSingleLepton().

edm::EDGetTokenT< trigger::TriggerEventWithRefs > HLTOfflineDQMTopSingleLepton::MonitorSingleLepton::triggerEventWithRefsTag_
private

Definition at line 96 of file TopSingleLeptonHLTOfflineDQM.h.

Referenced by fill(), and MonitorSingleLepton().

std::vector<std::string> HLTOfflineDQMTopSingleLepton::MonitorSingleLepton::triggerPaths_
private

trigger paths for monitoring, expected to be of form signalPath:MonitorPath

Definition at line 99 of file TopSingleLeptonHLTOfflineDQM.h.

Referenced by book(), fill(), and MonitorSingleLepton().

edm::EDGetTokenT< edm::TriggerResults > HLTOfflineDQMTopSingleLepton::MonitorSingleLepton::triggerTable_
private

trigger table

Definition at line 95 of file TopSingleLeptonHLTOfflineDQM.h.

Referenced by fill(), and MonitorSingleLepton().

double HLTOfflineDQMTopSingleLepton::MonitorSingleLepton::upperEdge_
private

Definition at line 146 of file TopSingleLeptonHLTOfflineDQM.h.

Referenced by fill(), and MonitorSingleLepton().