Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:29:13

0001 #ifndef TransientTrackKinematicStateBuilder_H
0002 #define TransientTrackKinematicStateBuilder_H
0003 
0004 #include "RecoVertex/KinematicFitPrimitives/interface/KinematicState.h"
0005 #include "RecoVertex/KinematicFitPrimitives/interface/TrackKinematicStatePropagator.h"
0006 #include "RecoVertex/KinematicFitPrimitives/interface/PerigeeKinematicState.h"
0007 #include "TrackingTools/TransientTrack/interface/TransientTrack.h"
0008 #include "RecoVertex/KinematicFitPrimitives/interface/ParticleMass.h"
0009 #include "MagneticField/Engine/interface/MagneticField.h"
0010 
0011 /**
0012  * Kinematic State builder for TransientTrack  based kinematic states.
0013  * Uses TrackKinematicStatePropagator for state propagation.
0014  */
0015 
0016 class TransientTrackKinematicStateBuilder {
0017 public:
0018   TransientTrackKinematicStateBuilder() {}
0019 
0020   ~TransientTrackKinematicStateBuilder() {}
0021 
0022   /**
0023  * Operator creating a KinematcState at RecObj definition point
0024  * with given mass guess and sigma
0025  */
0026   KinematicState operator()(const reco::TransientTrack& track, const ParticleMass& m, float m_sigma) const;
0027 
0028   /**
0029  * Operator creating a KinematicState directly out of 
0030  * 7 state parameters and their covariance matrix
0031  */
0032   //  KinematicState operator()(const KinematicParameters& par,
0033   //    const KinematicParametersError& er, const TrackCharge& ch,
0034   //    const MagneticField* field) const;
0035 
0036   /**
0037  * Operator creating a KinematicState out of a RecObj
0038  * and propagating it to the given point using propagator
0039  * provided by user
0040  */
0041   KinematicState operator()(const reco::TransientTrack& track,
0042                             const GlobalPoint& point,
0043                             const ParticleMass& m,
0044                             float m_sigma) const;
0045 
0046   /**
0047  * Operator to create a particle state at point
0048  * using the FreeTrajectoryState, charge and mass guess for the particle. The state will be
0049  * created with the reference point taken from the FTS
0050  */
0051   KinematicState operator()(const FreeTrajectoryState& state, const ParticleMass& mass, float m_sigma) const;
0052 
0053   /**
0054  * Operator to create a particle state at point
0055  * using the FreeTrajectoryState, charge and mass guess for the particle. The state will be
0056  * created by propagating FTS to the transvese point of closest approach to the given point
0057  */
0058   KinematicState operator()(const FreeTrajectoryState& state,
0059                             const ParticleMass& mass,
0060                             float m_sigma,
0061                             const GlobalPoint& point) const;
0062 
0063   PerigeeKinematicState operator()(const KinematicState& state, const GlobalPoint& point) const;
0064 
0065 private:
0066   KinematicState buildState(const FreeTrajectoryState& state, const ParticleMass& mass, float m_sigma) const;
0067 
0068   TrackKinematicStatePropagator propagator;
0069 };
0070 #endif