CMS 3D CMS Logo

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

Module to analyze the performance of muon reconstruction on the example of Z->mumu events. More...

#include "PhysicsTools/PatExamples/plugins/PatZToMuMuAnalyzer.h"

Inheritance diagram for PatZToMuMuAnalyzer:
edm::EDAnalyzer edm::EDConsumerBase

Public Types

typedef math::XYZTLorentzVector LorentzVector
 
typedef math::XYZVector Vector
 typedef's to simplify get functions More...
 
- Public Types inherited from edm::EDAnalyzer
typedef EDAnalyzer ModuleType
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 

Public Member Functions

 PatZToMuMuAnalyzer (const edm::ParameterSet &cfg)
 default constructor More...
 
 ~PatZToMuMuAnalyzer () override
 default destructor More...
 
- Public Member Functions inherited from edm::EDAnalyzer
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 EDAnalyzer ()
 
SerialTaskQueueglobalLuminosityBlocksQueue ()
 
SerialTaskQueueglobalRunsQueue ()
 
ModuleDescription const & moduleDescription () const
 
std::string workerType () const
 
 ~EDAnalyzer () 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 &&)=default
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
ESProxyIndex const * esGetTokenIndices (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::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
void updateLookup (eventsetup::ESRecordsToProxyIndices const &)
 
virtual ~EDConsumerBase () noexcept(false)
 

Private Member Functions

void analyze (const edm::Event &event, const edm::EventSetup &setup) override
 everything that needs to be done during the event loop More...
 
bool booked (const std::string histName) const
 check if histogram was booked More...
 
void fill (const std::string histName, double value) const
 fill histogram if it had been booked before More...
 
void fill (std::string hists, const reco::TrackRef &t1, const reco::TrackRef &t2) const
 fill a predefined set of histograms from inner outer or global tracks for first and second mu candidate More...
 
double mass (const math::XYZVector &t1, const math::XYZVector &t2) const
 calculate the mass of the Z boson from the tracker momenta by hand More...
 

Private Attributes

std::map< std::string, TH1D * > hists_
 management of 1d histograms More...
 
edm::EDGetTokenT< edm::View< pat::Muon > > muonsToken_
 input for muons More...
 
double shift_
 

Additional Inherited Members

- Static Public Member Functions inherited from edm::EDAnalyzer
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &)
 
static bool wantsGlobalLuminosityBlocks ()
 
static bool wantsGlobalRuns ()
 
static bool wantsStreamLuminosityBlocks ()
 
static bool wantsStreamRuns ()
 
- Protected Member Functions inherited from edm::EDConsumerBase
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (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 ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes ()
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes (ESInputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 

Detailed Description

Module to analyze the performance of muon reconstruction on the example of Z->mumu events.

Module to analyze the performance of muon reconstruction on the example of Z->mumu events: transverse momentum and eta of the muon candidates and the mass of the Z boson candidate are plotted from inner, outer and global tracks. The mass is recalculated by an extra finction. The difference of the outer track and the global track are plotted for the transverse momentum, eta and phi of the two muon candi- dates, for global muons as far as available. The only input parameters are:

muons --> indicating the muon collection of choice. shift --> indicating the relative shift of the transverse momentum for the estimate of the effect on the invariant mass.

The shift is applied to all mass calculations.

Definition at line 32 of file PatZToMuMuAnalyzer.cc.

Member Typedef Documentation

◆ LorentzVector

Definition at line 36 of file PatZToMuMuAnalyzer.cc.

◆ Vector

typedef's to simplify get functions

Definition at line 35 of file PatZToMuMuAnalyzer.cc.

Constructor & Destructor Documentation

◆ PatZToMuMuAnalyzer()

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

default constructor

Definition at line 77 of file PatZToMuMuAnalyzer.cc.

78  : muonsToken_(consumes<edm::View<pat::Muon> >(cfg.getParameter<edm::InputTag>("muons"))),
79  shift_(cfg.getParameter<double>("shift")) {
81 
82  // mass plot around Z peak from global tracks
83  hists_["globalMass"] = fileService->make<TH1D>("globalMass", "Mass_{Z} (global) (GeV)", 90, 30., 120.);
84  // eta from global tracks
85  hists_["globalEta"] = fileService->make<TH1D>("globalEta", "#eta (global)", 48, -2.4, 2.4);
86  // pt from global tracks
87  hists_["globalPt"] = fileService->make<TH1D>("globalPt", "p_{T} (global) (GeV)", 100, 0., 100.);
88  // mass plot around Z peak from inner tracks
89  hists_["innerMass"] = fileService->make<TH1D>("innerMass", "Mass_{Z} (inner) (GeV)", 90, 30., 120.);
90  // eta from inner tracks
91  hists_["innerEta"] = fileService->make<TH1D>("innerEta", "#eta (inner)", 48, -2.4, 2.4);
92  // pt from inner tracks
93  hists_["innerPt"] = fileService->make<TH1D>("innerPt", "p_{T} (inner) (GeV)", 100, 0., 100.);
94  // mass plot around Z peak from outer tracks
95  hists_["outerMass"] = fileService->make<TH1D>("outerMass", "Mass_{Z} (outer) (GeV)", 90, 30., 120.);
96  // eta from outer tracks
97  hists_["outerEta"] = fileService->make<TH1D>("outerEta", "#eta (outer)", 48, -2.4, 2.4);
98  // pt from outer tracks
99  hists_["outerPt"] = fileService->make<TH1D>("outerPt", "p_{T} (outer) (GeV)", 100, 0., 100.);
100  // delta pt between global and outer track
101  hists_["deltaPt"] = fileService->make<TH1D>("deltaPt", "#Delta p_{T} (GeV)", 100, -20., 20.);
102  // delta eta between global and outer track
103  hists_["deltaEta"] = fileService->make<TH1D>("deltaEta", "#Delta #eta", 100, -0.2, 0.2);
104  // delta phi between global and outer track
105  hists_["deltaPhi"] = fileService->make<TH1D>("deltaPhi", "#Delta #phi", 100, -0.2, 0.2);
106 }

References fileService, hists_, and TFileService::make().

◆ ~PatZToMuMuAnalyzer()

PatZToMuMuAnalyzer::~PatZToMuMuAnalyzer ( )
inlineoverride

default destructor

Definition at line 41 of file PatZToMuMuAnalyzer.cc.

41 {};

Member Function Documentation

◆ analyze()

void PatZToMuMuAnalyzer::analyze ( const edm::Event event,
const edm::EventSetup setup 
)
overrideprivatevirtual

everything that needs to be done during the event loop

Implements edm::EDAnalyzer.

Definition at line 127 of file PatZToMuMuAnalyzer.cc.

127  {
128  // pat candidate collection
130  event.getByToken(muonsToken_, muons);
131 
132  // Fill some basic muon quantities as
133  // reconstructed from inner and outer
134  // tack
135  for (edm::View<pat::Muon>::const_iterator mu1 = muons->begin(); mu1 != muons->end(); ++mu1) {
136  for (edm::View<pat::Muon>::const_iterator mu2 = muons->begin(); mu2 != muons->end(); ++mu2) {
137  if (mu2 > mu1) { // prevent double conting
138  if (mu1->charge() * mu2->charge() < 0) { // check only muon pairs of unequal charge
139  fill(std::string("inner"), mu1->innerTrack(), mu2->innerTrack());
140  fill(std::string("outer"), mu1->outerTrack(), mu2->outerTrack());
141  fill(std::string("global"), mu1->globalTrack(), mu2->globalTrack());
142 
143  if (mu1->isGlobalMuon()) {
144  fill("deltaPt", mu1->outerTrack()->pt() - mu1->globalTrack()->pt());
145  fill("deltaEta", mu1->outerTrack()->eta() - mu1->globalTrack()->eta());
146  fill("deltaPhi", mu1->outerTrack()->phi() - mu1->globalTrack()->phi());
147  }
148  if (mu2->isGlobalMuon()) {
149  fill("deltaPt", mu2->outerTrack()->pt() - mu2->globalTrack()->pt());
150  fill("deltaEta", mu2->outerTrack()->eta() - mu2->globalTrack()->eta());
151  fill("deltaPhi", mu2->outerTrack()->phi() - mu2->globalTrack()->phi());
152  }
153  }
154  }
155  }
156  }
157 }

References fill(), PDWG_BPHSkim_cff::muons, muonsToken_, and AlCaHLTBitMon_QueryRunRegistry::string.

◆ booked()

bool PatZToMuMuAnalyzer::booked ( const std::string  histName) const
inlineprivate

check if histogram was booked

Definition at line 50 of file PatZToMuMuAnalyzer.cc.

50 { return hists_.find(histName) != hists_.end(); };

References hists_.

Referenced by fill().

◆ fill() [1/2]

void PatZToMuMuAnalyzer::fill ( const std::string  histName,
double  value 
) const
inlineprivate

fill histogram if it had been booked before

Definition at line 52 of file PatZToMuMuAnalyzer.cc.

52  {
53  if (booked(histName))
54  hists_.find(histName)->second->Fill(value);
55  };

References booked(), and hists_.

Referenced by analyze(), and fill().

◆ fill() [2/2]

void PatZToMuMuAnalyzer::fill ( std::string  hists,
const reco::TrackRef t1,
const reco::TrackRef t2 
) const
private

fill a predefined set of histograms from inner outer or global tracks for first and second mu candidate

Definition at line 108 of file PatZToMuMuAnalyzer.cc.

108  {
109  if (t1.isAvailable()) {
110  // fill pt from global track for first muon
111  fill(std::string(hists).append("Pt"), t1->pt());
112  // fill pt from global track for second muon
113  fill(std::string(hists).append("Eta"), t1->eta());
114  }
115  if (t2.isAvailable()) {
116  // fill eta from global track for first muon
117  fill(std::string(hists).append("Pt"), t2->pt());
118  // fill eta from global track for second muon
119  fill(std::string(hists).append("Eta"), t2->eta());
120  }
121  if (t1.isAvailable() && t2.isAvailable()) {
122  // fill invariant mass of the Z boson candidate
123  fill(std::string(hists).append("Mass"), mass(t1->momentum(), t2->momentum()));
124  }
125 }

References mps_setup::append, fill(), compare::hists, mass(), AlCaHLTBitMon_QueryRunRegistry::string, RandomServiceHelper::t1, and RandomServiceHelper::t2.

◆ mass()

double PatZToMuMuAnalyzer::mass ( const math::XYZVector t1,
const math::XYZVector t2 
) const
inlineprivate

calculate the mass of the Z boson from the tracker momenta by hand

Definition at line 68 of file PatZToMuMuAnalyzer.cc.

68  {
69  return (LorentzVector(shift_ * t1.x(), shift_ * t1.y(), t1.z(), sqrt((0.1057 * 0.1057) + t1.mag2())) +
70  LorentzVector(shift_ * t2.x(), shift_ * t2.y(), t2.z(), sqrt((0.1057 * 0.1057) + t2.mag2())))
71  .mass();
72 }

References shift_, mathSSE::sqrt(), RandomServiceHelper::t1, and RandomServiceHelper::t2.

Referenced by Particle.Particle::__str__(), DiObject.DiMuon::__str__(), and fill().

Member Data Documentation

◆ hists_

std::map<std::string, TH1D*> PatZToMuMuAnalyzer::hists_
private

management of 1d histograms

Definition at line 65 of file PatZToMuMuAnalyzer.cc.

Referenced by booked(), fill(), and PatZToMuMuAnalyzer().

◆ muonsToken_

edm::EDGetTokenT<edm::View<pat::Muon> > PatZToMuMuAnalyzer::muonsToken_
private

input for muons

Definition at line 60 of file PatZToMuMuAnalyzer.cc.

Referenced by analyze().

◆ shift_

double PatZToMuMuAnalyzer::shift_
private

shift in transverse momentum to determine a rough uncertainty on the Z mass estimation

Definition at line 63 of file PatZToMuMuAnalyzer.cc.

Referenced by mass().

PDWG_BPHSkim_cff.muons
muons
Definition: PDWG_BPHSkim_cff.py:47
RandomServiceHelper.t2
t2
Definition: RandomServiceHelper.py:257
fileService
edm::Service< TFileService > fileService
Definition: HSCPValidator.cc:91
PatZToMuMuAnalyzer::muonsToken_
edm::EDGetTokenT< edm::View< pat::Muon > > muonsToken_
input for muons
Definition: PatZToMuMuAnalyzer.cc:60
compare.hists
hists
Definition: compare.py:319
PatZToMuMuAnalyzer::LorentzVector
math::XYZTLorentzVector LorentzVector
Definition: PatZToMuMuAnalyzer.cc:36
edm::Handle
Definition: AssociativeIterator.h:50
PatZToMuMuAnalyzer::mass
double mass(const math::XYZVector &t1, const math::XYZVector &t2) const
calculate the mass of the Z boson from the tracker momenta by hand
Definition: PatZToMuMuAnalyzer.cc:68
RandomServiceHelper.t1
t1
Definition: RandomServiceHelper.py:256
PatZToMuMuAnalyzer::fill
void fill(const std::string histName, double value) const
fill histogram if it had been booked before
Definition: PatZToMuMuAnalyzer.cc:52
mathSSE::sqrt
T sqrt(T t)
Definition: SSEVec.h:19
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
edm::View
Definition: CaloClusterFwd.h:14
PatZToMuMuAnalyzer::shift_
double shift_
Definition: PatZToMuMuAnalyzer.cc:63
mps_setup.append
append
Definition: mps_setup.py:85
edm::Service< TFileService >
value
Definition: value.py:1
PatZToMuMuAnalyzer::hists_
std::map< std::string, TH1D * > hists_
management of 1d histograms
Definition: PatZToMuMuAnalyzer.cc:65
looper.cfg
cfg
Definition: looper.py:297
edm::View::const_iterator
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
Definition: View.h:86
edm::EDConsumerBase::consumes
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
Definition: EDConsumerBase.h:126
PatZToMuMuAnalyzer::booked
bool booked(const std::string histName) const
check if histogram was booked
Definition: PatZToMuMuAnalyzer.cc:50
edm::InputTag
Definition: InputTag.h:15
TFileService::make
T * make(const Args &... args) const
make new ROOT object
Definition: TFileService.h:64