CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_4_5_patch3/src/RecoMuon/MuonSeedGenerator/src/SETSeedFinder.h

Go to the documentation of this file.
00001 #ifndef MuonSeedGenerator_SETSeedFinder_h
00002 #define MuonSeedGenerator_SETSeedFinder_h
00003 
00004 #include "RecoMuon/MuonSeedGenerator/src/MuonSeedVFinder.h"
00005 #include "RecoMuon/TrackingTools/interface/MuonServiceProxy.h"
00006 #include "RecoMuon/MuonSeedGenerator/src/MuonSeedPtExtractor.h"
00007 #include "RecoMuon/MuonSeedGenerator/src/SETFilter.h"
00008 #include "CLHEP/Matrix/Vector.h"
00009 #include "CLHEP/Vector/ThreeVector.h"
00010 
00011 
00012 class SETSeedFinder : public MuonSeedVFinder 
00013 {
00014 public:
00015   typedef MuonTransientTrackingRecHit::MuonRecHitContainer MuonRecHitContainer;
00016 
00017   explicit SETSeedFinder(const edm::ParameterSet & pset);
00018   virtual ~SETSeedFinder() {delete thePtExtractor;}
00020   virtual void setBField(const MagneticField * field) {}
00021 
00029   virtual void seeds(const MuonRecHitContainer & cluster,
00030                      std::vector<TrajectorySeed> & result);
00031 
00032   void setServiceProxy(MuonServiceProxy * service) {theService = service;}
00033 
00034   std::vector<MuonRecHitContainer>
00035   sortByLayer(MuonRecHitContainer & cluster) const;
00036 
00037   //---- For protection against huge memory consumtion
00038   void limitCombinatorics(std::vector< MuonRecHitContainer > & MuonRecHitContainer_perLayer);
00039     
00040   std::vector<MuonRecHitContainer>
00041   findAllValidSets(const std::vector<MuonRecHitContainer> & MuonRecHitContainer_perLayer);
00042 
00043   std::pair <int, int> checkAngleDeviation(double dPhi_1, double dPhi_2) const;
00044 
00045   void validSetsPrePruning(std::vector<MuonRecHitContainer> & allValidSets);
00046 
00047   void pre_prune(MuonRecHitContainer & validSet) const;
00048 
00049   std::vector <SeedCandidate>
00050   fillSeedCandidates(std::vector <MuonRecHitContainer> & allValidSets);
00051 
00052   void estimateMomentum(const MuonRecHitContainer & validSet, 
00053                         CLHEP::Hep3Vector & momentum, int & charge) const;
00054 
00055   TrajectorySeed makeSeed(const TrajectoryStateOnSurface & tsos, 
00056                           const TransientTrackingRecHit::ConstRecHitContainer & hits) const;
00057 
00058 private:
00059   MuonServiceProxy * theService;
00060 
00061   bool apply_prePruning;
00062   bool useSegmentsInTrajectory;
00063 
00064 
00065 };
00066 
00067 #endif
00068 
00069 
00070