CMS 3D CMS Logo

AlignableComposite.h
Go to the documentation of this file.
1 #ifndef Alignment_CommonAlignment_AlignableComposite_H
2 #define Alignment_CommonAlignment_AlignableComposite_H
3 
5 
22 
23 class GeomDet;
24 
26 {
27 
28 public:
33  StructureType aType,
34  const RotationType& rot = RotationType() );
35 
37  ~AlignableComposite() override;
38 
41  void update(align::ID,
42  StructureType aType,
43  const RotationType& rot = RotationType());
44 
48  void addComponent( Alignable* component ) final;
49 
51  const Alignables& components() const override { return theComponents; }
52 
54  void recursiveComponents(Alignables &result) const override;
55 
57  void move( const GlobalVector& displacement ) override;
58 
60  virtual void moveComponentsLocal( const LocalVector& localDisplacement );
61 
63  virtual void moveComponentLocal( const int i, const LocalVector& localDisplacement );
64 
66  void rotateInGlobalFrame( const RotationType& rotation ) override;
67 
70  void setAlignmentPositionError( const AlignmentPositionError& ape, bool propagateDown ) override;
71 
74  void addAlignmentPositionError( const AlignmentPositionError& ape, bool propagateDown ) override;
75 
78  void addAlignmentPositionErrorFromRotation( const RotationType& rotation, bool propagateDown ) override;
79 
82  void addAlignmentPositionErrorFromLocalRotation( const RotationType& rotation, bool propagateDown ) override;
83 
85  void setSurfaceDeformation(const SurfaceDeformation *deformation, bool propagateDown) override;
86 
89  void addSurfaceDeformation(const SurfaceDeformation *deformation, bool propagateDown) override;
90 
92  StructureType alignableObjectId() const override { return theStructureType; }
93 
95  void dump() const override;
96 
98  Alignments* alignments() const override;
99 
101  AlignmentErrorsExtended* alignmentErrors() const override;
102 
104  int surfaceDeformationIdPairs(std::vector<std::pair<int,SurfaceDeformation*> > &) const override;
105 
106 protected:
108  explicit AlignableComposite( const GeomDet* geomDet );
109 
112  void update(const GeomDet* geomDet);
113 
114  // avoid implicit cast of not explicitely defined version to the defined ones
115  template<class T> void update(T) = delete;
116 
117  void setSurface( const AlignableSurface& s) { theSurface = s; }
118 
120 
121 private:
124 
125  Alignables theComponents; // direct daughters
126 };
127 
128 #endif
const Alignables & components() const override
Return vector of direct components.
void addAlignmentPositionError(const AlignmentPositionError &ape, bool propagateDown) override
void addAlignmentPositionErrorFromRotation(const RotationType &rotation, bool propagateDown) override
void setSurfaceDeformation(const SurfaceDeformation *deformation, bool propagateDown) override
Set the surface deformation parameters - if (!propagateDown) do not affect daughters.
void rotateInGlobalFrame(const RotationType &rotation) override
Rotation interpreted in global reference frame.
AlignableComposite()
default constructor hidden
int surfaceDeformationIdPairs(std::vector< std::pair< int, SurfaceDeformation * > > &) const override
Return surface deformations.
uint32_t ID
Definition: Definitions.h:26
const GlobalVector & displacement() const
Return change of the global position since the creation of the object.
Definition: Alignable.h:144
StructureType alignableObjectId() const override
Return the alignable type identifier.
void move(const GlobalVector &displacement) override
Move with respect to the global reference frame.
void addAlignmentPositionErrorFromLocalRotation(const RotationType &rotation, bool propagateDown) override
void recursiveComponents(Alignables &result) const override
Provide all components, subcomponents etc. (cf. description in base class)
void setAlignmentPositionError(const AlignmentPositionError &ape, bool propagateDown) override
virtual void moveComponentsLocal(const LocalVector &localDisplacement)
Move with respect to the local reference frame.
const RotationType & rotation() const
Return change of orientation since the creation of the object.
Definition: Alignable.h:147
StructureType theStructureType
void setSurface(const AlignableSurface &s)
Alignments * alignments() const override
Return alignment data.
AlignmentErrorsExtended * alignmentErrors() const override
Return vector of alignment errors.
virtual void moveComponentLocal(const int i, const LocalVector &localDisplacement)
Move a single component with respect to the local reference frame.
void addSurfaceDeformation(const SurfaceDeformation *deformation, bool propagateDown) override
align::RotationType RotationType
Definition: Alignable.h:34
~AlignableComposite() override
deleting its components
void update(align::ID, StructureType aType, const RotationType &rot=RotationType())
long double T
align::Alignables Alignables
Definition: Alignable.h:37
void addComponent(Alignable *component) final
AlignableSurface theSurface
Definition: Alignable.h:246
void dump() const override
Recursive printout of alignable structure.