CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_4_5_patch3/src/RecoTracker/SiTrackerMRHTools/interface/SiTrackerMultiRecHitUpdator.h

Go to the documentation of this file.
00001 #ifndef SiTrackerMultiRecHitUpdator_h
00002 #define SiTrackerMultiRecHitUpdator_h
00003 
00004 #include "DataFormats/GeometryVector/interface/LocalPoint.h"
00005 #include "TrackingTools/TransientTrackingRecHit/interface/TransientTrackingRecHit.h"
00006 #include "TrackingTools/TransientTrackingRecHit/interface/TransientTrackingRecHitBuilder.h"
00007 
00008 
00009 #include <vector>
00010 
00011 class SiTrackerMultiRecHit;
00012 class TrajectoryStateOnSurface;
00013 class TrackingRecHit;   
00014 class TransientTrackingRecHitBuilder;
00015 class LocalError;
00016 class TrackingRecHitPropagator;
00017 /*
00018 builds a TSiTrackerMultiRecHitout of a vector of TrackingRecHit ans a tsos
00019 or updates an existing TSiTrackerMultiRecHitout given a tsos.
00020 */
00021 
00022 class SiTrackerMultiRecHitUpdator{
00023  public:
00024   typedef std::pair<LocalPoint,LocalError>  LocalParameters;
00025   
00026   SiTrackerMultiRecHitUpdator(const TransientTrackingRecHitBuilder* builder,
00027                               const TrackingRecHitPropagator* hitpropagator,
00028                               const float Chi2Cut,
00029                               const std::vector<double>& anAnnealingProgram);
00030   virtual ~SiTrackerMultiRecHitUpdator(){};
00031   
00032   const std::vector<double>&  annealingProgram() const {return theAnnealingProgram;}
00033   
00034   //builds a TSiTrackerMultiRecHit 
00035   virtual TransientTrackingRecHit::RecHitPointer  buildMultiRecHit(const std::vector<const TrackingRecHit*>& rhv, 
00036                                                                    TrajectoryStateOnSurface tsos,
00037                                                                    float annealing=1.) const;
00038   
00039   //updates an existing TSiTrackerMultiRecHit
00040   //in case a diffrenet king of rechit is passed it returns  clone(tsos)
00041   virtual TransientTrackingRecHit::RecHitPointer  update( TransientTrackingRecHit::ConstRecHitPointer original,  
00042                                                           TrajectoryStateOnSurface tsos,
00043                                                           double annealing=1.) const;
00044   
00045   //returns a TSiTrackerMultiRecHit out of the transient components     
00046   virtual TransientTrackingRecHit::RecHitPointer  update( TransientTrackingRecHit::ConstRecHitContainer& tcomponents,          
00047                                                           TrajectoryStateOnSurface tsos,
00048                                                           double annealing=1.) const;
00049   
00050   const std::vector<double>& getAnnealingProgram() const {return theAnnealingProgram;}
00051   
00052  private:
00053   LocalError calcParametersError(TransientTrackingRecHit::ConstRecHitContainer& map) const;
00054   LocalPoint calcParameters(TransientTrackingRecHit::ConstRecHitContainer& map, const LocalError& er) const;
00055   LocalParameters calcParameters(TransientTrackingRecHit::ConstRecHitContainer& map) const;
00056   
00057   const TransientTrackingRecHitBuilder* theBuilder;
00058   const TrackingRecHitPropagator* theHitPropagator;
00059   double theChi2Cut;
00060   const std::vector<double> theAnnealingProgram;
00061 
00062 };
00063 #endif