CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_4_5_patch3/src/Alignment/CommonAlignmentProducer/interface/AlignmentTrackSelector.h

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   //filter tracks that do not have a min # of hits taken by the Skim&Prescale workflow
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_; // count hits on stereo components of GluedDet for nHitMin2D_?
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_;  // ValueMap containing association cluster - flag
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