CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes
cms::MuonMETValueMapProducer Class Reference

#include <MuonMETValueMapProducer.h>

Inheritance diagram for cms::MuonMETValueMapProducer:
edm::stream::EDProducer<>

Public Member Functions

 MuonMETValueMapProducer (const edm::ParameterSet &)
 
 ~MuonMETValueMapProducer () override
 
- Public Member Functions inherited from edm::stream::EDProducer<>
 EDProducer ()=default
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndRuns () const final
 

Private Member Functions

reco::MuonMETCorrectionData::Type decide_correction_type (const reco::Muon &muon, const math::XYZPoint &beamSpotPosition)
 
void determine_deltax_deltay (double &deltax, double &deltay, const reco::Muon &muon, double bfield, edm::Event &iEvent, const edm::EventSetup &iSetup)
 
void produce (edm::Event &, const edm::EventSetup &) override
 
bool should_type_MuonCandidateValuesUsed (const reco::Muon &muon, const math::XYZPoint &beamSpotPosition)
 

Private Attributes

edm::EDGetTokenT< reco::BeamSpotbeamSpotToken_
 
bool isAlsoTkMu_
 
double maxd0_
 
double maxEta_
 
double maxNormChi2_
 
int minnHits_
 
int minnValidStaHits_
 
double minPt_
 
edm::EDGetTokenT< edm::View< reco::Muon > > muonToken_
 
double towerEtThreshold_
 
TrackDetectorAssociator trackAssociator_
 
TrackAssociatorParameters trackAssociatorParameters_
 
bool useHO_
 
bool useRecHits_
 
bool useTrackAssociatorPositions_
 

Additional Inherited Members

- Public Types inherited from edm::stream::EDProducer<>
typedef CacheContexts< T... > CacheTypes
 
typedef CacheTypes::GlobalCache GlobalCache
 
typedef AbilityChecker< T... > HasAbility
 
typedef CacheTypes::LuminosityBlockCache LuminosityBlockCache
 
typedef LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCacheLuminosityBlockContext
 
typedef CacheTypes::LuminosityBlockSummaryCache LuminosityBlockSummaryCache
 
typedef CacheTypes::RunCache RunCache
 
typedef RunContextT< RunCache, GlobalCacheRunContext
 
typedef CacheTypes::RunSummaryCache RunSummaryCache
 

Detailed Description

Definition at line 37 of file MuonMETValueMapProducer.h.

Constructor & Destructor Documentation

MuonMETValueMapProducer::MuonMETValueMapProducer ( const edm::ParameterSet iConfig)
explicit

Definition at line 57 of file MuonMETValueMapProducer.cc.

References beamSpotToken_, edm::ParameterSet::getParameter(), TrackAssociatorParameters::loadParameters(), muonToken_, trackAssociator_, trackAssociatorParameters_, and TrackDetectorAssociator::useDefaultPropagator().

58  : minPt_(iConfig.getParameter<double>("minPt")),
59  maxEta_(iConfig.getParameter<double>("maxEta")),
60  isAlsoTkMu_(iConfig.getParameter<bool>("isAlsoTkMu")),
61  maxNormChi2_(iConfig.getParameter<double>("maxNormChi2")),
62  maxd0_(iConfig.getParameter<double>("maxd0")),
63  minnHits_(iConfig.getParameter<int>("minnHits")),
64  minnValidStaHits_(iConfig.getParameter<int>("minnValidStaHits")),
65  useTrackAssociatorPositions_(iConfig.getParameter<bool>("useTrackAssociatorPositions")),
66  useHO_(iConfig.getParameter<bool>("useHO")),
67  towerEtThreshold_(iConfig.getParameter<double>("towerEtThreshold")),
68  useRecHits_(iConfig.getParameter<bool>("useRecHits")) {
69  muonToken_ = consumes<edm::View<reco::Muon>>(iConfig.getParameter<edm::InputTag>("muonInputTag"));
70  beamSpotToken_ = consumes<reco::BeamSpot>(iConfig.getParameter<edm::InputTag>("beamSpotInputTag"));
71 
72  edm::ParameterSet trackAssociatorParams = iConfig.getParameter<edm::ParameterSet>("TrackAssociatorParameters");
73  edm::ConsumesCollector iC = consumesCollector();
74  trackAssociatorParameters_.loadParameters(trackAssociatorParams, iC);
76 
77  produces<edm::ValueMap<reco::MuonMETCorrectionData>>("muCorrData");
78  }
T getParameter(std::string const &) const
void useDefaultPropagator()
use the default propagator
void loadParameters(const edm::ParameterSet &, edm::ConsumesCollector &)
TrackDetectorAssociator trackAssociator_
edm::EDGetTokenT< edm::View< reco::Muon > > muonToken_
TrackAssociatorParameters trackAssociatorParameters_
edm::EDGetTokenT< reco::BeamSpot > beamSpotToken_
cms::MuonMETValueMapProducer::~MuonMETValueMapProducer ( )
inlineoverride

Member Function Documentation

reco::MuonMETCorrectionData::Type MuonMETValueMapProducer::decide_correction_type ( const reco::Muon muon,
const math::XYZPoint beamSpotPosition 
)
private

Definition at line 140 of file MuonMETValueMapProducer.cc.

References should_type_MuonCandidateValuesUsed().

Referenced by produce(), and ~MuonMETValueMapProducer().

141  {
142  if (should_type_MuonCandidateValuesUsed(muon, beamSpotPosition))
143  return reco::MuonMETCorrectionData::Type::MuonCandidateValuesUsed;
144 
145  return reco::MuonMETCorrectionData::Type::NotUsed;
146  }
bool should_type_MuonCandidateValuesUsed(const reco::Muon &muon, const math::XYZPoint &beamSpotPosition)
void MuonMETValueMapProducer::determine_deltax_deltay ( double &  deltax,
double &  deltay,
const reco::Muon muon,
double  bfield,
edm::Event iEvent,
const edm::EventSetup iSetup 
)
private

Definition at line 117 of file MuonMETValueMapProducer.cc.

References TrackDetectorAssociator::associate(), TrackDetectorAssociator::getFreeTrajectoryState(), MuonMETAlgo::GetMuDepDeltas(), reco::Muon::globalTrack(), info(), reco::Muon::innerTrack(), reco::Muon::isGEMMuon(), reco::Muon::isGlobalMuon(), reco::Muon::isME0Muon(), reco::Muon::isRPCMuon(), reco::Muon::isTrackerMuon(), reco::Muon::outerTrack(), towerEtThreshold_, trackAssociator_, trackAssociatorParameters_, useHO_, useRecHits_, and useTrackAssociatorPositions_.

Referenced by produce(), and ~MuonMETValueMapProducer().

122  {
123  reco::TrackRef mu_track;
124  if (muon.isGlobalMuon())
125  mu_track = muon.globalTrack();
126  else if (muon.isTrackerMuon() || muon.isRPCMuon() || muon.isGEMMuon() || muon.isME0Muon())
127  mu_track = muon.innerTrack();
128  else
129  mu_track = muon.outerTrack();
130 
132  iEvent, iSetup, trackAssociator_.getFreeTrajectoryState(iSetup, *mu_track), trackAssociatorParameters_);
133 
134  MuonMETAlgo alg;
135  alg.GetMuDepDeltas(
136  &muon, info, useTrackAssociatorPositions_, useRecHits_, useHO_, towerEtThreshold_, deltax, deltay, bfield);
137  }
static const TGPicture * info(bool iBackgroundIsBlack)
virtual TrackRef innerTrack() const
Definition: Muon.h:45
static FreeTrajectoryState getFreeTrajectoryState(const edm::EventSetup &, const reco::Track &)
get FreeTrajectoryState from different track representations
TrackDetectorAssociator trackAssociator_
bool isME0Muon() const
Definition: Muon.h:305
bool isTrackerMuon() const override
Definition: Muon.h:299
void GetMuDepDeltas(const reco::Muon *inputMuon, TrackDetMatchInfo &info, bool useTrackAssociatorPositions, bool useRecHits, bool useHO, double towerEtThreshold, double &deltax, double &deltay, double Bfield)
Definition: MuonMETAlgo.cc:96
bool isRPCMuon() const
Definition: Muon.h:303
bool isGlobalMuon() const override
Definition: Muon.h:298
TrackAssociatorParameters trackAssociatorParameters_
virtual TrackRef outerTrack() const
reference to Track reconstructed in the muon detector only
Definition: Muon.h:48
bool isGEMMuon() const
Definition: Muon.h:304
TrackDetMatchInfo associate(const edm::Event &, const edm::EventSetup &, const FreeTrajectoryState &, const AssociatorParameters &)
virtual TrackRef globalTrack() const
reference to Track reconstructed in both tracked and muon detector
Definition: Muon.h:51
void MuonMETValueMapProducer::produce ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
overrideprivate

Definition at line 81 of file MuonMETValueMapProducer.cc.

References pwdgSkimBPark_cfi::beamSpot, beamSpotToken_, decide_correction_type(), determine_deltax_deltay(), edm::EventSetup::get(), edm::Event::getByToken(), MagneticField::inTesla(), HLT_2018_cff::magneticField, eostools::move(), HLT_2018_cff::muon, PDWG_BPHSkim_cff::muons, muonToken_, reco::BeamSpot::position(), edm::Event::put(), and PV3DBase< T, PVType, FrameType >::z().

Referenced by ~MuonMETValueMapProducer().

81  {
83  iEvent.getByToken(muonToken_, muons);
84 
86  iEvent.getByToken(beamSpotToken_, beamSpot);
87 
89  iSetup.get<IdealMagneticFieldRecord>().get(magneticField);
90 
91  double bfield = magneticField->inTesla(GlobalPoint(0., 0., 0.)).z();
92 
93  std::vector<reco::MuonMETCorrectionData> muCorrDataList;
94 
95  for (edm::View<reco::Muon>::const_iterator muon = muons->begin(); muon != muons->end(); ++muon) {
96  double deltax = 0.0;
97  double deltay = 0.0;
98  determine_deltax_deltay(deltax, deltay, *muon, bfield, iEvent, iSetup);
99 
101 
102  reco::MuonMETCorrectionData muMETCorrData(muCorrType, deltax, deltay);
103  muCorrDataList.push_back(muMETCorrData);
104  }
105 
106  auto valueMapMuCorrData = std::make_unique<edm::ValueMap<reco::MuonMETCorrectionData>>();
107 
108  edm::ValueMap<reco::MuonMETCorrectionData>::Filler dataFiller(*valueMapMuCorrData);
109 
110  dataFiller.insert(muons, muCorrDataList.begin(), muCorrDataList.end());
111  dataFiller.fill();
112 
113  iEvent.put(std::move(valueMapMuCorrData), "muCorrData");
114  }
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Event.h:131
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:525
Global3DPoint GlobalPoint
Definition: GlobalPoint.h:10
edm::EDGetTokenT< edm::View< reco::Muon > > muonToken_
reco::MuonMETCorrectionData::Type decide_correction_type(const reco::Muon &muon, const math::XYZPoint &beamSpotPosition)
T z() const
Definition: PV3DBase.h:61
void determine_deltax_deltay(double &deltax, double &deltay, const reco::Muon &muon, double bfield, edm::Event &iEvent, const edm::EventSetup &iSetup)
virtual GlobalVector inTesla(const GlobalPoint &gp) const =0
Field value ad specified global point, in Tesla.
edm::EDGetTokenT< reco::BeamSpot > beamSpotToken_
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
Definition: View.h:86
T get() const
Definition: EventSetup.h:73
const Point & position() const
position
Definition: BeamSpot.h:59
def move(src, dest)
Definition: eostools.py:511
bool MuonMETValueMapProducer::should_type_MuonCandidateValuesUsed ( const reco::Muon muon,
const math::XYZPoint beamSpotPosition 
)
private

Definition at line 149 of file MuonMETValueMapProducer.cc.

References reco::LeafCandidate::eta(), reco::Muon::globalTrack(), reco::Muon::innerTrack(), isAlsoTkMu_, reco::Muon::isGlobalMuon(), reco::Muon::isTrackerMuon(), maxd0_, maxEta_, maxNormChi2_, minnHits_, minnValidStaHits_, minPt_, and reco::LeafCandidate::pt().

Referenced by decide_correction_type(), and ~MuonMETValueMapProducer().

150  {
151  if (!muon.isGlobalMuon())
152  return false;
153  if (!muon.isTrackerMuon() && isAlsoTkMu_)
154  return false;
155  reco::TrackRef globTk = muon.globalTrack();
156  reco::TrackRef siTk = muon.innerTrack();
157 
158  if (muon.pt() < minPt_ || fabs(muon.eta()) > maxEta_)
159  return false;
160  if (globTk->chi2() / globTk->ndof() > maxNormChi2_)
161  return false;
162  if (fabs(globTk->dxy(beamSpotPosition)) > fabs(maxd0_))
163  return false;
164  if (siTk->numberOfValidHits() < minnHits_)
165  return false;
166  if (globTk->hitPattern().numberOfValidMuonHits() < minnValidStaHits_)
167  return false;
168  return true;
169  }
double eta() const final
momentum pseudorapidity
virtual TrackRef innerTrack() const
Definition: Muon.h:45
double pt() const final
transverse momentum
bool isTrackerMuon() const override
Definition: Muon.h:299
bool isGlobalMuon() const override
Definition: Muon.h:298
virtual TrackRef globalTrack() const
reference to Track reconstructed in both tracked and muon detector
Definition: Muon.h:51

Member Data Documentation

edm::EDGetTokenT<reco::BeamSpot> cms::MuonMETValueMapProducer::beamSpotToken_
private

Definition at line 69 of file MuonMETValueMapProducer.h.

Referenced by MuonMETValueMapProducer(), and produce().

bool cms::MuonMETValueMapProducer::isAlsoTkMu_
private

Definition at line 57 of file MuonMETValueMapProducer.h.

Referenced by should_type_MuonCandidateValuesUsed().

double cms::MuonMETValueMapProducer::maxd0_
private

Definition at line 59 of file MuonMETValueMapProducer.h.

Referenced by should_type_MuonCandidateValuesUsed().

double cms::MuonMETValueMapProducer::maxEta_
private

Definition at line 56 of file MuonMETValueMapProducer.h.

Referenced by should_type_MuonCandidateValuesUsed().

double cms::MuonMETValueMapProducer::maxNormChi2_
private

Definition at line 58 of file MuonMETValueMapProducer.h.

Referenced by should_type_MuonCandidateValuesUsed().

int cms::MuonMETValueMapProducer::minnHits_
private

Definition at line 60 of file MuonMETValueMapProducer.h.

Referenced by should_type_MuonCandidateValuesUsed().

int cms::MuonMETValueMapProducer::minnValidStaHits_
private

Definition at line 61 of file MuonMETValueMapProducer.h.

Referenced by should_type_MuonCandidateValuesUsed().

double cms::MuonMETValueMapProducer::minPt_
private

Definition at line 55 of file MuonMETValueMapProducer.h.

Referenced by should_type_MuonCandidateValuesUsed().

edm::EDGetTokenT<edm::View<reco::Muon> > cms::MuonMETValueMapProducer::muonToken_
private

Definition at line 68 of file MuonMETValueMapProducer.h.

Referenced by MuonMETValueMapProducer(), and produce().

double cms::MuonMETValueMapProducer::towerEtThreshold_
private

Definition at line 65 of file MuonMETValueMapProducer.h.

Referenced by determine_deltax_deltay().

TrackDetectorAssociator cms::MuonMETValueMapProducer::trackAssociator_
private

Definition at line 72 of file MuonMETValueMapProducer.h.

Referenced by determine_deltax_deltay(), and MuonMETValueMapProducer().

TrackAssociatorParameters cms::MuonMETValueMapProducer::trackAssociatorParameters_
private

Definition at line 71 of file MuonMETValueMapProducer.h.

Referenced by determine_deltax_deltay(), and MuonMETValueMapProducer().

bool cms::MuonMETValueMapProducer::useHO_
private

Definition at line 64 of file MuonMETValueMapProducer.h.

Referenced by determine_deltax_deltay().

bool cms::MuonMETValueMapProducer::useRecHits_
private

Definition at line 66 of file MuonMETValueMapProducer.h.

Referenced by determine_deltax_deltay().

bool cms::MuonMETValueMapProducer::useTrackAssociatorPositions_
private

Definition at line 63 of file MuonMETValueMapProducer.h.

Referenced by determine_deltax_deltay().