17 :
ptMin(iConfig.getParameter<double>(
"ptMin")), thePropagator(prop), theTrackerGeom(geom) {
19 initialTSOS_ = std::make_shared<TrajectoryStateOnSurface>();
20 updatedTSOS_ = std::make_shared<TrajectoryStateOnSurface>();
21 freeTS_ = std::make_shared<FreeTrajectoryState>();
53 const TSOS& inner_TSOS,
109 double p_max =
initialTSOS_->globalParameters().momentum().mag();
113 globalRotation.Place_at(rot, 0, 0);
114 globalRotation.Place_at(rot, 3, 3);
115 AlgebraicSymMatrix66 primaryErrorInNewFrame = ROOT::Math::Similarity(globalRotation, primaryError);
118 double p_perp_max = 2;
120 secondaryErrorInNewFrame(0, 0) = primaryErrorInNewFrame(0, 0) + helix.
vertexError() * p_perp_max / p_max;
121 secondaryErrorInNewFrame(1, 1) = primaryErrorInNewFrame(1, 1) + helix.
vertexError() * p_perp_max / p_max;
123 secondaryErrorInNewFrame(3, 3) = p_perp_max * p_perp_max;
124 secondaryErrorInNewFrame(4, 4) = p_perp_max * p_perp_max;
125 secondaryErrorInNewFrame(5, 5) = p_max * p_max;
127 AlgebraicSymMatrix66 secondaryError = ROOT::Math::SimilarityT(globalRotation, secondaryErrorInNewFrame);
139 LogDebug(
"NuclearSeedGenerator") <<
"Seed ** initial state " <<
freeTS_->cartesianError().matrix();
141 for (
unsigned int iHit = 0; iHit <
theHits.size(); iHit++) {
155 LogDebug(
"NuclearSeedGenerator") <<
"Seed ** updated state " <<
updatedTSOS_->cartesianError().matrix();
164 for (ConstRecHitContainer::const_iterator it =
theHits.begin(); it !=
theHits.end(); it++) {
165 _hits.
push_back(it->get()->hit()->clone());
178 if (zAxis.
x() != 0 || zAxis.
y() != 0) {
const TrackerGeometry * theTrackerGeom
Vector3DBase< typename PreciseFloatType< T, U >::Type, FrameTag > cross(const Vector3DBase< U, FrameTag > &v) const
PropagationDirection direction() const
ROOT::Math::SMatrix< double, 3, 3, ROOT::Math::MatRepStd< double, 3, 3 > > AlgebraicMatrix33
ConstRecHitContainer theHits
GlobalPoint outerHitPosition() const
GlobalVector directionAtVertex()
T mag() const
The vector magnitude. Equivalent to sqrt(vec.mag2())
ROOT::Math::SMatrixIdentity AlgebraicMatrixID
GlobalPoint toGlobal(const Local2DPoint &lp) const
Conversion to the global R.F. from the R.F. of the GeomDet.
void setMeasurements(const TSOS &tsosAtInteractionPoint, ConstRecHitPointer ihit, ConstRecHitPointer ohit)
Fill all data members from 2 TM's where the first one is supposed to be at the interaction point...
ConstRecHitPointer outerHit_
std::shared_ptr< TSOS > initialTSOS_
TrajectoryStateOnSurface update(const TrajectoryStateOnSurface &, const TrackingRecHit &) const override
SeedFromNuclearInteraction(const Propagator *prop, const TrackerGeometry *geom, const edm::ParameterSet &iConfig)
std::shared_ptr< TrackingRecHit const > ConstRecHitPointer
TransientTrackingRecHit::ConstRecHitPointer ConstRecHitPointer
ConstRecHitPointer innerHit_
const Propagator * thePropagator
PTrajectoryStateOnDet pTraj
virtual GlobalVector inTesla(const GlobalPoint &gp) const =0
Field value ad specified global point, in Tesla.
ROOT::Math::SMatrix< double, 6, 6, ROOT::Math::MatRepStd< double, 6, 6 > > AlgebraicMatrix66
recHitContainer hits() const
ROOT::Math::SMatrix< double, 6, 6, ROOT::Math::MatRepSym< double, 6 > > AlgebraicSymMatrix66
AlgebraicMatrix33 rotationMatrix(const GlobalVector &perp) const
Vector3DBase unit() const
std::shared_ptr< TSOS > updatedTSOS_
std::shared_ptr< FreeTrajectoryState > freeTS_
TrajectoryStateOnSurface propagate(STA const &state, SUR const &surface) const
DetId outerHitDetId() const
T perp() const
Magnitude of transverse component.
const TrackerGeomDet * idToDet(DetId) const override
GlobalPoint vertexPoint() const
DetId geographicalId() const
Global3DVector GlobalVector
Basic3DVector unit() const
FreeTrajectoryState * stateWithError() const