|
|
Go to the documentation of this file.
35 : theTracker(nullptr),
36 theMeasTracker(nullptr),
37 theNavigation(nullptr),
40 theEstimator(nullptr),
41 theTSTransformer(nullptr),
67 std::vector<TrajectorySeed>&
result) {
91 bool usePredictedState =
false;
94 std::vector<TrajectoryMeasurement> alltm;
96 for (std::vector<const DetLayer*>::const_iterator inl = nls.begin(); inl != nls.end(); inl++, ndesLayer++) {
97 if ((*inl ==
nullptr))
101 if ((!alltm.empty())) {
110 usePredictedState =
true;
114 if (alltm.size() > 5)
115 alltm.erase(alltm.begin() + 5, alltm.end());
118 for (std::vector<TrajectoryMeasurement>::const_iterator itm = alltm.begin(); itm != alltm.end(); itm++,
i++) {
122 container.
push_back(itm->recHit()->hit()->clone());
134 for (std::vector<const DetLayer*>::const_iterator inl = nls.begin(); inl != nls.end(); inl++) {
135 if (!
result.empty() || *inl ==
nullptr) {
138 std::vector<DetLayer::DetWithState> compatDets = (*inl)->compatibleDets(staState, *
propagator(), *
estimator());
140 if (compatDets.empty())
162 <<
"Possible choices are: discrete, fixed, matrix.\n"
163 <<
"Use discrete method" << std::endl;
217 bool trackerGeomChanged =
false;
225 trackerGeomChanged =
true;
238 if (staMuon.first && staMuon.first->isValid()) {
240 innerTS = staMuon.first->firstMeasurement().updatedState();
242 innerTS = staMuon.first->lastMeasurement().updatedState();
266 result = fromInside(iniState);
281 const DetId&
id)
const {
287 std::vector<TrajectoryMeasurement>::iterator tmsend = std::remove_if(tms.begin(), tms.end(),
isInvalid());
288 tms.erase(tmsend, tms.end());
294 std::vector<TrajectoryMeasurement>
result;
297 if (compatDets.empty())
300 for (std::vector<DetLayer::DetWithState>::const_iterator idws = compatDets.begin(); idws != compatDets.end();
302 if (idws->second.isValid() && (idws->first)) {
303 std::vector<TrajectoryMeasurement> tmptm =
311 result.insert(
result.end(), tmptm.begin(), tmptm.end());
346 float pt = (staMuon.second)->
pt();
edm::InputTag theBeamSpotInputTag
T const * product() const
TrajectoryStateOnSurface innerState(const TrackCand &) const
GlobalVector momentum() const
std::pair< const Trajectory *, reco::TrackRef > TrackCand
std::string theResetMethod
static void multiply(CurvilinearTrajectoryError &initial_error, const CurvilinearTrajectoryError &scale_error)
multiply term by term the two matrix
std::vector< TrajectoryMeasurement > findMeasurements(const DetLayer *, const TrajectoryStateOnSurface &) const
look for measurements on the first compatible layer
MuonErrorMatrix * theErrorMatrixAdjuster
void validMeasurements(std::vector< TrajectoryMeasurement > &) const
select valid measurements
const Chi2MeasurementEstimator * estimator() const
bool passSelection(const TrajectoryStateOnSurface &) const
check some quantity and beam-spot compatibility and decide to continue
double z0() const
z coordinate
std::vector< const DetLayer * > compatibleLayers(const FreeTrajectoryState &fts, PropagationDirection timeDirection) const
find compatible layers for a given trajectory state
edm::ParameterSet theConfig
GlobalPoint globalPosition() const
const MuonServiceProxy * theService
virtual std::vector< DetWithState > compatibleDets(const TrajectoryStateOnSurface &startingState, const Propagator &prop, const MeasurementEstimator &est) const
void trackerSeeds(const TrackCand &, const TrackingRegion &, const TrackerTopology *, std::vector< TrajectorySeed > &) override
generate seed(s) for a track
void getRescalingFactor(const TrackCand &staMuon)
edm::ESHandle< Propagator > propagator() const
FreeTrajectoryState const * freeState(bool withErrors=true) const
const CurvilinearTrajectoryError & curvilinearError() const
TSGFromPropagation(const edm::ParameterSet &pset, edm::ConsumesCollector &iC)
constructor
MeasurementDetWithData idToDet(const DetId &id) const
Previous MeasurementDetSystem interface.
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
std::string thePropagatorName
edm::ESHandle< GeometricSearchTracker > theTracker
const edm::EventSetup & eventSetup() const
virtual TrajectoryStateOnSurface update(const TrajectoryStateOnSurface &, const TrackingRecHit &) const =0
const TrajectoryStateUpdator * theUpdator
void setEvent(const edm::Event &) override
set an event
TrajectoryStateOnSurface outerTkState(const TrackCand &) const
std::string theMeasTrackerName
CurvilinearTrajectoryError get(GlobalVector momentum, bool convolute=true)
main method to be used. Retrieve a 5x5 symetrical matrix according to parametrization of error or sca...
edm::ESHandle< MeasurementTracker > theMeasTracker
const GlobalTrajectoryParameters & parameters() const
edm::ESHandle< Propagator > propagator(std::string propagatorName) const
get the propagator
edm::EDGetTokenT< MeasurementTrackerEvent > theMeasurementTrackerEventToken
edm::EDGetTokenT< reco::BeamSpot > theBeamSpotToken
void rescaleError(double factor)
double dxyDis(const TrajectoryStateOnSurface &tsos) const
bool theUseVertexStateFlag
T getParameter(std::string const &) const
double zDis(const TrajectoryStateOnSurface &tsos) const
GlobalVector globalMomentum() const
edm::Handle< reco::BeamSpot > beamSpot
const Chi2MeasurementEstimator * theEstimator
edm::InputTag theMeasurementTrackerEventTag
~TSGFromPropagation() override
destructor
void adjust(FreeTrajectoryState &) const
adjust the error matrix of the FTS
edm::ESHandle< GlobalTrackingGeometry > trackingGeometry() const
get the tracking geometry
edm::Handle< MeasurementTrackerEvent > theMeasTrackerEvent
const CurvilinearTrajectoryError & curvilinearError() const
edm::ESHandle< MagneticField > magneticField() const
get the magnetic field
const SurfaceType & surface() const
TrajectorySeed createSeed(const TrajectoryStateOnSurface &, const DetId &) const
create a hitless seed from a trajectory state
const GlobalTrajectoryParameters & globalParameters() const
void init(const MuonServiceProxy *) override
initialize
double theFixedErrorRescaling
SurfaceSide surfaceSide() const
Position relative to material, defined relative to momentum vector.
double theFlexErrorRescaling
const TrajectoryStateUpdator * updator() const
void rescaleError(double factor)
const DirectTrackerNavigation * theNavigation
unsigned long long theCacheId_TG
unsigned long long theCacheId_MT