File indexing completed on 2025-02-05 23:50:57
0001 #ifndef Alignment_CommonAlignmentAlgorithm_AlignmentTrackSelector_h
0002 #define Alignment_CommonAlignmentAlgorithm_AlignmentTrackSelector_h
0003
0004 #include "DataFormats/Alignment/interface/AliClusterValueMapFwd.h"
0005 #include "DataFormats/TrackReco/interface/Track.h"
0006 #include "DataFormats/TrackerCommon/interface/TrackerTopology.h"
0007 #include "DataFormats/TrackerRecHit2D/interface/SiStripMatchedRecHit2DCollection.h"
0008 #include "DataFormats/TrackerRecHit2D/interface/SiStripRecHit2DCollection.h"
0009 #include "FWCore/Framework/interface/ConsumesCollector.h"
0010 #include "FWCore/Utilities/interface/EDGetToken.h"
0011 #include "FWCore/Utilities/interface/InputTag.h"
0012 #include "FWCore/ParameterSet/interface/ParameterSetDescription.h"
0013 #include "Geometry/Records/interface/TrackerTopologyRcd.h"
0014 #include <vector>
0015
0016 namespace edm {
0017 class Event;
0018 class EventSetup;
0019 class ParameterSet;
0020 }
0021
0022 class TrackingRecHit;
0023 class SiStripRecHit1D;
0024 class SiStripRecHit2D;
0025
0026 class AlignmentTrackSelector {
0027 public:
0028 typedef std::vector<const reco::Track*> Tracks;
0029
0030
0031 AlignmentTrackSelector(const edm::ParameterSet& cfg, edm::ConsumesCollector& iC);
0032
0033
0034 ~AlignmentTrackSelector();
0035
0036
0037 Tracks select(const Tracks& tracks, const edm::Event& evt, const edm::EventSetup& eSetup) const;
0038
0039 bool useThisFilter();
0040
0041 static void fillPSetDescription(edm::ParameterSetDescription& desc);
0042
0043 private:
0044
0045 Tracks basicCuts(const Tracks& tracks, const edm::Event& evt, const edm::EventSetup& eSetup) const;
0046
0047 bool detailedHitsCheck(const reco::Track* track, const edm::Event& evt, const edm::EventSetup& eSetup) const;
0048 bool isHit2D(const TrackingRecHit& hit) const;
0049
0050 bool isOkCharge(const TrackingRecHit* therechit) const;
0051 bool isOkChargeStripHit(const SiStripRecHit1D& siStripRecHit1D) const;
0052 bool isOkChargeStripHit(const SiStripRecHit2D& siStripRecHit2D) const;
0053 bool isIsolated(const TrackingRecHit* therechit, const edm::Event& evt) const;
0054 bool isOkTrkQuality(const reco::Track* track) const;
0055
0056
0057 Tracks theNHighestPtTracks(const Tracks& tracks) const;
0058
0059
0060 Tracks checkPrescaledHits(const Tracks& tracks, const edm::Event& evt) const;
0061
0062
0063 struct ComparePt {
0064 bool operator()(const reco::Track* t1, const reco::Track* t2) const { return t1->pt() > t2->pt(); }
0065 };
0066 ComparePt ptComparator;
0067
0068 edm::ESGetToken<TrackerTopology, TrackerTopologyRcd> tTopoToken_;
0069
0070 const bool applyBasicCuts_, applyNHighestPt_, applyMultiplicityFilter_;
0071 const int seedOnlyFromAbove_;
0072 const bool applyIsolation_, chargeCheck_;
0073 const int nHighestPt_, minMultiplicity_, maxMultiplicity_;
0074 const bool multiplicityOnInput_;
0075 const double ptMin_, ptMax_, pMin_, pMax_, etaMin_, etaMax_, phiMin_, phiMax_;
0076 const double nHitMin_, nHitMax_, chi2nMax_, d0Min_, d0Max_, dzMin_, dzMax_;
0077 const int theCharge_;
0078 const double minHitChargeStrip_, minHitIsolation_;
0079 edm::EDGetTokenT<SiStripRecHit2DCollection> rphirecHitsToken_;
0080 edm::EDGetTokenT<SiStripMatchedRecHit2DCollection> matchedrecHitsToken_;
0081 const bool countStereoHitAs2D_;
0082 const unsigned int nHitMin2D_;
0083 const int minHitsinTIB_, minHitsinTOB_, minHitsinTID_, minHitsinTEC_;
0084 const int minHitsinBPIX_, minHitsinFPIX_, minHitsinPIX_;
0085 const int minHitsinTIDplus_, minHitsinTIDminus_, minHitsinTECplus_, minHitsinTECminus_;
0086 const int minHitsinFPIXplus_, minHitsinFPIXminus_;
0087 const int minHitsinENDCAP_, minHitsinENDCAPplus_, minHitsinENDCAPminus_;
0088 const double maxHitDiffEndcaps_;
0089 const double nLostHitMax_;
0090 std::vector<double> RorZofFirstHitMin_;
0091 std::vector<double> RorZofFirstHitMax_;
0092 std::vector<double> RorZofLastHitMin_;
0093 std::vector<double> RorZofLastHitMax_;
0094
0095 const edm::InputTag clusterValueMapTag_;
0096 edm::EDGetTokenT<AliClusterValueMap> clusterValueMapToken_;
0097 const int minPrescaledHits_;
0098 const bool applyPrescaledHitsFilter_;
0099
0100 std::vector<reco::TrackBase::TrackQuality> trkQualities_;
0101
0102 std::vector<reco::TrackBase::TrackAlgorithm> trkSteps_;
0103 bool applyTrkQualityCheck_;
0104 bool applyIterStepCheck_;
0105 };
0106
0107 #endif