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 }