17 :
ptMin(iPtMin), 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++) {
148 if (!
state.isValid())
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());
const TrackerGeometry * theTrackerGeom
AlgebraicMatrix33 rotationMatrix(const GlobalVector &perp) const
ROOT::Math::SMatrix< double, 3, 3, ROOT::Math::MatRepStd< double, 3, 3 > > AlgebraicMatrix33
ConstRecHitContainer theHits
GlobalPoint vertexPoint() const
GlobalVector directionAtVertex()
ROOT::Math::SMatrixIdentity AlgebraicMatrixID
SeedFromNuclearInteraction(const Propagator *prop, const TrackerGeometry *geom, double ptMin)
FreeTrajectoryState * stateWithError() const
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...
TrajectoryStateOnSurface propagate(STA const &state, SUR const &surface) const
ConstRecHitPointer outerHit_
std::shared_ptr< TSOS > initialTSOS_
DetId outerHitDetId() const
TrajectoryStateOnSurface update(const TrajectoryStateOnSurface &, const TrackingRecHit &) const override
std::shared_ptr< TrackingRecHit const > ConstRecHitPointer
TransientTrackingRecHit::ConstRecHitPointer ConstRecHitPointer
ConstRecHitPointer innerHit_
const Propagator * thePropagator
PTrajectoryStateOnDet pTraj
GlobalPoint outerHitPosition() const
T perp() const
Magnitude of transverse component.
Basic3DVector unit() const
const TrackerGeomDet * idToDet(DetId) const override
ROOT::Math::SMatrix< double, 6, 6, ROOT::Math::MatRepStd< double, 6, 6 > > AlgebraicMatrix66
GlobalPoint toGlobal(const Local2DPoint &lp) const
Conversion to the global R.F. from the R.F. of the GeomDet.
ROOT::Math::SMatrix< double, 6, 6, ROOT::Math::MatRepSym< double, 6 > > AlgebraicSymMatrix66
T mag() const
The vector magnitude. Equivalent to sqrt(vec.mag2())
std::shared_ptr< TSOS > updatedTSOS_
std::shared_ptr< FreeTrajectoryState > freeTS_
PropagationDirection direction() const
recHitContainer hits() const
Global3DVector GlobalVector