80 ConstTrajTrackPairCollection::const_iterator itTracks = tracks.begin();
82 while ( itTracks != tracks.end() )
97 trajectories.push_back( ptr );
114 if ( tracks.size() != external.size() )
116 edm::LogInfo(
"ReferenceTrajectories") <<
"@SUB=DualBzeroTrajectoryFactory::trajectories"
117 <<
"Inconsistent input:\n"
118 <<
"\tnumber of tracks = " << tracks.size()
119 <<
"\tnumber of external predictions = " << external.size();
126 ConstTrajTrackPairCollection::const_iterator itTracks = tracks.begin();
127 ExternalPredictionCollection::const_iterator itExternal = external.begin();
129 while ( itTracks != tracks.end() )
135 if ( (*itExternal).isValid() )
140 if ( !propExternal.
isValid() )
continue;
154 ptr->setParameterErrors( externalParamErrors.sub( 2, 5 ) );
155 trajectories.push_back( ptr );
200 Trajectory::DataContainer::iterator itM;
202 for ( itM = allTrajMeas.begin(); itM != allTrajMeas.end(); itM++ )
204 if (
useRecHit( ( *itM ).recHit() ) ) usedTrajMeas.push_back( *itM );
207 unsigned int iMeas = 0;
208 unsigned int nMeas = usedTrajMeas.size();
209 unsigned int nRefStateMeas = nMeas/2;
211 for ( itM = usedTrajMeas.begin(); itM != usedTrajMeas.end(); itM++, iMeas++ )
215 if ( iMeas < nRefStateMeas ) {
217 }
else if ( iMeas > nRefStateMeas ) {
220 if ( ( *itM ).updatedState().isValid() )
222 input.
refTsos = ( *itM ).updatedState();
245 const std::pair< TrajectoryStateOnSurface, double > tsosWithPath =
246 propagator.propagateWithPath( external, surface );
247 return tsosWithPath.first;
T getParameter(std::string const &) const
const TrajectoryStateOnSurface propagateExternal(const TrajectoryStateOnSurface &external, const Surface &surface, const MagneticField *magField) const
MaterialEffects materialEffects(void) const
const DualBzeroTrajectoryInput referenceStateAndRecHits(const ConstTrajTrackPair &track) const
virtual const Trajectory::DataContainer orderedTrajectoryMeasurements(const Trajectory &trajectory) const
virtual const ReferenceTrajectoryCollection trajectories(const edm::EventSetup &setup, const ConstTrajTrackPairCollection &tracks, const reco::BeamSpot &beamSpot) const override
Produce the reference trajectories.
AlignmentAlgorithmBase::ConstTrajTrackPair ConstTrajTrackPair
bool useRecHit(const TransientTrackingRecHit::ConstRecHitPointer &hitPtr) const
double theMomentumEstimate
static std::string const input
virtual ~DualBzeroTrajectoryFactory()
const SurfaceType & surface() const
std::vector< TrajectoryMeasurement > DataContainer
const AlgebraicSymMatrix55 & matrix() const
const LocalTrajectoryError & localError() const
std::vector< ConstRecHitPointer > ConstRecHitContainer
AlignmentAlgorithmBase::ConstTrajTrackPairCollection ConstTrajTrackPairCollection
std::vector< ReferenceTrajectoryPtr > ReferenceTrajectoryCollection
T const * product() const
PropagationDirection propagationDirection(void) const
CLHEP::HepSymMatrix AlgebraicSymMatrix
virtual DualBzeroTrajectoryFactory * clone() const override
A factory that produces instances of class ReferenceTrajectory from a given TrajTrackPairCollection.
#define DEFINE_EDM_PLUGIN(factory, type, name)
std::vector< TrajectoryStateOnSurface > ExternalPredictionCollection
DualBzeroTrajectoryFactory(const edm::ParameterSet &config)
void setup(std::vector< TH2F > &depth, std::string name, std::string units="")
tuple AnalyticalPropagator