CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_1_8_patch9/src/RecoTracker/TrackProducer/interface/GsfTrackProducerBase.h

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 // #include "TrackingTools/TransientTrack/interface/TransientTrack.h"
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