20 template <
class T>
T sqr(
T t) {
return t*
t;}
29 if ( hits.
size() < 2)
return 0;
31 bool passesFilter =
true;
33 if (!passesFilter)
return 0;
40 return buildSeed(seedCollection,hits,fts,es,filter);
49 bool &passesFilter)
const
60 FastHelix helix(tth2->globalPosition(), tth1->globalPosition(), vertexPos, es);
61 if (helix.isValid()) {
62 kine = helix.stateAtVertex().parameters();
64 GlobalVector initMomentum(tth2->globalPosition() - vertexPos);
65 initMomentum *= (100./initMomentum.perp());
76 passesFilter = (filter ? filter->
compatible(hits, kine, helix, region) :
true);
98 float sin2th =
sqr(sinTheta);
101 float zErr = vertexErr.
czz();
102 float transverseErr = vertexErr.
cxx();
103 C[3][3] = transverseErr;
104 C[4][4] = zErr*sin2th + transverseErr*(1-sin2th);
134 for (
unsigned int iHit = 0; iHit < hits.
size(); iHit++) {
135 hit = hits[iHit]->hit();
139 if (!state.
isValid())
return 0;
145 if (!
checkHit(state,newtth,es,filter))
return 0;
147 updatedState = updator.
update(state, *newtth);
148 if (!updatedState.
isValid())
return 0;
150 seedHits.
push_back(newtth->hit()->clone());
157 if (filter != 0 && !filter->
compatible(seed))
return 0;
158 seedCollection.push_back(seed);
159 return &seedCollection.back();
166 return hit->clone(state);
176 return (filter ? filter->
compatible(tsos,hit) :
true);
virtual float ptMin() const =0
minimal pt of interest
virtual GlobalPoint origin() const =0
virtual TransientTrackingRecHit::RecHitPointer refitHit(const TransientTrackingRecHit::ConstRecHitPointer &hit, const TrajectoryStateOnSurface &state) const
Sin< T >::type sin(const T &t)
ROOT::Math::SMatrix< double, 5, 5, ROOT::Math::MatRepSym< double, 5 > > AlgebraicSymMatrix55
virtual const TrajectorySeed * trajectorySeed(TrajectorySeedCollection &seedCollection, const SeedingHitSet &ordered, const TrackingRegion ®ion, const edm::EventSetup &es, const SeedComparitor *filter)
virtual bool compatible(const SeedingHitSet &hits, const TrackingRegion ®ion) const =0
virtual const TrajectorySeed * buildSeed(TrajectorySeedCollection &seedCollection, const SeedingHitSet &hits, const FreeTrajectoryState &fts, const edm::EventSetup &es, const SeedComparitor *filter) const
Geom::Theta< T > theta() const
uint32_t rawId() const
get the raw id
virtual CurvilinearTrajectoryError initialError(const TrackingRegion ®ion, float sinTheta) const
std::vector< TrajectorySeed > TrajectorySeedCollection
std::string thePropagatorLabel
const T & max(const T &a, const T &b)
GlobalVector momentum() const
GlobalPoint position() const
virtual TrajectoryStateOnSurface propagate(const FreeTrajectoryState &, const Surface &) const
Vector3DBase unit() const
virtual float originRBound() const =0
bounds the particle vertex in the transverse plane
TrajectoryStateOnSurface update(const TrajectoryStateOnSurface &, const TransientTrackingRecHit &) const
virtual float originZBound() const =0
bounds the particle vertex in the longitudinal plane
Square< F >::type sqr(const F &f)
virtual bool checkHit(const TrajectoryStateOnSurface &tsos, const TransientTrackingRecHit::ConstRecHitPointer &hit, const edm::EventSetup &es, const SeedComparitor *filter) const
unsigned int size() const
virtual GlobalTrajectoryParameters initialKinematic(const SeedingHitSet &hits, const TrackingRegion ®ion, const edm::EventSetup &es, const SeedComparitor *filter, bool &passesFilter) const
DetId geographicalId() const
TrackCharge charge() const