CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_1/src/Alignment/CommonAlignmentParametrization/interface/CompositeAlignmentDerivativesExtractor.h

Go to the documentation of this file.
00001 #ifndef Alignment_CommonAlignmentParametrization_CompositeAlignmentDerivativesExtractor_H
00002 #define Alignment_CommonAlignmentParametrization_CompositeAlignmentDerivativesExtractor_H
00003 
00004 #include "DataFormats/CLHEP/interface/AlgebraicObjects.h"
00005 
00013 
00014 class Alignable;
00015 class AlignableDet;
00016 class AlignableDetOrUnitPtr;
00017 class TrajectoryStateOnSurface;
00018 
00019 class CompositeAlignmentDerivativesExtractor
00020 {
00021 
00022 public:
00023   
00025   CompositeAlignmentDerivativesExtractor( const std::vector< Alignable* > & alignables,
00026                                           const std::vector< AlignableDet* > & alignableDets,
00027                                           const std::vector< TrajectoryStateOnSurface > & tsos );
00029   CompositeAlignmentDerivativesExtractor( const std::vector< Alignable* > & alignables,
00030                                           const std::vector< AlignableDetOrUnitPtr > & alignableDets,
00031                                           const std::vector< TrajectoryStateOnSurface > & tsos );
00032 
00034   ~CompositeAlignmentDerivativesExtractor( void ) {};
00035 
00036   const AlgebraicMatrix & derivatives( void ) const { return theDerivatives; }
00037   const AlgebraicVector & correctionTerm( void ) const { return theCorrectionTerm; }
00038   
00039 private:
00040   
00041   void extractCurrentAlignment( const std::vector< Alignable* > & alignables,
00042                                 const std::vector< AlignableDetOrUnitPtr > & alignableDets,
00043                                 const std::vector< TrajectoryStateOnSurface > & tsos );
00044   
00045   void extractWithoutMultipleHits( const std::vector< AlgebraicVector > & subCorrectionTerm,
00046                                    const std::vector< AlgebraicMatrix > & subDerivatives );
00047   
00048   void extractWithMultipleHits( const std::vector< AlgebraicVector > & subCorrectionTerm,
00049                                 const std::vector< AlgebraicMatrix > & subDerivatives,
00050                                 const std::vector< Alignable* > & alignables );
00051   
00052   AlgebraicMatrix theDerivatives;
00053   AlgebraicVector theCorrectionTerm;
00054   
00055 };
00056 
00057 #endif