Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:27:17

0001 #ifndef RecoMuon_TrackingTools_MuonUpdatorAtVertex_H
0002 #define RecoMuon_TrackingTools_MuonUpdatorAtVertex_H
0003 
0004 /** \class MuonUpdatorAtVertex
0005  *  This class do the extrapolation of a TrajectoryStateOnSurface to the PCA and can apply, with a different
0006  *  method, the vertex constraint. The vertex constraint is applyed using the Kalman Filter tools used for 
0007  *  the vertex reconstruction.
0008  *
0009  *  For the time being the propagator is the SteppingHelixPropagator because the method propagate(TSOS,GlobalPoint)
0010  *  it is in its specific interface. Once the interface of the Propagator base class will be updated, 
0011  *  then propagator will become generic. 
0012  *
0013  *  For what concern the beam spot, it is possible set via cff the relevant parameters:
0014  *
0015  *  BeamSpotPosition[0] <=> x
0016  *  BeamSpotPosition[1] <=> y
0017  *  BeamSpotPosition[2] <=> z
0018  *
0019  *  BeamSpotPositionErrors[0] = sigma(x) 
0020  *  BeamSpotPositionErrors[1] = sigma(y) 
0021  *  BeamSpotPositionErrors[2] = sigma(z)
0022  *
0023  *
0024  *  \author R. Bellan - INFN Torino <riccardo.bellan@cern.ch>
0025  */
0026 
0027 class TrajectoryStateOnSurface;
0028 class FreeTrajectoryState;
0029 class MuonServiceProxy;
0030 
0031 #include "RecoVertex/KalmanVertexFit/interface/SingleTrackVertexConstraint.h"
0032 #include "TrackingTools/TransientTrack/interface/TransientTrackFromFTSFactory.h"
0033 #include "DataFormats/GeometryVector/interface/GlobalPoint.h"
0034 
0035 #include <string>
0036 
0037 namespace edm {
0038   class ParameterSet;
0039   class Event;
0040 }  // namespace edm
0041 
0042 class MuonUpdatorAtVertex {
0043 public:
0044   /// Constructor
0045   MuonUpdatorAtVertex(const edm::ParameterSet &pset, const MuonServiceProxy *service);
0046 
0047   /// Destructor
0048   virtual ~MuonUpdatorAtVertex();
0049 
0050   // Operations
0051 
0052   /// Propagate the state to the 2D-PCA
0053   std::pair<bool, FreeTrajectoryState> propagate(const TrajectoryStateOnSurface &tsos,
0054                                                  const reco::BeamSpot &beamSpot) const;
0055 
0056   /// Applies the vertex constraint
0057   std::pair<bool, FreeTrajectoryState> update(const reco::TransientTrack &track, const reco::BeamSpot &beamSpot) const;
0058 
0059   /// Applies the vertex constraint
0060   std::pair<bool, FreeTrajectoryState> update(const FreeTrajectoryState &ftsAtVtx,
0061                                               const reco::BeamSpot &beamSpot) const;
0062 
0063   /// Propagate to the 2D-PCA and apply the vertex constraint
0064   std::pair<bool, FreeTrajectoryState> propagateWithUpdate(const TrajectoryStateOnSurface &tsos,
0065                                                            const reco::BeamSpot &beamSpot) const;
0066 
0067   /// Propagate the state to the 2D-PCA (nominal CMS axis)
0068   std::pair<bool, FreeTrajectoryState> propagateToNominalLine(const TrajectoryStateOnSurface &tsos) const;
0069 
0070   /// Propagate the state to the 2D-PCA (nominal CMS axis) - DEPRECATED -
0071   std::pair<bool, FreeTrajectoryState> propagate(const TrajectoryStateOnSurface &tsos) const
0072       __attribute__((deprecated));
0073 
0074 protected:
0075 private:
0076   const MuonServiceProxy *theService;
0077   std::string thePropagatorName;
0078 
0079   TransientTrackFromFTSFactory theTransientTrackFactory;
0080   SingleTrackVertexConstraint theConstrictor;
0081   double theChi2Cut;
0082 
0083   GlobalError thePositionErrors;
0084 };
0085 #endif