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 EventSetup;
11  class ParameterSet;
12 }
13 
14 class TrackingRecHit;
15 class SiStripRecHit1D;
16 class SiStripRecHit2D;
17 
19 {
20 
21  public:
22 
23  typedef std::vector<const reco::Track*> Tracks;
24 
27 
30 
32  Tracks select(const Tracks& tracks, const edm::Event& evt, const edm::EventSetup& eSetup) const;
34  bool useThisFilter();
35 
36 
37  private:
38 
40  Tracks basicCuts(const Tracks& tracks, const edm::Event& evt, const edm::EventSetup& eSetup) const;
42  bool detailedHitsCheck(const reco::Track* track, const edm::Event& evt, const edm::EventSetup& eSetup) const;
43  bool isHit2D(const TrackingRecHit &hit) const;
45  bool isOkCharge(const TrackingRecHit* therechit) const;
46  bool isOkChargeStripHit(const SiStripRecHit1D &siStripRecHit1D) const;
47  bool isOkChargeStripHit(const SiStripRecHit2D &siStripRecHit2D) const;
48  bool isIsolated(const TrackingRecHit* therechit, const edm::Event& evt) const;
49  bool isOkTrkQuality(const reco::Track* track) const;
50 
53 
54  //filter tracks that do not have a min # of hits taken by the Skim&Prescale workflow
55  Tracks checkPrescaledHits(const Tracks& tracks, const edm::Event& evt) const;
56 
58  struct ComparePt {
59  bool operator()( const reco::Track* t1, const reco::Track* t2 ) const {
60  return t1->pt()> t2->pt();
61  }
62  };
64 
68  const bool multiplicityOnInput_;
71  const int theCharge_;
75  const bool countStereoHitAs2D_; // count hits on stereo components of GluedDet for nHitMin2D_?
76  const unsigned int nHitMin2D_;
82  const double maxHitDiffEndcaps_;
83  const double nLostHitMax_;
84 
85  const edm::InputTag clusterValueMapTag_; // ValueMap containing association cluster - flag
86  const int minPrescaledHits_;
88 
89  std::vector<reco::TrackBase::TrackQuality> trkQualities_;
90 
91  std::vector<reco::TrackBase::TrackAlgorithm> trkSteps_;
94 
95 };
96 
97 #endif
98 
Tracks basicCuts(const Tracks &tracks, const edm::Event &evt, const edm::EventSetup &eSetup) const
apply basic cuts on pt,eta,phi,nhit
bool isIsolated(const TrackingRecHit *therechit, const edm::Event &evt) const
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
auto const T2 &decltype(t1.eta()) t2
Definition: deltaR.h:18
double pt() const
track transverse momentum
Definition: TrackBase.h:129
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_
bool detailedHitsCheck(const reco::Track *track, const edm::Event &evt, const edm::EventSetup &eSetup) const
checking hit requirements beyond simple number of valid hits
Tracks select(const Tracks &tracks, const edm::Event &evt, const edm::EventSetup &eSetup) const
select tracks
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.