CMS 3D CMS Logo

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

#include <TopSingleLeptonDQM.h>

Public Types

enum  Level { STANDARD, VERBOSE, DEBUG }
 different verbosity levels More...
 

Public Member Functions

void book (std::string directory)
 book histograms in subdirectory directory More...
 
void fill (const edm::Event &event, const edm::EventSetup &setup)
 fill monitor histograms with electronId and jetCorrections More...
 
 MonitorEnsemble (const char *label, const edm::ParameterSet &cfg)
 default contructor More...
 
 ~MonitorEnsemble ()
 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::InputTag btagEff_
 btag discriminator labels More...
 
double btagEffWP_
 btag working points More...
 
edm::InputTag btagPur_
 
double btagPurWP_
 
edm::InputTag btagVtx_
 
double btagVtxWP_
 
int eidPattern_
 
StringCutObjectSelector
< reco::GsfElectron > * 
elecIso_
 extra isolation criterion on electron More...
 
edm::InputTag elecs_
 input sources for monitoring More...
 
StringCutObjectSelector
< reco::GsfElectron > * 
elecSelect_
 extra selection on electrons More...
 
edm::InputTag electronId_
 electronId label More...
 
std::map< std::string,
MonitorElement * > 
hists_
 histogram container More...
 
bool includeBTag_
 
std::string jetCorrector_
 jetCorrector More...
 
edm::InputTag jetIDLabel_
 jetID as an extra selection type More...
 
StringCutObjectSelector
< reco::JetID > * 
jetIDSelect_
 extra jetID selection on calo jets More...
 
edm::InputTag 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::InputTagmets_
 considers a vector of METs More...
 
StringCutObjectSelector
< reco::Muon > * 
muonIso_
 extra isolation criterion on muon More...
 
edm::InputTag muons_
 
StringCutObjectSelector
< reco::Muon > * 
muonSelect_
 extra selection on muons More...
 
DQMStorestore_
 storage manager More...
 
std::vector< std::string > triggerPaths_
 
edm::InputTag triggerTable_
 trigger table More...
 
double upperEdge_
 
Level verbosity_
 verbosity level for booking More...
 

Detailed Description

Definition at line 39 of file TopSingleLeptonDQM.h.

Member Enumeration Documentation

Constructor & Destructor Documentation

MonitorEnsemble::MonitorEnsemble ( const char *  label,
const edm::ParameterSet cfg 
)

default contructor

Definition at line 17 of file TopSingleLeptonDQM.cc.

References book(), btagEff_, btagEffWP_, btagPur_, btagPurWP_, btagVtx_, btagVtxWP_, DEBUG, eidPattern_, elecIso_, elecs_, elecSelect_, electronId_, edm::ParameterSet::existsAs(), edm::ParameterSet::getParameter(), includeBTag_, jetCorrector_, jetIDLabel_, jetIDSelect_, jets_, jetSelect_, lowerEdge_, mets_, muonIso_, muons_, muonSelect_, STANDARD, triggerPaths_, triggerTable_, upperEdge_, VERBOSE, and verbosity_.

17  :
19  {
20  // sources have to be given; this PSet is not optional
21  edm::ParameterSet sources=cfg.getParameter<edm::ParameterSet>("sources");
22  muons_= sources.getParameter<edm::InputTag>("muons");
23  elecs_= sources.getParameter<edm::InputTag>("elecs");
24  jets_ = sources.getParameter<edm::InputTag>("jets" );
25  mets_ = sources.getParameter<std::vector<edm::InputTag> >("mets" );
26 
27  // electronExtras are optional; they may be omitted or
28  // empty
29  if( cfg.existsAs<edm::ParameterSet>("elecExtras") ){
30  edm::ParameterSet elecExtras=cfg.getParameter<edm::ParameterSet>("elecExtras");
31  // select is optional; in case it's not found no
32  // selection will be applied
33  if( elecExtras.existsAs<std::string>("select") ){
34  elecSelect_= new StringCutObjectSelector<reco::GsfElectron>(elecExtras.getParameter<std::string>("select"));
35  }
36  // isolation is optional; in case it's not found no
37  // isolation will be applied
38  if( elecExtras.existsAs<std::string>("isolation") ){
39  elecIso_= new StringCutObjectSelector<reco::GsfElectron>(elecExtras.getParameter<std::string>("isolation"));
40  }
41  // electronId is optional; in case it's not found the
42  // InputTag will remain empty
43  if( elecExtras.existsAs<edm::ParameterSet>("electronId") ){
44  edm::ParameterSet elecId=elecExtras.getParameter<edm::ParameterSet>("electronId");
45  electronId_= elecId.getParameter<edm::InputTag>("src");
46  eidPattern_= elecId.getParameter<int>("pattern");
47  }
48  }
49 
50  // muonExtras are optional; they may be omitted or empty
51  if( cfg.existsAs<edm::ParameterSet>("muonExtras") ){
52  edm::ParameterSet muonExtras=cfg.getParameter<edm::ParameterSet>("muonExtras");
53  // select is optional; in case it's not found no
54  // selection will be applied
55  if( muonExtras.existsAs<std::string>("select") ){
56  muonSelect_= new StringCutObjectSelector<reco::Muon>(muonExtras.getParameter<std::string>("select"));
57  }
58  // isolation is optional; in case it's not found no
59  // isolation will be applied
60  if( muonExtras.existsAs<std::string>("isolation") ){
61  muonIso_= new StringCutObjectSelector<reco::Muon>(muonExtras.getParameter<std::string>("isolation"));
62  }
63  }
64 
65  // jetExtras are optional; they may be omitted or
66  // empty
67  if( cfg.existsAs<edm::ParameterSet>("jetExtras") ){
68  edm::ParameterSet jetExtras=cfg.getParameter<edm::ParameterSet>("jetExtras");
69  // jetCorrector is optional; in case it's not found
70  // the InputTag will remain empty
71  if( jetExtras.existsAs<std::string>("jetCorrector") ){
72  jetCorrector_= jetExtras.getParameter<std::string>("jetCorrector");
73  }
74  // read jetID information if it exists
75  if(jetExtras.existsAs<edm::ParameterSet>("jetID")){
76  edm::ParameterSet jetID=jetExtras.getParameter<edm::ParameterSet>("jetID");
77  jetIDLabel_ =jetID.getParameter<edm::InputTag>("label");
78  jetIDSelect_= new StringCutObjectSelector<reco::JetID>(jetID.getParameter<std::string>("select"));
79  }
80  // select is optional; in case it's not found no
81  // selection will be applied (only implemented for
82  // CaloJets at the moment)
83  if( jetExtras.existsAs<std::string>("select") ){
84  jetSelect_= jetExtras.getParameter<std::string>("select");
85  }
86  // jetBDiscriminators are optional; in case they are
87  // not found the InputTag will remain empty; they
88  // consist of pairs of edm::JetFlavorAssociation's &
89  // corresponding working points
90  includeBTag_=jetExtras.existsAs<edm::ParameterSet>("jetBTaggers");
91  if( includeBTag_ ){
92  edm::ParameterSet btagEff=jetExtras.getParameter<edm::ParameterSet>("jetBTaggers").getParameter<edm::ParameterSet>("trackCountingEff");
93  btagEff_= btagEff.getParameter<edm::InputTag>("label"); btagEffWP_= btagEff.getParameter<double>("workingPoint");
94  edm::ParameterSet btagPur=jetExtras.getParameter<edm::ParameterSet>("jetBTaggers").getParameter<edm::ParameterSet>("trackCountingPur");
95  btagPur_= btagPur.getParameter<edm::InputTag>("label"); btagPurWP_= btagPur.getParameter<double>("workingPoint");
96  edm::ParameterSet btagVtx=jetExtras.getParameter<edm::ParameterSet>("jetBTaggers").getParameter<edm::ParameterSet>("secondaryVertex" );
97  btagVtx_= btagVtx.getParameter<edm::InputTag>("label"); btagVtxWP_= btagVtx.getParameter<double>("workingPoint");
98  }
99  }
100 
101  // triggerExtras are optional; they may be omitted or empty
102  if( cfg.existsAs<edm::ParameterSet>("triggerExtras") ){
103  edm::ParameterSet triggerExtras=cfg.getParameter<edm::ParameterSet>("triggerExtras");
104  triggerTable_=triggerExtras.getParameter<edm::InputTag>("src");
105  triggerPaths_=triggerExtras.getParameter<std::vector<std::string> >("paths");
106  }
107 
108  // massExtras is optional; in case it's not found no mass
109  // window cuts are applied for the same flavor monitor
110  // histograms
111  if( cfg.existsAs<edm::ParameterSet>("massExtras") ){
112  edm::ParameterSet massExtras=cfg.getParameter<edm::ParameterSet>("massExtras");
113  lowerEdge_= massExtras.getParameter<double>("lowerEdge");
114  upperEdge_= massExtras.getParameter<double>("upperEdge");
115  }
116 
117  // setup the verbosity level for booking histograms;
118  // per default the verbosity level will be set to
119  // STANDARD. This will also be the chosen level in
120  // the case when the monitoring PSet is not found
122  if( cfg.existsAs<edm::ParameterSet>("monitoring") ){
123  edm::ParameterSet monitoring=cfg.getParameter<edm::ParameterSet>("monitoring");
124  if(monitoring.getParameter<std::string>("verbosity") == "DEBUG" )
125  verbosity_= DEBUG;
126  if(monitoring.getParameter<std::string>("verbosity") == "VERBOSE" )
128  if(monitoring.getParameter<std::string>("verbosity") == "STANDARD")
130  }
131  // and don't forget to do the histogram booking
132  book(cfg.getParameter<std::string>("directory"));
133  }
T getParameter(std::string const &) const
int logged_
number of logged interesting events
double btagEffWP_
btag working points
bool existsAs(std::string const &parameterName, bool trackiness=true) const
checks if a parameter exists as a given type
Definition: ParameterSet.h:181
const std::string & label
Definition: MVAComputer.cc:186
edm::InputTag elecs_
input sources for monitoring
edm::InputTag triggerTable_
trigger table
std::vector< edm::InputTag > mets_
considers a vector of METs
std::vector< std::string > triggerPaths_
Level verbosity_
verbosity level for booking
double lowerEdge_
mass window upper and lower edge
edm::InputTag btagEff_
btag discriminator labels
StringCutObjectSelector< reco::Muon > * muonSelect_
extra selection on muons
void book(std::string directory)
book histograms in subdirectory directory
StringCutObjectSelector< reco::GsfElectron > * elecIso_
extra isolation criterion on electron
edm::InputTag jetIDLabel_
jetID as an extra selection type
std::string label_
instance label
StringCutObjectSelector< reco::GsfElectron > * elecSelect_
extra selection on electrons
StringCutObjectSelector< reco::Muon > * muonIso_
extra isolation criterion on muon
edm::InputTag electronId_
electronId label
std::string jetCorrector_
jetCorrector
StringCutObjectSelector< reco::JetID > * jetIDSelect_
extra jetID selection on calo jets
TopSingleLepton::MonitorEnsemble::~MonitorEnsemble ( )
inline

default destructor

Definition at line 48 of file TopSingleLeptonDQM.h.

48 {};

Member Function Documentation

void MonitorEnsemble::book ( std::string  directory)

book histograms in subdirectory directory

Definition at line 136 of file TopSingleLeptonDQM.cc.

References DQMStore::book1D(), DQMStore::book2D(), cond::rpcobimon::current, hists_, label_, cmsCodeRules.cppFunctionSkipper::operator, DQMStore::setCurrentFolder(), STANDARD, store_, triggerBinLabels(), triggerPaths_, VERBOSE, and verbosity_.

Referenced by MonitorEnsemble().

137  {
138  //set up the current directory path
139  std::string current(directory); current+=label_;
142 
143  // determine number of bins for trigger monitoring
144  unsigned int nPaths=triggerPaths_.size();
145 
146  // --- [STANDARD] --- //
147  // pt of the leading muon
148  hists_["muonPt_" ] = store_->book1D("MuonPt" , "pt(#mu)" , 50, 0., 250.);
149  // muon multiplicity before std isolation
150  hists_["muonMult_" ] = store_->book1D("MuonMult" , "N_{All}(#mu)" , 10, 0., 10.);
151  // muon multiplicity after std isolation
152  hists_["muonMultIso_"] = store_->book1D("MuonMultIso", "N_{Iso}(#mu)" , 10, 0., 10.);
153  // pt of the leading electron
154  hists_["elecPt_" ] = store_->book1D("ElecPt" , "pt(e)" , 50, 0., 250.);
155  // electron multiplicity before std isolation
156  hists_["elecMult_" ] = store_->book1D("ElecMult" , "N_{All}(e)" , 10, 0., 10.);
157  // electron multiplicity after std isolation
158  hists_["elecMultIso_"] = store_->book1D("ElecMultIso", "N_{Iso}(e)" , 10, 0., 10.);
159  // multiplicity of jets with pt>20 (corrected to L2+L3)
160  hists_["jetMult_" ] = store_->book1D("JetMult" , "N_{30}(jet)" , 10, 0., 10.);
161  // trigger efficiency estimates for single lepton triggers
162  hists_["triggerEff_" ] = store_->book1D("TriggerEff" , "Eff(trigger)" , nPaths, 0., nPaths);
163  // monitored trigger occupancy for single lepton triggers
164  hists_["triggerMon_" ] = store_->book1D("TriggerMon" , "Mon(trigger)" , nPaths, 0., nPaths);
165  // MET (calo)
166  hists_["metCalo_" ] = store_->book1D("METCalo" , "MET_{Calo}" , 50, 0., 200.);
167  // W mass estimate
168  hists_["massW_" ] = store_->book1D("MassW" , "M(W)" , 60, 0., 300.);
169  // Top mass estimate
170  hists_["massTop_" ] = store_->book1D("MassTop" , "M(Top)" , 50, 0., 500.);
171 
172  // set bin labels for trigger monitoring
173  triggerBinLabels(std::string("trigger"), triggerPaths_);
174 
175  if( verbosity_==STANDARD) return;
176 
177  // --- [VERBOSE] --- //
178  // eta of the leading muon
179  hists_["muonEta_" ] = store_->book1D("MuonEta" , "#eta(#mu)" , 30, -3., 3.);
180  // std isolation variable of the leading muon
181  hists_["muonRelIso_" ] = store_->book1D("MuonRelIso" , "Iso_{Rel}(#mu)" , 50, 0., 1.);
182  // eta of the leading electron
183  hists_["elecEta_" ] = store_->book1D("ElecEta" , "#eta(e)" , 30, -3., 3.);
184  // std isolation variable of the leading electron
185  hists_["elecRelIso_" ] = store_->book1D("ElecRelIso" , "Iso_{Rel}(e)" , 50, 0., 1.);
186  // multiplicity of btagged jets (for track counting high efficiency) with pt(L2L3)>30
187  hists_["jetMultBEff_"] = store_->book1D("JetMultBEff", "N_{30}(b/eff)" , 10, 0., 10.);
188  // btag discriminator for track counting high efficiency for jets with pt(L2L3)>30
189  hists_["jetBDiscEff_"] = store_->book1D("JetBDiscEff", "Disc_{b/eff}(jet)", 100, 0., 10.);
190  // pt of the 1. leading jet (corrected to L2+L3)
191  hists_["jet1Pt_" ] = store_->book1D("Jet1Pt" , "pt_{L2L3}(jet1)" , 60, 0., 300.);
192  // pt of the 2. leading jet (corrected to L2+L3)
193  hists_["jet2Pt_" ] = store_->book1D("Jet2Pt" , "pt_{L2L3}(jet2)" , 60, 0., 300.);
194  // pt of the 3. leading jet (corrected to L2+L3)
195  hists_["jet3Pt_" ] = store_->book1D("Jet3Pt" , "pt_{L2L3}(jet3)" , 60, 0., 300.);
196  // pt of the 4. leading jet (corrected to L2+L3)
197  hists_["jet4Pt_" ] = store_->book1D("Jet4Pt" , "pt_{L2L3}(jet4)" , 60, 0., 300.);
198  // MET (tc)
199  hists_["metTC_" ] = store_->book1D("METTC" , "MET_{TC}" , 50, 0., 200.);
200  // MET (pflow)
201  hists_["metPflow_" ] = store_->book1D("METPflow" , "MET_{Pflow}" , 50, 0., 200.);
202  // dz for muons (to suppress cosmis)
203  hists_["muonDelZ_" ] = store_->book1D("MuonDelZ" , "d_{z}(#mu)" , 50, -25., 25.);
204  // dxy for muons (to suppress cosmics)
205  hists_["muonDelXY_" ] = store_->book2D("MuonDelXY" , "d_{xy}(#mu)" , 50, -0.1, 0.1, 50, -0.1, 0.1);
206 
207  // set axes titles for dxy for muons
208  hists_["muonDelXY_" ]->setAxisTitle( "x [cm]", 1); hists_["muonDelXY_" ]->setAxisTitle( "y [cm]", 2);
209 
210  if( verbosity_==VERBOSE) return;
211 
212  // --- [DEBUG] --- //
213  // relative muon isolation in tracker for the leading muon
214  hists_["muonTrkIso_" ] = store_->book1D("MuonTrkIso" , "Iso_{Trk}(#mu)" , 50, 0., 1.);
215  // relative muon isolation in ecal+hcal for the leading muon
216  hists_["muonCalIso_" ] = store_->book1D("MuonCalIso" , "Iso_{Ecal}(#mu)" , 50, 0., 1.);
217  // relative electron isolation in tracker for the leading electron
218  hists_["elecTrkIso_" ] = store_->book1D("ElecTrkIso" , "Iso_{Trk}(e)" , 50, 0., 1.);
219  // relative electron isolation in ecal+hcal for the leading electron
220  hists_["elecCalIso_" ] = store_->book1D("ElecCalIso" , "Iso_{Ecal}(e)" , 50, 0., 1.);
221  // multiplicity of btagged jets (for track counting high purity) with pt(L2L3)>30
222  hists_["jetMultBPur_"] = store_->book1D("JetMultBPur", "N_{30}(b/pur)" , 10, 0., 10.);
223  // btag discriminator for track counting high purity
224  hists_["jetBDiscPur_"] = store_->book1D("JetBDiscPur", "Disc_{b/pur}(Jet)", 100, 0., 10.);
225  // multiplicity of btagged jets (for simple secondary vertex) with pt(L2L3)>30
226  hists_["jetMultBVtx_"] = store_->book1D("JetMultBVtx", "N_{30}(b/vtx)" , 10, 0., 10.);
227  // btag discriminator for simple secondary vertex
228  hists_["jetBDiscVtx_"] = store_->book1D("JetBDiscVtx", "Disc_{b/vtx}(Jet)", 35, -1., 6.);
229  // pt of the 1. leading jet (uncorrected)
230  hists_["jet1PtRaw_" ] = store_->book1D("Jet1PtRaw" , "pt_{Raw}(jet1)" , 60, 0., 300.);
231  // pt of the 2. leading jet (uncorrected)
232  hists_["jet2PtRaw_" ] = store_->book1D("Jet2PtRaw" , "pt_{Raw}(jet2)" , 60, 0., 300.);
233  // pt of the 3. leading jet (uncorrected)
234  hists_["jet3PtRaw_" ] = store_->book1D("Jet3PtRaw" , "pt_{Raw}(jet3)" , 60, 0., 300.);
235  // pt of the 4. leading jet (uncorrected)
236  hists_["jet4PtRaw_" ] = store_->book1D("Jet4PtRaw" , "pt_{Raw}(jet4)" , 60, 0., 300.);
237  // selected events
238  hists_["eventLogger_"] = store_->book2D("EventLogger", "Logged Events" , 9, 0., 9., 10, 0., 10.);
239 
240  // set axes titles for selected events
241  hists_["eventLogger_"]->getTH1()->SetOption("TEXT");
242  hists_["eventLogger_"]->setBinLabel( 1 , "Run" , 1);
243  hists_["eventLogger_"]->setBinLabel( 2 , "Block" , 1);
244  hists_["eventLogger_"]->setBinLabel( 3 , "Event" , 1);
245  hists_["eventLogger_"]->setBinLabel( 4 , "pt_{L2L3}(jet1)" , 1);
246  hists_["eventLogger_"]->setBinLabel( 5 , "pt_{L2L3}(jet2)" , 1);
247  hists_["eventLogger_"]->setBinLabel( 6 , "pt_{L2L3}(jet3)" , 1);
248  hists_["eventLogger_"]->setBinLabel( 7 , "pt_{L2L3}(jet4)" , 1);
249  hists_["eventLogger_"]->setBinLabel( 8 , "M_{W}" , 1);
250  hists_["eventLogger_"]->setBinLabel( 9 , "M_{Top}" , 1);
251  hists_["eventLogger_"]->setAxisTitle("logged evts" , 2);
252  return;
253  }
std::map< std::string, MonitorElement * > hists_
histogram container
MonitorElement * book1D(const char *name, const char *title, int nchX, double lowX, double highX)
Book 1D histogram.
Definition: DQMStore.cc:514
std::vector< std::string > triggerPaths_
Level verbosity_
verbosity level for booking
std::string label_
instance label
void triggerBinLabels(std::string channel, const std::vector< std::string > labels)
set configurable labels for trigger monitoring histograms
MonitorElement * book2D(const char *name, const char *title, int nchX, double lowX, double highX, int nchY, double lowY, double highY)
Book 2D histogram.
Definition: DQMStore.cc:642
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:232
DQMStore * store_
storage manager
bool TopSingleLepton::MonitorEnsemble::booked ( const std::string  histName) const
inlineprivate

check if histogram was booked

Definition at line 69 of file TopSingleLeptonDQM.h.

References hists_.

Referenced by fill().

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

fill monitor histograms with electronId and jetCorrections

Definition at line 256 of file TopSingleLeptonDQM.cc.

References btagEff_, btagEffWP_, btagPur_, btagPurWP_, btagVtx_, btagVtxWP_, JetCorrector::correction(), eidPattern_, elecIso_, elecs_, elecSelect_, electronId_, edm::EventAuxiliary::event(), edm::Event::eventAuxiliary(), edm::EventSetup::find(), edm::Event::getByLabel(), JetCorrector::getJetCorrector(), hists_, includeBTag_, metsig::jet, jetCorrector_, jetIDLabel_, jetIDSelect_, analyzePatCleaning_cfg::jets, jets_, jetSelect_, edm::InputTag::label(), logged_, lowerEdge_, edm::EventAuxiliary::luminosityBlock(), Calculate::massTopQuark(), Calculate::massWBoson(), TopSingleLepton::MAXJETS, CaloMET_cfi::met, mets_, VarParsing::mult, metsig::muon, muonIso_, patZpeak::muons, muons_, muonSelect_, reco::LeafCandidate::pt(), edm::EventAuxiliary::run(), reco::Jet::scaleEnergy(), runTheMatrix::sel, triggerPaths_, triggerTable_, upperEdge_, and TopSingleLepton::WMASS.

Referenced by fill().

257  {
258  // fetch trigger event if configured such
260  if(!triggerTable_.label().empty()) {
261  if( !event.getByLabel(triggerTable_, triggerTable) ) return;
262  }
263 
264  /*
265  ------------------------------------------------------------
266 
267  Electron Monitoring
268 
269  ------------------------------------------------------------
270  */
271 
272  // fill monitoring plots for electrons
274  if( !event.getByLabel(elecs_, elecs) ) return;
275 
276  // check availability of electron id
277  edm::Handle<edm::ValueMap<float> > electronId;
278  if(!electronId_.label().empty()) {
279  if( !event.getByLabel(electronId_, electronId) ) return;
280  }
281 
282  // loop electron collection
283  unsigned int eMult=0, eMultIso=0;
284  std::vector<const reco::GsfElectron*> isoElecs;
285  for(edm::View<reco::GsfElectron>::const_iterator elec=elecs->begin(); elec!=elecs->end(); ++elec){
286  unsigned int idx = elec-elecs->begin();
287  // restrict to electrons with good electronId
288  if( electronId_.label().empty() ? true : ((int)(*electronId)[elecs->refAt(idx)] & eidPattern_) ){
289  if(!elecSelect_ || (*elecSelect_)(*elec)){
290  double isolationTrk = elec->pt()/(elec->pt()+elec->dr03TkSumPt());
291  double isolationCal = elec->pt()/(elec->pt()+elec->dr03EcalRecHitSumEt()+elec->dr03HcalTowerSumEt());
292  double isolationRel = (elec->dr03TkSumPt()+elec->dr03EcalRecHitSumEt()+elec->dr03HcalTowerSumEt())/elec->pt();
293  if( eMult==0 ){
294  // restrict to the leading electron
295  fill("elecPt_" , elec->pt() );
296  fill("elecEta_", elec->eta());
297  fill("elecRelIso_" , isolationRel );
298  fill("elecTrkIso_" , isolationTrk );
299  fill("elecCalIso_" , isolationCal );
300  }
301  // in addition to the multiplicity counter buffer the iso
302  // electron candidates for later overlap check with jets
303  ++eMult; if(!elecIso_ || (*elecIso_)(*elec)){ isoElecs.push_back(&(*elec)); ++eMultIso;}
304  }
305  }
306  }
307  fill("elecMult_", eMult );
308  fill("elecMultIso_", eMultIso);
309 
310  /*
311  ------------------------------------------------------------
312 
313  Muon Monitoring
314 
315  ------------------------------------------------------------
316  */
317 
318  // fill monitoring plots for muons
319  unsigned int mMult=0, mMultIso=0;
320 
322  if( !event.getByLabel(muons_, muons) ) return;
323 
324  for(edm::View<reco::Muon>::const_iterator muon=muons->begin(); muon!=muons->end(); ++muon){
325  // restrict to globalMuons
326  if( muon->isGlobalMuon() ){
327  fill("muonDelZ_" , muon->globalTrack()->vz());
328  fill("muonDelXY_", muon->globalTrack()->vx(), muon->globalTrack()->vy());
329  // apply preselection
330  if(!muonSelect_ || (*muonSelect_)(*muon)){
331  double isolationTrk = muon->pt()/(muon->pt()+muon->isolationR03().sumPt);
332  double isolationCal = muon->pt()/(muon->pt()+muon->isolationR03().emEt+muon->isolationR03().hadEt);
333  double isolationRel = (muon->isolationR03().sumPt+muon->isolationR03().emEt+muon->isolationR03().hadEt)/muon->pt();
334  if( mMult==0 ){
335  // restrict to leading muon
336  fill("muonPt_" , muon->pt() );
337  fill("muonEta_" , muon->eta());
338  fill("muonRelIso_" , isolationRel );
339  fill("muonTrkIso_" , isolationTrk );
340  fill("muonCalIso_" , isolationCal );
341  }
342  ++mMult; if(!muonIso_ || (*muonIso_)(*muon)) ++mMultIso;
343  }
344  }
345  }
346  fill("muonMult_", mMult );
347  fill("muonMultIso_", mMultIso);
348 
349  /*
350  ------------------------------------------------------------
351 
352  Jet Monitoring
353 
354  ------------------------------------------------------------
355  */
356 
357  // check availability of the btaggers
358  edm::Handle<reco::JetTagCollection> btagEff, btagPur, btagVtx;
359  if( includeBTag_ ){
360  if( !event.getByLabel(btagEff_, btagEff) ) return;
361  if( !event.getByLabel(btagPur_, btagPur) ) return;
362  if( !event.getByLabel(btagVtx_, btagVtx) ) return;
363  }
364  // load jet corrector if configured such
365  const JetCorrector* corrector=0;
366  if(!jetCorrector_.empty()){
367  // check whether a jet correcto is in the event setup or not
368  if(setup.find( edm::eventsetup::EventSetupRecordKey::makeKey<JetCorrectionsRecord>() )){
369  corrector = JetCorrector::getJetCorrector(jetCorrector_, setup);
370  }
371  else{
372  edm::LogVerbatim( "TopSingleLeptonDQM" )
373  << "\n"
374  << "------------------------------------------------------------------------------------- \n"
375  << " No JetCorrectionsRecord available from EventSetup: \n"
376  << " - Jets will not be corrected. \n"
377  << " - If you want to change this add the following lines to your cfg file: \n"
378  << " \n"
379  << " ## load jet corrections \n"
380  << " process.load(\"JetMETCorrections.Configuration.JetCorrectionServicesAllAlgos_cff\") \n"
381  << " process.prefer(\"ak5CaloL2L3\") \n"
382  << " \n"
383  << "------------------------------------------------------------------------------------- \n";
384  }
385  }
386 
387  // loop jet collection
388  std::vector<reco::Jet> correctedJets;
389  unsigned int mult=0, multBEff=0, multBPur=0, multBVtx=0;
390 
392  if( !event.getByLabel(jets_, jets) ) return;
393 
395  if(jetIDSelect_){
396  if( !event.getByLabel(jetIDLabel_, jetID) ) return;
397  }
398 
399  for(edm::View<reco::Jet>::const_iterator jet=jets->begin(); jet!=jets->end(); ++jet){
400  // check jetID for calo jets
401  unsigned int idx = jet-jets->begin();
402  if( jetIDSelect_ && dynamic_cast<const reco::CaloJet*>(jets->refAt(idx).get())){
403  if(!(*jetIDSelect_)((*jetID)[jets->refAt(idx)])) continue;
404  }
405  // chekc additional jet selection for calo, pf and bare reco jets
406  if(dynamic_cast<const reco::CaloJet*>(&*jet)){
407  reco::CaloJet sel = dynamic_cast<const reco::CaloJet&>(*jet); sel.scaleEnergy(corrector ? corrector->correction(*jet) : 1.);
408  StringCutObjectSelector<reco::CaloJet> jetSelect(jetSelect_); if(!jetSelect(sel)){ continue;}
409  }
410  else if(dynamic_cast<const reco::PFJet*>(&*jet)){
411  reco::PFJet sel= dynamic_cast<const reco::PFJet&>(*jet); sel.scaleEnergy(corrector ? corrector->correction(*jet) : 1.);
412  StringCutObjectSelector<reco::PFJet> jetSelect(jetSelect_); if(!jetSelect(sel)) continue;
413  }
414  else{
415  reco::Jet sel = *jet; sel.scaleEnergy(corrector ? corrector->correction(*jet) : 1.);
416  StringCutObjectSelector<reco::Jet> jetSelect(jetSelect_); if(!jetSelect(sel)) continue;
417  }
418  // check for overlaps -- comment this to be synchronous with the selection
419  //bool overlap=false;
420  //for(std::vector<const reco::GsfElectron*>::const_iterator elec=isoElecs.begin(); elec!=isoElecs.end(); ++elec){
421  // if(reco::deltaR((*elec)->eta(), (*elec)->phi(), jet->eta(), jet->phi())<0.4){overlap=true; break;}
422  //} if(overlap){continue;}
423 
424  // prepare jet to fill monitor histograms
425  reco::Jet monitorJet = *jet; monitorJet.scaleEnergy(corrector ? corrector->correction(*jet) : 1.);
426  correctedJets.push_back(monitorJet);
427  ++mult; // determine jet multiplicity
428  if( includeBTag_ ){
429  // fill b-discriminators
430  edm::RefToBase<reco::Jet> jetRef = jets->refAt(idx);
431  fill("jetBDiscEff_", (*btagEff)[jetRef]); if( (*btagEff)[jetRef]>btagEffWP_ ) ++multBEff;
432  fill("jetBDiscPur_", (*btagPur)[jetRef]); if( (*btagPur)[jetRef]>btagPurWP_ ) ++multBPur;
433  fill("jetBDiscVtx_", (*btagVtx)[jetRef]); if( (*btagVtx)[jetRef]>btagVtxWP_ ) ++multBVtx;
434  }
435  // fill pt (raw or L2L3) for the leading four jets
436  if(idx==0) {fill("jet1Pt_" , monitorJet.pt()); fill("jet1PtRaw_", jet->pt() );}
437  if(idx==1) {fill("jet2Pt_" , monitorJet.pt()); fill("jet2PtRaw_", jet->pt() );}
438  if(idx==2) {fill("jet3Pt_" , monitorJet.pt()); fill("jet3PtRaw_", jet->pt() );}
439  if(idx==3) {fill("jet4Pt_" , monitorJet.pt()); fill("jet4PtRaw_", jet->pt() );}
440  }
441  fill("jetMult_" , mult );
442  fill("jetMultBEff_", multBEff);
443  fill("jetMultBPur_", multBPur);
444  fill("jetMultBVtx_", multBVtx);
445 
446  /*
447  ------------------------------------------------------------
448 
449  MET Monitoring
450 
451  ------------------------------------------------------------
452  */
453 
454  // fill monitoring histograms for met
455  for(std::vector<edm::InputTag>::const_iterator met_=mets_.begin(); met_!=mets_.end(); ++met_){
457  if( !event.getByLabel(*met_, met) ) continue;
458  if(met->begin()!=met->end()){
459  unsigned int idx=met_-mets_.begin();
460  if(idx==0) fill("metCalo_" , met->begin()->et());
461  if(idx==1) fill("metTC_" , met->begin()->et());
462  if(idx==2) fill("metPflow_", met->begin()->et());
463  }
464  }
465 
466  /*
467  ------------------------------------------------------------
468 
469  Event Monitoring
470 
471  ------------------------------------------------------------
472  */
473 
474  // fill W boson and top mass estimates
475  Calculate eventKinematics(MAXJETS, WMASS);
476  double wMass = eventKinematics.massWBoson (correctedJets);
477  double topMass = eventKinematics.massTopQuark(correctedJets);
478  if(wMass>=0 && topMass>=0) {fill("massW_" , wMass ); fill("massTop_" , topMass);}
479  // fill plots for trigger monitoring
480  if((lowerEdge_==-1. && upperEdge_==-1.) || (lowerEdge_<wMass && wMass<upperEdge_) ){
481  if(!triggerTable_.label().empty()) fill(event, *triggerTable, "trigger", triggerPaths_);
482  if(logged_<=hists_.find("eventLogger_")->second->getNbinsY()){
483  // log runnumber, lumi block, event number & some
484  // more pysics infomation for interesting events
485  fill("eventLogger_", 0.5, logged_+0.5, event.eventAuxiliary().run());
486  fill("eventLogger_", 1.5, logged_+0.5, event.eventAuxiliary().luminosityBlock());
487  fill("eventLogger_", 2.5, logged_+0.5, event.eventAuxiliary().event());
488  if(correctedJets.size()>0) fill("eventLogger_", 3.5, logged_+0.5, correctedJets[0].pt());
489  if(correctedJets.size()>1) fill("eventLogger_", 4.5, logged_+0.5, correctedJets[1].pt());
490  if(correctedJets.size()>2) fill("eventLogger_", 5.5, logged_+0.5, correctedJets[2].pt());
491  if(correctedJets.size()>3) fill("eventLogger_", 6.5, logged_+0.5, correctedJets[3].pt());
492  fill("eventLogger_", 7.5, logged_+0.5, wMass );
493  fill("eventLogger_", 8.5, logged_+0.5, topMass);
494  ++logged_;
495  }
496  }
497  }
std::map< std::string, MonitorElement * > hists_
histogram container
int logged_
number of logged interesting events
double btagEffWP_
btag working points
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
Definition: View.h:86
Jets made from CaloTowers.
Definition: CaloJet.h:30
edm::InputTag elecs_
input sources for monitoring
edm::InputTag triggerTable_
trigger table
std::vector< edm::InputTag > mets_
considers a vector of METs
std::vector< std::string > triggerPaths_
virtual double correction(const LorentzVector &fJet) const =0
get correction using Jet information only
Base class for all types of Jets.
Definition: Jet.h:21
RunNumber_t run() const
virtual void scaleEnergy(double fScale)
scale energy of the jet
Definition: Jet.cc:386
Jets made from PFObjects.
Definition: PFJet.h:22
LuminosityBlockNumber_t luminosityBlock() const
const eventsetup::EventSetupRecord * find(const eventsetup::EventSetupRecordKey &) const
Definition: EventSetup.cc:90
static const double WMASS
double lowerEdge_
mass window upper and lower edge
edm::InputTag btagEff_
btag discriminator labels
Helper class for the calculation of a top and a W boson mass estime.
Definition: TopDQMHelpers.h:64
StringCutObjectSelector< reco::Muon > * muonSelect_
extra selection on muons
StringCutObjectSelector< reco::GsfElectron > * elecIso_
extra isolation criterion on electron
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:355
EventAuxiliary const & eventAuxiliary() const
Definition: Event.h:55
edm::InputTag jetIDLabel_
jetID as an extra selection type
virtual double pt() const
transverse momentum
static const JetCorrector * getJetCorrector(const std::string &fName, const edm::EventSetup &fSetup)
retrieve corrector from the event setup. troughs exception if something is missing ...
Definition: JetCorrector.cc:40
StringCutObjectSelector< reco::GsfElectron > * elecSelect_
extra selection on electrons
std::string const & label() const
Definition: InputTag.h:25
StringCutObjectSelector< reco::Muon > * muonIso_
extra isolation criterion on muon
tuple muons
Definition: patZpeak.py:38
void fill(const edm::Event &event, const edm::EventSetup &setup)
fill monitor histograms with electronId and jetCorrections
edm::InputTag electronId_
electronId label
std::string jetCorrector_
jetCorrector
static const unsigned int MAXJETS
EventNumber_t event() const
StringCutObjectSelector< reco::JetID > * jetIDSelect_
extra jetID selection on calo jets
void MonitorEnsemble::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 153 of file TopSingleLeptonDQM.h.

References accept(), fill(), hists_, monitorPath(), selectionPath(), and relativeConstraints::value.

154  {
155  for(unsigned int idx=0; idx<labels.size(); ++idx){
156  if( accept(event, triggerTable, monitorPath(labels[idx])) ){
157  fill((channel+"Mon_").c_str(), idx+0.5 );
158  // take care to fill triggerMon_ before evts is being called
159  int evts = hists_.find((channel+"Mon_").c_str())->second->getBinContent(idx+1);
160  double value = hists_.find((channel+"Eff_").c_str())->second->getBinContent(idx+1);
161  fill((channel+"Eff_").c_str(), idx+0.5, 1./evts*(accept(event, triggerTable, selectionPath(labels[idx]))-value));
162  }
163  }
164  }
std::map< std::string, MonitorElement * > hists_
histogram container
std::string selectionPath(const std::string &label) const
bool accept(const edm::Event &event, const edm::TriggerResults &triggerTable, const std::string &triggerPath)
Definition: TopDQMHelpers.h:21
tuple labels
Definition: L1TDQM_cfg.py:62
void fill(const edm::Event &event, const edm::EventSetup &setup)
fill monitor histograms with electronId and jetCorrections
std::string monitorPath(const std::string &label) const
void TopSingleLepton::MonitorEnsemble::fill ( const std::string  histName,
double  value 
) const
inlineprivate

fill histogram if it had been booked before

Definition at line 71 of file TopSingleLeptonDQM.h.

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

71 { 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 TopSingleLepton::MonitorEnsemble::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 73 of file TopSingleLeptonDQM.h.

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

73 { 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 TopSingleLepton::MonitorEnsemble::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 75 of file TopSingleLeptonDQM.h.

75 { 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 TopSingleLepton::MonitorEnsemble::monitorPath ( const std::string &  label) const
inlineprivate

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

Definition at line 58 of file TopSingleLeptonDQM.h.

Referenced by fill(), and triggerBinLabels().

58 { return label.substr(label.find(':')+1); };
const std::string & label
Definition: MVAComputer.cc:186
std::string TopSingleLepton::MonitorEnsemble::selectionPath ( const std::string &  label) const
inlineprivate

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

Definition at line 61 of file TopSingleLeptonDQM.h.

Referenced by fill(), and triggerBinLabels().

61 { return label.substr(0, label.find(':')); };
const std::string & label
Definition: MVAComputer.cc:186
void MonitorEnsemble::triggerBinLabels ( std::string  channel,
const std::vector< std::string >  labels 
)
inlineprivate

set configurable labels for trigger monitoring histograms

Definition at line 144 of file TopSingleLeptonDQM.h.

References hists_, monitorPath(), and selectionPath().

Referenced by book().

145  {
146  for(unsigned int idx=0; idx<labels.size(); ++idx){
147  hists_[(channel+"Mon_").c_str()]->setBinLabel( idx+1, "["+monitorPath(labels[idx])+"]", 1);
148  hists_[(channel+"Eff_").c_str()]->setBinLabel( idx+1, "["+selectionPath(labels[idx])+"]|["+monitorPath(labels[idx])+"]", 1);
149  }
150  }
std::map< std::string, MonitorElement * > hists_
histogram container
std::string selectionPath(const std::string &label) const
tuple labels
Definition: L1TDQM_cfg.py:62
std::string monitorPath(const std::string &label) const

Member Data Documentation

edm::InputTag TopSingleLepton::MonitorEnsemble::btagEff_
private

btag discriminator labels

Definition at line 129 of file TopSingleLeptonDQM.h.

Referenced by fill(), and MonitorEnsemble().

double TopSingleLepton::MonitorEnsemble::btagEffWP_
private

btag working points

Definition at line 131 of file TopSingleLeptonDQM.h.

Referenced by fill(), and MonitorEnsemble().

edm::InputTag TopSingleLepton::MonitorEnsemble::btagPur_
private

Definition at line 129 of file TopSingleLeptonDQM.h.

Referenced by fill(), and MonitorEnsemble().

double TopSingleLepton::MonitorEnsemble::btagPurWP_
private

Definition at line 131 of file TopSingleLeptonDQM.h.

Referenced by fill(), and MonitorEnsemble().

edm::InputTag TopSingleLepton::MonitorEnsemble::btagVtx_
private

Definition at line 129 of file TopSingleLeptonDQM.h.

Referenced by fill(), and MonitorEnsemble().

double TopSingleLepton::MonitorEnsemble::btagVtxWP_
private

Definition at line 131 of file TopSingleLeptonDQM.h.

Referenced by fill(), and MonitorEnsemble().

int TopSingleLepton::MonitorEnsemble::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 105 of file TopSingleLeptonDQM.h.

Referenced by fill(), and MonitorEnsemble().

StringCutObjectSelector<reco::GsfElectron>* TopSingleLepton::MonitorEnsemble::elecIso_
private

extra isolation criterion on electron

Definition at line 107 of file TopSingleLeptonDQM.h.

Referenced by fill(), and MonitorEnsemble().

edm::InputTag TopSingleLepton::MonitorEnsemble::elecs_
private

input sources for monitoring

Definition at line 85 of file TopSingleLeptonDQM.h.

Referenced by fill(), and MonitorEnsemble().

StringCutObjectSelector<reco::GsfElectron>* TopSingleLepton::MonitorEnsemble::elecSelect_
private

extra selection on electrons

Definition at line 109 of file TopSingleLeptonDQM.h.

Referenced by fill(), and MonitorEnsemble().

edm::InputTag TopSingleLepton::MonitorEnsemble::electronId_
private

electronId label

Definition at line 94 of file TopSingleLeptonDQM.h.

Referenced by fill(), and MonitorEnsemble().

std::map<std::string,MonitorElement*> TopSingleLepton::MonitorEnsemble::hists_
private

histogram container

Definition at line 140 of file TopSingleLeptonDQM.h.

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

bool TopSingleLepton::MonitorEnsemble::includeBTag_
private

include btag information or not to be determined from the cfg

Definition at line 127 of file TopSingleLeptonDQM.h.

Referenced by fill(), and MonitorEnsemble().

std::string TopSingleLepton::MonitorEnsemble::jetCorrector_
private

jetCorrector

Definition at line 117 of file TopSingleLeptonDQM.h.

Referenced by fill(), and MonitorEnsemble().

edm::InputTag TopSingleLepton::MonitorEnsemble::jetIDLabel_
private

jetID as an extra selection type

Definition at line 119 of file TopSingleLeptonDQM.h.

Referenced by fill(), and MonitorEnsemble().

StringCutObjectSelector<reco::JetID>* TopSingleLepton::MonitorEnsemble::jetIDSelect_
private

extra jetID selection on calo jets

Definition at line 121 of file TopSingleLeptonDQM.h.

Referenced by fill(), and MonitorEnsemble().

edm::InputTag TopSingleLepton::MonitorEnsemble::jets_
private

Definition at line 85 of file TopSingleLeptonDQM.h.

Referenced by fill(), and MonitorEnsemble().

std::string TopSingleLepton::MonitorEnsemble::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 124 of file TopSingleLeptonDQM.h.

Referenced by fill(), and MonitorEnsemble().

std::string TopSingleLepton::MonitorEnsemble::label_
private
int TopSingleLepton::MonitorEnsemble::logged_
private

number of logged interesting events

Definition at line 136 of file TopSingleLeptonDQM.h.

Referenced by fill().

double TopSingleLepton::MonitorEnsemble::lowerEdge_
private

mass window upper and lower edge

Definition at line 133 of file TopSingleLeptonDQM.h.

Referenced by fill(), and MonitorEnsemble().

std::vector<edm::InputTag> TopSingleLepton::MonitorEnsemble::mets_
private

considers a vector of METs

Definition at line 83 of file TopSingleLeptonDQM.h.

Referenced by fill(), and MonitorEnsemble().

StringCutObjectSelector<reco::Muon>* TopSingleLepton::MonitorEnsemble::muonIso_
private

extra isolation criterion on muon

Definition at line 112 of file TopSingleLeptonDQM.h.

Referenced by fill(), and MonitorEnsemble().

edm::InputTag TopSingleLepton::MonitorEnsemble::muons_
private

Definition at line 85 of file TopSingleLeptonDQM.h.

Referenced by fill(), and MonitorEnsemble().

StringCutObjectSelector<reco::Muon>* TopSingleLepton::MonitorEnsemble::muonSelect_
private

extra selection on muons

Definition at line 114 of file TopSingleLeptonDQM.h.

Referenced by fill(), and MonitorEnsemble().

DQMStore* TopSingleLepton::MonitorEnsemble::store_
private

storage manager

Definition at line 138 of file TopSingleLeptonDQM.h.

Referenced by book().

std::vector<std::string> TopSingleLepton::MonitorEnsemble::triggerPaths_
private

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

Definition at line 91 of file TopSingleLeptonDQM.h.

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

edm::InputTag TopSingleLepton::MonitorEnsemble::triggerTable_
private

trigger table

Definition at line 88 of file TopSingleLeptonDQM.h.

Referenced by fill(), and MonitorEnsemble().

double TopSingleLepton::MonitorEnsemble::upperEdge_
private

Definition at line 133 of file TopSingleLeptonDQM.h.

Referenced by fill(), and MonitorEnsemble().

Level TopSingleLepton::MonitorEnsemble::verbosity_
private

verbosity level for booking

Definition at line 75 of file TopSingleLeptonDQM.h.

Referenced by book(), and MonitorEnsemble().