 |
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
Scalar phi() const
phi method
PVConstLink getPhysVol() const
Scalar eta() const
pseudorapidity method
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
const std::string & stName(StIndex index)
convert StIndex into a string
std::vector< ALFA_RawData_p1 > t0
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)