Go to the documentation of this file. 1 #ifndef RecoEgamma_EgammaElectronAlgos_TrajSeedMatcher_h
2 #define RecoEgamma_EgammaElectronAlgos_TrajSeedMatcher_h
42 class ConsumesCollector;
61 const float eta = 0.f;
62 const float phi = 0.f;
73 MatchInfo(
const DetId& iDetId,
float iDRZPos,
float iDRZNeg,
float iDPhiPos,
float iDPhiNeg)
80 const std::vector<SCHitMatch>& posCharge,
81 const std::vector<SCHitMatch>& negCharge,
222 const Propagator& propToLayerFromState)
const;
size_t getBinNr(float eta) const
const std::vector< MatchInfo > & matches() const
static float getZVtxFromExtrapolation(const GlobalPoint &primeVtxPos, const GlobalPoint &hitPos, const GlobalPoint &candPos)
bool layerHasValidHits(const DetLayer &layer, const TrajectoryStateOnSurface &hitSurState, const Propagator &propToLayerFromState) const
std::vector< TrajectorySeed > TrajectorySeedCollection
DetLayerGeometry const & detLayerGeom_
bool passesMatchSel(const SCHitMatch &hit, const size_t hitNr) const
float getCutValue(float et, float highEt, float highEtThres, float lowEtGrad) const
std::unordered_map< int, TrajectoryStateOnSurface > trajStateFromVtxPosChargeCache_
std::vector< double > dRZHighEtThres_
const bool requireExactMatchCount
const double dRZMaxLowEtThres_
virtual bool isDefined(const GlobalPoint &) const
True if the point is within the region where the concrete field.
DetId detId(size_t hitNr) const
float dPhiPos(size_t hitNr) const
std::vector< double > etaBins_
static edm::ParameterSetDescription makePSetDescription()
size_t getNrHitsRequired(const int nrValidLayers) const
PropagatorWithMaterial backwardPropagator_
std::vector< double > dPhiHighEtThres_
size_t nrMatchedHits() const
MatchingCutsV2(const edm::ParameterSet &pset)
MagneticField const & magField_
const TrackingRecHit & hit
float dPhiNeg(size_t hitNr) const
IntGlobalPointPairUnorderedMap< TrajectoryStateOnSurface > trajStateFromPointNegChargeCache_
const TrajectoryStateOnSurface & getTrajStateFromVtx(const TrackingRecHit &hit, const TrajectoryStateOnSurface &initialState, const PropagatorWithMaterial &propagator)
const bool useParamMagFieldIfDefined
MeasurementTrackerEvent const & measTkEvt_
bool operator()(const SCHitMatch &scHitMatch) const override
MagneticField const & magFieldParam_
const edm::ESGetToken< MagneticField, IdealMagneticFieldRecord > paramMagFieldToken
float dRZNeg(size_t hitNr) const
Configuration const & cfg_
std::vector< double > dPhiLowEtGrad_
std::vector< double > dPhiHighEt_
const std::vector< std::unique_ptr< MatchingCuts > > matchingCuts
TrajSeedMatcher(Configuration const &cfg, edm::EventSetup const &iSetup, MeasurementTrackerEvent const &measTkEvt)
virtual bool operator()(const SCHitMatch &scHitMatch) const =0
const std::vector< unsigned int > minNrHits
std::vector< double > dRZHighEt_
IntGlobalPointPairUnorderedMap< TrajectoryStateOnSurface > trajStateFromPointPosChargeCache_
const TrajectorySeed & seed() const
~TrajSeedMatcher()=default
int getNrValidLayersAlongTraj(const SCHitMatch &hit1, const SCHitMatch &hit2, const GlobalPoint &candPos, const GlobalPoint &vprim, const float energy, const int charge)
const edm::ESGetToken< MagneticField, IdealMagneticFieldRecord > magFieldToken
int nrValidLayers() const
float getDRZCutValue(const float scEt, const float scEta) const
const std::vector< double > dRZMaxLowEtEtaBins_
const bool enableHitSkipping
float dRZPos(size_t hitNr) const
const TrajectorySeed & seed_
static constexpr float kElectronMass_
std::unordered_map< std::pair< int, GlobalPoint >, T, HashIntGlobalPointPair > IntGlobalPointPairUnorderedMap
const MagneticField & getMagField(const GlobalPoint &point) const
SeedWithInfo(const TrajectorySeed &seed, const std::vector< SCHitMatch > &posCharge, const std::vector< SCHitMatch > &negCharge, int nrValidLayers)
MatchingCutsV1(const edm::ParameterSet &pset)
const TrajectoryStateOnSurface & getTrajStateFromPoint(const TrackingRecHit &hit, const FreeTrajectoryState &initialState, const GlobalPoint &point, const PropagatorWithMaterial &propagator)
std::vector< double > dRZLowEtGrad_
MatchInfo(const DetId &iDetId, float iDRZPos, float iDRZNeg, float iDPhiPos, float iDPhiNeg)
const std::vector< int > minNrHitsValidLayerBins
Configuration(const edm::ParameterSet &pset, edm::ConsumesCollector &&cc)
const std::vector< double > dRZMaxLowEt_
bool operator()(const SCHitMatch &scHitMatch) const override
float getVal(size_t hitNr, float MatchInfo::*val) const
TrajectoryStateOnSurface makeTrajStateOnSurface(const GlobalPoint &pos, const GlobalPoint &vtx, const float energy, const int charge) const
std::vector< MatchInfo > matchInfo_
const edm::ESGetToken< NavigationSchool, NavigationSchoolRecord > navSchoolToken
const edm::ESGetToken< DetLayerGeometry, RecoGeometryRecord > detLayerGeomToken
*vegas h *****************************************************used in the default bin number in original ***version of VEGAS is ***a higher bin number might help to derive a more precise ***grade subtle point
std::vector< TrajSeedMatcher::SeedWithInfo > operator()(const TrajectorySeedCollection &seeds, const GlobalPoint &candPos, const GlobalPoint &vprim, const float energy)
PropagatorWithMaterial forwardPropagator_
std::unordered_map< int, TrajectoryStateOnSurface > trajStateFromVtxNegChargeCache_
NavigationSchool const & navSchool_
std::vector< SCHitMatch > processSeed(const TrajectorySeed &seed, const GlobalPoint &candPos, const GlobalPoint &vprim, const float energy, const TrajectoryStateOnSurface &initialTrajState)