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
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