File indexing completed on 2025-08-06 08:18:38
0001 #include "TriggerPrimitiveContainerv1.h"
0002
0003 #include "TriggerDefs.h"
0004 #include "TriggerPrimitivev1.h"
0005
0006 #include <iostream>
0007 #include <vector> // for vector
0008
0009 TriggerPrimitiveContainerv1::TriggerPrimitiveContainerv1(const TriggerDefs::TriggerId tid, const TriggerDefs::DetectorId did)
0010 : m_triggerid(tid)
0011 , m_detectorid(did)
0012 {
0013
0014 int nprimitives = 0;
0015
0016 int nsums = 0;
0017
0018 if (tid == TriggerDefs::noneTId)
0019 {
0020 if (did == TriggerDefs::DetectorId::emcalDId)
0021 {
0022 nprimitives = 384;
0023 }
0024 else if (did == TriggerDefs::DetectorId::hcalinDId || did == TriggerDefs::DetectorId::hcaloutDId || did == TriggerDefs::DetectorId::hcalDId)
0025 {
0026 nprimitives = 24;
0027 }
0028 m_primitiveid = TriggerDefs::PrimitiveId::calPId;
0029 nsums = 16;
0030 }
0031 else if (tid == TriggerDefs::jetTId || tid == TriggerDefs::photonTId)
0032 {
0033 nprimitives = 16;
0034
0035 m_primitiveid = TriggerDefs::PrimitiveId::jetPId;
0036 nsums = 24;
0037 }
0038 else if (tid == TriggerDefs::pairTId)
0039 {
0040 nprimitives = 32;
0041 m_primitiveid = TriggerDefs::PrimitiveId::pairPId;
0042 nsums = 3;
0043 }
0044 else if (tid == TriggerDefs::mbdTId)
0045 {
0046 nprimitives = 4;
0047 m_primitiveid = TriggerDefs::PrimitiveId::mbdPId;
0048 nsums = 13;
0049 }
0050
0051 for (int ip = 0; ip < nprimitives; ip++)
0052 {
0053 TriggerDefs::TriggerPrimKey primkey = TriggerDefs::getTriggerPrimKey(m_triggerid, m_detectorid, m_primitiveid, ip);
0054 TriggerPrimitive* primitive = new TriggerPrimitivev1(primkey);
0055 for (int is = 0; is < nsums; is++)
0056 {
0057 TriggerDefs::TriggerSumKey sumkey = TriggerDefs::getTriggerSumKey(m_triggerid, m_detectorid, m_primitiveid, ip, is);
0058 std::vector<unsigned int>* t_sum = new std::vector<unsigned int>();
0059 primitive->add_sum(sumkey, t_sum);
0060 }
0061 add_primitive(primkey, primitive);
0062 }
0063 return;
0064 }
0065
0066
0067 void TriggerPrimitiveContainerv1::Reset()
0068 {
0069 for (const auto& primitive : _primitives)
0070 {
0071 primitive.second->Reset();
0072 }
0073 }
0074
0075
0076 void TriggerPrimitiveContainerv1::identify(std::ostream& out) const
0077 {
0078 out << " I am a Trigger Primitive Container :: Trigger id: " << std::hex << m_triggerid << std::endl;
0079
0080 ConstRange range = getTriggerPrimitives();
0081 for (auto iter = range.first; iter != range.second; ++iter)
0082 {
0083 (*iter).second->identify();
0084 }
0085 }
0086
0087 int TriggerPrimitiveContainerv1::isValid() const
0088 {
0089 return (!_primitives.empty());
0090 }
0091
0092 TriggerPrimitive* TriggerPrimitiveContainerv1::get_primitive_at_key(TriggerDefs::TriggerPrimKey key)
0093 {
0094 TriggerDefs::TriggerPrimKey pkey = (key & 0xffffffe0U);
0095 if (!_primitives[pkey])
0096 {
0097 return nullptr;
0098 }
0099
0100 return _primitives[pkey];
0101 }
0102
0103 void TriggerPrimitiveContainerv1::add_primitive(TriggerDefs::TriggerPrimKey key, TriggerPrimitive* prim)
0104 {
0105 _primitives[key] = prim;
0106 }
0107 TriggerPrimitiveContainerv1::ConstRange TriggerPrimitiveContainerv1::getTriggerPrimitives() const
0108 {
0109 return make_pair(_primitives.begin(), _primitives.end());
0110 }
0111
0112 TriggerPrimitiveContainerv1::Range TriggerPrimitiveContainerv1::getTriggerPrimitives()
0113 {
0114 return make_pair(_primitives.begin(), _primitives.end());
0115 }