File indexing completed on 2024-09-07 04:34:29
0001 #ifndef Alignment_CommonAlignmentParametrization_CompositeAlignmentDerivativesExtractor_H
0002 #define Alignment_CommonAlignmentParametrization_CompositeAlignmentDerivativesExtractor_H
0003
0004 #include "Alignment/CommonAlignment/interface/Utilities.h"
0005 #include "DataFormats/CLHEP/interface/AlgebraicObjects.h"
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015 class Alignable;
0016 class AlignableDet;
0017 class AlignableDetOrUnitPtr;
0018 class TrajectoryStateOnSurface;
0019
0020 class CompositeAlignmentDerivativesExtractor {
0021 public:
0022
0023
0024 CompositeAlignmentDerivativesExtractor(const align::Alignables &alignables,
0025 const std::vector<AlignableDet *> &alignableDets,
0026 const std::vector<TrajectoryStateOnSurface> &tsos);
0027
0028 CompositeAlignmentDerivativesExtractor(const align::Alignables &alignables,
0029 const std::vector<AlignableDetOrUnitPtr> &alignableDets,
0030 const std::vector<TrajectoryStateOnSurface> &tsos);
0031
0032
0033 ~CompositeAlignmentDerivativesExtractor(void) {}
0034
0035 const AlgebraicMatrix &derivatives(void) const { return theDerivatives; }
0036 const AlgebraicVector &correctionTerm(void) const { return theCorrectionTerm; }
0037
0038 private:
0039 void extractCurrentAlignment(const align::Alignables &alignables,
0040 const std::vector<AlignableDetOrUnitPtr> &alignableDets,
0041 const std::vector<TrajectoryStateOnSurface> &tsos);
0042
0043 void extractWithoutMultipleHits(const std::vector<AlgebraicVector> &subCorrectionTerm,
0044 const std::vector<AlgebraicMatrix> &subDerivatives);
0045
0046 void extractWithMultipleHits(const std::vector<AlgebraicVector> &subCorrectionTerm,
0047 const std::vector<AlgebraicMatrix> &subDerivatives,
0048 const align::Alignables &alignables);
0049
0050 AlgebraicMatrix theDerivatives;
0051 AlgebraicVector theCorrectionTerm;
0052 };
0053
0054 #endif