CMS 3D CMS Logo

List of all members | Public Types | Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes
ZCounting Class Reference

#include <ZCounting.h>

Inheritance diagram for ZCounting:
DQMEDAnalyzer edm::one::EDProducer< edm::Accumulator, edm::EndLuminosityBlockProducer, edm::EndRunProducer, edm::one::WatchLuminosityBlocks, edm::one::WatchRuns > edm::one::EDProducerBase edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Types

enum  MuonIDTypes { NoneID, LooseID, MediumID, TightID }
 
enum  MuonIsoTypes { NoneIso, TrackerIso, PFIso }
 
- Public Types inherited from edm::one::EDProducerBase
typedef EDProducerBase ModuleType
 
- Public Types inherited from edm::ProducerBase
using ModuleToResolverIndicies = std::unordered_multimap< std::string, std::tuple< edm::TypeID const *, const char *, edm::ProductResolverIndex >>
 
typedef ProductRegistryHelper::TypeLabelList TypeLabelList
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 

Public Member Functions

 ZCounting (const edm::ParameterSet &ps)
 
 ~ZCounting () override
 
- Public Member Functions inherited from DQMEDAnalyzer
void accumulate (edm::Event const &ev, edm::EventSetup const &es) final
 
void beginLuminosityBlock (edm::LuminosityBlock const &lumi, edm::EventSetup const &setup) override
 
void beginRun (edm::Run const &run, edm::EventSetup const &setup) final
 
 DQMEDAnalyzer ()
 
 DQMEDAnalyzer (DQMEDAnalyzer const &)=delete
 
 DQMEDAnalyzer (DQMEDAnalyzer &&)=delete
 
void endLuminosityBlock (edm::LuminosityBlock const &, edm::EventSetup const &) override
 
void endLuminosityBlockProduce (edm::LuminosityBlock &lumi, edm::EventSetup const &setup) final
 
void endRun (edm::Run const &run, edm::EventSetup const &setup) override
 
void endRunProduce (edm::Run &run, edm::EventSetup const &setup) override
 
 ~DQMEDAnalyzer () override=default
 
- Public Member Functions inherited from edm::one::EDProducer< edm::Accumulator, edm::EndLuminosityBlockProducer, edm::EndRunProducer, edm::one::WatchLuminosityBlocks, edm::one::WatchRuns >
 EDProducer ()=default
 
SerialTaskQueueglobalLuminosityBlocksQueue () final
 
SerialTaskQueueglobalRunsQueue () final
 
bool hasAbilityToProduceInLumis () const final
 
bool hasAbilityToProduceInRuns () const final
 
bool wantsGlobalLuminosityBlocks () const final
 
bool wantsGlobalRuns () const final
 
- Public Member Functions inherited from edm::one::EDProducerBase
 EDProducerBase ()
 
ModuleDescription const & moduleDescription () const
 
bool wantsStreamLuminosityBlocks () const
 
bool wantsStreamRuns () const
 
 ~EDProducerBase () override
 
- Public Member Functions inherited from edm::ProducerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
std::vector< edm::ProductResolverIndex > const & indiciesForPutProducts (BranchType iBranchType) const
 
 ProducerBase ()
 
std::vector< edm::ProductResolverIndex > const & putTokenIndexToProductResolverIndex () const
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
std::function< void(BranchDescription const &)> registrationCallback () const
 used by the fwk to register list of products More...
 
void resolvePutIndicies (BranchType iBranchType, ModuleToResolverIndicies const &iIndicies, std::string const &moduleLabel)
 
 ~ProducerBase () noexcept(false) override
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
void convertCurrentProcessAlias (std::string const &processName)
 Convert "@currentProcess" in InputTag process names to the actual current process name. More...
 
 EDConsumerBase ()
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
 EDConsumerBase (EDConsumerBase &&)=default
 
ProductResolverIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFrom (BranchType iType) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
virtual ~EDConsumerBase () noexcept(false)
 

Protected Member Functions

void analyze (edm::Event const &e, edm::EventSetup const &eSetup) override
 
void bookHistograms (DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
 
void dqmBeginRun (edm::Run const &, edm::EventSetup const &) override
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 

Private Member Functions

void analyzeElectrons (edm::Event const &e, edm::EventSetup const &eSetup)
 
void analyzeMuons (edm::Event const &e, edm::EventSetup const &eSetup)
 
bool ele_probe_selection (double pt, double abseta)
 
bool ele_tag_selection (double pt, double abseta)
 
void initHLT (const edm::TriggerResults &, const edm::TriggerNames &)
 
bool isElectronTrigger (ZCountingTrigger::TTrigger triggerMenu, TriggerBits hltBits)
 
bool isElectronTriggerObj (ZCountingTrigger::TTrigger triggerMenu, TriggerObjects hltMatchBits)
 
bool isMuonTrigger (const ZCountingTrigger::TTrigger &triggerMenu, const TriggerBits &hltBits)
 
bool isMuonTriggerObj (const ZCountingTrigger::TTrigger &triggerMenu, const TriggerObjects &hltMatchBits)
 
bool passMuonID (const reco::Muon &muon, const reco::Vertex &vtx, const MuonIDTypes &idType)
 
bool passMuonIso (const reco::Muon &muon, const MuonIsoTypes &isoType, const float isoCut)
 

Private Attributes

const float ELE_ETA_CRACK_HIGH = 1.56
 
const float ELE_ETA_CRACK_LOW = 1.4442
 
const float ELE_ETA_CUT_PROBE
 
const float ELE_ETA_CUT_TAG
 
const std::string ELE_ID_WP
 
const float ELE_MASS_CUT_HIGH
 
const float ELE_MASS_CUT_LOW
 
const float ELE_PT_CUT_PROBE
 
const float ELE_PT_CUT_TAG
 
const float ELECTRON_MASS = 0.000511
 
ElectronIdentifier EleID_
 
double EtaCutL1_
 
double EtaCutL2_
 
edm::InputTag fBeamspotTag
 
edm::EDGetTokenT< reco::BeamSpotfBeamspotToken
 
edm::InputTag fConversionTag
 
edm::EDGetTokenT< reco::ConversionCollectionfConversionToken
 
std::string fElectronName
 
edm::EDGetTokenT< edm::View< reco::GsfElectron > > fGsfElectronName_token
 
edm::InputTag fHLTObjTag
 
edm::EDGetTokenT< trigger::TriggerEventfHLTObjTag_token
 
edm::InputTag fHLTTag
 
edm::EDGetTokenT< edm::TriggerResultsfHLTTag_token
 
std::string fMuonName
 
edm::EDGetTokenT< reco::MuonCollectionfMuonName_token
 
std::string fPVName
 
edm::EDGetTokenT< reco::VertexCollectionfPVName_token
 
edm::InputTag fRhoTag
 
edm::EDGetTokenT< double > fRhoToken
 
std::string fSCName
 
edm::EDGetTokenT< edm::View< reco::SuperCluster > > fSCName_token
 
std::string fTrackName
 
edm::EDGetTokenT< reco::TrackCollectionfTrackName_token
 
std::unique_ptr< ZCountingTrigger::TTriggerfTrigger
 
edm::ParameterSetID fTriggerNamesID
 
MonitorElementh_ee_mass_HLT_fail_central
 
MonitorElementh_ee_mass_HLT_fail_forward
 
MonitorElementh_ee_mass_HLT_pass_central
 
MonitorElementh_ee_mass_HLT_pass_forward
 
MonitorElementh_ee_mass_id_fail_central
 
MonitorElementh_ee_mass_id_fail_forward
 
MonitorElementh_ee_mass_id_pass_central
 
MonitorElementh_ee_mass_id_pass_forward
 
MonitorElementh_ee_yield_Z_ebeb
 
MonitorElementh_ee_yield_Z_ebee
 
MonitorElementh_ee_yield_Z_eeee
 
MonitorElementh_mass_HLT_fail_central
 
MonitorElementh_mass_HLT_fail_forward
 
MonitorElementh_mass_HLT_pass_central
 
MonitorElementh_mass_HLT_pass_forward
 
MonitorElementh_mass_SIT_fail_central
 
MonitorElementh_mass_SIT_fail_forward
 
MonitorElementh_mass_SIT_pass_central
 
MonitorElementh_mass_SIT_pass_forward
 
MonitorElementh_mass_Sta_fail_central
 
MonitorElementh_mass_Sta_fail_forward
 
MonitorElementh_mass_Sta_pass_central
 
MonitorElementh_mass_Sta_pass_forward
 
MonitorElementh_npv
 
MonitorElementh_yield_Z
 
MonitorElementh_yieldBB_Z
 
MonitorElementh_yieldEE_Z
 
MuonIDTypes IDType_ {NoneID}
 
std::string IDTypestr_
 
double IsoCut_
 
MuonIsoTypes IsoType_ {NoneIso}
 
std::string IsoTypestr_
 
int LumiBin_
 
double LumiMax_
 
double LumiMin_
 
int MassBin_
 
double MassMax_
 
double MassMin_
 
const double MUON_BOUND = 0.9
 
const double MUON_MASS = 0.105658369
 
double PtCutL1_
 
double PtCutL2_
 
int PVBin_
 
double PVMax_
 
double PVMin_
 
double VtxAbsZCut_
 
double VtxNdofCut_
 
double VtxNTracksFitCut_
 
double VtxRhoCut_
 

Additional Inherited Members

- Static Public Member Functions inherited from edm::one::EDProducerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 
- Protected Attributes inherited from DQMEDAnalyzer
edm::EDPutTokenT< DQMTokenlumiToken_
 
edm::EDPutTokenT< DQMTokenrunToken_
 

Detailed Description

Definition at line 42 of file ZCounting.h.

Member Enumeration Documentation

Enumerator
NoneID 
LooseID 
MediumID 
TightID 

Definition at line 49 of file ZCounting.h.

Enumerator
NoneIso 
TrackerIso 
PFIso 

Definition at line 50 of file ZCounting.h.

Constructor & Destructor Documentation

ZCounting::ZCounting ( const edm::ParameterSet ps)

Definition at line 25 of file ZCounting.cc.

References ELE_ID_WP, EleID_, EtaCutL1_, EtaCutL2_, fBeamspotTag, fBeamspotToken, fConversionTag, fConversionToken, fElectronName, fGsfElectronName_token, fHLTObjTag, fHLTObjTag_token, fHLTTag, fHLTTag_token, fMuonName, fMuonName_token, fPVName, fPVName_token, fRhoTag, fRhoToken, fSCName, fSCName_token, fTrackName, fTrackName_token, edm::ParameterSet::getUntrackedParameter(), IDType_, IDTypestr_, IsoCut_, IsoType_, IsoTypestr_, LooseID, LumiBin_, LumiMax_, LumiMin_, MassBin_, MassMax_, MassMin_, MediumID, NoneID, NoneIso, PFIso, PtCutL1_, PtCutL2_, PVBin_, PVMax_, PVMin_, ElectronIdentifier::setID(), AlCaHLTBitMon_QueryRunRegistry::string, TightID, TrackerIso, VtxAbsZCut_, VtxNdofCut_, VtxNTracksFitCut_, and VtxRhoCut_.

25  :
26  fHLTObjTag (iConfig.getParameter<edm::InputTag>("TriggerEvent")),
27  fHLTTag (iConfig.getParameter<edm::InputTag>("TriggerResults")),
28  fPVName (iConfig.getUntrackedParameter<std::string>("edmPVName","offlinePrimaryVertices")),
29  fMuonName (iConfig.getUntrackedParameter<std::string>("edmName","muons")),
30  fTrackName (iConfig.getUntrackedParameter<std::string>("edmTrackName","generalTracks")),
31 
32  // Electron-specific Parameters
33  fElectronName( iConfig.getUntrackedParameter<std::string>("edmGsfEleName","gedGsfElectrons")),
34  fSCName( iConfig.getUntrackedParameter<std::string>("edmSCName","particleFlowEGamma")),
35 
36  // Electron-specific Tags
37  fRhoTag( iConfig.getParameter<edm::InputTag>("rhoname") ),
38  fBeamspotTag(iConfig.getParameter<edm::InputTag>("beamspotName") ),
39  fConversionTag( iConfig.getParameter<edm::InputTag>("conversionsName")),
40 
41  // Electron-specific Cuts
42  ELE_PT_CUT_TAG(iConfig.getUntrackedParameter<double>("PtCutEleTag")),
43  ELE_PT_CUT_PROBE(iConfig.getUntrackedParameter<double>("PtCutEleProbe")),
44  ELE_ETA_CUT_TAG(iConfig.getUntrackedParameter<double>("EtaCutEleTag")),
45  ELE_ETA_CUT_PROBE(iConfig.getUntrackedParameter<double>("EtaCutEleProbe")),
46 
47  ELE_MASS_CUT_LOW(iConfig.getUntrackedParameter<double>("MassCutEleLow")),
48  ELE_MASS_CUT_HIGH(iConfig.getUntrackedParameter<double>("MassCutEleHigh")),
49 
50  ELE_ID_WP( iConfig.getUntrackedParameter<std::string>("ElectronIDType","TIGHT")),
51  EleID_(ElectronIdentifier(iConfig))
52 {
53  edm::LogInfo("ZCounting") << "Constructor ZCounting::ZCounting " << std::endl;
54 
55  //Get parameters from configuration file
56  fHLTTag_token = consumes<edm::TriggerResults>(fHLTTag);
57  fHLTObjTag_token = consumes<trigger::TriggerEvent>(fHLTObjTag);
58  fPVName_token = consumes<reco::VertexCollection>(fPVName);
59  fMuonName_token = consumes<reco::MuonCollection>(fMuonName);
60  fTrackName_token = consumes<reco::TrackCollection>(fTrackName);
61 
62  // Electron-specific parameters
63  fGsfElectronName_token = consumes<edm::View<reco::GsfElectron>>(fElectronName);
64  fSCName_token = consumes<edm::View<reco::SuperCluster>>(fSCName);
65  fRhoToken = consumes<double>(fRhoTag);
66  fBeamspotToken = consumes<reco::BeamSpot>(fBeamspotTag);
67  fConversionToken = consumes<reco::ConversionCollection>(fConversionTag);
68 
69  // Muon-specific Cuts
70  IDTypestr_ = iConfig.getUntrackedParameter<std::string>("IDType");
71  IsoTypestr_ = iConfig.getUntrackedParameter<std::string>("IsoType");
72  IsoCut_ = iConfig.getUntrackedParameter<double>("IsoCut");
73 
74  if (IDTypestr_ == "Loose") IDType_ = LooseID;
75  else if(IDTypestr_ == "Medium") IDType_ = MediumID;
76  else if(IDTypestr_ == "Tight") IDType_ = TightID;
77  else IDType_ = NoneID;
78 
79  if (IsoTypestr_ == "Tracker-based") IsoType_ = TrackerIso;
80  else if(IsoTypestr_ == "PF-based") IsoType_ = PFIso;
81  else IsoType_ = NoneIso;
82 
83  PtCutL1_ = iConfig.getUntrackedParameter<double>("PtCutL1");
84  PtCutL2_ = iConfig.getUntrackedParameter<double>("PtCutL2");
85  EtaCutL1_ = iConfig.getUntrackedParameter<double>("EtaCutL1");
86  EtaCutL2_ = iConfig.getUntrackedParameter<double>("EtaCutL2");
87 
88  MassBin_ = iConfig.getUntrackedParameter<int>("MassBin");
89  MassMin_ = iConfig.getUntrackedParameter<double>("MassMin");
90  MassMax_ = iConfig.getUntrackedParameter<double>("MassMax");
91 
92  LumiBin_ = iConfig.getUntrackedParameter<int>("LumiBin");
93  LumiMin_ = iConfig.getUntrackedParameter<double>("LumiMin");
94  LumiMax_ = iConfig.getUntrackedParameter<double>("LumiMax");
95 
96  PVBin_ = iConfig.getUntrackedParameter<int>("PVBin");
97  PVMin_ = iConfig.getUntrackedParameter<double>("PVMin");
98  PVMax_ = iConfig.getUntrackedParameter<double>("PVMax");
99 
100  VtxNTracksFitCut_ = iConfig.getUntrackedParameter<double>("VtxNTracksFitMin");
101  VtxNdofCut_ = iConfig.getUntrackedParameter<double>("VtxNdofMin");
102  VtxAbsZCut_ = iConfig.getUntrackedParameter<double>("VtxAbsZMax");
103  VtxRhoCut_ = iConfig.getUntrackedParameter<double>("VtxRhoMax");
104 
106 }
double IsoCut_
Definition: ZCounting.h:115
edm::InputTag fRhoTag
Definition: ZCounting.h:97
edm::InputTag fBeamspotTag
Definition: ZCounting.h:100
double PtCutL1_
Definition: ZCounting.h:117
std::string fPVName
Definition: ZCounting.h:82
double LumiMax_
Definition: ZCounting.h:128
std::string fSCName
Definition: ZCounting.h:92
std::string fTrackName
Definition: ZCounting.h:86
edm::InputTag fHLTObjTag
Definition: ZCounting.h:78
MuonIsoTypes IsoType_
Definition: ZCounting.h:114
edm::EDGetTokenT< edm::View< reco::GsfElectron > > fGsfElectronName_token
Definition: ZCounting.h:91
std::string fMuonName
Definition: ZCounting.h:84
edm::InputTag fConversionTag
Definition: ZCounting.h:103
ElectronIdentifier EleID_
Definition: ZCounting.h:156
const float ELE_ETA_CUT_TAG
Definition: ZCounting.h:147
double LumiMin_
Definition: ZCounting.h:127
edm::InputTag fHLTTag
Definition: ZCounting.h:79
edm::EDGetTokenT< reco::TrackCollection > fTrackName_token
Definition: ZCounting.h:87
std::string IDTypestr_
Definition: ZCounting.h:111
edm::EDGetTokenT< reco::MuonCollection > fMuonName_token
Definition: ZCounting.h:85
double VtxRhoCut_
Definition: ZCounting.h:137
const float ELE_MASS_CUT_HIGH
Definition: ZCounting.h:150
const std::string ELE_ID_WP
Definition: ZCounting.h:152
edm::EDGetTokenT< reco::VertexCollection > fPVName_token
Definition: ZCounting.h:83
int PVBin_
Definition: ZCounting.h:130
const float ELE_PT_CUT_PROBE
Definition: ZCounting.h:146
double VtxNTracksFitCut_
Definition: ZCounting.h:134
double VtxNdofCut_
Definition: ZCounting.h:135
MuonIDTypes IDType_
Definition: ZCounting.h:113
double PtCutL2_
Definition: ZCounting.h:118
const float ELE_MASS_CUT_LOW
Definition: ZCounting.h:149
edm::EDGetTokenT< trigger::TriggerEvent > fHLTObjTag_token
Definition: ZCounting.h:80
const float ELE_ETA_CUT_PROBE
Definition: ZCounting.h:148
int MassBin_
Definition: ZCounting.h:122
edm::EDGetTokenT< reco::ConversionCollection > fConversionToken
Definition: ZCounting.h:104
int LumiBin_
Definition: ZCounting.h:126
edm::EDGetTokenT< edm::TriggerResults > fHLTTag_token
Definition: ZCounting.h:81
std::string fElectronName
Definition: ZCounting.h:90
double EtaCutL1_
Definition: ZCounting.h:119
void setID(std::string ID)
edm::EDGetTokenT< double > fRhoToken
Definition: ZCounting.h:98
double MassMax_
Definition: ZCounting.h:124
double PVMax_
Definition: ZCounting.h:132
double MassMin_
Definition: ZCounting.h:123
edm::EDGetTokenT< reco::BeamSpot > fBeamspotToken
Definition: ZCounting.h:101
const float ELE_PT_CUT_TAG
Definition: ZCounting.h:145
std::string IsoTypestr_
Definition: ZCounting.h:112
edm::EDGetTokenT< edm::View< reco::SuperCluster > > fSCName_token
Definition: ZCounting.h:93
double EtaCutL2_
Definition: ZCounting.h:120
double PVMin_
Definition: ZCounting.h:131
double VtxAbsZCut_
Definition: ZCounting.h:136
ZCounting::~ZCounting ( )
override

Definition at line 111 of file ZCounting.cc.

112 {
113  edm::LogInfo("ZCounting") << "Destructor ZCounting::~ZCounting " << std::endl;
114 }

Member Function Documentation

void ZCounting::analyze ( edm::Event const &  e,
edm::EventSetup const &  eSetup 
)
overrideprotectedvirtual

Reimplemented from DQMEDAnalyzer.

Definition at line 180 of file ZCounting.cc.

References analyzeElectrons(), and analyzeMuons().

181 {// Fill event tree on the fly
182  edm::LogInfo("ZCounting") << "ZCounting::analyze" << std::endl;
183  analyzeMuons(iEvent, iSetup);
184  analyzeElectrons(iEvent, iSetup);
185 }
void analyzeMuons(edm::Event const &e, edm::EventSetup const &eSetup)
Definition: ZCounting.cc:187
int iEvent
Definition: GenABIO.cc:230
void analyzeElectrons(edm::Event const &e, edm::EventSetup const &eSetup)
Definition: ZCounting.cc:436
void ZCounting::analyzeElectrons ( edm::Event const &  e,
edm::EventSetup const &  eSetup 
)
private

Fill for ID efficiency

Fill for HLT efficiency

Definition at line 436 of file ZCounting.cc.

References edm::HLTGlobalStatus::accept(), reco::LeafCandidate::charge(), ELE_ETA_CRACK_LOW, ELE_MASS_CUT_HIGH, ELE_MASS_CUT_LOW, ele_probe_selection(), ele_tag_selection(), ELECTRON_MASS, electrons_cff::electrons, EleID_, SimCluster::energy(), reco::LeafCandidate::eta(), SimCluster::eta(), fBeamspotToken, fConversionToken, fGsfElectronName_token, fHLTObjTag_token, fHLTTag_token, MonitorElement::Fill(), HcalObjRepresent::Fill(), fPVName_token, fRhoToken, fSCName_token, fTrigger, fTriggerNamesID, edm::Event::getByToken(), h_ee_mass_HLT_fail_central, h_ee_mass_HLT_fail_forward, h_ee_mass_HLT_pass_central, h_ee_mass_HLT_pass_forward, h_ee_mass_id_fail_central, h_ee_mass_id_fail_forward, h_ee_mass_id_pass_central, h_ee_mass_id_pass_forward, h_ee_yield_Z_ebeb, h_ee_yield_Z_ebee, h_ee_yield_Z_eeee, initHLT(), isElectronTrigger(), isElectronTriggerObj(), edm::Ptr< T >::isNonnull(), edm::HandleBase::isValid(), eostools::ls(), edm::EventBase::luminosityBlock(), or, edm::TriggerNames::parameterSetID(), ElectronIdentifier::passID(), reco::LeafCandidate::phi(), SimCluster::phi(), funct::pow(), edm::Handle< T >::product(), EnergyCorrector::pt, reco::LeafCandidate::pt(), hiDetachedQuadStep_cff::pt1, SimDataFormats::CaloAnalysis::sc, ElectronIdentifier::setRho(), mathSSE::sqrt(), edm::Event::triggerNames(), badGlobalMuonTaggersAOD_cff::vtx, VtxAbsZCut_, VtxNdofCut_, VtxNTracksFitCut_, and VtxRhoCut_.

Referenced by analyze().

436  {
437  edm::LogInfo("ZCounting") << "ZCounting::analyzeElectrons" << std::endl;
438 
439  //-------------------------------
440  //--- Vertex
441  //-------------------------------
443  iEvent.getByToken(fPVName_token,hVertexProduct);
444  if(!hVertexProduct.isValid()) return;
445 
446  const reco::VertexCollection *pvCol = hVertexProduct.product();
447  int nvtx = 0;
448 
449  for(auto const & vtx : *pvCol) {
450  if(vtx.isFake()) continue;
451  if(vtx.tracksSize() < VtxNTracksFitCut_) continue;
452  if(vtx.ndof() < VtxNdofCut_) continue;
453  if(fabs(vtx.z()) > VtxAbsZCut_) continue;
454  if(vtx.position().Rho() > VtxRhoCut_) continue;
455 
456  nvtx++;
457  }
458 
459  // Good vertex requirement
460  if(nvtx==0) return;
461 
462  //-------------------------------
463  //--- Trigger
464  //-------------------------------
466  iEvent.getByToken(fHLTTag_token,hTrgRes);
467  if(!hTrgRes.isValid()) return;
468 
470  iEvent.getByToken(fHLTObjTag_token,hTrgEvt);
471 
472 
473  const edm::TriggerNames &triggerNames = iEvent.triggerNames(*hTrgRes);
474  Bool_t config_changed = false;
475  if(fTriggerNamesID != triggerNames.parameterSetID()) {
476  fTriggerNamesID = triggerNames.parameterSetID();
477  config_changed = true;
478  }
479  if(config_changed) {
480  initHLT(*hTrgRes, triggerNames);
481  }
482 
483  TriggerBits triggerBits;
484  for(unsigned int irec=0; irec<fTrigger->fRecords.size(); irec++) {
485  if(fTrigger->fRecords[irec].hltPathIndex == (unsigned int)-1) continue;
486  if(hTrgRes->accept(fTrigger->fRecords[irec].hltPathIndex)) {
487  triggerBits [fTrigger->fRecords[irec].baconTrigBit] = true;
488  }
489  }
490 
491  // Trigger requirement
492  if(!isElectronTrigger(*fTrigger, triggerBits)) return;
493 
494  // Get Electrons
496  iEvent.getByToken(fGsfElectronName_token, electrons);
497 
498  // Get SuperClusters
500  iEvent.getByToken(fSCName_token, superclusters);
501 
502  // Get Rho
503  edm::Handle<double> rhoHandle;
504  iEvent.getByToken(fRhoToken, rhoHandle);
505  EleID_.setRho(*rhoHandle);
506 
507  // Get beamspot
508  edm::Handle<reco::BeamSpot> beamspotHandle;
509  iEvent.getByToken(fBeamspotToken, beamspotHandle);
510 
511  // Conversions
512  edm::Handle<reco::ConversionCollection> conversionsHandle;
513  iEvent.getByToken(fConversionToken, conversionsHandle);
514 
515 
517  enum { eEleEle2HLT=1, eEleEle1HLT1L1, eEleEle1HLT, eEleEleNoSel, eEleSC }; // event category enum
518 
519  // Loop over Tags
520  for (size_t itag = 0; itag < electrons->size(); ++itag){
521  const auto el1 = electrons->ptrAt(itag);
522  if( not EleID_.passID(el1,beamspotHandle,conversionsHandle) ) continue;
523 
524  float pt1 = el1->pt();
525  float eta1 = el1->eta();
526  float phi1 = el1->phi();
527 
528  if(!isElectronTriggerObj(*fTrigger, TriggerTools::matchHLT(eta1, phi1, fTrigger->fRecords, *hTrgEvt))) continue;
529  TLorentzVector vTag(0.,0.,0.,0.);
530  vTag.SetPtEtaPhiM(pt1, eta1, phi1, ELECTRON_MASS);
531 
532 
533  // Tag selection: kinematic cuts, lepton selection and trigger matching
534  double tag_pt = vTag.Pt();
535  double tag_abseta = fabs(vTag.Eta());
536 
537  bool tag_is_valid_tag = ele_tag_selection(tag_pt,tag_abseta);
538  bool tag_is_valid_probe = ele_probe_selection(tag_pt,tag_abseta);
539 
540  if( not (tag_is_valid_tag or tag_is_valid_probe) ) continue;
541 
542  // Loop over probes
543  for (size_t iprobe = 0; iprobe < superclusters->size(); ++iprobe){
544  // Initialize probe
545  const auto sc = superclusters->ptrAt(iprobe);
546  if(*sc == *(el1->superCluster())) {
547  continue;
548  }
549 
550  // Find matching electron
551  for (size_t iele = 0; iele < electrons->size(); ++iele){
552  if(iele == itag) continue;
553  const auto ele = electrons->ptrAt(iele);
554  if(*sc == *(ele->superCluster())) {
555  eleProbe = ele;
556  break;
557  }
558  }
559 
560  // Assign final probe 4-vector
561  TLorentzVector vProbe(0.,0.,0.,0.);
562  if(eleProbe.isNonnull()){
563  vProbe.SetPtEtaPhiM( eleProbe->pt(), eleProbe->eta(), eleProbe->phi(), ELECTRON_MASS);
564  } else {
565  double pt = sc->energy() * sqrt( 1 - pow(tanh(sc->eta()),2) );
566  vProbe.SetPtEtaPhiM( pt, sc->eta(), sc->phi(), ELECTRON_MASS);
567  }
568 
569  // Probe Selection
570  double probe_pt = vProbe.Pt();
571  double probe_abseta = fabs(sc->eta());
572  bool probe_is_valid_probe = ele_probe_selection(probe_pt, probe_abseta);
573  if( !probe_is_valid_probe ) continue;
574 
575  // Good Probe found!
576 
577  // Require good Z
578  TLorentzVector vDilep = vTag + vProbe;
579 
580  if((vDilep.M()<ELE_MASS_CUT_LOW) || (vDilep.M()>ELE_MASS_CUT_HIGH)) continue;
581  if(eleProbe.isNonnull() and (eleProbe->charge() != - el1->charge())) continue;
582 
583  // Good Z found!
584 
585  long ls = iEvent.luminosityBlock();
586  bool probe_pass_trigger = isElectronTriggerObj(*fTrigger, TriggerTools::matchHLT(vProbe.Eta(), vProbe.Phi(), fTrigger->fRecords, *hTrgEvt));
587  bool probe_pass_id = eleProbe.isNonnull() and EleID_.passID(eleProbe,beamspotHandle,conversionsHandle);
588 
590  bool probe_is_forward = probe_abseta > ELE_ETA_CRACK_LOW;
591  bool tag_is_forward = tag_abseta > ELE_ETA_CRACK_LOW;
592 
593  if(probe_pass_id) {
594  if(probe_is_forward and tag_is_forward) {
595  h_ee_yield_Z_eeee -> Fill(ls);
596  } else if(!probe_is_forward and !tag_is_forward) {
597  h_ee_yield_Z_ebeb -> Fill(ls);
598  } else {
599  h_ee_yield_Z_ebee -> Fill(ls);
600  }
601  }
602 
603  if(!tag_is_valid_tag) continue;
604 
606  if(probe_pass_id) {
607  if(probe_is_forward) {
608  h_ee_mass_id_pass_forward->Fill(ls, vDilep.M());
609  } else {
610  h_ee_mass_id_pass_central->Fill(ls, vDilep.M());
611  }
612  } else {
613  if(probe_is_forward) {
614  h_ee_mass_id_fail_forward->Fill(ls, vDilep.M());
615  } else {
616  h_ee_mass_id_fail_central->Fill(ls, vDilep.M());
617  }
618  }
619 
621  if(probe_pass_id and probe_pass_trigger) {
622  if(probe_is_forward) {
623  h_ee_mass_HLT_pass_forward->Fill(ls, vDilep.M());
624  } else {
625  h_ee_mass_HLT_pass_central->Fill(ls, vDilep.M());
626  }
627  } else if (probe_pass_id) {
628  if(probe_is_forward) {
629  h_ee_mass_HLT_fail_forward->Fill(ls, vDilep.M());
630  } else {
631  h_ee_mass_HLT_fail_central->Fill(ls, vDilep.M());
632  }
633  }
634  } // End of probe loop
635  }//End of tag loop
636 
637 }
bool isElectronTrigger(ZCountingTrigger::TTrigger triggerMenu, TriggerBits hltBits)
Definition: ZCounting.cc:714
double eta() const final
momentum pseudorapidity
float phi() const
Momentum azimuthal angle. Note this is taken from the first SimTrack only.
Definition: SimCluster.h:161
bool accept() const
Has at least one path accepted the event?
double pt() const final
transverse momentum
std::vector< Vertex > VertexCollection
collection of Vertex objects
Definition: VertexFwd.h:9
int charge() const final
electric charge
Definition: LeafCandidate.h:91
edm::EDGetTokenT< edm::View< reco::GsfElectron > > fGsfElectronName_token
Definition: ZCounting.h:91
bool isElectronTriggerObj(ZCountingTrigger::TTrigger triggerMenu, TriggerObjects hltMatchBits)
Definition: ZCounting.cc:719
ElectronIdentifier EleID_
Definition: ZCounting.h:156
MonitorElement * h_ee_mass_HLT_fail_central
Definition: ZCounting.h:187
MonitorElement * h_ee_mass_HLT_pass_forward
Definition: ZCounting.h:188
void Fill(long long x)
ParameterSetID const & parameterSetID() const
Definition: TriggerNames.cc:42
double VtxRhoCut_
Definition: ZCounting.h:137
int iEvent
Definition: GenABIO.cc:230
edm::ParameterSetID fTriggerNamesID
Definition: ZCounting.h:77
const float ELE_MASS_CUT_HIGH
Definition: ZCounting.h:150
edm::EDGetTokenT< reco::VertexCollection > fPVName_token
Definition: ZCounting.h:83
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
T sqrt(T t)
Definition: SSEVec.h:18
std::bitset< kNTrigBit > TriggerBits
Definition: TriggerDefs.h:7
double VtxNTracksFitCut_
Definition: ZCounting.h:134
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
bool passID(const reco::GsfElectronPtr &ele, edm::Handle< reco::BeamSpot > beamspot, edm::Handle< reco::ConversionCollection > conversions)
void initHLT(const edm::TriggerResults &, const edm::TriggerNames &)
Definition: ZCounting.cc:655
float energy() const
Energy. Note this is taken from the first SimTrack only.
Definition: SimCluster.h:111
MonitorElement * h_ee_yield_Z_eeee
Definition: ZCounting.h:194
MonitorElement * h_ee_yield_Z_ebee
Definition: ZCounting.h:193
double VtxNdofCut_
Definition: ZCounting.h:135
MonitorElement * h_ee_mass_HLT_fail_forward
Definition: ZCounting.h:189
bool isValid() const
Definition: HandleBase.h:74
bool ele_tag_selection(double pt, double abseta)
Definition: ZCounting.cc:645
bool isNonnull() const
Checks for non-null.
Definition: Ptr.h:168
const float ELE_MASS_CUT_LOW
Definition: ZCounting.h:149
const float ELE_ETA_CRACK_LOW
Definition: ZCounting.h:153
edm::EDGetTokenT< trigger::TriggerEvent > fHLTObjTag_token
Definition: ZCounting.h:80
MonitorElement * h_ee_mass_id_pass_forward
Definition: ZCounting.h:183
MonitorElement * h_ee_mass_HLT_pass_central
Definition: ZCounting.h:186
def ls(path, rec=False)
Definition: eostools.py:348
void setRho(double rho)
T const * product() const
Definition: Handle.h:81
MonitorElement * h_ee_yield_Z_ebeb
Definition: ZCounting.h:192
edm::EDGetTokenT< reco::ConversionCollection > fConversionToken
Definition: ZCounting.h:104
edm::EDGetTokenT< edm::TriggerResults > fHLTTag_token
Definition: ZCounting.h:81
bool ele_probe_selection(double pt, double abseta)
Definition: ZCounting.cc:639
MonitorElement * h_ee_mass_id_pass_central
Definition: ZCounting.h:181
MonitorElement * h_ee_mass_id_fail_forward
Definition: ZCounting.h:184
edm::EDGetTokenT< double > fRhoToken
Definition: ZCounting.h:98
MonitorElement * h_ee_mass_id_fail_central
Definition: ZCounting.h:182
const float ELECTRON_MASS
Definition: ZCounting.h:143
edm::EDGetTokenT< reco::BeamSpot > fBeamspotToken
Definition: ZCounting.h:101
std::unique_ptr< ZCountingTrigger::TTrigger > fTrigger
Definition: ZCounting.h:109
double phi() const final
momentum azimuthal angle
edm::EDGetTokenT< edm::View< reco::SuperCluster > > fSCName_token
Definition: ZCounting.h:93
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:40
double VtxAbsZCut_
Definition: ZCounting.h:136
float eta() const
Momentum pseudorapidity. Note this is taken from the simtrack before the calorimeter.
Definition: SimCluster.h:171
void ZCounting::analyzeMuons ( edm::Event const &  e,
edm::EventSetup const &  eSetup 
)
private

Definition at line 187 of file ZCounting.cc.

References edm::HLTGlobalStatus::accept(), EtaCutL1_, EtaCutL2_, fHLTObjTag_token, fHLTTag_token, MonitorElement::Fill(), fMuonName_token, fPVName_token, fTrackName_token, fTrigger, fTriggerNamesID, edm::Event::getByToken(), h_mass_HLT_fail_central, h_mass_HLT_fail_forward, h_mass_HLT_pass_central, h_mass_HLT_pass_forward, h_mass_SIT_fail_central, h_mass_SIT_fail_forward, h_mass_SIT_pass_central, h_mass_SIT_pass_forward, h_mass_Sta_fail_central, h_mass_Sta_fail_forward, h_mass_Sta_pass_central, h_mass_Sta_pass_forward, h_npv, h_yield_Z, h_yieldBB_Z, h_yieldEE_Z, IDType_, initHLT(), reco::isMuon(), isMuonTrigger(), isMuonTriggerObj(), IsoCut_, IsoType_, edm::HandleBase::isValid(), edm::EventBase::luminosityBlock(), MassMax_, MassMin_, MUON_BOUND, MUON_MASS, edm::TriggerNames::parameterSetID(), passMuonID(), passMuonIso(), edm::Handle< T >::product(), hiDetachedQuadStep_cff::pt1, hiDetachedQuadStep_cff::pt2, PtCutL1_, PtCutL2_, MetAnalyzer::pv(), q1, q2, edm::Event::triggerNames(), VtxAbsZCut_, VtxNdofCut_, VtxNTracksFitCut_, and VtxRhoCut_.

Referenced by analyze().

187  {
188  edm::LogInfo("ZCounting") << "ZCounting::analyzeMuons" << std::endl;
189  //-------------------------------
190  //--- Vertex
191  //-------------------------------
193  iEvent.getByToken(fPVName_token,hVertexProduct);
194  if(!hVertexProduct.isValid()) return;
195 
196  const reco::VertexCollection *pvCol = hVertexProduct.product();
197  const reco::Vertex* pv = &(*pvCol->begin());
198  int nvtx = 0;
199 
200  for(auto const & itVtx : *hVertexProduct) {
201  if(itVtx.isFake()) continue;
202  if(itVtx.tracksSize() < VtxNTracksFitCut_) continue;
203  if(itVtx.ndof() < VtxNdofCut_) continue;
204  if(fabs(itVtx.z()) > VtxAbsZCut_) continue;
205  if(itVtx.position().Rho() > VtxRhoCut_) continue;
206 
207  if(nvtx==0) {
208  pv = &itVtx;
209  }
210  nvtx++;
211  }
212 
213  h_npv->Fill(iEvent.luminosityBlock(), nvtx);
214 
215  // Good vertex requirement
216  if(nvtx==0) return;
217 
218  //-------------------------------
219  //--- Trigger
220  //-------------------------------
222  iEvent.getByToken(fHLTTag_token,hTrgRes);
223  if(!hTrgRes.isValid()) return;
224 
226  iEvent.getByToken(fHLTObjTag_token,hTrgEvt);
227 
228  const edm::TriggerNames &triggerNames = iEvent.triggerNames(*hTrgRes);
229  bool config_changed = false;
230  if(fTriggerNamesID != triggerNames.parameterSetID()) {
231  fTriggerNamesID = triggerNames.parameterSetID();
232  config_changed = true;
233  }
234  if(config_changed) {
235  initHLT(*hTrgRes, triggerNames);
236  }
237 
238  TriggerBits triggerBits;
239  for(unsigned int irec=0; irec<fTrigger->fRecords.size(); irec++) {
240  if(fTrigger->fRecords[irec].hltPathIndex == (unsigned int)-1) continue;
241  if(hTrgRes->accept(fTrigger->fRecords[irec].hltPathIndex)) {
242  triggerBits [fTrigger->fRecords[irec].baconTrigBit] = true;
243  }
244  }
245  //if(fSkipOnHLTFail && triggerBits == 0) return;
246 
247  // Trigger requirement
248  if(!isMuonTrigger(*fTrigger, triggerBits)) return;
249 
250  //-------------------------------
251  //--- Muons and Tracks
252  //-------------------------------
254  iEvent.getByToken(fMuonName_token,hMuonProduct);
255  if(!hMuonProduct.isValid()) return;
256 
258  iEvent.getByToken(fTrackName_token,hTrackProduct);
259  if(!hTrackProduct.isValid()) return;
260 
261  TLorentzVector vTag(0.,0.,0.,0.);
262  TLorentzVector vProbe(0.,0.,0.,0.);
263  TLorentzVector vTrack(0.,0.,0.,0.);
264 
265  // Tag loop
266  for(auto const & itMu1 : *hMuonProduct) {
267 
268  float pt1 = itMu1.muonBestTrack()->pt();
269  float eta1 = itMu1.muonBestTrack()->eta();
270  float phi1 = itMu1.muonBestTrack()->phi();
271  float q1 = itMu1.muonBestTrack()->charge();
272 
273  // Tag selection: kinematic cuts, lepton selection and trigger matching
274  if(pt1 < PtCutL1_) continue;
275  if(fabs(eta1) > EtaCutL1_) continue;
276  if(!(passMuonID(itMu1, *pv, IDType_) && passMuonIso(itMu1, IsoType_, IsoCut_))) continue;
277  if(!isMuonTriggerObj(*fTrigger, TriggerTools::matchHLT(eta1, phi1, fTrigger->fRecords, *hTrgEvt))) continue;
278 
279  vTag.SetPtEtaPhiM(pt1, eta1, phi1, MUON_MASS);
280 
281  // Probe loop over muons
282  for(auto const & itMu2 : *hMuonProduct) {
283  if(&itMu2 == &itMu1) continue;
284 
285  float pt2 = itMu2.muonBestTrack()->pt();
286  float eta2 = itMu2.muonBestTrack()->eta();
287  float phi2 = itMu2.muonBestTrack()->phi();
288  float q2 = itMu2.muonBestTrack()->charge();
289 
290  // Probe selection: kinematic cuts and opposite charge requirement
291  if(pt2 < PtCutL2_) continue;
292  if(fabs(eta2) > EtaCutL2_) continue;
293  if(q1 == q2) continue;
294 
295  vProbe.SetPtEtaPhiM(pt2, eta2, phi2, MUON_MASS);
296 
297  // Mass window
298  TLorentzVector vDilep = vTag + vProbe;
299  float dilepMass = vDilep.M();
300  if((dilepMass < MassMin_) || (dilepMass > MassMax_)) continue;
301 
302  bool isTagCentral = false;
303  bool isProbeCentral = false;
304  if(fabs(eta1) < MUON_BOUND) isTagCentral = true;
305  if(fabs(eta2) < MUON_BOUND) isProbeCentral = true;
306 
307  // Determine event category for efficiency calculation
308  if(passMuonID(itMu2, *pv, IDType_) && passMuonIso(itMu2, IsoType_, IsoCut_)){
309  if(isMuonTriggerObj(*fTrigger, TriggerTools::matchHLT(eta2, phi2, fTrigger->fRecords, *hTrgEvt))){
310  // category 2HLT: both muons passing trigger requirements
311  if(&itMu1>&itMu2) continue; // make sure we don't double count MuMu2HLT category
312 
313  // Fill twice for each event, since both muons pass trigger
314  if(isTagCentral){
315  h_mass_HLT_pass_central->Fill(iEvent.luminosityBlock(), dilepMass);
316  h_mass_SIT_pass_central->Fill(iEvent.luminosityBlock(), dilepMass);
317  h_mass_Sta_pass_central->Fill(iEvent.luminosityBlock(), dilepMass);
318  }
319  else
320  {
321  h_mass_HLT_pass_forward->Fill(iEvent.luminosityBlock(), dilepMass);
322  h_mass_SIT_pass_forward->Fill(iEvent.luminosityBlock(), dilepMass);
323  h_mass_Sta_pass_forward->Fill(iEvent.luminosityBlock(), dilepMass);
324  }
325 
326  if(isProbeCentral){
327  h_mass_HLT_pass_central->Fill(iEvent.luminosityBlock(), dilepMass);
328  h_mass_SIT_pass_central->Fill(iEvent.luminosityBlock(), dilepMass);
329  h_mass_Sta_pass_central->Fill(iEvent.luminosityBlock(), dilepMass);
330  }
331  else
332  {
333  h_mass_HLT_pass_forward->Fill(iEvent.luminosityBlock(), dilepMass);
334  h_mass_SIT_pass_forward->Fill(iEvent.luminosityBlock(), dilepMass);
335  h_mass_Sta_pass_forward->Fill(iEvent.luminosityBlock(), dilepMass);
336  }
337 
338  }
339  else{
340  // category 1HLT: probe passing selection but not trigger
341  if(isProbeCentral){
342  h_mass_HLT_fail_central->Fill(iEvent.luminosityBlock(), dilepMass);
343  h_mass_SIT_pass_central->Fill(iEvent.luminosityBlock(), dilepMass);
344  h_mass_Sta_pass_central->Fill(iEvent.luminosityBlock(), dilepMass);
345  }
346  else
347  {
348  h_mass_HLT_fail_forward->Fill(iEvent.luminosityBlock(), dilepMass);
349  h_mass_SIT_pass_forward->Fill(iEvent.luminosityBlock(), dilepMass);
350  h_mass_Sta_pass_forward->Fill(iEvent.luminosityBlock(), dilepMass);
351  }
352 
353  }
354  // category 2HLT + 1HLT: Fill once for Z yield
355  h_yield_Z->Fill(iEvent.luminosityBlock());
356  if(isTagCentral && isProbeCentral) h_yieldBB_Z->Fill(iEvent.luminosityBlock());
357  else if(!isTagCentral && !isProbeCentral) h_yieldEE_Z->Fill(iEvent.luminosityBlock());
358  }
359  else if(itMu2.isGlobalMuon()){
360  // category NoSel: probe is a GLB muon but failing selection
361  if(isProbeCentral){
362  h_mass_SIT_fail_central->Fill(iEvent.luminosityBlock(), dilepMass);
363  h_mass_Sta_pass_central->Fill(iEvent.luminosityBlock(), dilepMass);
364  }
365  else
366  {
367  h_mass_SIT_fail_forward->Fill(iEvent.luminosityBlock(), dilepMass);
368  h_mass_Sta_pass_forward->Fill(iEvent.luminosityBlock(), dilepMass);
369  }
370  }
371  else if(itMu2.isStandAloneMuon()){
372  // category STA: probe is a STA muon
373  if(isProbeCentral){
374  h_mass_Sta_fail_central->Fill(iEvent.luminosityBlock(), dilepMass);
375  }
376  else
377  {
378  h_mass_Sta_fail_forward->Fill(iEvent.luminosityBlock(), dilepMass);
379  }
380  }
381  else if(itMu2.innerTrack()->hitPattern().trackerLayersWithMeasurement() >= 6 && itMu2.innerTrack()->hitPattern().numberOfValidPixelHits() >= 1){
382  // cateogry Trk: probe is a tracker track
383  if(isProbeCentral){
384  h_mass_Sta_fail_central->Fill(iEvent.luminosityBlock(), dilepMass);
385  }
386  else
387  {
388  h_mass_Sta_fail_forward->Fill(iEvent.luminosityBlock(), dilepMass);
389  }
390  }
391 
392  }// End of probe loop over muons
393 
394  // Probe loop over tracks, only for standalone efficiency calculation
395  for(auto const & itTrk : *hTrackProduct) {
396 
397  // Check track is not a muon
398  bool isMuon = false;
399  for(auto const & itMu : *hMuonProduct) {
400  if(itMu.innerTrack().isNonnull() && itMu.innerTrack().get() == &itTrk) {
401  isMuon = true;
402  break;
403  }
404  }
405  if(isMuon) continue;
406 
407  float pt2 = itTrk.pt();
408  float eta2 = itTrk.eta();
409  float phi2 = itTrk.phi();
410  float q2 = itTrk.charge();
411 
412  // Probe selection: kinematic cuts and opposite charge requirement
413  if(pt2 < PtCutL2_) continue;
414  if(fabs(eta2) > EtaCutL2_) continue;
415  if(q1 == q2) continue;
416 
417  vTrack.SetPtEtaPhiM(pt2, eta2, phi2, MUON_MASS);
418 
419  TLorentzVector vDilep = vTag + vTrack;
420  float dilepMass = vDilep.M();
421  if((dilepMass < MassMin_) || (dilepMass > MassMax_)) continue;
422 
423  bool isTrackCentral = false;
424  if(fabs(eta2) > MUON_BOUND) isTrackCentral = true;
425 
426  if(itTrk.hitPattern().trackerLayersWithMeasurement() >= 6 && itTrk.hitPattern().numberOfValidPixelHits() >= 1){
427  if(isTrackCentral) h_mass_Sta_fail_central->Fill(iEvent.luminosityBlock(), dilepMass);
428  else h_mass_Sta_fail_forward->Fill(iEvent.luminosityBlock(), dilepMass);
429  }
430 
431  }//End of probe loop over tracks
432 
433  }//End of tag loop
434 
435 }
MonitorElement * h_mass_Sta_fail_central
Definition: ZCounting.h:172
MonitorElement * h_mass_Sta_pass_central
Definition: ZCounting.h:170
double IsoCut_
Definition: ZCounting.h:115
MonitorElement * h_mass_SIT_fail_central
Definition: ZCounting.h:167
double PtCutL1_
Definition: ZCounting.h:117
bool isMuon(const Candidate &part)
Definition: pdgIdUtils.h:11
MonitorElement * h_mass_SIT_pass_forward
Definition: ZCounting.h:166
bool accept() const
Has at least one path accepted the event?
MonitorElement * h_yield_Z
Definition: ZCounting.h:176
MuonIsoTypes IsoType_
Definition: ZCounting.h:114
std::vector< Vertex > VertexCollection
collection of Vertex objects
Definition: VertexFwd.h:9
bool passMuonID(const reco::Muon &muon, const reco::Vertex &vtx, const MuonIDTypes &idType)
Definition: ZCounting.cc:694
MonitorElement * h_mass_HLT_pass_forward
Definition: ZCounting.h:161
double q2[4]
Definition: TauolaWrapper.h:88
void Fill(long long x)
ParameterSetID const & parameterSetID() const
Definition: TriggerNames.cc:42
edm::EDGetTokenT< reco::TrackCollection > fTrackName_token
Definition: ZCounting.h:87
const double MUON_MASS
Definition: ZCounting.h:139
edm::EDGetTokenT< reco::MuonCollection > fMuonName_token
Definition: ZCounting.h:85
double VtxRhoCut_
Definition: ZCounting.h:137
int iEvent
Definition: GenABIO.cc:230
MonitorElement * h_mass_Sta_pass_forward
Definition: ZCounting.h:171
edm::ParameterSetID fTriggerNamesID
Definition: ZCounting.h:77
edm::EDGetTokenT< reco::VertexCollection > fPVName_token
Definition: ZCounting.h:83
MonitorElement * h_yieldEE_Z
Definition: ZCounting.h:178
std::bitset< kNTrigBit > TriggerBits
Definition: TriggerDefs.h:7
double VtxNTracksFitCut_
Definition: ZCounting.h:134
bool isMuonTrigger(const ZCountingTrigger::TTrigger &triggerMenu, const TriggerBits &hltBits)
Definition: ZCounting.cc:682
void initHLT(const edm::TriggerResults &, const edm::TriggerNames &)
Definition: ZCounting.cc:655
def pv(vc)
Definition: MetAnalyzer.py:6
double VtxNdofCut_
Definition: ZCounting.h:135
bool isValid() const
Definition: HandleBase.h:74
MuonIDTypes IDType_
Definition: ZCounting.h:113
MonitorElement * h_npv
Definition: ZCounting.h:175
double PtCutL2_
Definition: ZCounting.h:118
MonitorElement * h_mass_Sta_fail_forward
Definition: ZCounting.h:173
const double MUON_BOUND
Definition: ZCounting.h:140
edm::EDGetTokenT< trigger::TriggerEvent > fHLTObjTag_token
Definition: ZCounting.h:80
MonitorElement * h_mass_SIT_fail_forward
Definition: ZCounting.h:168
T const * product() const
Definition: Handle.h:81
double q1[4]
Definition: TauolaWrapper.h:87
MonitorElement * h_mass_HLT_pass_central
Definition: ZCounting.h:160
edm::EDGetTokenT< edm::TriggerResults > fHLTTag_token
Definition: ZCounting.h:81
MonitorElement * h_mass_HLT_fail_forward
Definition: ZCounting.h:163
double EtaCutL1_
Definition: ZCounting.h:119
bool passMuonIso(const reco::Muon &muon, const MuonIsoTypes &isoType, const float isoCut)
Definition: ZCounting.cc:704
MonitorElement * h_yieldBB_Z
Definition: ZCounting.h:177
double MassMax_
Definition: ZCounting.h:124
double MassMin_
Definition: ZCounting.h:123
MonitorElement * h_mass_SIT_pass_central
Definition: ZCounting.h:165
std::unique_ptr< ZCountingTrigger::TTrigger > fTrigger
Definition: ZCounting.h:109
double EtaCutL2_
Definition: ZCounting.h:120
MonitorElement * h_mass_HLT_fail_central
Definition: ZCounting.h:162
bool isMuonTriggerObj(const ZCountingTrigger::TTrigger &triggerMenu, const TriggerObjects &hltMatchBits)
Definition: ZCounting.cc:688
double VtxAbsZCut_
Definition: ZCounting.h:136
void ZCounting::bookHistograms ( DQMStore::IBooker ibooker_,
edm::Run const &  ,
edm::EventSetup const &   
)
overrideprotectedvirtual

Implements DQMEDAnalyzer.

Definition at line 130 of file ZCounting.cc.

References DQMStore::IBooker::book1D(), DQMStore::IBooker::book2D(), DQMStore::IBooker::cd(), h_ee_mass_HLT_fail_central, h_ee_mass_HLT_fail_forward, h_ee_mass_HLT_pass_central, h_ee_mass_HLT_pass_forward, h_ee_mass_id_fail_central, h_ee_mass_id_fail_forward, h_ee_mass_id_pass_central, h_ee_mass_id_pass_forward, h_ee_yield_Z_ebeb, h_ee_yield_Z_ebee, h_ee_yield_Z_eeee, h_mass_HLT_fail_central, h_mass_HLT_fail_forward, h_mass_HLT_pass_central, h_mass_HLT_pass_forward, h_mass_SIT_fail_central, h_mass_SIT_fail_forward, h_mass_SIT_pass_central, h_mass_SIT_pass_forward, h_mass_Sta_fail_central, h_mass_Sta_fail_forward, h_mass_Sta_pass_central, h_mass_Sta_pass_forward, h_npv, h_yield_Z, h_yieldBB_Z, h_yieldEE_Z, LumiBin_, LumiMax_, LumiMin_, MassBin_, MassMax_, MassMin_, PVBin_, PVMax_, PVMin_, and DQMStore::IBooker::setCurrentFolder().

131 {
132  edm::LogInfo("ZCounting") << "ZCounting::bookHistograms" << std::endl;
133 
134  ibooker_.cd();
135  ibooker_.setCurrentFolder("ZCounting/Histograms");
136 
137 
138  // Muon histograms
139  h_mass_HLT_pass_central = ibooker_.book2D("h_mass_HLT_pass_central", "h_mass_HLT_pass_central", LumiBin_, LumiMin_, LumiMax_, MassBin_, MassMin_, MassMax_);
140  h_mass_HLT_pass_forward = ibooker_.book2D("h_mass_HLT_pass_forward", "h_mass_HLT_pass_forward", LumiBin_, LumiMin_, LumiMax_, MassBin_, MassMin_, MassMax_);
141  h_mass_HLT_fail_central = ibooker_.book2D("h_mass_HLT_fail_central", "h_mass_HLT_fail_central", LumiBin_, LumiMin_, LumiMax_, MassBin_, MassMin_, MassMax_);
142  h_mass_HLT_fail_forward = ibooker_.book2D("h_mass_HLT_fail_forward", "h_mass_HLT_fail_forward", LumiBin_, LumiMin_, LumiMax_, MassBin_, MassMin_, MassMax_);
143 
144  h_mass_SIT_pass_central = ibooker_.book2D("h_mass_SIT_pass_central", "h_mass_SIT_pass_central", LumiBin_, LumiMin_, LumiMax_, MassBin_, MassMin_, MassMax_);
145  h_mass_SIT_pass_forward = ibooker_.book2D("h_mass_SIT_pass_forward", "h_mass_SIT_pass_forward", LumiBin_, LumiMin_, LumiMax_, MassBin_, MassMin_, MassMax_);
146  h_mass_SIT_fail_central = ibooker_.book2D("h_mass_SIT_fail_central", "h_mass_SIT_fail_central", LumiBin_, LumiMin_, LumiMax_, MassBin_, MassMin_, MassMax_);
147  h_mass_SIT_fail_forward = ibooker_.book2D("h_mass_SIT_fail_forward", "h_mass_SIT_fail_forward", LumiBin_, LumiMin_, LumiMax_, MassBin_, MassMin_, MassMax_);
148 
149  h_mass_Sta_pass_central = ibooker_.book2D("h_mass_Sta_pass_central", "h_mass_Sta_pass_central", LumiBin_, LumiMin_, LumiMax_, MassBin_, MassMin_, MassMax_);
150  h_mass_Sta_pass_forward = ibooker_.book2D("h_mass_Sta_pass_forward", "h_mass_Sta_pass_forward", LumiBin_, LumiMin_, LumiMax_, MassBin_, MassMin_, MassMax_);
151  h_mass_Sta_fail_central = ibooker_.book2D("h_mass_Sta_fail_central", "h_mass_Sta_fail_central", LumiBin_, LumiMin_, LumiMax_, MassBin_, MassMin_, MassMax_);
152  h_mass_Sta_fail_forward = ibooker_.book2D("h_mass_Sta_fail_forward", "h_mass_Sta_fail_forward", LumiBin_, LumiMin_, LumiMax_, MassBin_, MassMin_, MassMax_);
153 
154  h_npv = ibooker_.book2D("h_npv", "h_npv", LumiBin_, LumiMin_, LumiMax_, PVBin_, PVMin_, PVMax_);
155  h_yield_Z = ibooker_.book1D("h_yield_Z", "h_yield_Z", LumiBin_, LumiMin_, LumiMax_);
156  h_yieldBB_Z = ibooker_.book1D("h_yieldBB_Z", "h_yieldBB_Z", LumiBin_, LumiMin_, LumiMax_);
157  h_yieldEE_Z = ibooker_.book1D("h_yieldEE_Z", "h_yieldEE_Z", LumiBin_, LumiMin_, LumiMax_);
158 
159 
160  // Electron histograms
161  h_ee_mass_id_pass_central = ibooker_.book2D("h_ee_mass_id_pass_central", "h_ee_mass_id_pass_central", LumiBin_, LumiMin_, LumiMax_, MassBin_, MassMin_, MassMax_);
162  h_ee_mass_id_fail_central = ibooker_.book2D("h_ee_mass_id_fail_central", "h_ee_mass_id_fail_central", LumiBin_, LumiMin_, LumiMax_, MassBin_, MassMin_, MassMax_);
163  h_ee_mass_id_pass_forward = ibooker_.book2D("h_ee_mass_id_pass_forward", "h_ee_mass_id_pass_forward", LumiBin_, LumiMin_, LumiMax_, MassBin_, MassMin_, MassMax_);
164  h_ee_mass_id_fail_forward = ibooker_.book2D("h_ee_mass_id_fail_forward", "h_ee_mass_id_fail_forward", LumiBin_, LumiMin_, LumiMax_, MassBin_, MassMin_, MassMax_);
165 
166  h_ee_mass_HLT_pass_central = ibooker_.book2D("h_ee_mass_HLT_pass_central", "h_ee_mass_HLT_pass_central", LumiBin_, LumiMin_, LumiMax_, MassBin_, MassMin_, MassMax_);
167  h_ee_mass_HLT_fail_central = ibooker_.book2D("h_ee_mass_HLT_fail_central", "h_ee_mass_HLT_fail_central", LumiBin_, LumiMin_, LumiMax_, MassBin_, MassMin_, MassMax_);
168  h_ee_mass_HLT_pass_forward = ibooker_.book2D("h_ee_mass_HLT_pass_forward", "h_ee_mass_HLT_pass_forward", LumiBin_, LumiMin_, LumiMax_, MassBin_, MassMin_, MassMax_);
169  h_ee_mass_HLT_fail_forward = ibooker_.book2D("h_ee_mass_HLT_fail_forward", "h_ee_mass_HLT_fail_forward", LumiBin_, LumiMin_, LumiMax_, MassBin_, MassMin_, MassMax_);
170 
171  h_ee_yield_Z_ebeb = ibooker_.book1D("h_ee_yield_Z_ebeb", "h_ee_yield_Z_ebeb", LumiBin_, LumiMin_, LumiMax_);
172  h_ee_yield_Z_ebee = ibooker_.book1D("h_ee_yield_Z_ebee", "h_ee_yield_Z_ebee", LumiBin_, LumiMin_, LumiMax_);
173  h_ee_yield_Z_eeee = ibooker_.book1D("h_ee_yield_Z_eeee", "h_ee_yield_Z_eeee", LumiBin_, LumiMin_, LumiMax_);
174 }
MonitorElement * h_mass_Sta_fail_central
Definition: ZCounting.h:172
MonitorElement * h_mass_Sta_pass_central
Definition: ZCounting.h:170
MonitorElement * h_mass_SIT_fail_central
Definition: ZCounting.h:167
double LumiMax_
Definition: ZCounting.h:128
MonitorElement * h_mass_SIT_pass_forward
Definition: ZCounting.h:166
MonitorElement * h_yield_Z
Definition: ZCounting.h:176
MonitorElement * h_mass_HLT_pass_forward
Definition: ZCounting.h:161
MonitorElement * h_ee_mass_HLT_fail_central
Definition: ZCounting.h:187
double LumiMin_
Definition: ZCounting.h:127
MonitorElement * h_ee_mass_HLT_pass_forward
Definition: ZCounting.h:188
MonitorElement * h_mass_Sta_pass_forward
Definition: ZCounting.h:171
MonitorElement * h_yieldEE_Z
Definition: ZCounting.h:178
int PVBin_
Definition: ZCounting.h:130
MonitorElement * book1D(Args &&...args)
Definition: DQMStore.h:118
MonitorElement * h_ee_yield_Z_eeee
Definition: ZCounting.h:194
MonitorElement * h_ee_yield_Z_ebee
Definition: ZCounting.h:193
MonitorElement * h_ee_mass_HLT_fail_forward
Definition: ZCounting.h:189
MonitorElement * h_npv
Definition: ZCounting.h:175
MonitorElement * h_mass_Sta_fail_forward
Definition: ZCounting.h:173
MonitorElement * h_ee_mass_id_pass_forward
Definition: ZCounting.h:183
MonitorElement * h_ee_mass_HLT_pass_central
Definition: ZCounting.h:186
MonitorElement * h_mass_SIT_fail_forward
Definition: ZCounting.h:168
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:274
MonitorElement * book2D(Args &&...args)
Definition: DQMStore.h:136
MonitorElement * h_ee_yield_Z_ebeb
Definition: ZCounting.h:192
MonitorElement * h_mass_HLT_pass_central
Definition: ZCounting.h:160
int MassBin_
Definition: ZCounting.h:122
int LumiBin_
Definition: ZCounting.h:126
MonitorElement * h_ee_mass_id_pass_central
Definition: ZCounting.h:181
MonitorElement * h_mass_HLT_fail_forward
Definition: ZCounting.h:163
MonitorElement * h_ee_mass_id_fail_forward
Definition: ZCounting.h:184
MonitorElement * h_yieldBB_Z
Definition: ZCounting.h:177
MonitorElement * h_ee_mass_id_fail_central
Definition: ZCounting.h:182
double MassMax_
Definition: ZCounting.h:124
double PVMax_
Definition: ZCounting.h:132
double MassMin_
Definition: ZCounting.h:123
MonitorElement * h_mass_SIT_pass_central
Definition: ZCounting.h:165
double PVMin_
Definition: ZCounting.h:131
MonitorElement * h_mass_HLT_fail_central
Definition: ZCounting.h:162
void ZCounting::dqmBeginRun ( edm::Run const &  ,
edm::EventSetup const &   
)
overrideprotectedvirtual

Reimplemented from DQMEDAnalyzer.

Definition at line 119 of file ZCounting.cc.

References fTrigger.

120 {
121  edm::LogInfo("ZCounting") << "ZCounting::beginRun" << std::endl;
122 
123  // Triggers
125 
126 }
std::unique_ptr< ZCountingTrigger::TTrigger > fTrigger
Definition: ZCounting.h:109
bool ZCounting::ele_probe_selection ( double  pt,
double  abseta 
)
private

Definition at line 639 of file ZCounting.cc.

References ELE_ETA_CRACK_HIGH, ELE_ETA_CRACK_LOW, ELE_ETA_CUT_PROBE, and ELE_PT_CUT_PROBE.

Referenced by analyzeElectrons().

639  {
640  if(pt < ELE_PT_CUT_PROBE) return false;
641  if(abseta > ELE_ETA_CUT_PROBE) return false;
642  if( (abseta > ELE_ETA_CRACK_LOW) and (abseta < ELE_ETA_CRACK_HIGH) ) return false;
643  return true;
644 }
const float ELE_ETA_CRACK_HIGH
Definition: ZCounting.h:154
const float ELE_PT_CUT_PROBE
Definition: ZCounting.h:146
const float ELE_ETA_CRACK_LOW
Definition: ZCounting.h:153
const float ELE_ETA_CUT_PROBE
Definition: ZCounting.h:148
bool ZCounting::ele_tag_selection ( double  pt,
double  abseta 
)
private

Definition at line 645 of file ZCounting.cc.

References ELE_ETA_CRACK_HIGH, ELE_ETA_CRACK_LOW, ELE_ETA_CUT_TAG, and ELE_PT_CUT_TAG.

Referenced by analyzeElectrons().

645  {
646  if(pt < ELE_PT_CUT_TAG) return false;
647  if(abseta > ELE_ETA_CUT_TAG) return false;
648  if( (abseta > ELE_ETA_CRACK_LOW) and (abseta < ELE_ETA_CRACK_HIGH) ) return false;
649  return true;
650 }
const float ELE_ETA_CRACK_HIGH
Definition: ZCounting.h:154
const float ELE_ETA_CUT_TAG
Definition: ZCounting.h:147
const float ELE_ETA_CRACK_LOW
Definition: ZCounting.h:153
const float ELE_PT_CUT_TAG
Definition: ZCounting.h:145
void ZCounting::initHLT ( const edm::TriggerResults result,
const edm::TriggerNames triggerNames 
)
private

Definition at line 655 of file ZCounting.cc.

References fTrigger, createfilelist::int, edm::is_glob(), match(), patRefSel_triggerMatching_cfi::matches, listBenchmarks::pattern, edm::regexMatch(), edm::HLTGlobalStatus::size(), AlCaHLTBitMon_QueryRunRegistry::string, edm::TriggerNames::triggerIndex(), and edm::TriggerNames::triggerNames().

Referenced by analyzeElectrons(), and analyzeMuons().

656 {
657  for(unsigned int irec=0; irec<fTrigger->fRecords.size(); irec++) {
658  fTrigger->fRecords[irec].hltPathName = "";
659  fTrigger->fRecords[irec].hltPathIndex = (unsigned int)-1;
660  const std::string pattern = fTrigger->fRecords[irec].hltPattern;
661  if(edm::is_glob(pattern)) { // handle pattern with wildcards (*,?)
662  std::vector<std::vector<std::string>::const_iterator> matches = edm::regexMatch(triggerNames.triggerNames(), pattern);
663  if(matches.empty()) {
664  edm::LogWarning("ZCounting") << "requested pattern [" << pattern << "] does not match any HLT paths" << std::endl;
665  } else {
666  BOOST_FOREACH(std::vector<std::string>::const_iterator match, matches) {
667  fTrigger->fRecords[irec].hltPathName = *match;
668  }
669  }
670  } else { // take full HLT path name given
671  fTrigger->fRecords[irec].hltPathName = pattern;
672  }
673  // Retrieve index in trigger menu corresponding to HLT path
674  unsigned int index = triggerNames.triggerIndex(fTrigger->fRecords[irec].hltPathName);
675  if(index < result.size()) { // check for valid index
676  fTrigger->fRecords[irec].hltPathIndex = index;
677  }
678  }
679 }
bool is_glob(std::string const &pattern)
Definition: RegexMatch.cc:18
Strings const & triggerNames() const
Definition: TriggerNames.cc:24
unsigned int triggerIndex(std::string const &name) const
Definition: TriggerNames.cc:32
unsigned int size() const
Get number of paths stored.
std::vector< std::vector< std::string >::const_iterator > regexMatch(std::vector< std::string > const &strings, std::regex const &regexp)
Definition: RegexMatch.cc:30
std::pair< typename Association::data_type::first_type, double > match(Reference key, Association association, bool bestMatchByMaxValue)
Generic matching function.
Definition: Utils.h:10
std::unique_ptr< ZCountingTrigger::TTrigger > fTrigger
Definition: ZCounting.h:109
bool ZCounting::isElectronTrigger ( ZCountingTrigger::TTrigger  triggerMenu,
TriggerBits  hltBits 
)
private

Definition at line 714 of file ZCounting.cc.

References ZCountingTrigger::TTrigger::pass().

Referenced by analyzeElectrons().

715 {
716  return triggerMenu.pass("HLT_Ele35_WPTight_Gsf_v*",hltBits);
717 }
bool pass(const std::string &iName, const TriggerBits &iTrig) const
Definition: TTrigger.cc:59
bool ZCounting::isElectronTriggerObj ( ZCountingTrigger::TTrigger  triggerMenu,
TriggerObjects  hltMatchBits 
)
private

Definition at line 719 of file ZCounting.cc.

References DEFINE_FWK_MODULE, and ZCountingTrigger::TTrigger::passObj().

Referenced by analyzeElectrons().

720 {
721  return triggerMenu.passObj("HLT_Ele35_WPTight_Gsf_v*","hltEle35noerWPTightGsfTrackIsoFilter",hltMatchBits);
722 }
bool passObj(const std::string &iName, const std::string &iObjName, const TriggerObjects &iTrigObj) const
Definition: TTrigger.cc:67
bool ZCounting::isMuonTrigger ( const ZCountingTrigger::TTrigger triggerMenu,
const TriggerBits hltBits 
)
private

Definition at line 682 of file ZCounting.cc.

References ZCountingTrigger::TTrigger::pass().

Referenced by analyzeMuons().

683 {
684  return triggerMenu.pass("HLT_IsoMu27_v*",hltBits);
685 }
bool pass(const std::string &iName, const TriggerBits &iTrig) const
Definition: TTrigger.cc:59
bool ZCounting::isMuonTriggerObj ( const ZCountingTrigger::TTrigger triggerMenu,
const TriggerObjects hltMatchBits 
)
private

Definition at line 688 of file ZCounting.cc.

References ZCountingTrigger::TTrigger::passObj().

Referenced by analyzeMuons().

689 {
690  return triggerMenu.passObj("HLT_IsoMu27_v*","hltL3crIsoL1sMu22Or25L1f0L2f10QL3f27QL3trkIsoFiltered0p07",hltMatchBits);
691 }
bool passObj(const std::string &iName, const std::string &iObjName, const TriggerObjects &iTrigObj) const
Definition: TTrigger.cc:67
bool ZCounting::passMuonID ( const reco::Muon muon,
const reco::Vertex vtx,
const MuonIDTypes idType 
)
private

Definition at line 694 of file ZCounting.cc.

References muon::isLooseMuon(), muon::isMediumMuon(), muon::isTightMuon(), LooseID, MediumID, NoneID, and TightID.

Referenced by analyzeMuons().

695 {//Muon ID selection, using internal function "DataFormats/MuonReco/src/MuonSelectors.cc
696 
697  if (idType == LooseID && muon::isLooseMuon(muon)) return true;
698  else if(idType == MediumID && muon::isMediumMuon(muon)) return true;
699  else if(idType == TightID && muon::isTightMuon(muon, vtx)) return true;
700  else if(idType == NoneID) return true;
701  else return false;
702 }
bool isMediumMuon(const reco::Muon &, bool run2016_hip_mitigation=false)
bool isLooseMuon(const reco::Muon &)
bool isTightMuon(const reco::Muon &, const reco::Vertex &)
bool ZCounting::passMuonIso ( const reco::Muon muon,
const MuonIsoTypes isoType,
const float  isoCut 
)
private

Definition at line 704 of file ZCounting.cc.

References reco::Muon::isolationR03(), SiStripPI::max, NoneIso, PFIso, reco::Muon::pfIsolationR04(), reco::MuonPFIsolation::sumChargedHadronPt, reco::MuonPFIsolation::sumNeutralHadronEt, reco::MuonPFIsolation::sumPhotonEt, reco::MuonIsolation::sumPt, reco::MuonPFIsolation::sumPUPt, and TrackerIso.

Referenced by analyzeMuons().

705 {//Muon isolation selection, up-to-date with MUO POG recommendation
706 
707  if(isoType == TrackerIso && muon.isolationR03().sumPt < isoCut) return true;
708  else if(isoType == PFIso && muon.pfIsolationR04().sumChargedHadronPt + std::max(0.,muon.pfIsolationR04().sumNeutralHadronEt + muon.pfIsolationR04().sumPhotonEt - 0.5*muon.pfIsolationR04().sumPUPt) < isoCut) return true;
709  else if(isoType == NoneIso) return true;
710  else return false;
711 }
float sumPt
sum-pt of tracks
Definition: MuonIsolation.h:7
float sumPhotonEt
sum pt of PF photons
float sumNeutralHadronEt
sum pt of neutral hadrons
float sumPUPt
sum pt of charged Particles not from PV (for Pu corrections)
const MuonPFIsolation & pfIsolationR04() const
Definition: Muon.h:168
const MuonIsolation & isolationR03() const
Definition: Muon.h:162
float sumChargedHadronPt
sum-pt of charged Hadron

Member Data Documentation

const float ZCounting::ELE_ETA_CRACK_HIGH = 1.56
private

Definition at line 154 of file ZCounting.h.

Referenced by ele_probe_selection(), and ele_tag_selection().

const float ZCounting::ELE_ETA_CRACK_LOW = 1.4442
private

Definition at line 153 of file ZCounting.h.

Referenced by analyzeElectrons(), ele_probe_selection(), and ele_tag_selection().

const float ZCounting::ELE_ETA_CUT_PROBE
private

Definition at line 148 of file ZCounting.h.

Referenced by ele_probe_selection().

const float ZCounting::ELE_ETA_CUT_TAG
private

Definition at line 147 of file ZCounting.h.

Referenced by ele_tag_selection().

const std::string ZCounting::ELE_ID_WP
private

Definition at line 152 of file ZCounting.h.

Referenced by ZCounting().

const float ZCounting::ELE_MASS_CUT_HIGH
private

Definition at line 150 of file ZCounting.h.

Referenced by analyzeElectrons().

const float ZCounting::ELE_MASS_CUT_LOW
private

Definition at line 149 of file ZCounting.h.

Referenced by analyzeElectrons().

const float ZCounting::ELE_PT_CUT_PROBE
private

Definition at line 146 of file ZCounting.h.

Referenced by ele_probe_selection().

const float ZCounting::ELE_PT_CUT_TAG
private

Definition at line 145 of file ZCounting.h.

Referenced by ele_tag_selection().

const float ZCounting::ELECTRON_MASS = 0.000511
private

Definition at line 143 of file ZCounting.h.

Referenced by analyzeElectrons().

ElectronIdentifier ZCounting::EleID_
private

Definition at line 156 of file ZCounting.h.

Referenced by analyzeElectrons(), and ZCounting().

double ZCounting::EtaCutL1_
private

Definition at line 119 of file ZCounting.h.

Referenced by analyzeMuons(), and ZCounting().

double ZCounting::EtaCutL2_
private

Definition at line 120 of file ZCounting.h.

Referenced by analyzeMuons(), and ZCounting().

edm::InputTag ZCounting::fBeamspotTag
private

Definition at line 100 of file ZCounting.h.

Referenced by ZCounting().

edm::EDGetTokenT<reco::BeamSpot> ZCounting::fBeamspotToken
private

Definition at line 101 of file ZCounting.h.

Referenced by analyzeElectrons(), and ZCounting().

edm::InputTag ZCounting::fConversionTag
private

Definition at line 103 of file ZCounting.h.

Referenced by ZCounting().

edm::EDGetTokenT<reco::ConversionCollection> ZCounting::fConversionToken
private

Definition at line 104 of file ZCounting.h.

Referenced by analyzeElectrons(), and ZCounting().

std::string ZCounting::fElectronName
private

Definition at line 90 of file ZCounting.h.

Referenced by ZCounting().

edm::EDGetTokenT<edm::View<reco::GsfElectron> > ZCounting::fGsfElectronName_token
private

Definition at line 91 of file ZCounting.h.

Referenced by analyzeElectrons(), and ZCounting().

edm::InputTag ZCounting::fHLTObjTag
private

Definition at line 78 of file ZCounting.h.

Referenced by ZCounting().

edm::EDGetTokenT<trigger::TriggerEvent> ZCounting::fHLTObjTag_token
private

Definition at line 80 of file ZCounting.h.

Referenced by analyzeElectrons(), analyzeMuons(), and ZCounting().

edm::InputTag ZCounting::fHLTTag
private

Definition at line 79 of file ZCounting.h.

Referenced by ZCounting().

edm::EDGetTokenT<edm::TriggerResults> ZCounting::fHLTTag_token
private

Definition at line 81 of file ZCounting.h.

Referenced by analyzeElectrons(), analyzeMuons(), and ZCounting().

std::string ZCounting::fMuonName
private

Definition at line 84 of file ZCounting.h.

Referenced by ZCounting().

edm::EDGetTokenT<reco::MuonCollection> ZCounting::fMuonName_token
private

Definition at line 85 of file ZCounting.h.

Referenced by analyzeMuons(), and ZCounting().

std::string ZCounting::fPVName
private

Definition at line 82 of file ZCounting.h.

Referenced by ZCounting().

edm::EDGetTokenT<reco::VertexCollection> ZCounting::fPVName_token
private

Definition at line 83 of file ZCounting.h.

Referenced by analyzeElectrons(), analyzeMuons(), and ZCounting().

edm::InputTag ZCounting::fRhoTag
private

Definition at line 97 of file ZCounting.h.

Referenced by ZCounting().

edm::EDGetTokenT<double> ZCounting::fRhoToken
private

Definition at line 98 of file ZCounting.h.

Referenced by analyzeElectrons(), and ZCounting().

std::string ZCounting::fSCName
private

Definition at line 92 of file ZCounting.h.

Referenced by ZCounting().

edm::EDGetTokenT<edm::View<reco::SuperCluster> > ZCounting::fSCName_token
private

Definition at line 93 of file ZCounting.h.

Referenced by analyzeElectrons(), and ZCounting().

std::string ZCounting::fTrackName
private

Definition at line 86 of file ZCounting.h.

Referenced by ZCounting().

edm::EDGetTokenT<reco::TrackCollection> ZCounting::fTrackName_token
private

Definition at line 87 of file ZCounting.h.

Referenced by analyzeMuons(), and ZCounting().

std::unique_ptr<ZCountingTrigger::TTrigger> ZCounting::fTrigger
private

Definition at line 109 of file ZCounting.h.

Referenced by analyzeElectrons(), analyzeMuons(), dqmBeginRun(), and initHLT().

edm::ParameterSetID ZCounting::fTriggerNamesID
private

Definition at line 77 of file ZCounting.h.

Referenced by analyzeElectrons(), and analyzeMuons().

MonitorElement* ZCounting::h_ee_mass_HLT_fail_central
private

Definition at line 187 of file ZCounting.h.

Referenced by analyzeElectrons(), and bookHistograms().

MonitorElement* ZCounting::h_ee_mass_HLT_fail_forward
private

Definition at line 189 of file ZCounting.h.

Referenced by analyzeElectrons(), and bookHistograms().

MonitorElement* ZCounting::h_ee_mass_HLT_pass_central
private

Definition at line 186 of file ZCounting.h.

Referenced by analyzeElectrons(), and bookHistograms().

MonitorElement* ZCounting::h_ee_mass_HLT_pass_forward
private

Definition at line 188 of file ZCounting.h.

Referenced by analyzeElectrons(), and bookHistograms().

MonitorElement* ZCounting::h_ee_mass_id_fail_central
private

Definition at line 182 of file ZCounting.h.

Referenced by analyzeElectrons(), and bookHistograms().

MonitorElement* ZCounting::h_ee_mass_id_fail_forward
private

Definition at line 184 of file ZCounting.h.

Referenced by analyzeElectrons(), and bookHistograms().

MonitorElement* ZCounting::h_ee_mass_id_pass_central
private

Definition at line 181 of file ZCounting.h.

Referenced by analyzeElectrons(), and bookHistograms().

MonitorElement* ZCounting::h_ee_mass_id_pass_forward
private

Definition at line 183 of file ZCounting.h.

Referenced by analyzeElectrons(), and bookHistograms().

MonitorElement* ZCounting::h_ee_yield_Z_ebeb
private

Definition at line 192 of file ZCounting.h.

Referenced by analyzeElectrons(), and bookHistograms().

MonitorElement* ZCounting::h_ee_yield_Z_ebee
private

Definition at line 193 of file ZCounting.h.

Referenced by analyzeElectrons(), and bookHistograms().

MonitorElement* ZCounting::h_ee_yield_Z_eeee
private

Definition at line 194 of file ZCounting.h.

Referenced by analyzeElectrons(), and bookHistograms().

MonitorElement* ZCounting::h_mass_HLT_fail_central
private

Definition at line 162 of file ZCounting.h.

Referenced by analyzeMuons(), and bookHistograms().

MonitorElement* ZCounting::h_mass_HLT_fail_forward
private

Definition at line 163 of file ZCounting.h.

Referenced by analyzeMuons(), and bookHistograms().

MonitorElement* ZCounting::h_mass_HLT_pass_central
private

Definition at line 160 of file ZCounting.h.

Referenced by analyzeMuons(), and bookHistograms().

MonitorElement* ZCounting::h_mass_HLT_pass_forward
private

Definition at line 161 of file ZCounting.h.

Referenced by analyzeMuons(), and bookHistograms().

MonitorElement* ZCounting::h_mass_SIT_fail_central
private

Definition at line 167 of file ZCounting.h.

Referenced by analyzeMuons(), and bookHistograms().

MonitorElement* ZCounting::h_mass_SIT_fail_forward
private

Definition at line 168 of file ZCounting.h.

Referenced by analyzeMuons(), and bookHistograms().

MonitorElement* ZCounting::h_mass_SIT_pass_central
private

Definition at line 165 of file ZCounting.h.

Referenced by analyzeMuons(), and bookHistograms().

MonitorElement* ZCounting::h_mass_SIT_pass_forward
private

Definition at line 166 of file ZCounting.h.

Referenced by analyzeMuons(), and bookHistograms().

MonitorElement* ZCounting::h_mass_Sta_fail_central
private

Definition at line 172 of file ZCounting.h.

Referenced by analyzeMuons(), and bookHistograms().

MonitorElement* ZCounting::h_mass_Sta_fail_forward
private

Definition at line 173 of file ZCounting.h.

Referenced by analyzeMuons(), and bookHistograms().

MonitorElement* ZCounting::h_mass_Sta_pass_central
private

Definition at line 170 of file ZCounting.h.

Referenced by analyzeMuons(), and bookHistograms().

MonitorElement* ZCounting::h_mass_Sta_pass_forward
private

Definition at line 171 of file ZCounting.h.

Referenced by analyzeMuons(), and bookHistograms().

MonitorElement* ZCounting::h_npv
private

Definition at line 175 of file ZCounting.h.

Referenced by analyzeMuons(), and bookHistograms().

MonitorElement* ZCounting::h_yield_Z
private

Definition at line 176 of file ZCounting.h.

Referenced by analyzeMuons(), and bookHistograms().

MonitorElement* ZCounting::h_yieldBB_Z
private

Definition at line 177 of file ZCounting.h.

Referenced by analyzeMuons(), and bookHistograms().

MonitorElement* ZCounting::h_yieldEE_Z
private

Definition at line 178 of file ZCounting.h.

Referenced by analyzeMuons(), and bookHistograms().

MuonIDTypes ZCounting::IDType_ {NoneID}
private

Definition at line 113 of file ZCounting.h.

Referenced by analyzeMuons(), and ZCounting().

std::string ZCounting::IDTypestr_
private

Definition at line 111 of file ZCounting.h.

Referenced by ZCounting().

double ZCounting::IsoCut_
private

Definition at line 115 of file ZCounting.h.

Referenced by analyzeMuons(), and ZCounting().

MuonIsoTypes ZCounting::IsoType_ {NoneIso}
private

Definition at line 114 of file ZCounting.h.

Referenced by analyzeMuons(), and ZCounting().

std::string ZCounting::IsoTypestr_
private

Definition at line 112 of file ZCounting.h.

Referenced by ZCounting().

int ZCounting::LumiBin_
private

Definition at line 126 of file ZCounting.h.

Referenced by bookHistograms(), and ZCounting().

double ZCounting::LumiMax_
private

Definition at line 128 of file ZCounting.h.

Referenced by bookHistograms(), and ZCounting().

double ZCounting::LumiMin_
private

Definition at line 127 of file ZCounting.h.

Referenced by bookHistograms(), and ZCounting().

int ZCounting::MassBin_
private

Definition at line 122 of file ZCounting.h.

Referenced by bookHistograms(), and ZCounting().

double ZCounting::MassMax_
private

Definition at line 124 of file ZCounting.h.

Referenced by analyzeMuons(), bookHistograms(), and ZCounting().

double ZCounting::MassMin_
private

Definition at line 123 of file ZCounting.h.

Referenced by analyzeMuons(), bookHistograms(), and ZCounting().

const double ZCounting::MUON_BOUND = 0.9
private

Definition at line 140 of file ZCounting.h.

Referenced by analyzeMuons().

const double ZCounting::MUON_MASS = 0.105658369
private

Definition at line 139 of file ZCounting.h.

Referenced by analyzeMuons().

double ZCounting::PtCutL1_
private

Definition at line 117 of file ZCounting.h.

Referenced by analyzeMuons(), and ZCounting().

double ZCounting::PtCutL2_
private

Definition at line 118 of file ZCounting.h.

Referenced by analyzeMuons(), and ZCounting().

int ZCounting::PVBin_
private

Definition at line 130 of file ZCounting.h.

Referenced by bookHistograms(), and ZCounting().

double ZCounting::PVMax_
private

Definition at line 132 of file ZCounting.h.

Referenced by bookHistograms(), and ZCounting().

double ZCounting::PVMin_
private

Definition at line 131 of file ZCounting.h.

Referenced by bookHistograms(), and ZCounting().

double ZCounting::VtxAbsZCut_
private

Definition at line 136 of file ZCounting.h.

Referenced by analyzeElectrons(), analyzeMuons(), and ZCounting().

double ZCounting::VtxNdofCut_
private

Definition at line 135 of file ZCounting.h.

Referenced by analyzeElectrons(), analyzeMuons(), and ZCounting().

double ZCounting::VtxNTracksFitCut_
private

Definition at line 134 of file ZCounting.h.

Referenced by analyzeElectrons(), analyzeMuons(), and ZCounting().

double ZCounting::VtxRhoCut_
private

Definition at line 137 of file ZCounting.h.

Referenced by analyzeElectrons(), analyzeMuons(), and ZCounting().