Go to the documentation of this file.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 #include "TrackingTools/GsfTools/interface/MultiTrajectoryStateMode.h"
00020
00021
00022
00023 class TrajectoryStateOnSurface;
00024 class Propagator;
00025 class TransverseImpactPointExtrapolator;
00026 class TrajectoryStateClosestToBeamLineBuilder;
00027
00028 class GsfTrackProducerBase : public TrackProducerBase<reco::GsfTrack> {
00029 public:
00030
00032 explicit GsfTrackProducerBase(bool trajectoryInEvent, bool split) :
00033 TrackProducerBase<reco::GsfTrack>(trajectoryInEvent),
00034 useSplitting(split){}
00035
00037 virtual void putInEvt(edm::Event&,
00038 const Propagator* prop,
00039 const MeasurementTracker* measTk,
00040 std::auto_ptr<TrackingRecHitCollection>&,
00041 std::auto_ptr<reco::GsfTrackCollection>&,
00042 std::auto_ptr<reco::TrackExtraCollection>&,
00043 std::auto_ptr<reco::GsfTrackExtraCollection>&,
00044 std::auto_ptr<std::vector<Trajectory> >&,
00045 AlgoProductCollection&,
00046 const reco::BeamSpot&);
00047
00048
00049 protected:
00050 void fillStates (TrajectoryStateOnSurface tsos, std::vector<reco::GsfComponent5D>& states) const;
00051 void fillMode (reco::GsfTrack& track, const TrajectoryStateOnSurface innertsos,
00052 const Propagator& gsfProp,
00053 const TransverseImpactPointExtrapolator& tipExtrapolator,
00054 TrajectoryStateClosestToBeamLineBuilder& tscblBuilder,
00055 const reco::BeamSpot& bs) const;
00056
00057 private:
00059 void localParametersFromQpMode (const TrajectoryStateOnSurface tsos,
00060 AlgebraicVector5& parameters,
00061 AlgebraicSymMatrix55& covariance) const;
00063 bool computeModeAtTM (const TrajectoryMeasurement& tm,
00064 reco::GsfTrackExtra::Point& position,
00065 reco::GsfTrackExtra::Vector& momentum,
00066 Measurement1D& deltaP) const;
00067
00068 private:
00069 bool useSplitting;
00070
00071 };
00072
00073
00074 #endif