Go to the documentation of this file.00001 #ifndef Alignment_CommonAlignmentAlgorithm_AlignmentTrackSelector_h
00002 #define Alignment_CommonAlignmentAlgorithm_AlignmentTrackSelector_h
00003
00004 #include "DataFormats/TrackReco/interface/Track.h"
00005 #include "FWCore/Utilities/interface/InputTag.h"
00006 #include <vector>
00007
00008 namespace edm {
00009 class Event;
00010 class ParameterSet;
00011 }
00012
00013 class TrackingRecHit;
00014 class SiStripRecHit1D;
00015 class SiStripRecHit2D;
00016
00017 class AlignmentTrackSelector
00018 {
00019
00020 public:
00021
00022 typedef std::vector<const reco::Track*> Tracks;
00023
00025 AlignmentTrackSelector(const edm::ParameterSet & cfg);
00026
00028 ~AlignmentTrackSelector();
00029
00031 Tracks select(const Tracks& tracks, const edm::Event& evt) const;
00033 bool useThisFilter();
00034
00035
00036 private:
00037
00039 Tracks basicCuts(const Tracks& tracks, const edm::Event& evt) const;
00041 bool detailedHitsCheck(const reco::Track* track, const edm::Event& evt) const;
00042 bool isHit2D(const TrackingRecHit &hit) const;
00044 bool isOkCharge(const TrackingRecHit* therechit) const;
00045 bool isOkChargeStripHit(const SiStripRecHit1D *siStripRecHit1D) const;
00046 bool isOkChargeStripHit(const SiStripRecHit2D *siStripRecHit2D) const;
00047 bool isIsolated(const TrackingRecHit* therechit, const edm::Event& evt) const;
00048 bool isOkTrkQuality(const reco::Track* track) const;
00049
00051 Tracks theNHighestPtTracks(const Tracks& tracks) const;
00052
00053
00054 Tracks checkPrescaledHits(const Tracks& tracks, const edm::Event& evt) const;
00055
00057 struct ComparePt {
00058 bool operator()( const reco::Track* t1, const reco::Track* t2 ) const {
00059 return t1->pt()> t2->pt();
00060 }
00061 };
00062 ComparePt ptComparator;
00063
00064 const bool applyBasicCuts_, applyNHighestPt_, applyMultiplicityFilter_;
00065 const bool seedOnlyFromAbove_, applyIsolation_, chargeCheck_ ;
00066 const int nHighestPt_, minMultiplicity_, maxMultiplicity_;
00067 const bool multiplicityOnInput_;
00068 const double ptMin_,ptMax_,pMin_,pMax_,etaMin_,etaMax_,phiMin_,phiMax_;
00069 const double nHitMin_,nHitMax_,chi2nMax_, d0Min_,d0Max_,dzMin_,dzMax_;
00070 const int theCharge_;
00071 const double minHitChargeStrip_, minHitIsolation_;
00072 const edm::InputTag rphirecHitsTag_;
00073 const edm::InputTag matchedrecHitsTag_;
00074 const bool countStereoHitAs2D_;
00075 const unsigned int nHitMin2D_;
00076 const int minHitsinTIB_, minHitsinTOB_, minHitsinTID_, minHitsinTEC_;
00077 const int minHitsinBPIX_, minHitsinFPIX_, minHitsinPIX_;
00078 const int minHitsinTIDplus_, minHitsinTIDminus_, minHitsinTECplus_, minHitsinTECminus_;
00079 const int minHitsinFPIXplus_, minHitsinFPIXminus_;
00080 const int minHitsinENDCAP_, minHitsinENDCAPplus_, minHitsinENDCAPminus_;
00081 const double maxHitDiffEndcaps_;
00082 const double nLostHitMax_;
00083
00084 const edm::InputTag clusterValueMapTag_;
00085 const int minPrescaledHits_;
00086 const bool applyPrescaledHitsFilter_;
00087
00088 std::vector<reco::TrackBase::TrackQuality> trkQualities_;
00089
00090 std::vector<reco::TrackBase::TrackAlgorithm> trkSteps_;
00091 bool applyTrkQualityCheck_;
00092 bool applyIterStepCheck_;
00093
00094 };
00095
00096 #endif
00097