CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
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)
 constructor More...
 
 FastTSGFromPropagation (const edm::ParameterSet &par, const MuonServiceProxy *)
 
void init (const MuonServiceProxy *)
 initialize More...
 
void setEvent (const edm::Event &)
 set an event More...
 
void trackerSeeds (const TrackCand &, const TrackingRegion &, std::vector< TrajectorySeed > &)
 generate seed(s) for a track More...
 
virtual ~FastTSGFromPropagation ()
 destructor More...
 
- Public Member Functions inherited from TrackerSeedGenerator
const edm::EventgetEvent () const
 
 TrackerSeedGenerator ()
 
virtual void trackerSeeds (const TrackCand &, const TrackingRegion &, 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
< TrajectoryMeasurement
findMeasurements (const DetLayer *, const TrajectoryStateOnSurface &) const
 look for measurements on the first compatible layer More...
 
std::vector
< TrajectoryMeasurement
findMeasurements_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

bool theAdjustAtIp
 
edm::Handle< reco::BeamSpottheBeamSpot
 
unsigned long long theCacheId_MT
 
unsigned long long theCacheId_TG
 
std::string theCategory
 
edm::ParameterSet theConfig
 
MuonErrorMatrixtheErrorMatrixAdjuster
 
const Chi2MeasurementEstimatortheEstimator
 
double theFixedErrorRescaling
 
double theFlexErrorRescaling
 
const TrackerGeometrytheGeometry
 
edm::Handle
< SiTrackerGSMatchedRecHit2DCollection
theGSRecHits
 
edm::InputTag theHitProducer
 
double theMaxChi2
 
edm::ESHandle< MeasurementTrackertheMeasTracker
 
const DirectTrackerNavigationtheNavigation
 
std::string thePropagatorName
 
std::string theResetMethod
 
bool theSelectStateFlag
 
const MuonServiceProxytheService
 
double theSigmaZ
 
edm::InputTag theSimTrackCollectionLabel
 
edm::Handle
< edm::SimTrackContainer
theSimTracks
 
const LayerMeasurementstheTkLayerMeasurements
 
edm::ESHandle
< GeometricSearchTracker
theTracker
 
TrajectoryStateTransformtheTSTransformer
 
edm::ESHandle
< TransientTrackingRecHitBuilder
theTTRHBuilder
 
bool theUpdateStateFlag
 
const TrajectoryStateUpdatortheUpdator
 
bool theUseVertexStateFlag
 

Additional Inherited Members

- Public Types inherited from TrackerSeedGenerator
typedef std::vector
< TrajectorySeed
BTSeedCollection
 
typedef std::pair< const
Trajectory *, reco::TrackRef
TrackCand
 
- 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 42 of file FastTSGFromPropagation.h.

Constructor & Destructor Documentation

FastTSGFromPropagation::FastTSGFromPropagation ( const edm::ParameterSet pset)

constructor

Definition at line 47 of file FastTSGFromPropagation.cc.

References theCategory.

48 {
49  theCategory = "FastSimulation|Muons||FastTSGFromPropagation";
50 
51 }
const Chi2MeasurementEstimator * theEstimator
const DirectTrackerNavigation * theNavigation
edm::ESHandle< GeometricSearchTracker > theTracker
const MuonServiceProxy * theService
TrajectoryStateTransform * theTSTransformer
const LayerMeasurements * theTkLayerMeasurements
FastTSGFromPropagation::FastTSGFromPropagation ( const edm::ParameterSet par,
const MuonServiceProxy service 
)

Definition at line 53 of file FastTSGFromPropagation.cc.

References theCategory.

54 {
55  theCategory = "FastSimulation|Muons|FastTSGFromPropagation";
56 }
const Chi2MeasurementEstimator * theEstimator
const DirectTrackerNavigation * theNavigation
edm::ESHandle< GeometricSearchTracker > theTracker
const MuonServiceProxy * theService
TrajectoryStateTransform * theTSTransformer
const TrajectoryStateUpdator * theUpdator
const LayerMeasurements * theTkLayerMeasurements
FastTSGFromPropagation::~FastTSGFromPropagation ( )
virtual

destructor

Definition at line 58 of file FastTSGFromPropagation.cc.

References LogTrace, theCategory, theErrorMatrixAdjuster, theEstimator, theNavigation, theTkLayerMeasurements, theTSTransformer, and theUpdator.

59 {
60 
61  LogTrace(theCategory) << " FastTSGFromPropagation dtor called ";
62  if ( theNavigation ) delete theNavigation;
63  if ( theUpdator ) delete theUpdator;
64  if ( theEstimator ) delete theEstimator;
66  if ( theTSTransformer ) delete theTSTransformer;
68 
69 }
const Chi2MeasurementEstimator * theEstimator
const DirectTrackerNavigation * theNavigation
TrajectoryStateTransform * theTSTransformer
const TrajectoryStateUpdator * theUpdator
#define LogTrace(id)
MuonErrorMatrix * theErrorMatrixAdjuster
const LayerMeasurements * theTkLayerMeasurements

Member Function Documentation

void FastTSGFromPropagation::adjust ( FreeTrajectoryState state) const
private

adjust the error matrix of the FTS

Definition at line 525 of file FastTSGFromPropagation.cc.

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

Referenced by innerState(), and outerTkState().

525  {
526 
527  //rescale the error
528  if ( theResetMethod == "discreate" ) {
530  return;
531  }
532 
533  //rescale the error
534  if ( theResetMethod == "fixed" || !theErrorMatrixAdjuster) {
536  return;
537  }
538 
540  CurvilinearTrajectoryError sfMat = theErrorMatrixAdjuster->get(state.momentum());//FIXME with position
541  MuonErrorMatrix::multiply(oMat, sfMat);
542 
543  state = FreeTrajectoryState(state.parameters(),
544  oMat);
545 }
const GlobalTrajectoryParameters & parameters() const
CurvilinearTrajectoryError get(GlobalVector momentum, bool convolute=true)
main method to be used. Retrieve a 5x5 symetrical matrix according to parametrization of error or sca...
const CurvilinearTrajectoryError & curvilinearError() const
static void multiply(CurvilinearTrajectoryError &initial_error, const CurvilinearTrajectoryError &scale_error)
multiply term by term the two matrix
GlobalVector momentum() const
MuonErrorMatrix * theErrorMatrixAdjuster
void rescaleError(double factor)
void FastTSGFromPropagation::adjust ( TrajectoryStateOnSurface state) const
private

adjust the error matrix of the TSOS

Definition at line 547 of file FastTSGFromPropagation.cc.

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

547  {
548 
549  //rescale the error
550  if ( theResetMethod == "discreate" ) {
552  return;
553  }
554 
555  if ( theResetMethod == "fixed" || !theErrorMatrixAdjuster) {
557  return;
558  }
559 
561  CurvilinearTrajectoryError sfMat = theErrorMatrixAdjuster->get(state.globalMomentum());//FIXME with position
562  MuonErrorMatrix::multiply(oMat, sfMat);
563 
565  oMat,
566  state.surface(),
567  state.surfaceSide(),
568  state.weight());
569 }
const CurvilinearTrajectoryError & curvilinearError() const
CurvilinearTrajectoryError get(GlobalVector momentum, bool convolute=true)
main method to be used. Retrieve a 5x5 symetrical matrix according to parametrization of error or sca...
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
MuonErrorMatrix * theErrorMatrixAdjuster
const GlobalTrajectoryParameters & globalParameters() const
GlobalVector globalMomentum() const
const Surface & surface() const
TrajectorySeed FastTSGFromPropagation::createSeed ( const TrajectoryStateOnSurface tsos,
const DetId id 
) const
private

create a hitless seed from a trajectory state

Definition at line 438 of file FastTSGFromPropagation.cc.

Referenced by trackerSeeds().

438  {
439 
441  return createSeed(tsos, container, id);
442 
443 }
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 445 of file FastTSGFromPropagation.cc.

References oppositeToMomentum, TrajectoryStateTransform::persistentState(), and theTSTransformer.

445  {
446 
447  PTrajectoryStateOnDet* seedTSOS = theTSTransformer->persistentState(tsos,id.rawId());
448  return TrajectorySeed(*seedTSOS,container,oppositeToMomentum);
449 
450 }
TrajectoryStateTransform * theTSTransformer
PTrajectoryStateOnDet * persistentState(const TrajectoryStateOnSurface &ts, unsigned int detid) const
double FastTSGFromPropagation::dxyDis ( const TrajectoryStateOnSurface tsos) const
private
const Chi2MeasurementEstimator* FastTSGFromPropagation::estimator ( void  ) const
inlineprivate

Definition at line 76 of file FastTSGFromPropagation.h.

References theEstimator.

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

76 { return theEstimator; }
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 486 of file FastTSGFromPropagation.cc.

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

486  {
487 
488  std::vector<TrajectoryMeasurement> result = tkLayerMeasurements()->measurements((*nl), staState, *propagator(), *estimator());
489  validMeasurements(result);
490  return result;
491 }
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
tuple result
Definition: query.py:137
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 461 of file FastTSGFromPropagation.cc.

References GeometricSearchDet::compatibleDets(), estimator(), propagator(), query::result, and theMeasTracker.

Referenced by trackerSeeds().

461  {
462 
463  std::vector<TrajectoryMeasurement> result;
464 
465  std::vector<DetLayer::DetWithState> compatDets = nl->compatibleDets(staState, *propagator(), *estimator());
466  if ( compatDets.empty() ) return result;
467 
468  for (std::vector<DetLayer::DetWithState>::const_iterator idws = compatDets.begin(); idws != compatDets.end(); ++idws) {
469  if ( idws->second.isValid() && (idws->first) ) {
470  std::vector<TrajectoryMeasurement> tmptm =
471  theMeasTracker->idToDet(idws->first->geographicalId())->fastMeasurements(idws->second, idws->second, *propagator(), *estimator());
472  //validMeasurements(tmptm);
473 // if ( tmptm.size() > 2 ) {
474 // std::stable_sort(tmptm.begin(),tmptm.end(),increasingEstimate());
475 // result.insert(result.end(),tmptm.begin(), tmptm.begin()+2);
476 // } else {
477  result.insert(result.end(),tmptm.begin(), tmptm.end());
478 // }
479  }
480  }
481 
482  return result;
483 
484 }
edm::ESHandle< MeasurementTracker > theMeasTracker
virtual std::vector< DetWithState > compatibleDets(const TrajectoryStateOnSurface &startingState, const Propagator &prop, const MeasurementEstimator &est) const
const Chi2MeasurementEstimator * estimator() const
tuple result
Definition: query.py:137
edm::ESHandle< Propagator > propagator() const
void FastTSGFromPropagation::getRescalingFactor ( const TrackCand staMuon)
private

Definition at line 516 of file FastTSGFromPropagation.cc.

References theFlexErrorRescaling.

Referenced by trackerSeeds().

516  {
517  float pt = (staMuon.second)->pt();
518  if ( pt < 13.0 ) theFlexErrorRescaling = 3;
519  else if ( pt < 30.0 ) theFlexErrorRescaling = 5;
520  else theFlexErrorRescaling = 10;
521  return;
522 }
void FastTSGFromPropagation::init ( const MuonServiceProxy service)
virtual

initialize

Reimplemented from TrackerSeedGenerator.

Definition at line 291 of file FastTSGFromPropagation.cc.

References Chi2MeasurementEstimatorESProducer_cfi::Chi2MeasurementEstimator, geometry, MuonErrorMatrix::get(), edm::ParameterSet::getParameter(), theAdjustAtIp, theCacheId_MT, theCacheId_TG, theConfig, theErrorMatrixAdjuster, theEstimator, theFixedErrorRescaling, theFlexErrorRescaling, theGeometry, theHitProducer, theMaxChi2, theNavigation, thePropagatorName, theResetMethod, theSelectStateFlag, theService, theSigmaZ, theSimTrackCollectionLabel, theTracker, theTSTransformer, theTTRHBuilder, theUpdateStateFlag, theUpdator, and theUseVertexStateFlag.

291  {
292 
293  theMaxChi2 = theConfig.getParameter<double>("MaxChi2");
294 
295  theFixedErrorRescaling = theConfig.getParameter<double>("ErrorRescaling");
296 
297  theFlexErrorRescaling = 1.0;
298 
299  theResetMethod = theConfig.getParameter<std::string>("ResetMethod");
300 
301  if (theResetMethod != "discrete" && theResetMethod != "fixed" && theResetMethod != "matrix" ) {
302  edm::LogError("FastTSGFromPropagation")
303  <<"Wrong error rescaling method: "<<theResetMethod <<"\n"
304  <<"Possible choices are: discrete, fixed, matrix.\n"
305  <<"Use discrete method" <<std::endl;
306  theResetMethod = "discrete";
307  }
308 
310 
311  theCacheId_MT = 0;
312 
313  theCacheId_TG = 0;
314 
315  thePropagatorName = theConfig.getParameter<std::string>("Propagator");
316 
317  theService = service;
318 
319  theUseVertexStateFlag = theConfig.getParameter<bool>("UseVertexState");
320 
321  theUpdateStateFlag = theConfig.getParameter<bool>("UpdateState");
322 
323  theSelectStateFlag = theConfig.getParameter<bool>("SelectState");
324 
325  theSimTrackCollectionLabel = theConfig.getParameter<edm::InputTag>("SimTrackCollectionLabel");
327 
328  theUpdator = new KFUpdator();
329 
331 
332  theSigmaZ = theConfig.getParameter<double>("SigmaZ");
333 
334  edm::ParameterSet errorMatrixPset = theConfig.getParameter<edm::ParameterSet>("errorMatrixPset");
335  if ( theResetMethod == "matrix" && !errorMatrixPset.empty()){
336  theAdjustAtIp = errorMatrixPset.getParameter<bool>("atIP");
337  theErrorMatrixAdjuster = new MuonErrorMatrix(errorMatrixPset);
338  } else {
339  theAdjustAtIp =false;
341  }
342 
343  theService->eventSetup().get<TrackerRecoGeometryRecord>().get(theTracker);
345 
347  theService->eventSetup().get<TrackerDigiGeometryRecord>().get(geometry);
348  theGeometry = &(*geometry);
349 
350  theService->eventSetup().get<TransientRecHitRecord>().get("WithTrackAngle", theTTRHBuilder);
351 
352 }
T getParameter(std::string const &) const
const Chi2MeasurementEstimator * theEstimator
unsigned long long theCacheId_MT
const DirectTrackerNavigation * theNavigation
edm::ESHandle< GeometricSearchTracker > theTracker
CurvilinearTrajectoryError get(GlobalVector momentum, bool convolute=true)
main method to be used. Retrieve a 5x5 symetrical matrix according to parametrization of error or sca...
const MuonServiceProxy * theService
TrajectoryStateTransform * theTSTransformer
const TrajectoryStateUpdator * theUpdator
MuonErrorMatrix * theErrorMatrixAdjuster
const TrackerGeometry * theGeometry
edm::InputTag theSimTrackCollectionLabel
ESHandle< TrackerGeometry > geometry
edm::ESHandle< TransientTrackingRecHitBuilder > theTTRHBuilder
unsigned long long theCacheId_TG
TrajectoryStateOnSurface FastTSGFromPropagation::innerState ( const TrackCand staMuon) const
private

Definition at line 398 of file FastTSGFromPropagation.cc.

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

Referenced by outerTkState().

398  {
399 
400  TrajectoryStateOnSurface innerTS;
401 
402  if ( staMuon.first && staMuon.first->isValid() ) {
403  if (staMuon.first->direction() == alongMomentum) {
404  innerTS = staMuon.first->firstMeasurement().updatedState();
405  }
406  else if (staMuon.first->direction() == oppositeToMomentum) {
407  innerTS = staMuon.first->lastMeasurement().updatedState();
408  }
409  } else {
410  innerTS = theTSTransformer->innerStateOnSurface(*(staMuon.second),*theService->trackingGeometry(), &*theService->magneticField());
411  }
412  //rescale the error
413  adjust(innerTS);
414 
415  return innerTS;
416 
417 // return theTSTransformer->innerStateOnSurface(*(staMuon.second),*theService->trackingGeometry(), &*theService->magneticField());
418 }
void adjust(FreeTrajectoryState &) const
adjust the error matrix of the FTS
const MuonServiceProxy * theService
TrajectoryStateTransform * theTSTransformer
TrajectoryStateOnSurface innerStateOnSurface(const reco::Track &tk, const TrackingGeometry &geom, const MagneticField *field) const
TrajectoryStateOnSurface FastTSGFromPropagation::outerTkState ( const TrackCand staMuon) const
private

Definition at line 420 of file FastTSGFromPropagation.cc.

References adjust(), TrajectoryStateTransform::initialFreeState(), innerState(), propagator(), query::result, theService, theTSTransformer, and theUseVertexStateFlag.

Referenced by trackerSeeds().

420  {
421 
423 
424  if ( theUseVertexStateFlag && staMuon.second->pt() > 1.0 ) {
425  FreeTrajectoryState iniState = theTSTransformer->initialFreeState(*(staMuon.second), &*theService->magneticField());
426  //rescale the error at IP
427  adjust(iniState);
428 
429  StateOnTrackerBound fromInside(&*(theService->propagator("PropagatorWithMaterial")));
430  result = fromInside(iniState);
431  } else {
432  StateOnTrackerBound fromOutside(&*propagator());
433  result = fromOutside(innerState(staMuon));
434  }
435  return result;
436 }
void adjust(FreeTrajectoryState &) const
adjust the error matrix of the FTS
const MuonServiceProxy * theService
TrajectoryStateTransform * theTSTransformer
tuple result
Definition: query.py:137
TrajectoryStateOnSurface innerState(const TrackCand &) const
edm::ESHandle< Propagator > propagator() const
FreeTrajectoryState initialFreeState(const reco::Track &tk, const MagneticField *field) const
bool FastTSGFromPropagation::passSelection ( const TrajectoryStateOnSurface tsos) const
private

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

Definition at line 493 of file FastTSGFromPropagation.cc.

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

Referenced by trackerSeeds().

493  {
494  if ( !theSelectStateFlag ) return true;
495  else {
496  if ( theBeamSpot.isValid() ) {
497  return ( ( fabs(zDis(tsos) - theBeamSpot->z0() ) < theSigmaZ) );
498 
499  } else {
500  return ( ( fabs(zDis(tsos)) < theSigmaZ) );
501 // double theDxyCut = 100;
502 // return ( (zDis(tsos) < theSigmaZ) && (dxyDis(tsos) < theDxyCut) );
503  }
504  }
505 
506 }
edm::Handle< reco::BeamSpot > theBeamSpot
bool isValid() const
Definition: HandleBase.h:76
double zDis(const TrajectoryStateOnSurface &tsos) const
edm::ESHandle<Propagator> FastTSGFromPropagation::propagator ( void  ) const
inlineprivate

Definition at line 78 of file FastTSGFromPropagation.h.

References MuonServiceProxy::propagator(), thePropagatorName, and theService.

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

const MuonServiceProxy * theService
edm::ESHandle< Propagator > propagator(std::string propagatorName) const
get the propagator
void FastTSGFromPropagation::setEvent ( const edm::Event iEvent)
virtual

set an event

Reimplemented from TrackerSeedGenerator.

Definition at line 354 of file FastTSGFromPropagation.cc.

References edm::Event::getByLabel(), edm::Event::getByType(), LogTrace, theBeamSpot, theCacheId_MT, theCacheId_TG, theCategory, theGSRecHits, theHitProducer, theMeasTracker, theNavigation, theService, theSimTrackCollectionLabel, theSimTracks, theTkLayerMeasurements, theTracker, and theUpdateStateFlag.

354  {
355 
356  bool measTrackerChanged = false;
357 
358  iEvent.getByType(theBeamSpot);
359 
360  // retrieve the MC truth (SimTracks)
363 
364 
365  unsigned long long newCacheId_MT = theService->eventSetup().get<CkfComponentsRecord>().cacheIdentifier();
366 
367  if ( theUpdateStateFlag && newCacheId_MT != theCacheId_MT ) {
368  LogTrace(theCategory) << "Measurment Tracker Geometry changed!";
369  theCacheId_MT = newCacheId_MT;
370  theService->eventSetup().get<CkfComponentsRecord>().get(theMeasTracker);
371  measTrackerChanged = true;
372  }
373 
374  //if ( theUpdateStateFlag ) theMeasTracker->update(iEvent);
375 
376  if ( measTrackerChanged && (&*theMeasTracker) ) {
379  }
380 
381  bool trackerGeomChanged = false;
382 
383  unsigned long long newCacheId_TG = theService->eventSetup().get<TrackerRecoGeometryRecord>().cacheIdentifier();
384 
385  if ( newCacheId_TG != theCacheId_TG ) {
386  LogTrace(theCategory) << "Tracker Reco Geometry changed!";
387  theCacheId_TG = newCacheId_TG;
388  theService->eventSetup().get<TrackerRecoGeometryRecord>().get(theTracker);
389  trackerGeomChanged = true;
390  }
391 
392  if ( trackerGeomChanged && (&*theTracker) ) {
393  if ( theNavigation ) delete theNavigation;
395  }
396 }
edm::ESHandle< MeasurementTracker > theMeasTracker
edm::Handle< reco::BeamSpot > theBeamSpot
unsigned long long theCacheId_MT
edm::Handle< edm::SimTrackContainer > theSimTracks
const DirectTrackerNavigation * theNavigation
edm::ESHandle< GeometricSearchTracker > theTracker
const MuonServiceProxy * theService
bool getByType(Handle< PROD > &result) const
Definition: Event.h:397
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:355
#define LogTrace(id)
edm::Handle< SiTrackerGSMatchedRecHit2DCollection > theGSRecHits
edm::InputTag theSimTrackCollectionLabel
const LayerMeasurements * theTkLayerMeasurements
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 571 of file FastTSGFromPropagation.cc.

References cond::rpcobgas::detid, i, j, gen::k, TrajectoryStateOnSurface::localError(), TrajectoryStateOnSurface::localParameters(), m, LocalTrajectoryError::matrix(), and TrajectoryStateOnSurface::surfaceSide().

574 {
575  const AlgebraicSymMatrix55& m = ts.localError().matrix();
576  int dim = 5;
577  float localErrors[15];
578  int k = 0;
579  for (int i=0; i<dim; ++i) {
580  for (int j=0; j<=i; ++j) {
581  localErrors[k++] = m(i,j);
582  }
583  }
584  int surfaceSide = static_cast<int>(ts.surfaceSide());
586  localErrors, detid,
587  surfaceSide);
588 }
int i
Definition: DBlmapReader.cc:9
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.
int j
Definition: DBlmapReader.cc:9
const AlgebraicSymMatrix55 & matrix() const
const LocalTrajectoryError & localError() const
int k[5][pyjets_maxn]
const LayerMeasurements* FastTSGFromPropagation::tkLayerMeasurements ( ) const
inlineprivate

Definition at line 72 of file FastTSGFromPropagation.h.

References theTkLayerMeasurements.

Referenced by findMeasurements().

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

generate seed(s) for a track

Definition at line 71 of file FastTSGFromPropagation.cc.

References PV3DBase< T, PVType, FrameType >::basicVector(), DeDxDiscriminatorTools::charge(), CoreSimTrack::charge(), RecHit2DLocalPos::clone(), DirectTrackerNavigation::compatibleLayers(), createSeed(), PTrajectoryStateOnDet::detId(), estimator(), PV3DBase< T, PVType, FrameType >::eta(), findMeasurements_new(), TrajectoryStateOnSurface::freeState(), g, TrackingRecHit::geographicalId(), getRescalingFactor(), TrajectoryStateOnSurface::globalMomentum(), TrajectoryStateOnSurface::globalPosition(), TrackerRecHit::hit(), TrackerGeometry::idToDet(), TrajectoryStateOnSurface::isValid(), LogTrace, oppositeToMomentum, outerTkState(), passSelection(), PV3DBase< T, PVType, FrameType >::perp(), position, propagator(), edm::OwnVector< T, P >::push_back(), DetId::rawId(), GeomDet::surface(), theCategory, theGeometry, theGSRecHits, theNavigation, theResetMethod, theService, theTTRHBuilder, theUpdateStateFlag, SimTrack::trackerSurfaceMomentum(), SimTrack::trackerSurfacePosition(), TrajectoryStateTransform::transientState(), TrajectoryStateUpdator::update(), updator(), and PV3DBase< T, PVType, FrameType >::y().

71  {
72 
73  if ( theResetMethod == "discrete" ) getRescalingFactor(staMuon);
74 
75  TrajectoryStateOnSurface staState = outerTkState(staMuon);
76 
77  if ( !staState.isValid() ) {
78  LogTrace(theCategory) << "Error: initial state from L2 muon is invalid.";
79  return;
80  }
81 
82  LogTrace(theCategory) << "begin of trackerSeed:\n staState pos: "<<staState.globalPosition()
83  << " mom: "<<staState.globalMomentum()
84  <<"pos eta: "<<staState.globalPosition().eta()
85  <<"mom eta: "<<staState.globalMomentum().eta();
86 
87 
88  std::vector<const DetLayer*> nls = theNavigation->compatibleLayers(*(staState.freeState()), oppositeToMomentum);
89 
90  LogTrace(theCategory) << " compatible layers: "<<nls.size();
91 
92  if ( nls.empty() ) return;
93 
94  int ndesLayer = 0;
95 
96  bool usePredictedState = false;
97 
98  if ( theUpdateStateFlag ) { //use updated states
99  std::vector<TrajectoryMeasurement> alltm;
100 
101  for (std::vector<const DetLayer*>::const_iterator inl = nls.begin();
102  inl != nls.end(); inl++, ndesLayer++ ) {
103  if ( (*inl == 0) ) break;
104 // if ( (inl != nls.end()-1 ) && ( (*inl)->subDetector() == GeomDetEnumerators::TEC ) && ( (*(inl+1))->subDetector() == GeomDetEnumerators::TOB ) ) continue;
105  alltm = findMeasurements_new(*inl, staState);
106  if ( (!alltm.empty()) ) {
107  LogTrace(theCategory) << "final compatible layer: "<<ndesLayer;
108  break;
109  }
110  }
111 
112  if ( alltm.empty() ) {
113  LogTrace(theCategory) << " NO Measurements Found: eta: "<<staState.globalPosition().eta() <<"pt "<<staState.globalMomentum().perp();
114  usePredictedState = true;
115  } else {
116  LogTrace(theCategory) << " Measurements for seeds: "<<alltm.size();
117  std::stable_sort(alltm.begin(),alltm.end(),increasingEstimate());
118  if ( alltm.size() > 5 ) alltm.erase(alltm.begin() + 5, alltm.end());
119 
120  const edm::SimTrackContainer* simTracks = &(*theSimTracks);
121  const std::vector<unsigned> theSimTrackIds = theGSRecHits->ids();
122  TrackerRecHit theSeedHits;
123  std::vector<TrackerRecHit> outerHits;
124 
125  //std::vector<TrajectorySeed> tmpTS;
126  bool isMatch = false;
127  for (std::vector<TrajectoryMeasurement>::const_iterator itm = alltm.begin(); itm != alltm.end(); itm++) {
128  const TrajectoryStateOnSurface seedState = itm->predictedState();
129  double preY = seedState.globalPosition().y();
130 
131  // Check SimTrack
132  TrackingRecHit* aTrackingRecHit;
133  FreeTrajectoryState simtrack_trackerstate;
134  for( unsigned tkId=0; tkId != theSimTrackIds.size(); ++tkId ) {
135  const SimTrack & simtrack = (*simTracks)[theSimTrackIds[tkId]];
136  SiTrackerGSMatchedRecHit2DCollection::range theRecHitRange = theGSRecHits->get(theSimTrackIds[tkId]);
137  SiTrackerGSMatchedRecHit2DCollection::const_iterator theRecHitRangeIteratorBegin = theRecHitRange.first;
138  SiTrackerGSMatchedRecHit2DCollection::const_iterator theRecHitRangeIteratorEnd = theRecHitRange.second;
140 
142  simtrack.trackerSurfacePosition().y(),
143  simtrack.trackerSurfacePosition().z());
144  GlobalVector momentum(simtrack.trackerSurfaceMomentum().x(),
145  simtrack.trackerSurfaceMomentum().y(),
146  simtrack.trackerSurfaceMomentum().z());
147  int charge = (int)simtrack.charge();
148  GlobalTrajectoryParameters glb_parameters(position, momentum, charge, &*theService->magneticField().product());
149  simtrack_trackerstate = FreeTrajectoryState(glb_parameters);
150 
151  unsigned int outerId = 0;
152  for( iterRecHit = theRecHitRangeIteratorBegin; iterRecHit != theRecHitRangeIteratorEnd; ++iterRecHit) {
153  theSeedHits = TrackerRecHit(&(*iterRecHit), theGeometry);
154  unsigned int id = theSeedHits.hit()->geographicalId().rawId();
155  if( preY < 0 ) {
156  if( id > outerId ) outerId = id;
157  }
158  else {
159  if( id > outerId ) outerId = id;
160  }
161  }
162  for( iterRecHit = theRecHitRangeIteratorBegin; iterRecHit != theRecHitRangeIteratorEnd; ++iterRecHit) {
163  theSeedHits = TrackerRecHit(&(*iterRecHit), theGeometry);
164  if( itm->recHit()->hit()->geographicalId().rawId() == theSeedHits.hit()->geographicalId().rawId() ) {
165  aTrackingRecHit = theSeedHits.hit()->clone();
166  TransientTrackingRecHit::ConstRecHitPointer recHit = theTTRHBuilder->build(aTrackingRecHit);
167  if( !recHit ) continue;
168  TrajectoryStateOnSurface updatedTSOS = updator()->update(seedState, *(recHit));
169  if( updatedTSOS.isValid() && passSelection(updatedTSOS) ) {
171  container.push_back(recHit->hit()->clone());
172  TrajectorySeed ts = createSeed(updatedTSOS, container, recHit->geographicalId());
173  // check direction
174  const BasicTrajectorySeed* aSeed = &ts;
175  PTrajectoryStateOnDet PTSOD = aSeed->startingState();
176  TrajectoryStateTransform tsTransform;
177  const GeomDet *g = theGeometry->idToDet(PTSOD.detId());
178  TrajectoryStateOnSurface tsos = tsTransform.transientState(PTSOD, &(g->surface()), &*theService->magneticField().product());
179  if( tsos.globalMomentum().basicVector()*seedState.globalMomentum().basicVector() < 0. ) continue;
180  result.push_back(ts);
181  isMatch = true;
182  }
183  }
184  }
185  }
186  }
187  if( !isMatch ) {
188  // if there is no hits w.r.t. TM, find outermost hit
189  for (std::vector<TrajectoryMeasurement>::const_iterator itm = alltm.begin(); itm != alltm.end(); itm++) {
190  const TrajectoryStateOnSurface seedState = itm->predictedState();
191  double preY = seedState.globalPosition().y();
192 
193  // Check SimTrack
194  TrackingRecHit* aTrackingRecHit;
195  FreeTrajectoryState simtrack_trackerstate;
196  for( unsigned tkId=0; tkId != theSimTrackIds.size(); ++tkId ) {
197  const SimTrack & simtrack = (*simTracks)[theSimTrackIds[tkId]];
198  SiTrackerGSMatchedRecHit2DCollection::range theRecHitRange = theGSRecHits->get(theSimTrackIds[tkId]);
199  SiTrackerGSMatchedRecHit2DCollection::const_iterator theRecHitRangeIteratorBegin = theRecHitRange.first;
200  SiTrackerGSMatchedRecHit2DCollection::const_iterator theRecHitRangeIteratorEnd = theRecHitRange.second;
202 
204  simtrack.trackerSurfacePosition().y(),
205  simtrack.trackerSurfacePosition().z());
206  GlobalVector momentum(simtrack.trackerSurfaceMomentum().x(),
207  simtrack.trackerSurfaceMomentum().y(),
208  simtrack.trackerSurfaceMomentum().z());
209  int charge = (int)simtrack.charge();
210  GlobalTrajectoryParameters glb_parameters(position, momentum, charge, &*theService->magneticField().product());
211  simtrack_trackerstate = FreeTrajectoryState(glb_parameters);
212 
213  unsigned int outerId = 0;
214  for( iterRecHit = theRecHitRangeIteratorBegin; iterRecHit != theRecHitRangeIteratorEnd; ++iterRecHit) {
215  theSeedHits = TrackerRecHit(&(*iterRecHit), theGeometry);
216  unsigned int id = theSeedHits.hit()->geographicalId().rawId();
217  if( preY < 0 ) {
218  if( id > outerId ) outerId = id;
219  }
220  else {
221  if( id > outerId ) outerId = id;
222  }
223  }
224  for( iterRecHit = theRecHitRangeIteratorBegin; iterRecHit != theRecHitRangeIteratorEnd; ++iterRecHit) {
225  theSeedHits = TrackerRecHit(&(*iterRecHit), theGeometry);
226  if( outerId == theSeedHits.hit()->geographicalId().rawId() ) {
227  aTrackingRecHit = theSeedHits.hit()->clone();
228  TransientTrackingRecHit::ConstRecHitPointer recHit = theTTRHBuilder->build(aTrackingRecHit);
229  if( !recHit ) continue;
230  TrajectoryStateOnSurface updatedTSOS = updator()->update(seedState, *(recHit));
231  if( updatedTSOS.isValid() && passSelection(updatedTSOS) ) {
233  container.push_back(recHit->hit()->clone());
234  TrajectorySeed ts = createSeed(updatedTSOS, container, recHit->geographicalId());
235  // check direction
236  const BasicTrajectorySeed* aSeed = &ts;
237  PTrajectoryStateOnDet PTSOD = aSeed->startingState();
238  TrajectoryStateTransform tsTransform;
239  const GeomDet *g = theGeometry->idToDet(PTSOD.detId());
240  TrajectoryStateOnSurface tsos = tsTransform.transientState(PTSOD, &(g->surface()), &*theService->magneticField().product());
241  if( tsos.globalMomentum().basicVector()*seedState.globalMomentum().basicVector() < 0. ) continue;
242  result.push_back(ts);
243  }
244  }
245  }
246  }
247  }
248  }
249 
250  /*
251  for( unsigned ir = 0; ir < tmpTS.size(); ir++ ) {
252  const BasicTrajectorySeed* aSeed = &((tmpTS)[ir]);
253  PTrajectoryStateOnDet PTSOD = aSeed->startingState();
254  TrajectoryStateTransform tsTransform;
255  DetId seedDetId(PTSOD.detId());
256  const GeomDet * g = theGeometry->idToDet(seedDetId);
257  TrajectoryStateOnSurface tsos = tsTransform.transientState(PTSOD, &(g->surface()), &*theService->magneticField().product());
258  cout << "tsos3 = " << tsos.globalMomentum() << endl;
259  if( _index == ir ) {
260  cout << "tsos4 = " << tsos.globalMomentum() << endl;
261  result.push_back(tmpTS[ir]);
262  }
263  }
264  */
265  LogTrace(theCategory) << "result: "<<result.size();
266  return;
267  }
268  }
269 
270  if ( !theUpdateStateFlag || usePredictedState ) { //use predicted states
271  LogTrace(theCategory) << "use predicted state: ";
272  for (std::vector<const DetLayer*>::const_iterator inl = nls.begin();
273  inl != nls.end(); inl++ ) {
274 
275  if ( !result.empty() || *inl == 0 ) {
276  break;
277  }
278  std::vector<DetLayer::DetWithState> compatDets = (*inl)->compatibleDets(staState, *propagator(), *estimator());
279  LogTrace(theCategory) << " compatDets "<<compatDets.size();
280  if ( compatDets.empty() ) continue;
281  TrajectorySeed ts = createSeed(compatDets.front().second, compatDets.front().first->geographicalId());
282  result.push_back(ts);
283 
284  }
285  LogTrace(theCategory) << "result: "<<result.size();
286  return;
287  }
288  return;
289 }
const math::XYZVectorD & trackerSurfacePosition() const
Definition: SimTrack.h:36
std::pair< const_iterator, const_iterator > range
iterator range
Definition: RangeMap.h:53
T perp() const
Definition: PV3DBase.h:66
const DirectTrackerNavigation * theNavigation
virtual TrajectoryStateOnSurface update(const TrajectoryStateOnSurface &, const TransientTrackingRecHit &) const =0
virtual RecHit2DLocalPos * clone() const =0
T y() const
Definition: PV3DBase.h:57
GlobalPoint globalPosition() const
const MuonServiceProxy * theService
float charge() const
charge
Definition: CoreSimTrack.cc:3
double charge(const std::vector< uint8_t > &Ampls)
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
static int position[TOTALCHAMBERS][3]
Definition: ReadPGInfo.cc:509
const Chi2MeasurementEstimator * estimator() const
uint32_t rawId() const
get the raw id
Definition: DetId.h:45
void getRescalingFactor(const TrackCand &staMuon)
C::const_iterator const_iterator
constant access iterator type
Definition: RangeMap.h:46
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
FreeTrajectoryState * freeState(bool withErrors=true) const
tuple result
Definition: query.py:137
TrajectoryStateOnSurface transientState(const PTrajectoryStateOnDet &ts, const Surface *surface, const MagneticField *field) const
std::vector< TrajectoryMeasurement > findMeasurements_new(const DetLayer *, const TrajectoryStateOnSurface &) const
look for measurements on the first compatible layer (faster way)
TrajectoryStateOnSurface outerTkState(const TrackCand &) const
virtual const GeomDet * idToDet(DetId) const
#define LogTrace(id)
edm::Handle< SiTrackerGSMatchedRecHit2DCollection > theGSRecHits
const TrackerGeometry * theGeometry
const TrajectoryStateUpdator * updator() const
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
const unsigned int detId() const
T eta() const
Definition: PV3DBase.h:70
const GSSiTrackerRecHit2DLocalPos * hit() const
Definition: TrackerRecHit.h:73
GlobalVector globalMomentum() const
std::vector< const DetLayer * > compatibleLayers(const FreeTrajectoryState &fts, PropagationDirection timeDirection) const
find compatible layers for a given trajectory state
DetId geographicalId() const
const BasicVectorType & basicVector() const
Definition: PV3DBase.h:54
edm::ESHandle< TransientTrackingRecHitBuilder > theTTRHBuilder
std::vector< SimTrack > SimTrackContainer
virtual const BoundPlane & surface() const
The nominal surface of the GeomDet.
Definition: GeomDet.h:37
const TrajectoryStateUpdator* FastTSGFromPropagation::updator ( ) const
inlineprivate

Definition at line 74 of file FastTSGFromPropagation.h.

References theUpdator.

Referenced by trackerSeeds().

74 {return theUpdator;}
const TrajectoryStateUpdator * theUpdator
void FastTSGFromPropagation::validMeasurements ( std::vector< TrajectoryMeasurement > &  tms) const
private

select valid measurements

Definition at line 453 of file FastTSGFromPropagation.cc.

Referenced by findMeasurements().

453  {
454 
455  std::vector<TrajectoryMeasurement>::iterator tmsend = std::remove_if(tms.begin(), tms.end(), isInvalid());
456  tms.erase(tmsend, tms.end());
457  return;
458 
459 }
double FastTSGFromPropagation::zDis ( const TrajectoryStateOnSurface tsos) const
private

Member Data Documentation

bool FastTSGFromPropagation::theAdjustAtIp
private

Definition at line 166 of file FastTSGFromPropagation.h.

Referenced by init().

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

Definition at line 172 of file FastTSGFromPropagation.h.

Referenced by passSelection(), and setEvent().

unsigned long long FastTSGFromPropagation::theCacheId_MT
private

Definition at line 123 of file FastTSGFromPropagation.h.

Referenced by init(), and setEvent().

unsigned long long FastTSGFromPropagation::theCacheId_TG
private

Definition at line 124 of file FastTSGFromPropagation.h.

Referenced by init(), and setEvent().

std::string FastTSGFromPropagation::theCategory
private
edm::ParameterSet FastTSGFromPropagation::theConfig
private

Definition at line 170 of file FastTSGFromPropagation.h.

Referenced by init().

MuonErrorMatrix* FastTSGFromPropagation::theErrorMatrixAdjuster
private

Definition at line 164 of file FastTSGFromPropagation.h.

Referenced by adjust(), init(), and ~FastTSGFromPropagation().

const Chi2MeasurementEstimator* FastTSGFromPropagation::theEstimator
private

Definition at line 141 of file FastTSGFromPropagation.h.

Referenced by estimator(), init(), and ~FastTSGFromPropagation().

double FastTSGFromPropagation::theFixedErrorRescaling
private

Definition at line 149 of file FastTSGFromPropagation.h.

Referenced by adjust(), and init().

double FastTSGFromPropagation::theFlexErrorRescaling
private

Definition at line 147 of file FastTSGFromPropagation.h.

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

const TrackerGeometry* FastTSGFromPropagation::theGeometry
private

Definition at line 135 of file FastTSGFromPropagation.h.

Referenced by init(), and trackerSeeds().

edm::Handle<SiTrackerGSMatchedRecHit2DCollection> FastTSGFromPropagation::theGSRecHits
private

Definition at line 174 of file FastTSGFromPropagation.h.

Referenced by setEvent(), and trackerSeeds().

edm::InputTag FastTSGFromPropagation::theHitProducer
private

Definition at line 156 of file FastTSGFromPropagation.h.

Referenced by init(), and setEvent().

double FastTSGFromPropagation::theMaxChi2
private

Definition at line 145 of file FastTSGFromPropagation.h.

Referenced by init().

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

Definition at line 132 of file FastTSGFromPropagation.h.

Referenced by findMeasurements_new(), and setEvent().

const DirectTrackerNavigation* FastTSGFromPropagation::theNavigation
private

Definition at line 134 of file FastTSGFromPropagation.h.

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

std::string FastTSGFromPropagation::thePropagatorName
private

Definition at line 162 of file FastTSGFromPropagation.h.

Referenced by init(), and propagator().

std::string FastTSGFromPropagation::theResetMethod
private

Definition at line 158 of file FastTSGFromPropagation.h.

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

bool FastTSGFromPropagation::theSelectStateFlag
private

Definition at line 160 of file FastTSGFromPropagation.h.

Referenced by init(), and passSelection().

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

Definition at line 168 of file FastTSGFromPropagation.h.

Referenced by init(), and passSelection().

edm::InputTag FastTSGFromPropagation::theSimTrackCollectionLabel
private

Definition at line 155 of file FastTSGFromPropagation.h.

Referenced by init(), and setEvent().

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

Definition at line 173 of file FastTSGFromPropagation.h.

Referenced by setEvent().

const LayerMeasurements* FastTSGFromPropagation::theTkLayerMeasurements
private
edm::ESHandle<GeometricSearchTracker> FastTSGFromPropagation::theTracker
private

Definition at line 130 of file FastTSGFromPropagation.h.

Referenced by init(), and setEvent().

TrajectoryStateTransform* FastTSGFromPropagation::theTSTransformer
private
edm::ESHandle<TransientTrackingRecHitBuilder> FastTSGFromPropagation::theTTRHBuilder
private

Definition at line 175 of file FastTSGFromPropagation.h.

Referenced by init(), and trackerSeeds().

bool FastTSGFromPropagation::theUpdateStateFlag
private

Definition at line 153 of file FastTSGFromPropagation.h.

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

const TrajectoryStateUpdator* FastTSGFromPropagation::theUpdator
private

Definition at line 139 of file FastTSGFromPropagation.h.

Referenced by init(), updator(), and ~FastTSGFromPropagation().

bool FastTSGFromPropagation::theUseVertexStateFlag
private

Definition at line 151 of file FastTSGFromPropagation.h.

Referenced by init(), and outerTkState().