CMS 3D CMS Logo

FastTSGFromPropagation.cc
Go to the documentation of this file.
2 
3 #include <memory>
4 
20 
23 // #include "RecoTracker/MeasurementDet/interface/TkStripMeasurementDet.h"
27 
30 
34 
43 
45 
46 using namespace std;
47 
49  : FastTSGFromPropagation(iConfig, nullptr, iC) {}
50 
54  : theCategory("FastSimulation|Muons|FastTSGFromPropagation"),
55  theTracker(),
56  theNavigation(),
57  theService(service),
58  theUpdator(),
59  theEstimator(),
60  theSigmaZ(0.0),
61  theConfig(iConfig),
62  theSimTrackCollectionToken_(
63  iC.consumes<edm::SimTrackContainer>(theConfig.getParameter<edm::InputTag>("SimTrackCollectionLabel"))),
64  recHitCombinationsToken_(
65  iC.consumes<FastTrackerRecHitCombinationCollection>(theConfig.getParameter<edm::InputTag>("HitProducer"))),
66  beamSpot_(iC.consumes<reco::BeamSpot>(iConfig.getParameter<edm::InputTag>("beamSpot"))),
67  theMeasurementTrackerEventToken_(
68  iC.consumes<MeasurementTrackerEvent>(iConfig.getParameter<edm::InputTag>("MeasurementTrackerEvent"))) {}
69 
70 FastTSGFromPropagation::~FastTSGFromPropagation() { LogTrace(theCategory) << " FastTSGFromPropagation dtor called "; }
71 
73  const TrackingRegion& region,
74  const TrackerTopology* tTopo,
75  std::vector<TrajectorySeed>& result) {
76  if (theResetMethod == "discrete")
77  getRescalingFactor(staMuon);
78 
79  TrajectoryStateOnSurface staState = outerTkState(staMuon);
80 
81  if (!staState.isValid()) {
82  LogTrace(theCategory) << "Error: initial state from L2 muon is invalid.";
83  return;
84  }
85 
86  LogTrace(theCategory) << "begin of trackerSeed:\n staState pos: " << staState.globalPosition()
87  << " mom: " << staState.globalMomentum() << "pos eta: " << staState.globalPosition().eta()
88  << "mom eta: " << staState.globalMomentum().eta();
89 
90  std::vector<const DetLayer*> nls = theNavigation->compatibleLayers(*(staState.freeState()), oppositeToMomentum);
91 
92  LogTrace(theCategory) << " compatible layers: " << nls.size();
93 
94  if (nls.empty())
95  return;
96 
97  int ndesLayer = 0;
98 
99  bool usePredictedState = false;
100 
101  if (theUpdateStateFlag) { //use updated states
102  std::vector<TrajectoryMeasurement> alltm;
103 
104  for (std::vector<const DetLayer*>::const_iterator inl = nls.begin(); inl != nls.end(); inl++, ndesLayer++) {
105  if ((*inl == nullptr))
106  break;
107  // if ( (inl != nls.end()-1 ) && ( (*inl)->subDetector() == GeomDetEnumerators::TEC ) && ( (*(inl+1))->subDetector() == GeomDetEnumerators::TOB ) ) continue;
108  alltm = findMeasurements(*inl, staState);
109  if ((!alltm.empty())) {
110  LogTrace(theCategory) << "final compatible layer: " << ndesLayer;
111  break;
112  }
113  }
114 
115  if (alltm.empty()) {
116  LogTrace(theCategory) << " NO Measurements Found: eta: " << staState.globalPosition().eta() << "pt "
117  << staState.globalMomentum().perp();
118  usePredictedState = true;
119  } else {
120  LogTrace(theCategory) << " Measurements for seeds: " << alltm.size();
121  std::stable_sort(alltm.begin(), alltm.end(), increasingEstimate());
122  if (alltm.size() > 5)
123  alltm.erase(alltm.begin() + 5, alltm.end());
124 
125  const edm::SimTrackContainer* simTracks = &(*theSimTracks);
126  TrajectorySeedHitCandidate theSeedHits;
127  std::vector<TrajectorySeedHitCandidate> outerHits;
128 
129  //std::vector<TrajectorySeed> tmpTS;
130  bool isMatch = false;
131  for (std::vector<TrajectoryMeasurement>::const_iterator itm = alltm.begin(); itm != alltm.end(); itm++) {
132  const TrajectoryStateOnSurface seedState = itm->predictedState();
133  double preY = seedState.globalPosition().y();
134 
135  // Check SimTrack
136  FreeTrajectoryState simtrack_trackerstate;
137  for (unsigned icomb = 0; icomb < recHitCombinations->size(); ++icomb) {
138  const auto& recHitCombination = (*recHitCombinations)[icomb];
139  if (recHitCombination.empty())
140  continue;
141  int32_t simTrackId = recHitCombination.back()->simTrackId(0);
142  const SimTrack& simtrack = (*simTracks)[simTrackId];
143 
145  simtrack.trackerSurfacePosition().y(),
146  simtrack.trackerSurfacePosition().z());
147  GlobalVector momentum(simtrack.trackerSurfaceMomentum().x(),
148  simtrack.trackerSurfaceMomentum().y(),
149  simtrack.trackerSurfaceMomentum().z());
150  int charge = (int)simtrack.charge();
151  GlobalTrajectoryParameters glb_parameters(
152  position, momentum, charge, &*theService->magneticField().product());
153  simtrack_trackerstate = FreeTrajectoryState(glb_parameters);
154 
155  unsigned int outerId = 0;
156  for (const auto& recHitRef : recHitCombination) {
157  theSeedHits = TrajectorySeedHitCandidate(recHitRef.get(), tTopo);
158  unsigned int id = theSeedHits.hit()->geographicalId().rawId();
159  if (preY < 0) {
160  if (id > outerId)
161  outerId = id;
162  } else {
163  if (id > outerId)
164  outerId = id;
165  }
166  }
167  for (const auto& recHitRef : recHitCombination) {
168  theSeedHits = TrajectorySeedHitCandidate(recHitRef.get(), tTopo);
169  if (itm->recHit()->hit()->geographicalId().rawId() == theSeedHits.hit()->geographicalId().rawId()) {
170  auto aTrackingRecHit = std::unique_ptr<TrackingRecHit>(theSeedHits.hit()->clone());
172  if (!recHit)
173  continue;
174  TrajectoryStateOnSurface updatedTSOS = updator()->update(seedState, *(recHit));
175  if (updatedTSOS.isValid() && passSelection(updatedTSOS)) {
177  container.push_back(recHit->hit()->clone());
179  TrajectorySeed ts = createSeed(updatedTSOS, container, recHit->geographicalId());
180  // check direction
181  const TrajectorySeed* aSeed = &ts;
182  PTrajectoryStateOnDet PTSOD = aSeed->startingState();
183 
184  const GeomDet* g = theGeometry->idToDet(PTSOD.detId());
186  PTSOD, &(g->surface()), &*theService->magneticField().product());
187  if (tsos.globalMomentum().basicVector() * seedState.globalMomentum().basicVector() < 0.)
188  continue;
189  result.push_back(ts);
190  isMatch = true;
191  }
192  }
193  }
194  }
195  }
196  if (!isMatch) {
197  // if there is no hits w.r.t. TM, find outermost hit
198  for (std::vector<TrajectoryMeasurement>::const_iterator itm = alltm.begin(); itm != alltm.end(); itm++) {
199  const TrajectoryStateOnSurface seedState = itm->predictedState();
200  double preY = seedState.globalPosition().y();
201 
202  // Check SimTrack
203  TrackingRecHit* aTrackingRecHit;
204  FreeTrajectoryState simtrack_trackerstate;
205 
206  for (unsigned icomb = 0; icomb < recHitCombinations->size(); ++icomb) {
207  const auto& recHitCombination = (*recHitCombinations)[icomb];
208  if (recHitCombination.empty())
209  continue;
210  int32_t simTrackId = recHitCombination.back()->simTrackId(0);
211  const SimTrack& simtrack = (*simTracks)[simTrackId];
212 
214  simtrack.trackerSurfacePosition().y(),
215  simtrack.trackerSurfacePosition().z());
216  GlobalVector momentum(simtrack.trackerSurfaceMomentum().x(),
217  simtrack.trackerSurfaceMomentum().y(),
218  simtrack.trackerSurfaceMomentum().z());
219  int charge = (int)simtrack.charge();
220  GlobalTrajectoryParameters glb_parameters(
221  position, momentum, charge, &*theService->magneticField().product());
222  simtrack_trackerstate = FreeTrajectoryState(glb_parameters);
223 
224  unsigned int outerId = 0;
225  for (const auto& recHitRef : recHitCombination) {
226  theSeedHits = TrajectorySeedHitCandidate(recHitRef.get(), tTopo);
227  unsigned int id = theSeedHits.hit()->geographicalId().rawId();
228  if (preY < 0) {
229  if (id > outerId)
230  outerId = id;
231  } else {
232  if (id > outerId)
233  outerId = id;
234  }
235  }
236  for (const auto& recHitRef : recHitCombination) {
237  theSeedHits = TrajectorySeedHitCandidate(recHitRef.get(), tTopo);
238  if (outerId == theSeedHits.hit()->geographicalId().rawId()) {
239  aTrackingRecHit = theSeedHits.hit()->clone();
241  if (!recHit)
242  continue;
243  TrajectoryStateOnSurface updatedTSOS = updator()->update(seedState, *(recHit));
244  if (updatedTSOS.isValid() && passSelection(updatedTSOS)) {
246  container.push_back(recHit->hit()->clone());
248  TrajectorySeed ts = createSeed(updatedTSOS, container, recHit->geographicalId());
249  // check direction
250  const TrajectorySeed* aSeed = &ts;
251  PTrajectoryStateOnDet PTSOD = aSeed->startingState();
252 
253  const GeomDet* g = theGeometry->idToDet(PTSOD.detId());
255  PTSOD, &(g->surface()), &*theService->magneticField().product());
256  if (tsos.globalMomentum().basicVector() * seedState.globalMomentum().basicVector() < 0.)
257  continue;
258  result.push_back(ts);
259  }
260  }
261  }
262  }
263  }
264  }
265 
266  /*
267  for( unsigned ir = 0; ir < tmpTS.size(); ir++ ) {
268  const BasicTrajectorySeed* aSeed = &((tmpTS)[ir]);
269  PTrajectoryStateOnDet PTSOD = aSeed->startingState();
270 
271  DetId seedDetId(PTSOD.detId());
272  const GeomDet * g = theGeometry->idToDet(seedDetId);
273  TrajectoryStateOnSurface tsos = trajectoryStateTransform::transientState(PTSOD, &(g->surface()), &*theService->magneticField().product());
274  cout << "tsos3 = " << tsos.globalMomentum() << endl;
275  if( _index == ir ) {
276  cout << "tsos4 = " << tsos.globalMomentum() << endl;
277  result.push_back(tmpTS[ir]);
278  }
279  }
280  */
281  LogTrace(theCategory) << "result: " << result.size();
282  return;
283  }
284  }
285 
286  if (!theUpdateStateFlag || usePredictedState) { //use predicted states
287  LogTrace(theCategory) << "use predicted state: ";
288  for (std::vector<const DetLayer*>::const_iterator inl = nls.begin(); inl != nls.end(); inl++) {
289  if (!result.empty() || *inl == nullptr) {
290  break;
291  }
292  std::vector<DetLayer::DetWithState> compatDets = (*inl)->compatibleDets(staState, *propagator(), *estimator());
293  LogTrace(theCategory) << " compatDets " << compatDets.size();
294  if (compatDets.empty())
295  continue;
296  TrajectorySeed ts = createSeed(compatDets.front().second, compatDets.front().first->geographicalId());
297  result.push_back(ts);
298  }
299  LogTrace(theCategory) << "result: " << result.size();
300  return;
301  }
302  return;
303 }
304 
306  theMaxChi2 = theConfig.getParameter<double>("MaxChi2");
307 
308  theFixedErrorRescaling = theConfig.getParameter<double>("ErrorRescaling");
309 
310  theFlexErrorRescaling = 1.0;
311 
313 
314  if (theResetMethod != "discrete" && theResetMethod != "fixed" && theResetMethod != "matrix") {
315  edm::LogError("FastTSGFromPropagation") << "Wrong error rescaling method: " << theResetMethod << "\n"
316  << "Possible choices are: discrete, fixed, matrix.\n"
317  << "Use discrete method" << std::endl;
318  theResetMethod = "discrete";
319  }
320 
321  theEstimator = std::make_unique<Chi2MeasurementEstimator>(theMaxChi2);
322 
323  theCacheId_MT = 0;
324 
325  theCacheId_TG = 0;
326 
328 
330 
331  theUseVertexStateFlag = theConfig.getParameter<bool>("UseVertexState");
332 
333  theUpdateStateFlag = theConfig.getParameter<bool>("UpdateState");
334 
335  theSelectStateFlag = theConfig.getParameter<bool>("SelectState");
336 
337  theUpdator = std::make_unique<KFUpdator>();
338 
339  theSigmaZ = theConfig.getParameter<double>("SigmaZ");
340 
342  if (theResetMethod == "matrix" && !errorMatrixPset.empty()) {
343  theAdjustAtIp = errorMatrixPset.getParameter<bool>("atIP");
344  theErrorMatrixAdjuster = std::make_unique<MuonErrorMatrix>(errorMatrixPset);
345  } else {
346  theAdjustAtIp = false;
347  theErrorMatrixAdjuster.reset();
348  }
349 
350  theService->eventSetup().get<TrackerRecoGeometryRecord>().get(theTracker);
351  theNavigation = std::make_unique<DirectTrackerNavigation>(theTracker);
352 
354  theService->eventSetup().get<TrackerDigiGeometryRecord>().get(geometry);
355  theGeometry = &(*geometry);
356 
357  theService->eventSetup().get<TransientRecHitRecord>().get("WithTrackAngle", theTTRHBuilder);
358 }
359 
361  iEvent.getByToken(beamSpot_, theBeamSpot);
362 
363  // retrieve the MC truth (SimTracks)
366 
367  unsigned long long newCacheId_MT = theService->eventSetup().get<CkfComponentsRecord>().cacheIdentifier();
368 
369  if (theUpdateStateFlag && newCacheId_MT != theCacheId_MT) {
370  LogTrace(theCategory) << "Measurment Tracker Geometry changed!";
371  theCacheId_MT = newCacheId_MT;
372  theService->eventSetup().get<CkfComponentsRecord>().get(theMeasTracker);
373  }
374 
375  if (theUpdateStateFlag) {
377  }
378 
379  bool trackerGeomChanged = false;
380 
381  unsigned long long newCacheId_TG = theService->eventSetup().get<TrackerRecoGeometryRecord>().cacheIdentifier();
382 
383  if (newCacheId_TG != theCacheId_TG) {
384  LogTrace(theCategory) << "Tracker Reco Geometry changed!";
385  theCacheId_TG = newCacheId_TG;
386  theService->eventSetup().get<TrackerRecoGeometryRecord>().get(theTracker);
387  trackerGeomChanged = true;
388  }
389 
390  if (trackerGeomChanged && theTracker.product()) {
391  theNavigation = std::make_unique<DirectTrackerNavigation>(theTracker);
392  }
393 }
394 
396  TrajectoryStateOnSurface innerTS;
397 
398  if (staMuon.first && staMuon.first->isValid()) {
399  if (staMuon.first->direction() == alongMomentum) {
400  innerTS = staMuon.first->firstMeasurement().updatedState();
401  } else if (staMuon.first->direction() == oppositeToMomentum) {
402  innerTS = staMuon.first->lastMeasurement().updatedState();
403  }
404  } else {
406  *(staMuon.second), *theService->trackingGeometry(), &*theService->magneticField());
407  }
408  //rescale the error
409  adjust(innerTS);
410 
411  return innerTS;
412 }
413 
416 
417  if (theUseVertexStateFlag && staMuon.second->pt() > 1.0) {
418  FreeTrajectoryState iniState =
419  trajectoryStateTransform::initialFreeState(*(staMuon.second), &*theService->magneticField());
420  //rescale the error at IP
421  adjust(iniState);
422 
423  StateOnTrackerBound fromInside(&*(theService->propagator("PropagatorWithMaterial")));
424  result = fromInside(iniState);
425  } else {
426  StateOnTrackerBound fromOutside(&*propagator());
427  result = fromOutside(innerState(staMuon));
428  }
429  return result;
430 }
431 
434  return createSeed(tsos, container, id);
435 }
436 
438  const edm::OwnVector<TrackingRecHit>& container,
439  const DetId& id) const {
441  return TrajectorySeed(seedTSOS, container, oppositeToMomentum);
442 }
443 
444 void FastTSGFromPropagation::validMeasurements(std::vector<TrajectoryMeasurement>& tms) const {
445  std::vector<TrajectoryMeasurement>::iterator tmsend = std::remove_if(tms.begin(), tms.end(), isInvalid());
446  tms.erase(tmsend, tms.end());
447  return;
448 }
449 
450 std::vector<TrajectoryMeasurement> FastTSGFromPropagation::findMeasurements(
451  const DetLayer* nl, const TrajectoryStateOnSurface& staState) const {
452  std::vector<TrajectoryMeasurement> result;
453 
454  std::vector<DetLayer::DetWithState> compatDets = nl->compatibleDets(staState, *propagator(), *estimator());
455  if (compatDets.empty())
456  return result;
457 
458  for (std::vector<DetLayer::DetWithState>::const_iterator idws = compatDets.begin(); idws != compatDets.end();
459  ++idws) {
460  if (idws->second.isValid() && (idws->first)) {
461  std::vector<TrajectoryMeasurement> tmptm =
462  theMeasTrackerEvent->idToDet(idws->first->geographicalId())
463  .fastMeasurements(idws->second, idws->second, *propagator(), *estimator());
464  //validMeasurements(tmptm);
465  // if ( tmptm.size() > 2 ) {
466  // std::stable_sort(tmptm.begin(),tmptm.end(),increasingEstimate());
467  // result.insert(result.end(),tmptm.begin(), tmptm.begin()+2);
468  // } else {
469  result.insert(result.end(), tmptm.begin(), tmptm.end());
470  // }
471  }
472  }
473 
474  return result;
475 }
476 
478  if (!theSelectStateFlag)
479  return true;
480  else {
481  if (theBeamSpot.isValid()) {
482  return ((fabs(zDis(tsos) - theBeamSpot->z0()) < theSigmaZ));
483 
484  } else {
485  return ((fabs(zDis(tsos)) < theSigmaZ));
486  // double theDxyCut = 100;
487  // return ( (zDis(tsos) < theSigmaZ) && (dxyDis(tsos) < theDxyCut) );
488  }
489  }
490 }
491 
493  return fabs(
494  (-tsos.globalPosition().x() * tsos.globalMomentum().y() + tsos.globalPosition().y() * tsos.globalMomentum().x()) /
495  tsos.globalMomentum().perp());
496 }
497 
499  return tsos.globalPosition().z() -
500  tsos.globalPosition().perp() * tsos.globalMomentum().z() / tsos.globalMomentum().perp();
501 }
502 
504  float pt = (staMuon.second)->pt();
505  if (pt < 13.0)
507  else if (pt < 30.0)
509  else
511  return;
512 }
513 
515  //rescale the error
516  if (theResetMethod == "discreate") {
517  state.rescaleError(theFlexErrorRescaling);
518  return;
519  }
520 
521  //rescale the error
522  if (theResetMethod == "fixed" || !theErrorMatrixAdjuster) {
523  state.rescaleError(theFixedErrorRescaling);
524  return;
525  }
526 
527  CurvilinearTrajectoryError oMat = state.curvilinearError();
528  CurvilinearTrajectoryError sfMat = theErrorMatrixAdjuster->get(state.momentum()); //FIXME with position
529  MuonErrorMatrix::multiply(oMat, sfMat);
530 
531  state = FreeTrajectoryState(state.parameters(), oMat);
532 }
533 
535  //rescale the error
536  if (theResetMethod == "discreate") {
537  state.rescaleError(theFlexErrorRescaling);
538  return;
539  }
540 
541  if (theResetMethod == "fixed" || !theErrorMatrixAdjuster) {
542  state.rescaleError(theFixedErrorRescaling);
543  return;
544  }
545 
546  CurvilinearTrajectoryError oMat = state.curvilinearError();
547  CurvilinearTrajectoryError sfMat = theErrorMatrixAdjuster->get(state.globalMomentum()); //FIXME with position
548  MuonErrorMatrix::multiply(oMat, sfMat);
549 
550  state =
551  TrajectoryStateOnSurface(state.weight(), state.globalParameters(), oMat, state.surface(), state.surfaceSide());
552 }
553 
555  unsigned int detid,
556  PTrajectoryStateOnDet& pts) const {
557  const AlgebraicSymMatrix55& m = ts.localError().matrix();
558  int dim = 5;
559  float localErrors[15];
560  int k = 0;
561  for (int i = 0; i < dim; ++i) {
562  for (int j = 0; j <= i; ++j) {
563  localErrors[k++] = m(i, j);
564  }
565  }
566  int surfaceSide = static_cast<int>(ts.surfaceSide());
567  pts = PTrajectoryStateOnDet(ts.localParameters(), ts.globalMomentum().perp(), localErrors, detid, surfaceSide);
568 }
Vector3DBase
Definition: Vector3DBase.h:8
TrackerGeometry::idToDet
const TrackerGeomDet * idToDet(DetId) const override
Definition: TrackerGeometry.cc:193
Propagator.h
edm::ESHandle::product
T const * product() const
Definition: ESHandle.h:86
FastTSGFromPropagation::outerTkState
TrajectoryStateOnSurface outerTkState(const TrackCand &) const
Definition: FastTSGFromPropagation.cc:414
Chi2MeasurementEstimator.h
FastTSGFromPropagation::updator
const TrajectoryStateUpdator * updator() const
Definition: FastTSGFromPropagation.h:78
TrajectoryStateOnSurface.h
TrackerSeedGenerator::TrackCand
std::pair< const Trajectory *, reco::TrackRef > TrackCand
Definition: TrackerSeedGenerator.h:30
service
Definition: service.py:1
mps_fire.i
i
Definition: mps_fire.py:428
MeasurementTrackerEvent.h
MessageLogger.h
FastTSGFromPropagation::theUpdateStateFlag
bool theUpdateStateFlag
Definition: FastTSGFromPropagation.h:153
MuonErrorMatrix::multiply
static void multiply(CurvilinearTrajectoryError &initial_error, const CurvilinearTrajectoryError &scale_error)
multiply term by term the two matrix
Definition: MuonErrorMatrix.cc:445
TrackerGeometry.h
GeomDet
Definition: GeomDet.h:27
trajectoryStateTransform::initialFreeState
FreeTrajectoryState initialFreeState(const reco::Track &tk, const MagneticField *field, bool withErr=true)
Definition: TrajectoryStateTransform.cc:58
FastTSGFromPropagation::increasingEstimate
Definition: FastTSGFromPropagation.h:113
align::BeamSpot
Definition: StructureType.h:95
DetLayer
Definition: DetLayer.h:21
FastTrackingUtilities.h
PV3DBase::x
T x() const
Definition: PV3DBase.h:59
DiDispStaMuonMonitor_cfi.pt
pt
Definition: DiDispStaMuonMonitor_cfi.py:39
FastTSGFromPropagation::validMeasurements
void validMeasurements(std::vector< TrajectoryMeasurement > &) const
select valid measurements
Definition: FastTSGFromPropagation.cc:444
reco::BeamSpot::z0
double z0() const
z coordinate
Definition: BeamSpot.h:65
FastTSGFromPropagation::dxyDis
double dxyDis(const TrajectoryStateOnSurface &tsos) const
Definition: FastTSGFromPropagation.cc:492
edm
HLT enums.
Definition: AlignableModifier.h:19
TrackerTopology
Definition: TrackerTopology.h:16
trajectoryStateTransform::persistentState
PTrajectoryStateOnDet persistentState(const TrajectoryStateOnSurface &ts, unsigned int detid)
Definition: TrajectoryStateTransform.cc:14
TransientRecHitRecord.h
FastTSGFromPropagation::trackerSeeds
void trackerSeeds(const TrackCand &, const TrackingRegion &, const TrackerTopology *tTopo, std::vector< TrajectorySeed > &) override
generate seed(s) for a track
Definition: FastTSGFromPropagation.cc:72
TrajectoryStateOnSurface::globalPosition
GlobalPoint globalPosition() const
Definition: TrajectoryStateOnSurface.h:65
geometry
Definition: geometry.py:1
fastTrackingUtilities::setRecHitCombinationIndex
void setRecHitCombinationIndex(edm::OwnVector< T > &recHits, int32_t icomb)
Definition: FastTrackingUtilities.h:11
HLT_FULL_cff.InputTag
InputTag
Definition: HLT_FULL_cff.py:89301
SimTrack::trackerSurfaceMomentum
const math::XYZTLorentzVectorD & trackerSurfaceMomentum() const
Definition: SimTrack.h:42
TransientRecHitRecord
Definition: TransientRecHitRecord.h:14
FastTSGFromPropagation::init
void init(const MuonServiceProxy *) override
initialize
Definition: FastTSGFromPropagation.cc:305
TrackerRecoGeometryRecord.h
oppositeToMomentum
Definition: PropagationDirection.h:4
TrackCandidateProducer_cfi.simTracks
simTracks
Definition: TrackCandidateProducer_cfi.py:15
relativeConstraints.geometry
geometry
Definition: relativeConstraints.py:39
FastTSGFromPropagation::theGeometry
const TrackerGeometry * theGeometry
Definition: FastTSGFromPropagation.h:137
CoreSimTrack::charge
float charge() const
charge
Definition: CoreSimTrack.cc:17
GeometricSearchDet::compatibleDets
virtual std::vector< DetWithState > compatibleDets(const TrajectoryStateOnSurface &startingState, const Propagator &prop, const MeasurementEstimator &est) const
Definition: GeometricSearchDet.cc:35
TrackerRecoGeometryRecord
Definition: TrackerRecoGeometryRecord.h:14
FastTSGFromPropagation::estimator
const Chi2MeasurementEstimator * estimator() const
Definition: FastTSGFromPropagation.h:80
FastTSGFromPropagation::theNavigation
std::unique_ptr< const DirectTrackerNavigation > theNavigation
Definition: FastTSGFromPropagation.h:135
LocalTrajectoryError::matrix
const AlgebraicSymMatrix55 & matrix() const
Definition: LocalTrajectoryError.h:60
CkfComponentsRecord.h
reco
fixed size matrix
Definition: AlignmentAlgorithmBase.h:46
TransientTrackingRecHitBuilder::build
virtual RecHitPointer build(const TrackingRecHit *p) const =0
build a tracking rechit from an existing rechit
FastTSGFromPropagation::beamSpot_
edm::EDGetTokenT< reco::BeamSpot > beamSpot_
Definition: FastTSGFromPropagation.h:170
TrajectorySeedHitCandidate
Definition: TrajectorySeedHitCandidate.h:23
TrackingRecHit::geographicalId
DetId geographicalId() const
Definition: TrackingRecHit.h:120
rpcPointValidation_cfi.recHit
recHit
Definition: rpcPointValidation_cfi.py:7
MuonServiceProxy_cff.MuonServiceProxy
MuonServiceProxy
Definition: MuonServiceProxy_cff.py:14
FastTSGFromPropagation::recHitCombinations
edm::Handle< FastTrackerRecHitCombinationCollection > recHitCombinations
Definition: FastTSGFromPropagation.h:175
FastTSGFromPropagation::theSigmaZ
double theSigmaZ
Definition: FastTSGFromPropagation.h:165
FastTSGFromPropagation::recHitCombinationsToken_
edm::EDGetTokenT< FastTrackerRecHitCombinationCollection > recHitCombinationsToken_
Definition: FastTSGFromPropagation.h:169
FastTSGFromPropagation::setEvent
void setEvent(const edm::Event &) override
set an event
Definition: FastTSGFromPropagation.cc:360
PV3DBase::z
T z() const
Definition: PV3DBase.h:61
DetId
Definition: DetId.h:17
GeometricSearchTracker.h
TrajectoryStateOnSurface
Definition: TrajectoryStateOnSurface.h:16
TrajectorySeedHitCandidate::hit
const FastTrackerRecHit * hit() const
The Hit itself.
Definition: TrajectorySeedHitCandidate.h:36
TrackerTopology.h
PTrajectoryStateOnDet::detId
unsigned int detId() const
Definition: PTrajectoryStateOnDet.h:65
TrajectoryStateOnSurface::freeState
FreeTrajectoryState const * freeState(bool withErrors=true) const
Definition: TrajectoryStateOnSurface.h:58
CurvilinearTrajectoryError
Definition: CurvilinearTrajectoryError.h:27
FastTSGFromPropagation::innerState
TrajectoryStateOnSurface innerState(const TrackCand &) const
Definition: FastTSGFromPropagation.cc:395
CkfComponentsRecord
Definition: CkfComponentsRecord.h:22
FastTSGFromPropagation::theEstimator
std::unique_ptr< const Chi2MeasurementEstimator > theEstimator
Definition: FastTSGFromPropagation.h:143
FastTSGFromPropagation::theFixedErrorRescaling
double theFixedErrorRescaling
Definition: FastTSGFromPropagation.h:149
LayerMeasurements.h
Service.h
visualization-live-secondInstance_cfg.m
m
Definition: visualization-live-secondInstance_cfg.py:79
TrackerDigiGeometryRecord
Definition: TrackerDigiGeometryRecord.h:16
FastTSGFromPropagation::propagator
edm::ESHandle< Propagator > propagator() const
Definition: FastTSGFromPropagation.h:82
TrajectorySeedHitCandidate.h
FastTSGFromPropagation.h
edm::ESHandle< TrackerGeometry >
DirectTrackerNavigation.h
FastTSGFromPropagation::theErrorMatrixAdjuster
std::unique_ptr< MuonErrorMatrix > theErrorMatrixAdjuster
Definition: FastTSGFromPropagation.h:161
GlobalTrajectoryParameters
Definition: GlobalTrajectoryParameters.h:15
dqmdumpme.k
k
Definition: dqmdumpme.py:60
Point3DBase< float, GlobalTag >
FastTSGFromPropagation::theTTRHBuilder
edm::ESHandle< TransientTrackingRecHitBuilder > theTTRHBuilder
Definition: FastTSGFromPropagation.h:177
FastTSGFromPropagation::theMaxChi2
double theMaxChi2
Definition: FastTSGFromPropagation.h:145
FastTSGFromPropagation::FastTSGFromPropagation
FastTSGFromPropagation(const edm::ParameterSet &pset, edm::ConsumesCollector &iC)
constructor
Definition: FastTSGFromPropagation.cc:48
TFileService.h
TrajectoryStateOnSurface::localParameters
const LocalTrajectoryParameters & localParameters() const
Definition: TrajectoryStateOnSurface.h:73
FastTrackerRecHitCombinationCollection
std::vector< FastTrackerRecHitCombination > FastTrackerRecHitCombinationCollection
Definition: FastTrackerRecHitCollection.h:12
ALCARECOTkAlJpsiMuMu_cff.charge
charge
Definition: ALCARECOTkAlJpsiMuMu_cff.py:47
FastTSGFromPropagation::theUseVertexStateFlag
bool theUseVertexStateFlag
Definition: FastTSGFromPropagation.h:151
TrajectoryStateUpdator::update
virtual TrajectoryStateOnSurface update(const TrajectoryStateOnSurface &, const TrackingRecHit &) const =0
TrackerDigiGeometryRecord.h
SimTrack::trackerSurfacePosition
const math::XYZVectorD & trackerSurfacePosition() const
Definition: SimTrack.h:40
KFUpdator.h
FastTSGFromPropagation::findMeasurements
std::vector< TrajectoryMeasurement > findMeasurements(const DetLayer *, const TrajectoryStateOnSurface &) const
look for measurements on the first compatible layer
Definition: FastTSGFromPropagation.cc:450
FastTSGFromPropagation::theCacheId_TG
unsigned long long theCacheId_TG
Definition: FastTSGFromPropagation.h:127
edm::ParameterSet
Definition: ParameterSet.h:47
FastTSGFromPropagation::theMeasTracker
edm::ESHandle< MeasurementTracker > theMeasTracker
Definition: FastTSGFromPropagation.h:133
FastTSGFromPropagation::theMeasTrackerEvent
edm::Handle< MeasurementTrackerEvent > theMeasTrackerEvent
Definition: FastTSGFromPropagation.h:176
FastTSGFromPropagation::theUpdator
std::unique_ptr< const TrajectoryStateUpdator > theUpdator
Definition: FastTSGFromPropagation.h:141
position
static int position[264][3]
Definition: ReadPGInfo.cc:289
PV3DBase::eta
T eta() const
Definition: PV3DBase.h:73
PV3DBase::y
T y() const
Definition: PV3DBase.h:60
FastTSGFromPropagation::theBeamSpot
edm::Handle< reco::BeamSpot > theBeamSpot
Definition: FastTSGFromPropagation.h:173
FastTSGFromPropagation::theSimTracks
edm::Handle< edm::SimTrackContainer > theSimTracks
Definition: FastTSGFromPropagation.h:174
TrackingRecHit::ConstRecHitPointer
std::shared_ptr< TrackingRecHit const > ConstRecHitPointer
Definition: TrackingRecHit.h:25
HLT_FULL_cff.region
region
Definition: HLT_FULL_cff.py:88286
createfilelist.int
int
Definition: createfilelist.py:10
FastTSGFromPropagation::theSimTrackCollectionToken_
edm::EDGetTokenT< edm::SimTrackContainer > theSimTrackCollectionToken_
Definition: FastTSGFromPropagation.h:168
iEvent
int iEvent
Definition: GenABIO.cc:224
trajectoryStateTransform::transientState
TrajectoryStateOnSurface transientState(const PTrajectoryStateOnDet &ts, const Surface *surface, const MagneticField *field)
Definition: TrajectoryStateTransform.cc:35
FastTSGFromPropagation::theCacheId_MT
unsigned long long theCacheId_MT
Definition: FastTSGFromPropagation.h:126
StateOnTrackerBound
Definition: StateOnTrackerBound.h:13
FastTSGFromPropagation::createSeed
TrajectorySeed createSeed(const TrajectoryStateOnSurface &, const DetId &) const
create a hitless seed from a trajectory state
Definition: FastTSGFromPropagation.cc:432
GenericTransientTrackingRecHit.h
edm::LogError
Log< level::Error, false > LogError
Definition: MessageLogger.h:123
get
#define get
RPCpg::pts
static const double pts[33]
Definition: Constants.h:30
AlCaHLTBitMon_QueryRunRegistry.string
string string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
PV3DBase::basicVector
const BasicVectorType & basicVector() const
Definition: PV3DBase.h:53
TrackingRecHit
Definition: TrackingRecHit.h:21
FastTSGFromPropagation::theCategory
std::string theCategory
Definition: FastTSGFromPropagation.h:129
Trajectory.h
FastTSGFromPropagation::thePropagatorName
std::string thePropagatorName
Definition: FastTSGFromPropagation.h:159
TrajectoryStateOnSurface::globalMomentum
GlobalVector globalMomentum() const
Definition: TrajectoryStateOnSurface.h:66
FastTSGFromPropagation::theResetMethod
std::string theResetMethod
Definition: FastTSGFromPropagation.h:155
GeomDet.h
FastTSGFromPropagation::theTracker
edm::ESHandle< GeometricSearchTracker > theTracker
Definition: FastTSGFromPropagation.h:131
std
Definition: JetResolutionObject.h:76
DetId::rawId
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:57
FastTSGFromPropagation::stateOnDet
void stateOnDet(const TrajectoryStateOnSurface &ts, unsigned int detid, PTrajectoryStateOnDet &pts) const
A mere copy (without memory leak) of an existing tracking method.
Definition: FastTSGFromPropagation.cc:554
FastTSGFromPropagation::zDis
double zDis(const TrajectoryStateOnSurface &tsos) const
Definition: FastTSGFromPropagation.cc:498
RunInfoPI::state
state
Definition: RunInfoPayloadInspectoHelper.h:16
FreeTrajectoryState
Definition: FreeTrajectoryState.h:27
edm::SimTrackContainer
std::vector< SimTrack > SimTrackContainer
Definition: SimTrackContainer.h:12
SimTrack
Definition: SimTrack.h:9
triggerObjects_cff.id
id
Definition: triggerObjects_cff.py:29
FastTSGFromPropagation::theService
const MuonServiceProxy * theService
Definition: FastTSGFromPropagation.h:139
FastTSGFromPropagation::theSelectStateFlag
bool theSelectStateFlag
Definition: FastTSGFromPropagation.h:157
TrajectorySeed
Definition: TrajectorySeed.h:18
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
FastTSGFromPropagation::~FastTSGFromPropagation
~FastTSGFromPropagation() override
destructor
Definition: FastTSGFromPropagation.cc:70
TrajectoryStateTransform.h
edm::OwnVector::push_back
void push_back(D *&d)
Definition: OwnVector.h:326
FastTSGFromPropagation::theConfig
const edm::ParameterSet theConfig
Definition: FastTSGFromPropagation.h:167
TrackingRegion
Definition: TrackingRegion.h:41
FastTSGFromPropagation::passSelection
bool passSelection(const TrajectoryStateOnSurface &) const
check some quantity and beam-spot compatibility and decide to continue
Definition: FastTSGFromPropagation.cc:477
FastTSGFromPropagation
Definition: FastTSGFromPropagation.h:48
mps_fire.result
result
Definition: mps_fire.py:311
LogTrace
#define LogTrace(id)
Definition: MessageLogger.h:234
PTrajectoryStateOnDet
Definition: PTrajectoryStateOnDet.h:10
StateOnTrackerBound.h
FastTSGFromPropagation::theFlexErrorRescaling
double theFlexErrorRescaling
Definition: FastTSGFromPropagation.h:147
dqmiolumiharvest.j
j
Definition: dqmiolumiharvest.py:66
trajectoryStateTransform::innerStateOnSurface
TrajectoryStateOnSurface innerStateOnSurface(const reco::Track &tk, const TrackingGeometry &geom, const MagneticField *field, bool withErr=true)
Definition: TrajectoryStateTransform.cc:110
edm::HandleBase::isValid
bool isValid() const
Definition: HandleBase.h:70
FastTSGFromPropagation::theMeasurementTrackerEventToken_
edm::EDGetTokenT< MeasurementTrackerEvent > theMeasurementTrackerEventToken_
Definition: FastTSGFromPropagation.h:171
FastTSGFromPropagation::getRescalingFactor
void getRescalingFactor(const TrackCand &staMuon)
Definition: FastTSGFromPropagation.cc:503
edm::Event
Definition: Event.h:73
TrajectoryStateOnSurface::localError
const LocalTrajectoryError & localError() const
Definition: TrajectoryStateOnSurface.h:77
HLT_FULL_cff.errorMatrixPset
errorMatrixPset
Definition: HLT_FULL_cff.py:46173
AlgebraicSymMatrix55
ROOT::Math::SMatrix< double, 5, 5, ROOT::Math::MatRepSym< double, 5 > > AlgebraicSymMatrix55
Definition: AlgebraicROOTObjects.h:23
TrajectoryStateOnSurface::surfaceSide
SurfaceSide surfaceSide() const
Position relative to material, defined relative to momentum vector.
Definition: TrajectoryStateOnSurface.h:89
SimTrackContainer.h
PV3DBase::perp
T perp() const
Definition: PV3DBase.h:69
FastTrackerRecHit::clone
FastTrackerRecHit * clone() const override
Definition: FastTrackerRecHit.h:66
edm::ConsumesCollector
Definition: ConsumesCollector.h:45
alongMomentum
Definition: PropagationDirection.h:4
TrajectoryStateOnSurface::isValid
bool isValid() const
Definition: TrajectoryStateOnSurface.h:54
FastTSGFromPropagation::isInvalid
Definition: FastTSGFromPropagation.h:119
g
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e g
Definition: Activities.doc:4
edm::OwnVector< TrackingRecHit >
MeasurementDet.h
MeasurementTracker.h
FastTSGFromPropagation::theAdjustAtIp
bool theAdjustAtIp
Definition: FastTSGFromPropagation.h:163
FastTSGFromPropagation::adjust
void adjust(FreeTrajectoryState &) const
adjust the error matrix of the FTS
Definition: FastTSGFromPropagation.cc:514
HLTSiStripMonitoring_cff.MeasurementTrackerEvent
MeasurementTrackerEvent
Definition: HLTSiStripMonitoring_cff.py:224