ATLAS Offline Software
Loading...
Searching...
No Matches
sTGCAsBuiltData Class Reference

Class holding the sTGC as built conditions data and applying it. More...

#include <sTGCAsBuiltData.h>

Inheritance diagram for sTGCAsBuiltData:
Collaboration diagram for sTGCAsBuiltData:

Classes

struct  Parameters

Public Member Functions

 sTGCAsBuiltData (const Muon::IMuonIdHelperSvc *idHelperSvc)
Amg::Vector2D correctPosition (const Identifier &channelId, const Amg::Vector2D &pos) const
StatusCode setParameters (const Identifier &gasGapId, const Parameters &pars)
bool msgLvl (const MSG::Level lvl) const
 Test the output level.
MsgStream & msg () const
 The standard message stream.
MsgStream & msg (const MSG::Level lvl) const
 The standard message stream.
void setLevel (MSG::Level lvl)
 Change the current logging level.

Private Types

using ParMap = std::unordered_map<Identifier, Parameters>

Private Member Functions

void initMessaging () const
 Initialize our message level and MessageSvc.

Private Attributes

const Muon::IMuonIdHelperSvcm_idHelperSvc {nullptr}
ParMap m_asBuiltData {}
std::string m_nm
 Message source name.
boost::thread_specific_ptr< MsgStream > m_msg_tls
 MsgStream instance (a std::cout like with print-out levels)
std::atomic< IMessageSvc * > m_imsg { nullptr }
 MessageSvc pointer.
std::atomic< MSG::Level > m_lvl { MSG::NIL }
 Current logging level.
std::atomic_flag m_initialized ATLAS_THREAD_SAFE = ATOMIC_FLAG_INIT
 Messaging initialized (initMessaging)

Detailed Description

Class holding the sTGC as built conditions data and applying it.

The model consists of four parameters:

  • offset: shift of the strip layer in the precission coordinate
  • rotation: rotation of the strip plane around the origin of the local coordinate system
  • scale: correction to the pitch of the strips.
  • nonPara: correction to the non parallelism of the strips

The as built parameters are applied in athenas local coordinate system. The parameters are expected in units of um and mrad

Definition at line 27 of file sTGCAsBuiltData.h.

Member Typedef Documentation

◆ ParMap

using sTGCAsBuiltData::ParMap = std::unordered_map<Identifier, Parameters>
private

Definition at line 46 of file sTGCAsBuiltData.h.

Constructor & Destructor Documentation

◆ sTGCAsBuiltData()

sTGCAsBuiltData::sTGCAsBuiltData ( const Muon::IMuonIdHelperSvc * idHelperSvc)

Definition at line 13 of file sTGCAsBuiltData.cxx.

13 :
14 AthMessaging{"sTGCAsBuiltData"},
15 m_idHelperSvc{idHelperSvc} {}
AthMessaging(IMessageSvc *msgSvc, const std::string &name)
Constructor.
const Muon::IMuonIdHelperSvc * m_idHelperSvc

Member Function Documentation

◆ correctPosition()

Amg::Vector2D sTGCAsBuiltData::correctPosition ( const Identifier & channelId,
const Amg::Vector2D & pos ) const

Definition at line 19 of file sTGCAsBuiltData.cxx.

19 {
20 ParMap::const_iterator par_itr = m_asBuiltData.find(m_idHelperSvc->gasGapId(channelId));
21 if(par_itr == m_asBuiltData.end()){
22 ATH_MSG_WARNING("Missing as built parameters for gas gap " << m_idHelperSvc->toString(channelId));
23 return pos;
24 }
25 Amg::Vector2D correctedPos = pos;
26 Parameters pars = par_itr->second;
27 constexpr double convScale = 1.e-3; // parameters are stored in um and mrad therefore dividing by 1000
28
29 // For the QL3 modules described by the legacy (Run 3) geometry EDM the origin of the local frame is shifted with respect to the actual center of the gap.
30 // Therefore a shift is introduced which stabilizes the as built fit which must also be applied here since the parameters are expressed using the actual center of the gap.
31 float shift = (std::fabs(m_idHelperSvc->stationEta(channelId)) == 3 && m_idHelperSvc->stationNameString(channelId) == "STL" ? 24.74 : 0.0);
32 ATH_MSG_VERBOSE("applying as built parameters " << pars);
33
34 correctedPos.x() = pos.x() + (pars.offset * convScale + pars.rotation *convScale * pos.y() + pars.scale*convScale*(pos.x() + shift ) + pars.nonPara * convScale * convScale * (pos.x() + shift )*pos.y());
35 return correctedPos;
36}
#define ATH_MSG_VERBOSE(x)
#define ATH_MSG_WARNING(x)
Eigen::Matrix< double, 2, 1 > Vector2D

◆ initMessaging()

void AthMessaging::initMessaging ( ) const
privateinherited

Initialize our message level and MessageSvc.

This method should only be called once.

Definition at line 39 of file AthMessaging.cxx.

40{
42 // If user did not set an explicit level, set a default
43 if (m_lvl == MSG::NIL) {
44 m_lvl = m_imsg ?
45 static_cast<MSG::Level>( m_imsg.load()->outputLevel(m_nm) ) :
46 MSG::INFO;
47 }
48}
std::string m_nm
Message source name.
std::atomic< IMessageSvc * > m_imsg
MessageSvc pointer.
std::atomic< MSG::Level > m_lvl
Current logging level.
IMessageSvc * getMessageSvc(bool quiet=false)

◆ msg() [1/2]

MsgStream & AthMessaging::msg ( ) const
inlineinherited

The standard message stream.

Returns a reference to the default message stream May not be invoked before sysInitialize() has been invoked.

Definition at line 163 of file AthMessaging.h.

164{
165 MsgStream* ms = m_msg_tls.get();
166 if (!ms) {
167 if (!m_initialized.test_and_set()) initMessaging();
168 ms = new MsgStream(m_imsg,m_nm);
169 m_msg_tls.reset( ms );
170 }
171
172 ms->setLevel (m_lvl);
173 return *ms;
174}
boost::thread_specific_ptr< MsgStream > m_msg_tls
MsgStream instance (a std::cout like with print-out levels)
void initMessaging() const
Initialize our message level and MessageSvc.

◆ msg() [2/2]

MsgStream & AthMessaging::msg ( const MSG::Level lvl) const
inlineinherited

The standard message stream.

Returns a reference to the default message stream May not be invoked before sysInitialize() has been invoked.

Definition at line 178 of file AthMessaging.h.

179{ return msg() << lvl; }
MsgStream & msg() const
The standard message stream.

◆ msgLvl()

bool AthMessaging::msgLvl ( const MSG::Level lvl) const
inlineinherited

Test the output level.

Parameters
lvlThe message level to test against
Returns
boolean Indicating if messages at given level will be printed
Return values
trueMessages at level "lvl" will be printed

Definition at line 151 of file AthMessaging.h.

152{
153 if (m_lvl <= lvl) {
154 msg() << lvl;
155 return true;
156 } else {
157 return false;
158 }
159}

◆ setLevel()

void AthMessaging::setLevel ( MSG::Level lvl)
inherited

Change the current logging level.

Use this rather than msg().setLevel() for proper operation with MT.

Definition at line 28 of file AthMessaging.cxx.

29{
30 m_lvl = lvl;
31}

◆ setParameters()

StatusCode sTGCAsBuiltData::setParameters ( const Identifier & gasGapId,
const Parameters & pars )

Definition at line 39 of file sTGCAsBuiltData.cxx.

39 {
40 const Identifier gasGapId = m_idHelperSvc->gasGapId(channelId);
41 auto insert_itr = m_asBuiltData.insert(std::make_pair(gasGapId, pars));
42 if (!insert_itr.second) {
43 ATH_MSG_ERROR("As built parameters for gasGap "<<m_idHelperSvc->toStringGasGap(gasGapId)
44 <<" has already been stored ");
45 return StatusCode::FAILURE;
46 }
47 return StatusCode::SUCCESS;
48}
#define ATH_MSG_ERROR(x)

Member Data Documentation

◆ ATLAS_THREAD_SAFE

std::atomic_flag m_initialized AthMessaging::ATLAS_THREAD_SAFE = ATOMIC_FLAG_INIT
mutableprivateinherited

Messaging initialized (initMessaging)

Definition at line 141 of file AthMessaging.h.

◆ m_asBuiltData

ParMap sTGCAsBuiltData::m_asBuiltData {}
private

Definition at line 47 of file sTGCAsBuiltData.h.

47{};

◆ m_idHelperSvc

const Muon::IMuonIdHelperSvc* sTGCAsBuiltData::m_idHelperSvc {nullptr}
private

Definition at line 45 of file sTGCAsBuiltData.h.

45{nullptr};

◆ m_imsg

std::atomic<IMessageSvc*> AthMessaging::m_imsg { nullptr }
mutableprivateinherited

MessageSvc pointer.

Definition at line 135 of file AthMessaging.h.

135{ nullptr };

◆ m_lvl

std::atomic<MSG::Level> AthMessaging::m_lvl { MSG::NIL }
mutableprivateinherited

Current logging level.

Definition at line 138 of file AthMessaging.h.

138{ MSG::NIL };

◆ m_msg_tls

boost::thread_specific_ptr<MsgStream> AthMessaging::m_msg_tls
mutableprivateinherited

MsgStream instance (a std::cout like with print-out levels)

Definition at line 132 of file AthMessaging.h.

◆ m_nm

std::string AthMessaging::m_nm
privateinherited

Message source name.

Definition at line 129 of file AthMessaging.h.


The documentation for this class was generated from the following files: