1 #ifndef TOPDILEPTONOFFLINEDQM
2 #define TOPDILEPTONOFFLINEDQM
39 namespace TopDiLeptonOffline {
87 void fill(
const std::string histName,
double xValue,
double yValue,
double zValue)
const {
if(
booked(histName.c_str()))
hists_.find(histName.c_str())->
second->Fill(xValue, yValue, zValue); };
102 std::vector<edm::EDGetTokenT<edm::View<reco::MET> > >
mets_;
155 std::map<std::string,MonitorElement*>
hists_;
162 hists_[hist.c_str()]->getTH1()->SetOption(
"TEXT");
163 hists_[hist.c_str()]->setBinLabel( 1 ,
"Run" , 1);
164 hists_[hist.c_str()]->setBinLabel( 2 ,
"Block" , 1);
165 hists_[hist.c_str()]->setBinLabel( 3 ,
"Event" , 1);
166 hists_[hist.c_str()]->setBinLabel( 6 ,
"pt_{L2L3}(jet1)" , 1);
167 hists_[hist.c_str()]->setBinLabel( 7 ,
"pt_{L2L3}(jet2)" , 1);
168 hists_[hist.c_str()]->setBinLabel( 8 ,
"MET_{Calo}" , 1);
169 hists_[hist.c_str()]->setAxisTitle(
"logged evts" , 2);
171 if(hist==
"diMuonLogger_"){
172 hists_[hist.c_str()]->setBinLabel( 4 ,
"pt(muon)" , 1);
173 hists_[hist.c_str()]->setBinLabel( 5 ,
"pt(muon)" , 1);
175 if(hist==
"diElecLogger_"){
176 hists_[hist.c_str()]->setBinLabel( 4 ,
"pt(elec)" , 1);
177 hists_[hist.c_str()]->setBinLabel( 5 ,
"pt(elec)" , 1);
179 if(hist==
"elecMuLogger_"){
180 hists_[hist.c_str()]->setBinLabel( 4 ,
"pt(elec)" , 1);
181 hists_[hist.c_str()]->setBinLabel( 5 ,
"pt(muon)" , 1);
188 for(
unsigned int idx=0;
idx<labels.size(); ++
idx){
197 for(
unsigned int idx=0;
idx<labels.size(); ++
idx){
199 fill((channel+
"Mon_").c_str(), idx+0.5 );
201 int evts =
hists_.find((channel+
"Mon_").c_str())->second->getBinContent(idx+1);
202 double value =
hists_.find((channel+
"Eff_").c_str())->second->getBinContent(idx+1);
203 fill((channel+
"Eff_").c_str(), idx+0.5, 1./evts*(
accept(event, triggerTable,
selectionPath(labels[idx]))-value));
212 if( muons.size()>1 ){ type=
DIMUON; }
else if( elecs.size()>1 ){ type=
DIELEC; }
else if( !elecs.empty() && !muons.empty() ){ type=
ELECMU; }
283 for(
unsigned int i = 0; i <
PFJetSteps.size(); i++)
324 std::map<std::string, std::pair<edm::ParameterSet, TopDiLeptonOffline::MonitorEnsemble*> >
selection_;
StringCutObjectSelector< reco::Vertex > * vertexSelect_
string cut selector
std::string selectionPath(const std::string &label) const
std::string selectionStep(const std::string &label)
DQMStore * store_
storage manager
std::vector< std::string > selectionOrder_
~TopDiLeptonOfflineDQM()
default destructor
void fill(const std::string histName, double value) const
fill histogram if it had been booked before
std::map< std::string, std::pair< edm::ParameterSet, TopDiLeptonOffline::MonitorEnsemble * > > selection_
Level verbosity_
verbosity level for booking
edm::EDGetTokenT< reco::JetIDValueMap > jetIDLabel_
jetID as an extra selection type
SelectionStep< reco::Muon > * MuonStep
define MonitorEnsembple to be used
SelectionStep< reco::MET > * METStep
edm::EDGetTokenT< edm::View< reco::Muon > > muons_
edm::EDGetTokenT< std::vector< reco::Vertex > > vertex_
primary vertex
MonitorEnsemble(const char *label, const edm::ParameterSet &cfg, edm::ConsumesCollector &&iC)
default contructor
virtual void analyze(const edm::Event &event, const edm::EventSetup &setup)
do this during the event loop
DecayChannel decayChannel(const std::vector< const reco::Muon * > &muons, const std::vector< const reco::GsfElectron * > &elecs) const
determine dileptonic decay channel
void loggerBinLabels(std::string hist)
set labels for event logging histograms
std::string monitorPath(const std::string &label) const
SelectionStep< reco::Vertex > * PvStep
bool accept(const edm::Event &event, const edm::TriggerResults &triggerTable, const std::string &triggerPath)
void fill(const std::string histName, double xValue, double yValue) const
fill histogram if it had been booked before (2-dim version)
void fill(const edm::Event &event, const edm::EventSetup &setup)
fill monitor histograms with electronId and jetCorrections
edm::EDGetTokenT< edm::View< reco::GsfElectron > > elecs_
bool booked(const std::string histName) const
check if histogram was booked
edm::EDGetTokenT< edm::View< reco::Jet > > jets_
input sources for monitoring
U second(std::pair< T, U > const &p)
std::map< std::string, MonitorElement * > hists_
histogram container
SelectionStep< reco::GsfElectron > * ElectronStep
StringCutObjectSelector< reco::Muon > * muonSelect_
extra selection on muons
double lowerEdge_
mass window upper and lower edge
std::vector< edm::EDGetTokenT< edm::View< reco::MET > > > mets_
considers a vector of METs
std::vector< std::string > elecMuPaths_
std::vector< SelectionStep< reco::PFJet > * > PFJetSteps
Level
different verbosity levels
std::string jetCorrector_
jetCorrector
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger but the state exists so we define the behavior If all triggers are the negative crieriion will lead to accepting the event(this again matches the behavior of"!*"before the partial wildcard feature was incorporated).The per-event"cost"of each negative criterion with multiple relevant triggers is about the same as!*was in the past
std::vector< SelectionStep< reco::Jet > * > JetSteps
StringCutObjectSelector< reco::BeamSpot > * beamspotSelect_
string cut selector
TopDiLeptonOfflineDQM(const edm::ParameterSet &cfg)
default constructor
void book(std::string directory)
book histograms in subdirectory directory
StringCutObjectSelector< reco::Muon > * muonIso_
extra isolation criterion on muon
int elecMuLogged_
number of logged interesting events
std::vector< std::string > diMuonPaths_
trigger paths for di muon channel
std::string label_
instance label
reco::LeafCandidate::LorentzVector LorentzVector
tuple idx
DEBUGGING if hasattr(process,"trackMonIterativeTracking2012"): print "trackMonIterativeTracking2012 D...
edm::EDGetTokenT< edm::TriggerResults > triggerTable_
trigger table
edm::EDGetTokenT< edm::TriggerResults > triggerTable_
trigger table
std::vector< std::string > triggerPaths_
trigger paths
~MonitorEnsemble()
default destructor
DecayChannel
different decay channels
std::string objectType(const std::string &label)
StringCutObjectSelector< reco::JetID > * jetIDSelect_
extra jetID selection on calo jets
StringCutObjectSelector< reco::GsfElectron > * elecSelect_
extra selection on electrons
StringCutObjectSelector< reco::GsfElectron > * elecIso_
extra isolation criterion on electron
std::vector< SelectionStep< reco::CaloJet > * > CaloJetSteps
void setup(std::vector< TH2F > &depth, std::string name, std::string units="")
edm::EDGetTokenT< reco::BeamSpot > beamspot_
beamspot
edm::EDGetTokenT< edm::ValueMap< float > > electronId_
electronId label
math::XYZTLorentzVector LorentzVector
Lorentz vector.
void triggerBinLabels(std::string channel, const std::vector< std::string > labels)
set configurable labels for trigger monitoring histograms