Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2021-08-28 03:59:20

0001 #ifndef TransientInitialStateEstimator_H
0002 #define TransientInitialStateEstimator_H
0003 
0004 #include "FWCore/Framework/interface/ConsumesCollector.h"
0005 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0006 
0007 #include "TrackingTools/TrajectoryState/interface/TrajectoryStateOnSurface.h"
0008 #include "RecoTracker/TransientTrackingRecHit/interface/TkClonerImpl.h"
0009 
0010 #include <utility>
0011 
0012 class Propagator;
0013 class GeomDet;
0014 class Trajectory;
0015 class TrackingComponentsRecord;
0016 namespace edm {
0017   class EventSetup;
0018 }
0019 
0020 /// Computes the trajectory state to be used as a starting state for the track fit
0021 /// from the vector of hits. The parameters of this state are close to the final fit parameters.
0022 /// The error matrix is enlarged in order not to bias the track fit.
0023 
0024 class TransientInitialStateEstimator {
0025 public:
0026   typedef TrajectoryStateOnSurface TSOS;
0027 
0028   TransientInitialStateEstimator(const edm::ParameterSet& conf, edm::ConsumesCollector iC);
0029   void setEventSetup(const edm::EventSetup& es, const TkClonerImpl& hc);
0030 
0031   std::pair<TrajectoryStateOnSurface, const GeomDet*> innerState(const Trajectory& traj, bool doBackFit = true) const;
0032 
0033 private:
0034   const edm::ESGetToken<Propagator, TrackingComponentsRecord> thePropagatorAlongToken;
0035   const edm::ESGetToken<Propagator, TrackingComponentsRecord> thePropagatorOppositeToken;
0036   const Propagator* thePropagatorAlong;
0037   const Propagator* thePropagatorOpposite;  // not used? can we remove it?
0038   TkClonerImpl theHitCloner;
0039   const int theNumberMeasurementsForFit;
0040 };
0041 
0042 #endif