00001 #ifndef Alignment_CommonAlignmentAlgorithm_AlignmentTrackSelector_h
00002 #define Alignment_CommonAlignmentAlgorithm_AlignmentTrackSelector_h
00003
00004 #include "DataFormats/TrackReco/interface/Track.h"
00005 #include "FWCore/ParameterSet/interface/InputTag.h"
00006 #include <vector>
00007
00008 namespace edm {
00009 class Event;
00010 class ParameterSet;
00011 }
00012
00013 class TrackingRecHit;
00014 class SiStripRecHit2D;
00015
00016 class AlignmentTrackSelector
00017 {
00018
00019 public:
00020
00021 typedef std::vector<const reco::Track*> Tracks;
00022
00024 AlignmentTrackSelector(const edm::ParameterSet & cfg);
00025
00027 ~AlignmentTrackSelector();
00028
00030 Tracks select(const Tracks& tracks, const edm::Event& evt) const;
00032 bool useThisFilter();
00033
00034
00035 private:
00036
00038 Tracks basicCuts(const Tracks& tracks, const edm::Event& evt) const;
00040 bool detailedHitsCheck(const reco::Track* track, const edm::Event& evt) const;
00041 bool isHit2D(const TrackingRecHit &hit) const;
00043 bool isOkCharge(const TrackingRecHit* therechit) const;
00044 bool isOkChargeStripHit(const SiStripRecHit2D *siStripRecHit2D) const;
00045 bool isIsolated(const TrackingRecHit* therechit, const edm::Event& evt) const;
00046
00048 Tracks theNHighestPtTracks(const Tracks& tracks) const;
00049
00051 struct ComparePt {
00052 bool operator()( const reco::Track* t1, const reco::Track* t2 ) const {
00053 return t1->pt()> t2->pt();
00054 }
00055 };
00056 ComparePt ptComparator;
00057
00058 const bool applyBasicCuts_, applyNHighestPt_, applyMultiplicityFilter_;
00059 const bool seedOnlyFromAbove_, applyIsolation_, chargeCheck_ ;
00060 const int nHighestPt_, minMultiplicity_, maxMultiplicity_;
00061 const bool multiplicityOnInput_;
00062 const double ptMin_,ptMax_,pMin_,pMax_,etaMin_,etaMax_,phiMin_,phiMax_,nHitMin_,nHitMax_,chi2nMax_;
00063 const double minHitChargeStrip_, minHitIsolation_;
00064 const edm::InputTag rphirecHitsTag_;
00065 const edm::InputTag matchedrecHitsTag_;
00066 const bool countStereoHitAs2D_;
00067 const unsigned int nHitMin2D_;
00068 const int minHitsinTIB_, minHitsinTOB_, minHitsinTID_, minHitsinTEC_, minHitsinBPIX_, minHitsinFPIX_;
00069
00070 };
00071
00072 #endif
00073