Go to the documentation of this file.00001 #ifndef Alignment_CommonAlignmentAlgorithm_AlignmentExtendedCorrelationsStore_h
00002 #define Alignment_CommonAlignmentAlgorithm_AlignmentExtendedCorrelationsStore_h
00003
00011
00012
00013 #include "Alignment/CommonAlignmentAlgorithm/interface/AlignmentCorrelationsStore.h"
00014 #include "Alignment/CommonAlignmentAlgorithm/interface/AlignmentExtendedCorrelationsEntry.h"
00015
00016 namespace edm { class ParameterSet; }
00017
00018 class AlignmentExtendedCorrelationsStore : public AlignmentCorrelationsStore
00019 {
00020
00021 public:
00022
00023 typedef AlignmentExtendedCorrelationsEntry ExtendedCorrelationsEntry;
00024 typedef std::map< Alignable*, ExtendedCorrelationsEntry > ExtendedCorrelationsTable;
00025 typedef std::map< Alignable*, ExtendedCorrelationsTable* > ExtendedCorrelations;
00026
00027 AlignmentExtendedCorrelationsStore( const edm::ParameterSet& config );
00028
00029 virtual ~AlignmentExtendedCorrelationsStore( void ) {}
00030
00033 virtual void correlations( Alignable* ap1, Alignable* ap2,
00034 AlgebraicSymMatrix& cov, int row, int col ) const;
00035
00038 virtual void setCorrelations( Alignable* ap1, Alignable* ap2,
00039 const AlgebraicSymMatrix& cov, int row, int col );
00040
00043 virtual void setCorrelations( Alignable* ap1, Alignable* ap2, AlgebraicMatrix& mat );
00044
00046 virtual void getCorrelations( Alignable* ap1, Alignable* ap2, AlgebraicMatrix& mat ) const;
00047
00049 virtual bool correlationsAvailable( Alignable* ap1, Alignable* ap2 ) const;
00050
00052 virtual void resetCorrelations( void );
00053
00055 virtual unsigned int size( void ) const;
00056
00057 protected:
00058
00059 virtual void fillCorrelationsTable( Alignable* ap1, Alignable* ap2,
00060 ExtendedCorrelationsTable* table,
00061 const AlgebraicSymMatrix& cov,
00062 int row, int col, bool transpose );
00063
00064 virtual void fillCovariance( Alignable* ap1, Alignable* ap2, const ExtendedCorrelationsEntry& entry,
00065 AlgebraicSymMatrix& cov, int row, int col ) const;
00066
00067 virtual void fillCovarianceT( Alignable* ap1, Alignable* ap2, const ExtendedCorrelationsEntry& entry,
00068 AlgebraicSymMatrix& cov, int row, int col ) const;
00069
00070 virtual void readFromCovariance( Alignable* ap1, Alignable* ap2, ExtendedCorrelationsEntry& entry,
00071 const AlgebraicSymMatrix& cov, int row, int col );
00072
00073 virtual void readFromCovarianceT( Alignable* ap1, Alignable* ap2, ExtendedCorrelationsEntry& entry,
00074 const AlgebraicSymMatrix& cov, int row, int col );
00075
00076 void resizeCorruptCorrelations( ExtendedCorrelationsEntry& entry, double maxCorr );
00077
00078 ExtendedCorrelations theCorrelations;
00079
00080 int theMaxUpdates;
00081 double theCut;
00082 double theWeight;
00083
00084 };
00085
00086 #endif