CMS 3D CMS Logo

LinearCalibrator.h
Go to the documentation of this file.
1 #ifndef LINEARCALIBRATOR_HH_
2 #define LINEARCALIBRATOR_HH_
3 
5 
6 
7 #include "TMatrixD.h"
8 #include "TVectorD.h"
9 
23 namespace pftools {
24 class LinearCalibrator : public Calibrator {
25 public:
27  virtual ~LinearCalibrator();
28 
29 
30  /*
31  * Note: covariant return type w.r.t. Calibrator class: the overloading has changed
32  * the return type but this IS allowed with modern compilers.
33  * See documentation in Calibrator.h
34  */
35  LinearCalibrator* clone() const;
36  LinearCalibrator* create() const;
37 
38 protected:
39 
40  virtual std::map<DetectorElementPtr, double>
42 
43 
45  /*
46  * Converts the particle deposits into a useful matrix formulation.
47  */
48  virtual void initEijMatrix(TMatrixD& eij, TVectorD& truthE);
49 
50  /*
51  * Utility method to extract the unique number of detected elements.
52  */
53  virtual void populateDetElIndex();
54 
55  virtual TVectorD& getProjections(const TMatrixD& eij, TVectorD& proj,
56  const TVectorD& truthE) const;
57 
58  virtual TMatrixD& getHessian(const TMatrixD& eij, TMatrixD& hess,
59  const TVectorD& truthE) const;
60 
61  /*
62  * Map to convert detector element to array row/column index.
63  */
64  std::map<DetectorElementPtr, unsigned> myDetElIndex;
65 
66 };
67 }
68 
69 #endif /*LINEARCALIBRATOR_HH_*/
LinearCalibrator * clone() const
virtual TVectorD & getProjections(const TMatrixD &eij, TVectorD &proj, const TVectorD &truthE) const
virtual std::map< DetectorElementPtr, double > getCalibrationCoefficientsCore() noexcept(false)
#define noexcept
LinearCalibrator * create() const
Abstract base class for Particle Flow calibration algorithms.
Definition: Calibrator.h:21
General option file parser.
Definition: Calibratable.h:15
virtual TMatrixD & getHessian(const TMatrixD &eij, TMatrixD &hess, const TVectorD &truthE) const
virtual void initEijMatrix(TMatrixD &eij, TVectorD &truthE)
std::map< DetectorElementPtr, unsigned > myDetElIndex