ATLAS Offline Software
Loading...
Searching...
No Matches
Muon::TgcPrepDataReplicationTool3BCtoAllBC Class Reference

#include <TgcPrepDataReplicationTool3BCtoAllBC.h>

Inheritance diagram for Muon::TgcPrepDataReplicationTool3BCtoAllBC:
Collaboration diagram for Muon::TgcPrepDataReplicationTool3BCtoAllBC:

Public Member Functions

 TgcPrepDataReplicationTool3BCtoAllBC (const std::string &t, const std::string &n, const IInterface *p)
 Constructor.
virtual ~TgcPrepDataReplicationTool3BCtoAllBC ()=default
 Destructor.
virtual StatusCode initialize () override
virtual StatusCode replicate (const EventContext &ctx) const override

Private Types

enum  {
  BC_PREVIOUS =0 , BC_CURRENT , BC_NEXT , BC_ALL ,
  BC_NUM
}

Private Member Functions

StatusCode convert3BCtoAllBC (const EventContext &ctx) const

Private Attributes

ServiceHandle< Muon::IMuonIdHelperSvcm_idHelperSvc {this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"}
SG::ReadHandleKeyArray< TgcPrepDataContainerm_3BCKeys {this, "BC3Keys", {"dummy", "dummy", "dummy"}}
SG::WriteHandleKey< TgcPrepDataContainerm_AllBCKey {this, "AllBCKey", "TGC_MeasurementsAllBCs"}

Detailed Description

Definition at line 18 of file TgcPrepDataReplicationTool3BCtoAllBC.h.

Member Enumeration Documentation

◆ anonymous enum

Constructor & Destructor Documentation

◆ TgcPrepDataReplicationTool3BCtoAllBC()

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

Constructor.

Definition at line 13 of file TgcPrepDataReplicationTool3BCtoAllBC.cxx.

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

◆ ~TgcPrepDataReplicationTool3BCtoAllBC()

virtual Muon::TgcPrepDataReplicationTool3BCtoAllBC::~TgcPrepDataReplicationTool3BCtoAllBC ( )
virtualdefault

Destructor.

Member Function Documentation

◆ convert3BCtoAllBC()

StatusCode Muon::TgcPrepDataReplicationTool3BCtoAllBC::convert3BCtoAllBC ( const EventContext & ctx) const
private

Definition at line 42 of file TgcPrepDataReplicationTool3BCtoAllBC.cxx.

42 {
43
44 SG::WriteHandle<TgcPrepDataContainer> tgcPrepDataContainerAll(m_AllBCKey, ctx);
45 ATH_CHECK(tgcPrepDataContainerAll.record(std::make_unique<TgcPrepDataContainer>(m_idHelperSvc->tgcIdHelper().module_hash_max()) ));
46
47 auto tgc3BCs = m_3BCKeys.makeHandles(ctx);
48
49 // convert
50 int ibc{0};
51 for (SG::ReadHandle<TgcPrepDataContainer>& handle : m_3BCKeys.makeHandles(ctx)) {
52 uint16_t bcBitMap = 0;
53 if (ibc == BC_PREVIOUS) bcBitMap = TgcPrepData::BCBIT_PREVIOUS;
54 else if (ibc == BC_CURRENT) bcBitMap = TgcPrepData::BCBIT_CURRENT;
55 else if (ibc == BC_NEXT) bcBitMap = TgcPrepData::BCBIT_NEXT;
56 ++ibc;
57
58 if(!handle.isValid()) {
59 ATH_MSG_FATAL("Cannot retrieve " << handle.key());
60 return StatusCode::FAILURE;
61 }
62 for (const Muon::TgcPrepDataCollection* coll : *handle) {
63
64 for (const Muon::TgcPrepData* to_copy : *coll) {
65 const Identifier channelId = to_copy->identify();
66 const Identifier elementId = m_idHelperSvc->tgcIdHelper().elementID(channelId);
67
68 Muon::TgcPrepDataCollection* collection = Muon::IDC_Helper::getCollection<TgcPrepDataContainer, TgcIdHelper>
69 (elementId, tgcPrepDataContainerAll.ptr(), m_idHelperSvc->tgcIdHelper(), msg());
70
71 Muon::TgcPrepDataCollection::iterator duplicateInAllBCs =
72 std::find_if(collection->begin(),collection->end(),[&channelId](const TgcPrepData* duplicate){
73 return channelId == duplicate->identify();
74 });
75 if(duplicateInAllBCs != collection->end()) {
76 TgcPrepData *prd = *duplicateInAllBCs;
77 prd->setBcBitMap(prd->getBcBitMap() | bcBitMap);
78 } else {
79 Muon::TgcPrepData* newPrepData = TgcPrepDataReplicationToolAllBCto3BC::makeTgcPrepData(to_copy, bcBitMap);
80 newPrepData->setHashAndIndex(collection->identifyHash(), collection->size());
81 collection->push_back(newPrepData);
82 }
83 }
84 }
85 }
86
87 return StatusCode::SUCCESS;
88}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_FATAL(x)
value_type push_back(value_type pElem)
DataModel_detail::iterator< DataVector > iterator
Definition DataVector.h:842
const_iterator end() const noexcept
const_iterator begin() const noexcept
size_type size() const noexcept
virtual IdentifierHash identifyHash() const override final
SG::WriteHandleKey< TgcPrepDataContainer > m_AllBCKey
SG::ReadHandleKeyArray< TgcPrepDataContainer > m_3BCKeys
static TgcPrepData * makeTgcPrepData(const TgcPrepData *to_copy, uint16_t bcBitMap)
Make new TgcPrepData.
void setHashAndIndex(unsigned short collHash, unsigned short objIndex)
TEMP for testing: might make some classes friends later ...
MuonPrepDataCollection< TgcPrepData > TgcPrepDataCollection
setWord1 uint16_t
MsgStream & msg
Definition testRead.cxx:32

◆ initialize()

StatusCode Muon::TgcPrepDataReplicationTool3BCtoAllBC::initialize ( )
overridevirtual

Definition at line 18 of file TgcPrepDataReplicationTool3BCtoAllBC.cxx.

19{
20 ATH_CHECK(AthAlgTool::initialize());
21 ATH_CHECK(m_idHelperSvc.retrieve());
22
23 for(int ibc = 0; ibc < BC_ALL; ibc++) {
24 std::ostringstream location;
25 location << "TGC_Measurements"
26 << (ibc == BC_PREVIOUS ? "PriorBC" : "")
27 << (ibc == BC_NEXT ? "NextBC" : "");
28 m_3BCKeys.at(ibc) = location.str();
29 }
30
31 ATH_CHECK(m_3BCKeys.initialize());
32
33
34 return StatusCode::SUCCESS;
35}

◆ replicate()

StatusCode Muon::TgcPrepDataReplicationTool3BCtoAllBC::replicate ( const EventContext & ctx) const
overridevirtual

Definition at line 37 of file TgcPrepDataReplicationTool3BCtoAllBC.cxx.

38{
39 return convert3BCtoAllBC(ctx);
40}
StatusCode convert3BCtoAllBC(const EventContext &ctx) const

Member Data Documentation

◆ m_3BCKeys

SG::ReadHandleKeyArray<TgcPrepDataContainer> Muon::TgcPrepDataReplicationTool3BCtoAllBC::m_3BCKeys {this, "BC3Keys", {"dummy", "dummy", "dummy"}}
private

Definition at line 39 of file TgcPrepDataReplicationTool3BCtoAllBC.h.

39{this, "BC3Keys", {"dummy", "dummy", "dummy"}};

◆ m_AllBCKey

SG::WriteHandleKey<TgcPrepDataContainer> Muon::TgcPrepDataReplicationTool3BCtoAllBC::m_AllBCKey {this, "AllBCKey", "TGC_MeasurementsAllBCs"}
private

Definition at line 40 of file TgcPrepDataReplicationTool3BCtoAllBC.h.

40{this, "AllBCKey", "TGC_MeasurementsAllBCs"};

◆ m_idHelperSvc

ServiceHandle<Muon::IMuonIdHelperSvc> Muon::TgcPrepDataReplicationTool3BCtoAllBC::m_idHelperSvc {this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"}
private

Definition at line 37 of file TgcPrepDataReplicationTool3BCtoAllBC.h.

37{this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"};

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