Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-06 08:18:09

0001 #include "MvtxEventInfov2.h"
0002 
0003 #include <phool/phool.h>
0004 
0005 PHObject* MvtxEventInfov2::CloneMe() const
0006 {
0007   std::cout << PHWHERE << "::" << __func__ << " is not implemented in daughter class" << std::endl;
0008   return nullptr;
0009 }
0010 
0011 void MvtxEventInfov2::Reset()
0012 {
0013   m_strobe_BCOs.clear();
0014   m_strobe_BCO_L1_BCO.clear();
0015   m_StringEventProperties.clear();
0016   m_IntEventProperties.clear();
0017   m_Int64EventProperties.clear();
0018   m_UintEventProperties.clear();
0019   m_Uint64EventProperties.clear();
0020   m_FloatEventProperties.clear();
0021 
0022   return;
0023 }
0024 
0025 void MvtxEventInfov2::identify(std::ostream& out) const
0026 {
0027   out << "MvtxEventInfov2 information" << std::endl;
0028 
0029   for (const auto& m_StringEventPropertie : m_StringEventProperties)
0030   {
0031     out << m_StringEventPropertie.first << ": " << m_StringEventPropertie.second << std::endl;
0032   }
0033 
0034   out << "List of strobe BCOs:" << std::endl;
0035   std::set<uint64_t> strobeList = get_strobe_BCOs();
0036   for (unsigned long iter : strobeList)
0037   {
0038     out << iter << std::endl;
0039   }
0040 
0041   out << "Number of L1 triggers in this event" << std::endl;
0042   out << m_number_L1_name << ": " << get_number_L1s() << std::endl;
0043 
0044   out << "Number of heart beats in this event" << std::endl;
0045   out << m_number_HB_name << ": " << get_number_HB() << std::endl;
0046 
0047   if (get_number_L1s() > 0)
0048   {
0049     out << "List of strobe BCOs and L1 BCOs in this event" << std::endl;
0050 
0051     for (unsigned long iterStrobe : strobeList)
0052     {
0053       std::set<uint64_t> l1List = get_L1_BCO_from_strobe_BCO(iterStrobe);
0054       out << "Strobe BCO: " << iterStrobe << std::endl;
0055       for (unsigned long iterL1 : l1List)
0056       {
0057         out << "L1 BCO: " << iterL1 << std::endl;
0058       }
0059       out << std::endl;
0060     }
0061   }
0062 
0063   for (const auto& m_IntEventPropertie : m_IntEventProperties)
0064   {
0065     out << m_IntEventPropertie.first << ": " << m_IntEventPropertie.second << std::endl;
0066   }
0067 
0068   for (const auto& m_Int64EventPropertie : m_Int64EventProperties)
0069   {
0070     out << m_Int64EventPropertie.first << ": " << m_Int64EventPropertie.second << std::endl;
0071   }
0072 
0073   for (const auto& m_UintEventPropertie : m_UintEventProperties)
0074   {
0075     out << m_UintEventPropertie.first << ": " << m_UintEventPropertie.second << std::endl;
0076   }
0077 
0078   for (const auto& m_Uint64EventPropertie : m_Uint64EventProperties)
0079   {
0080     out << m_Uint64EventPropertie.first << ": " << m_Uint64EventPropertie.second << std::endl;
0081   }
0082 
0083   for (const auto& m_FloatEventPropertie : m_FloatEventProperties)
0084   {
0085     out << m_FloatEventPropertie.first << ": " << m_FloatEventPropertie.second << std::endl;
0086   }
0087   return;
0088 }
0089 
0090 int MvtxEventInfov2::isValid() const
0091 {
0092   std::cout << PHWHERE << " isValid not implemented by daughter class" << std::endl;
0093   return 0;
0094 }
0095 
0096 void MvtxEventInfov2::set_number_HB(const int ival)
0097 {
0098   m_number_HB = ival;
0099 }
0100 
0101 int MvtxEventInfov2::get_number_HB() const
0102 {
0103   return m_number_HB;
0104 }
0105 
0106 void MvtxEventInfov2::set_strobe_BCO(const uint64_t strobe_BCO)
0107 {
0108   m_strobe_BCOs.insert(strobe_BCO);
0109 }
0110 
0111 void MvtxEventInfov2::set_strobe_BCO_L1_BCO(const uint64_t strobe_BCO, const uint64_t L1_BCO)
0112 {
0113   strobe_L1_pair strobe_L1_BCO_pair(strobe_BCO, L1_BCO);
0114   m_strobe_BCO_L1_BCO.insert(strobe_L1_BCO_pair);
0115 }
0116 
0117 unsigned int MvtxEventInfov2::get_number_strobes() const
0118 {
0119   std::set<uint64_t> mySet;
0120   std::set<strobe_L1_pair>::const_iterator iter;
0121   for (iter = m_strobe_BCO_L1_BCO.begin(); iter != m_strobe_BCO_L1_BCO.end(); ++iter)
0122   {
0123     strobe_L1_pair myPair = *iter;
0124     mySet.insert(myPair.first);
0125   }
0126 
0127   return mySet.size();
0128 }
0129 
0130 unsigned int MvtxEventInfov2::get_number_L1s() const
0131 {
0132   std::set<uint64_t> mySet;
0133   std::set<strobe_L1_pair>::const_iterator iter;
0134   for (iter = m_strobe_BCO_L1_BCO.begin(); iter != m_strobe_BCO_L1_BCO.end(); ++iter)
0135   {
0136     strobe_L1_pair myPair = *iter;
0137     mySet.insert(myPair.second);
0138   }
0139 
0140   return mySet.size();
0141 }
0142 
0143 std::set<uint64_t> MvtxEventInfov2::get_strobe_BCOs() const
0144 {
0145   std::set<uint64_t> mySet = m_strobe_BCOs;
0146   return mySet;
0147 }
0148 
0149 std::set<uint64_t> MvtxEventInfov2::get_L1_BCOs() const
0150 {
0151   std::set<uint64_t> mySet;
0152   std::set<strobe_L1_pair>::const_iterator iter;
0153   for (iter = m_strobe_BCO_L1_BCO.begin(); iter != m_strobe_BCO_L1_BCO.end(); ++iter)
0154   {
0155     strobe_L1_pair myPair = *iter;
0156     mySet.insert(myPair.second);
0157   }
0158 
0159   return mySet;
0160 }
0161 
0162 std::set<uint64_t> MvtxEventInfov2::get_strobe_BCO_from_L1_BCO(const uint64_t ival) const
0163 {
0164   std::set<uint64_t> mySet;
0165   std::set<strobe_L1_pair>::const_iterator iter;
0166   for (iter = m_strobe_BCO_L1_BCO.begin(); iter != m_strobe_BCO_L1_BCO.end(); ++iter)
0167   {
0168     strobe_L1_pair myPair = *iter;
0169     if (ival == myPair.second)
0170     {
0171       mySet.insert(myPair.first);
0172     }
0173   }
0174 
0175   return mySet;
0176 }
0177 
0178 std::set<uint64_t> MvtxEventInfov2::get_L1_BCO_from_strobe_BCO(const uint64_t ival) const
0179 {
0180   std::set<uint64_t> mySet;
0181   std::set<strobe_L1_pair>::const_iterator iter;
0182   for (iter = m_strobe_BCO_L1_BCO.begin(); iter != m_strobe_BCO_L1_BCO.end(); ++iter)
0183   {
0184     strobe_L1_pair myPair = *iter;
0185     if (ival == myPair.first)
0186     {
0187       mySet.insert(myPair.second);
0188     }
0189   }
0190 
0191   return mySet;
0192 }