CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
ReferenceTrajectory.h
Go to the documentation of this file.
1 #ifndef Alignment_ReferenceTrajectories_ReferenceTrajectory_H
2 #define Alignment_ReferenceTrajectories_ReferenceTrajectory_H
3 
42 
44 class MagneticField;
46 class Plane;
48 
49 namespace reco { class BeamSpot; }
50 
52 {
53 
54 public:
55 
57 
65  ReferenceTrajectory(const TrajectoryStateOnSurface &referenceTsos,
67  bool hitsAreReverse,
68  const MagneticField *magField,
69  MaterialEffects materialEffects,
70  PropagationDirection propDir,
71  double mass,
72  bool useBeamSpot,
73  const reco::BeamSpot &beamSpot);
74  virtual ~ReferenceTrajectory() {}
75 
76  virtual ReferenceTrajectory* clone() const { return new ReferenceTrajectory(*this); }
77 
78 protected:
79 
80  ReferenceTrajectory(unsigned int nPar, unsigned int nHits, MaterialEffects materialEffects);
81 
84  virtual bool construct(const TrajectoryStateOnSurface &referenceTsos,
86  double mass, MaterialEffects materialEffects,
87  const PropagationDirection propDir, const MagneticField *magField,
88  bool useBeamSpot,
89  const reco::BeamSpot &beamSpot);
90 
93  MaterialEffectsUpdator* createUpdator(MaterialEffects materialEffects, double mass) const;
94 
97  virtual bool propagate(const Plane &previousSurface, const TrajectoryStateOnSurface &previousTsos,
98  const Plane &newSurface, TrajectoryStateOnSurface &newTsos, AlgebraicMatrix &newJacobian,
99  AlgebraicMatrix &newCurvlinJacobian, double &nextStep,
100  const PropagationDirection propDir, const MagneticField *magField) const;
101 
105  unsigned int iRow,
106  const TrajectoryStateOnSurface &updatedTsos);
107 
110  virtual void fillDerivatives(const AlgebraicMatrix &projection,
111  const AlgebraicMatrix &fullJacobian, unsigned int iRow);
112 
115  virtual void fillTrajectoryPositions(const AlgebraicMatrix &projection,
116  const AlgebraicVector &mixedLocalParams,
117  unsigned int iRow);
118 
121  virtual bool addMaterialEffectsCov(const std::vector<AlgebraicMatrix> &allJacobians,
122  const std::vector<AlgebraicMatrix> &allProjections,
123  const std::vector<AlgebraicSymMatrix> &allCurvChanges,
124  const std::vector<AlgebraicSymMatrix> &allDeltaParaCovs);
125 
128  virtual bool addMaterialEffectsBp (const std::vector<AlgebraicMatrix> &allJacobians,
129  const std::vector<AlgebraicMatrix> &allProjections,
130  const std::vector<AlgebraicSymMatrix> &allCurvChanges,
131  const std::vector<AlgebraicSymMatrix> &allDeltaParaCovs,
132  const std::vector<AlgebraicMatrix> &allLocalToCurv);
133 
136  virtual bool addMaterialEffectsBrl(const std::vector<AlgebraicMatrix> &allJacobians,
137  const std::vector<AlgebraicMatrix> &allProjections,
138  const std::vector<AlgebraicSymMatrix> &allCurvChanges,
139  const std::vector<AlgebraicSymMatrix> &allDeltaParaCovs,
140  const std::vector<AlgebraicMatrix> &allLocalToCurv,
141  const GlobalTrajectoryParameters &gtp);
144  virtual bool addMaterialEffectsBrl(const std::vector<AlgebraicMatrix> &allProjections,
145  const std::vector<AlgebraicSymMatrix> &allDeltaParaCovs,
146  const std::vector<AlgebraicMatrix> &allLocalToCurv,
147  const std::vector<double> &allSteps,
148  const GlobalTrajectoryParameters &gtp,
149  const double minStep = 1.0);
150 
154  {
155  return ( dir == alongMomentum ) ?
158  }
159 
164 
167  template <unsigned int N>
170 };
171 
172 #endif
AlgebraicMatrix getHitProjectionMatrix(const TransientTrackingRecHit::ConstRecHitPointer &recHit) const
virtual bool addMaterialEffectsBrl(const std::vector< AlgebraicMatrix > &allJacobians, const std::vector< AlgebraicMatrix > &allProjections, const std::vector< AlgebraicSymMatrix > &allCurvChanges, const std::vector< AlgebraicSymMatrix > &allDeltaParaCovs, const std::vector< AlgebraicMatrix > &allLocalToCurv, const GlobalTrajectoryParameters &gtp)
virtual bool construct(const TrajectoryStateOnSurface &referenceTsos, const TransientTrackingRecHit::ConstRecHitContainer &recHits, double mass, MaterialEffects materialEffects, const PropagationDirection propDir, const MagneticField *magField, bool useBeamSpot, const reco::BeamSpot &beamSpot)
virtual void fillMeasurementAndError(const TransientTrackingRecHit::ConstRecHitPointer &hitPtr, unsigned int iRow, const TrajectoryStateOnSurface &updatedTsos)
const TransientTrackingRecHit::ConstRecHitContainer & recHits() const
PropagationDirection
SurfaceSide surfaceSide(const PropagationDirection dir) const
virtual bool addMaterialEffectsBp(const std::vector< AlgebraicMatrix > &allJacobians, const std::vector< AlgebraicMatrix > &allProjections, const std::vector< AlgebraicSymMatrix > &allCurvChanges, const std::vector< AlgebraicSymMatrix > &allDeltaParaCovs, const std::vector< AlgebraicMatrix > &allLocalToCurv)
virtual ReferenceTrajectory * clone() const
Definition: Plane.h:17
virtual bool propagate(const Plane &previousSurface, const TrajectoryStateOnSurface &previousTsos, const Plane &newSurface, TrajectoryStateOnSurface &newTsos, AlgebraicMatrix &newJacobian, AlgebraicMatrix &newCurvlinJacobian, double &nextStep, const PropagationDirection propDir, const MagneticField *magField) const
SurfaceSideDefinition::SurfaceSide SurfaceSide
CLHEP::HepMatrix AlgebraicMatrix
std::shared_ptr< TrackingRecHit const > ConstRecHitPointer
ReferenceTrajectory(const TrajectoryStateOnSurface &referenceTsos, const TransientTrackingRecHit::ConstRecHitContainer &recHits, bool hitsAreReverse, const MagneticField *magField, MaterialEffects materialEffects, PropagationDirection propDir, double mass, bool useBeamSpot, const reco::BeamSpot &beamSpot)
MaterialEffectsUpdator * createUpdator(MaterialEffects materialEffects, double mass) const
virtual void fillDerivatives(const AlgebraicMatrix &projection, const AlgebraicMatrix &fullJacobian, unsigned int iRow)
std::vector< ConstRecHitPointer > ConstRecHitContainer
AlgebraicMatrix getHitProjectionMatrixT(const TransientTrackingRecHit::ConstRecHitPointer &recHit) const
CLHEP::HepVector AlgebraicVector
virtual bool addMaterialEffectsCov(const std::vector< AlgebraicMatrix > &allJacobians, const std::vector< AlgebraicMatrix > &allProjections, const std::vector< AlgebraicSymMatrix > &allCurvChanges, const std::vector< AlgebraicSymMatrix > &allDeltaParaCovs)
virtual void fillTrajectoryPositions(const AlgebraicMatrix &projection, const AlgebraicVector &mixedLocalParams, unsigned int iRow)
dbl *** dir
Definition: mlp_gen.cc:35