ATLAS Offline Software
Loading...
Searching...
No Matches
MeasurementProcessor.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3*/
4
5/***************************************************************************
6 process measurements i.e. extrapolate to surface,
7 compute derivatives and residuals
8 ***************************************************************************/
9
10#ifndef TRKIPATFITTERUTILS_MEASUREMENTPROCESSOR_H
11#define TRKIPATFITTERUTILS_MEASUREMENTPROCESSOR_H
12
13//<<<<<< INCLUDES >>>>>>
14
15#include <optional>
16#include <vector>
17
19#include "GaudiKernel/ToolHandle.h"
23//<<<<<< CLASS DECLARATIONS >>>>>>
24
25namespace Trk {
26class FitMeasurement;
27class FitParameters;
28class IIntersector;
29class IPropagator;
30
32 public:
33 MeasurementProcessor(bool asymmetricCaloEnergy,
34 Amg::MatrixX& derivativeMatrix,
35 const ToolHandle<IIntersector>& intersector,
36 std::vector<FitMeasurement*>& measurements,
37 FitParameters* parameters,
38 const ToolHandle<IIntersector>& rungeKuttaIntersector,
39 const ToolHandle<IPropagator>& stepPropagator,
40 int useStepPropagator);
42
43 // implicit copy constructor
44 // implicit assignment operator
45
46 // compute derivatives and residuals
47 bool calculateDerivatives(void);
48 bool calculateFittedTrajectory(int iteration);
49 void calculateResiduals(void);
50 void fieldIntegralUncertainty(MsgStream& log, Amg::MatrixX& covariance);
51 void propagationDerivatives(void);
52
53 private:
54 void clusterDerivatives(int derivativeFlag, FitMeasurement& measurement);
55 void driftDerivatives(int derivativeFlag, FitMeasurement& measurement);
57
58 std::vector<FitMeasurement*> m_alignments;
61 double m_cosPhi0;
68 // bool m_havePhiPseudo;
69 const ToolHandle<IIntersector>& m_intersector;
72 std::vector<FitMeasurement*>& m_measurements;
73 // double m_minDistanceForAngle;
80 const ToolHandle<IIntersector>& m_rungeKuttaIntersector;
81 const ToolHandle<IPropagator>& m_stepPropagator;
83 std::vector<FitMeasurement*> m_scatterers;
84 double m_sinPhi0;
86 // double m_toroidTurn;
89 double m_x0;
90 double m_y0;
91 double m_z0;
92 // bool m_zInstability;
94};
95
96} // namespace Trk
97
98#endif // TRKIPATFITTERUTILS_MEASUREMENTPROCESSOR_H
Base class for Intersector AlgTools.
Interface class IPropagators It inherits from IAlgTool.
Definition IPropagator.h:55
magnetic field properties to steer the behavior of the extrapolation
bool calculateFittedTrajectory(int iteration)
const ToolHandle< IIntersector > & m_rungeKuttaIntersector
std::vector< FitMeasurement * > m_alignments
TrackSurfaceIntersection m_vertexIntersect
const ToolHandle< IPropagator > & m_stepPropagator
void clusterDerivatives(int derivativeFlag, FitMeasurement &measurement)
double m_delta[ExtrapolationTypes]
TrackSurfaceIntersection m_intersectStartingValue
Trk::MagneticFieldProperties m_stepField
std::vector< FitMeasurement * > m_scatterers
void fieldIntegralUncertainty(MsgStream &log, Amg::MatrixX &covariance)
MeasurementProcessor(bool asymmetricCaloEnergy, Amg::MatrixX &derivativeMatrix, const ToolHandle< IIntersector > &intersector, std::vector< FitMeasurement * > &measurements, FitParameters *parameters, const ToolHandle< IIntersector > &rungeKuttaIntersector, const ToolHandle< IPropagator > &stepPropagator, int useStepPropagator)
double m_qOverP[ExtrapolationTypes]
void driftDerivatives(int derivativeFlag, FitMeasurement &measurement)
bool extrapolateToMeasurements(ExtrapolationType type)
FitMeasurement * m_caloEnergyMeasurement
std::vector< FitMeasurement * > & m_measurements
const ToolHandle< IIntersector > & m_intersector
An intersection with a Surface is given by.
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic > MatrixX
Dynamic Matrix - dynamic allocation.
Ensure that the ATLAS eigen extensions are properly loaded.
@ ExtrapolationTypes