|
|
Go to the documentation of this file.
84 std::unique_ptr<TrackingRecHitCollection>
selHits_;
87 std::unique_ptr<TrajTrackAssociationCollection>
selTTAss_;
95 #include <Math/DistFunc.h>
101 copyExtras_(
cfg.getUntrackedParameter<
bool>(
"copyExtras",
false)),
102 copyTrajectories_(
cfg.getUntrackedParameter<
bool>(
"copyTrajectories",
false)),
103 keepAllTracks_(
cfg.exists(
"keepAllTracks") ?
cfg.getParameter<
bool>(
"keepAllTracks")
105 setQualityBit_(
false),
107 chi2n_par_(
cfg.getParameter<double>(
"chi2n_par")),
109 max_d0_(
cfg.getParameter<double>(
"max_d0")),
110 max_z0_(
cfg.getParameter<double>(
"max_z0")),
112 min_pt_(
cfg.getParameter<double>(
"min_pt")),
113 max_eta_(
cfg.getParameter<double>(
"max_eta")),
115 min_nHit_(
cfg.getParameter<uint32_t>(
"min_nHit")),
117 min_nPixelHit_(
cfg.getParameter<uint32_t>(
"min_nPixelHit")),
119 min_layers_(
cfg.getParameter<uint32_t>(
"minNumberLayers")),
120 min_3Dlayers_(
cfg.getParameter<uint32_t>(
"minNumber3DLayers")),
121 max_lostLayers_(
cfg.getParameter<uint32_t>(
"maxNumberLostLayers")) {
122 if (
cfg.exists(
"qualityBit")) {
124 if (!qualityStr.empty()) {
131 <<
"If you set 'keepAllTracks' to true, you must specify which qualityBit to set.\n";
134 <<
"You can't set the quality bit " <<
cfg.getParameter<
std::string>(
"qualityBit")
135 <<
" as it is 'undefQuality' or unknown.\n";
138 produces<reco::TrackCollection>().setBranchAlias(
alias +
"Tracks");
140 produces<reco::TrackExtraCollection>().setBranchAlias(
alias +
"TrackExtras");
141 produces<TrackingRecHitCollection>().setBranchAlias(
alias +
"RecHits");
146 produces<std::vector<Trajectory>>().setBranchAlias(
alias +
"Trajectories");
147 produces<TrajTrackAssociationCollection>().setBranchAlias(
alias +
"TrajectoryTrackAssociations");
156 using namespace reco;
167 vertexBeamSpot = *hBsp;
172 selTracks_ = std::make_unique<TrackCollection>();
176 selHits_ = std::make_unique<TrackingRecHitCollection>();
186 for (TrackCollection::const_iterator it = hSrcTrack->begin(), ed = hSrcTrack->end(); it != ed; ++it, ++current) {
187 const Track &trk = *it;
189 bool ok =
select(vertexBeamSpot, trk);
217 auto const firstHitIndex =
selHits_->size();
219 selHits_->push_back((*hit)->clone());
233 selTrajs_ = std::make_unique<std::vector<Trajectory>>();
236 for (
size_t i = 0,
n = hTraj->size();
i <
n; ++
i) {
241 short oldKey = static_cast<short>(trkRef.
key());
275 uint32_t nPixelHit = 0;
277 if (!((*recHit)->isValid()))
280 DetId id((*recHit)->geographicalId());
const math::XYZPoint & outerPosition() const
position of the outermost hit
const math::XYZVector & outerMomentum() const
momentum vector at the outermost hit position
edm::EDGetTokenT< reco::BeamSpot > beamspot_
CovarianceMatrix outerStateCovariance() const
outermost trajectory state curvilinear errors
RefProd< PROD > getRefBeforePut()
std::unique_ptr< reco::TrackCollection > selTracks_
unsigned int outerDetId() const
DetId of the detector on which surface the outermost state is located.
TrackBase::TrackQuality qualityToSet_
const_iterator find(const key_type &k) const
find element with specified reference key
std::unique_ptr< reco::TrackExtraCollection > selTrackExtras_
edm::RefProd< std::vector< Trajectory > > rTrajectories_
int trackerLayersWithoutMeasurement(HitCategory category) const
trackingRecHit_iterator recHitsBegin() const
Iterator to first hit on the track.
CosmicTrackSelector(const edm::ParameterSet &cfg)
EDProductGetter const & productGetter() const
static const std::string emptyString("")
TrackQuality
track quality
std::vector< reco::TrackRef > trackRefs_
bool outerOk() const
return true if the outermost hit is valid
const TrackExtraRef & extra() const
reference to "extra" object
int pixelLayersWithMeasurement() const
TrackingRecHitRefProd rHits_
CovarianceMatrix innerStateCovariance() const
innermost trajectory state curvilinear errors
bool innerOk() const
return true if the innermost hit is valid
edm::EDGetTokenT< reco::TrackCollection > src_
double pt() const
track transverse momentum
const_iterator end() const
last iterator over the map (read only)
const math::XYZVector & innerMomentum() const
momentum vector at the innermost hit position
#define DEFINE_FWK_MODULE(type)
int trackerLayersWithMeasurement() const
std::unique_ptr< std::vector< const Trajectory * > > selTrajPtrs_
trackingRecHit_iterator recHitsEnd() const
Iterator to last hit on the track.
std::vector< TrackExtra > TrackExtraCollection
collection of TrackExtra objects
double dz() const
dz parameter (= dsz/cos(lambda)). This is the track z0 w.r.t (0,0,0) only if the refPoint is close to...
bool getByToken(EDGetToken token, Handle< PROD > &result) const
const Point & position() const
position
edm::Ref< TrackCollection > TrackRef
persistent reference to a Track
friend struct const_iterator
const PropagationDirection & seedDirection() const
direction of how the hits were sorted in the original seed
XYZPointD XYZPoint
point in space with cartesian internal representation
std::vector< double > res_par_
reco::TrackExtraRefProd rTrackExtras_
std::pair< typename Association::data_type::first_type, double > match(Reference key, Association association, bool bestMatchByMaxValue)
Generic matching function.
double eta() const
pseudorapidity of momentum vector
edm::Ref< TrackExtraCollection > TrackExtraRef
persistent reference to a TrackExtra
const math::XYZPoint & innerPosition() const
position of the innermost hit
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
unsigned int innerDetId() const
DetId of the detector on which surface the innermost state is located.
double normalizedChi2() const
chi-squared divided by n.d.o.f. (or chi-squared * 1e6 if n.d.o.f. is zero)
~CosmicTrackSelector() override
std::unique_ptr< std::vector< Trajectory > > selTrajs_
void produce(edm::Event &evt, const edm::EventSetup &es) override
const HitPattern & hitPattern() const
Access the hit pattern, indicating in which Tracker layers the track has hits.
const edm::RefToBase< TrajectorySeed > & seedRef() const
bool select(const reco::BeamSpot &vertexBeamSpot, const reco::Track &tk)
const TrackResiduals & residuals() const
get the residuals
key_type key() const
Accessor for product key.
reco::TrackRefProd rTracks_
Abs< T >::type abs(const T &t)
static constexpr float d0
edm::EDGetTokenT< TrajTrackAssociationCollection > srcTass_
double dxy() const
dxy parameter. (This is the transverse impact parameter w.r.t. to (0,0,0) ONLY if refPoint is close t...
std::unique_ptr< TrajTrackAssociationCollection > selTTAss_
std::unique_ptr< TrackingRecHitCollection > selHits_
std::vector< Track > TrackCollection
collection of Tracks
int numberOfValidStripLayersWithMonoAndStereo(uint16_t stripdet, uint16_t layer) const
edm::EDGetTokenT< std::vector< Trajectory > > srcTraj_