CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
AlignmentTrackSelector.h
Go to the documentation of this file.
1 #ifndef Alignment_CommonAlignmentAlgorithm_AlignmentTrackSelector_h
2 #define Alignment_CommonAlignmentAlgorithm_AlignmentTrackSelector_h
3 
6 #include <vector>
7 
8 namespace edm {
9  class Event;
10  class ParameterSet;
11 }
12 
13 class TrackingRecHit;
14 class SiStripRecHit1D;
15 class SiStripRecHit2D;
16 
18 {
19 
20  public:
21 
22  typedef std::vector<const reco::Track*> Tracks;
23 
26 
29 
31  Tracks select(const Tracks& tracks, const edm::Event& evt) const;
33  bool useThisFilter();
34 
35 
36  private:
37 
39  Tracks basicCuts(const Tracks& tracks, const edm::Event& evt) const;
41  bool detailedHitsCheck(const reco::Track* track, const edm::Event& evt) const;
42  bool isHit2D(const TrackingRecHit &hit) const;
44  bool isOkCharge(const TrackingRecHit* therechit) const;
45  bool isOkChargeStripHit(const SiStripRecHit1D &siStripRecHit1D) const;
46  bool isOkChargeStripHit(const SiStripRecHit2D &siStripRecHit2D) const;
47  bool isIsolated(const TrackingRecHit* therechit, const edm::Event& evt) const;
48  bool isOkTrkQuality(const reco::Track* track) const;
49 
52 
53  //filter tracks that do not have a min # of hits taken by the Skim&Prescale workflow
54  Tracks checkPrescaledHits(const Tracks& tracks, const edm::Event& evt) const;
55 
57  struct ComparePt {
58  bool operator()( const reco::Track* t1, const reco::Track* t2 ) const {
59  return t1->pt()> t2->pt();
60  }
61  };
63 
67  const bool multiplicityOnInput_;
70  const int theCharge_;
74  const bool countStereoHitAs2D_; // count hits on stereo components of GluedDet for nHitMin2D_?
75  const unsigned int nHitMin2D_;
81  const double maxHitDiffEndcaps_;
82  const double nLostHitMax_;
83 
84  const edm::InputTag clusterValueMapTag_; // ValueMap containing association cluster - flag
85  const int minPrescaledHits_;
87 
88  std::vector<reco::TrackBase::TrackQuality> trkQualities_;
89 
90  std::vector<reco::TrackBase::TrackAlgorithm> trkSteps_;
93 
94 };
95 
96 #endif
97 
bool detailedHitsCheck(const reco::Track *track, const edm::Event &evt) const
checking hit requirements beyond simple number of valid hits
bool isIsolated(const TrackingRecHit *therechit, const edm::Event &evt) const
Tracks basicCuts(const Tracks &tracks, const edm::Event &evt) const
apply basic cuts on pt,eta,phi,nhit
std::vector< const reco::Track * > Tracks
Tracks checkPrescaledHits(const Tracks &tracks, const edm::Event &evt) const
std::vector< reco::TrackBase::TrackAlgorithm > trkSteps_
Tracks theNHighestPtTracks(const Tracks &tracks) const
filter the n highest pt tracks
std::vector< reco::TrackBase::TrackQuality > trkQualities_
const unsigned int nHitMin2D_
bool isOkChargeStripHit(const SiStripRecHit1D &siStripRecHit1D) const
AlignmentTrackSelector(const edm::ParameterSet &cfg)
constructor
bool isHit2D(const TrackingRecHit &hit) const
Tracks select(const Tracks &tracks, const edm::Event &evt) const
select tracks
double pt() const
track transverse momentum
Definition: TrackBase.h:131
const edm::InputTag matchedrecHitsTag_
bool isOkTrkQuality(const reco::Track *track) const
const double ptMin_
if true, cut min/maxMultiplicity on input instead of on final result
tuple tracks
Definition: testEve_cfg.py:39
const edm::InputTag clusterValueMapTag_
const edm::InputTag rphirecHitsTag_
bool isOkCharge(const TrackingRecHit *therechit) const
if valid, check for minimum charge (currently only in strip), if invalid give true ...
bool operator()(const reco::Track *t1, const reco::Track *t2) const
compare two tracks in pt (used by theNHighestPtTracks)
bool useThisFilter()
returns if any of the Filters is used.