CMS 3D CMS Logo

List of all members | Classes | Public Member Functions | Private Types | Private Member Functions | Private Attributes
MuIsolatorResultProducer< BT > Class Template Reference

BT == base type. More...

#include <MuIsolatorResultProducer.h>

Inheritance diagram for MuIsolatorResultProducer< BT >:
edm::stream::EDProducer<>

Classes

struct  DepositConf
 
struct  VetoCuts
 

Public Member Functions

 MuIsolatorResultProducer (const edm::ParameterSet &)
 constructor with config More...
 
void produce (edm::Event &, const edm::EventSetup &) override
 
 ~MuIsolatorResultProducer () override
 destructor More...
 
- Public Member Functions inherited from edm::stream::EDProducer<>
 EDProducer ()=default
 
 EDProducer (const EDProducer &)=delete
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginProcessBlocks () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndProcessBlocks () const final
 
bool hasAbilityToProduceInEndRuns () const final
 
const EDProduceroperator= (const EDProducer &)=delete
 

Private Types

typedef muisorhelper::CandMap< BT > CandMap
 
typedef muisorhelper::DepositContainer DepositContainer
 
typedef muisorhelper::Isolator Isolator
 
typedef muisorhelper::Result Result
 
typedef muisorhelper::Results Results
 
typedef muisorhelper::ResultType ResultType
 

Private Member Functions

void callWhatProduces ()
 declare what's going to be produced More...
 
unsigned int initAssociation (edm::Event &event, CandMap &candMapT) const
 
void initVetos (reco::TrackBase::Point const &theBeam, std::vector< reco::IsoDeposit::Vetos *> &vetos, CandMap &candMap) const
 
void writeOut (edm::Event &event, const CandMap &candMap, const Results &results) const
 choose which result type to write here More...
 
template<typename RT >
void writeOutImpl (edm::Event &event, const CandMap &candMapT, const Results &results) const
 actually do the writing here More...
 

Private Attributes

std::string theBeamlineOption
 beam spot More...
 
edm::InputTag theBeamSpotLabel
 
edm::ParameterSet theConfig
 
std::vector< DepositConftheDepositConfs
 
IsolatortheIsolator
 the isolator More...
 
bool theRemoveOtherVetos
 choose which muon vetos should be removed from all deposits More...
 
ResultType theResultType
 
VetoCuts theVetoCuts
 

Additional Inherited Members

- Public Types inherited from edm::stream::EDProducer<>
using CacheTypes = CacheContexts< T... >
 
using GlobalCache = typename CacheTypes::GlobalCache
 
using HasAbility = AbilityChecker< T... >
 
using InputProcessBlockCache = typename CacheTypes::InputProcessBlockCache
 
using LuminosityBlockCache = typename CacheTypes::LuminosityBlockCache
 
using LuminosityBlockContext = LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCache >
 
using LuminosityBlockSummaryCache = typename CacheTypes::LuminosityBlockSummaryCache
 
using RunCache = typename CacheTypes::RunCache
 
using RunContext = RunContextT< RunCache, GlobalCache >
 
using RunSummaryCache = typename CacheTypes::RunSummaryCache
 

Detailed Description

template<typename BT = reco::Candidate>
class MuIsolatorResultProducer< BT >

BT == base type.

Definition at line 53 of file MuIsolatorResultProducer.h.

Member Typedef Documentation

◆ CandMap

template<typename BT = reco::Candidate>
typedef muisorhelper::CandMap<BT> MuIsolatorResultProducer< BT >::CandMap
private

Definition at line 68 of file MuIsolatorResultProducer.h.

◆ DepositContainer

template<typename BT = reco::Candidate>
typedef muisorhelper::DepositContainer MuIsolatorResultProducer< BT >::DepositContainer
private

Definition at line 66 of file MuIsolatorResultProducer.h.

◆ Isolator

template<typename BT = reco::Candidate>
typedef muisorhelper::Isolator MuIsolatorResultProducer< BT >::Isolator
private

Definition at line 62 of file MuIsolatorResultProducer.h.

◆ Result

template<typename BT = reco::Candidate>
typedef muisorhelper::Result MuIsolatorResultProducer< BT >::Result
private

Definition at line 63 of file MuIsolatorResultProducer.h.

◆ Results

template<typename BT = reco::Candidate>
typedef muisorhelper::Results MuIsolatorResultProducer< BT >::Results
private

Definition at line 65 of file MuIsolatorResultProducer.h.

◆ ResultType

template<typename BT = reco::Candidate>
typedef muisorhelper::ResultType MuIsolatorResultProducer< BT >::ResultType
private

Definition at line 64 of file MuIsolatorResultProducer.h.

Constructor & Destructor Documentation

◆ MuIsolatorResultProducer()

template<typename BT >
MuIsolatorResultProducer< BT >::MuIsolatorResultProducer ( const edm::ParameterSet par)

constructor with config

read input config for deposit types and weights and thresholds to apply to them

will switch to a factory at some point

FIXME

FIXME: need to get the file name here

"other vetoes" is limited to the same collection now for non-trivial choice an external map with pre-made selection flags can be a better choice

Definition at line 186 of file MuIsolatorResultProducer.h.

References MuIsolatorResultProducer< BT >::callWhatProduces(), HLT_2023v12_cff::coneSize, edm::ParameterSet::getParameter(), LogDebug, MuIsolatorResultProducer< BT >::VetoCuts::muAbsEtaMax, MuIsolatorResultProducer< BT >::VetoCuts::muAbsZMax, MuIsolatorResultProducer< BT >::VetoCuts::muD0Max, MuIsolatorResultProducer< BT >::VetoCuts::muPtMin, muonisolation::MuIsoBaseIsolator::resultType(), MuIsolatorResultProducer< BT >::VetoCuts::selectAll, AlCaHLTBitMon_QueryRunRegistry::string, MuIsolatorResultProducer< BT >::DepositConf::tag, MuIsolatorResultProducer< BT >::theBeamlineOption, MuIsolatorResultProducer< BT >::theBeamSpotLabel, MuIsolatorResultProducer< BT >::theDepositConfs, MuIsolatorResultProducer< BT >::theIsolator, MuIsolatorResultProducer< BT >::theRemoveOtherVetos, MuIsolatorResultProducer< BT >::theResultType, MuIsolatorResultProducer< BT >::theVetoCuts, MuIsolatorResultProducer< BT >::DepositConf::threshold, and MuIsolatorResultProducer< BT >::DepositConf::weight.

187  : theConfig(par), theRemoveOtherVetos(par.getParameter<bool>("RemoveOtherVetos")), theIsolator(nullptr) {
188  LogDebug("RecoMuon|MuonIsolation") << " MuIsolatorResultProducer CTOR";
189 
191  std::vector<edm::ParameterSet> depositInputs = par.getParameter<std::vector<edm::ParameterSet>>("InputMuIsoDeposits");
192 
193  std::vector<double> dWeights(depositInputs.size());
194  std::vector<double> dThresholds(depositInputs.size());
195 
196  for (unsigned int iDep = 0; iDep < depositInputs.size(); ++iDep) {
197  DepositConf dConf;
198  dConf.tag = depositInputs[iDep].getParameter<edm::InputTag>("DepositTag");
199  dConf.weight = depositInputs[iDep].getParameter<double>("DepositWeight");
200  dConf.threshold = depositInputs[iDep].getParameter<double>("DepositThreshold");
201 
202  dWeights[iDep] = dConf.weight;
203  dThresholds[iDep] = dConf.threshold;
204 
205  theDepositConfs.push_back(dConf);
206  }
207 
208  edm::ParameterSet isoPset = par.getParameter<edm::ParameterSet>("IsolatorPSet");
210  std::string isolatorType = isoPset.getParameter<std::string>("ComponentName");
211  if (isolatorType == "IsolatorByDeposit") {
212  std::string coneSizeType = isoPset.getParameter<std::string>("ConeSizeType");
213  if (coneSizeType == "FixedConeSize") {
214  float coneSize(isoPset.getParameter<double>("coneSize"));
215 
216  theIsolator = new muonisolation::IsolatorByDeposit(coneSize, dWeights, dThresholds);
217 
218  // theIsolator = new IsolatorByDeposit(isoPset);
219  } else if (coneSizeType == "CutsConeSize") {
221  // Cuts cuts(isoPset.getParameter<edm::ParameterSet>("CutsPSet"));
222 
223  // theIsolator = new IsolatorByDeposit(coneSize, dWeights, dThresholds);
224  }
225  } else if (isolatorType == "IsolatorByNominalEfficiency") {
227  theIsolator =
228  new muonisolation::IsolatorByNominalEfficiency("noname", std::vector<std::string>(1, "8:0.97"), dWeights);
229  } else if (isolatorType == "IsolatorByDepositCount") {
230  std::string coneSizeType = isoPset.getParameter<std::string>("ConeSizeType");
231  if (coneSizeType == "FixedConeSize") {
232  float coneSize(isoPset.getParameter<double>("coneSize"));
233 
235 
236  // theIsolator = new IsolatorByDeposit(isoPset);
237  } else if (coneSizeType == "CutsConeSize") {
238  // Cuts cuts(isoPset.getParameter<edm::ParameterSet>("CutsPSet"));
239 
240  // theIsolator = new IsolatorByDeposit(coneSize, dWeights, dThresholds);
241  }
242  }
243 
244  if (theIsolator == nullptr) {
245  edm::LogError("MuonIsolationProducers") << "Failed to initialize an isolator";
246  }
248 
250 
251  if (theRemoveOtherVetos) {
252  edm::ParameterSet vetoPSet = par.getParameter<edm::ParameterSet>("VetoPSet");
253  theVetoCuts.selectAll = vetoPSet.getParameter<bool>("SelectAll");
254 
258  if (!theVetoCuts.selectAll) {
259  theVetoCuts.muAbsEtaMax = vetoPSet.getParameter<double>("MuAbsEtaMax");
260  theVetoCuts.muPtMin = vetoPSet.getParameter<double>("MuPtMin");
261  theVetoCuts.muAbsZMax = vetoPSet.getParameter<double>("MuAbsZMax");
262  theVetoCuts.muD0Max = vetoPSet.getParameter<double>("MuD0Max");
263  theBeamlineOption = par.getParameter<std::string>("BeamlineOption");
264  theBeamSpotLabel = par.getParameter<edm::InputTag>("BeamSpotLabel");
265  }
266  }
267 }
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
std::vector< DepositConf > theDepositConfs
bool theRemoveOtherVetos
choose which muon vetos should be removed from all deposits
void callWhatProduces()
declare what&#39;s going to be produced
Log< level::Error, false > LogError
Isolator * theIsolator
the isolator
std::string theBeamlineOption
beam spot
virtual ResultType resultType() const =0
#define LogDebug(id)

◆ ~MuIsolatorResultProducer()

template<typename BT >
MuIsolatorResultProducer< BT >::~MuIsolatorResultProducer ( )
override

destructor

Definition at line 271 of file MuIsolatorResultProducer.h.

References LogDebug.

271  {
272  if (theIsolator)
273  delete theIsolator;
274  LogDebug("RecoMuon|MuIsolatorResultProducer") << " MuIsolatorResultProducer DTOR";
275 }
Isolator * theIsolator
the isolator
#define LogDebug(id)

Member Function Documentation

◆ callWhatProduces()

template<typename BT >
void MuIsolatorResultProducer< BT >::callWhatProduces ( )
inlineprivate

declare what's going to be produced

Definition at line 153 of file MuIsolatorResultProducer.h.

Referenced by MuIsolatorResultProducer< BT >::MuIsolatorResultProducer().

◆ initAssociation()

template<typename BT >
unsigned int MuIsolatorResultProducer< BT >::initAssociation ( edm::Event event,
CandMap candMapT 
) const
private

WARNING: the input ValueMaps are better be for a single key product ID no effort is done (FIXME) for more complex cases
init {muon, {[deposit,veto]_type}} container

Definition at line 345 of file MuIsolatorResultProducer.h.

References edm::ValueMap< T >::const_iterator::begin(), edm::ValueMap< T >::begin(), edm::ValueMap< T >::empty(), edm::ValueMap< T >::const_iterator::end(), muisorhelper::CandMap< BT >::get(), edm::ValueMap< T >::const_iterator::id(), LogDebug, metname, muisorhelper::CandMap< BT >::setHandle(), edm::ValueMap< T >::size(), AlCaHLTBitMon_QueryRunRegistry::string, and makeGlobalPositionRcd_cfg::tag.

345  {
346  std::string metname = "RecoMuon|MuonIsolationProducers";
347 
349 
350  for (unsigned int iMap = 0; iMap < theDepositConfs.size(); ++iMap) {
352  event.getByLabel(theDepositConfs[iMap].tag, depH);
353  LogDebug(metname) << "Got Deposits of size " << depH->size();
354  if (depH->empty())
355  continue;
356 
359  typename CandMap::handle_type keyH;
360  event.get(depH->begin().id(), keyH);
361  candMapT.setHandle(keyH);
362  typename CT::const_iterator depHCI = depH->begin().begin();
363  typename CT::const_iterator depEnd = depH->begin().end();
364  unsigned int keyI = 0;
365  for (; depHCI != depEnd; ++depHCI, ++keyI) {
366  typename CandMap::key_type muPtr(keyH->refAt(keyI));
368  if (iMap == 0)
369  candMapT.get().push_back(typename CandMap::pair_type(muPtr, DepositContainer(theDepositConfs.size())));
370  typename CandMap::iterator muI = candMapT.get().begin();
371  for (; muI != candMapT.get().end(); ++muI) {
372  if (muI->first == muPtr)
373  break;
374  }
375  if (muI->first != muPtr) {
376  edm::LogError("MuonIsolationProducers") << "Failed to align muon map";
377  }
378  muI->second[iMap].dep = &*depHCI;
379  }
380  }
381 
382  LogDebug(metname) << "Picked and aligned nDeps = " << candMapT.get().size();
383  return candMapT.get().size();
384 }
std::pair< key_type, value_type > pair_type
const std::string metname
std::vector< DepositConf > theDepositConfs
Log< level::Error, false > LogError
edm::RefToBase< BT > key_type
edm::Handle< edm::View< BT > > handle_type
ProductID id() const
Definition: ValueMap.h:173
container::const_iterator end() const
Definition: ValueMap.h:175
const_iterator begin() const
Definition: ValueMap.h:229
container::const_iterator begin() const
Definition: ValueMap.h:174
muisorhelper::DepositContainer DepositContainer
size_t size() const
Definition: ValueMap.h:156
std::vector< value_type > container
Definition: ValueMap.h:110
bool empty() const
Definition: ValueMap.h:158
#define LogDebug(id)

◆ initVetos()

template<typename BT >
void MuIsolatorResultProducer< BT >::initVetos ( reco::TrackBase::Point const &  theBeam,
std::vector< reco::IsoDeposit::Vetos *> &  vetos,
CandMap candMap 
) const
private

Definition at line 387 of file MuIsolatorResultProducer.h.

References d0, muisorhelper::CandMap< BT >::get(), LogDebug, metname, amptDefaultParameters_cff::mu, AlCaHLTBitMon_QueryRunRegistry::string, and boostedElectronIsolation_cff::vetos.

389  {
390  std::string metname = "RecoMuon|MuonIsolationProducers";
391 
392  if (theRemoveOtherVetos) {
393  LogDebug(metname) << "Start checking for vetos based on input/expected vetos.size of " << vetos.size()
394  << " passed at " << &vetos << " and an input map.size of " << candMapT.get().size();
395 
396  unsigned int muI = 0;
397  for (; muI < candMapT.get().size(); ++muI) {
398  typename CandMap::key_type mu = candMapT.get()[muI].first;
399  double d0 = ((mu->vx() - theBeam.x()) * mu->py() - (mu->vy() - theBeam.y()) * mu->px()) / mu->pt();
400  LogDebug(metname) << "Muon at index " << muI;
401  if (theVetoCuts.selectAll || (fabs(mu->eta()) < theVetoCuts.muAbsEtaMax && mu->pt() > theVetoCuts.muPtMin &&
402  fabs(mu->vz()) < theVetoCuts.muAbsZMax && fabs(d0) < theVetoCuts.muD0Max)) {
403  LogDebug(metname) << "muon passes the cuts";
404  for (unsigned int iDep = 0; iDep < candMapT.get()[muI].second.size(); ++iDep) {
405  if (vetos[iDep] == nullptr)
406  vetos[iDep] = new reco::IsoDeposit::Vetos();
407 
408  vetos[iDep]->push_back(candMapT.get()[muI].second[iDep].dep->veto());
409  }
410  }
411  }
412 
413  LogDebug(metname) << "Assigning vetos";
414  muI = 0;
415  for (; muI < candMapT.get().size(); ++muI) {
416  for (unsigned int iDep = 0; iDep < candMapT.get()[muI].second.size(); ++iDep) {
417  candMapT.get()[muI].second[iDep].vetos = vetos[iDep];
418  }
419  }
420  LogDebug(metname) << "Done with vetos";
421  }
422 }
const std::string metname
bool theRemoveOtherVetos
choose which muon vetos should be removed from all deposits
edm::RefToBase< BT > key_type
static constexpr float d0
std::vector< Veto > Vetos
Definition: IsoDeposit.h:65
#define LogDebug(id)

◆ produce()

template<typename BT >
void MuIsolatorResultProducer< BT >::produce ( edm::Event event,
const edm::EventSetup eventSetup 
)
override

do it only if needed

"smart" container used to repackage deposits_type_candIndex into deposits_candIndex_type have to have it for veto removal (could do away without it otherwise) IMPORTANT: ALL THE REFERENCING BUSINESS IS DONE THROUGH POINTERS Access to the mapped values as reference type HAS TO BE AVAILABLE



isolator results will be here

extra vetos will be filled here

call the isolator result, passing {[deposit,vetos]_type} set and the candidate

do cleanup

Definition at line 278 of file MuIsolatorResultProducer.h.

References pwdgSkimBPark_cfi::beamSpot, muisorhelper::CandMap< BT >::get(), edm::HandleBase::isValid(), LogDebug, LogTrace, metname, reco::BeamSpot::position(), mysort::results, and AlCaHLTBitMon_QueryRunRegistry::string.

278  {
279  std::string metname = "RecoMuon|MuonIsolationProducers";
280  LogDebug(metname) << " Muon Deposit producing..."
281  << " BEGINING OF EVENT "
282  << "================================";
283 
285 
288  if (theBeamlineOption == "BeamSpotFromEvent") {
289  //pick beamSpot
291  edm::Handle<reco::BeamSpot> beamSpotH;
292 
293  event.getByLabel(theBeamSpotLabel, beamSpotH);
294 
295  if (beamSpotH.isValid()) {
296  theBeam = beamSpotH->position();
297  LogTrace(metname) << "Extracted beam point at " << theBeam << std::endl;
298  }
299  }
300  }
301 
307  CandMap candMapT;
308 
309  unsigned int colSize = initAssociation(event, candMapT);
310 
312  Results results(colSize);
313 
315  std::vector<reco::IsoDeposit::Vetos*> vetoDeps(theDepositConfs.size(), nullptr);
316 
317  if (colSize != 0) {
318  if (theRemoveOtherVetos) {
319  initVetos(theBeam, vetoDeps, candMapT);
320  }
321 
323  for (unsigned int muI = 0; muI < colSize; ++muI) {
324  results[muI] = theIsolator->result(candMapT.get()[muI].second, *(candMapT.get()[muI].first));
325 
326  if (results[muI].typeF() != theIsolator->resultType()) {
327  edm::LogError("MuonIsolationProducers") << "Failed to get result from the isolator";
328  }
329  }
330  }
331 
332  LogDebug(metname) << "Ready to write out results of size " << results.size();
333  writeOut(event, candMapT, results);
334 
335  for (unsigned int iDep = 0; iDep < vetoDeps.size(); ++iDep) {
337  if (vetoDeps[iDep]) {
338  delete vetoDeps[iDep];
339  vetoDeps[iDep] = nullptr;
340  }
341  }
342 }
const Point & position() const
position
Definition: BeamSpot.h:59
const std::string metname
void initVetos(reco::TrackBase::Point const &theBeam, std::vector< reco::IsoDeposit::Vetos *> &vetos, CandMap &candMap) const
std::vector< DepositConf > theDepositConfs
bool theRemoveOtherVetos
choose which muon vetos should be removed from all deposits
virtual Result result(const DepositContainer &deposits, const edm::Event *=nullptr) const =0
Compute and return the isolation variable.
Log< level::Error, false > LogError
#define LogTrace(id)
Isolator * theIsolator
the isolator
std::string theBeamlineOption
beam spot
math::XYZPoint Point
point in the space
Definition: TrackBase.h:80
virtual ResultType resultType() const =0
void writeOut(edm::Event &event, const CandMap &candMap, const Results &results) const
choose which result type to write here
unsigned int initAssociation(edm::Event &event, CandMap &candMapT) const
bool isValid() const
Definition: HandleBase.h:70
results
Definition: mysort.py:8
muisorhelper::CandMap< BT > CandMap
Definition: event.py:1
#define LogDebug(id)

◆ writeOut()

template<typename BT >
void MuIsolatorResultProducer< BT >::writeOut ( edm::Event event,
const CandMap candMap,
const Results results 
) const
inlineprivate

choose which result type to write here

Definition at line 137 of file MuIsolatorResultProducer.h.

References edmPickEvents::event, LogDebug, metname, mysort::results, and AlCaHLTBitMon_QueryRunRegistry::string.

139  {
140  std::string metname = "RecoMuon|MuonIsolationProducers";
141  LogDebug(metname) << "Before calling writeOutMap with result type " << theIsolator->resultType();
142 
144  writeOutImpl<int>(event, candMapT, results);
146  writeOutImpl<float>(event, candMapT, results);
148  writeOutImpl<bool>(event, candMapT, results);
149 }
const std::string metname
Isolator * theIsolator
the isolator
virtual ResultType resultType() const =0
results
Definition: mysort.py:8
#define LogDebug(id)

◆ writeOutImpl()

template<typename BT >
template<typename RT >
void MuIsolatorResultProducer< BT >::writeOutImpl ( edm::Event event,
const CandMap candMapT,
const Results results 
) const
inlineprivate

actually do the writing here

make an output vec of what's to be written with a concrete type

fill/insert of non-empty values only

Definition at line 116 of file MuIsolatorResultProducer.h.

References trigObjTnPSource_cfi::filler, muisorhelper::CandMap< BT >::get(), muisorhelper::CandMap< BT >::handle(), mps_fire::i, eostools::move(), and mysort::results.

118  {
120  std::vector<RT> resV(results.size());
121  for (unsigned int i = 0; i < resV.size(); ++i)
122  resV[i] = results[i].val<RT>();
123  auto outMap = std::make_unique<edm::ValueMap<RT>>();
124  typename edm::ValueMap<RT>::Filler filler(*outMap);
125 
127  if (!candMapT.get().empty()) {
128  filler.insert(candMapT.handle(), resV.begin(), resV.end());
129  filler.fill();
130  }
131 
132  event.put(std::move(outMap));
133 }
results
Definition: mysort.py:8
def move(src, dest)
Definition: eostools.py:511

Member Data Documentation

◆ theBeamlineOption

template<typename BT = reco::Candidate>
std::string MuIsolatorResultProducer< BT >::theBeamlineOption
private

◆ theBeamSpotLabel

template<typename BT = reco::Candidate>
edm::InputTag MuIsolatorResultProducer< BT >::theBeamSpotLabel
private

◆ theConfig

template<typename BT = reco::Candidate>
edm::ParameterSet MuIsolatorResultProducer< BT >::theConfig
private

Definition at line 97 of file MuIsolatorResultProducer.h.

◆ theDepositConfs

template<typename BT = reco::Candidate>
std::vector<DepositConf> MuIsolatorResultProducer< BT >::theDepositConfs
private

◆ theIsolator

template<typename BT = reco::Candidate>
Isolator* MuIsolatorResultProducer< BT >::theIsolator
private

the isolator

Definition at line 105 of file MuIsolatorResultProducer.h.

Referenced by MuIsolatorResultProducer< BT >::MuIsolatorResultProducer().

◆ theRemoveOtherVetos

template<typename BT = reco::Candidate>
bool MuIsolatorResultProducer< BT >::theRemoveOtherVetos
private

choose which muon vetos should be removed from all deposits

Definition at line 101 of file MuIsolatorResultProducer.h.

Referenced by MuIsolatorResultProducer< BT >::MuIsolatorResultProducer().

◆ theResultType

template<typename BT = reco::Candidate>
ResultType MuIsolatorResultProducer< BT >::theResultType
private

◆ theVetoCuts

template<typename BT = reco::Candidate>
VetoCuts MuIsolatorResultProducer< BT >::theVetoCuts
private