14 ptMin(iConfig.getParameter<double>(
"ptMin")),
15 thePropagator(prop), theTrackerGeom(geom)
100 double p_max =
initialTSOS_->globalParameters().momentum().mag();
104 globalRotation.Place_at(rot,0,0);
105 globalRotation.Place_at(rot,3,3);
106 AlgebraicSymMatrix66 primaryErrorInNewFrame = ROOT::Math::Similarity(globalRotation, primaryError);
109 double p_perp_max = 2;
111 secondaryErrorInNewFrame(0,0) = primaryErrorInNewFrame(0,0)+helix.
vertexError()*p_perp_max/p_max;
112 secondaryErrorInNewFrame(1,1) = primaryErrorInNewFrame(1,1)+helix.
vertexError()*p_perp_max/p_max;
114 secondaryErrorInNewFrame(3,3) = p_perp_max*p_perp_max;
115 secondaryErrorInNewFrame(4,4) = p_perp_max*p_perp_max;
116 secondaryErrorInNewFrame(5,5) = p_max*p_max;
118 AlgebraicSymMatrix66 secondaryError = ROOT::Math::SimilarityT(globalRotation, secondaryErrorInNewFrame);
131 LogDebug(
"NuclearSeedGenerator") <<
"Seed ** initial state " <<
freeTS_->cartesianError().matrix();
133 for (
unsigned int iHit = 0; iHit <
theHits.size(); iHit++) {
139 if (!state.
isValid())
return false;
148 LogDebug(
"NuclearSeedGenerator") <<
"Seed ** updated state " <<
updatedTSOS_->cartesianError().matrix();
157 for( ConstRecHitContainer::const_iterator it =
theHits.begin(); it!=
theHits.end(); it++ ){
158 _hits.
push_back( it->get()->hit()->clone() );
172 if ( zAxis.
x() != 0 || zAxis.
y() != 0) {
const TrackerGeometry * theTrackerGeom
PropagationDirection direction() const
boost::shared_ptr< TSOS > updatedTSOS_
ConstRecHitContainer theHits
GlobalPoint outerHitPosition() const
GlobalVector directionAtVertex()
ROOT::Math::SMatrix< double, 6, 6, ROOT::Math::MatRepStd< double, 6, 6 > > AlgebraicMatrix66
boost::shared_ptr< FreeTrajectoryState > freeTS_
virtual GlobalVector inTesla(const GlobalPoint &gp) const =0
Field value ad specified global point, in Tesla.
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.
ROOT::Math::SMatrix< double, 6, 6, ROOT::Math::MatRepSym< double, 6 > > AlgebraicSymMatrix66
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_
SeedFromNuclearInteraction(const Propagator *prop, const TrackerGeometry *geom, const edm::ParameterSet &iConfig)
Vector3DBase< typename PreciseFloatType< T, U >::Type, FrameTag > cross(const Vector3DBase< U, FrameTag > &v) const
ConstRecHitPointer innerHit_
const Propagator * thePropagator
PTrajectoryStateOnDet pTraj
virtual const GeomDet * idToDet(DetId) const
virtual TrajectoryStateOnSurface propagate(const FreeTrajectoryState &, const Surface &) const
recHitContainer hits() const
AlgebraicMatrix33 rotationMatrix(const GlobalVector &perp) const
Vector3DBase unit() const
boost::shared_ptr< TSOS > initialTSOS_
DetId outerHitDetId() const
T perp() const
Magnitude of transverse component.
TrajectoryStateOnSurface update(const TrajectoryStateOnSurface &, const TransientTrackingRecHit &) const
GlobalPoint vertexPoint() const
DetId geographicalId() const
ROOT::Math::SMatrix< double, 3, 3, ROOT::Math::MatRepStd< double, 3, 3 > > AlgebraicMatrix33
Global3DVector GlobalVector
FreeTrajectoryState * stateWithError() const