CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes
PatElectronAnalyzer Class Reference
Inheritance diagram for PatElectronAnalyzer:
edm::one::EDAnalyzer< edm::one::SharedResources > edm::one::EDAnalyzerBase edm::EDConsumerBase

Public Member Functions

 PatElectronAnalyzer (const edm::ParameterSet &)
 
 ~PatElectronAnalyzer () override
 
- Public Member Functions inherited from edm::one::EDAnalyzer< edm::one::SharedResources >
 EDAnalyzer ()=default
 
 EDAnalyzer (const EDAnalyzer &)=delete
 
SerialTaskQueueglobalLuminosityBlocksQueue () final
 
SerialTaskQueueglobalRunsQueue () final
 
const EDAnalyzeroperator= (const EDAnalyzer &)=delete
 
bool wantsGlobalLuminosityBlocks () const final
 
bool wantsGlobalRuns () const final
 
bool wantsInputProcessBlocks () const final
 
bool wantsProcessBlocks () const final
 
- Public Member Functions inherited from edm::one::EDAnalyzerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 EDAnalyzerBase ()
 
ModuleDescription const & moduleDescription () const
 
bool wantsStreamLuminosityBlocks () const
 
bool wantsStreamRuns () const
 
 ~EDAnalyzerBase () 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
 
ESResolverIndex const * esGetTokenIndices (edm::Transition iTrans) const
 
std::vector< ESResolverIndex > const & esGetTokenIndicesVector (edm::Transition iTrans) const
 
std::vector< ESRecordIndex > const & esGetTokenRecordIndicesVector (edm::Transition iTrans) const
 
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::array< std::vector< ModuleDescription const *> *, NumBranchTypes > &modulesAll, std::vector< ModuleProcessName > &modulesInPreviousProcesses, 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
 
void selectInputProcessBlocks (ProductRegistry const &productRegistry, ProcessBlockHelperBase const &processBlockHelperBase)
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
void updateLookup (eventsetup::ESRecordsToProductResolverIndices const &)
 
virtual ~EDConsumerBase () noexcept(false)
 

Private Member Functions

void analyze (const edm::Event &, const edm::EventSetup &) override
 
void beginJob () override
 
void endJob () override
 

Private Attributes

TH1F * deltaPhi_
 
TH1F * deltaR_
 
std::string electronID_
 
edm::EDGetTokenT< std::vector< pat::Electron > > electronSrcToken_
 
TH1F * eta_
 
TH1F * genEta_
 
edm::ParameterSet genMatchMode_
 
TH1F * genPhi_
 
TH1F * genPt_
 
TH1F * invMass_
 
TH1F * isoTag_
 
double maxDeltaM_
 
double maxDeltaR_
 
double maxEta_
 
double maxTagIso_
 
double minPt_
 
unsigned int mode_
 
TH1I * nr_
 
edm::EDGetTokenT< reco::GenParticleCollectionparticleSrcToken_
 
TH1F * phi_
 
TH1F * pt_
 
edm::ParameterSet tagAndProbeMode_
 

Additional Inherited Members

- Public Types inherited from edm::one::EDAnalyzerBase
typedef EDAnalyzerBase ModuleType
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Static Public Member Functions inherited from edm::one::EDAnalyzerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
template<BranchType B = InEvent>
EDConsumerBaseAdaptor< Bconsumes (edm::InputTag tag) noexcept
 
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 ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes ()
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes (ESInputTag const &tag)
 
template<Transition Tr = Transition::Event>
constexpr auto esConsumes ()
 
template<Transition Tr = Transition::Event>
auto esConsumes (ESInputTag tag)
 
template<Transition Tr = Transition::Event>
ESGetTokenGeneric esConsumes (eventsetup::EventSetupRecordKey const &iRecord, eventsetup::DataKey const &iKey)
 Used with EventSetupRecord::doGet. More...
 
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)
 
void resetItemsToGetFrom (BranchType iType)
 

Detailed Description

Definition at line 15 of file PatElectronAnalyzer.cc.

Constructor & Destructor Documentation

◆ PatElectronAnalyzer()

PatElectronAnalyzer::PatElectronAnalyzer ( const edm::ParameterSet cfg)
explicit

Definition at line 75 of file PatElectronAnalyzer.cc.

References deltaPhi_, deltaR_, eta_, compareTotals::fs, genEta_, genMatchMode_, genPhi_, genPt_, edm::ParameterSet::getParameter(), invMass_, isoTag_, TFileService::kSharedResource, maxDeltaM_, maxDeltaR_, maxTagIso_, nr_, phi_, pt_, and tagAndProbeMode_.

76  : minPt_(cfg.getParameter<double>("minPt")),
77  maxEta_(cfg.getParameter<double>("maxEta")),
78  mode_(cfg.getParameter<unsigned int>("mode")),
79  electronID_(cfg.getParameter<std::string>("electronID")),
80  electronSrcToken_(consumes<std::vector<pat::Electron> >(cfg.getParameter<edm::InputTag>("electronSrc"))),
81  particleSrcToken_(consumes<reco::GenParticleCollection>(cfg.getParameter<edm::InputTag>("particleSrc"))),
82  genMatchMode_(cfg.getParameter<edm::ParameterSet>("genMatchMode")),
83  tagAndProbeMode_(cfg.getParameter<edm::ParameterSet>("tagAndProbeMode")) {
84  usesResource(TFileService::kSharedResource);
85 
86  // complete the configuration of the analyzer
87  maxDeltaR_ = genMatchMode_.getParameter<double>("maxDeltaR");
88  maxDeltaM_ = tagAndProbeMode_.getParameter<double>("maxDeltaM");
89  maxTagIso_ = tagAndProbeMode_.getParameter<double>("maxTagIso");
90 
91  // register histograms to the TFileService
93  nr_ = fs->make<TH1I>("nr", "nr", 10, 0, 10);
94  pt_ = fs->make<TH1F>("pt", "pt", 20, 0., 100.);
95  eta_ = fs->make<TH1F>("eta", "eta", 30, -3., 3.);
96  phi_ = fs->make<TH1F>("phi", "phi", 35, -3.5, 3.5);
97  genPt_ = fs->make<TH1F>("genPt", "pt", 20, 0., 100.);
98  genEta_ = fs->make<TH1F>("genEta", "eta", 30, -3., 3.);
99  genPhi_ = fs->make<TH1F>("genPhi", "phi", 35, -3.5, 3.5);
100  deltaR_ = fs->make<TH1F>("deltaR", "log(dR)", 50, -5., 0.);
101  isoTag_ = fs->make<TH1F>("isoTag", "iso", 50, 0., 10.);
102  invMass_ = fs->make<TH1F>("invMass", "m", 100, 50., 150.);
103  deltaPhi_ = fs->make<TH1F>("deltaPhi", "deltaPhi", 100, -3.5, 3.5);
104 }
static const std::string kSharedResource
Definition: TFileService.h:76
T getParameter(std::string const &) const
Definition: ParameterSet.h:307
edm::EDGetTokenT< std::vector< pat::Electron > > electronSrcToken_
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
edm::EDGetTokenT< reco::GenParticleCollection > particleSrcToken_
edm::ParameterSet tagAndProbeMode_
edm::ParameterSet genMatchMode_

◆ ~PatElectronAnalyzer()

PatElectronAnalyzer::~PatElectronAnalyzer ( )
override

Definition at line 106 of file PatElectronAnalyzer.cc.

106 {}

Member Function Documentation

◆ analyze()

void PatElectronAnalyzer::analyze ( const edm::Event evt,
const edm::EventSetup setup 
)
overrideprivatevirtual

Implements edm::one::EDAnalyzerBase.

Definition at line 108 of file PatElectronAnalyzer.cc.

References funct::abs(), SiPixelRawToDigiRegional_cfi::deltaPhi, HLT_2023v12_cff::DeltaPhi, deltaPhi_, electronAnalyzer_cfi::DeltaR, PbPb_ZMuSkimMuonDPG_cff::deltaR, deltaR_, electronID_, pwdgSkimBPark_cfi::electrons, electronSrcToken_, eta_, genEta_, genPhi_, genPt_, edm::Event::getByToken(), invMass_, isoTag_, EgHLTOffHistBins_cfi::mass, maxDeltaM_, maxDeltaR_, maxEta_, maxTagIso_, minPt_, mode_, nr_, ecalTrigSettings_cff::particles, particleSrcToken_, phi_, pt_, and HLTMuonOfflineAnalyzer_cfi::zMass.

108  {
109  // get electron collection
112  // get generator particle collection
115 
116  nr_->Fill(electrons->size());
117 
118  // ----------------------------------------------------------------------
119  //
120  // First Part Mode 0: genMatch
121  //
122  // ----------------------------------------------------------------------
123  if (mode_ == 0) {
124  // loop generator particles
125  for (reco::GenParticleCollection::const_iterator part = particles->begin(); part != particles->end(); ++part) {
126  // only loop stable electrons
127  if (part->status() == 1 && abs(part->pdgId()) == 11) {
128  if (part->pt() > minPt_ && fabs(part->eta()) < maxEta_) {
129  genPt_->Fill(part->pt());
130  genEta_->Fill(part->eta());
131  genPhi_->Fill(part->phi());
132  }
133  }
134  }
135 
136  // loop electrons
137  for (std::vector<pat::Electron>::const_iterator elec = electrons->begin(); elec != electrons->end(); ++elec) {
138  if (elec->genLepton()) {
139  float deltaR = ROOT::Math::VectorUtil::DeltaR(elec->genLepton()->p4(), elec->p4());
140  deltaR_->Fill(TMath::Log10(deltaR));
141  if (deltaR < maxDeltaR_) {
142  if (electronID_ != "none") {
143  if (elec->electronID(electronID_) < 0.5)
144  continue;
145  }
146  if (elec->pt() > minPt_ && fabs(elec->eta()) < maxEta_) {
147  pt_->Fill(elec->pt());
148  eta_->Fill(elec->eta());
149  phi_->Fill(elec->phi());
150  }
151  }
152  }
153  }
154  }
155 
156  // ----------------------------------------------------------------------
157  //
158  // Second Part Mode 1: tagAndProbe
159  //
160  // ----------------------------------------------------------------------
161  if (mode_ == 1) {
162  // loop tag electron
163  for (std::vector<pat::Electron>::const_iterator elec = electrons->begin(); elec != electrons->end(); ++elec) {
164  isoTag_->Fill(elec->trackIso());
165  if (elec->trackIso() < maxTagIso_ && elec->electronID("eidTight") > 0.5) {
166  // loop probe electron
167  for (std::vector<pat::Electron>::const_iterator probe = electrons->begin(); probe != electrons->end();
168  ++probe) {
169  // skip the tag electron itself
170  if (probe == elec)
171  continue;
172 
173  float zMass = (probe->p4() + elec->p4()).mass();
174  invMass_->Fill(zMass);
175  float deltaPhi = ROOT::Math::VectorUtil::DeltaPhi(elec->p4(), probe->p4());
176  deltaPhi_->Fill(deltaPhi);
177 
178  // check for the Z mass
179  if (fabs(zMass - 90.) < maxDeltaM_) {
180  if (electronID_ != "none") {
181  if (probe->electronID(electronID_) < 0.5)
182  continue;
183  }
184  if (probe->pt() > minPt_ && fabs(probe->eta()) < maxEta_) {
185  pt_->Fill(probe->pt());
186  eta_->Fill(probe->eta());
187  phi_->Fill(probe->phi());
188  }
189  }
190  }
191  }
192  }
193  }
194 }
edm::EDGetTokenT< std::vector< pat::Electron > > electronSrcToken_
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:528
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
edm::EDGetTokenT< reco::GenParticleCollection > particleSrcToken_
part
Definition: HCALResponse.h:20

◆ beginJob()

void PatElectronAnalyzer::beginJob ( void  )
overrideprivatevirtual

Reimplemented from edm::one::EDAnalyzerBase.

Definition at line 196 of file PatElectronAnalyzer.cc.

196 {}

◆ endJob()

void PatElectronAnalyzer::endJob ( void  )
overrideprivatevirtual

Reimplemented from edm::one::EDAnalyzerBase.

Definition at line 198 of file PatElectronAnalyzer.cc.

198 {}

Member Data Documentation

◆ deltaPhi_

TH1F* PatElectronAnalyzer::deltaPhi_
private

Definition at line 70 of file PatElectronAnalyzer.cc.

Referenced by analyze(), and PatElectronAnalyzer().

◆ deltaR_

TH1F* PatElectronAnalyzer::deltaR_
private

Definition at line 67 of file PatElectronAnalyzer.cc.

Referenced by analyze(), and PatElectronAnalyzer().

◆ electronID_

std::string PatElectronAnalyzer::electronID_
private

Definition at line 43 of file PatElectronAnalyzer.cc.

Referenced by analyze().

◆ electronSrcToken_

edm::EDGetTokenT<std::vector<pat::Electron> > PatElectronAnalyzer::electronSrcToken_
private

Definition at line 46 of file PatElectronAnalyzer.cc.

Referenced by analyze().

◆ eta_

TH1F* PatElectronAnalyzer::eta_
private

Definition at line 62 of file PatElectronAnalyzer.cc.

Referenced by analyze(), and PatElectronAnalyzer().

◆ genEta_

TH1F* PatElectronAnalyzer::genEta_
private

Definition at line 65 of file PatElectronAnalyzer.cc.

Referenced by analyze(), and PatElectronAnalyzer().

◆ genMatchMode_

edm::ParameterSet PatElectronAnalyzer::genMatchMode_
private

Definition at line 50 of file PatElectronAnalyzer.cc.

Referenced by PatElectronAnalyzer().

◆ genPhi_

TH1F* PatElectronAnalyzer::genPhi_
private

Definition at line 66 of file PatElectronAnalyzer.cc.

Referenced by analyze(), and PatElectronAnalyzer().

◆ genPt_

TH1F* PatElectronAnalyzer::genPt_
private

Definition at line 64 of file PatElectronAnalyzer.cc.

Referenced by analyze(), and PatElectronAnalyzer().

◆ invMass_

TH1F* PatElectronAnalyzer::invMass_
private

Definition at line 69 of file PatElectronAnalyzer.cc.

Referenced by analyze(), and PatElectronAnalyzer().

◆ isoTag_

TH1F* PatElectronAnalyzer::isoTag_
private

Definition at line 68 of file PatElectronAnalyzer.cc.

Referenced by analyze(), and PatElectronAnalyzer().

◆ maxDeltaM_

double PatElectronAnalyzer::maxDeltaM_
private

Definition at line 56 of file PatElectronAnalyzer.cc.

Referenced by analyze(), and PatElectronAnalyzer().

◆ maxDeltaR_

double PatElectronAnalyzer::maxDeltaR_
private

Definition at line 55 of file PatElectronAnalyzer.cc.

Referenced by analyze(), and PatElectronAnalyzer().

◆ maxEta_

double PatElectronAnalyzer::maxEta_
private

Definition at line 28 of file PatElectronAnalyzer.cc.

Referenced by analyze().

◆ maxTagIso_

double PatElectronAnalyzer::maxTagIso_
private

Definition at line 57 of file PatElectronAnalyzer.cc.

Referenced by analyze(), and PatElectronAnalyzer().

◆ minPt_

double PatElectronAnalyzer::minPt_
private

Definition at line 27 of file PatElectronAnalyzer.cc.

Referenced by analyze().

◆ mode_

unsigned int PatElectronAnalyzer::mode_
private

Definition at line 33 of file PatElectronAnalyzer.cc.

Referenced by analyze().

◆ nr_

TH1I* PatElectronAnalyzer::nr_
private

Definition at line 60 of file PatElectronAnalyzer.cc.

Referenced by analyze(), and PatElectronAnalyzer().

◆ particleSrcToken_

edm::EDGetTokenT<reco::GenParticleCollection> PatElectronAnalyzer::particleSrcToken_
private

Definition at line 48 of file PatElectronAnalyzer.cc.

Referenced by analyze().

◆ phi_

TH1F* PatElectronAnalyzer::phi_
private

Definition at line 63 of file PatElectronAnalyzer.cc.

Referenced by analyze(), and PatElectronAnalyzer().

◆ pt_

TH1F* PatElectronAnalyzer::pt_
private

Definition at line 61 of file PatElectronAnalyzer.cc.

Referenced by analyze(), and PatElectronAnalyzer().

◆ tagAndProbeMode_

edm::ParameterSet PatElectronAnalyzer::tagAndProbeMode_
private

Definition at line 51 of file PatElectronAnalyzer.cc.

Referenced by PatElectronAnalyzer().