46 theSeedsToken = consumes<TrajectorySeedCollection>(theSeedsLabel);
53 produces<reco::TrackCollection>().setBranchAlias(theAlias +
"Tracks");
63 delete theUpdatorAtVtx;
77 theService->update(eventSetup);
85 event.getByToken(theSeedsToken, seeds);
87 for (TrajectorySeedCollection::const_iterator iSeed = seeds->begin(); iSeed != seeds->end(); iSeed++) {
88 pair<bool, reco::Track> resultOfTrackExtrapAtPCA = buildTrackAtPCA(*iSeed);
89 if (!resultOfTrackExtrapAtPCA.first)
94 trackCollection->push_back(track);
121 const GeomDet* gdet = theService->trackingGeometry()->idToDet(seedDetId);
155 const string metname =
"MuonSeedTrack";
159 TSOS seedTSOS = getSeedTSOS(seed);
161 LogTrace(metname) <<
"Propagate to PCA...";
162 pair<bool, FreeTrajectoryState> extrapolationResult = theUpdatorAtVtx->propagateToNominalLine(seedTSOS);
165 if (extrapolationResult.first) {
166 ftsAtVtx = extrapolationResult.second;
169 LogWarning(metname) <<
"Track in the Tracker: taking the innermost state instead of the state at PCA";
172 if (theAllowNoVtxFlag) {
173 LogWarning(metname) <<
"Propagation to PCA failed, taking the innermost state instead of the state at PCA";
176 LogWarning(metname) <<
"Stand Alone track: this track will be rejected";
177 return pair<bool, reco::Track>(
false,
reco::Track());
182 LogTrace(metname) <<
"TSOS after the extrapolation at vtx";
190 double dummyNDOF = 1.0;
192 double dummyChi2 = 1.0;
197 return pair<bool, reco::Track>(
true,
track);
204 const string metname =
"MuonSeedTrack";
211 if ((*recHits1).isValid())
212 ndof += (*recHits1).dimension();
213 if ((*recHits2).isValid())
214 ndof += (*recHits2).dimension();
222 return max(ndof - 5., 0.);
~MuonSeedTrack() override
destructor
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
TrajectoryStateOnSurface TSOS
static bool isInside(const GlobalPoint &)
const std::string metname
std::vector< Track > TrackCollection
collection of Tracks
GlobalPoint globalPosition() const
TrackCharge charge() const
double computeNDOF(const TrajectorySeed &) const
compute the TrajectorySeed's degree of freedom
const CurvilinearTrajectoryError & curvilinearError() const
std::string dumpFTS(const FreeTrajectoryState &fts) const
recHitContainer::const_iterator const_iterator
FreeTrajectoryState const * freeState(bool withErrors=true) const
std::pair< bool, reco::Track > buildTrackAtPCA(const TrajectorySeed &) const
Build a track at the PCA WITHOUT any vertex constriant.
unsigned int detId() const
GlobalVector momentum() const
GlobalPoint position() const
PTrajectoryStateOnDet const & startingState() const
XYZVectorD XYZVector
spatial vector with cartesian internal representation
XYZPointD XYZPoint
point in space with cartesian internal representation
TrajectoryStateOnSurface getSeedTSOS(const TrajectorySeed &seed) const
get the TrajectorySeed's TrajectoryStateOnSurface
void endJob() override
post-job
MuonSeedTrack(const edm::ParameterSet &)
constructor with config
void produce(edm::Event &, const edm::EventSetup &) override
construct proto-tracks
void beginJob() override
pre-job booking