26 int zi,
int fi,
bool descratzneg) :
65 <<
" setting fixed point for B-lines at s0,z0,t0 = " <<
s0 <<
" " << z0 <<
" " <<
t0 );
73 <<
getEtaIndex() <<
" nominal(i.e. from-station-envelop-only) B-line fixed point "
100 double shiftInZ = -0.5 * mdtRE->
tubePitch();
102 double multilayerRealSize{0};
103 for (
int ilayer = 1; ilayer <= 2; ++ilayer) {
109 <<
" cannot get wire coordinates for second tube layer");
112 if ((ilayer == 1) || (val > multilayerRealSize)) multilayerRealSize = val;
116 shiftInZ += mdtRE->
getZsize() - multilayerRealSize;
131 <<
" adding Aline " << std::endl
144 if (std::abs(tras) + std::abs(traz) + std::abs(trat) + (std::abs(rots) + std::abs(rotz) + std::abs(rott)) * 1000. > 0.01) {
155 <<
" adding Aline " << setiosflags(std::ios::fixed) << std::setprecision(6) << std::setw(12)
156 << tras <<
" " << traz <<
" " << trat <<
" " << rots <<
" " << rotz <<
" " << rott << std::endl
157 <<
" delta_amdb computed from A-line " <<
Amg::toString(delta_amdb));
176 <<
"/" <<
getPhiIndex() <<
" adding new component with Alignable transf... " <<
a->getStationName()
177 <<
" job ondex = " << jobIndex );
187 if (!parentToChild) {
188 ATH_MSG_WARNING(
"setDelta_fromAline_forComp: WARNING: component for index " << jobindex
192 if (std::abs(tras) + std::abs(traz) + std::abs(trat) + (std::abs(rots) + std::abs(rotz) + std::abs(rott)) * 1000. < 0.01) {
193 ATH_MSG_DEBUG(
"setDelta_fromAline_forComp: A-line ignored --- too small (translations < 10microns & rotations <10microrad)");
207 double Rcomp = thisREnominalCenter.perp() - (reElement->
getRsize()) / 2.;
208 double DZcomp = std::abs(thisREnominalCenter.z()) - std::abs((
m_amdbl_to_global.translation()).z()) -
209 std::abs((reElement->
getZsize()) / 2.);
217 Amg::Transform3D childToLocAmdbComponent = locAmdbStatToLocAmdbComp * childToLocAmdbStation;
220 <<
getEtaIndex() <<
" Job " << jobindex <<
" Origin of component/station AmdbLocalFrame= "
224 parentToChild->setDelta(childToLocAmdbComponent.inverse() * delta_amdb * childToLocAmdbComponent);
226 <<
getEtaIndex() <<
" Job " << jobindex <<
" Origin of component/station AmdbLocalFrame= "
231 <<
" adding Aline " << tras <<
" " << traz <<
" " << trat <<
" " << rots <<
" " << rotz <<
" " << rott
232 <<
" for component with index =" << jobindex << std::endl
233 <<
" delta_amdb computed from A-line " <<
Amg::toString(delta_amdb));
239 ATH_MSG_DEBUG(
"Clearing cache .... for RE ... iteration n. " << jobId);
243 <<
getPhiIndex() <<
" trying to get a not existing RE (iteration n. ) " << jobId <<
" RE is null, skipping" );
253 ATH_MSG_DEBUG(
"fillCache cache .... for RE ... iteration n. " << jobId);
257 <<
getPhiIndex() <<
" trying to get a not existing RE (iteration n. ) " << jobId <<
" RE is null, skipping" );
273 ATH_MSG_DEBUG(
"fillCache cache .... for RE ... iteration n. " << jobId);
300 Amg::Vector3D RposFirst{Amg::Vector3D::Zero()}, Rpos{Amg::Vector3D::Zero()};
321 Rsize += std::abs(Rpos.x() - RposFirst.x());
323 Rsize += std::abs(Rpos.y() - RposFirst.y());
337 Amg::Vector3D ZposFirst{Amg::Vector3D::Zero()}, Zpos{Amg::Vector3D::Zero()};
361 Zsize += std::abs(Zpos.z() - ZposFirst.z());
363 Zsize += std::abs(Zpos.x() - ZposFirst.x());
const boost::regex re(r_e)
Scalar eta() const
pseudorapidity method
Scalar phi() const
phi method
#define ATH_MSG_VERBOSE(x)
#define ATH_MSG_WARNING(x)
AthMessaging(IMessageSvc *msgSvc, const std::string &name)
Constructor.
Container classifier the MDT as-built parameters See parameter description in http://atlas-muon-align...
void setBLinePar(const BLinePar *bLine)
double outerTubeRadius() const
Returns the tube radius taking the thickness of the tubes into account.
int getNtubesperlayer() const
Returns the number of tubes in each tube layer.
double tubePitch() const
Returns the distance between 2 tubes in a tube layer.
bool getWireFirstLocalCoordAlongZ(int tubeLayer, double &coord) const
Base class for the XxxReadoutElement, with Xxx = Mdt, Rpc, Tgc, Csc.
const Amg::Transform3D & defTransform() const
const Muon::IMuonIdHelperSvc * idHelperSvc() const
Amg::Transform3D toParentStation() const
Trk::DetectorElemType detectorType() const override final
Return the Detector element type.
Identifier identify() const override final
Returns the ATLAS Identifier of the MuonReadOutElement.
void setBlineFixedPointInAmdbLRS(double s0, double z0, double t0)
GeoAlignableTransform * m_transform
PVConstLink getPhysVol() const
Amg::Transform3D m_delta_amdb_frame
int getEtaIndex() const
a la AMDB
void setEtaPhiIndices(int eta, int phi)
a la AMDB
void updateBlineFixedPointInAmdbLRS()
double ZsizeMdtStation() const
void setDeltaAmdbLRS(Amg::Transform3D xf)
set the delta transform in the amdb frame and update the geoModel Delta
int getPhiIndex() const
a la AMDB
bool m_firstRequestBlineFixedP
const std::string & getStationName() const
like BMS5, T1F1, CSL1
MuonStation(std::string_view stName, double Ssize, double Rsize, double Zsize, double LongSsize, double LongRsize, double LongZsize, int zi, int fi, bool m_descratzneg)
std::string getStationType() const
like BMS, T1F, CSL
void setNominalAmdbLRSToGlobal(Amg::Transform3D xf)
void setxAmdbCRO(double xpos)
void setMdtAsBuiltParams(const MdtAsBuiltPar *xtomo)
void setDelta_fromAline(double, double, double, double, double, double)
set the delta transform in the amdb frame and update the geoModel Delta
void setMdtRsize(const double rSize)
int nMuonReadoutElements() const
Amg::Transform3D m_native_to_amdbl
const Amg::Vector3D & getBlineFixedPointInAmdbLRS() const
Amg::Vector3D m_BlineFixedPointInAmdbLRS
void setTransform(GeoAlignableTransform *xf)
CxxUtils::CachedValue< double > m_mdtRsize
const MdtAsBuiltPar * getMdtAsBuiltParams() const
std::map< int, pairRE_AlignTransf > m_REwithAlTransfInStation
keep track of the REs in this station
void addMuonReadoutElementWithAlTransf(MuonReadoutElement *a, GeoAlignableTransform *ptrsf, int jobIndex)
GeoAlignableTransform * getComponentAlTransf(int jobIndex) const
void setPhysVol(const PVLink &vol)
PVLink m_physVol
Link the full physical volume associated with the station.
void setNativeToAmdbLRS(Amg::Transform3D xf)
double RsizeMdtStation() const
void setMdtZsize(const double zSize)
void setBline(const BLinePar *bline)
const MuonReadoutElement * getMuonReadoutElement(int jobIndex) const
CxxUtils::CachedValue< double > m_mdtZsize
void setDelta_fromAline_forComp(int, double, double, double, double, double, double)
Amg::Transform3D m_amdbl_to_global
const MdtAsBuiltPar * m_XTomoData
virtual std::string toStringDetEl(const Identifier &id) const =0
print all fields up to detector element to string
Amg::Transform3D getRotateX3D(double angle)
get a rotation transformation around X-axis
std::string toString(const Translation3D &translation, int precision=4)
GeoPrimitvesToStringConverter.
Amg::Transform3D getRotateZ3D(double angle)
get a rotation transformation around Z-axis
Eigen::Affine3d Transform3D
Eigen::Matrix< double, 3, 1 > Vector3D
Amg::Transform3D getRotateY3D(double angle)
get a rotation transformation around Y-axis
Eigen::Translation< double, 3 > Translation3D
Ensure that the Athena extensions are properly loaded.
static std::atomic< int > nmdt