CMS 3D CMS Logo

AlignmentParameterStore.h

Go to the documentation of this file.
00001 #ifndef Alignment_CommonAlignmentAlgorithm_AlignmentParameterStore_h
00002 #define Alignment_CommonAlignmentAlgorithm_AlignmentParameterStore_h
00003 
00004 #include "Alignment/CommonAlignment/interface/Utilities.h"
00005 #include "Alignment/CommonAlignmentAlgorithm/interface/AlignableData.h"
00006 #include "Alignment/CommonAlignmentAlgorithm/interface/AlignmentCorrelationsStore.h"
00007 #include "Alignment/CommonAlignmentParametrization/interface/CompositeAlignmentParameters.h"
00008 
00016 
00017 namespace edm { class ParameterSet; }
00018 
00019 class AlignmentParameterStore 
00020 {
00021 
00022 public:
00023 
00024   typedef std::vector<AlignmentParameters*> Parameters;
00025   typedef std::map< std::pair<Alignable*,Alignable*>,AlgebraicMatrix > Correlations;
00026   typedef std::vector<unsigned int> DetIds;
00027 
00029   AlignmentParameterStore( const align::Alignables &alis, const edm::ParameterSet& config );
00030 
00032   virtual ~AlignmentParameterStore();
00033 
00036   CompositeAlignmentParameters
00037     selectParameters( const std::vector <AlignableDet*>& alignabledets ) const;
00039   CompositeAlignmentParameters
00040     selectParameters( const std::vector <AlignableDetOrUnitPtr>& alignabledets ) const;
00042   CompositeAlignmentParameters
00043     selectParameters( const std::vector <Alignable*>& alignables ) const;
00044 
00046   void updateParameters(const CompositeAlignmentParameters& aap);
00047 
00049   const align::Alignables& alignables(void) const { return theAlignables; }
00050 
00052   align::Alignables validAlignables(void) const;
00053 
00055   int numObjects(void) const { return theAlignables.size(); }
00056 
00058   AlignmentCorrelationsStore* correlationsStore( void ) const { return theCorrelationsStore; }
00059 
00061   const unsigned int numCorrelations( void ) const { return theCorrelationsStore->size(); }
00062 
00064 /*   Alignable* alignableFromGeomDet( const GeomDet* geomDet ) const; */
00065 
00067   Alignable* alignableFromAlignableDet( AlignableDetOrUnitPtr alignableDet ) const;
00068 
00070 /*   Alignable* alignableFromDetId(const unsigned int& detId) const; */
00071 
00073   void applyParameters(void);
00074 
00076   void applyParameters(Alignable* alignable);
00077 
00079   void resetParameters(void);
00080 
00082   void resetParameters(Alignable* ali);
00083 
00086   void acquireRelativeParameters(void);
00087 
00089   void applyAlignableAbsolutePositions( const align::Alignables& alis, 
00090                                         const AlignablePositions& newpos, int& ierr );
00091 
00093   void applyAlignableRelativePositions( const align::Alignables& alivec, 
00094                                         const AlignableShifts& shifts, int& ierr );
00095 
00097   void attachAlignmentParameters( const align::Alignables& alivec, const Parameters& parvec, int& ierr );
00098 
00100   void attachAlignmentParameters(const Parameters& parvec, int& ierr);
00101 
00103   void attachCorrelations( const align::Alignables& alivec, const Correlations& cormap, 
00104                            bool overwrite, int& ierr );
00105 
00107   void attachCorrelations( const Correlations& cormap, bool overwrite, int& ierr );
00108 
00110   void attachUserVariables( const align::Alignables& alivec,
00111                             const std::vector<AlignmentUserVariables*>& uvarvec, int& ierr);
00112 
00114   void setAlignmentPositionError( const align::Alignables& alivec, double valshift, double valrot );
00115 
00117   std::pair<int,int> typeAndLayer( const Alignable* ali ) const;
00118 
00120   typedef std::pair<Alignable*, unsigned int> ParameterId;
00132   bool hierarchyConstraints(const Alignable *aliMaster, const align::Alignables &aliComps,
00133                             std::vector<std::vector<ParameterId> > &paramIdsVecOut,
00134                             std::vector<std::vector<float> > &factorsVecOut,
00135                             bool all6, float epsilon = 1.e-15) const;
00136 
00137 protected:
00138 
00139   // storage for correlations
00140   AlignmentCorrelationsStore* theCorrelationsStore;
00141 
00142 private:
00143   // data members
00144 
00146   align::Alignables theAlignables;
00147 
00148 };
00149 
00150 #endif

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