ATLAS Offline Software
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
Muon::MmRdoToPrepDataToolMT Class Reference

#include <MmRdoToPrepDataToolMT.h>

Inheritance diagram for Muon::MmRdoToPrepDataToolMT:
Collaboration diagram for Muon::MmRdoToPrepDataToolMT:

Public Member Functions

 MmRdoToPrepDataToolMT (const std::string &, const std::string &, const IInterface *)
 
virtual ~MmRdoToPrepDataToolMT ()=default
 default destructor More...
 
virtual StatusCode initialize () override
 standard Athena-Algorithm method More...
 
virtual StatusCode decode (const EventContext &ctx, const std::vector< IdentifierHash > &idVect) const override
 Decode method - declared in Muon::IMuonRdoToPrepDataTool. More...
 
virtual StatusCode decode (const EventContext &ctx, const std::vector< uint32_t > &robIds) const override
 
virtual StatusCode provideEmptyContainer (const EventContext &ctx) const override
 
StatusCode processCollection (const EventContext &ctx, Muon::MMPrepDataContainer *mmPrepDataContainer, xAOD::MMClusterContainer *xAODContainer, const std::vector< IdentifierHash > &idsToDecode, const MM_RawDataCollection *rdoColl) const
 

Protected Member Functions

Muon::MMPrepDataContainersetupMM_PrepDataContainer (const EventContext &ctx) const
 
xAOD::MMClusterContainersetupxAODPrepDataContainer (SG::WriteHandle< xAOD::MMClusterContainer > &outputContainer) const
 
const MM_RawDataContainergetRdoContainer (const EventContext &ctx) const
 
void processRDOContainer (const EventContext &ctx, Muon::MMPrepDataContainer *mmPrepDataContainer, xAOD::MMClusterContainer *xAODContainer, const std::vector< IdentifierHash > &idsToDecode) const
 

Protected Attributes

SG::ReadCondHandleKey< MuonGM::MuonDetectorManagerm_muDetMgrKey
 
ServiceHandle< Muon::IMuonIdHelperSvcm_idHelperSvc
 
SG::WriteHandleKey< Muon::MMPrepDataContainerm_writeKey
 MdtPrepRawData containers. More...
 
SG::ReadHandleKey< MM_RawDataContainerm_readKey
 
SG::UpdateHandleKey< MMPrepDataCollection_Cachem_updateKey
 This is the key for the cache for the MM PRD containers, can be empty. More...
 
Gaudi::Property< bool > m_merge {this, "MergePrds", true}
 
ToolHandle< IMMClusterBuilderToolm_clusterBuilderTool
 
ToolHandle< INSWCalibToolm_calibTool {this, "NSWCalibTool", ""}
 
Gaudi::Property< float > m_singleStripChargeCut
 
SG::WriteHandleKey< xAOD::MMClusterContainerm_xAODKey
 

Detailed Description

Definition at line 22 of file MmRdoToPrepDataToolMT.h.

Constructor & Destructor Documentation

◆ MmRdoToPrepDataToolMT()

Muon::MmRdoToPrepDataToolMT::MmRdoToPrepDataToolMT ( const std::string &  t,
const std::string &  n,
const IInterface *  p 
)

Definition at line 26 of file MmRdoToPrepDataToolMT.cxx.

29  : base_class(t, n, p) {}

◆ ~MmRdoToPrepDataToolMT()

virtual Muon::MmRdoToPrepDataToolMT::~MmRdoToPrepDataToolMT ( )
virtualdefault

default destructor

Member Function Documentation

◆ decode() [1/2]

StatusCode Muon::MmRdoToPrepDataToolMT::decode ( const EventContext &  ctx,
const std::vector< IdentifierHash > &  idVect 
) const
overridevirtual

Decode method - declared in Muon::IMuonRdoToPrepDataTool.

Definition at line 268 of file MmRdoToPrepDataToolMT.cxx.

269  {
270 
271  // is idVect a right thing to use here? to be reviewed maybe
272  ATH_MSG_DEBUG("Size of the RDO container to be decoded: " << idVect.size());
273 
274  MMPrepDataContainer* mmPrepDataContainer = setupMM_PrepDataContainer(ctx);
275 
276  if (!mmPrepDataContainer) {
277  return StatusCode::FAILURE;
278  }
279  xAOD::MMClusterContainer* xAODContainer{nullptr};
280  if (!m_xAODKey.empty()) {
281  SG::WriteHandle outputContainer{m_xAODKey, ctx};
282  ATH_CHECK(outputContainer.recordNonConst(std::make_unique<xAOD::MMClusterContainer>(),
283  std::make_unique<xAOD::MMClusterAuxContainer>()));
284  xAODContainer = outputContainer.ptr();
285  }
286 
287  processRDOContainer(ctx, mmPrepDataContainer, xAODContainer, idVect);
288 
289  return StatusCode::SUCCESS;
290 }

◆ decode() [2/2]

StatusCode Muon::MmRdoToPrepDataToolMT::decode ( const EventContext &  ctx,
const std::vector< uint32_t > &  robIds 
) const
overridevirtual

Definition at line 292 of file MmRdoToPrepDataToolMT.cxx.

293  {
294  ATH_MSG_FATAL("ROB based decoding is not supported....");
295  return StatusCode::FAILURE;
296 }

◆ getRdoContainer()

const MM_RawDataContainer * Muon::MmRdoToPrepDataToolMT::getRdoContainer ( const EventContext &  ctx) const
protected

Definition at line 231 of file MmRdoToPrepDataToolMT.cxx.

231  {
232  auto rdoContainerHandle = SG::makeHandle(m_readKey, ctx);
233  if (rdoContainerHandle.isValid()) {
234  ATH_MSG_DEBUG("MM_getRdoContainer success");
235  return rdoContainerHandle.cptr();
236  }
237  ATH_MSG_WARNING("Retrieval of MM_RawDataContainer failed !");
238 
239  return nullptr;
240 }

◆ initialize()

StatusCode Muon::MmRdoToPrepDataToolMT::initialize ( )
overridevirtual

standard Athena-Algorithm method

Definition at line 31 of file MmRdoToPrepDataToolMT.cxx.

31  {
32  ATH_MSG_DEBUG(" in initialize()");
33  ATH_CHECK(m_idHelperSvc.retrieve());
34  // check if the initialization of the data container is success
35  ATH_CHECK(m_writeKey.initialize());
36  ATH_CHECK(m_readKey.initialize());
38  ATH_CHECK(m_calibTool.retrieve());
39  ATH_CHECK(m_updateKey.initialize(!m_updateKey.key().empty()));
40  ATH_CHECK(m_xAODKey.initialize(!m_xAODKey.empty()));
41  return StatusCode::SUCCESS;
42 }

◆ processCollection()

StatusCode Muon::MmRdoToPrepDataToolMT::processCollection ( const EventContext &  ctx,
Muon::MMPrepDataContainer mmPrepDataContainer,
xAOD::MMClusterContainer xAODContainer,
const std::vector< IdentifierHash > &  idsToDecode,
const MM_RawDataCollection rdoColl 
) const

reconstruct the clusters

Definition at line 44 of file MmRdoToPrepDataToolMT.cxx.

48  {
49  ATH_MSG_DEBUG(" ***************** Start of process MM Collection");
50  const MmIdHelper& id_helper = m_idHelperSvc->mmIdHelper();
51  // protect for large splashes
52  bool merge = m_merge || rdoColl->size() > 100;
53 
54  const IdentifierHash hash = rdoColl->identifierHash();
55 
56  // check if we actually want to decode this RDO collection
57  if (!idsToDecode.empty() and std::find(idsToDecode.begin(), idsToDecode.end(),
58  hash) == idsToDecode.end()) {
59  ATH_MSG_DEBUG("Hash ID " << hash << " not in input list, ignore");
60  return StatusCode::SUCCESS;
61  } else
62  ATH_MSG_DEBUG("Going to decode " << hash);
63 
64  // check if the collection already exists, otherwise add it
65  if (mmPrepDataContainer->indexFindPtr(hash) != nullptr) {
66 
67  ATH_MSG_DEBUG("In processCollection: collection already contained in the MM PrepData container");
68  return StatusCode::SUCCESS;
69  }
70 
71  // Get write handle for this collection
72  MMPrepDataContainer::IDC_WriteHandle lock = mmPrepDataContainer->getWriteHandle(hash);
73  // Check if collection already exists (via the cache, i.e. in online trigger
74  // mode)
75  if (lock.OnlineAndPresentInAnotherView()) {
76  ATH_MSG_DEBUG("In processCollection: collection already available in the MM PrepData container (via cache)");
77  return StatusCode::SUCCESS;
78  }
79  auto prdColl = std::make_unique<MMPrepDataCollection>(hash);
80 
81  // set the offline identifier of the collection Id
82  IdContext context = id_helper.module_context();
83  Identifier moduleId{};
84  if (id_helper.get_id(hash, moduleId, &context) != 0) {
85  ATH_MSG_ERROR("Could not convert the hash Id: " << hash << " to identifier");
86  } else {
87  ATH_MSG_DEBUG(" dump moduleId " << moduleId);
88  prdColl->setIdentifier(moduleId);
89  }
90 
91  // MuonDetectorManager from the conditions store
93  if (!MuonDetMgr.isValid()) {
94  ATH_MSG_ERROR("Null pointer to the read MuonDetectorManager conditions object");
95  return StatusCode::FAILURE;
96  }
97 
98  std::vector<MMPrepData> MMprds;
99  // convert the RDO collection to a PRD collection
100  for (const MM_RawData* rdo : *rdoColl) {
101  ATH_MSG_DEBUG("Adding a new MM PrepRawData");
102 
103  const Identifier rdoId = rdo->identify();
104  ATH_MSG_DEBUG(" dump rdo " << m_idHelperSvc->toString(rdoId));
105 
106  int channel = rdo->channel();
107  std::vector<Identifier> rdoList;
108  Identifier prdId = id_helper.channelID(rdoId, id_helper.multilayer(rdoId), id_helper.gasGap(rdoId), channel);
109  ATH_MSG_DEBUG(" channel RDO " << channel << " channel from rdoID " << id_helper.channel(rdoId));
110  rdoList.push_back(prdId);
111 
112  // get the local and global positions
113  const MuonGM::MMReadoutElement* detEl = MuonDetMgr->getMMReadoutElement(prdId);
115 
116  bool getLocalPos = detEl->stripPosition(prdId, localPos);
117  if (!getLocalPos) {
118  if (msgLvl(MSG::DEBUG)) { // We should still keep this a warning and fix it properly but silence it for now (ATLASRECTS-7520)
119  ATH_MSG_WARNING("Could not get the local strip position for "<< m_idHelperSvc->toString(prdId));
120  }
121  continue;
122  }
123 
124  Amg::Vector3D globalPos{Amg::Vector3D::Zero()};
125  bool getGlobalPos = detEl->stripGlobalPosition(prdId, globalPos);
126  if (!getGlobalPos) {
127  ATH_MSG_WARNING("Could not get the global strip position for MM");
128  continue;
129  }
130  NSWCalib::CalibratedStrip calibStrip;
131  ATH_CHECK(m_calibTool->calibrateStrip(ctx, rdo, calibStrip));
132  if (calibStrip.charge < 0) {
133  if (!hitNegativeCharge || msgLvl(MSG::DEBUG)) {
134  ATH_MSG_WARNING("One MM RDO or more, such as one with pdo = "<< rdo->charge()
135  << " counts, corresponds to a negative charge ("<< calibStrip.charge << "). Skipping these RDOs");
136  hitNegativeCharge = true;
137  }
138  continue;
139  }
140 
141  Trk::LocalDirection localDir;
142  const Trk::PlaneSurface& psurf = detEl->surface(prdId);
144  psurf.globalToLocal(globalPos, globalPos, lpos);
145  psurf.globalToLocalDirection(globalPos, localDir);
146 
147  ATH_MSG_DEBUG(" Surface centre x " << Amg::toString(psurf.center()));
148  ATH_MSG_DEBUG(" localPos x " <<Amg::toString(localPos)<< " localPos y " << Amg::toString(lpos));
149 
150  Amg::Vector3D gdir = psurf.transform().linear() * Amg::Vector3D::UnitY();
151  ATH_MSG_DEBUG(" MM detector surface direction phi "<< gdir.phi() << " global radius hit " << globalPos.perp()
152  << " phi pos " << globalPos.phi() << " global z "<< globalPos.z());
153 
154  auto cov = Amg::MatrixX(2, 2);
155  cov.setIdentity();
156  (cov)(0, 0) = calibStrip.resTransDistDrift;
157  (cov)(1, 1) = calibStrip.resLongDistDrift;
158  localPos.x() += calibStrip.dx;
159 
160  if (!merge) {
161  // storage will be handeled by Store Gate
162  auto mpd = std::make_unique<MMPrepData>(prdId, hash,
163  std::move(localPos), std::move(rdoList), std::move(cov),
164  detEl,
165  calibStrip.time, calibStrip.charge, calibStrip.distDrift);
167 
168  prdColl->push_back(std::move(mpd));
169 
170  } else {
171  if (calibStrip.charge < m_singleStripChargeCut) {
172  continue;
173  }
174  MMPrepData mpd(prdId, hash, std::move(localPos), std::move(rdoList),
175  std::move(cov), detEl, calibStrip.time, calibStrip.charge,
176  calibStrip.distDrift);
177  // set the hash of the MMPrepData such that it contains the correct value
178  // in case it gets used in SimpleMMClusterBuilderTool::getClusters
179  mpd.setHashAndIndex(hash, 0);
181  MMprds.push_back(std::move(mpd));
182  }
183  }
184 
185  if (merge) {
186  std::vector<std::unique_ptr<MMPrepData>> clusters;
187 
189  ATH_CHECK(m_clusterBuilderTool->getClusters(ctx, std::move(MMprds), clusters));
190 
191  for (std::unique_ptr<MMPrepData>& prdN : clusters) {
192  prdN->setHashAndIndex(prdColl->identifyHash(), prdColl->size());
193  prdColl->push_back(std::move(prdN));
194  }
195  } // merge
196 
197  if (xAODContainer) {
198  // Lambda to fill xprd from prd
199  std::vector<const MMPrepData*> sortMe{prdColl->begin(), prdColl->end()};
200  std::ranges::sort(sortMe, IdentifierByDetElSorter{m_idHelperSvc.get()});
201  for (const MMPrepData* prd : sortMe) {
202  xAOD::MMCluster* cluster{xAODContainer->push_back(std::make_unique<xAOD::MMCluster>())};
203  cluster->setIdentifier(prd->identify().get_compact());
204  cluster->setMeasurement(m_idHelperSvc->detElementHash(prd->identify()),
205  xAOD::MeasVector<1>{prd->localPosition().x()},
206  xAOD::MeasMatrix<1>{prd->localCovariance()(0, 0)});
207  cluster->setGasGap(id_helper.gasGap(prd->identify()));
208  cluster->setChannelNumber(id_helper.channel(prd->identify()));
209  cluster->setTime(prd->time());
210  cluster->setCharge(prd->charge());
211  cluster->setDriftDist(prd->driftDist());
212  cluster->setAngle(prd->angle());
213  cluster->setChiSqProb(prd->chisqProb());
214  cluster->setAuthor(prd->author());
215  cluster->setQuality(prd->quality());
216  cluster->setStripNumbers(prd->stripNumbers());
217  cluster->setStripTimes(prd->stripTimes());
218  cluster->setStripCharges(prd->stripCharges());
219  cluster->setStripDriftDist(prd->stripDriftDist());
220  cluster->setStripDriftErrors(prd->stripDriftErrors());
221  }
222  }
223  // now write the collection
224  ATH_CHECK(lock.addOrDelete(std::move(prdColl)));
225  ATH_MSG_DEBUG("PRD hash " << hash << " has been moved to container");
226 
227  return StatusCode::SUCCESS;
228 }

◆ processRDOContainer()

void Muon::MmRdoToPrepDataToolMT::processRDOContainer ( const EventContext &  ctx,
Muon::MMPrepDataContainer mmPrepDataContainer,
xAOD::MMClusterContainer xAODContainer,
const std::vector< IdentifierHash > &  idsToDecode 
) const
protected

Definition at line 242 of file MmRdoToPrepDataToolMT.cxx.

245  {
246  ATH_MSG_DEBUG("In processRDOContainer");
247  const MM_RawDataContainer* rdoContainer = getRdoContainer(ctx);
248  if (!rdoContainer) {
249  return;
250  }
251 
252  for (const MM_RawDataCollection* rdoColl : *rdoContainer) {
253 
254  if (rdoColl->empty()){
255  continue;
256  }
257  ATH_MSG_DEBUG("New RDO collection with " << rdoColl->size() << "MM Hits");
258 
259  if (processCollection(ctx, mmPrepDataContainer, xAODContainer, idsToDecode, rdoColl).isFailure()) {
261  "processCsm returns a bad StatusCode - keep going for new data "
262  "collections in this event");
263  }
264  }
265 }

◆ provideEmptyContainer()

StatusCode Muon::MmRdoToPrepDataToolMT::provideEmptyContainer ( const EventContext &  ctx) const
overridevirtual

Definition at line 297 of file MmRdoToPrepDataToolMT.cxx.

297  {
298  if (!m_xAODKey.empty()) {
299  SG::WriteHandle writeHandle{m_xAODKey, ctx};
300  ATH_CHECK(writeHandle.record(std::make_unique<xAOD::MMClusterContainer>(),
301  std::make_unique<xAOD::MMClusterAuxContainer>()));
302  }
303 
304  return setupMM_PrepDataContainer(ctx) ? StatusCode::SUCCESS
305  : StatusCode::FAILURE;
306 }

◆ setupMM_PrepDataContainer()

MMPrepDataContainer * Muon::MmRdoToPrepDataToolMT::setupMM_PrepDataContainer ( const EventContext &  ctx) const
protected

Definition at line 309 of file MmRdoToPrepDataToolMT.cxx.

309  {
310 
311  SG::WriteHandle handle{m_writeKey, ctx};
312  if (m_updateKey.key().empty()) {
313  // No external cache, just record the container
315  handle.record(std::make_unique<MMPrepDataContainer>(
316  m_idHelperSvc->mmIdHelper().module_hash_max()));
317 
318  if (status.isFailure() || !handle.isValid()) {
320  "Could not record container of MicroMega PrepData Container at "
321  << m_writeKey.key());
322  return nullptr;
323  }
324  } else {
325  // use the cache to get the container
327  if (!update.isValid()) {
328  ATH_MSG_FATAL("Invalid UpdateHandle " << m_updateKey.key());
329  return nullptr;
330  }
331  StatusCode status = handle.record(std::make_unique<MMPrepDataContainer>(update.ptr()));
332  if (status.isFailure() || !handle.isValid()) {
334  "Could not record container of MM PrepData Container using cache "
335  << m_updateKey.key() << " - "
336  << m_writeKey.key());
337  return nullptr;
338  }
339  ATH_MSG_DEBUG("Created container using cache for "
340  << m_updateKey.key());
341  }
342  return handle.ptr();
343 }

◆ setupxAODPrepDataContainer()

xAOD::MMClusterContainer* Muon::MmRdoToPrepDataToolMT::setupxAODPrepDataContainer ( SG::WriteHandle< xAOD::MMClusterContainer > &  outputContainer) const
protected

Member Data Documentation

◆ m_calibTool

ToolHandle<INSWCalibTool> Muon::MmRdoToPrepDataToolMT::m_calibTool {this, "NSWCalibTool", ""}
protected

Definition at line 82 of file MmRdoToPrepDataToolMT.h.

◆ m_clusterBuilderTool

ToolHandle<IMMClusterBuilderTool> Muon::MmRdoToPrepDataToolMT::m_clusterBuilderTool
protected
Initial value:
{
this, "ClusterBuilderTool",
"Muon::SimpleMMClusterBuilderTool/SimpleMMClusterBuilderTool"}

Definition at line 79 of file MmRdoToPrepDataToolMT.h.

◆ m_idHelperSvc

ServiceHandle<Muon::IMuonIdHelperSvc> Muon::MmRdoToPrepDataToolMT::m_idHelperSvc
protected
Initial value:
{
this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"}

Definition at line 64 of file MmRdoToPrepDataToolMT.h.

◆ m_merge

Gaudi::Property<bool> Muon::MmRdoToPrepDataToolMT::m_merge {this, "MergePrds", true}
protected

Definition at line 77 of file MmRdoToPrepDataToolMT.h.

◆ m_muDetMgrKey

SG::ReadCondHandleKey<MuonGM::MuonDetectorManager> Muon::MmRdoToPrepDataToolMT::m_muDetMgrKey
protected
Initial value:
{
this, "DetectorManagerKey", "MuonDetectorManager",
"Key of input MuonDetectorManager condition data"}

Definition at line 60 of file MmRdoToPrepDataToolMT.h.

◆ m_readKey

SG::ReadHandleKey<MM_RawDataContainer> Muon::MmRdoToPrepDataToolMT::m_readKey
protected
Initial value:
{
this, "InputCollection", "MMRDO"}

Definition at line 70 of file MmRdoToPrepDataToolMT.h.

◆ m_singleStripChargeCut

Gaudi::Property<float> Muon::MmRdoToPrepDataToolMT::m_singleStripChargeCut
protected
Initial value:
{
this, "singleStripChargeCut",
FLT_MIN }

Definition at line 86 of file MmRdoToPrepDataToolMT.h.

◆ m_updateKey

SG::UpdateHandleKey<MMPrepDataCollection_Cache> Muon::MmRdoToPrepDataToolMT::m_updateKey
protected
Initial value:
{
this, "PrdCacheKey", "",
"Optional external cache for the MM PRD container"}

This is the key for the cache for the MM PRD containers, can be empty.

Definition at line 74 of file MmRdoToPrepDataToolMT.h.

◆ m_writeKey

SG::WriteHandleKey<Muon::MMPrepDataContainer> Muon::MmRdoToPrepDataToolMT::m_writeKey
protected
Initial value:
{
this, "OutputCollection", "MM_Measurements"}

MdtPrepRawData containers.

Definition at line 68 of file MmRdoToPrepDataToolMT.h.

◆ m_xAODKey

SG::WriteHandleKey<xAOD::MMClusterContainer> Muon::MmRdoToPrepDataToolMT::m_xAODKey
protected
Initial value:
{
this, "xAODKey", "",
"If empty, do not produce xAOD, otherwise this is the key of the output "
"xAOD MDT PRD container"}

Definition at line 89 of file MmRdoToPrepDataToolMT.h.


The documentation for this class was generated from the following files:
MuonGM::MMReadoutElement::stripPosition
virtual bool stripPosition(const Identifier &id, Amg::Vector2D &pos) const override final
strip position – local or global If the strip number is outside the range of valid strips,...
Definition: MMReadoutElement.h:207
Muon::MmRdoToPrepDataToolMT::m_muDetMgrKey
SG::ReadCondHandleKey< MuonGM::MuonDetectorManager > m_muDetMgrKey
Definition: MmRdoToPrepDataToolMT.h:60
Trk::PlaneSurface::globalToLocal
virtual bool globalToLocal(const Amg::Vector3D &glob, const Amg::Vector3D &mom, Amg::Vector2D &loc) const override final
Specified for PlaneSurface: GlobalToLocal method without dynamic memory allocation - boolean checks i...
Definition: PlaneSurface.cxx:213
Muon::MmRdoToPrepDataToolMT::processCollection
StatusCode processCollection(const EventContext &ctx, Muon::MMPrepDataContainer *mmPrepDataContainer, xAOD::MMClusterContainer *xAODContainer, const std::vector< IdentifierHash > &idsToDecode, const MM_RawDataCollection *rdoColl) const
Definition: MmRdoToPrepDataToolMT.cxx:44
NSWCalib::CalibratedStrip::time
double time
Definition: INSWCalibTool.h:22
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
Amg::MatrixX
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic > MatrixX
Dynamic Matrix - dynamic allocation.
Definition: EventPrimitives.h:27
NSWCalib::CalibratedStrip::charge
double charge
Definition: INSWCalibTool.h:21
IdentifiableContainerMT::IDC_WriteHandle
friend class IDC_WriteHandle
Definition: IdentifiableContainerMT.h:140
plotting.yearwise_efficiency.channel
channel
Definition: yearwise_efficiency.py:24
MuonIdHelper::get_id
virtual int get_id(const IdentifierHash &hash_id, Identifier &id, const IdContext *context=0) const override
Create compact id from hash id (return == 0 for OK)
Definition: MuonIdHelper.cxx:70
Trk::PrepRawDataType::MMPrepData
@ MMPrepData
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
find
std::string find(const std::string &s)
return a remapped string
Definition: hcg.cxx:135
xAOD::MMCluster_v1
Definition: MMCluster_v1.h:20
NSWCalib::CalibratedStrip::distDrift
double distDrift
Definition: INSWCalibTool.h:24
IdentifiableContainerMT::getWriteHandle
IDC_WriteHandle getWriteHandle(IdentifierHash hash)
Definition: IdentifiableContainerMT.h:248
Muon::MmRdoToPrepDataToolMT::m_idHelperSvc
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
Definition: MmRdoToPrepDataToolMT.h:64
NSWCalib::CalibratedStrip::dx
double dx
Definition: INSWCalibTool.h:27
Amg::Vector2D
Eigen::Matrix< double, 2, 1 > Vector2D
Definition: GeoPrimitives.h:48
Muon::MmRdoToPrepDataToolMT::m_clusterBuilderTool
ToolHandle< IMMClusterBuilderTool > m_clusterBuilderTool
Definition: MmRdoToPrepDataToolMT.h:79
Muon::MMPrepDataContainer
MuonPrepDataContainerT< MMPrepData > MMPrepDataContainer
Definition: MuonPrepDataContainer.h:100
plotBeamSpotVxVal.cov
cov
Definition: plotBeamSpotVxVal.py:201
NSWCalib::CalibratedStrip::resTransDistDrift
double resTransDistDrift
Definition: INSWCalibTool.h:25
Muon::MmRdoToPrepDataToolMT::processRDOContainer
void processRDOContainer(const EventContext &ctx, Muon::MMPrepDataContainer *mmPrepDataContainer, xAOD::MMClusterContainer *xAODContainer, const std::vector< IdentifierHash > &idsToDecode) const
Definition: MmRdoToPrepDataToolMT.cxx:242
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
Trk::Surface::center
const Amg::Vector3D & center() const
Returns the center position of the Surface.
NSWCalib::CalibratedStrip::resLongDistDrift
double resLongDistDrift
Definition: INSWCalibTool.h:26
MuonGM::MuonClusterReadoutElement::surface
virtual const Trk::PlaneSurface & surface() const override
access to chamber surface (phi orientation), uses the first gas gap
Definition: MuonClusterReadoutElement.h:123
Muon::MmRdoToPrepDataToolMT::m_updateKey
SG::UpdateHandleKey< MMPrepDataCollection_Cache > m_updateKey
This is the key for the cache for the MM PRD containers, can be empty.
Definition: MmRdoToPrepDataToolMT.h:74
MmIdHelper::multilayer
int multilayer(const Identifier &id) const
Definition: MmIdHelper.cxx:796
SG::makeHandle
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
Definition: ReadCondHandle.h:270
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
Amg::toString
std::string toString(const Translation3D &translation, int precision=4)
GeoPrimitvesToStringConverter.
Definition: GeoPrimitivesToStringConverter.h:40
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
beamspotman.n
n
Definition: beamspotman.py:731
Muon::MmRdoToPrepDataToolMT::m_xAODKey
SG::WriteHandleKey< xAOD::MMClusterContainer > m_xAODKey
Definition: MmRdoToPrepDataToolMT.h:89
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
MuonGM::MMReadoutElement::stripGlobalPosition
bool stripGlobalPosition(const Identifier &id, Amg::Vector3D &gpos) const
Definition: MMReadoutElement.h:280
Muon::MMPrepData::Author::RDOTOPRDConverter
@ RDOTOPRDConverter
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
Trk::PlaneSurface::globalToLocalDirection
void globalToLocalDirection(const Amg::Vector3D &glodir, Trk::LocalDirection &locdir) const
This method transforms the global direction to a local direction wrt the plane.
Definition: PlaneSurface.cxx:260
NSWCalib::CalibratedStrip
Definition: INSWCalibTool.h:20
DataVector
Derived DataVector<T>.
Definition: DataVector.h:794
Trk::LocalDirection
represents the three-dimensional global direction with respect to a planar surface frame.
Definition: LocalDirection.h:81
xAOD::MeasVector
Eigen::Matrix< float, N, 1 > MeasVector
Abrivation of the Matrix & Covariance definitions.
Definition: MeasurementDefs.h:52
Muon::MmRdoToPrepDataToolMT::getRdoContainer
const MM_RawDataContainer * getRdoContainer(const EventContext &ctx) const
Definition: MmRdoToPrepDataToolMT.cxx:231
Muon::MmRdoToPrepDataToolMT::m_singleStripChargeCut
Gaudi::Property< float > m_singleStripChargeCut
Definition: MmRdoToPrepDataToolMT.h:86
SG::UpdateHandle
Definition: UpdateHandle.h:94
DataVector::push_back
value_type push_back(value_type pElem)
Add an element to the end of the collection.
SG::CondHandleKey::initialize
StatusCode initialize(bool used=true)
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
Muon::MmRdoToPrepDataToolMT::m_merge
Gaudi::Property< bool > m_merge
Definition: MmRdoToPrepDataToolMT.h:77
IdentifiableContainerMT::indexFindPtr
virtual const T * indexFindPtr(IdentifierHash hashId) const override final
return pointer on the found entry or null if out of range using hashed index - fast version,...
Definition: IdentifiableContainerMT.h:289
SG::WriteHandle
Definition: StoreGate/StoreGate/WriteHandle.h:76
MmIdHelper::channel
int channel(const Identifier &id) const override
Definition: MmIdHelper.cxx:800
MmIdHelper
Definition: MmIdHelper.h:54
MmIdHelper::gasGap
int gasGap(const Identifier &id) const override
get the hashes
Definition: MmIdHelper.cxx:798
CaloCondBlobAlgs_fillNoiseFromASCII.hash
dictionary hash
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:109
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
Trk::PlaneSurface
Definition: PlaneSurface.h:64
DEBUG
#define DEBUG
Definition: page_access.h:11
RunTileMonitoring.clusters
clusters
Definition: RunTileMonitoring.py:133
MuonIdHelper::module_context
IdContext module_context() const
id for module
Definition: MuonIdHelper.cxx:731
MuonGM::MMReadoutElement
An MMReadoutElement corresponds to a single STGC module; therefore typicaly a barrel muon station con...
Definition: MMReadoutElement.h:25
merge.status
status
Definition: merge.py:17
xAOD::MeasMatrix
Eigen::Matrix< float, N, N > MeasMatrix
Definition: MeasurementDefs.h:54
Muon::MmRdoToPrepDataToolMT::setupMM_PrepDataContainer
Muon::MMPrepDataContainer * setupMM_PrepDataContainer(const EventContext &ctx) const
Definition: MmRdoToPrepDataToolMT.cxx:309
MmIdHelper::channelID
Identifier channelID(int stationName, int stationEta, int stationPhi, int multilayer, int gasGap, int channel) const
Definition: MmIdHelper.cxx:736
Muon::MmRdoToPrepDataToolMT::m_writeKey
SG::WriteHandleKey< Muon::MMPrepDataContainer > m_writeKey
MdtPrepRawData containers.
Definition: MmRdoToPrepDataToolMT.h:68
Trk::Surface::transform
const Amg::Transform3D & transform() const
Returns HepGeom::Transform3D by reference.
IdContext
This class saves the "context" of an expanded identifier (ExpandedIdentifier) for compact or hash ver...
Definition: IdContext.h:26
WriteBchToCool.update
update
Definition: WriteBchToCool.py:67
Muon::MmRdoToPrepDataToolMT::m_calibTool
ToolHandle< INSWCalibTool > m_calibTool
Definition: MmRdoToPrepDataToolMT.h:82
merge
Definition: merge.py:1
generate::Zero
void Zero(TH1D *hin)
Definition: generate.cxx:32
Muon::MmRdoToPrepDataToolMT::m_readKey
SG::ReadHandleKey< MM_RawDataContainer > m_readKey
Definition: MmRdoToPrepDataToolMT.h:70
Identifier
Definition: IdentifierFieldParser.cxx:14