32 : theRPCInTheFit(parameterSet.getParameter<
bool>(
"RefitRPCHits")),
33 theDoPredictionsOnly(parameterSet.getParameter<
bool>(
"DoPredictionsOnly")),
34 theRefitDirection(parameterSet.getParameter<
string>(
"RefitDirection")),
35 theFitterName(parameterSet.getParameter<
string>(
"Fitter")),
36 theSmootherName(parameterSet.getParameter<
string>(
"Smoother")),
38 theTrackerRecHitBuilderName(parameterSet.getParameter<
string>(
"TrackerRecHitBuilder")),
39 theMuonRecHitBuilderName(parameterSet.getParameter<
string>(
"MuonRecHitBuilder")),
40 theMTDRecHitBuilderName(parameterSet.getParameter<
string>(
"MTDRecHitBuilder")) {}
79 LogTrace(metname) <<
"Tracking Component changed!";
87 LogTrace(metname) <<
"GlobalTrackingGeometry changed!";
95 LogTrace(metname) <<
"Magnetic Field changed!";
104 LogTrace(metname) <<
"TransientRecHitRecord changed!";
123 if ((*hit)->isValid()) {
125 result.emplace_back((**hit).cloneForFit(*tkbuilder->geometry()->idToDet((**hit).geographicalId())));
126 }
else if ((*hit)->geographicalId().det() ==
DetId::Muon) {
127 if ((*hit)->geographicalId().subdetId() == 3 && !
theRPCInTheFit) {
128 LogTrace(
"Reco|TrackingTools|TrackTransformer") <<
"RPC Rec Hit discarged";
132 }
else if ((*hit)->geographicalId().det() ==
DetId::Forward && (*hit)->geographicalId().subdetId() ==
FastTime) {
136 throw cms::Exception(
"TrackTransformer") <<
"MTD hit encountered but MTD not available!";
147 if (!recHits.empty()) {
152 auto rFirst = first.
mag2();
153 auto rLast = last.
mag2();
159 LogDebug(
"Reco|TrackingTools|TrackTransformer") <<
"Impossible to determine the rechits order" << endl;
170 return transform(track, recHitsForReFit);
178 if (recHitsForReFit.size() < 2)
179 return vector<Trajectory>();
214 LogTrace(metname) <<
"RH order (0-insideOut, 1-outsideIn): " << recHitsOrder;
227 LogTrace(metname) <<
"P (0-insideOut, 1-outsideIn): " <<
p;
228 LogTrace(metname) <<
"FD (0-OM, 1-AM, 2-ANY): " << propagationDirection;
236 reverse(recHitsForReFit.begin(), recHitsForReFit.end());
243 reverse(recHitsForReFit.begin(), recHitsForReFit.end());
266 LogTrace(metname) <<
"Error wrong initial state!" << endl;
267 return vector<Trajectory>();
272 if (recHitsForReFit.front()->geographicalId() !=
DetId(innerId)) {
273 LogTrace(metname) <<
"Propagation occured" << endl;
276 LogTrace(metname) <<
"Propagation error!" << endl;
277 return vector<Trajectory>();
284 for (
auto const&
hit : recHitsForReFit) {
289 return vector<Trajectory>(1, aTraj);
294 if (trajectories.empty()) {
295 LogTrace(metname) <<
"No Track refitted!" << endl;
299 auto const& trajectoryBW = trajectories.front();
301 auto const& trajectoriesSM =
theSmoother->trajectories(trajectoryBW);
303 if (trajectoriesSM.empty()) {
304 LogTrace(metname) <<
"No Track smoothed!" << endl;
307 return trajectoriesSM;
PropagationDirection propagationDirection() const
const std::string metname
GeometricalDirection geometricalDirection() const
Global3DPoint GlobalPoint
GlobalPoint globalPosition() const
TrajectoryStateOnSurface innermostMeasurementState() const
virtual TrajectorySmoother * clone() const =0
virtual std::unique_ptr< TrajectoryFitter > clone() const =0
const SurfaceType & surface() const
unsigned int outerDetId() const
DetId of the detector on which surface the outermost state is located.
TrajectoryStateOnSurface outermostMeasurementState() const
ParameterDescriptionBase * add(U const &iLabel, T const &value)
virtual RecHitPointer build(const TrackingRecHit *p) const =0
build a tracking rechit from an existing rechit
trackingRecHit_iterator recHitsEnd() const
last iterator to RecHits
std::vector< ConstRecHitPointer > ConstRecHitContainer
const Track & track() const
TrajectoryStateOnSurface propagate(STA const &state, SUR const &surface) const
GlobalVector globalMomentum() const
static int position[264][3]
const GeomDet * idToDet(DetId) const override
unsigned int innerDetId() const
DetId of the detector on which surface the innermost state is located.
T const * product() const
void push(const TrajectoryMeasurement &tm)
trackingRecHit_iterator recHitsBegin() const
first iterator to RecHits
ParameterSet const & parameterSet(Provenance const &provenance)