ATLAS Offline Software
Loading...
Searching...
No Matches
MBTSInfoCopier.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3*/
4
5
8
9#include "MBTSInfoCopier.h"
10
11MBTSInfoCopier::MBTSInfoCopier(const std::string& name, ISvcLocator* pSvcLocator) :
12 AthReentrantAlgorithm(name, pSvcLocator)
13{
14}
15
19
21{
23 ATH_CHECK(m_MbtsBitsKey.initialize());
24 ATH_CHECK( detStore()->retrieve(m_tileTBID) );
25 return StatusCode::SUCCESS;
26}
27
29{
30 return StatusCode::SUCCESS;
31}
32
33StatusCode MBTSInfoCopier::execute(const EventContext& context) const
34{
36 static const unsigned int MAX_MBTS_COUNTER{32};
37 std::vector<float> energies(MAX_MBTS_COUNTER);
38 std::vector<float> times(MAX_MBTS_COUNTER);
39
40 for (const TileCell* cell : *tileCellsHandle) {
41 // code from: TileCalorimeter/TileMonitoring/src/TileMBTSMonitorAlgorithm.cxx
42 Identifier id = cell->ID();
43 int counter = m_tileTBID->phi(id) + 8 * m_tileTBID->eta(id);
44 if (m_tileTBID->side(id) < 0) counter += 16;// EBC side
45 ATH_CHECK(counter<static_cast<int>(MAX_MBTS_COUNTER));
46 energies[counter] = cell->energy();
47 times[counter] = cell->time();
48 }
49 ATH_MSG_DEBUG("energies " << energies);
50 ATH_MSG_DEBUG("times " << times);
51
52
54 auto mbtsBitsContainer = std::make_unique< xAOD::TrigT2MbtsBitsContainer>();
55 auto mbtsBitsAuxContainer = std::make_unique< xAOD::TrigT2MbtsBitsAuxContainer>();
56 mbtsBitsContainer->setStore(mbtsBitsAuxContainer.get());
57
59 mbtsBitsContainer->push_back(mbtsObj);
60
61 mbtsObj->setTriggerEnergies(energies);
62 mbtsObj->setTriggerTimes(times);
63
64 ATH_CHECK(mbtsBitsHandle.record( std::move(mbtsBitsContainer), std::move( mbtsBitsAuxContainer ) ) );
65
66
67
68 return StatusCode::SUCCESS;
69}
70
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_DEBUG(x)
const ServiceHandle< StoreGateSvc > & detStore() const
An algorithm that can be simultaneously executed in multiple threads.
MBTSInfoCopier(const std::string &name, ISvcLocator *pSvcLocator)
const TileTBID * m_tileTBID
SG::WriteHandleKey< xAOD::TrigT2MbtsBitsContainer > m_MbtsBitsKey
SG::ReadHandleKey< TileCellContainer > m_mbtsCellContainerKey
virtual ~MBTSInfoCopier() override
virtual StatusCode initialize() override
virtual StatusCode execute(const EventContext &context) const override
virtual StatusCode finalize() override
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
void setTriggerTimes(const std::vector< float > &trigTm)
void setTriggerEnergies(const std::vector< float > &trigEg)