CMS 3D CMS Logo

CompositeAlignmentParameters.h

Go to the documentation of this file.
00001 #ifndef Alignment_CommonAlignmentParametrization_CompositeAlignmentParameters_h
00002 #define Alignment_CommonAlignmentParametrization_CompositeAlignmentParameters_h
00003 
00004 // #include <map>
00005 
00006 #include "Alignment/CommonAlignment/interface/AlignmentParameters.h"
00007 
00012 
00013 class AlignableDet;
00014 
00015 class CompositeAlignmentParameters : public AlignmentParameters 
00016 {
00017 
00018 public:
00019 
00021   typedef std::vector<Alignable*> Components;
00022 
00023   typedef std::map<AlignableDetOrUnitPtr,Alignable*> AlignableDetToAlignableMap;
00024   typedef std::map<Alignable*,int> Aliposmap;
00025   typedef std::map<Alignable*,int> Alilenmap;
00026 
00028 
00029   CompositeAlignmentParameters(const AlgebraicVector& par, const AlgebraicSymMatrix& cov,
00030                                const Components& comp);
00031 
00032   CompositeAlignmentParameters(const AlgebraicVector& par, const AlgebraicSymMatrix& cov,
00033                                const Components& comp, const AlignableDetToAlignableMap& alimap,
00034                                const Aliposmap& aliposmap, const Alilenmap& alilenmap);
00035 
00036   CompositeAlignmentParameters( const DataContainer& data,
00037                                 const Components& comp, const AlignableDetToAlignableMap& alimap,
00038                                 const Aliposmap& aliposmap, const Alilenmap& alilenmap);
00039 
00041   virtual ~CompositeAlignmentParameters();
00042 
00044   CompositeAlignmentParameters* clone( const AlgebraicVector& par, 
00045                                        const AlgebraicSymMatrix& cov) const;
00046 
00048   CompositeAlignmentParameters* cloneFromSelected( const AlgebraicVector& par, 
00049                                                    const AlgebraicSymMatrix& cov) const;
00050 
00052   CompositeAlignmentParameters* clone( const AlgebraicVector& par, const AlgebraicSymMatrix& cov, 
00053                                        const AlignableDetToAlignableMap& alimap, 
00054                                        const Aliposmap& aliposmap,
00055                                        const Alilenmap& alilenmap) const;
00056 
00058   CompositeAlignmentParameters* cloneFromSelected( const AlgebraicVector& par, 
00059                                                    const AlgebraicSymMatrix& cov, 
00060                                                    const AlignableDetToAlignableMap& alimap,
00061                                                    const Aliposmap& aliposmap,
00062                                                    const Alilenmap& alilenmap) const;
00063 
00065   Components components() const;
00066 
00068   AlgebraicMatrix derivatives( const TrajectoryStateOnSurface& tsos, const AlignableDetOrUnitPtr &alidet ) const;
00070   AlgebraicMatrix selectedDerivatives( const TrajectoryStateOnSurface& tsos, 
00071                                        const AlignableDetOrUnitPtr &alidet ) const;
00073   AlgebraicMatrix derivatives( const std::vector<TrajectoryStateOnSurface>& tsosvec, 
00074                                const std::vector<AlignableDet*>& alidetvec ) const;
00075   AlgebraicMatrix derivatives( const std::vector<TrajectoryStateOnSurface>& tsosvec,
00076                                const std::vector<AlignableDetOrUnitPtr>& alidetvec ) const;
00078   AlgebraicMatrix selectedDerivatives( const std::vector<TrajectoryStateOnSurface> &tsosvec,
00079                                        const std::vector<AlignableDet*> &alidetvec ) const;
00080   AlgebraicMatrix selectedDerivatives( const std::vector<TrajectoryStateOnSurface> &tsosvec,
00081                                        const std::vector<AlignableDetOrUnitPtr> &alidetvec ) const;
00082 
00084   AlgebraicVector correctionTerm( const std::vector<TrajectoryStateOnSurface>& tsosvec,
00085                                   const std::vector<AlignableDet*>& alidetvec ) const;
00086   AlgebraicVector correctionTerm( const std::vector<TrajectoryStateOnSurface>& tsosvec,
00087                                   const std::vector<AlignableDetOrUnitPtr>& alidetvec ) const;
00089   AlgebraicMatrix derivativesLegacy ( const TrajectoryStateOnSurface& tsos, 
00090                                       AlignableDet* alidet ) const;
00092   AlgebraicMatrix selectedDerivativesLegacy( const TrajectoryStateOnSurface& tsos, 
00093                                              AlignableDet* alidet ) const;
00095   AlgebraicMatrix derivativesLegacy( const std::vector<TrajectoryStateOnSurface>& tsosvec,
00096                                      const std::vector<AlignableDet*>& alidetvec ) const;
00098   AlgebraicMatrix selectedDerivativesLegacy( const std::vector<TrajectoryStateOnSurface>& tsosvec, 
00099                                              const std::vector<AlignableDet*>& alidetvec ) const;
00100 
00102   Alignable* alignableFromAlignableDet( AlignableDetOrUnitPtr adet ) const;
00103 
00104 
00106   AlgebraicVector parameterSubset ( const std::vector<Alignable*>& vec ) const;
00107 
00109   AlgebraicSymMatrix covarianceSubset( const std::vector<Alignable*>& vec ) const;
00110 
00112   AlgebraicMatrix covarianceSubset ( const std::vector<Alignable*>& veci,
00113                                      const std::vector<Alignable*>& vecj ) const;
00114 
00115 private:
00116 
00118   bool extractPositionAndLength( const std::vector<Alignable*>& alignables,
00119                                  std::vector<int>& posvec,
00120                                  std::vector<int>& lenvec,
00121                                  int& length ) const;
00122 
00124   std::vector< Alignable* > extractAlignables( const std::vector< Alignable* >& alignables ) const;
00125 
00128   void convert(const std::vector<AlignableDet*> &input,
00129                std::vector<AlignableDetOrUnitPtr> &output) const;
00130 
00132   Components theComponents;
00133 
00135   AlignableDetToAlignableMap theAlignableDetToAlignableMap;
00136 
00138   Aliposmap theAliposmap;
00139   Alilenmap theAlilenmap;
00140 
00141 };
00142 
00143 #endif

Generated on Tue Jun 9 17:23:51 2009 for CMSSW by  doxygen 1.5.4