File indexing completed on 2026-04-06 08:08:20
0001 #include "TriggerTile.h"
0002
0003 #include <algorithm> // for sort
0004 #include <numeric>
0005
0006
0007 void TriggerTile::Reset()
0008 {
0009 m_tileNumber = 0;
0010 m_tileEta.clear();
0011 m_tilePhi.clear();
0012 m_tileEnergyAdc.clear();
0013 }
0014
0015
0016 void TriggerTile::identify(std::ostream& out) const
0017 {
0018 out << " I am a Fired Trigger Tile List" << std::endl;
0019 out << " There are " << m_tileNumber << " fired trigger tiles" << std::endl;
0020
0021 for (unsigned int i = 0; i < m_tileNumber; i++)
0022 {
0023 std::cout << "Tile " << i << ": "
0024 << "(eta, phi) = " << "(" << m_tileEta[i] << ", " << m_tilePhi[i] << "), "
0025 << "E (ADC) = " << m_tileEnergyAdc[i] << std::endl;
0026 }
0027 }
0028
0029
0030 void TriggerTile::AddTile(unsigned short ieta, unsigned short iphi, unsigned short eadc)
0031 {
0032 m_tileNumber++;
0033 m_tileEta.push_back(ieta);
0034 m_tilePhi.push_back(iphi);
0035 m_tileEnergyAdc.push_back(eadc);
0036 }
0037
0038
0039 void TriggerTile::SortTiles()
0040 {
0041 std::vector<int> sort_indices(m_tileNumber);
0042 std::iota(sort_indices.begin(), sort_indices.end(), 0);
0043 std::sort(sort_indices.begin(), sort_indices.end(), [&](size_t i, size_t j)
0044 { return m_tileEnergyAdc[i] > m_tileEnergyAdc[j]; });
0045
0046 std::vector<int> tile_eta_corrected(m_tileNumber);
0047 std::vector<int> tile_phi_corrected(m_tileNumber);
0048 std::vector<int> tile_energy_corrected(m_tileNumber);
0049 for (int i = 0; i < m_tileNumber; i++)
0050 {
0051 tile_eta_corrected[i] = m_tileEta[sort_indices[i]];
0052 tile_phi_corrected[i] = m_tilePhi[sort_indices[i]];
0053 tile_energy_corrected[i] = m_tileEnergyAdc[sort_indices[i]];
0054 }
0055 for (int i = 0; i < m_tileNumber; i++)
0056 {
0057 m_tileEta[i] = tile_eta_corrected[i];
0058 m_tilePhi[i] = tile_phi_corrected[i];
0059 m_tileEnergyAdc[i] = tile_energy_corrected[i];
0060 }
0061 }