CMS 3D CMS Logo

/data/doxygen/doxygen-1.7.3/gen/CMSSW_4_2_8/src/RecoMuon/TrackerSeedGenerator/plugins/TSGForRoadSearch.h

Go to the documentation of this file.
00001 #ifndef RecoMuon_TrackerSeedGenerator_TSGForRoadSearch_H
00002 #define RecoMuon_TrackerSeedGenerator_TSGForRoadSearch_H
00003 
00020 #include "RecoMuon/TrackerSeedGenerator/interface/TrackerSeedGenerator.h"
00021 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00022 
00023 #include "FWCore/Framework/interface/ESHandle.h"
00024 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00025 #include "FWCore/Framework/interface/EventSetup.h"
00026 #include "DataFormats/TrajectorySeed/interface/TrajectorySeed.h"
00027 #include "DataFormats/TrackReco/interface/Track.h"
00028 #include "Geometry/CommonDetUnit/interface/GlobalTrackingGeometry.h"
00029 #include <RecoTracker/MeasurementDet/interface/MeasurementTracker.h>
00030 #include "MagneticField/Engine/interface/MagneticField.h"
00031 #include "TrackingTools/GeomPropagators/interface/Propagator.h"
00032 
00033 #include "TrackingTools/KalmanUpdators/interface/Chi2MeasurementEstimator.h"
00034 
00035 #include "TrackingTools/DetLayers/interface/DetLayer.h"
00036 #include "RecoMuon/TrackingTools/interface/MuonErrorMatrix.h"
00037 
00038 class TrackingRegion;
00039 class MuonServiceProxy;
00040 class TrajectoryStateUpdator;
00041 
00042 class TSGForRoadSearch : public TrackerSeedGenerator {
00043 
00044 public:
00045   typedef std::vector<TrajectorySeed> BTSeedCollection;  
00046   typedef std::pair<const Trajectory*, reco::TrackRef> TrackCand;
00047 
00048   TSGForRoadSearch(const edm::ParameterSet &pset);
00049 
00050   virtual ~TSGForRoadSearch();
00051 
00053   void init(const MuonServiceProxy *service);
00055   void setEvent(const edm::Event &event);
00056 
00058   void  trackerSeeds(const TrackCand&, const TrackingRegion&, BTSeedCollection&);
00059 
00060 private:
00061   //concrete implementation
00063   void makeSeeds_0(const reco::Track &,std::vector<TrajectorySeed> &);
00065   void makeSeeds_1(const reco::Track &,std::vector<TrajectorySeed> &);
00067   void makeSeeds_2(const reco::Track &,std::vector<TrajectorySeed> &);
00069   void makeSeeds_3(const reco::Track &,std::vector<TrajectorySeed> &);
00071   void makeSeeds_4(const reco::Track &,std::vector<TrajectorySeed> &);
00072 
00073 private:
00075   bool IPfts(const reco::Track &, FreeTrajectoryState &);
00077   bool notAtIPtsos(TrajectoryStateOnSurface & state);
00078 
00080   bool theAdjustAtIp;
00081 
00083   void pushTrajectorySeed(const reco::Track & muon, std::vector<DetLayer::DetWithState > & compatible, PropagationDirection direction, std::vector<TrajectorySeed>& result)const;
00084   edm::ParameterSet theConfig;
00085 
00086   edm::ESHandle<MeasurementTracker> theMeasurementTracker;
00087   edm::ESHandle<GeometricSearchTracker> theGeometricSearchTracker;
00088 
00089   TrajectoryStateUpdator * theUpdator;
00090   const MuonServiceProxy * theProxyService;
00091 
00092   unsigned int theOption;
00093   bool theCopyMuonRecHit;
00094   bool theManySeeds;
00095   std::string thePropagatorName;
00096   edm::ESHandle<Propagator> theProp;
00097   std::string thePropagatorCompatibleName;
00098   edm::ESHandle<Propagator> thePropCompatible;
00099   Chi2MeasurementEstimator * theChi2Estimator;
00100   std::string theCategory;
00101 
00102   MuonErrorMatrix * theErrorMatrixAdjuster;
00103 };
00104 
00105 
00106 #endif