CMS 3D CMS Logo

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

#include <FastTSGFromPropagation.h>

Inheritance diagram for FastTSGFromPropagation:
TrackerSeedGenerator

Classes

struct  increasingEstimate
 
struct  isInvalid
 

Public Member Functions

 FastTSGFromPropagation (const edm::ParameterSet &pset, edm::ConsumesCollector &iC)
 constructor More...
 
 FastTSGFromPropagation (const edm::ParameterSet &par, const MuonServiceProxy *, edm::ConsumesCollector &iC)
 
void init (const MuonServiceProxy *) override
 initialize More...
 
void setEvent (const edm::Event &) override
 set an event More...
 
void trackerSeeds (const TrackCand &, const TrackingRegion &, const TrackerTopology *tTopo, std::vector< TrajectorySeed > &) override
 generate seed(s) for a track More...
 
 ~FastTSGFromPropagation () override
 destructor More...
 
- Public Member Functions inherited from TrackerSeedGenerator
const edm::EventgetEvent () const
 
 TrackerSeedGenerator ()
 
virtual void trackerSeeds (const TrackCand &, const TrackingRegion &, const TrackerTopology *, BTSeedCollection &)
 
virtual ~TrackerSeedGenerator ()
 destructor More...
 

Private Member Functions

void adjust (FreeTrajectoryState &) const
 adjust the error matrix of the FTS More...
 
void adjust (TrajectoryStateOnSurface &) const
 adjust the error matrix of the TSOS More...
 
TrajectorySeed createSeed (const TrajectoryStateOnSurface &, const DetId &) const
 create a hitless seed from a trajectory state More...
 
TrajectorySeed createSeed (const TrajectoryStateOnSurface &tsos, const edm::OwnVector< TrackingRecHit > &container, const DetId &id) const
 create a seed from a trajectory state More...
 
double dxyDis (const TrajectoryStateOnSurface &tsos) const
 
const Chi2MeasurementEstimatorestimator () const
 
std::vector< TrajectoryMeasurementfindMeasurements (const DetLayer *, const TrajectoryStateOnSurface &) const
 look for measurements on the first compatible layer More...
 
std::vector< TrajectoryMeasurementfindMeasurements_new (const DetLayer *, const TrajectoryStateOnSurface &) const
 look for measurements on the first compatible layer (faster way) More...
 
void getRescalingFactor (const TrackCand &staMuon)
 
TrajectoryStateOnSurface innerState (const TrackCand &) const
 
TrajectoryStateOnSurface outerTkState (const TrackCand &) const
 
bool passSelection (const TrajectoryStateOnSurface &) const
 check some quantity and beam-spot compatibility and decide to continue More...
 
edm::ESHandle< Propagatorpropagator () const
 
void stateOnDet (const TrajectoryStateOnSurface &ts, unsigned int detid, PTrajectoryStateOnDet &pts) const
 A mere copy (without memory leak) of an existing tracking method. More...
 
const LayerMeasurementstkLayerMeasurements () const
 
const TrajectoryStateUpdatorupdator () const
 
void validMeasurements (std::vector< TrajectoryMeasurement > &) const
 select valid measurements More...
 
double zDis (const TrajectoryStateOnSurface &tsos) const
 

Private Attributes

edm::EDGetTokenT< reco::BeamSpotbeamSpot_
 
edm::Handle< FastTrackerRecHitCombinationCollectionrecHitCombinations
 
edm::EDGetTokenT< FastTrackerRecHitCombinationCollectionrecHitCombinationsToken_
 
bool theAdjustAtIp
 
edm::Handle< reco::BeamSpottheBeamSpot
 
unsigned long long theCacheId_MT
 
unsigned long long theCacheId_TG
 
std::string theCategory
 
const edm::ParameterSet theConfig
 
std::unique_ptr< MuonErrorMatrixtheErrorMatrixAdjuster
 
std::unique_ptr< const Chi2MeasurementEstimatortheEstimator
 
double theFixedErrorRescaling
 
double theFlexErrorRescaling
 
const TrackerGeometrytheGeometry
 
double theMaxChi2
 
edm::ESHandle< MeasurementTrackertheMeasTracker
 
edm::Handle< MeasurementTrackerEventtheMeasTrackerEvent
 
edm::EDGetTokenT< MeasurementTrackerEventtheMeasurementTrackerEventToken_
 
std::unique_ptr< const DirectTrackerNavigationtheNavigation
 
std::string thePropagatorName
 
std::string theResetMethod
 
bool theSelectStateFlag
 
const MuonServiceProxytheService
 
double theSigmaZ
 
edm::EDGetTokenT< edm::SimTrackContainertheSimTrackCollectionToken_
 
edm::Handle< edm::SimTrackContainertheSimTracks
 
LayerMeasurements theTkLayerMeasurements
 
edm::ESHandle< GeometricSearchTrackertheTracker
 
edm::ESHandle< TransientTrackingRecHitBuildertheTTRHBuilder
 
bool theUpdateStateFlag
 
std::unique_ptr< const TrajectoryStateUpdatortheUpdator
 
bool theUseVertexStateFlag
 

Additional Inherited Members

- Public Types inherited from TrackerSeedGenerator
typedef std::vector< TrajectorySeedBTSeedCollection
 
typedef std::pair< const Trajectory *, reco::TrackRefTrackCand
 
- Protected Attributes inherited from TrackerSeedGenerator
const edm::EventtheEvent
 
const MuonServiceProxytheProxyService
 

Detailed Description

Emulate TSGFromPropagation in RecoMuon

Author
Hwidong Yoo - Purdue University

Tracker Seed Generator by propagating and updating a standAlone muon to the first 2 (or 1) rechits it meets in tracker system

Emulate TSGFromPropagation in RecoMuon

Author
Hwidong Yoo - Purdue University

Definition at line 50 of file FastTSGFromPropagation.h.

Constructor & Destructor Documentation

FastTSGFromPropagation::FastTSGFromPropagation ( const edm::ParameterSet pset,
edm::ConsumesCollector iC 
)

constructor

Definition at line 46 of file FastTSGFromPropagation.cc.

46  : FastTSGFromPropagation(iConfig, nullptr, iC) {
47 }
FastTSGFromPropagation(const edm::ParameterSet &pset, edm::ConsumesCollector &iC)
constructor
FastTSGFromPropagation::FastTSGFromPropagation ( const edm::ParameterSet par,
const MuonServiceProxy service,
edm::ConsumesCollector iC 
)

Definition at line 49 of file FastTSGFromPropagation.cc.

49  :
50  theCategory("FastSimulation|Muons|FastTSGFromPropagation"),
54  beamSpot_(iC.consumes<reco::BeamSpot>(iConfig.getParameter<edm::InputTag>("beamSpot"))),
55  theMeasurementTrackerEventToken_(iC.consumes<MeasurementTrackerEvent>(iConfig.getParameter<edm::InputTag>("MeasurementTrackerEvent"))) {
56 }
std::unique_ptr< const TrajectoryStateUpdator > theUpdator
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
T getParameter(std::string const &) const
edm::EDGetTokenT< edm::SimTrackContainer > theSimTrackCollectionToken_
edm::ESHandle< GeometricSearchTracker > theTracker
const MuonServiceProxy * theService
edm::EDGetTokenT< MeasurementTrackerEvent > theMeasurementTrackerEventToken_
const edm::ParameterSet theConfig
LayerMeasurements theTkLayerMeasurements
std::unique_ptr< const DirectTrackerNavigation > theNavigation
edm::EDGetTokenT< reco::BeamSpot > beamSpot_
std::vector< FastTrackerRecHitCombination > FastTrackerRecHitCombinationCollection
std::unique_ptr< const Chi2MeasurementEstimator > theEstimator
edm::EDGetTokenT< FastTrackerRecHitCombinationCollection > recHitCombinationsToken_
std::vector< SimTrack > SimTrackContainer
FastTSGFromPropagation::~FastTSGFromPropagation ( )
override

destructor

Definition at line 58 of file FastTSGFromPropagation.cc.

References LogTrace, and theCategory.

58  {
59  LogTrace(theCategory) << " FastTSGFromPropagation dtor called ";
60 }
#define LogTrace(id)

Member Function Documentation

void FastTSGFromPropagation::adjust ( FreeTrajectoryState state) const
private

adjust the error matrix of the FTS

Definition at line 505 of file FastTSGFromPropagation.cc.

References FreeTrajectoryState::curvilinearError(), FreeTrajectoryState::momentum(), MuonErrorMatrix::multiply(), FreeTrajectoryState::parameters(), FreeTrajectoryState::rescaleError(), theErrorMatrixAdjuster, theFixedErrorRescaling, theFlexErrorRescaling, and theResetMethod.

Referenced by innerState(), outerTkState(), and propagator().

505  {
506 
507  //rescale the error
508  if ( theResetMethod == "discreate" ) {
510  return;
511  }
512 
513  //rescale the error
514  if ( theResetMethod == "fixed" || !theErrorMatrixAdjuster) {
516  return;
517  }
518 
520  CurvilinearTrajectoryError sfMat = theErrorMatrixAdjuster->get(state.momentum());//FIXME with position
521  MuonErrorMatrix::multiply(oMat, sfMat);
522 
523  state = FreeTrajectoryState(state.parameters(),
524  oMat);
525 }
const GlobalTrajectoryParameters & parameters() const
const CurvilinearTrajectoryError & curvilinearError() const
static void multiply(CurvilinearTrajectoryError &initial_error, const CurvilinearTrajectoryError &scale_error)
multiply term by term the two matrix
GlobalVector momentum() const
void rescaleError(double factor)
std::unique_ptr< MuonErrorMatrix > theErrorMatrixAdjuster
void FastTSGFromPropagation::adjust ( TrajectoryStateOnSurface state) const
private

adjust the error matrix of the TSOS

Definition at line 527 of file FastTSGFromPropagation.cc.

References TrajectoryStateOnSurface::curvilinearError(), TrajectoryStateOnSurface::globalMomentum(), TrajectoryStateOnSurface::globalParameters(), MuonErrorMatrix::multiply(), TrajectoryStateOnSurface::rescaleError(), TrajectoryStateOnSurface::surface(), TrajectoryStateOnSurface::surfaceSide(), theErrorMatrixAdjuster, theFixedErrorRescaling, theFlexErrorRescaling, theResetMethod, and TrajectoryStateOnSurface::weight().

527  {
528 
529  //rescale the error
530  if ( theResetMethod == "discreate" ) {
532  return;
533  }
534 
535  if ( theResetMethod == "fixed" || !theErrorMatrixAdjuster) {
537  return;
538  }
539 
541  CurvilinearTrajectoryError sfMat = theErrorMatrixAdjuster->get(state.globalMomentum());//FIXME with position
542  MuonErrorMatrix::multiply(oMat, sfMat);
543 
544  state = TrajectoryStateOnSurface(state.weight(),
545  state.globalParameters(),
546  oMat,
547  state.surface(),
548  state.surfaceSide());
549 }
const CurvilinearTrajectoryError & curvilinearError() const
const SurfaceType & surface() const
SurfaceSide surfaceSide() const
Position relative to material, defined relative to momentum vector.
static void multiply(CurvilinearTrajectoryError &initial_error, const CurvilinearTrajectoryError &scale_error)
multiply term by term the two matrix
const GlobalTrajectoryParameters & globalParameters() const
GlobalVector globalMomentum() const
std::unique_ptr< MuonErrorMatrix > theErrorMatrixAdjuster
TrajectorySeed FastTSGFromPropagation::createSeed ( const TrajectoryStateOnSurface tsos,
const DetId id 
) const
private

create a hitless seed from a trajectory state

Definition at line 418 of file FastTSGFromPropagation.cc.

Referenced by propagator(), and trackerSeeds().

418  {
419 
421  return createSeed(tsos, container, id);
422 
423 }
TrajectorySeed createSeed(const TrajectoryStateOnSurface &, const DetId &) const
create a hitless seed from a trajectory state
TrajectorySeed FastTSGFromPropagation::createSeed ( const TrajectoryStateOnSurface tsos,
const edm::OwnVector< TrackingRecHit > &  container,
const DetId id 
) const
private

create a seed from a trajectory state

Definition at line 425 of file FastTSGFromPropagation.cc.

References oppositeToMomentum, and trajectoryStateTransform::persistentState().

425  {
426 
428  return TrajectorySeed(seedTSOS,container,oppositeToMomentum);
429 
430 }
PTrajectoryStateOnDet persistentState(const TrajectoryStateOnSurface &ts, unsigned int detid)
double FastTSGFromPropagation::dxyDis ( const TrajectoryStateOnSurface tsos) const
private
const Chi2MeasurementEstimator* FastTSGFromPropagation::estimator ( void  ) const
inlineprivate

Definition at line 84 of file FastTSGFromPropagation.h.

References theEstimator.

Referenced by findMeasurements(), findMeasurements_new(), and trackerSeeds().

84 { return theEstimator.get(); }
std::unique_ptr< const Chi2MeasurementEstimator > theEstimator
std::vector< TrajectoryMeasurement > FastTSGFromPropagation::findMeasurements ( const DetLayer nl,
const TrajectoryStateOnSurface staState 
) const
private

look for measurements on the first compatible layer

Definition at line 466 of file FastTSGFromPropagation.cc.

References estimator(), LayerMeasurements::measurements(), propagator(), mps_fire::result, tkLayerMeasurements(), and validMeasurements().

Referenced by propagator().

466  {
467 
468  std::vector<TrajectoryMeasurement> result = tkLayerMeasurements()->measurements((*nl), staState, *propagator(), *estimator());
469  validMeasurements(result);
470  return result;
471 }
std::vector< TrajectoryMeasurement > measurements(const DetLayer &layer, const TrajectoryStateOnSurface &startingState, const Propagator &prop, const MeasurementEstimator &est) const
const LayerMeasurements * tkLayerMeasurements() const
void validMeasurements(std::vector< TrajectoryMeasurement > &) const
select valid measurements
const Chi2MeasurementEstimator * estimator() const
edm::ESHandle< Propagator > propagator() const
std::vector< TrajectoryMeasurement > FastTSGFromPropagation::findMeasurements_new ( const DetLayer nl,
const TrajectoryStateOnSurface staState 
) const
private

look for measurements on the first compatible layer (faster way)

Definition at line 441 of file FastTSGFromPropagation.cc.

References GeometricSearchDet::compatibleDets(), estimator(), propagator(), mps_fire::result, and theMeasTrackerEvent.

Referenced by propagator(), and trackerSeeds().

441  {
442 
443  std::vector<TrajectoryMeasurement> result;
444 
445  std::vector<DetLayer::DetWithState> compatDets = nl->compatibleDets(staState, *propagator(), *estimator());
446  if ( compatDets.empty() ) return result;
447 
448  for (std::vector<DetLayer::DetWithState>::const_iterator idws = compatDets.begin(); idws != compatDets.end(); ++idws) {
449  if ( idws->second.isValid() && (idws->first) ) {
450  std::vector<TrajectoryMeasurement> tmptm =
451  theMeasTrackerEvent->idToDet(idws->first->geographicalId()).fastMeasurements(idws->second, idws->second, *propagator(), *estimator());
452  //validMeasurements(tmptm);
453 // if ( tmptm.size() > 2 ) {
454 // std::stable_sort(tmptm.begin(),tmptm.end(),increasingEstimate());
455 // result.insert(result.end(),tmptm.begin(), tmptm.begin()+2);
456 // } else {
457  result.insert(result.end(),tmptm.begin(), tmptm.end());
458 // }
459  }
460  }
461 
462  return result;
463 
464 }
edm::Handle< MeasurementTrackerEvent > theMeasTrackerEvent
virtual std::vector< DetWithState > compatibleDets(const TrajectoryStateOnSurface &startingState, const Propagator &prop, const MeasurementEstimator &est) const
const Chi2MeasurementEstimator * estimator() const
edm::ESHandle< Propagator > propagator() const
void FastTSGFromPropagation::getRescalingFactor ( const TrackCand staMuon)
private

Definition at line 496 of file FastTSGFromPropagation.cc.

References EnergyCorrector::pt, and theFlexErrorRescaling.

Referenced by propagator(), and trackerSeeds().

496  {
497  float pt = (staMuon.second)->pt();
498  if ( pt < 13.0 ) theFlexErrorRescaling = 3;
499  else if ( pt < 30.0 ) theFlexErrorRescaling = 5;
500  else theFlexErrorRescaling = 10;
501  return;
502 }
void FastTSGFromPropagation::init ( const MuonServiceProxy service)
overridevirtual

initialize

Reimplemented from TrackerSeedGenerator.

Definition at line 284 of file FastTSGFromPropagation.cc.

References Chi2MeasurementEstimator_cfi::Chi2MeasurementEstimator, TSGForRoadSearch_cfi::errorMatrixPset, geometry, edm::ParameterSet::getParameter(), AlCaHLTBitMon_QueryRunRegistry::string, theAdjustAtIp, theCacheId_MT, theCacheId_TG, theConfig, theErrorMatrixAdjuster, theEstimator, theFixedErrorRescaling, theFlexErrorRescaling, theGeometry, theMaxChi2, theNavigation, thePropagatorName, theResetMethod, theSelectStateFlag, theService, theSigmaZ, theTracker, theTTRHBuilder, theUpdateStateFlag, theUpdator, and theUseVertexStateFlag.

284  {
285 
286  theMaxChi2 = theConfig.getParameter<double>("MaxChi2");
287 
288  theFixedErrorRescaling = theConfig.getParameter<double>("ErrorRescaling");
289 
290  theFlexErrorRescaling = 1.0;
291 
293 
294  if (theResetMethod != "discrete" && theResetMethod != "fixed" && theResetMethod != "matrix" ) {
295  edm::LogError("FastTSGFromPropagation")
296  <<"Wrong error rescaling method: "<<theResetMethod <<"\n"
297  <<"Possible choices are: discrete, fixed, matrix.\n"
298  <<"Use discrete method" <<std::endl;
299  theResetMethod = "discrete";
300  }
301 
303 
304  theCacheId_MT = 0;
305 
306  theCacheId_TG = 0;
307 
309 
311 
312  theUseVertexStateFlag = theConfig.getParameter<bool>("UseVertexState");
313 
314  theUpdateStateFlag = theConfig.getParameter<bool>("UpdateState");
315 
316  theSelectStateFlag = theConfig.getParameter<bool>("SelectState");
317 
318  theUpdator.reset(new KFUpdator());
319 
320  theSigmaZ = theConfig.getParameter<double>("SigmaZ");
321 
323  if ( theResetMethod == "matrix" && !errorMatrixPset.empty()){
324  theAdjustAtIp = errorMatrixPset.getParameter<bool>("atIP");
325  theErrorMatrixAdjuster.reset(new MuonErrorMatrix(errorMatrixPset));
326  } else {
327  theAdjustAtIp =false;
328  theErrorMatrixAdjuster.reset();
329  }
330 
331  theService->eventSetup().get<TrackerRecoGeometryRecord>().get(theTracker);
333 
335  theService->eventSetup().get<TrackerDigiGeometryRecord>().get(geometry);
336  theGeometry = &(*geometry);
337 
338  theService->eventSetup().get<TransientRecHitRecord>().get("WithTrackAngle", theTTRHBuilder);
339 
340 }
std::unique_ptr< const TrajectoryStateUpdator > theUpdator
T getParameter(std::string const &) const
unsigned long long theCacheId_MT
edm::ESHandle< GeometricSearchTracker > theTracker
const MuonServiceProxy * theService
const edm::ParameterSet theConfig
const TrackerGeometry * theGeometry
std::unique_ptr< const DirectTrackerNavigation > theNavigation
ESHandle< TrackerGeometry > geometry
std::unique_ptr< const Chi2MeasurementEstimator > theEstimator
edm::ESHandle< TransientTrackingRecHitBuilder > theTTRHBuilder
unsigned long long theCacheId_TG
std::unique_ptr< MuonErrorMatrix > theErrorMatrixAdjuster
TrajectoryStateOnSurface FastTSGFromPropagation::innerState ( const TrackCand staMuon) const
private

Definition at line 379 of file FastTSGFromPropagation.cc.

References adjust(), alongMomentum, trajectoryStateTransform::innerStateOnSurface(), oppositeToMomentum, and theService.

Referenced by outerTkState().

379  {
380 
381  TrajectoryStateOnSurface innerTS;
382 
383  if ( staMuon.first && staMuon.first->isValid() ) {
384  if (staMuon.first->direction() == alongMomentum) {
385  innerTS = staMuon.first->firstMeasurement().updatedState();
386  }
387  else if (staMuon.first->direction() == oppositeToMomentum) {
388  innerTS = staMuon.first->lastMeasurement().updatedState();
389  }
390  } else {
391  innerTS = trajectoryStateTransform::innerStateOnSurface(*(staMuon.second),*theService->trackingGeometry(), &*theService->magneticField());
392  }
393  //rescale the error
394  adjust(innerTS);
395 
396  return innerTS;
397 
398 }
void adjust(FreeTrajectoryState &) const
adjust the error matrix of the FTS
const MuonServiceProxy * theService
TrajectoryStateOnSurface innerStateOnSurface(const reco::Track &tk, const TrackingGeometry &geom, const MagneticField *field, bool withErr=true)
TrajectoryStateOnSurface FastTSGFromPropagation::outerTkState ( const TrackCand staMuon) const
private

Definition at line 400 of file FastTSGFromPropagation.cc.

References adjust(), trajectoryStateTransform::initialFreeState(), innerState(), propagator(), mps_fire::result, theService, and theUseVertexStateFlag.

Referenced by trackerSeeds().

400  {
401 
403 
404  if ( theUseVertexStateFlag && staMuon.second->pt() > 1.0 ) {
405  FreeTrajectoryState iniState = trajectoryStateTransform::initialFreeState(*(staMuon.second), &*theService->magneticField());
406  //rescale the error at IP
407  adjust(iniState);
408 
409  StateOnTrackerBound fromInside(&*(theService->propagator("PropagatorWithMaterial")));
410  result = fromInside(iniState);
411  } else {
412  StateOnTrackerBound fromOutside(&*propagator());
413  result = fromOutside(innerState(staMuon));
414  }
415  return result;
416 }
void adjust(FreeTrajectoryState &) const
adjust the error matrix of the FTS
const MuonServiceProxy * theService
TrajectoryStateOnSurface innerState(const TrackCand &) const
edm::ESHandle< Propagator > propagator() const
FreeTrajectoryState initialFreeState(const reco::Track &tk, const MagneticField *field, bool withErr=true)
bool FastTSGFromPropagation::passSelection ( const TrajectoryStateOnSurface tsos) const
private

check some quantity and beam-spot compatibility and decide to continue

Definition at line 473 of file FastTSGFromPropagation.cc.

References edm::HandleBase::isValid(), theBeamSpot, theSelectStateFlag, theSigmaZ, reco::BeamSpot::z0(), and zDis().

Referenced by propagator(), and trackerSeeds().

473  {
474  if ( !theSelectStateFlag ) return true;
475  else {
476  if ( theBeamSpot.isValid() ) {
477  return ( ( fabs(zDis(tsos) - theBeamSpot->z0() ) < theSigmaZ) );
478 
479  } else {
480  return ( ( fabs(zDis(tsos)) < theSigmaZ) );
481 // double theDxyCut = 100;
482 // return ( (zDis(tsos) < theSigmaZ) && (dxyDis(tsos) < theDxyCut) );
483  }
484  }
485 
486 }
double z0() const
z coordinate
Definition: BeamSpot.h:68
edm::Handle< reco::BeamSpot > theBeamSpot
bool isValid() const
Definition: HandleBase.h:74
double zDis(const TrajectoryStateOnSurface &tsos) const
edm::ESHandle<Propagator> FastTSGFromPropagation::propagator ( ) const
inlineprivate
void FastTSGFromPropagation::setEvent ( const edm::Event iEvent)
overridevirtual

set an event

Reimplemented from TrackerSeedGenerator.

Definition at line 342 of file FastTSGFromPropagation.cc.

References beamSpot_, edm::Event::getByToken(), LogTrace, recHitCombinations, recHitCombinationsToken_, theBeamSpot, theCacheId_MT, theCacheId_TG, theCategory, theMeasTracker, theMeasTrackerEvent, theMeasurementTrackerEventToken_, theNavigation, theService, theSimTrackCollectionToken_, theSimTracks, theTkLayerMeasurements, theTracker, and theUpdateStateFlag.

342  {
343 
345 
346  // retrieve the MC truth (SimTracks)
349 
350  unsigned long long newCacheId_MT = theService->eventSetup().get<CkfComponentsRecord>().cacheIdentifier();
351 
352  if ( theUpdateStateFlag && newCacheId_MT != theCacheId_MT ) {
353  LogTrace(theCategory) << "Measurment Tracker Geometry changed!";
354  theCacheId_MT = newCacheId_MT;
355  theService->eventSetup().get<CkfComponentsRecord>().get(theMeasTracker);
356  }
357 
358  if ( theUpdateStateFlag ) {
361  }
362 
363  bool trackerGeomChanged = false;
364 
365  unsigned long long newCacheId_TG = theService->eventSetup().get<TrackerRecoGeometryRecord>().cacheIdentifier();
366 
367  if ( newCacheId_TG != theCacheId_TG ) {
368  LogTrace(theCategory) << "Tracker Reco Geometry changed!";
369  theCacheId_TG = newCacheId_TG;
370  theService->eventSetup().get<TrackerRecoGeometryRecord>().get(theTracker);
371  trackerGeomChanged = true;
372  }
373 
374  if ( trackerGeomChanged && (&*theTracker) ) {
376  }
377 }
edm::Handle< MeasurementTrackerEvent > theMeasTrackerEvent
edm::ESHandle< MeasurementTracker > theMeasTracker
edm::Handle< reco::BeamSpot > theBeamSpot
unsigned long long theCacheId_MT
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:508
edm::EDGetTokenT< edm::SimTrackContainer > theSimTrackCollectionToken_
edm::Handle< edm::SimTrackContainer > theSimTracks
edm::ESHandle< GeometricSearchTracker > theTracker
const MuonServiceProxy * theService
edm::EDGetTokenT< MeasurementTrackerEvent > theMeasurementTrackerEventToken_
LayerMeasurements theTkLayerMeasurements
#define LogTrace(id)
std::unique_ptr< const DirectTrackerNavigation > theNavigation
edm::Handle< FastTrackerRecHitCombinationCollection > recHitCombinations
edm::EDGetTokenT< reco::BeamSpot > beamSpot_
edm::EDGetTokenT< FastTrackerRecHitCombinationCollection > recHitCombinationsToken_
unsigned long long theCacheId_TG
void FastTSGFromPropagation::stateOnDet ( const TrajectoryStateOnSurface ts,
unsigned int  detid,
PTrajectoryStateOnDet pts 
) const
private

A mere copy (without memory leak) of an existing tracking method.

should check if corresponds to m

Definition at line 551 of file FastTSGFromPropagation.cc.

References TrajectoryStateOnSurface::globalMomentum(), mps_fire::i, gen::k, TrajectoryStateOnSurface::localError(), TrajectoryStateOnSurface::localParameters(), funct::m, LocalTrajectoryError::matrix(), PV3DBase< T, PVType, FrameType >::perp(), and TrajectoryStateOnSurface::surfaceSide().

554 {
555  const AlgebraicSymMatrix55& m = ts.localError().matrix();
556  int dim = 5;
557  float localErrors[15];
558  int k = 0;
559  for (int i=0; i<dim; ++i) {
560  for (int j=0; j<=i; ++j) {
561  localErrors[k++] = m(i,j);
562  }
563  }
564  int surfaceSide = static_cast<int>(ts.surfaceSide());
566  localErrors, detid,
567  surfaceSide);
568 }
T perp() const
Definition: PV3DBase.h:72
const LocalTrajectoryParameters & localParameters() const
ROOT::Math::SMatrix< double, 5, 5, ROOT::Math::MatRepSym< double, 5 > > AlgebraicSymMatrix55
SurfaceSide surfaceSide() const
Position relative to material, defined relative to momentum vector.
const AlgebraicSymMatrix55 & matrix() const
const LocalTrajectoryError & localError() const
int k[5][pyjets_maxn]
GlobalVector globalMomentum() const
const LayerMeasurements* FastTSGFromPropagation::tkLayerMeasurements ( ) const
inlineprivate

Definition at line 80 of file FastTSGFromPropagation.h.

References theTkLayerMeasurements.

Referenced by findMeasurements().

80 { return &theTkLayerMeasurements; }
LayerMeasurements theTkLayerMeasurements
void FastTSGFromPropagation::trackerSeeds ( const TrackCand staMuon,
const TrackingRegion region,
const TrackerTopology tTopo,
std::vector< TrajectorySeed > &  result 
)
override

generate seed(s) for a track

Definition at line 62 of file FastTSGFromPropagation.cc.

References PV3DBase< T, PVType, FrameType >::basicVector(), TransientTrackingRecHitBuilder::build(), CoreSimTrack::charge(), ALCARECOTkAlJpsiMuMu_cff::charge, FastTrackerRecHit::clone(), createSeed(), PTrajectoryStateOnDet::detId(), estimator(), PV3DBase< T, PVType, FrameType >::eta(), findMeasurements_new(), TrajectoryStateOnSurface::freeState(), g, TrackingRecHit::geographicalId(), getRescalingFactor(), TrajectoryStateOnSurface::globalMomentum(), TrajectoryStateOnSurface::globalPosition(), TrajectorySeedHitCandidate::hit(), triggerObjects_cff::id, TrackerGeometry::idToDet(), createfilelist::int, TrajectoryStateOnSurface::isValid(), LogTrace, nullptr, oppositeToMomentum, outerTkState(), passSelection(), PV3DBase< T, PVType, FrameType >::perp(), position, propagator(), edm::OwnVector< T, P >::push_back(), DetId::rawId(), rpcPointValidation_cfi::recHit, recHitCombinations, fastTrackingUtilities::setRecHitCombinationIndex(), tkConvValidator_cfi::simTracks, GeomDet::surface(), theCategory, theGeometry, theNavigation, theResetMethod, theService, theTTRHBuilder, theUpdateStateFlag, SimTrack::trackerSurfaceMomentum(), SimTrack::trackerSurfacePosition(), trajectoryStateTransform::transientState(), TrajectoryStateUpdator::update(), updator(), and PV3DBase< T, PVType, FrameType >::y().

63  {
64 
65  if ( theResetMethod == "discrete" ) getRescalingFactor(staMuon);
66 
67  TrajectoryStateOnSurface staState = outerTkState(staMuon);
68 
69  if ( !staState.isValid() ) {
70  LogTrace(theCategory) << "Error: initial state from L2 muon is invalid.";
71  return;
72  }
73 
74  LogTrace(theCategory) << "begin of trackerSeed:\n staState pos: "<<staState.globalPosition()
75  << " mom: "<<staState.globalMomentum()
76  <<"pos eta: "<<staState.globalPosition().eta()
77  <<"mom eta: "<<staState.globalMomentum().eta();
78 
79 
80  std::vector<const DetLayer*> nls = theNavigation->compatibleLayers(*(staState.freeState()), oppositeToMomentum);
81 
82  LogTrace(theCategory) << " compatible layers: "<<nls.size();
83 
84  if ( nls.empty() ) return;
85 
86  int ndesLayer = 0;
87 
88  bool usePredictedState = false;
89 
90  if ( theUpdateStateFlag ) { //use updated states
91  std::vector<TrajectoryMeasurement> alltm;
92 
93  for (std::vector<const DetLayer*>::const_iterator inl = nls.begin();
94  inl != nls.end(); inl++, ndesLayer++ ) {
95  if ( (*inl == nullptr) ) break;
96 // if ( (inl != nls.end()-1 ) && ( (*inl)->subDetector() == GeomDetEnumerators::TEC ) && ( (*(inl+1))->subDetector() == GeomDetEnumerators::TOB ) ) continue;
97  alltm = findMeasurements_new(*inl, staState);
98  if ( (!alltm.empty()) ) {
99  LogTrace(theCategory) << "final compatible layer: "<<ndesLayer;
100  break;
101  }
102  }
103 
104  if ( alltm.empty() ) {
105  LogTrace(theCategory) << " NO Measurements Found: eta: "<<staState.globalPosition().eta() <<"pt "<<staState.globalMomentum().perp();
106  usePredictedState = true;
107  } else {
108  LogTrace(theCategory) << " Measurements for seeds: "<<alltm.size();
109  std::stable_sort(alltm.begin(),alltm.end(),increasingEstimate());
110  if ( alltm.size() > 5 ) alltm.erase(alltm.begin() + 5, alltm.end());
111 
112  const edm::SimTrackContainer* simTracks = &(*theSimTracks);
113  TrajectorySeedHitCandidate theSeedHits;
114  std::vector<TrajectorySeedHitCandidate> outerHits;
115 
116  //std::vector<TrajectorySeed> tmpTS;
117  bool isMatch = false;
118  for (std::vector<TrajectoryMeasurement>::const_iterator itm = alltm.begin(); itm != alltm.end(); itm++) {
119  const TrajectoryStateOnSurface seedState = itm->predictedState();
120  double preY = seedState.globalPosition().y();
121 
122  // Check SimTrack
123  FreeTrajectoryState simtrack_trackerstate;
124  for( unsigned icomb = 0;icomb < recHitCombinations->size();++icomb){
125  const auto & recHitCombination = (*recHitCombinations)[icomb];
126  if(recHitCombination.empty())
127  continue;
128  int32_t simTrackId = recHitCombination.back()->simTrackId(0);
129  const SimTrack & simtrack = (*simTracks)[simTrackId];
130 
132  simtrack.trackerSurfacePosition().y(),
133  simtrack.trackerSurfacePosition().z());
134  GlobalVector momentum(simtrack.trackerSurfaceMomentum().x(),
135  simtrack.trackerSurfaceMomentum().y(),
136  simtrack.trackerSurfaceMomentum().z());
137  int charge = (int)simtrack.charge();
138  GlobalTrajectoryParameters glb_parameters(position, momentum, charge, &*theService->magneticField().product());
139  simtrack_trackerstate = FreeTrajectoryState(glb_parameters);
140 
141  unsigned int outerId = 0;
142  for( const auto & recHitRef : recHitCombination) {
143  theSeedHits = TrajectorySeedHitCandidate(recHitRef.get(), tTopo);
144  unsigned int id = theSeedHits.hit()->geographicalId().rawId();
145  if( preY < 0 ) {
146  if( id > outerId ) outerId = id;
147  }
148  else {
149  if( id > outerId ) outerId = id;
150  }
151  }
152  for( const auto & recHitRef : recHitCombination ) {
153  theSeedHits = TrajectorySeedHitCandidate(recHitRef.get(),tTopo);
154  if( itm->recHit()->hit()->geographicalId().rawId() == theSeedHits.hit()->geographicalId().rawId() ) {
155  auto aTrackingRecHit = std::unique_ptr<TrackingRecHit>(theSeedHits.hit()->clone());
157  if( !recHit ) continue;
158  TrajectoryStateOnSurface updatedTSOS = updator()->update(seedState, *(recHit));
159  if( updatedTSOS.isValid() && passSelection(updatedTSOS) ) {
161  container.push_back(recHit->hit()->clone());
163  TrajectorySeed ts = createSeed(updatedTSOS, container, recHit->geographicalId());
164  // check direction
165  const TrajectorySeed* aSeed = &ts;
166  PTrajectoryStateOnDet PTSOD = aSeed->startingState();
167 
168  const GeomDet *g = theGeometry->idToDet(PTSOD.detId());
169  TrajectoryStateOnSurface tsos = trajectoryStateTransform::transientState(PTSOD, &(g->surface()), &*theService->magneticField().product());
170  if( tsos.globalMomentum().basicVector()*seedState.globalMomentum().basicVector() < 0. ) continue;
171  result.push_back(ts);
172  isMatch = true;
173  }
174  }
175  }
176  }
177  }
178  if( !isMatch ) {
179  // if there is no hits w.r.t. TM, find outermost hit
180  for (std::vector<TrajectoryMeasurement>::const_iterator itm = alltm.begin(); itm != alltm.end(); itm++) {
181  const TrajectoryStateOnSurface seedState = itm->predictedState();
182  double preY = seedState.globalPosition().y();
183 
184  // Check SimTrack
185  TrackingRecHit* aTrackingRecHit;
186  FreeTrajectoryState simtrack_trackerstate;
187 
188  for( unsigned icomb = 0;icomb < recHitCombinations->size();++icomb){
189  const auto & recHitCombination = (*recHitCombinations)[icomb];
190  if(recHitCombination.empty())
191  continue;
192  int32_t simTrackId = recHitCombination.back()->simTrackId(0);
193  const SimTrack & simtrack = (*simTracks)[simTrackId];
194 
196  simtrack.trackerSurfacePosition().y(),
197  simtrack.trackerSurfacePosition().z());
198  GlobalVector momentum(simtrack.trackerSurfaceMomentum().x(),
199  simtrack.trackerSurfaceMomentum().y(),
200  simtrack.trackerSurfaceMomentum().z());
201  int charge = (int)simtrack.charge();
202  GlobalTrajectoryParameters glb_parameters(position, momentum, charge, &*theService->magneticField().product());
203  simtrack_trackerstate = FreeTrajectoryState(glb_parameters);
204 
205  unsigned int outerId = 0;
206  for( const auto & recHitRef : recHitCombination ) {
207  theSeedHits = TrajectorySeedHitCandidate(recHitRef.get(),tTopo);
208  unsigned int id = theSeedHits.hit()->geographicalId().rawId();
209  if( preY < 0 ) {
210  if( id > outerId ) outerId = id;
211  }
212  else {
213  if( id > outerId ) outerId = id;
214  }
215  }
216  for( const auto & recHitRef : recHitCombination ) {
217  theSeedHits = TrajectorySeedHitCandidate(recHitRef.get(),tTopo);
218  if( outerId == theSeedHits.hit()->geographicalId().rawId() ) {
219  aTrackingRecHit = theSeedHits.hit()->clone();
221  if( !recHit ) continue;
222  TrajectoryStateOnSurface updatedTSOS = updator()->update(seedState, *(recHit));
223  if( updatedTSOS.isValid() && passSelection(updatedTSOS) ) {
225  container.push_back(recHit->hit()->clone());
227  TrajectorySeed ts = createSeed(updatedTSOS, container, recHit->geographicalId());
228  // check direction
229  const TrajectorySeed* aSeed = &ts;
230  PTrajectoryStateOnDet PTSOD = aSeed->startingState();
231 
232  const GeomDet *g = theGeometry->idToDet(PTSOD.detId());
233  TrajectoryStateOnSurface tsos = trajectoryStateTransform::transientState(PTSOD, &(g->surface()), &*theService->magneticField().product());
234  if( tsos.globalMomentum().basicVector()*seedState.globalMomentum().basicVector() < 0. ) continue;
235  result.push_back(ts);
236  }
237  }
238  }
239  }
240  }
241  }
242 
243  /*
244  for( unsigned ir = 0; ir < tmpTS.size(); ir++ ) {
245  const BasicTrajectorySeed* aSeed = &((tmpTS)[ir]);
246  PTrajectoryStateOnDet PTSOD = aSeed->startingState();
247 
248  DetId seedDetId(PTSOD.detId());
249  const GeomDet * g = theGeometry->idToDet(seedDetId);
250  TrajectoryStateOnSurface tsos = trajectoryStateTransform::transientState(PTSOD, &(g->surface()), &*theService->magneticField().product());
251  cout << "tsos3 = " << tsos.globalMomentum() << endl;
252  if( _index == ir ) {
253  cout << "tsos4 = " << tsos.globalMomentum() << endl;
254  result.push_back(tmpTS[ir]);
255  }
256  }
257  */
258  LogTrace(theCategory) << "result: "<<result.size();
259  return;
260  }
261  }
262 
263  if ( !theUpdateStateFlag || usePredictedState ) { //use predicted states
264  LogTrace(theCategory) << "use predicted state: ";
265  for (std::vector<const DetLayer*>::const_iterator inl = nls.begin();
266  inl != nls.end(); inl++ ) {
267 
268  if ( !result.empty() || *inl == nullptr ) {
269  break;
270  }
271  std::vector<DetLayer::DetWithState> compatDets = (*inl)->compatibleDets(staState, *propagator(), *estimator());
272  LogTrace(theCategory) << " compatDets "<<compatDets.size();
273  if ( compatDets.empty() ) continue;
274  TrajectorySeed ts = createSeed(compatDets.front().second, compatDets.front().first->geographicalId());
275  result.push_back(ts);
276 
277  }
278  LogTrace(theCategory) << "result: "<<result.size();
279  return;
280  }
281  return;
282 }
void setRecHitCombinationIndex(edm::OwnVector< T > &recHits, int32_t icomb)
const math::XYZVectorD & trackerSurfacePosition() const
Definition: SimTrack.h:36
T perp() const
Definition: PV3DBase.h:72
T y() const
Definition: PV3DBase.h:63
GlobalPoint globalPosition() const
const MuonServiceProxy * theService
#define nullptr
float charge() const
charge
Definition: CoreSimTrack.cc:18
const Plane & surface() const
The nominal surface of the GeomDet.
Definition: GeomDet.h:42
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
virtual TrajectoryStateOnSurface update(const TrajectoryStateOnSurface &, const TrackingRecHit &) const =0
const Chi2MeasurementEstimator * estimator() const
FastTrackerRecHit * clone() const override
uint32_t rawId() const
get the raw id
Definition: DetId.h:43
void getRescalingFactor(const TrackCand &staMuon)
void push_back(D *&d)
Definition: OwnVector.h:290
bool passSelection(const TrajectoryStateOnSurface &) const
check some quantity and beam-spot compatibility and decide to continue
std::shared_ptr< TrackingRecHit const > ConstRecHitPointer
FreeTrajectoryState const * freeState(bool withErrors=true) const
std::vector< TrajectoryMeasurement > findMeasurements_new(const DetLayer *, const TrajectoryStateOnSurface &) const
look for measurements on the first compatible layer (faster way)
unsigned int detId() const
TrajectoryStateOnSurface outerTkState(const TrackCand &) const
#define LogTrace(id)
virtual RecHitPointer build(const TrackingRecHit *p) const =0
build a tracking rechit from an existing rechit
const TrackerGeometry * theGeometry
TrajectoryStateOnSurface transientState(const PTrajectoryStateOnDet &ts, const Surface *surface, const MagneticField *field)
const TrajectoryStateUpdator * updator() const
std::unique_ptr< const DirectTrackerNavigation > theNavigation
const math::XYZTLorentzVectorD & trackerSurfaceMomentum() const
Definition: SimTrack.h:38
edm::ESHandle< Propagator > propagator() const
TrajectorySeed createSeed(const TrajectoryStateOnSurface &, const DetId &) const
create a hitless seed from a trajectory state
edm::Handle< FastTrackerRecHitCombinationCollection > recHitCombinations
T eta() const
Definition: PV3DBase.h:76
GlobalVector globalMomentum() const
static int position[264][3]
Definition: ReadPGInfo.cc:509
const TrackerGeomDet * idToDet(DetId) const override
const FastTrackerRecHit * hit() const
The Hit itself.
DetId geographicalId() const
const BasicVectorType & basicVector() const
Definition: PV3DBase.h:56
edm::ESHandle< TransientTrackingRecHitBuilder > theTTRHBuilder
std::vector< SimTrack > SimTrackContainer
const TrajectoryStateUpdator* FastTSGFromPropagation::updator ( ) const
inlineprivate

Definition at line 82 of file FastTSGFromPropagation.h.

References theUpdator.

Referenced by trackerSeeds().

82 {return theUpdator.get();}
std::unique_ptr< const TrajectoryStateUpdator > theUpdator
void FastTSGFromPropagation::validMeasurements ( std::vector< TrajectoryMeasurement > &  tms) const
private

select valid measurements

Definition at line 433 of file FastTSGFromPropagation.cc.

Referenced by findMeasurements(), and propagator().

433  {
434 
435  std::vector<TrajectoryMeasurement>::iterator tmsend = std::remove_if(tms.begin(), tms.end(), isInvalid());
436  tms.erase(tmsend, tms.end());
437  return;
438 
439 }
double FastTSGFromPropagation::zDis ( const TrajectoryStateOnSurface tsos) const
private

Member Data Documentation

edm::EDGetTokenT<reco::BeamSpot> FastTSGFromPropagation::beamSpot_
private

Definition at line 177 of file FastTSGFromPropagation.h.

Referenced by setEvent().

edm::Handle<FastTrackerRecHitCombinationCollection> FastTSGFromPropagation::recHitCombinations
private

Definition at line 182 of file FastTSGFromPropagation.h.

Referenced by setEvent(), and trackerSeeds().

edm::EDGetTokenT<FastTrackerRecHitCombinationCollection> FastTSGFromPropagation::recHitCombinationsToken_
private

Definition at line 176 of file FastTSGFromPropagation.h.

Referenced by setEvent().

bool FastTSGFromPropagation::theAdjustAtIp
private

Definition at line 170 of file FastTSGFromPropagation.h.

Referenced by init().

edm::Handle<reco::BeamSpot> FastTSGFromPropagation::theBeamSpot
private

Definition at line 180 of file FastTSGFromPropagation.h.

Referenced by passSelection(), and setEvent().

unsigned long long FastTSGFromPropagation::theCacheId_MT
private

Definition at line 131 of file FastTSGFromPropagation.h.

Referenced by init(), and setEvent().

unsigned long long FastTSGFromPropagation::theCacheId_TG
private

Definition at line 132 of file FastTSGFromPropagation.h.

Referenced by init(), and setEvent().

std::string FastTSGFromPropagation::theCategory
private

Definition at line 134 of file FastTSGFromPropagation.h.

Referenced by setEvent(), trackerSeeds(), and ~FastTSGFromPropagation().

const edm::ParameterSet FastTSGFromPropagation::theConfig
private

Definition at line 174 of file FastTSGFromPropagation.h.

Referenced by init().

std::unique_ptr<MuonErrorMatrix> FastTSGFromPropagation::theErrorMatrixAdjuster
private

Definition at line 168 of file FastTSGFromPropagation.h.

Referenced by adjust(), and init().

std::unique_ptr<const Chi2MeasurementEstimator> FastTSGFromPropagation::theEstimator
private

Definition at line 150 of file FastTSGFromPropagation.h.

Referenced by estimator(), and init().

double FastTSGFromPropagation::theFixedErrorRescaling
private

Definition at line 156 of file FastTSGFromPropagation.h.

Referenced by adjust(), and init().

double FastTSGFromPropagation::theFlexErrorRescaling
private

Definition at line 154 of file FastTSGFromPropagation.h.

Referenced by adjust(), getRescalingFactor(), and init().

const TrackerGeometry* FastTSGFromPropagation::theGeometry
private

Definition at line 144 of file FastTSGFromPropagation.h.

Referenced by init(), and trackerSeeds().

double FastTSGFromPropagation::theMaxChi2
private

Definition at line 152 of file FastTSGFromPropagation.h.

Referenced by init().

edm::ESHandle<MeasurementTracker> FastTSGFromPropagation::theMeasTracker
private

Definition at line 140 of file FastTSGFromPropagation.h.

Referenced by setEvent().

edm::Handle<MeasurementTrackerEvent> FastTSGFromPropagation::theMeasTrackerEvent
private

Definition at line 183 of file FastTSGFromPropagation.h.

Referenced by findMeasurements_new(), and setEvent().

edm::EDGetTokenT<MeasurementTrackerEvent> FastTSGFromPropagation::theMeasurementTrackerEventToken_
private

Definition at line 178 of file FastTSGFromPropagation.h.

Referenced by setEvent().

std::unique_ptr<const DirectTrackerNavigation> FastTSGFromPropagation::theNavigation
private

Definition at line 142 of file FastTSGFromPropagation.h.

Referenced by init(), setEvent(), and trackerSeeds().

std::string FastTSGFromPropagation::thePropagatorName
private

Definition at line 166 of file FastTSGFromPropagation.h.

Referenced by init(), and propagator().

std::string FastTSGFromPropagation::theResetMethod
private

Definition at line 162 of file FastTSGFromPropagation.h.

Referenced by adjust(), init(), and trackerSeeds().

bool FastTSGFromPropagation::theSelectStateFlag
private

Definition at line 164 of file FastTSGFromPropagation.h.

Referenced by init(), and passSelection().

const MuonServiceProxy* FastTSGFromPropagation::theService
private
double FastTSGFromPropagation::theSigmaZ
private

Definition at line 172 of file FastTSGFromPropagation.h.

Referenced by init(), and passSelection().

edm::EDGetTokenT<edm::SimTrackContainer> FastTSGFromPropagation::theSimTrackCollectionToken_
private

Definition at line 175 of file FastTSGFromPropagation.h.

Referenced by setEvent().

edm::Handle<edm::SimTrackContainer> FastTSGFromPropagation::theSimTracks
private

Definition at line 181 of file FastTSGFromPropagation.h.

Referenced by setEvent().

LayerMeasurements FastTSGFromPropagation::theTkLayerMeasurements
private

Definition at line 136 of file FastTSGFromPropagation.h.

Referenced by setEvent(), and tkLayerMeasurements().

edm::ESHandle<GeometricSearchTracker> FastTSGFromPropagation::theTracker
private

Definition at line 138 of file FastTSGFromPropagation.h.

Referenced by init(), and setEvent().

edm::ESHandle<TransientTrackingRecHitBuilder> FastTSGFromPropagation::theTTRHBuilder
private

Definition at line 184 of file FastTSGFromPropagation.h.

Referenced by init(), and trackerSeeds().

bool FastTSGFromPropagation::theUpdateStateFlag
private

Definition at line 160 of file FastTSGFromPropagation.h.

Referenced by init(), setEvent(), and trackerSeeds().

std::unique_ptr<const TrajectoryStateUpdator> FastTSGFromPropagation::theUpdator
private

Definition at line 148 of file FastTSGFromPropagation.h.

Referenced by init(), and updator().

bool FastTSGFromPropagation::theUseVertexStateFlag
private

Definition at line 158 of file FastTSGFromPropagation.h.

Referenced by init(), and outerTkState().