CMS 3D CMS Logo

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

#include <L2MuonSeedGenerator.h>

Inheritance diagram for L2MuonSeedGenerator:
edm::stream::EDProducer<>

Public Member Functions

 L2MuonSeedGenerator (const edm::ParameterSet &)
 Constructor. More...
 
void produce (edm::Event &, const edm::EventSetup &) override
 
 ~L2MuonSeedGenerator () override
 Destructor. More...
 
- 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

const TrajectorySeedassociateOfflineSeedToL1 (edm::Handle< edm::View< TrajectorySeed > > &, std::vector< int > &, TrajectoryStateOnSurface &)
 

Private Attributes

edm::EDGetTokenT< L1MuGMTReadoutCollectiongmtToken_
 
edm::EDGetTokenT< l1extra::L1MuonParticleCollectionmuCollToken_
 
edm::EDGetTokenT< edm::View< TrajectorySeed > > offlineSeedToken_
 
MeasurementEstimatortheEstimator
 
edm::InputTag theL1GMTReadoutCollection
 
const double theL1MaxEta
 
const double theL1MinPt
 
const unsigned theL1MinQuality
 
edm::InputTag theOfflineSeedLabel
 
std::string thePropagatorName
 
MuonServiceProxytheService
 the event setup proxy, it takes care the services update More...
 
edm::InputTag theSource
 
const bool useOfflineSeed
 
const bool useUnassociatedL1
 

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

L2 muon seed generator: Transform the L1 informations in seeds for the L2 muon reconstruction

Author
A.Everett, R.Bellan, J. Alcaraz

ORCA's author: N. Neumeister

L2 muon seed generator: Transform the L1 informations in seeds for the L2 muon reconstruction

Author
A.Everett, R.Bellan

ORCA's author: N. Neumeister

Definition at line 54 of file L2MuonSeedGenerator.h.

Constructor & Destructor Documentation

◆ L2MuonSeedGenerator()

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

Constructor.

Definition at line 44 of file L2MuonSeedGenerator.cc.

45  : theSource(iConfig.getParameter<InputTag>("InputObjects")),
46  theL1GMTReadoutCollection(iConfig.getParameter<InputTag>("GMTReadoutCollection")),
47  thePropagatorName(iConfig.getParameter<string>("Propagator")),
48  theL1MinPt(iConfig.getParameter<double>("L1MinPt")),
49  theL1MaxEta(iConfig.getParameter<double>("L1MaxEta")),
50  theL1MinQuality(iConfig.getParameter<unsigned int>("L1MinQuality")),
51  useOfflineSeed(iConfig.getUntrackedParameter<bool>("UseOfflineSeed", false)),
52  useUnassociatedL1(iConfig.existsAs<bool>("UseUnassociatedL1") ? iConfig.getParameter<bool>("UseUnassociatedL1")
53  : true) {
54  gmtToken_ = consumes<L1MuGMTReadoutCollection>(theL1GMTReadoutCollection);
55  muCollToken_ = consumes<L1MuonParticleCollection>(theSource);
56 
57  if (useOfflineSeed) {
58  theOfflineSeedLabel = iConfig.getUntrackedParameter<InputTag>("OfflineSeedLabel");
59  offlineSeedToken_ = consumes<edm::View<TrajectorySeed> >(theOfflineSeedLabel);
60  }
61 
62  // service parameters
63  ParameterSet serviceParameters = iConfig.getParameter<ParameterSet>("ServiceParameters");
64 
65  // the services
66  theService = new MuonServiceProxy(serviceParameters, consumesCollector());
67 
68  // the estimator
70 
71  produces<L2MuonTrajectorySeedCollection>();
72 }

References Chi2MeasurementEstimator_cfi::Chi2MeasurementEstimator, edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), gmtToken_, muCollToken_, MuonServiceProxy_cff::MuonServiceProxy, offlineSeedToken_, theEstimator, theL1GMTReadoutCollection, theOfflineSeedLabel, theService, theSource, and useOfflineSeed.

◆ ~L2MuonSeedGenerator()

L2MuonSeedGenerator::~L2MuonSeedGenerator ( )
override

Destructor.

Definition at line 75 of file L2MuonSeedGenerator.cc.

75  {
76  if (theService)
77  delete theService;
78  if (theEstimator)
79  delete theEstimator;
80 }

References theEstimator, and theService.

Member Function Documentation

◆ associateOfflineSeedToL1()

const TrajectorySeed * L2MuonSeedGenerator::associateOfflineSeedToL1 ( edm::Handle< edm::View< TrajectorySeed > > &  offseeds,
std::vector< int > &  offseedMap,
TrajectoryStateOnSurface newTsos 
)
private

Definition at line 326 of file L2MuonSeedGenerator.cc.

328  {
329  const std::string metlabel = "Muon|RecoMuon|L2MuonSeedGenerator";
330  MuonPatternRecoDumper debugtmp;
331 
332  edm::View<TrajectorySeed>::const_iterator offseed, endOffseed = offseeds->end();
333  const TrajectorySeed* selOffseed = nullptr;
334  double bestDr = 99999.;
335  unsigned int nOffseed(0);
336  int lastOffseed(-1);
337 
338  for (offseed = offseeds->begin(); offseed != endOffseed; ++offseed, ++nOffseed) {
339  if (offseedMap[nOffseed] != 0)
340  continue;
341  GlobalPoint glbPos = theService->trackingGeometry()
342  ->idToDet(offseed->startingState().detId())
343  ->surface()
344  .toGlobal(offseed->startingState().parameters().position());
345  GlobalVector glbMom = theService->trackingGeometry()
346  ->idToDet(offseed->startingState().detId())
347  ->surface()
348  .toGlobal(offseed->startingState().parameters().momentum());
349 
350  // Preliminary check
351  double preDr = deltaR(newTsos.globalPosition().eta(), newTsos.globalPosition().phi(), glbPos.eta(), glbPos.phi());
352  if (preDr > 1.0)
353  continue;
354 
355  const FreeTrajectoryState offseedFTS(
356  glbPos, glbMom, offseed->startingState().parameters().charge(), &*theService->magneticField());
357  TrajectoryStateOnSurface offseedTsos =
358  theService->propagator(thePropagatorName)->propagate(offseedFTS, newTsos.surface());
359  LogDebug(metlabel) << "Offline seed info: Det and State" << std::endl;
360  LogDebug(metlabel) << debugtmp.dumpMuonId(offseed->startingState().detId()) << std::endl;
361  //LogDebug(metlabel) << "(x, y, z) = (" << newTSOS.globalPosition().x() << ", "
362  // << newTSOS.globalPosition().y() << ", " << newTSOS.globalPosition().z() << ")" << std::endl;
363  LogDebug(metlabel) << "pos: (r=" << offseedFTS.position().mag() << ", phi=" << offseedFTS.position().phi()
364  << ", eta=" << offseedFTS.position().eta() << ")" << std::endl;
365  LogDebug(metlabel) << "mom: (q*pt=" << offseedFTS.charge() * offseedFTS.momentum().perp()
366  << ", phi=" << offseedFTS.momentum().phi() << ", eta=" << offseedFTS.momentum().eta() << ")"
367  << std::endl
368  << std::endl;
369  //LogDebug(metlabel) << debugtmp.dumpFTS(offseedFTS) << std::endl;
370 
371  if (offseedTsos.isValid()) {
372  LogDebug(metlabel) << "Offline seed info after propagation to L1 layer:" << std::endl;
373  //LogDebug(metlabel) << "(x, y, z) = (" << offseedTsos.globalPosition().x() << ", "
374  // << offseedTsos.globalPosition().y() << ", " << offseedTsos.globalPosition().z() << ")" << std::endl;
375  LogDebug(metlabel) << "pos: (r=" << offseedTsos.globalPosition().mag()
376  << ", phi=" << offseedTsos.globalPosition().phi()
377  << ", eta=" << offseedTsos.globalPosition().eta() << ")" << std::endl;
378  LogDebug(metlabel) << "mom: (q*pt=" << offseedTsos.charge() * offseedTsos.globalMomentum().perp()
379  << ", phi=" << offseedTsos.globalMomentum().phi()
380  << ", eta=" << offseedTsos.globalMomentum().eta() << ")" << std::endl
381  << std::endl;
382  //LogDebug(metlabel) << debugtmp.dumpTSOS(offseedTsos) << std::endl;
383  double newDr = deltaR(newTsos.globalPosition().eta(),
384  newTsos.globalPosition().phi(),
385  offseedTsos.globalPosition().eta(),
386  offseedTsos.globalPosition().phi());
387  LogDebug(metlabel) << " -- DR = " << newDr << std::endl;
388  if (newDr < 0.3 && newDr < bestDr) {
389  LogDebug(metlabel) << " --> OK! " << newDr << std::endl << std::endl;
390  selOffseed = &*offseed;
391  bestDr = newDr;
392  offseedMap[nOffseed] = 1;
393  if (lastOffseed > -1)
394  offseedMap[lastOffseed] = 0;
395  lastOffseed = nOffseed;
396  } else {
397  LogDebug(metlabel) << " --> Rejected. " << newDr << std::endl << std::endl;
398  }
399  } else {
400  LogDebug(metlabel) << "Invalid offline seed TSOS after propagation!" << std::endl << std::endl;
401  }
402  }
403 
404  return selOffseed;
405 }

References edm::View< T >::begin(), PbPb_ZMuSkimMuonDPG_cff::deltaR, MuonPatternRecoDumper::dumpMuonId(), PV3DBase< T, PVType, FrameType >::eta(), TrajectoryStateOnSurface::globalPosition(), LogDebug, PV3DBase< T, PVType, FrameType >::phi(), Geom::Phi< T1, Range >::phi(), AlCaHLTBitMon_QueryRunRegistry::string, TrajectoryStateOnSurface::surface(), thePropagatorName, and theService.

Referenced by produce().

◆ produce()

void L2MuonSeedGenerator::produce ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
override

Definition at line 82 of file L2MuonSeedGenerator.cc.

82  {
83  const std::string metname = "Muon|RecoMuon|L2MuonSeedGenerator";
85 
86  auto output = std::make_unique<L2MuonTrajectorySeedCollection>();
87 
88  // Muon particles and GMT readout collection
90  iEvent.getByToken(gmtToken_, gmtrc_handle);
91  L1MuGMTReadoutRecord const& gmtrr = gmtrc_handle.product()->getRecord(0);
92 
94  iEvent.getByToken(muCollToken_, muColl);
95  LogTrace(metname) << "Number of muons " << muColl->size() << endl;
96 
97  edm::Handle<edm::View<TrajectorySeed> > offlineSeedHandle;
98  vector<int> offlineSeedMap;
99  if (useOfflineSeed) {
100  iEvent.getByToken(offlineSeedToken_, offlineSeedHandle);
101  LogTrace(metname) << "Number of offline seeds " << offlineSeedHandle->size() << endl;
102  offlineSeedMap = vector<int>(offlineSeedHandle->size(), 0);
103  }
104 
105  L1MuonParticleCollection::const_iterator it;
106  L1MuonParticleRef::key_type l1ParticleIndex = 0;
107 
108  for (it = muColl->begin(); it != muColl->end(); ++it, ++l1ParticleIndex) {
109  const L1MuGMTExtendedCand muonCand = (*it).gmtMuonCand();
110  unsigned int quality = 0;
111  bool valid_charge = false;
112  ;
113 
114  if (muonCand.empty()) {
115  LogWarning(metname) << "L2MuonSeedGenerator: WARNING, no L1MuGMTCand! " << endl;
116  LogWarning(metname) << "L2MuonSeedGenerator: this should make sense only within MC tests" << endl;
117  // FIXME! Temporary to handle the MC input
118  quality = 7;
119  valid_charge = true;
120  } else {
121  quality = muonCand.quality();
122  valid_charge = muonCand.charge_valid();
123  }
124 
125  float pt = (*it).pt();
126  float eta = (*it).eta();
127  float theta = 2 * atan(exp(-eta));
128  float phi = (*it).phi();
129  int charge = (*it).charge();
130  // Set charge=0 for the time being if the valid charge bit is zero
131  if (!valid_charge)
132  charge = 0;
133  bool barrel = !(*it).isForward();
134 
135  // Get a better eta and charge from regional information
136  // Phi has the same resolution in GMT than regionally, is not it?
137  if (!(muonCand.empty())) {
138  int idx = -1;
139  vector<L1MuRegionalCand> rmc;
140  if (!muonCand.isRPC()) {
141  idx = muonCand.getDTCSCIndex();
142  if (muonCand.isFwd())
143  rmc = gmtrr.getCSCCands();
144  else
145  rmc = gmtrr.getDTBXCands();
146  } else {
147  idx = muonCand.getRPCIndex();
148  if (muonCand.isFwd())
149  rmc = gmtrr.getFwdRPCCands();
150  else
151  rmc = gmtrr.getBrlRPCCands();
152  }
153  if (idx >= 0) {
154  eta = rmc[idx].etaValue();
155  //phi = rmc[idx].phiValue();
156  // Use this charge if the valid charge bit is zero
157  if (!valid_charge)
158  charge = rmc[idx].chargeValue();
159  }
160  }
161 
162  if (pt < theL1MinPt || fabs(eta) > theL1MaxEta)
163  continue;
164 
165  LogTrace(metname) << "New L2 Muon Seed";
166  LogTrace(metname) << "Pt = " << pt << " GeV/c";
167  LogTrace(metname) << "eta = " << eta;
168  LogTrace(metname) << "theta = " << theta << " rad";
169  LogTrace(metname) << "phi = " << phi << " rad";
170  LogTrace(metname) << "charge = " << charge;
171  LogTrace(metname) << "In Barrel? = " << barrel;
172 
173  if (quality <= theL1MinQuality)
174  continue;
175  LogTrace(metname) << "quality = " << quality;
176 
177  // Update the services
178  theService->update(iSetup);
179 
180  const DetLayer* detLayer = nullptr;
181  float radius = 0.;
182 
183  CLHEP::Hep3Vector vec(0., 1., 0.);
184  vec.setTheta(theta);
185  vec.setPhi(phi);
186 
187  // Get the det layer on which the state should be put
188  if (barrel) {
189  LogTrace(metname) << "The seed is in the barrel";
190 
191  // MB2
192  DetId id = DTChamberId(0, 2, 0);
193  detLayer = theService->detLayerGeometry()->idToLayer(id);
194  LogTrace(metname) << "L2 Layer: " << debug.dumpLayer(detLayer);
195 
196  const BoundSurface* sur = &(detLayer->surface());
197  const BoundCylinder* bc = dynamic_cast<const BoundCylinder*>(sur);
198 
199  radius = fabs(bc->radius() / sin(theta));
200 
201  LogTrace(metname) << "radius " << radius;
202 
203  if (pt < 3.5)
204  pt = 3.5;
205  } else {
206  LogTrace(metname) << "The seed is in the endcap";
207 
208  DetId id;
209  // ME2
210  if (theta < Geom::pi() / 2.)
211  id = CSCDetId(1, 2, 0, 0, 0);
212  else
213  id = CSCDetId(2, 2, 0, 0, 0);
214 
215  detLayer = theService->detLayerGeometry()->idToLayer(id);
216  LogTrace(metname) << "L2 Layer: " << debug.dumpLayer(detLayer);
217 
218  radius = fabs(detLayer->position().z() / cos(theta));
219 
220  if (pt < 1.0)
221  pt = 1.0;
222  }
223 
224  vec.setMag(radius);
225 
226  GlobalPoint pos(vec.x(), vec.y(), vec.z());
227 
228  GlobalVector mom(pt * cos(phi), pt * sin(phi), pt * cos(theta) / sin(theta));
229 
230  GlobalTrajectoryParameters param(pos, mom, charge, &*theService->magneticField());
232 
233  mat[0][0] = (0.25 / pt) * (0.25 / pt); // sigma^2(charge/abs_momentum)
234  if (!barrel)
235  mat[0][0] = (0.4 / pt) * (0.4 / pt);
236 
237  //Assign q/pt = 0 +- 1/pt if charge has been declared invalid
238  if (!valid_charge)
239  mat[0][0] = (1. / pt) * (1. / pt);
240 
241  mat[1][1] = 0.05 * 0.05; // sigma^2(lambda)
242  mat[2][2] = 0.2 * 0.2; // sigma^2(phi)
243  mat[3][3] = 20. * 20.; // sigma^2(x_transverse))
244  mat[4][4] = 20. * 20.; // sigma^2(y_transverse))
245 
247 
248  const FreeTrajectoryState state(param, error);
249 
250  LogTrace(metname) << "Free trajectory State from the parameters";
251  LogTrace(metname) << debug.dumpFTS(state);
252 
253  // Propagate the state on the MB2/ME2 surface
254  TrajectoryStateOnSurface tsos = theService->propagator(thePropagatorName)->propagate(state, detLayer->surface());
255 
256  LogTrace(metname) << "State after the propagation on the layer";
257  LogTrace(metname) << debug.dumpLayer(detLayer);
258  LogTrace(metname) << debug.dumpFTS(state);
259 
260  if (tsos.isValid()) {
261  // Get the compatible dets on the layer
262  std::vector<pair<const GeomDet*, TrajectoryStateOnSurface> > detsWithStates =
263  detLayer->compatibleDets(tsos, *theService->propagator(thePropagatorName), *theEstimator);
264  if (!detsWithStates.empty()) {
265  TrajectoryStateOnSurface newTSOS = detsWithStates.front().second;
266  const GeomDet* newTSOSDet = detsWithStates.front().first;
267 
268  LogTrace(metname) << "Most compatible det";
269  LogTrace(metname) << debug.dumpMuonId(newTSOSDet->geographicalId());
270 
271  LogDebug(metname) << "L1 info: Det and State:";
272  LogDebug(metname) << debug.dumpMuonId(newTSOSDet->geographicalId());
273 
274  if (newTSOS.isValid()) {
275  //LogDebug(metname) << "(x, y, z) = (" << newTSOS.globalPosition().x() << ", "
276  // << newTSOS.globalPosition().y() << ", " << newTSOS.globalPosition().z() << ")";
277  LogDebug(metname) << "pos: (r=" << newTSOS.globalPosition().mag()
278  << ", phi=" << newTSOS.globalPosition().phi() << ", eta=" << newTSOS.globalPosition().eta()
279  << ")";
280  LogDebug(metname) << "mom: (q*pt=" << newTSOS.charge() * newTSOS.globalMomentum().perp()
281  << ", phi=" << newTSOS.globalMomentum().phi() << ", eta=" << newTSOS.globalMomentum().eta()
282  << ")";
283 
284  //LogDebug(metname) << "State on it";
285  //LogDebug(metname) << debug.dumpTSOS(newTSOS);
286 
287  //PTrajectoryStateOnDet seedTSOS;
289 
290  if (useOfflineSeed) {
291  const TrajectorySeed* assoOffseed = associateOfflineSeedToL1(offlineSeedHandle, offlineSeedMap, newTSOS);
292 
293  if (assoOffseed != nullptr) {
294  PTrajectoryStateOnDet const& seedTSOS = assoOffseed->startingState();
295  TrajectorySeed::const_iterator tsci = assoOffseed->recHits().first, tscie = assoOffseed->recHits().second;
296  for (; tsci != tscie; ++tsci) {
297  container.push_back(*tsci);
298  }
299  output->push_back(
300  L2MuonTrajectorySeed(seedTSOS, container, alongMomentum, L1MuonParticleRef(muColl, l1ParticleIndex)));
301  } else {
302  if (useUnassociatedL1) {
303  // convert the TSOS into a PTSOD
304  PTrajectoryStateOnDet const& seedTSOS =
306  output->push_back(L2MuonTrajectorySeed(
307  seedTSOS, container, alongMomentum, L1MuonParticleRef(muColl, l1ParticleIndex)));
308  }
309  }
310  } else {
311  // convert the TSOS into a PTSOD
312  PTrajectoryStateOnDet const& seedTSOS =
314  output->push_back(
315  L2MuonTrajectorySeed(seedTSOS, container, alongMomentum, L1MuonParticleRef(muColl, l1ParticleIndex)));
316  }
317  }
318  }
319  }
320  }
321 
322  iEvent.put(std::move(output));
323 }

References alongMomentum, associateOfflineSeedToL1(), Reference_intrackfit_cff::barrel, ALCARECOTkAlJpsiMuMu_cff::charge, TrajectoryStateOnSurface::charge(), L1MuGMTCand::charge_valid(), GeometricSearchDet::compatibleDets(), funct::cos(), debug, L1MuGMTCand::empty(), relativeConstraints::error, PVValHelper::eta, PV3DBase< T, PVType, FrameType >::eta(), JetChargeProducer_cfi::exp, GeomDet::geographicalId(), L1MuGMTReadoutRecord::getBrlRPCCands(), L1MuGMTReadoutRecord::getCSCCands(), L1MuGMTReadoutRecord::getDTBXCands(), L1MuGMTExtendedCand::getDTCSCIndex(), L1MuGMTReadoutRecord::getFwdRPCCands(), L1MuGMTReadoutCollection::getRecord(), L1MuGMTExtendedCand::getRPCIndex(), TrajectoryStateOnSurface::globalMomentum(), TrajectoryStateOnSurface::globalPosition(), gmtToken_, triggerObjects_cff::id, charmTagsComputerCvsB_cfi::idx, iEvent, L1MuGMTExtendedCand::isFwd(), L1MuGMTExtendedCand::isRPC(), TrajectoryStateOnSurface::isValid(), LogDebug, LogTrace, PV3DBase< T, PVType, FrameType >::mag(), metname, eostools::move(), muCollToken_, offlineSeedToken_, convertSQLitetoXML_cfg::output, PV3DBase< T, PVType, FrameType >::perp(), trajectoryStateTransform::persistentState(), phi, PV3DBase< T, PVType, FrameType >::phi(), Geom::pi(), GeometricSearchDet::position(), edm::Handle< T >::product(), DiDispStaMuonMonitor_cfi::pt, edm::OwnVector< T, P >::push_back(), qcdUeDQM_cfi::quality, L1MuGMTCand::quality(), CosmicsPD_Skims::radius, DetId::rawId(), TrajectorySeed::recHits(), funct::sin(), TrajectorySeed::startingState(), AlCaHLTBitMon_QueryRunRegistry::string, GeometricSearchDet::surface(), theEstimator, theL1MaxEta, theL1MinPt, theL1MinQuality, thePropagatorName, theService, theta(), useOfflineSeed, useUnassociatedL1, and PV3DBase< T, PVType, FrameType >::z().

Member Data Documentation

◆ gmtToken_

edm::EDGetTokenT<L1MuGMTReadoutCollection> L2MuonSeedGenerator::gmtToken_
private

Definition at line 70 of file L2MuonSeedGenerator.h.

Referenced by L2MuonSeedGenerator(), and produce().

◆ muCollToken_

edm::EDGetTokenT<l1extra::L1MuonParticleCollection> L2MuonSeedGenerator::muCollToken_
private

Definition at line 71 of file L2MuonSeedGenerator.h.

Referenced by L2MuonSeedGenerator(), and produce().

◆ offlineSeedToken_

edm::EDGetTokenT<edm::View<TrajectorySeed> > L2MuonSeedGenerator::offlineSeedToken_
private

Definition at line 72 of file L2MuonSeedGenerator.h.

Referenced by L2MuonSeedGenerator(), and produce().

◆ theEstimator

MeasurementEstimator* L2MuonSeedGenerator::theEstimator
private

Definition at line 83 of file L2MuonSeedGenerator.h.

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

◆ theL1GMTReadoutCollection

edm::InputTag L2MuonSeedGenerator::theL1GMTReadoutCollection
private

Definition at line 66 of file L2MuonSeedGenerator.h.

Referenced by L2MuonSeedGenerator().

◆ theL1MaxEta

const double L2MuonSeedGenerator::theL1MaxEta
private

Definition at line 75 of file L2MuonSeedGenerator.h.

Referenced by produce().

◆ theL1MinPt

const double L2MuonSeedGenerator::theL1MinPt
private

Definition at line 74 of file L2MuonSeedGenerator.h.

Referenced by produce().

◆ theL1MinQuality

const unsigned L2MuonSeedGenerator::theL1MinQuality
private

Definition at line 76 of file L2MuonSeedGenerator.h.

Referenced by produce().

◆ theOfflineSeedLabel

edm::InputTag L2MuonSeedGenerator::theOfflineSeedLabel
private

Definition at line 67 of file L2MuonSeedGenerator.h.

Referenced by L2MuonSeedGenerator().

◆ thePropagatorName

std::string L2MuonSeedGenerator::thePropagatorName
private

Definition at line 68 of file L2MuonSeedGenerator.h.

Referenced by associateOfflineSeedToL1(), and produce().

◆ theService

MuonServiceProxy* L2MuonSeedGenerator::theService
private

the event setup proxy, it takes care the services update

Definition at line 81 of file L2MuonSeedGenerator.h.

Referenced by associateOfflineSeedToL1(), L2MuonSeedGenerator(), produce(), and ~L2MuonSeedGenerator().

◆ theSource

edm::InputTag L2MuonSeedGenerator::theSource
private

Definition at line 65 of file L2MuonSeedGenerator.h.

Referenced by L2MuonSeedGenerator().

◆ useOfflineSeed

const bool L2MuonSeedGenerator::useOfflineSeed
private

Definition at line 77 of file L2MuonSeedGenerator.h.

Referenced by L2MuonSeedGenerator(), and produce().

◆ useUnassociatedL1

const bool L2MuonSeedGenerator::useUnassociatedL1
private

Definition at line 78 of file L2MuonSeedGenerator.h.

Referenced by produce().

Vector3DBase
Definition: Vector3DBase.h:8
L1MuGMTReadoutRecord::getFwdRPCCands
std::vector< L1MuRegionalCand > getFwdRPCCands() const
get forward RPC candidates vector
Definition: L1MuGMTReadoutRecord.cc:173
L1MuGMTExtendedCand::isFwd
bool isFwd() const
get forward bit (true=forward, false=barrel)
Definition: L1MuGMTExtendedCand.h:77
Reference_intrackfit_cff.barrel
list barrel
Definition: Reference_intrackfit_cff.py:37
L1MuGMTExtendedCand
Definition: L1MuGMTExtendedCand.h:46
GeomDet
Definition: GeomDet.h:27
edm::Handle::product
T const * product() const
Definition: Handle.h:70
L2MuonSeedGenerator::theSource
edm::InputTag theSource
Definition: L2MuonSeedGenerator.h:65
l1extra::L1MuonParticleRef
edm::Ref< L1MuonParticleCollection > L1MuonParticleRef
Definition: L1MuonParticleFwd.h:32
DetLayer
Definition: DetLayer.h:21
MuonPatternRecoDumper::dumpMuonId
std::string dumpMuonId(const DetId &id) const
Definition: MuonPatternRecoDumper.cc:66
L2MuonSeedGenerator::theService
MuonServiceProxy * theService
the event setup proxy, it takes care the services update
Definition: L2MuonSeedGenerator.h:81
DiDispStaMuonMonitor_cfi.pt
pt
Definition: DiDispStaMuonMonitor_cfi.py:39
convertSQLitetoXML_cfg.output
output
Definition: convertSQLitetoXML_cfg.py:32
trajectoryStateTransform::persistentState
PTrajectoryStateOnDet persistentState(const TrajectoryStateOnSurface &ts, unsigned int detid)
Definition: TrajectoryStateTransform.cc:14
TrajectoryStateOnSurface::globalPosition
GlobalPoint globalPosition() const
Definition: TrajectoryStateOnSurface.h:65
pos
Definition: PixelAliasList.h:18
L1MuGMTReadoutRecord::getDTBXCands
std::vector< L1MuRegionalCand > getDTBXCands() const
get DT candidates vector
Definition: L1MuGMTReadoutRecord.cc:140
L2MuonSeedGenerator::thePropagatorName
std::string thePropagatorName
Definition: L2MuonSeedGenerator.h:68
TrajectoryStateOnSurface::charge
TrackCharge charge() const
Definition: TrajectoryStateOnSurface.h:68
TrajectorySeed::const_iterator
recHitContainer::const_iterator const_iterator
Definition: TrajectorySeed.h:20
charmTagsComputerCvsB_cfi.idx
idx
Definition: charmTagsComputerCvsB_cfi.py:108
Surface
Definition: Surface.h:36
GeometricSearchDet::compatibleDets
virtual std::vector< DetWithState > compatibleDets(const TrajectoryStateOnSurface &startingState, const Propagator &prop, const MeasurementEstimator &est) const
Definition: GeometricSearchDet.cc:35
edm::ParameterSet::getUntrackedParameter
T getUntrackedParameter(std::string const &, T const &) const
edm::ParameterSet::existsAs
bool existsAs(std::string const &parameterName, bool trackiness=true) const
checks if a parameter exists as a given type
Definition: ParameterSet.h:160
GeometricSearchDet::position
virtual const Surface::PositionType & position() const
Returns position of the surface.
Definition: GeometricSearchDet.h:31
edm::Handle
Definition: AssociativeIterator.h:50
relativeConstraints.error
error
Definition: relativeConstraints.py:53
MuonServiceProxy_cff.MuonServiceProxy
MuonServiceProxy
Definition: MuonServiceProxy_cff.py:15
L2MuonSeedGenerator::associateOfflineSeedToL1
const TrajectorySeed * associateOfflineSeedToL1(edm::Handle< edm::View< TrajectorySeed > > &, std::vector< int > &, TrajectoryStateOnSurface &)
Definition: L2MuonSeedGenerator.cc:326
L1MuGMTExtendedCand::getDTCSCIndex
unsigned getDTCSCIndex() const
get index of contributing DT/CSC muon
Definition: L1MuGMTExtendedCand.h:71
L1MuGMTExtendedCand::getRPCIndex
unsigned getRPCIndex() const
get index of contributing RPC muon
Definition: L1MuGMTExtendedCand.h:74
funct::sin
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
PV3DBase::z
T z() const
Definition: PV3DBase.h:61
DetId
Definition: DetId.h:17
TrajectoryStateOnSurface
Definition: TrajectoryStateOnSurface.h:16
debug
#define debug
Definition: HDRShower.cc:19
funct::cos
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
L1MuGMTReadoutRecord::getCSCCands
std::vector< L1MuRegionalCand > getCSCCands() const
get CSC candidates vector
Definition: L1MuGMTReadoutRecord.cc:151
CurvilinearTrajectoryError
Definition: CurvilinearTrajectoryError.h:27
L2MuonSeedGenerator::gmtToken_
edm::EDGetTokenT< L1MuGMTReadoutCollection > gmtToken_
Definition: L2MuonSeedGenerator.h:70
L1MuGMTReadoutRecord
Definition: L1MuGMTReadoutRecord.h:44
MuonPatternRecoDumper
Definition: MuonPatternRecoDumper.h:18
PVValHelper::eta
Definition: PVValidationHelpers.h:69
L1MuGMTCand::quality
unsigned int quality() const
get quality
Definition: L1MuGMTCand.h:90
Chi2MeasurementEstimator_cfi.Chi2MeasurementEstimator
Chi2MeasurementEstimator
Definition: Chi2MeasurementEstimator_cfi.py:3
Geom::pi
constexpr double pi()
Definition: Pi.h:31
theta
Geom::Theta< T > theta() const
Definition: Basic3DVectorLD.h:150
L2MuonSeedGenerator::theL1GMTReadoutCollection
edm::InputTag theL1GMTReadoutCollection
Definition: L2MuonSeedGenerator.h:66
GlobalTrajectoryParameters
Definition: GlobalTrajectoryParameters.h:15
L2MuonSeedGenerator::useOfflineSeed
const bool useOfflineSeed
Definition: L2MuonSeedGenerator.h:77
Point3DBase< float, GlobalTag >
PbPb_ZMuSkimMuonDPG_cff.deltaR
deltaR
Definition: PbPb_ZMuSkimMuonDPG_cff.py:63
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
edm::LogWarning
Definition: MessageLogger.h:141
ALCARECOTkAlJpsiMuMu_cff.charge
charge
Definition: ALCARECOTkAlJpsiMuMu_cff.py:47
GeomDet::geographicalId
DetId geographicalId() const
The label of this GeomDet.
Definition: GeomDet.h:64
LogDebug
#define LogDebug(id)
Definition: MessageLogger.h:670
edm::ParameterSet
Definition: ParameterSet.h:36
Geom::Phi::phi
T1 phi() const
Definition: Phi.h:78
L1MuGMTCand::charge_valid
bool charge_valid() const
is the charge valid ?
Definition: L1MuGMTCand.h:135
L2MuonSeedGenerator::offlineSeedToken_
edm::EDGetTokenT< edm::View< TrajectorySeed > > offlineSeedToken_
Definition: L2MuonSeedGenerator.h:72
L1MuGMTReadoutRecord::getBrlRPCCands
std::vector< L1MuRegionalCand > getBrlRPCCands() const
get barrel RPC candidates vector
Definition: L1MuGMTReadoutRecord.cc:162
CSCDetId
Definition: CSCDetId.h:26
L1MuGMTReadoutCollection::getRecord
L1MuGMTReadoutRecord const & getRecord(int bx=0) const
Definition: L1MuGMTReadoutCollection.h:55
PV3DBase::eta
T eta() const
Definition: PV3DBase.h:73
L2MuonSeedGenerator::muCollToken_
edm::EDGetTokenT< l1extra::L1MuonParticleCollection > muCollToken_
Definition: L2MuonSeedGenerator.h:71
iEvent
int iEvent
Definition: GenABIO.cc:224
edm::Ref< L1MuonParticleCollection >::key_type
std::remove_cv< typename std::remove_reference< argument_type >::type >::type key_type
Definition: Ref.h:164
L2MuonSeedGenerator::theEstimator
MeasurementEstimator * theEstimator
Definition: L2MuonSeedGenerator.h:83
DDAxes::phi
PV3DBase::mag
T mag() const
Definition: PV3DBase.h:64
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
L2MuonTrajectorySeed
Definition: L2MuonTrajectorySeed.h:17
TrajectoryStateOnSurface::globalMomentum
GlobalVector globalMomentum() const
Definition: TrajectoryStateOnSurface.h:66
L1MuGMTCand::empty
bool empty() const
is it an empty muon candidate?
Definition: L1MuGMTCand.h:61
eostools.move
def move(src, dest)
Definition: eostools.py:511
DetId::rawId
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:57
qcdUeDQM_cfi.quality
quality
Definition: qcdUeDQM_cfi.py:31
FreeTrajectoryState
Definition: FreeTrajectoryState.h:27
triggerObjects_cff.id
id
Definition: triggerObjects_cff.py:31
CosmicsPD_Skims.radius
radius
Definition: CosmicsPD_Skims.py:135
L2MuonSeedGenerator::theL1MinPt
const double theL1MinPt
Definition: L2MuonSeedGenerator.h:74
TrajectorySeed::recHits
range recHits() const
Definition: TrajectorySeed.h:52
GeometricSearchDet::surface
virtual const BoundSurface & surface() const =0
The surface of the GeometricSearchDet.
TrajectorySeed
Definition: TrajectorySeed.h:17
BoundCylinder
L2MuonSeedGenerator::theOfflineSeedLabel
edm::InputTag theOfflineSeedLabel
Definition: L2MuonSeedGenerator.h:67
edm::OwnVector::push_back
void push_back(D *&d)
Definition: OwnVector.h:326
TrajectoryStateOnSurface::surface
const SurfaceType & surface() const
Definition: TrajectoryStateOnSurface.h:78
edm::View::const_iterator
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
Definition: View.h:86
TrajectorySeed::startingState
PTrajectoryStateOnDet const & startingState() const
Definition: TrajectorySeed.h:55
L2MuonSeedGenerator::theL1MaxEta
const double theL1MaxEta
Definition: L2MuonSeedGenerator.h:75
L1MuGMTExtendedCand::isRPC
bool isRPC() const
get RPC bit (true=RPC, false = DT/CSC or matched)
Definition: L1MuGMTExtendedCand.h:80
DTChamberId
Definition: DTChamberId.h:14
LogTrace
#define LogTrace(id)
Definition: MessageLogger.h:671
PTrajectoryStateOnDet
Definition: PTrajectoryStateOnDet.h:10
JetChargeProducer_cfi.exp
exp
Definition: JetChargeProducer_cfi.py:6
AlgebraicSymMatrix55
ROOT::Math::SMatrix< double, 5, 5, ROOT::Math::MatRepSym< double, 5 > > AlgebraicSymMatrix55
Definition: AlgebraicROOTObjects.h:23
PV3DBase::perp
T perp() const
Definition: PV3DBase.h:69
L2MuonSeedGenerator::useUnassociatedL1
const bool useUnassociatedL1
Definition: L2MuonSeedGenerator.h:78
edm::InputTag
Definition: InputTag.h:15
alongMomentum
Definition: PropagationDirection.h:4
PV3DBase::phi
Geom::Phi< T > phi() const
Definition: PV3DBase.h:66
TrajectoryStateOnSurface::isValid
bool isValid() const
Definition: TrajectoryStateOnSurface.h:54
L2MuonSeedGenerator::theL1MinQuality
const unsigned theL1MinQuality
Definition: L2MuonSeedGenerator.h:76
edm::OwnVector< TrackingRecHit >
metname
const std::string metname
Definition: MuonSeedOrcaPatternRecognition.cc:43