Back to home page

sPhenix code displayed by LXR

 
 

    


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   // Make the primitives.
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   // add a primitive for all primitives
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 }