00001 #ifndef GsfTrackProducerBase_h
00002 #define GsfTrackProducerBase_h
00003
00012 #include "DataFormats/GsfTrackReco/interface/GsfTrack.h"
00013 #include "DataFormats/GsfTrackReco/interface/GsfTrackFwd.h"
00014 #include "DataFormats/GsfTrackReco/interface/GsfTrackExtra.h"
00015 #include "DataFormats/GsfTrackReco/interface/GsfTrackExtraFwd.h"
00016 #include "DataFormats/GsfTrackReco/interface/GsfComponent5D.h"
00017 #include "RecoTracker/TrackProducer/interface/TrackProducerBase.h"
00018 #include "DataFormats/BeamSpot/interface/BeamSpot.h"
00019
00020
00021
00022 class TrajectoryStateOnSurface;
00023 class Propagator;
00024 class TransverseImpactPointExtrapolator;
00025 class TrajectoryStateClosestToBeamLineBuilder;
00026
00027 class GsfTrackProducerBase : public TrackProducerBase<reco::GsfTrack> {
00028 public:
00029
00031 explicit GsfTrackProducerBase(bool trajectoryInEvent, bool split) :
00032 TrackProducerBase<reco::GsfTrack>(trajectoryInEvent),
00033 useSplitting(split){}
00034
00036 virtual void putInEvt(edm::Event&,
00037 std::auto_ptr<TrackingRecHitCollection>&,
00038 std::auto_ptr<reco::GsfTrackCollection>&,
00039 std::auto_ptr<reco::TrackExtraCollection>&,
00040 std::auto_ptr<reco::GsfTrackExtraCollection>&,
00041 std::auto_ptr<std::vector<Trajectory> >&,
00042 AlgoProductCollection&,
00043 const reco::BeamSpot&);
00044
00045
00046 protected:
00047 void fillStates (TrajectoryStateOnSurface tsos, std::vector<reco::GsfComponent5D>& states) const;
00048 void fillMode (reco::GsfTrack& track, const TrajectoryStateOnSurface innertsos,
00049 const Propagator& gsfProp,
00050 const TransverseImpactPointExtrapolator& tipExtrapolator,
00051 TrajectoryStateClosestToBeamLineBuilder& tscblBuilder,
00052 const reco::BeamSpot& bs) const;
00053
00054 private:
00055 bool useSplitting;
00056
00057 };
00058
00059
00060 #endif