Back to home page

sPhenix code displayed by LXR

 
 

    


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 }