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