20#ifndef VGM_I_PLACEMENT_H
21#define VGM_I_PLACEMENT_H
54 virtual std::string
Name()
const = 0;
75 double& width,
double& offset,
double& halfGap)
const = 0;
81 std::vector<VGM::Transform>& transforms,
82 std::vector<VGM::IVolume*>& volumes)
const = 0;
86 virtual std::ostream&
Put(std::ostream& out)
const = 0;
std::ostream & operator<<(std::ostream &out, const VGM::IPlacement &placement)
The VGM interface to positions of volumes.
virtual PlacementType Type() const =0
Return the type of this placement.
virtual Transform Transformation() const =0
Return the 3D transformation (if simple placement)
virtual bool MultiplePlacementData(VGM::Axis &axis, int &nofItems, double &width, double &offset, double &halfGap) const =0
Fill the multiple placement data if relevant and return true; return false if not multiple placement.
virtual bool ParameterisedPlacementData(std::vector< VGM::Transform > &transforms, std::vector< VGM::IVolume * > &volumes) const =0
Fill the parameterised placement data if relevant and return true; return false if not parameterised ...
virtual int CopyNo() const =0
Return the copy number of this placement.
virtual std::string Name() const =0
Return the name of this placement.
virtual IVolume * Volume() const =0
Return the associated volume.
virtual IVolume * Mother() const =0
Return the associated mother volume.
virtual std::ostream & Put(std::ostream &out) const =0
Put the printing of the placement parameters in the out stream.
The VGM interface to volumes.
std::vector< double > Transform
std::string PlacementTypeName(VGM::PlacementType typeId)