CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_1/src/Alignment/CommonAlignment/interface/AlignableComposite.h

Go to the documentation of this file.
00001 #ifndef Alignment_CommonAlignment_AlignableComposite_H
00002 #define Alignment_CommonAlignment_AlignableComposite_H
00003 
00004 #include "Alignment/CommonAlignment/interface/Alignable.h"
00005 
00022 
00023 class GeomDet;
00024 
00025 class AlignableComposite : public Alignable 
00026 {
00027 
00028 public:
00032   AlignableComposite( align::ID id,
00033                       StructureType aType,
00034                       const RotationType& rot = RotationType() );
00035 
00037   virtual ~AlignableComposite();
00038 
00042   virtual void addComponent( Alignable* component );
00043 
00045   virtual Alignables components() const { return theComponents; }
00046 
00048   virtual void recursiveComponents(Alignables &result) const;
00049 
00051   virtual void move( const GlobalVector& displacement ); 
00052 
00054   virtual void moveComponentsLocal( const LocalVector& localDisplacement );
00055 
00057   virtual void moveComponentLocal( const int i, const LocalVector& localDisplacement );
00058 
00060   virtual void rotateInGlobalFrame( const RotationType& rotation );
00061 
00064   virtual void setAlignmentPositionError( const AlignmentPositionError& ape, bool propagateDown );
00065 
00068   virtual void addAlignmentPositionError( const AlignmentPositionError& ape, bool propagateDown );
00069 
00072   virtual void addAlignmentPositionErrorFromRotation( const RotationType& rotation, bool propagateDown );
00073 
00076   virtual void addAlignmentPositionErrorFromLocalRotation( const RotationType& rotation, bool propagateDown );
00077 
00079   virtual void setSurfaceDeformation(const SurfaceDeformation *deformation, bool propagateDown);
00080 
00083   virtual void addSurfaceDeformation(const SurfaceDeformation *deformation, bool propagateDown);
00084 
00086   virtual StructureType alignableObjectId() const { return theStructureType; }
00087 
00089   virtual void dump() const;
00090 
00092   virtual Alignments* alignments() const;
00093 
00095   virtual AlignmentErrors* alignmentErrors() const;
00096 
00098   virtual int surfaceDeformationIdPairs(std::vector<std::pair<int,SurfaceDeformation*> > &) const;
00099 
00100 protected:
00102   explicit AlignableComposite( const GeomDet* geomDet );
00103 
00104   void setSurface( const AlignableSurface& s) { theSurface = s; }
00105   
00106   StructureType theStructureType;
00107 
00108 private:
00110   AlignableComposite() : Alignable (0, RotationType()) {};
00111 
00112   Alignables theComponents; // direct daughters
00113 };
00114 
00115 #endif