CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
AlignmentTrackSelector.h
Go to the documentation of this file.
1 #ifndef Alignment_CommonAlignmentAlgorithm_AlignmentTrackSelector_h
2 #define Alignment_CommonAlignmentAlgorithm_AlignmentTrackSelector_h
3 
13 #include <vector>
14 
15 namespace edm {
16  class Event;
17  class EventSetup;
18  class ParameterSet;
19 } // namespace edm
20 
21 class TrackingRecHit;
22 class SiStripRecHit1D;
23 class SiStripRecHit2D;
24 
26 public:
27  typedef std::vector<const reco::Track*> Tracks;
28 
31 
34 
36  Tracks select(const Tracks& tracks, const edm::Event& evt, const edm::EventSetup& eSetup) const;
38  bool useThisFilter();
39 
40 private:
42  Tracks basicCuts(const Tracks& tracks, const edm::Event& evt, const edm::EventSetup& eSetup) const;
44  bool detailedHitsCheck(const reco::Track* track, const edm::Event& evt, const edm::EventSetup& eSetup) const;
45  bool isHit2D(const TrackingRecHit& hit) const;
47  bool isOkCharge(const TrackingRecHit* therechit) const;
48  bool isOkChargeStripHit(const SiStripRecHit1D& siStripRecHit1D) const;
49  bool isOkChargeStripHit(const SiStripRecHit2D& siStripRecHit2D) const;
50  bool isIsolated(const TrackingRecHit* therechit, const edm::Event& evt) const;
51  bool isOkTrkQuality(const reco::Track* track) const;
52 
55 
56  //filter tracks that do not have a min # of hits taken by the Skim&Prescale workflow
57  Tracks checkPrescaledHits(const Tracks& tracks, const edm::Event& evt) const;
58 
60  struct ComparePt {
61  bool operator()(const reco::Track* t1, const reco::Track* t2) const { return t1->pt() > t2->pt(); }
62  };
64 
66 
68  const int seedOnlyFromAbove_;
71  const bool multiplicityOnInput_;
74  const int theCharge_;
78  const bool countStereoHitAs2D_; // count hits on stereo components of GluedDet for nHitMin2D_?
79  const unsigned int nHitMin2D_;
85  const double maxHitDiffEndcaps_;
86  const double nLostHitMax_;
87  std::vector<double> RorZofFirstHitMin_;
88  std::vector<double> RorZofFirstHitMax_;
89  std::vector<double> RorZofLastHitMin_;
90  std::vector<double> RorZofLastHitMax_;
91 
92  const edm::InputTag clusterValueMapTag_; // ValueMap containing association cluster - flag
93  edm::EDGetTokenT<AliClusterValueMap> clusterValueMapToken_; // ValueMap containing association cluster - flag
94  const int minPrescaledHits_;
96 
97  std::vector<reco::TrackBase::TrackQuality> trkQualities_;
98 
99  std::vector<reco::TrackBase::TrackAlgorithm> trkSteps_;
102 };
103 
104 #endif
edm::EDGetTokenT< SiStripMatchedRecHit2DCollection > matchedrecHitsToken_
std::vector< double > RorZofFirstHitMax_
tuple cfg
Definition: looper.py:296
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
~AlignmentTrackSelector()
destructor
std::vector< reco::TrackBase::TrackAlgorithm > trkSteps_
Tracks theNHighestPtTracks(const Tracks &tracks) const
filter the n highest pt tracks
std::vector< reco::TrackBase::TrackQuality > trkQualities_
edm::ESGetToken< TrackerTopology, TrackerTopologyRcd > tTopoToken_
auto const & tracks
cannot be loose
const unsigned int nHitMin2D_
bool isOkChargeStripHit(const SiStripRecHit1D &siStripRecHit1D) const
edm::EDGetTokenT< SiStripRecHit2DCollection > rphirecHitsToken_
bool isHit2D(const TrackingRecHit &hit) const
double pt() const
track transverse momentum
Definition: TrackBase.h:637
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
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.