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 
11 #include <vector>
12 
13 namespace edm {
14  class Event;
15  class EventSetup;
16  class ParameterSet;
17 }
18 
19 class TrackingRecHit;
20 class SiStripRecHit1D;
21 class SiStripRecHit2D;
22 
24 {
25 
26  public:
27 
28  typedef std::vector<const reco::Track*> Tracks;
29 
32 
35 
37  Tracks select(const Tracks& tracks, const edm::Event& evt, const edm::EventSetup& eSetup) const;
39  bool useThisFilter();
40 
41 
42  private:
43 
45  Tracks basicCuts(const Tracks& tracks, const edm::Event& evt, const edm::EventSetup& eSetup) const;
47  bool detailedHitsCheck(const reco::Track* track, const edm::Event& evt, const edm::EventSetup& eSetup) const;
48  bool isHit2D(const TrackingRecHit &hit) const;
50  bool isOkCharge(const TrackingRecHit* therechit) const;
51  bool isOkChargeStripHit(const SiStripRecHit1D &siStripRecHit1D) const;
52  bool isOkChargeStripHit(const SiStripRecHit2D &siStripRecHit2D) const;
53  bool isIsolated(const TrackingRecHit* therechit, const edm::Event& evt) const;
54  bool isOkTrkQuality(const reco::Track* track) const;
55 
58 
59  //filter tracks that do not have a min # of hits taken by the Skim&Prescale workflow
60  Tracks checkPrescaledHits(const Tracks& tracks, const edm::Event& evt) const;
61 
63  struct ComparePt {
64  bool operator()( const reco::Track* t1, const reco::Track* t2 ) const {
65  return t1->pt()> t2->pt();
66  }
67  };
69 
73  const bool multiplicityOnInput_;
76  const int theCharge_;
80  const bool countStereoHitAs2D_; // count hits on stereo components of GluedDet for nHitMin2D_?
81  const unsigned int nHitMin2D_;
87  const double maxHitDiffEndcaps_;
88  const double nLostHitMax_;
89  std::vector<double> RorZofFirstHitMin_;
90  std::vector<double> RorZofFirstHitMax_;
91  std::vector<double> RorZofLastHitMin_;
92  std::vector<double> RorZofLastHitMax_;
93 
94  const edm::InputTag clusterValueMapTag_; // ValueMap containing association cluster - flag
95  edm::EDGetTokenT<AliClusterValueMap> clusterValueMapToken_; // ValueMap containing association cluster - flag
96  const int minPrescaledHits_;
98 
99  std::vector<reco::TrackBase::TrackQuality> trkQualities_;
100 
101  std::vector<reco::TrackBase::TrackAlgorithm> trkSteps_;
104 };
105 
106 #endif
107 
edm::EDGetTokenT< SiStripMatchedRecHit2DCollection > matchedrecHitsToken_
std::vector< double > RorZofFirstHitMax_
tuple cfg
Definition: looper.py:293
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
Definition: Event.h:16
edm::EDGetTokenT< SiStripRecHit2DCollection > rphirecHitsToken_
bool isHit2D(const TrackingRecHit &hit) const
auto const T2 &decltype(t1.eta()) t2
Definition: deltaR.h:16
double pt() const
track transverse momentum
Definition: TrackBase.h:616
std::vector< double > RorZofLastHitMin_
bool isOkTrkQuality(const reco::Track *track) const
edm::EDGetTokenT< AliClusterValueMap > clusterValueMapToken_
std::vector< double > RorZofFirstHitMin_
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
bool isOkCharge(const TrackingRecHit *therechit) const
if valid, check for minimum charge (currently only in strip), if invalid give true ...
std::vector< double > RorZofLastHitMax_
bool operator()(const reco::Track *t1, const reco::Track *t2) const
compare two tracks in pt (used by theNHighestPtTracks)
AlignmentTrackSelector(const edm::ParameterSet &cfg, edm::ConsumesCollector &iC)
constructor
bool useThisFilter()
returns if any of the Filters is used.