CMS 3D CMS Logo

List of all members | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes
muonisolation::CaloExtractor Class Reference

#include <CaloExtractor.h>

Inheritance diagram for muonisolation::CaloExtractor:
reco::isodeposit::IsoDepositExtractor

Public Member Functions

 CaloExtractor ()
 
 CaloExtractor (const edm::ParameterSet &par, edm::ConsumesCollector &&iC)
 
reco::IsoDeposit deposit (const edm::Event &ev, const edm::EventSetup &evSetup, const reco::Track &track) const override
 
void fillVetos (const edm::Event &ev, const edm::EventSetup &evSetup, const reco::TrackCollection &tracks) override
 
 ~CaloExtractor () override
 
- Public Member Functions inherited from reco::isodeposit::IsoDepositExtractor
virtual reco::IsoDeposit deposit (const edm::Event &ev, const edm::EventSetup &evSetup, const reco::Candidate &track) const
 
virtual reco::IsoDeposit deposit (const edm::Event &ev, const edm::EventSetup &evSetup, const reco::CandidateBaseRef &track) const
 make single IsoDeposit based on a CandidateBaseRef as input More...
 
virtual reco::IsoDeposit deposit (const edm::Event &ev, const edm::EventSetup &evSetup, const reco::TrackBaseRef &track) const
 make single IsoDeposit based on trackRef as input More...
 
virtual std::vector< reco::IsoDepositdeposits (const edm::Event &ev, const edm::EventSetup &evSetup, const reco::Candidate &track) const
 
virtual std::vector< reco::IsoDepositdeposits (const edm::Event &ev, const edm::EventSetup &evSetup, const reco::CandidateBaseRef &track) const
 
virtual std::vector< reco::IsoDepositdeposits (const edm::Event &ev, const edm::EventSetup &evSetup, const reco::Track &track) const
 
virtual std::vector< reco::IsoDepositdeposits (const edm::Event &ev, const edm::EventSetup &evSetup, const reco::TrackBaseRef &track) const
 
virtual void initEvent (const edm::Event &, const edm::EventSetup &)
 perform some constly initialization More...
 
virtual ~IsoDepositExtractor ()
 Destructor. More...
 

Static Public Member Functions

static GlobalPoint MuonAtCaloPosition (const reco::Track &muon, const double bz, const GlobalPoint &endpos, bool fixVxy=false, bool fixVz=false)
 Extrapolate muons to calorimeter-object positions. More...
 

Private Member Functions

double noiseEcal (const CaloTower &tower) const
 
double noiseHcal (const CaloTower &tower) const
 

Private Attributes

edm::EDGetTokenT< CaloTowerCollectiontheCaloTowerCollectionToken
 
std::string theDepositLabel
 
double theDR_Max
 
double theDR_Veto_E
 
double theDR_Veto_H
 
double theThreshold_E
 
double theThreshold_H
 
std::vector< DetIdtheVetoCollection
 
double theWeight_E
 
double theWeight_H
 
bool vertexConstraintFlag_XY
 
bool vertexConstraintFlag_Z
 

Detailed Description

Definition at line 20 of file CaloExtractor.h.

Constructor & Destructor Documentation

◆ CaloExtractor() [1/2]

muonisolation::CaloExtractor::CaloExtractor ( )
inline

Definition at line 22 of file CaloExtractor.h.

22 {};

◆ CaloExtractor() [2/2]

CaloExtractor::CaloExtractor ( const edm::ParameterSet par,
edm::ConsumesCollector &&  iC 
)

Definition at line 22 of file CaloExtractor.cc.

24  iC.consumes<CaloTowerCollection>(par.getParameter<edm::InputTag>("CaloTowerCollectionLabel"))),
25  theDepositLabel(par.getUntrackedParameter<string>("DepositLabel")),
26  theWeight_E(par.getParameter<double>("Weight_E")),
27  theWeight_H(par.getParameter<double>("Weight_H")),
28  theThreshold_E(par.getParameter<double>("Threshold_E")),
29  theThreshold_H(par.getParameter<double>("Threshold_H")),
30  theDR_Veto_E(par.getParameter<double>("DR_Veto_E")),
31  theDR_Veto_H(par.getParameter<double>("DR_Veto_H")),
32  theDR_Max(par.getParameter<double>("DR_Max")),
33  vertexConstraintFlag_XY(par.getParameter<bool>("Vertex_Constraint_XY")),
34  vertexConstraintFlag_Z(par.getParameter<bool>("Vertex_Constraint_Z")) {}

◆ ~CaloExtractor()

muonisolation::CaloExtractor::~CaloExtractor ( )
inlineoverride

Definition at line 25 of file CaloExtractor.h.

25 {}

Member Function Documentation

◆ deposit()

IsoDeposit CaloExtractor::deposit ( const edm::Event ev,
const edm::EventSetup evSetup,
const reco::Track track 
) const
overridevirtual

make single IsoDeposit based on track as input purely virtual: have to implement in concrete implementations

make this abit faster

Implements reco::isodeposit::IsoDepositExtractor.

Definition at line 93 of file CaloExtractor.cc.

93  {
94  IsoDeposit dep(muon.eta(), muon.phi());
95  LogDebug("Muon|RecoMuon|L2MuonIsolationProducer")
96  << " >>> Muon: pt " << muon.pt() << " eta " << muon.eta() << " phi " << muon.phi();
97 
99  event.getByToken(theCaloTowerCollectionToken, towers);
100 
102  eventSetup.get<CaloGeometryRecord>().get(caloGeom);
103 
105  eventSetup.get<IdealMagneticFieldRecord>().get(bField);
106  double bz = bField->inInverseGeV(GlobalPoint(0., 0., 0.)).z();
107 
110  for (cal = towers->begin(); cal != calEnd; ++cal) {
112  double dEta = fabs(muon.eta() - cal->eta());
113  if (fabs(dEta) > theDR_Max)
114  continue;
115 
116  double deltar0 = reco::deltaR(muon, *cal);
117  if (deltar0 > theDR_Max)
118  continue;
119 
120  double etecal = cal->emEt();
121  double eecal = cal->emEnergy();
122  bool doEcal = theWeight_E > 0 && etecal > theThreshold_E && eecal > 3 * noiseEcal(*cal);
123  double ethcal = cal->hadEt();
124  double ehcal = cal->hadEnergy();
125  bool doHcal = theWeight_H > 0 && ethcal > theThreshold_H && ehcal > 3 * noiseHcal(*cal);
126  if ((!doEcal) && (!doHcal))
127  continue;
128 
129  DetId calId = cal->id();
130  GlobalPoint endpos = caloGeom->getPosition(calId);
132  double deltar = reco::deltaR(muatcal, endpos);
133 
134  if (deltar < theDR_Veto_H) {
135  dep.setVeto(IsoDeposit::Veto(reco::isodeposit::Direction(muatcal.eta(), muatcal.phi()), theDR_Veto_H));
136  }
137 
138  if (doEcal) {
139  if (deltar < theDR_Veto_E) {
140  double calodep = theWeight_E * etecal;
141  if (doHcal)
142  calodep += theWeight_H * ethcal;
143  dep.addCandEnergy(calodep);
144  LogDebug("Muon|RecoMuon|L2MuonIsolationProducer")
145  << " >>> Calo deposit inside veto (with ECAL): deltar " << deltar << " calodep " << calodep << " ecaldep "
146  << etecal << " hcaldep " << ethcal << " eta " << cal->eta() << " phi " << cal->phi();
147  continue;
148  }
149  } else {
150  if (deltar < theDR_Veto_H) {
151  dep.addCandEnergy(theWeight_H * ethcal);
152  LogDebug("Muon|RecoMuon|L2MuonIsolationProducer")
153  << " >>> Calo deposit inside veto (no ECAL): deltar " << deltar << " calodep " << theWeight_H * ethcal
154  << " eta " << cal->eta() << " phi " << cal->phi();
155  continue;
156  }
157  }
158 
159  if (std::find(theVetoCollection.begin(), theVetoCollection.end(), calId) != theVetoCollection.end()) {
160  LogDebug("Muon|RecoMuon|L2MuonIsolationProducer")
161  << " >>> Deposits belongs to other track: deltar, etecal, ethcal= " << deltar << ", " << etecal << ", "
162  << ethcal;
163  continue;
164  }
165 
166  if (doEcal) {
167  if (deltar > theDR_Veto_E) {
168  double calodep = theWeight_E * etecal;
169  if (doHcal)
170  calodep += theWeight_H * ethcal;
171  dep.addDeposit(reco::isodeposit::Direction(endpos.eta(), endpos.phi()), calodep);
172  LogDebug("Muon|RecoMuon|L2MuonIsolationProducer")
173  << " >>> Calo deposit (with ECAL): deltar " << deltar << " calodep " << calodep << " ecaldep " << etecal
174  << " hcaldep " << ethcal << " eta " << cal->eta() << " phi " << cal->phi();
175  }
176  } else {
177  if (deltar > theDR_Veto_H) {
178  dep.addDeposit(reco::isodeposit::Direction(endpos.eta(), endpos.phi()), theWeight_H * ethcal);
179  LogDebug("Muon|RecoMuon|L2MuonIsolationProducer")
180  << " >>> Calo deposit (no ECAL): deltar " << deltar << " calodep " << theWeight_H * ethcal << " eta "
181  << cal->eta() << " phi " << cal->phi();
182  }
183  }
184  }
185 
186  return dep;
187 }

References Calorimetry_cff::bField, reco::deltaR(), HLT_2018_cff::dEta, PV3DBase< T, PVType, FrameType >::eta(), spr::find(), edm::EventSetup::get(), get, CaloGeometry::getPosition(), LogDebug, MuonAtCaloPosition(), noiseEcal(), noiseHcal(), PV3DBase< T, PVType, FrameType >::phi(), theCaloTowerCollectionToken, theDR_Max, theDR_Veto_E, theDR_Veto_H, theThreshold_E, theThreshold_H, theVetoCollection, theWeight_E, theWeight_H, HLT_2018_cff::towers, vertexConstraintFlag_XY, and vertexConstraintFlag_Z.

◆ fillVetos()

void CaloExtractor::fillVetos ( const edm::Event ev,
const edm::EventSetup evSetup,
const reco::TrackCollection tracks 
)
overridevirtual

fill vetoes: to exclude deposits at IsoDeposit creation stage check concrete extractors if it's no-op !

make this abit faster

Implements reco::isodeposit::IsoDepositExtractor.

Definition at line 36 of file CaloExtractor.cc.

38  {
39  theVetoCollection.clear();
40 
42  event.getByToken(theCaloTowerCollectionToken, towers);
43 
45  eventSetup.get<CaloGeometryRecord>().get(caloGeom);
46 
48  eventSetup.get<IdealMagneticFieldRecord>().get(bField);
49  double bz = bField->inInverseGeV(GlobalPoint(0., 0., 0.)).z();
50 
51  TrackCollection::const_iterator mu;
52  TrackCollection::const_iterator muEnd(muons.end());
53 
56 
57  for (mu = muons.begin(); mu != muEnd; ++mu) {
58  for (cal = towers->begin(); cal != calEnd; ++cal) {
60  double dEta = fabs(mu->eta() - cal->eta());
61  if (fabs(dEta) > theDR_Max)
62  continue;
63 
64  double deltar0 = reco::deltaR(*mu, *cal);
65  if (deltar0 > theDR_Max)
66  continue;
67 
68  double etecal = cal->emEt();
69  double eecal = cal->emEnergy();
70  bool doEcal = theWeight_E > 0 && etecal > theThreshold_E && eecal > 3 * noiseEcal(*cal);
71  double ethcal = cal->hadEt();
72  double ehcal = cal->hadEnergy();
73  bool doHcal = theWeight_H > 0 && ethcal > theThreshold_H && ehcal > 3 * noiseHcal(*cal);
74  if ((!doEcal) && (!doHcal))
75  continue;
76 
77  DetId calId = cal->id();
78  GlobalPoint endpos = caloGeom->getPosition(calId);
80  double deltar = reco::deltaR(muatcal, endpos);
81 
82  if (doEcal) {
83  if (deltar < theDR_Veto_E)
84  theVetoCollection.push_back(calId);
85  } else {
86  if (deltar < theDR_Veto_H)
87  theVetoCollection.push_back(calId);
88  }
89  }
90  }
91 }

References Calorimetry_cff::bField, reco::deltaR(), HLT_2018_cff::dEta, edm::EventSetup::get(), get, CaloGeometry::getPosition(), amptDefaultParameters_cff::mu, MuonAtCaloPosition(), PDWG_BPHSkim_cff::muons, noiseEcal(), noiseHcal(), theCaloTowerCollectionToken, theDR_Max, theDR_Veto_E, theDR_Veto_H, theThreshold_E, theThreshold_H, theVetoCollection, theWeight_E, theWeight_H, HLT_2018_cff::towers, vertexConstraintFlag_XY, and vertexConstraintFlag_Z.

◆ MuonAtCaloPosition()

GlobalPoint CaloExtractor::MuonAtCaloPosition ( const reco::Track muon,
const double  bz,
const GlobalPoint endpos,
bool  fixVxy = false,
bool  fixVz = false 
)
static

Extrapolate muons to calorimeter-object positions.

Definition at line 189 of file CaloExtractor.cc.

190  {
191  double qoverp = muon.qoverp();
192  double cur = bz * muon.charge() / muon.pt();
193  double phi0 = muon.phi();
194  double dca = muon.dxy();
195  double theta = muon.theta();
196  double dz = muon.dz();
197 
198  //LogDebug("Muon|RecoMuon|L2MuonIsolationProducer")
199  //<< " Pt(GeV): " << muon.pt()
200  //<< ", phi0 " << muon.phi0()
201  //<< ", eta " << muon.eta();
202  //LogDebug("Muon|RecoMuon|L2MuonIsolationProducer")
203  //<< " d0 " << muon.d0()
204  //<< ", dz " << muon.dz();
205  //LogDebug("Muon|RecoMuon|L2MuonIsolationProducer")
206  //<< " rhocal " << endpos.perp()
207  //<< ", zcal " << endpos.z();
208 
209  if (fixVxy && fixVz) {
210  // Note that here we assume no correlation between XY and Z projections
211  // This should be a reasonable approximation for our purposes
212  double errd02 = muon.covariance(muon.i_dxy, muon.i_dxy);
213  if (pow(muon.dxy(), 2) < 4 * errd02) {
214  phi0 -= muon.dxy() * muon.covariance(muon.i_dxy, muon.i_phi) / errd02;
215  cur -= muon.dxy() * muon.covariance(muon.i_dxy, muon.i_qoverp) / errd02 * (cur / qoverp);
216  dca = 0;
217  }
218  double errdsz2 = muon.covariance(muon.i_dsz, muon.i_dsz);
219  if (pow(muon.dsz(), 2) < 4 * errdsz2) {
220  theta += muon.dsz() * muon.covariance(muon.i_dsz, muon.i_lambda) / errdsz2;
221  dz = 0;
222  }
223  } else if (fixVxy) {
224  double errd02 = muon.covariance(muon.i_dxy, muon.i_dxy);
225  if (pow(muon.dxy(), 2) < 4 * errd02) {
226  phi0 -= muon.dxy() * muon.covariance(muon.i_dxy, muon.i_phi) / errd02;
227  cur -= muon.dxy() * muon.covariance(muon.i_dxy, muon.i_qoverp) / errd02 * (cur / qoverp);
228  theta += muon.dxy() * muon.covariance(muon.i_dxy, muon.i_lambda) / errd02;
229  dz -= muon.dxy() * muon.covariance(muon.i_dxy, muon.i_dsz) / errd02 * muon.p() / muon.pt();
230  dca = 0;
231  }
232  } else if (fixVz) {
233  double errdsz2 = muon.covariance(muon.i_dsz, muon.i_dsz);
234  if (pow(muon.dsz(), 2) < 4 * errdsz2) {
235  theta += muon.dsz() * muon.covariance(muon.i_dsz, muon.i_lambda) / errdsz2;
236  phi0 -= muon.dsz() * muon.covariance(muon.i_dsz, muon.i_phi) / errdsz2;
237  cur -= muon.dsz() * muon.covariance(muon.i_dsz, muon.i_qoverp) / errdsz2 * (cur / qoverp);
238  dca -= muon.dsz() * muon.covariance(muon.i_dsz, muon.i_dxy) / errdsz2;
239  dz = 0;
240  }
241  }
242 
243  double sphi0 = sin(phi0);
244  double cphi0 = cos(phi0);
245 
246  double xsin = endpos.x() * sphi0 - endpos.y() * cphi0;
247  double xcos = endpos.x() * cphi0 + endpos.y() * sphi0;
248  double fcdca = fabs(1 - cur * dca);
249  double phif = atan2(fcdca * sphi0 - cur * endpos.x(), fcdca * cphi0 + cur * endpos.y());
250  double tphif2 = tan(0.5 * (phif - phi0));
251  double dcaf = dca + xsin + xcos * tphif2;
252 
253  double x = endpos.x() - dcaf * sin(phif);
254  double y = endpos.y() + dcaf * cos(phif);
255 
256  double deltas = (x - muon.vx()) * cphi0 + (y - muon.vy()) * sphi0;
257  double deltaphi = normalizedPhi(phif - phi0);
258  if (deltaphi != 0)
259  deltas = deltas * deltaphi / sin(deltaphi);
260 
261  double z = dz;
262  double tantheta = tan(theta);
263  if (tantheta != 0) {
264  z += deltas / tan(theta);
265  } else {
266  z = endpos.z();
267  }
268 
269  return GlobalPoint(x, y, z);
270 }

References funct::cos(), PVValHelper::dz, normalizedPhi(), funct::pow(), funct::sin(), funct::tan(), theta(), PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().

Referenced by deposit(), and fillVetos().

◆ noiseEcal()

double CaloExtractor::noiseEcal ( const CaloTower tower) const
private

Definition at line 272 of file CaloExtractor.cc.

272  {
273  double noise = 0.04;
274  double eta = tower.eta();
275  if (fabs(eta) > 1.479)
276  noise = 0.15;
277  return noise;
278 }

References PVValHelper::eta, hgcalDigitizer_cfi::noise, and hgcalTowerProducer_cfi::tower.

Referenced by deposit(), and fillVetos().

◆ noiseHcal()

double CaloExtractor::noiseHcal ( const CaloTower tower) const
private

Definition at line 280 of file CaloExtractor.cc.

280  {
281  double noise = 0.2;
282  return noise;
283 }

References hgcalDigitizer_cfi::noise.

Referenced by deposit(), and fillVetos().

Member Data Documentation

◆ theCaloTowerCollectionToken

edm::EDGetTokenT<CaloTowerCollection> muonisolation::CaloExtractor::theCaloTowerCollectionToken
private

Definition at line 38 of file CaloExtractor.h.

Referenced by deposit(), and fillVetos().

◆ theDepositLabel

std::string muonisolation::CaloExtractor::theDepositLabel
private

Definition at line 41 of file CaloExtractor.h.

◆ theDR_Max

double muonisolation::CaloExtractor::theDR_Max
private

Definition at line 50 of file CaloExtractor.h.

Referenced by deposit(), and fillVetos().

◆ theDR_Veto_E

double muonisolation::CaloExtractor::theDR_Veto_E
private

Definition at line 48 of file CaloExtractor.h.

Referenced by deposit(), and fillVetos().

◆ theDR_Veto_H

double muonisolation::CaloExtractor::theDR_Veto_H
private

Definition at line 49 of file CaloExtractor.h.

Referenced by deposit(), and fillVetos().

◆ theThreshold_E

double muonisolation::CaloExtractor::theThreshold_E
private

Definition at line 46 of file CaloExtractor.h.

Referenced by deposit(), and fillVetos().

◆ theThreshold_H

double muonisolation::CaloExtractor::theThreshold_H
private

Definition at line 47 of file CaloExtractor.h.

Referenced by deposit(), and fillVetos().

◆ theVetoCollection

std::vector<DetId> muonisolation::CaloExtractor::theVetoCollection
private

Definition at line 55 of file CaloExtractor.h.

Referenced by deposit(), and fillVetos().

◆ theWeight_E

double muonisolation::CaloExtractor::theWeight_E
private

Definition at line 44 of file CaloExtractor.h.

Referenced by deposit(), and fillVetos().

◆ theWeight_H

double muonisolation::CaloExtractor::theWeight_H
private

Definition at line 45 of file CaloExtractor.h.

Referenced by deposit(), and fillVetos().

◆ vertexConstraintFlag_XY

bool muonisolation::CaloExtractor::vertexConstraintFlag_XY
private

Definition at line 51 of file CaloExtractor.h.

Referenced by deposit(), and fillVetos().

◆ vertexConstraintFlag_Z

bool muonisolation::CaloExtractor::vertexConstraintFlag_Z
private

Definition at line 52 of file CaloExtractor.h.

Referenced by deposit(), and fillVetos().

PDWG_BPHSkim_cff.muons
muons
Definition: PDWG_BPHSkim_cff.py:47
DDAxes::y
muonisolation::CaloExtractor::noiseEcal
double noiseEcal(const CaloTower &tower) const
Definition: CaloExtractor.cc:272
muonisolation::CaloExtractor::theDepositLabel
std::string theDepositLabel
Definition: CaloExtractor.h:41
edm::SortedCollection< CaloTower >::const_iterator
std::vector< CaloTower >::const_iterator const_iterator
Definition: SortedCollection.h:80
muon
Definition: MuonCocktails.h:17
PV3DBase::x
T x() const
Definition: PV3DBase.h:59
amptDefaultParameters_cff.mu
mu
Definition: amptDefaultParameters_cff.py:16
CaloGeometry::getPosition
GlobalPoint getPosition(const DetId &id) const
Get the position of a given detector id.
Definition: CaloGeometry.cc:50
CaloGeometryRecord
Definition: CaloGeometryRecord.h:30
muonisolation::CaloExtractor::theThreshold_H
double theThreshold_H
Definition: CaloExtractor.h:47
hgcalTowerProducer_cfi.tower
tower
Definition: hgcalTowerProducer_cfi.py:3
edm::SortedCollection< CaloTower >
deltar
Definition: deltar.py:1
reco::IsoDeposit::Veto
Definition: IsoDeposit.h:59
edm::ParameterSet::getUntrackedParameter
T getUntrackedParameter(std::string const &, T const &) const
DDAxes::x
spr::find
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:19
edm::Handle
Definition: AssociativeIterator.h:50
HLT_2018_cff.dEta
dEta
Definition: HLT_2018_cff.py:12289
funct::sin
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
PV3DBase::z
T z() const
Definition: PV3DBase.h:61
IdealMagneticFieldRecord
Definition: IdealMagneticFieldRecord.h:11
DetId
Definition: DetId.h:17
funct::cos
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
muonisolation::CaloExtractor::theThreshold_E
double theThreshold_E
Definition: CaloExtractor.h:46
muonisolation::CaloExtractor::theDR_Max
double theDR_Max
Definition: CaloExtractor.h:50
PVValHelper::eta
Definition: PVValidationHelpers.h:69
muonisolation::CaloExtractor::theVetoCollection
std::vector< DetId > theVetoCollection
Definition: CaloExtractor.h:55
muonisolation::CaloExtractor::theDR_Veto_E
double theDR_Veto_E
Definition: CaloExtractor.h:48
DDAxes::z
edm::ESHandle< CaloGeometry >
normalizedPhi
constexpr T normalizedPhi(T phi)
Definition: normalizedPhi.h:8
edm::ConsumesCollector::consumes
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
Definition: ConsumesCollector.h:49
theta
Geom::Theta< T > theta() const
Definition: Basic3DVectorLD.h:150
GlobalPoint
Global3DPoint GlobalPoint
Definition: GlobalPoint.h:10
Point3DBase< float, GlobalTag >
muonisolation::CaloExtractor::theWeight_E
double theWeight_E
Definition: CaloExtractor.h:44
LogDebug
#define LogDebug(id)
Definition: MessageLogger.h:670
muonisolation::CaloExtractor::theWeight_H
double theWeight_H
Definition: CaloExtractor.h:45
muonisolation::CaloExtractor::noiseHcal
double noiseHcal(const CaloTower &tower) const
Definition: CaloExtractor.cc:280
hgcalDigitizer_cfi.noise
noise
Definition: hgcalDigitizer_cfi.py:150
PV3DBase::eta
T eta() const
Definition: PV3DBase.h:73
muonisolation::CaloExtractor::theCaloTowerCollectionToken
edm::EDGetTokenT< CaloTowerCollection > theCaloTowerCollectionToken
Definition: CaloExtractor.h:38
PV3DBase::y
T y() const
Definition: PV3DBase.h:60
funct::tan
Tan< T >::type tan(const T &t)
Definition: Tan.h:22
get
#define get
muonisolation::CaloExtractor::vertexConstraintFlag_XY
bool vertexConstraintFlag_XY
Definition: CaloExtractor.h:51
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
HLT_2018_cff.towers
towers
Definition: HLT_2018_cff.py:35030
muonisolation::CaloExtractor::vertexConstraintFlag_Z
bool vertexConstraintFlag_Z
Definition: CaloExtractor.h:52
Calorimetry_cff.bField
bField
Definition: Calorimetry_cff.py:292
muonisolation::CaloExtractor::theDR_Veto_H
double theDR_Veto_H
Definition: CaloExtractor.h:49
PVValHelper::dz
Definition: PVValidationHelpers.h:50
reco::isodeposit::Direction
Definition: IsoDepositDirection.h:19
reco::deltaR
constexpr auto deltaR(const T1 &t1, const T2 &t2) -> decltype(t1.eta())
Definition: deltaR.h:30
reco::IsoDeposit
Definition: IsoDeposit.h:49
funct::pow
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:30
muonisolation::CaloExtractor::MuonAtCaloPosition
static GlobalPoint MuonAtCaloPosition(const reco::Track &muon, const double bz, const GlobalPoint &endpos, bool fixVxy=false, bool fixVz=false)
Extrapolate muons to calorimeter-object positions.
Definition: CaloExtractor.cc:189
edm::InputTag
Definition: InputTag.h:15
PV3DBase::phi
Geom::Phi< T > phi() const
Definition: PV3DBase.h:66