![Logo](../../ATLAS-Logo-Square-Blue-RGB.png) |
ATLAS Offline Software
|
Go to the documentation of this file.
39 m_detStore(
"DetectorStore",
name),
40 m_trtStrawAlignDbSvc(
"TRT_StrawAlignDbSvc",
name),
43 m_alignroot(
"/TRT/Align"),
45 m_par_alitextfile(
""),
46 m_streamer(
"AthenaOutputStreamTool/CondStream1"),
47 m_alignDBprefix(
"/TRT/Align/"),
49 m_forceUserDBConfig(false)
77 InDetDD::TRT_DetElementCollection::const_iterator iter,itermin,itermax;
106 ATH_MSG_INFO(
"Adding key: /TRT/Align/TRT --> We are using static DB folder scheme" );
111 for (iter=itermin;iter!=itermax;++iter) {
113 if (element!=
nullptr) {
133 for(
unsigned int i=0;
i<14; ++
i){
161 if( alignFolderExists ) {
167 if( alignTextFileExists )
169 <<
" exists. Will read text file from callback function." );
171 }
else if ( alignTextFileExists ) {
180 ATH_MSG_ERROR(
"AlignableTransformContainer not in IOV service and no textfile specified." );
187 return StatusCode::SUCCESS;
194 ATH_MSG_INFO(
"TRT_AlignDbSvc finalize method called" );
198 return StatusCode::SUCCESS;
217 for (std::list<std::string>::const_iterator itr=
keys.begin(); itr!=
keys.end(); ++itr)
218 ATH_MSG_INFO(
"IOVCALLBACK for key " << *itr<<
" number " <<
I );
232 return StatusCode::SUCCESS;
246 std::vector<std::string>::const_iterator iobj=
m_alignobjs.begin();
247 std::vector<std::string>::const_iterator iobjE=
m_alignobjs.end();
248 for (;iobj!=iobjE; ++iobj) {
250 std::string
key=*iobj;
272 for (;cit!=citE;++cit) {
293 std::string thisMess =
key+
" for "+
file;
299 CLHEP::HepRotation rot=transCLHEP.getRotation();
301 eulerangles[0] = rot.getPhi();
302 eulerangles[1] = rot.getTheta();
303 eulerangles[2] = rot.getPsi();
315 << std::setprecision(10) <<
" "
316 << shift.x() <<
" " << shift.y() <<
" " << shift.z() <<
" "
317 << eulerangles[0] <<
" " << eulerangles[1] <<
" " << eulerangles[2]
322 << std::setprecision(10) <<
" "
323 << shift.x() <<
" " << shift.y() <<
" " << shift.z() <<
" "
324 << eulerangles[0] <<
" " << eulerangles[1] <<
" " << eulerangles[2]
333 << std::setprecision(10) <<
" "
334 << shift.x() <<
" " << shift.y() <<
" " << shift.z() <<
" "
335 << eulerangles[0] <<
" " << eulerangles[1] <<
" " << eulerangles[2]
340 << std::setprecision(10) <<
" "
341 << shift.x() <<
" " << shift.y() <<
" " << shift.z() <<
" "
342 << eulerangles[0] <<
" " << eulerangles[1] <<
" " << eulerangles[2]
351 ATH_MSG_INFO(
"Written " << nobj <<
" AlignableTransform objects" <<
" with " << ntrans
352 <<
" transforms to text file" );
355 return StatusCode::SUCCESS;
366 return StatusCode::SUCCESS;
389 return StatusCode::FAILURE ;
402 std::string linestring(
line) ;
403 if( linestring.find(
'/') != std::string::npos) {
405 atname = linestring ;
409 ATH_MSG_ERROR(
"Cannot find AlignableTransform object for key " << atname );
410 return StatusCode::FAILURE;
414 }
else if(
pat!=
nullptr) {
416 std::istringstream is(
line) ;
423 CLHEP::Hep3Vector translation(
dx,
dy, dz);
425 if (is >>
theta >> psi) {
427 <<
" " <<
theta <<
" " << psi);
436 ATH_MSG_WARNING (
"WARNING: read module from file which was already in AlignableTransform. Will skip it."
437 <<
" bec,lay,sec,strawlay = " <<
bec <<
" " <<
layer <<
" " << sector <<
" " );
442 std::string thisMess = atname+
" for "+
file;
450 <<
"] key " << atname
451 <<
" rotation=(" <<
phi <<
"," <<
theta <<
"," << psi
452 <<
"), translation=(" <<
dx <<
"," <<
dy <<
"," << dz <<
"])"
455 }
else if(!linestring.empty()) {
461 CLHEP::Hep3Vector translation(
dx,
dy,dz) ;
463 if( is >>
theta >> psi ) {
474 ATH_MSG_WARNING (
"WARNING: read module from file which was already in AlignableTransform. Will skip it."
475 <<
" bec,lay,sec = " <<
bec <<
" " <<
layer <<
" " << sector);
480 <<
" [" <<
bec <<
"," <<
layer <<
"," << sector
481 <<
"] key " << atname <<
" rotation=(" <<
phi <<
"," <<
theta <<
"," << psi
482 <<
"), translation=(" <<
dx <<
"," <<
dy <<
"," << dz <<
"])" );
484 }
else if(!linestring.empty()) {
495 ATH_MSG_INFO(
"Read " << nobj <<
" objects from file with " << ntrans <<
" transforms."
496 <<
" Now forcing callback in detector manager." );
500 std::list<std::string>
keys;
506 return StatusCode::SUCCESS;
522 typeKeys.push_back(arraypair);
528 ATH_MSG_INFO(
" Streamed out and committed AlignableTransformContainer" );
532 return StatusCode::SUCCESS;
544 ATH_CHECK( service(
"IOVRegistrationSvc",regsvc) );
547 ATH_MSG_INFO(
" Register AlignableTransformContainer object "
550 ATH_MSG_ERROR(
" Failed to register AlignableTranformContainer "
552 return StatusCode::FAILURE;
555 return StatusCode::SUCCESS;
578 std::string
key=
"/TRT/Align/TRT";
643 if(iter !=
pat->end() ) {
679 if(iter !=
pat->end() ){
702 return StatusCode::FAILURE;
718 return StatusCode::SUCCESS;
736 return StatusCode::FAILURE;
744 ATH_MSG_FATAL(
"The AlignableTransform for key " <<
"/TRT/Align/TRT" <<
" does not exist " );
746 return StatusCode::FAILURE;
753 return StatusCode::FAILURE;
760 if( !(
pat->update(mid,clhepTrans)) ) {
761 pat->add(mid,clhepTrans);
767 return StatusCode::SUCCESS;
780 if (!
pat)
return StatusCode::FAILURE;
792 <<
" Bec= " <<
bec <<
" layer= " <<
layer <<
" sector= " << sector
794 ATH_MSG_DEBUG(
"The translations are: x= " << trans(0,3) <<
" y= "<<trans(1,3) <<
" z= "<<trans(2,3) );
803 ATH_MSG_FATAL(
"The identifier " << ident2 <<
" is not from the TRT " );
805 return StatusCode::FAILURE;
810 if( !(
pat->update(ident2,clhepTrans)) ) {
811 pat->add(ident2,clhepTrans);
816 return StatusCode::SUCCESS;
832 ATH_MSG_INFO(
"Storing L3 Barrel constants, Only dx and rotz will be written to DB");
833 float dx = trans.translation().x();
834 float rotz = atan2(trans.rotation()(0,1),trans.rotation()(0,0));
838 double strawLenthOver2 = 0.5* strawElement->
strawLength();
843 double delta_dx_atLargerZ =
dx + strawLenthOver2 *
sin(rotz);
844 double delta_dx_atSmallerZ =
dx - strawLenthOver2 *
sin(rotz);
853 double dx1_new =
sideA ? delta_dx_atLargerZ : delta_dx_atSmallerZ;
856 double dx2_new =
sideA ? delta_dx_atSmallerZ : delta_dx_atLargerZ;
859 double dxErr = 0.001;
865 ATH_MSG_INFO(
"Storing L3 Endcap constants, Only dy and rotz will be written to DB");
874 float dy = trans.translation().y();
875 float rotx = atan2(trans.rotation()(1,2),trans.rotation()(2,2));
879 double strawLenthOver2 = 0.5* strawElement->
strawLength();
883 double delta_dx_nearBeamPipe =
dy + strawLenthOver2 *
sin(rotx);
884 double delta_dx_nearReadOut =
dy - strawLenthOver2 *
sin(rotx);
887 double dxErr = 0.001;
893 return StatusCode::SUCCESS;
904 return StatusCode::FAILURE;
915 return StatusCode::FAILURE;
928 return StatusCode::FAILURE;
941 return StatusCode::FAILURE;
947 return StatusCode::SUCCESS;
962 return StatusCode::FAILURE;
970 ATH_MSG_WARNING(
"The AlignableTransform for key " <<
"/TRT/Align/TRT" <<
" does not exist " );
972 return StatusCode::FAILURE;
981 return StatusCode::FAILURE;
991 return StatusCode::FAILURE;
996 return StatusCode::SUCCESS;
1011 return StatusCode::FAILURE;
1031 return StatusCode::FAILURE;
1035 return StatusCode::SUCCESS;
1051 ATH_MSG_INFO(
"Storing L3 constants, Only dx and rotz will be written to DB");
1052 float dx = trans.translation().x();
1070 float rotz = atan2(trans.rotation()(0,2),trans.rotation()(0,0));
1074 double strawLenthOver2 = 0.5* strawElement->
strawLength();
1081 double delta_dx_atLargerZ;
1082 double delta_dx_atSmallerZ;
1084 delta_dx_atLargerZ =
dx - strawLenthOver2 *
sin(rotz);
1085 delta_dx_atSmallerZ =
dx + strawLenthOver2 *
sin(rotz);
1088 delta_dx_atLargerZ =
dx + strawLenthOver2 *
sin(rotz);
1089 delta_dx_atSmallerZ =
dx - strawLenthOver2 *
sin(rotz);
1093 double delta_dx1 =
sideA ? delta_dx_atLargerZ : delta_dx_atSmallerZ;
1096 double delta_dx2 =
sideA ? delta_dx_atSmallerZ : delta_dx_atLargerZ;
1099 double dxErr = 0.001;
1112 double dx1_new = dx1_current + delta_dx1;
1113 double dx2_new = dx2_current + delta_dx2;
1123 ATH_MSG_INFO(
"Storing L3 Endcap constants, Only dy and rotz will be written to DB");
1132 float dy = trans.translation().y();
1133 float rotx = atan2(trans.rotation()(1,2),trans.rotation()(2,2));
1137 double strawLenthOver2 = 0.5* strawElement->
strawLength();
1141 double delta_dx_nearBeamPipe =
dy + strawLenthOver2 *
sin(rotx);
1142 double delta_dx_nearReadOut =
dy - strawLenthOver2 *
sin(rotx);
1145 double dxErr = 0.001;
1158 double dx1_new = dx1_current + delta_dx_nearReadOut;
1159 double dx2_new = dx2_current + delta_dx_nearBeamPipe;
1165 return StatusCode::SUCCESS;
1195 std::ostringstream
result;
1201 }
else if(
type==
"DF") {
1202 result <<
"/TRT/Calib/DF";
1203 }
else return result.str();
1212 }
else if(
bec==-2) {
1219 }
else if(
type==
"ALold"){
1222 }
else if(
bec==-2) {
1254 std::ostringstream
result;
1257 std::string
type,quantity;
1263 quantity=
key.substr(
ind,2);
1269 if(
type==
"Align" &&
key.substr(ind1,2)!=
"ID") {
1270 if(
key.substr(ind1+3,1)==
"_") quantity=
"DF";
1277 if(quantity==
"DF") {
1279 }
else if (quantity==
"RT") {
1281 }
else if (quantity==
"T0") {
1288 }
else if(
type==
"Align") {
1316 <<
" already exists." );
1317 return StatusCode::FAILURE;
1321 auto patc = std::make_unique<AlignableTransformContainer>();
1324 patc->push_back(std::make_unique<AlignableTransform>(
m_alignobjs[
i]));
1333 return StatusCode::SUCCESS;
1342 ATH_MSG_DEBUG(
"createAlignObjectsWhichDoNotAlreadyExist method called" );
1370 ATH_MSG_DEBUG(
"Leaving createAlignObjectsWhichDoNotAlreadyExist" );
1371 return StatusCode::SUCCESS;
1380 std::vector<std::string>::const_iterator iobj=
m_alignobjs.begin();
1381 std::vector<std::string>::const_iterator iobjE=
m_alignobjs.end();
1382 for (;iobj!=iobjE;++iobj) {
1415 if( (*dva)->tag()==
key ) {
1434 return strawlayer / 4 * 4;
1442 for(
unsigned int i=0;
i<14; ++
i){
1445 <<
bool(
input.find(testA)!=std::string::npos) );
1446 if(
input.find(testA)!=std::string::npos){
1452 <<
bool(
input.find(testC)!=std::string::npos) );
1453 if(
input.find(testC)!=std::string::npos){
1464 std::ostringstream stm;
1485 std::vector<std::string> folder_list = {
"/TRT/AlignL1/TRT"};
1491 if (StatusCode::SUCCESS==
m_detStore->retrieve(atrlistcol,*
it)) {
1496 outfile << atrlist[
"bec"].data<
int>()
1497 <<
" " << atrlist[
"layer"].data<int>()
1498 <<
" " << atrlist[
"sector"].data<
int>()
1499 <<
" " << atrlist[
"Tx"].data<float>()
1500 <<
" " << atrlist[
"Ty"].data<
float>()
1501 <<
" " << atrlist[
"Tz"].data<float>()
1502 <<
" " << atrlist[
"phi"].data<
float>()
1503 <<
" " << atrlist[
"theta"].data<float>()
1504 <<
" " << atrlist[
"psi"].data<
float>() << std::endl;
1509 ATH_MSG_INFO(
"Cannot find " << *
it <<
" Container - cannot write DB in text file " );
1510 return StatusCode::FAILURE;
1515 return StatusCode::SUCCESS;
1518 ATH_MSG_DEBUG(
"writeFile: No dynamic Run2 DB structure is present --> skipping writing file " <<
file );
1519 return StatusCode::SUCCESS;
1534 std::string
key=
"/TRT/AlignL1/TRT";
1537 const unsigned int DBident=1000+
bec*100;
1540 if (StatusCode::SUCCESS==
m_detStore->retrieve(atrlistcol1,
key)) {
1543 if (atrlistcol1!=
nullptr){
1549 if(citr->first!=DBident){
1550 ATH_MSG_DEBUG(
"tweakGlobalFolder fails due to identifier mismatch" );
1554 ATH_MSG_DEBUG(
"Tweak Old global DB -- channel: " << citr->first
1555 <<
" ,bec: " << atrlist2[
"bec"].data<
int>()
1556 <<
" ,layer: " << atrlist2[
"layer"].data<
int>()
1557 <<
" ,sector: " << atrlist2[
"sector"].data<
int>()
1558 <<
" ,Tx: " << atrlist2[
"Tx"].data<
float>()
1559 <<
" ,Ty: " << atrlist2[
"Ty"].data<
float>()
1560 <<
" ,Tz: " << atrlist2[
"Tz"].data<
float>()
1561 <<
" ,phi: " << atrlist2[
"phi"].data<
float>()
1562 <<
" ,theta: " << atrlist2[
"theta"].data<
float>()
1563 <<
" ,psi: " << atrlist2[
"psi"].data<
float>() );
1567 CLHEP::Hep3Vector oldtranslation(atrlist2[
"Tx"].data<float>(),atrlist2[
"Ty"].data<float>(),atrlist2[
"Tz"].data<float>());
1568 CLHEP::HepRotation oldrotation;
1569 oldrotation.set(atrlist[
"phi"].data<float>(),atrlist[
"theta"].data<float>(),atrlist[
"psi"].data<float>());
1578 CLHEP::HepRotation rot=newtrans.getRotation();
1580 eulerangles[0] = rot.getPhi();
1581 eulerangles[1] = rot.getTheta();
1582 eulerangles[2] = rot.getPsi();
1584 atrlist2[
"Tx"].data<
float>() = shift.x();
1585 atrlist2[
"Ty"].data<
float>() = shift.y();
1586 atrlist2[
"Tz"].data<
float>() = shift.z();
1587 atrlist2[
"phi"].data<
float>() = eulerangles[0] ;
1588 atrlist2[
"theta"].data<
float>() = eulerangles[1] ;
1589 atrlist2[
"psi"].data<
float>() = eulerangles[2] ;
1592 ATH_MSG_DEBUG(
"Tweak New global DB -- channel: " << citr->first
1593 <<
" ,bec: " << atrlist2[
"bec"].data<
int>()
1594 <<
" ,layer: " << atrlist2[
"layer"].data<
int>()
1595 <<
" ,sector: " << atrlist2[
"sector"].data<
int>()
1596 <<
" ,Tx: " << atrlist2[
"Tx"].data<
float>()
1597 <<
" ,Ty: " << atrlist2[
"Ty"].data<
float>()
1598 <<
" ,Tz: " << atrlist2[
"Tz"].data<
float>()
1599 <<
" ,phi: " << atrlist2[
"phi"].data<
float>()
1600 <<
" ,theta: " << atrlist2[
"theta"].data<
float>()
1601 <<
" ,psi: " << atrlist2[
"psi"].data<
float>() );
1607 ATH_MSG_ERROR(
"tweakGlobalFolder: cast fails for DBident " << DBident );
1608 return StatusCode::FAILURE;
1612 ATH_MSG_ERROR(
"tweakGlobalFolder: cannot retrieve CondAttrListCollection for key " <<
key );
1613 return StatusCode::FAILURE;
1616 if (
result)
return StatusCode::SUCCESS;
1617 else return StatusCode::FAILURE;
JetConstituentVector::iterator iterator
StatusCode setAlignTransformL2(Identifier ident, Amg::Transform3D trans)
set Level 2 AlignableTransform for an identifier
const_iterator end() const
Identifier layer_id(int barrel_ec, int phi_module, int layer_or_wheel, int straw_layer) const
For an individual straw layer.
std::vector< Amg::Transform3D * > m_amgTransformCache
virtual const double & strawLength() const =0
Active straw length.
Const iterator class for DataVector/DataList.
Scalar phi() const
phi method
StatusCode tweakAlignTransformL2(Identifier ident, const Amg::Transform3D &trans)
tweak Level 2 AlignableTransform for an identifier
std::string find(const std::string &s)
return a remapped string
std::vector< int > m_alignchans
channels
AlignableTransform * getTransPtr(const std::string &key) const
get AlignableTransform pointer for an object key
std::string findkey(const Identifier &ident, const std::string &type) const
Return the object key for a given identifier and data type.
StatusCode tweakAlignTransform(Identifier ident, Amg::Transform3D trans, unsigned int level)
tweak AlignableTransform for an identifier
A CondMultChanCollection is a template class which can hold a collection of T* objects which are inte...
static int getRingForStrawLayer(int strawlayer)
Returns the ring for a given strawLayer.
Scalar theta() const
theta method
StatusCode writeGlobalFolderFile(const std::string &file) const
const InDetDD::TRT_DetectorManager * m_trtman
detector manager
std::string m_par_alitextfile
input text file
This is an Identifier helper class for the TRT subdetector. This class is a factory for creating comp...
const Amg::Transform3D * getAlignmentTransformL1Ptr(Identifier const &ident) const
get Level L1 Transform for an identifier
bool msgLvl(const MSG::Level lvl) const
const_iterator begin() const
Access to Chan/AttributeList pairs via iterators.
This is an interface to a tool used to register conditions objects in the Interval of Validity (IOV) ...
#define IOVSVC_CALLBACK_ARGS_P(I, K)
short hand for IOVSvc call back argument list, to be used when access to formal arguments is needed,...
bool is_trt(Identifier id) const
#define ATH_MSG_VERBOSE(x)
std::vector< std::string > m_alignobjs
folder names
This class is a collection of AttributeLists where each one is associated with a channel number....
const AlignableTransform * cgetTransPtr(const std::string &key) const
get const AlignableTransform pointer for an object key
virtual StatusCode registerIOV(const std::string &typeName) const =0
Register IOV DB for an object given its typeName - run/LB numbers interval or times interval and tag ...
StatusCode setAlignTransform(Identifier ident, Amg::Transform3D trans, unsigned int level)
set AlignableTransform for an identifier
TRT_AlignDbSvc(const std::string &name, ISvcLocator *pSvcLocator)
constructor
StatusCode IOVCallBack(IOVSVC_CALLBACK_ARGS)
Call back function for alignment folders.
StatusCode createAlignObjectsWhichDoNotAlreadyExist()
Create an empty set of AlignableTransforms for the transforms which are not created by XXXXXXX from t...
const Amg::Transform3D * getAlignmentTransformPtr(const Identifier &ident, unsigned int level) const
get Level L2 Transform for an identifier
ToolHandle< IAthenaOutputStreamTool > m_streamer
OutputStreamTool.
StatusCode readAlignTextFile(const std::string &file)
read AlignableTransforms from text file into TDS
(Non-const) Iterator class for DataVector/DataList.
virtual ~TRT_AlignDbSvc()
destructor
::StatusCode StatusCode
StatusCode definition for legacy code.
Eigen::Affine3d Transform3D
Amg::Vector3D transform(Amg::Vector3D &v, Amg::Transform3D &tr)
Transform a point from a Trasformation3D.
const AlignableTransformContainer * getContainer() const
Return the container.
StatusCode createAlignObjects() const
Create an empty set of AlignableTransforms for the GeoModel setup.
std::string m_alignString
alignment string searched for
const Amg::Transform3D getAlignmentTransformL1(Identifier const &ident) const
get Level 1 AlignableTransform for an identifier
This is an interface to a service used to register conditions objects in the Interval of Validity (IO...
StatusCode setAlignTransformL3(Identifier ident, Amg::Transform3D trans)
set Level 3 AlignableTransform for an identifier
virtual Identifier identify() const override final
identifier of this detector element:
ATLAS_NO_CHECK_FILE_THREAD_SAFETY
int barrel_ec(const Identifier &id) const
Values of different levels (failure returns 0)
int straw_layer(const Identifier &id) const
StatusCode streamOutAlignObjects() const
write the alignment objects to output
ServiceHandle< StoreGateSvc > m_detStore
int layer_or_wheel(const Identifier &id) const
StatusCode setAlignTransformL1(Identifier ident, const Amg::Transform3D &trans)
set Level 1 AlignableTransform for an identifier
TRT_DetElementCollection::const_iterator getDetectorElementBegin() const
TRT_DetElementCollection::const_iterator getDetectorElementEnd() const
a Service to manage TRT alignment conditions
void add(ChanNum chanNum)
Adding in channel numbers.
void printCondObjects() const
Output the conditions objects currently in memory.
StatusCode writeStrawAlignTextFile(const std::string &file) const
const TRT_BaseElement * getElement(Identifier id) const
Access Elements Generically---------------------------------------------—.
std::string m_alignroot
root alignment folder
virtual StatusCode initialize()
tool initialize
value_type push_back(value_type pElem)
Add an element to the end of the collection.
Eigen::Matrix< double, 3, 1 > Vector3D
int phi_module(const Identifier &id) const
virtual StatusCode finalize()
tool finalize
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
The Detector Manager for all TRT Detector elements, it acts as the interface to the detector elements...
std::string m_alignDBprefix
StatusCode tweakAlignTransformL3(Identifier ident, Amg::Transform3D trans)
tweak Level 3 AlignableTransform for an identifier
const Amg::Transform3D getAlignmentTransformL2(Identifier const &ident) const
get Level 2 AlignableTransform for an identifier
std::string show_to_string(Identifier id, const IdContext *context=0, char sep='.') const
or provide the printout in string form
#define ATH_MSG_WARNING(x)
ChanAttrListMap::const_iterator const_iterator
Amg::Transform3D CLHEPTransformToEigen(const HepGeom::Transform3D &CLHEPtransf)
Converts a CLHEP-based HepGeom::Transform3D into an Eigen Amg::Transform3D.
HepGeom::Transform3D EigenTransformToCLHEP(const Amg::Transform3D &eigenTransf)
Converts an Eigen-based Amg::Transform3D into a CLHEP-based HepGeom::Transform3D.
StatusCode tweakGlobalFolder(Identifier ident, const Amg::Transform3D &trans)
tweak L1 DB for global folders for an identifier
AlignFolderType m_alignfoldertype
const Amg::Transform3D * getAlignmentTransformL2Ptr(Identifier const &ident) const
get Level L2 Transform for an identifier
ServiceHandle< ITRT_StrawAlignDbSvc > m_trtStrawAlignDbSvc
defines and typedefs for IOVSvc
StatusCode tweakAlignTransformL1(Identifier ident, const Amg::Transform3D &trans)
tweak Level 1 AlignableTransform for an identifier
static std::string intToString(int input)
Convert from an int to a string.
const TRT_ID * m_trtid
trt id helper
static void printTransform(const std::string &thisName, const Amg::Transform3D &transform)
Output the transform to the cout, for debugging.
const Amg::Transform3D getAlignmentTransform(const Identifier &ident, unsigned int level) const
get AlignableTransform for an identifier
bool isOldKey(const std::string &input) const
Returns the true if the input key is from the old endcap scheme.
const DataHandle< AlignableTransformContainer > m_aligncontainerhandle
StatusCode registerAlignObjects(const std::string &tag, int run1, int event1, int run2, int event2) const
register alignment objects with the IoV service
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
StatusCode writeAlignTextFile(const std::string &file) const
write AlignableTransforms to flat text file
Identifier module_id(int barrel_ec, int phi_module, int layer_or_wheel) const
For an individual module phi sector.
static std::string prefixtag(const std::string &key)
Return the prefix tag for a given calibration folder.