Loading [MathJax]/extensions/tex2jax.js
 |
ATLAS Offline Software
|
Go to the documentation of this file.
24 double Ssize,
double Rsize,
double Zsize,
25 double LongSsize,
double LongRsize,
double LongZsize,
26 int zi,
int fi,
bool descratzneg) :
32 m_LongSsize = LongSsize;
33 m_LongRsize = LongRsize;
34 m_LongZsize = LongZsize;
35 m_descratzneg = 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)");
206 const Amg::Vector3D thisREnominalCenter{reElement->defTransform().translation()};
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));
243 <<
getPhiIndex() <<
" trying to get a not existing RE (iteration n. ) " <<
jobId <<
" RE is null, skipping" );
257 <<
getPhiIndex() <<
" trying to get a not existing RE (iteration n. ) " <<
jobId <<
" RE is null, skipping" );
307 const MuonReadoutElement* activeComponent = reWithTrf.first;
312 Rsize += activeComponent->getRsize() / 2.;
313 Rpos = activeComponent->toParentStation().translation();
314 ATH_MSG_VERBOSE(
"Readout element "<<activeComponent->idHelperSvc()->toStringDetEl(activeComponent->identify())
321 Rsize += std::abs(Rpos.x() - RposFirst.x());
323 Rsize += std::abs(Rpos.y() - RposFirst.y());
346 const MuonReadoutElement* activeComponent = compWithTrf.first;
352 Zsize += activeComponent->getZsize() / 2.;
353 Zpos = activeComponent->toParentStation() *
Amg::Vector3D(0., 0., 0.);
354 ATH_MSG_VERBOSE(
"Readout element "<<activeComponent->idHelperSvc()->toStringDetEl(activeComponent->identify())
361 Zsize += std::abs(Zpos.z() - ZposFirst.z());
363 Zsize += std::abs(Zpos.x() - ZposFirst.x());
void setEtaPhiIndices(int eta, int phi)
a la AMDB
const MdtAsBuiltPar * m_XTomoData
void reset()
Reset the value to invalid.
std::string getStationType() const
like BMS, T1F, CSL
Ensure that the Athena extensions are properly loaded.
void setDelta_fromAline_forComp(int, double, double, double, double, double, double)
const T * ptr() const
Return a pointer to the cached value.
Amg::Transform3D m_native_to_amdbl
std::map< int, pairRE_AlignTransf > m_REwithAlTransfInStation
keep track of the REs in this station
PVConstLink getPhysVol() const
bool isValid() const
Test to see if the value is valid.
double tubePitch() const
Returns the distance between 2 tubes in a tube layer.
bool getWireFirstLocalCoordAlongZ(int tubeLayer, double &coord) const
void setBlineFixedPointInAmdbLRS(double s0, double z0, double t0)
void setMdtAsBuiltParams(const MdtAsBuiltPar *xtomo)
PVLink m_physVol
Link the full physical volume associated with the station.
void updateBlineFixedPointInAmdbLRS()
Amg::Transform3D m_delta_amdb_frame
#define ATH_MSG_VERBOSE(x)
const std::string & getStationName() const
like BMS5, T1F1, CSL1
Amg::Vector3D m_BlineFixedPointInAmdbLRS
GeoAlignableTransform * getComponentAlTransf(int jobIndex) const
Amg::Transform3D getRotateZ3D(double angle)
get a rotation transformation around Z-axis
Base class for the XxxReadoutElement, with Xxx = Mdt, Rpc, Tgc, Csc.
const MuonReadoutElement * getMuonReadoutElement(int jobIndex) const
Amg::Transform3D m_amdbl_to_global
int getPhiIndex() const
a la AMDB
Amg::Transform3D getRotateX3D(double angle)
get a rotation transformation around X-axis
void setNativeToAmdbLRS(Amg::Transform3D xf)
std::string toString(const Translation3D &translation, int precision=4)
GeoPrimitvesToStringConverter.
void setTransform(GeoAlignableTransform *xf)
Eigen::Affine3d Transform3D
double outerTubeRadius() const
Returns the tube radius taking the thickness of the tubes into account.
void setMdtZsize(const double zSize)
Class to provide easy MsgStream access and capabilities.
CxxUtils::CachedValue< double > m_mdtRsize
Trk::DetectorElemType detectorType() const override final
Return the Detector element type.
bool m_firstRequestBlineFixedP
void setBline(const BLinePar *bline)
GeoAlignableTransform * m_transform
int nMuonReadoutElements() const
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)
void setBLinePar(const BLinePar *bLine)
Amg::Transform3D getRotateY3D(double angle)
get a rotation transformation around Y-axis
void set(const T &val) const
Set the value, assuming it is currently invalid.
void setPhysVol(const PVLink &vol)
Eigen::Matrix< double, 3, 1 > Vector3D
void addMuonReadoutElementWithAlTransf(MuonReadoutElement *a, GeoAlignableTransform *ptrsf, int jobIndex)
MuonStation(std::string_view stName, double Ssize, double Rsize, double Zsize, double LongSsize, double LongRsize, double LongZsize, int zi, int fi, bool m_descratzneg)
Container classifier the MDT as-built parameters See parameter description in http://atlas-muon-align...
double RsizeMdtStation() const
#define ATH_MSG_WARNING(x)
CxxUtils::CachedValue< double > m_mdtZsize
int getEtaIndex() const
a la AMDB
const boost::regex re(r_e)
Eigen::Translation< double, 3 > Translation3D
const MdtAsBuiltPar * getMdtAsBuiltParams() const
const Amg::Vector3D & getBlineFixedPointInAmdbLRS() const
int getNtubesperlayer() const
Returns the number of tubes in each tube layer.
void setDeltaAmdbLRS(Amg::Transform3D xf)
set the delta transform in the amdb frame and update the geoModel Delta
double ZsizeMdtStation() const
void setxAmdbCRO(double xpos)
void setNominalAmdbLRSToGlobal(Amg::Transform3D xf)