15 Alignable( geomDet->geographicalId().rawId(), geomDet->surface() ),
24 theStructureType(type)
53 && components.size() <= 1) {
56 for (Alignables::const_iterator iter = components.begin();
57 iter != components.end(); ++iter) {
58 result.push_back(*iter);
59 (*iter)->recursiveComponents(result);
69 for ( Alignables::iterator
i=comp.begin();
i!=comp.end();
i++ )
70 (**i).move( displacement);
83 this->
move( this->
surface().toGlobal(localDisplacement) );
93 <<
"AlignableComposite index (" << i <<
") out of range";
96 comp[
i]->move( this->
surface().toGlobal( localDisplacement ) );
113 for ( Alignables::iterator
i=comp.begin();
i!=comp.end();
i++ )
131 const GlobalVector localPositionVector = (**i).globalPosition() - myPosition;
141 (**i).move( moveVector );
142 (**i).rotateInGlobalFrame( rotation );
160 if (!propagateDown)
return;
163 for (Alignables::const_iterator
i = comp.begin();
i != comp.end(); ++
i) {
164 (*i)->setAlignmentPositionError(ape, propagateDown);
177 if (!propagateDown)
return;
180 for (Alignables::const_iterator
i = comp.begin();
i != comp.end(); ++
i) {
181 (*i)->addAlignmentPositionError(ape, propagateDown);
195 if (!propagateDown)
return;
200 for ( Alignables::const_iterator
i=comp.begin();
i!=comp.end();
i++ )
206 const GlobalVector localPositionVector = (**i).globalPosition()-myPosition;
215 (*i)->addAlignmentPositionError( ape, propagateDown );
216 (*i)->addAlignmentPositionErrorFromRotation( rotation, propagateDown );
245 if (!propagateDown)
return;
248 for (Alignables::const_iterator
i = comp.begin();
i != comp.end(); ++
i) {
249 (*i)->setSurfaceDeformation(deformation, propagateDown);
259 if (!propagateDown)
return;
262 for (Alignables::const_iterator
i = comp.begin();
i != comp.end(); ++
i) {
263 (*i)->addSurfaceDeformation(deformation, propagateDown);
278 <<
" has " << comp.size() <<
" components" << std::endl
279 <<
" position = " << this->
globalPosition() <<
", orientation:" << std::endl
283 for ( Alignables::iterator
i=comp.begin();
i!=comp.end();
i++ )
300 for ( Alignables::iterator
i=comp.begin();
i!=comp.end();
i++ )
302 Alignments* tmpAlignments = (*i)->alignments();
304 std::back_inserter(m_alignments->
m_align) );
305 delete tmpAlignments;
324 for ( Alignables::iterator
i=comp.begin();
i!=comp.end();
i++ )
329 delete tmpAlignmentErrors;
333 return m_alignmentErrors;
347 for ( Alignables::iterator
i=comp.begin();
i!=comp.end(); ++
i) {
348 count += (*i)->surfaceDeformationIdPairs(
result);
AlignableComposite()
default constructor hidden
virtual void addAlignmentPositionError(const AlignmentPositionError &ape, bool propagateDown)
std::vector< AlignTransformError > m_alignError
void move(const GlobalVector &displacement)
const RotationType & globalRotation() const
Return the global orientation of the object.
virtual void setAlignmentPositionError(const AlignmentPositionError &ape, bool propagateDown)
std::vector< AlignTransform > m_align
virtual void dump() const
Recursive printout of alignable structure.
virtual void recursiveComponents(Alignables &result) const
Provide all components, subcomponents etc. (cf. description in base class)
virtual AlignmentErrors * alignmentErrors() const
Return vector of alignment errors.
virtual void moveComponentsLocal(const LocalVector &localDisplacement)
Move with respect to the local reference frame.
virtual void move(const GlobalVector &displacement)
Move with respect to the global reference frame.
virtual StructureType alignableObjectId() const
Return the alignable type identifier.
virtual Alignments * alignments() const
Return alignment data.
virtual void moveComponentLocal(const int i, const LocalVector &localDisplacement)
Move a single component with respect to the local reference frame.
const AlignableSurface & surface() const
Return the Surface (global position and orientation) of the object.
void setMother(Alignable *mother)
Assign mother to alignable.
virtual void addAlignmentPositionErrorFromLocalRotation(const RotationType &rotation, bool propagateDown)
const Alignables & deepComponents() const
virtual int surfaceDeformationIdPairs(std::vector< std::pair< int, SurfaceDeformation * > > &) const
Return surface deformations.
void addRotation(const RotationType &rotation)
void addDisplacement(const GlobalVector &displacement)
virtual void addSurfaceDeformation(const SurfaceDeformation *deformation, bool propagateDown)
std::vector< Alignable * > Alignables
virtual void setSurfaceDeformation(const SurfaceDeformation *deformation, bool propagateDown)
Set the surface deformation parameters - if (!propagateDown) do not affect daughters.
void rotate(const RotationType &rotation)
virtual ~AlignableComposite()
deleting its components
virtual void addAlignmentPositionErrorFromRotation(const RotationType &rotation, bool propagateDown)
virtual Alignables components() const
Return vector of direct components.
const PositionType & globalPosition() const
Return the global position of the object.
Basic3DVector< T > multiplyInverse(const Basic3DVector< T > &v) const
const BasicVectorType & basicVector() const
align::Alignables Alignables
virtual void rotateInGlobalFrame(const RotationType &rotation)
Rotation interpreted in global reference frame.
AlignableSurface theSurface
int size() const
Return number of direct components.
virtual void addComponent(Alignable *component)
Alignables theDeepComponents