Go to the documentation of this file.00001 #ifndef FastSimulation_Tracking_TrajectorySeedProducer_h
00002 #define FastSimulation_Tracking_TrajectorySeedProducer_h
00003
00004 #include "FWCore/Framework/interface/EDProducer.h"
00005 #include "FWCore/Utilities/interface/InputTag.h"
00006 #include "DataFormats/GeometryVector/interface/GlobalPoint.h"
00007 #include "DataFormats/VertexReco/interface/VertexFwd.h"
00008
00009 #include <vector>
00010 #include <string>
00011
00012 class TransientInitialStateEstimator;
00013 class MagneticField;
00014 class MagneticFieldMap;
00015 class TrackerGeometry;
00016 class TrajectoryStateOnSurface;
00017 class PTrajectoryStateOnDet;
00018 class ParticlePropagator;
00019 class PropagatorWithMaterial;
00020
00021 namespace edm {
00022 class ParameterSet;
00023 class Event;
00024 class EventSetup;
00025 }
00026
00027 class TrajectorySeedProducer : public edm::EDProducer
00028 {
00029 public:
00030
00031 explicit TrajectorySeedProducer(const edm::ParameterSet& conf);
00032
00033 virtual ~TrajectorySeedProducer();
00034
00035 virtual void beginRun(edm::Run & run, const edm::EventSetup & es);
00036
00037 virtual void produce(edm::Event& e, const edm::EventSetup& es);
00038
00039 private:
00040
00042 void stateOnDet(const TrajectoryStateOnSurface& ts,
00043 unsigned int detid,
00044 PTrajectoryStateOnDet& pts) const;
00045
00048 bool compatibleWithBeamAxis(GlobalPoint& gpos1,
00049 GlobalPoint& gpos2,
00050 double error,
00051 bool forward,
00052 unsigned algo) const;
00053
00054 private:
00055
00056 const MagneticField* theMagField;
00057 const MagneticFieldMap* theFieldMap;
00058 const TrackerGeometry* theGeometry;
00059 PropagatorWithMaterial* thePropagator;
00060
00061 std::vector<double> pTMin;
00062 std::vector<double> maxD0;
00063 std::vector<double> maxZ0;
00064 std::vector<unsigned> minRecHits;
00065 edm::InputTag hitProducer;
00066 edm::InputTag theBeamSpot;
00067
00068 bool seedCleaning;
00069 bool rejectOverlaps;
00070 unsigned int absMinRecHits;
00071 std::vector<std::string> seedingAlgo;
00072 std::vector<unsigned int> numberOfHits;
00073 std::vector<unsigned int> firstHitSubDetectorNumber;
00074 std::vector<unsigned int> secondHitSubDetectorNumber;
00075 std::vector<unsigned int> thirdHitSubDetectorNumber;
00076 std::vector< std::vector<unsigned int> > firstHitSubDetectors;
00077 std::vector< std::vector<unsigned int> > secondHitSubDetectors;
00078 std::vector< std::vector<unsigned int> > thirdHitSubDetectors;
00079
00080 std::vector<double> originRadius;
00081 std::vector<double> originHalfLength;
00082 std::vector<double> originpTMin;
00083
00084 std::vector<edm::InputTag> primaryVertices;
00085 std::vector<double> zVertexConstraint;
00086
00087 std::vector<const reco::VertexCollection*> vertices;
00088 double x0, y0, z0;
00089
00090 };
00091
00092 #endif