CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Protected Attributes | Private Member Functions
SeedFromConsecutiveHitsCreator Class Reference

#include <SeedFromConsecutiveHitsCreator.h>

Inheritance diagram for SeedFromConsecutiveHitsCreator:
SeedCreator GCC11_FINAL< T, TOPO > GCC11_FINAL< T, TOPO >

Public Member Functions

virtual void init (const TrackingRegion &region, const edm::EventSetup &es, const SeedComparitor *filter) GCC11_FINAL
 
virtual void makeSeed (TrajectorySeedCollection &seedCollection, const SeedingHitSet &hits) GCC11_FINAL
 
 SeedFromConsecutiveHitsCreator (const edm::ParameterSet &cfg)
 
 SeedFromConsecutiveHitsCreator (const std::string &propagator="PropagatorWithMaterial", double seedMomentumForBOFF=-5.0, double aOriginTransverseErrorMultiplier=1.0, double aMinOneOverPtError=1.0)
 
virtual ~SeedFromConsecutiveHitsCreator ()
 
- Public Member Functions inherited from SeedCreator
virtual ~SeedCreator ()
 

Protected Attributes

edm::ESHandle< MagneticFieldbfield
 
const SeedComparitorfilter = nullptr
 
bool isBOFF = false
 
float nomField
 
edm::ESHandle< PropagatorpropagatorHandle
 
const TrackingRegionregion = nullptr
 
double theBOFFMomentum
 
double theMinOneOverPtError
 
double theOriginTransverseErrorMultiplier
 
std::string thePropagatorLabel
 
edm::ESHandle< TrackerGeometrytracker
 

Private Member Functions

void buildSeed (TrajectorySeedCollection &seedCollection, const SeedingHitSet &hits, const FreeTrajectoryState &fts) const dso_hidden
 
bool checkHit (const TrajectoryStateOnSurface &tsos, const TransientTrackingRecHit::ConstRecHitPointer &hit) const dso_hidden
 
CurvilinearTrajectoryError initialError (float sin2Theta) const dso_hidden
 
virtual bool initialKinematic (GlobalTrajectoryParameters &kine, const SeedingHitSet &hits) const
 
TransientTrackingRecHit::RecHitPointer refitHit (const TransientTrackingRecHit::ConstRecHitPointer &hit, const TrajectoryStateOnSurface &state) const dso_hidden
 

Detailed Description

Definition at line 15 of file SeedFromConsecutiveHitsCreator.h.

Constructor & Destructor Documentation

SeedFromConsecutiveHitsCreator::SeedFromConsecutiveHitsCreator ( const edm::ParameterSet cfg)
inline

Definition at line 18 of file SeedFromConsecutiveHitsCreator.h.

18  :
19  thePropagatorLabel(cfg.getParameter<std::string>("propagator")),
20  theBOFFMomentum(cfg.existsAs<double>("SeedMomentumForBOFF") ? cfg.getParameter<double>("SeedMomentumForBOFF") : 5.0),
21  theOriginTransverseErrorMultiplier(cfg.existsAs<double>("OriginTransverseErrorMultiplier") ? cfg.getParameter<double>("OriginTransverseErrorMultiplier") : 1.0),
22  theMinOneOverPtError(cfg.existsAs<double>("MinOneOverPtError") ? cfg.getParameter<double>("MinOneOverPtError") : 1.0)
23  {}
T getParameter(std::string const &) const
bool existsAs(std::string const &parameterName, bool trackiness=true) const
checks if a parameter exists as a given type
Definition: ParameterSet.h:187
SeedFromConsecutiveHitsCreator::SeedFromConsecutiveHitsCreator ( const std::string &  propagator = "PropagatorWithMaterial",
double  seedMomentumForBOFF = -5.0,
double  aOriginTransverseErrorMultiplier = 1.0,
double  aMinOneOverPtError = 1.0 
)
inline
SeedFromConsecutiveHitsCreator::~SeedFromConsecutiveHitsCreator ( )
virtual

Definition at line 23 of file SeedFromConsecutiveHitsCreator.cc.

23 {}

Member Function Documentation

void SeedFromConsecutiveHitsCreator::buildSeed ( TrajectorySeedCollection seedCollection,
const SeedingHitSet hits,
const FreeTrajectoryState fts 
) const
private

Definition at line 106 of file SeedFromConsecutiveHitsCreator.cc.

References alongMomentum, checkHit(), SeedComparitor::compatible(), filter, TrackingRecHit::geographicalId(), TrajectoryStateOnSurface::isValid(), trajectoryStateTransform::persistentState(), Propagator::propagate(), LargeD0_PixelPairStep_cff::propagator, edm::OwnVector< T, P >::push_back(), DetId::rawId(), refitHit(), SeedingHitSet::size(), evf::utils::state, and tracker.

Referenced by makeSeed().

110 {
111  const Propagator* propagator = &(*propagatorHandle);
112 
113  // get updator
114  KFUpdator updator;
115 
116  // Now update initial state track using information from seed hits.
117 
118  TrajectoryStateOnSurface updatedState;
120 
121  const TrackingRecHit* hit = 0;
122  for ( unsigned int iHit = 0; iHit < hits.size(); iHit++) {
123  hit = hits[iHit]->hit();
124  TrajectoryStateOnSurface state = (iHit==0) ?
125  propagator->propagate(fts,tracker->idToDet(hit->geographicalId())->surface())
126  : propagator->propagate(updatedState, tracker->idToDet(hit->geographicalId())->surface());
127  if (!state.isValid()) return;
128 
129  TransientTrackingRecHit::ConstRecHitPointer const & tth = hits[iHit];
130 
131  TransientTrackingRecHit::RecHitPointer const & newtth = refitHit( tth, state);
132 
133  if (!checkHit(state,newtth)) return;
134 
135  updatedState = updator.update(state, *newtth);
136  if (!updatedState.isValid()) return;
137 
138  seedHits.push_back(newtth->hit()->clone());
139 
140  }
141 
142 
143  PTrajectoryStateOnDet const & PTraj =
145  TrajectorySeed seed(PTraj,std::move(seedHits),alongMomentum);
146  if ( !filter || filter->compatible(seed)) seedCollection.push_back(seed);
147 
148 }
PTrajectoryStateOnDet persistentState(const TrajectoryStateOnSurface &ts, unsigned int detid)
bool checkHit(const TrajectoryStateOnSurface &tsos, const TransientTrackingRecHit::ConstRecHitPointer &hit) const dso_hidden
virtual bool compatible(const SeedingHitSet &hits, const TrackingRegion &region) const =0
uint32_t rawId() const
get the raw id
Definition: DetId.h:45
void push_back(D *&d)
Definition: OwnVector.h:273
virtual TrajectoryStateOnSurface propagate(const FreeTrajectoryState &, const Surface &) const
Definition: Propagator.cc:12
edm::ESHandle< TrackerGeometry > tracker
char state
Definition: procUtils.cc:75
unsigned int size() const
Definition: SeedingHitSet.h:40
DetId geographicalId() const
TransientTrackingRecHit::RecHitPointer refitHit(const TransientTrackingRecHit::ConstRecHitPointer &hit, const TrajectoryStateOnSurface &state) const dso_hidden
bool SeedFromConsecutiveHitsCreator::checkHit ( const TrajectoryStateOnSurface tsos,
const TransientTrackingRecHit::ConstRecHitPointer hit 
) const
private

Definition at line 158 of file SeedFromConsecutiveHitsCreator.cc.

References SeedComparitor::compatible(), and filter.

Referenced by buildSeed().

161 {
162  return (filter ? filter->compatible(tsos,hit) : true);
163 }
virtual bool compatible(const SeedingHitSet &hits, const TrackingRegion &region) const =0
void SeedFromConsecutiveHitsCreator::init ( const TrackingRegion region,
const edm::EventSetup es,
const SeedComparitor filter 
)
virtual

Implements SeedCreator.

Definition at line 25 of file SeedFromConsecutiveHitsCreator.cc.

References bfield, filter, edm::EventSetup::get(), isBOFF, nomField, propagatorHandle, region, thePropagatorLabel, and tracker.

Referenced by SeedGeneratorFromProtoTracksEDProducer::produce().

27  {
28  region = &iregion;
29  filter = ifilter;
30  // get tracker
32  // get propagator
34  // mag field
36  nomField = bfield->nominalValue();
37  isBOFF = (0==nomField);
38 }
edm::ESHandle< Propagator > propagatorHandle
const T & get() const
Definition: EventSetup.h:55
edm::ESHandle< TrackerGeometry > tracker
edm::ESHandle< MagneticField > bfield
CurvilinearTrajectoryError SeedFromConsecutiveHitsCreator::initialError ( float  sin2Theta) const
private

Definition at line 85 of file SeedFromConsecutiveHitsCreator.cc.

References funct::C, max(), TrackingRegion::originRBound(), TrackingRegion::originZBound(), TrackingRegion::ptMin(), region, funct::sqr(), theMinOneOverPtError, and theOriginTransverseErrorMultiplier.

Referenced by makeSeed().

86 {
87  // Set initial uncertainty on track parameters, using only P.V. constraint and no hit
88  // information.
89  AlgebraicSymMatrix55 C = ROOT::Math::SMatrixIdentity();
90 
91 // FIXME: minC00. Prevent apriori uncertainty in 1/P from being too small,
92 // to avoid instabilities.
93 // N.B. This parameter needs optimising ...
94  // Probably OK based on quick study: KS 22/11/12.
95  float sin2th = sin2Theta;
96  float minC00 = sqr(theMinOneOverPtError);
97  C[0][0] = std::max(sin2th/sqr(region->ptMin()), minC00);
98  float zErr = sqr(region->originZBound());
100  C[3][3] = transverseErr;
101  C[4][4] = zErr*sin2th + transverseErr*(1.f-sin2th);
102 
103  return CurvilinearTrajectoryError(C);
104 }
float originRBound() const
bounds the particle vertex in the transverse plane
ROOT::Math::SMatrix< double, 5, 5, ROOT::Math::MatRepSym< double, 5 > > AlgebraicSymMatrix55
const T & max(const T &a, const T &b)
float originZBound() const
bounds the particle vertex in the longitudinal plane
float ptMin() const
minimal pt of interest
Square< F >::type sqr(const F &f)
Definition: Square.h:13
bool SeedFromConsecutiveHitsCreator::initialKinematic ( GlobalTrajectoryParameters kine,
const SeedingHitSet hits 
) const
privatevirtual

Reimplemented in GCC11_FINAL< T, TOPO >, and GCC11_FINAL< T, TOPO >.

Definition at line 57 of file SeedFromConsecutiveHitsCreator.cc.

References bfield, GlobalTrajectoryParameters::charge(), SeedComparitor::compatible(), filter, isBOFF, GlobalTrajectoryParameters::momentum(), nomField, TrackingRegion::origin(), GlobalTrajectoryParameters::position(), region, theBOFFMomentum, Vector3DBase< T, FrameTag >::unit(), and unlikely.

Referenced by makeSeed().

58  {
59 
62  const GlobalPoint& vertexPos = region->origin();
63 
64  FastHelix helix(tth2->globalPosition(), tth1->globalPosition(), vertexPos, nomField,&*bfield);
65  if (helix.isValid()) {
66  kine = helix.stateAtVertex();
67  } else {
68  GlobalVector initMomentum(tth2->globalPosition() - vertexPos);
69  initMomentum *= (100./initMomentum.perp());
70  kine = GlobalTrajectoryParameters(vertexPos, initMomentum, 1, &*bfield);
71  }
72 
73  if unlikely(isBOFF && (theBOFFMomentum > 0)) {
75  kine.momentum().unit() * theBOFFMomentum,
76  kine.charge(),
77  &*bfield);
78  }
79  return (filter ? filter->compatible(hits, kine, helix, *region) : true);
80 }
GlobalPoint const & origin() const
virtual bool compatible(const SeedingHitSet &hits, const TrackingRegion &region) const =0
#define unlikely(x)
Definition: Likely.h:21
Vector3DBase unit() const
Definition: Vector3DBase.h:57
edm::ESHandle< MagneticField > bfield
void SeedFromConsecutiveHitsCreator::makeSeed ( TrajectorySeedCollection seedCollection,
const SeedingHitSet hits 
)
virtual

Implements SeedCreator.

Definition at line 40 of file SeedFromConsecutiveHitsCreator.cc.

References buildSeed(), error, initialError(), initialKinematic(), PV3DBase< T, PVType, FrameType >::mag2(), GlobalTrajectoryParameters::momentum(), PV3DBase< T, PVType, FrameType >::perp2(), and SeedingHitSet::size().

Referenced by SeedGeneratorFromProtoTracksEDProducer::produce().

41  {
42  if ( hits.size() < 2) return;
43 
45  if (!initialKinematic(kine, hits)) return;
46 
47  float sin2Theta = kine.momentum().perp2()/kine.momentum().mag2();
48 
50  FreeTrajectoryState fts(kine, error);
51 
52  buildSeed(seedCollection,hits,fts);
53 }
T mag2() const
Definition: PV3DBase.h:66
virtual bool initialKinematic(GlobalTrajectoryParameters &kine, const SeedingHitSet &hits) const
T perp2() const
Definition: PV3DBase.h:71
void buildSeed(TrajectorySeedCollection &seedCollection, const SeedingHitSet &hits, const FreeTrajectoryState &fts) const dso_hidden
CurvilinearTrajectoryError initialError(float sin2Theta) const dso_hidden
unsigned int size() const
Definition: SeedingHitSet.h:40
TransientTrackingRecHit::RecHitPointer SeedFromConsecutiveHitsCreator::refitHit ( const TransientTrackingRecHit::ConstRecHitPointer hit,
const TrajectoryStateOnSurface state 
) const
private

Definition at line 150 of file SeedFromConsecutiveHitsCreator.cc.

Referenced by buildSeed().

153 {
154  return hit->clone(state);
155 }

Member Data Documentation

edm::ESHandle<MagneticField> SeedFromConsecutiveHitsCreator::bfield
protected

Definition at line 76 of file SeedFromConsecutiveHitsCreator.h.

Referenced by init(), and initialKinematic().

const SeedComparitor* SeedFromConsecutiveHitsCreator::filter = nullptr
protected
bool SeedFromConsecutiveHitsCreator::isBOFF = false
protected

Definition at line 78 of file SeedFromConsecutiveHitsCreator.h.

Referenced by init(), and initialKinematic().

float SeedFromConsecutiveHitsCreator::nomField
protected

Definition at line 77 of file SeedFromConsecutiveHitsCreator.h.

Referenced by init(), and initialKinematic().

edm::ESHandle<Propagator> SeedFromConsecutiveHitsCreator::propagatorHandle
protected

Definition at line 75 of file SeedFromConsecutiveHitsCreator.h.

Referenced by init().

const TrackingRegion* SeedFromConsecutiveHitsCreator::region = nullptr
protected

Definition at line 72 of file SeedFromConsecutiveHitsCreator.h.

Referenced by init(), initialError(), and initialKinematic().

double SeedFromConsecutiveHitsCreator::theBOFFMomentum
protected

Definition at line 68 of file SeedFromConsecutiveHitsCreator.h.

Referenced by initialKinematic().

double SeedFromConsecutiveHitsCreator::theMinOneOverPtError
protected

Definition at line 70 of file SeedFromConsecutiveHitsCreator.h.

Referenced by initialError().

double SeedFromConsecutiveHitsCreator::theOriginTransverseErrorMultiplier
protected

Definition at line 69 of file SeedFromConsecutiveHitsCreator.h.

Referenced by initialError().

std::string SeedFromConsecutiveHitsCreator::thePropagatorLabel
protected

Definition at line 67 of file SeedFromConsecutiveHitsCreator.h.

Referenced by init().

edm::ESHandle<TrackerGeometry> SeedFromConsecutiveHitsCreator::tracker
protected

Definition at line 74 of file SeedFromConsecutiveHitsCreator.h.

Referenced by buildSeed(), and init().