00001 #ifndef Alignment_CommonAlignment_AlignableDetUnit_H 00002 #define Alignment_CommonAlignment_AlignableDetUnit_H 00003 00004 #include "Alignment/CommonAlignment/interface/Alignable.h" 00005 00006 class GeomDetUnit; 00007 00012 00013 class AlignableDetUnit : public Alignable 00014 { 00015 00016 public: 00017 00019 AlignableDetUnit(const GeomDetUnit *geomDetUnit); 00020 00022 virtual ~AlignableDetUnit(); 00023 00025 virtual void addComponent( Alignable* ); 00026 00028 virtual Alignables components() const { return Alignables(); } 00029 00031 virtual void recursiveComponents(Alignables &result) const {} 00032 00034 virtual void move( const GlobalVector& displacement ); 00035 00037 virtual void rotateInGlobalFrame( const RotationType& rotation ); 00038 00040 virtual void setAlignmentPositionError(const AlignmentPositionError &ape, bool /*propDown*/); 00041 00044 virtual void addAlignmentPositionError(const AlignmentPositionError& ape, bool /*propDown*/); 00045 00049 virtual void addAlignmentPositionErrorFromRotation(const RotationType& rot, bool /*propDown*/); 00050 00054 virtual void addAlignmentPositionErrorFromLocalRotation(const RotationType& rot, bool /*propDown*/); 00055 00057 virtual void setSurfaceDeformation(const SurfaceDeformation *deformation, bool); 00059 virtual void addSurfaceDeformation(const SurfaceDeformation *deformation, bool); 00060 00062 virtual StructureType alignableObjectId () const { return align::AlignableDetUnit; } 00063 00065 virtual void dump() const; 00066 00068 virtual Alignments* alignments() const; 00069 00071 virtual AlignmentErrors* alignmentErrors() const; 00072 00074 virtual int surfaceDeformationIdPairs(std::vector<std::pair<int,SurfaceDeformation*> > &) const; 00075 00077 virtual void cacheTransformation(); 00078 00080 virtual void restoreCachedTransformation(); 00081 00083 const AlignmentPositionError* alignmentPositionError() const { return theAlignmentPositionError;} 00084 00085 private: 00086 00087 AlignmentPositionError* theAlignmentPositionError; 00088 SurfaceDeformation* theSurfaceDeformation; 00089 SurfaceDeformation* theCachedSurfaceDeformation; 00090 }; 00091 00092 #endif