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;
00113 };
00114
00115 #endif