CMS 3D CMS Logo

AnalyticalErrorPropagation.h
Go to the documentation of this file.
1 #ifndef AnalyticalErrorPropagation_H
2 #define AnalyticalErrorPropagation_H
3 
11 
12 class Surface;
13 
14 inline std::pair<TrajectoryStateOnSurface, double> analyticalErrorPropagation(
15  const FreeTrajectoryState& startingState,
16  const Surface& surface,
18  const GlobalTrajectoryParameters& destParameters,
19  const double& s) {
20  if
21  UNLIKELY(!startingState.hasError())
22  // return state without errors
23  return std::pair<TrajectoryStateOnSurface, double>(TrajectoryStateOnSurface(destParameters, surface, side), s);
24 
25  //
26  // compute jacobian
27  //
28 
29  // FIXME: Compute mean B field between startingState and destParameters and pass it to analyticalJacobian
30  //GlobalPoint xStart = startingState.position();
31  //GlobalPoint xDest = destParameters.position();
32  //GlobalVector h1 = destParameters.magneticFieldInInverseGeV(xStart);
33  //GlobalVector h2 = destParameters.magneticFieldInInverseGeV(xDest);
34  //GlobalVector h = 0.5*(h1+h2);
35  //LogDebug("RungeKutta") << "AnalyticalErrorPropagation: The Fields are: " << h1 << ", " << h2 << ", " << h ;
36 
37  //
38  AnalyticalCurvilinearJacobian analyticalJacobian(
39  startingState.parameters(), destParameters.position(), destParameters.momentum(), s);
40  auto const& jacobian = analyticalJacobian.jacobian();
41  return std::pair<TrajectoryStateOnSurface, double>(
43  destParameters, ROOT::Math::Similarity(jacobian, startingState.curvilinearError().matrix()), surface, side),
44  s);
45 }
46 
47 #endif
Likely.h
TrajectoryStateOnSurface.h
Visibility.h
AnalyticalCurvilinearJacobian::jacobian
const AlgebraicMatrix55 & jacobian() const
Definition: AnalyticalCurvilinearJacobian.h:51
AnalyticalCurvilinearJacobian
Definition: AnalyticalCurvilinearJacobian.h:21
FreeTrajectoryState.h
GlobalTrajectoryParameters.h
FreeTrajectoryState::hasError
bool hasError() const
Definition: FreeTrajectoryState.h:77
GlobalTrajectoryParameters::position
GlobalPoint position() const
Definition: GlobalTrajectoryParameters.h:60
Surface
Definition: Surface.h:36
SurfaceSideDefinition::SurfaceSide
SurfaceSide
Definition: SurfaceSideDefinition.h:8
AnalyticalCurvilinearJacobian.h
analyticalErrorPropagation
std::pair< TrajectoryStateOnSurface, double > analyticalErrorPropagation(const FreeTrajectoryState &startingState, const Surface &surface, SurfaceSideDefinition::SurfaceSide side, const GlobalTrajectoryParameters &destParameters, const double &s)
Definition: AnalyticalErrorPropagation.h:14
UNLIKELY
#define UNLIKELY(x)
Definition: Likely.h:21
TrajectoryStateOnSurface
Definition: TrajectoryStateOnSurface.h:16
alignCSCRings.s
s
Definition: alignCSCRings.py:92
FreeTrajectoryState::curvilinearError
const CurvilinearTrajectoryError & curvilinearError() const
Definition: FreeTrajectoryState.h:89
GlobalTrajectoryParameters
Definition: GlobalTrajectoryParameters.h:15
GlobalTrajectoryParameters::momentum
GlobalVector momentum() const
Definition: GlobalTrajectoryParameters.h:65
SurfaceSideDefinition.h
FreeTrajectoryState::parameters
const GlobalTrajectoryParameters & parameters() const
Definition: FreeTrajectoryState.h:79
Surface::side
virtual Side side(const LocalPoint &p, Scalar tolerance=0) const =0
FreeTrajectoryState
Definition: FreeTrajectoryState.h:27
CurvilinearTrajectoryError::matrix
const AlgebraicSymMatrix55 & matrix() const
Definition: CurvilinearTrajectoryError.h:61