Back to home page

Project CMSSW displayed by LXR

 
 

    


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 /// \class CompositeAlignmentDerivativesExtractor
0008 ///
0009 /// A helper class to extract derivatives from composite alignable objects
0010 ///
0011 ///  $Date: 2007/05/02 21:01:52 $
0012 ///  $Revision: 1.7 $
0013 /// (last update by $Author: fronga $)
0014 
0015 class Alignable;
0016 class AlignableDet;
0017 class AlignableDetOrUnitPtr;
0018 class TrajectoryStateOnSurface;
0019 
0020 class CompositeAlignmentDerivativesExtractor {
0021 public:
0022   /// deprecated  constructor for backward compatibility (use mor general
0023   /// AlignableDetOrUnitPtr)
0024   CompositeAlignmentDerivativesExtractor(const align::Alignables &alignables,
0025                                          const std::vector<AlignableDet *> &alignableDets,
0026                                          const std::vector<TrajectoryStateOnSurface> &tsos);
0027   /// constructor
0028   CompositeAlignmentDerivativesExtractor(const align::Alignables &alignables,
0029                                          const std::vector<AlignableDetOrUnitPtr> &alignableDets,
0030                                          const std::vector<TrajectoryStateOnSurface> &tsos);
0031 
0032   /// destructor
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