CMS 3D CMS Logo

List of all members | Public Member Functions | Static Public Member Functions | Private Types | Private Member Functions | Private Attributes
MuonHLTSeedMVAClassifier Class Reference
Inheritance diagram for MuonHLTSeedMVAClassifier:
edm::stream::EDProducer<>

Public Member Functions

bool checkMVAFileConsistency (const std::string &weightsFileFullPath, bool isFromL1) const
 
 MuonHLTSeedMVAClassifier (const edm::ParameterSet &)
 
 ~MuonHLTSeedMVAClassifier () override=default
 
- 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
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 

Private Types

typedef std::pair< std::unique_ptr< const SeedMvaEstimator >, std::unique_ptr< const SeedMvaEstimator > > PairSeedMvaEstimator
 

Private Member Functions

double getSeedMva (const PairSeedMvaEstimator &pairMvaEstimator, const TrajectorySeed &seed, const GlobalVector &global_p, const l1t::MuonBxCollection &l1Muons, const reco::RecoChargedCandidateCollection &l2Muons)
 
void produce (edm::Event &, const edm::EventSetup &) override
 

Private Attributes

const double baseScore_
 
const bool doSort_
 
const double etaEdge_
 
const bool isFromL1_
 
const edm::EDGetTokenT< l1t::MuonBxCollectionl1MuonToken_
 
const edm::EDGetTokenT< reco::RecoChargedCandidateCollectionl2MuonToken_
 
const int minL1Qual_
 
const double mvaCutB_
 
const double mvaCutE_
 
PairSeedMvaEstimator mvaEstimator_
 
const edm::FileInPath mvaFileB_
 
const edm::FileInPath mvaFileE_
 
const std::vector< double > mvaScaleMeanB_
 
const std::vector< double > mvaScaleMeanE_
 
const std::vector< double > mvaScaleStdB_
 
const std::vector< double > mvaScaleStdE_
 
const int nSeedsMaxB_
 
const int nSeedsMaxE_
 
const bool rejectAll_
 
const edm::EDGetTokenT< TrajectorySeedCollectionseedToken_
 
const edm::ESGetToken< TrackerGeometry, TrackerDigiGeometryRecordtrackerGeometryToken_
 

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

Definition at line 44 of file MuonHLTSeedMVAClassifier.cc.

Member Typedef Documentation

◆ PairSeedMvaEstimator

typedef std::pair<std::unique_ptr<const SeedMvaEstimator>, std::unique_ptr<const SeedMvaEstimator> > MuonHLTSeedMVAClassifier::PairSeedMvaEstimator
private

Definition at line 62 of file MuonHLTSeedMVAClassifier.cc.

Constructor & Destructor Documentation

◆ MuonHLTSeedMVAClassifier()

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

Definition at line 126 of file MuonHLTSeedMVAClassifier.cc.

References checkMVAFileConsistency(), Exception, edm::FileInPath::fullPath(), isFromL1_, minL1Qual_, mvaEstimator_, mvaFileB_, mvaFileE_, mvaScaleMeanB_, mvaScaleMeanE_, mvaScaleStdB_, mvaScaleStdE_, and rejectAll_.

127  : seedToken_(consumes<TrajectorySeedCollection>(iConfig.getParameter<edm::InputTag>("src"))),
128  l1MuonToken_(consumes<l1t::MuonBxCollection>(iConfig.getParameter<edm::InputTag>("L1Muon"))),
129  l2MuonToken_(consumes<reco::RecoChargedCandidateCollection>(iConfig.getParameter<edm::InputTag>("L2Muon"))),
130  trackerGeometryToken_(esConsumes<TrackerGeometry, TrackerDigiGeometryRecord>()),
131  rejectAll_(iConfig.getParameter<bool>("rejectAll")),
132  isFromL1_(iConfig.getParameter<bool>("isFromL1")),
133  mvaFileB_(iConfig.getParameter<edm::FileInPath>("mvaFileB")),
134  mvaFileE_(iConfig.getParameter<edm::FileInPath>("mvaFileE")),
135  mvaScaleMeanB_(iConfig.getParameter<std::vector<double>>("mvaScaleMeanB")),
136  mvaScaleStdB_(iConfig.getParameter<std::vector<double>>("mvaScaleStdB")),
137  mvaScaleMeanE_(iConfig.getParameter<std::vector<double>>("mvaScaleMeanE")),
138  mvaScaleStdE_(iConfig.getParameter<std::vector<double>>("mvaScaleStdE")),
139  doSort_(iConfig.getParameter<bool>("doSort")),
140  nSeedsMaxB_(iConfig.getParameter<int>("nSeedsMaxB")),
141  nSeedsMaxE_(iConfig.getParameter<int>("nSeedsMaxE")),
142  etaEdge_(iConfig.getParameter<double>("etaEdge")),
143  mvaCutB_(iConfig.getParameter<double>("mvaCutB")),
144  mvaCutE_(iConfig.getParameter<double>("mvaCutE")),
145  minL1Qual_(iConfig.getParameter<int>("minL1Qual")),
146  baseScore_(iConfig.getParameter<double>("baseScore")) {
147  const auto& mvaFileBPath = mvaFileB_.fullPath();
148  const auto& mvaFileEPath = mvaFileE_.fullPath();
149 
150  if (!checkMVAFileConsistency(mvaFileBPath, isFromL1_) || !checkMVAFileConsistency(mvaFileEPath, isFromL1_)) {
151  throw cms::Exception("ConfigurationError") << " MVA files appear to be not consistent with the value of isFromL1 "
152  "parameter.\n Please check your configuration.";
153  }
154 
155  if (!rejectAll_) {
156  mvaEstimator_ = std::make_pair(
157  std::make_unique<SeedMvaEstimator>(mvaFileB_, mvaScaleMeanB_, mvaScaleStdB_, isFromL1_, minL1Qual_),
158  std::make_unique<SeedMvaEstimator>(mvaFileE_, mvaScaleMeanE_, mvaScaleStdE_, isFromL1_, minL1Qual_));
159  }
160 
161  produces<TrajectorySeedCollection>();
162 }
T getParameter(std::string const &) const
Definition: ParameterSet.h:307
std::string fullPath() const
Definition: FileInPath.cc:161
const std::vector< double > mvaScaleStdB_
const std::vector< double > mvaScaleMeanB_
const edm::ESGetToken< TrackerGeometry, TrackerDigiGeometryRecord > trackerGeometryToken_
const edm::EDGetTokenT< l1t::MuonBxCollection > l1MuonToken_
bool checkMVAFileConsistency(const std::string &weightsFileFullPath, bool isFromL1) const
PairSeedMvaEstimator mvaEstimator_
const std::vector< double > mvaScaleMeanE_
const std::vector< double > mvaScaleStdE_
const edm::EDGetTokenT< TrajectorySeedCollection > seedToken_
const edm::EDGetTokenT< reco::RecoChargedCandidateCollection > l2MuonToken_

◆ ~MuonHLTSeedMVAClassifier()

MuonHLTSeedMVAClassifier::~MuonHLTSeedMVAClassifier ( )
overridedefault

Member Function Documentation

◆ checkMVAFileConsistency()

bool MuonHLTSeedMVAClassifier::checkMVAFileConsistency ( const std::string &  weightsFileFullPath,
bool  isFromL1 
) const

Definition at line 94 of file MuonHLTSeedMVAClassifier.cc.

References MillePedeFileConverter_cfg::e, reco::details::hasEnding(), HLT_2024v13_cff::isFromL1, LogTrace, and dqmiodumpmetadata::n.

Referenced by MuonHLTSeedMVAClassifier().

95  {
96  tinyxml2::XMLDocument xmlDoc;
97  if (reco::details::hasEnding(weightsFileFullPath, ".xml")) {
98  xmlDoc.LoadFile(weightsFileFullPath.c_str());
99  } else {
100  edm::LogError("MuonHLTSeedMVAClassifier") << "unsupported file extension, it should be a .xml file!";
101  return false;
102  }
103  tinyxml2::XMLElement* root = xmlDoc.FirstChildElement("MethodSetup");
104  if (root == nullptr) {
105  edm::LogError("MuonHLTSeedMVAClassifier") << "could not retrieve the MethodSetup node from XML file!";
106  return false;
107  }
108 
109  const auto& vars = root->FirstChildElement("Variables");
110  size_t n = 0;
111  if (vars != nullptr) {
112  for (tinyxml2::XMLElement* e = vars->FirstChildElement("Variable"); e != nullptr;
113  e = e->NextSiblingElement("Variable")) {
114  ++n;
115  }
116  } else {
117  edm::LogError("MuonHLTSeedMVAClassifier") << "could not retrieve the Variables node from XML file!";
118  return false;
119  }
120 
121  LogTrace("MuonHLTSeedMVAClassifier") << "MVA file:" << weightsFileFullPath.c_str() << " n Var:" << n;
122  bool condition = (isFromL1 && (n == inputIndexes::kLastL1)) || (!isFromL1 && (n == inputIndexes::kLastL2));
123  return condition;
124 }
bool hasEnding(std::string const &fullString, std::string const &ending)
vars
Definition: DeepTauIdBase.h:60
Log< level::Error, false > LogError
#define LogTrace(id)

◆ fillDescriptions()

void MuonHLTSeedMVAClassifier::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 279 of file MuonHLTSeedMVAClassifier.cc.

References edm::ConfigurationDescriptions::add(), submitPVResolutionJobs::desc, and ProducerED_cfi::InputTag.

279  {
281  desc.add<edm::InputTag>("src", edm::InputTag("hltIter2IterL3MuonPixelSeeds", ""));
282  desc.add<edm::InputTag>("L1Muon", edm::InputTag("hltGtStage2Digis", "Muon"));
283  desc.add<edm::InputTag>("L2Muon", edm::InputTag("hltL2MuonCandidates", ""));
284 
285  desc.add<bool>("rejectAll", false);
286  desc.add<bool>("isFromL1", false);
287 
288  desc.add<edm::FileInPath>("mvaFileB",
289  edm::FileInPath("RecoMuon/TrackerSeedGenerator/data/xgb_Run3_Iter2FromL1Seeds_barrel.xml"));
290  desc.add<edm::FileInPath>("mvaFileE",
291  edm::FileInPath("RecoMuon/TrackerSeedGenerator/data/xgb_Run3_Iter2FromL1Seeds_endcap.xml"));
292  desc.add<std::vector<double>>("mvaScaleMeanB", {0., 0., 0., 0., 0., 0., 0., 0.});
293  desc.add<std::vector<double>>("mvaScaleStdB", {1., 1., 1., 1., 1., 1., 1., 1.});
294  desc.add<std::vector<double>>("mvaScaleMeanE", {0., 0., 0., 0., 0., 0., 0., 0.});
295  desc.add<std::vector<double>>("mvaScaleStdE", {1., 1., 1., 1., 1., 1., 1., 1.});
296 
297  desc.add<bool>("doSort", false);
298  desc.add<int>("nSeedsMaxB", 1e6);
299  desc.add<int>("nSeedsMaxE", 1e6);
300 
301  desc.add<double>("etaEdge", 1.2);
302  desc.add<double>("mvaCutB", -1.);
303  desc.add<double>("mvaCutE", -1.);
304 
305  desc.add<int>("minL1Qual", 7);
306  desc.add<double>("baseScore", 0.5);
307 
308  descriptions.add("MuonHLTSeedMVAClassifier", desc);
309 }
void add(std::string const &label, ParameterSetDescription const &psetDescription)

◆ getSeedMva()

double MuonHLTSeedMVAClassifier::getSeedMva ( const PairSeedMvaEstimator pairMvaEstimator,
const TrajectorySeed seed,
const GlobalVector global_p,
const l1t::MuonBxCollection l1Muons,
const reco::RecoChargedCandidateCollection l2Muons 
)
private

Definition at line 263 of file MuonHLTSeedMVAClassifier.cc.

References funct::abs(), baseScore_, PV3DBase< T, PVType, FrameType >::eta(), etaEdge_, beam_dqm_sourceclient-live_cfg::mva, and fileCollector::seed.

Referenced by produce().

267  {
268  double mva = 0.;
269  if (std::abs(global_p.eta()) < etaEdge_) {
270  mva = pairMvaEstimator.first->computeMva(seed, global_p, l1Muons, l2Muons);
271  } else {
272  mva = pairMvaEstimator.second->computeMva(seed, global_p, l1Muons, l2Muons);
273  }
274 
275  return (mva + baseScore_);
276 }
T eta() const
Definition: PV3DBase.h:73
Abs< T >::type abs(const T &t)
Definition: Abs.h:22

◆ produce()

void MuonHLTSeedMVAClassifier::produce ( edm::Event iEvent,
const edm::EventSetup iEventSetup 
)
overrideprivate

Definition at line 165 of file MuonHLTSeedMVAClassifier.cc.

References funct::abs(), doSort_, PV3DBase< T, PVType, FrameType >::eta(), etaEdge_, JetChargeProducer_cfi::exp, edm::EventSetup::getData(), getSeedMva(), mps_fire::i, TrackerGeometry::idToDet(), iEvent, l1MuonToken_, l2MuonToken_, eostools::move(), beam_dqm_sourceclient-live_cfg::mva, mvaCutB_, mvaCutE_, mvaEstimator_, nSeedsMaxB_, nSeedsMaxE_, rejectAll_, mps_fire::result, offlineSlimmedPrimaryVertices_cfi::score, fileCollector::seed, HLT_2024v13_cff::seeds, seedToken_, jetUpdater_cfi::sort, sortByMvaScore(), GeomDet::toGlobal(), trackerGeometryToken_, and mitigatedMETSequence_cff::U.

165  {
166  auto result = std::make_unique<TrajectorySeedCollection>();
167 
168  if (rejectAll_) {
169  iEvent.put(std::move(result));
170  return;
171  }
172 
173  if (doSort_ && nSeedsMaxB_ <= 0 && nSeedsMaxE_ <= 0) {
174  iEvent.put(std::move(result));
175  return;
176  }
177 
178  if (!doSort_ && mvaCutB_ > 1. && mvaCutE_ > 1.) {
179  iEvent.put(std::move(result));
180  return;
181  }
182 
184  const l1t::MuonBxCollection& l1Muons = iEvent.get(l1MuonToken_);
186  const TrackerGeometry& trkGeom = iEventSetup.getData(trackerGeometryToken_);
187 
188  std::vector<std::pair<unsigned, double>> pairSeedIdxMvaScoreB = {};
189  std::vector<std::pair<unsigned, double>> pairSeedIdxMvaScoreE = {};
190  for (auto& seed : seeds) {
191  const GlobalVector global_p =
192  trkGeom.idToDet(seed.startingState().detId())->surface().toGlobal(seed.startingState().parameters().momentum());
193 
194  bool isB = (std::abs(global_p.eta()) < etaEdge_);
195 
196  if (doSort_) {
197  if (isB) {
198  if (nSeedsMaxB_ <= 0) {
199  continue;
200  }
201  } else {
202  if (nSeedsMaxE_ <= 0) {
203  continue;
204  }
205  }
206  } else {
207  if (isB) {
208  if (mvaCutB_ > 1.0) {
209  continue;
210  } else if (mvaCutB_ <= 0.) {
211  result->emplace_back(seed);
212  continue;
213  }
214  } else {
215  if (mvaCutE_ > 1.0) {
216  continue;
217  } else if (mvaCutE_ <= 0.) {
218  result->emplace_back(seed);
219  continue;
220  }
221  }
222  }
223 
224  double mva = getSeedMva(mvaEstimator_, seed, global_p, l1Muons, l2Muons);
225 
226  double score = 1. / (1. + std::exp(-1. * mva));
227  bool passMva = isB ? score > mvaCutB_ : score > mvaCutE_;
228  if (!passMva)
229  continue;
230 
231  if (doSort_) {
232  if (isB)
233  pairSeedIdxMvaScoreB.push_back(std::make_pair(&seed - &seeds.at(0), score));
234  else
235  pairSeedIdxMvaScoreE.push_back(std::make_pair(&seed - &seeds.at(0), score));
236  } else {
237  result->emplace_back(seed);
238  }
239  }
240 
241  if (doSort_) {
242  std::sort(pairSeedIdxMvaScoreB.begin(), pairSeedIdxMvaScoreB.end(), sortByMvaScore);
243  std::sort(pairSeedIdxMvaScoreE.begin(), pairSeedIdxMvaScoreE.end(), sortByMvaScore);
244 
245  for (auto i = 0U; i < pairSeedIdxMvaScoreB.size(); ++i) {
246  if ((int)i == nSeedsMaxB_)
247  break;
248  const auto& seed(seeds.at(pairSeedIdxMvaScoreB.at(i).first));
249  result->emplace_back(seed);
250  }
251 
252  for (auto i = 0U; i < pairSeedIdxMvaScoreE.size(); ++i) {
253  if ((int)i == nSeedsMaxE_)
254  break;
255  const auto& seed(seeds.at(pairSeedIdxMvaScoreE.at(i).first));
256  result->emplace_back(seed);
257  }
258  }
259 
260  iEvent.put(std::move(result));
261 }
T const & getData(const ESGetToken< T, R > &iToken) const noexcept(false)
Definition: EventSetup.h:119
T eta() const
Definition: PV3DBase.h:73
double getSeedMva(const PairSeedMvaEstimator &pairMvaEstimator, const TrajectorySeed &seed, const GlobalVector &global_p, const l1t::MuonBxCollection &l1Muons, const reco::RecoChargedCandidateCollection &l2Muons)
const edm::ESGetToken< TrackerGeometry, TrackerDigiGeometryRecord > trackerGeometryToken_
int iEvent
Definition: GenABIO.cc:224
const edm::EDGetTokenT< l1t::MuonBxCollection > l1MuonToken_
std::vector< TrajectorySeed > TrajectorySeedCollection
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
const TrackerGeomDet * idToDet(DetId) const override
GlobalPoint toGlobal(const Local2DPoint &lp) const
Conversion to the global R.F. from the R.F. of the GeomDet.
Definition: GeomDet.h:49
std::vector< RecoChargedCandidate > RecoChargedCandidateCollection
collectin of RecoChargedCandidate objects
PairSeedMvaEstimator mvaEstimator_
bool sortByMvaScore(const std::pair< unsigned, double > &A, const std::pair< unsigned, double > &B)
def move(src, dest)
Definition: eostools.py:511
const edm::EDGetTokenT< TrajectorySeedCollection > seedToken_
const edm::EDGetTokenT< reco::RecoChargedCandidateCollection > l2MuonToken_

Member Data Documentation

◆ baseScore_

const double MuonHLTSeedMVAClassifier::baseScore_
private

Definition at line 85 of file MuonHLTSeedMVAClassifier.cc.

Referenced by getSeedMva().

◆ doSort_

const bool MuonHLTSeedMVAClassifier::doSort_
private

Definition at line 76 of file MuonHLTSeedMVAClassifier.cc.

Referenced by produce().

◆ etaEdge_

const double MuonHLTSeedMVAClassifier::etaEdge_
private

Definition at line 80 of file MuonHLTSeedMVAClassifier.cc.

Referenced by getSeedMva(), and produce().

◆ isFromL1_

const bool MuonHLTSeedMVAClassifier::isFromL1_
private

Definition at line 66 of file MuonHLTSeedMVAClassifier.cc.

Referenced by MuonHLTSeedMVAClassifier().

◆ l1MuonToken_

const edm::EDGetTokenT<l1t::MuonBxCollection> MuonHLTSeedMVAClassifier::l1MuonToken_
private

Definition at line 57 of file MuonHLTSeedMVAClassifier.cc.

Referenced by produce().

◆ l2MuonToken_

const edm::EDGetTokenT<reco::RecoChargedCandidateCollection> MuonHLTSeedMVAClassifier::l2MuonToken_
private

Definition at line 58 of file MuonHLTSeedMVAClassifier.cc.

Referenced by produce().

◆ minL1Qual_

const int MuonHLTSeedMVAClassifier::minL1Qual_
private

Definition at line 84 of file MuonHLTSeedMVAClassifier.cc.

Referenced by MuonHLTSeedMVAClassifier().

◆ mvaCutB_

const double MuonHLTSeedMVAClassifier::mvaCutB_
private

Definition at line 81 of file MuonHLTSeedMVAClassifier.cc.

Referenced by produce().

◆ mvaCutE_

const double MuonHLTSeedMVAClassifier::mvaCutE_
private

Definition at line 82 of file MuonHLTSeedMVAClassifier.cc.

Referenced by produce().

◆ mvaEstimator_

PairSeedMvaEstimator MuonHLTSeedMVAClassifier::mvaEstimator_
private

Definition at line 63 of file MuonHLTSeedMVAClassifier.cc.

Referenced by MuonHLTSeedMVAClassifier(), and produce().

◆ mvaFileB_

const edm::FileInPath MuonHLTSeedMVAClassifier::mvaFileB_
private

Definition at line 68 of file MuonHLTSeedMVAClassifier.cc.

Referenced by MuonHLTSeedMVAClassifier().

◆ mvaFileE_

const edm::FileInPath MuonHLTSeedMVAClassifier::mvaFileE_
private

Definition at line 69 of file MuonHLTSeedMVAClassifier.cc.

Referenced by MuonHLTSeedMVAClassifier().

◆ mvaScaleMeanB_

const std::vector<double> MuonHLTSeedMVAClassifier::mvaScaleMeanB_
private

Definition at line 71 of file MuonHLTSeedMVAClassifier.cc.

Referenced by MuonHLTSeedMVAClassifier().

◆ mvaScaleMeanE_

const std::vector<double> MuonHLTSeedMVAClassifier::mvaScaleMeanE_
private

Definition at line 73 of file MuonHLTSeedMVAClassifier.cc.

Referenced by MuonHLTSeedMVAClassifier().

◆ mvaScaleStdB_

const std::vector<double> MuonHLTSeedMVAClassifier::mvaScaleStdB_
private

Definition at line 72 of file MuonHLTSeedMVAClassifier.cc.

Referenced by MuonHLTSeedMVAClassifier().

◆ mvaScaleStdE_

const std::vector<double> MuonHLTSeedMVAClassifier::mvaScaleStdE_
private

Definition at line 74 of file MuonHLTSeedMVAClassifier.cc.

Referenced by MuonHLTSeedMVAClassifier().

◆ nSeedsMaxB_

const int MuonHLTSeedMVAClassifier::nSeedsMaxB_
private

Definition at line 77 of file MuonHLTSeedMVAClassifier.cc.

Referenced by produce().

◆ nSeedsMaxE_

const int MuonHLTSeedMVAClassifier::nSeedsMaxE_
private

Definition at line 78 of file MuonHLTSeedMVAClassifier.cc.

Referenced by produce().

◆ rejectAll_

const bool MuonHLTSeedMVAClassifier::rejectAll_
private

Definition at line 65 of file MuonHLTSeedMVAClassifier.cc.

Referenced by MuonHLTSeedMVAClassifier(), and produce().

◆ seedToken_

const edm::EDGetTokenT<TrajectorySeedCollection> MuonHLTSeedMVAClassifier::seedToken_
private

Definition at line 56 of file MuonHLTSeedMVAClassifier.cc.

Referenced by produce().

◆ trackerGeometryToken_

const edm::ESGetToken<TrackerGeometry, TrackerDigiGeometryRecord> MuonHLTSeedMVAClassifier::trackerGeometryToken_
private

Definition at line 59 of file MuonHLTSeedMVAClassifier.cc.

Referenced by produce().