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