Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-06 08:17:14

0001 #include "LL1PacketContainerv1.h"
0002 #include "LL1Packetv1.h"
0003 
0004 #include <phool/phool.h>
0005 
0006 #include <TClonesArray.h>
0007 
0008 static const int NLL1PACKETS = 18;
0009 
0010 LL1PacketContainerv1::LL1PacketContainerv1()
0011   : LL1PacketsTCArray(new TClonesArray("LL1Packetv1", NLL1PACKETS))
0012 {
0013 }
0014 
0015 LL1PacketContainerv1::~LL1PacketContainerv1()
0016 {
0017   delete LL1PacketsTCArray;
0018 }
0019 
0020 void LL1PacketContainerv1::Reset()
0021 {
0022   LL1PacketsTCArray->Clear();
0023   LL1PacketsTCArray->Expand(NLL1PACKETS);
0024 }
0025 
0026 void LL1PacketContainerv1::identify(std::ostream &os) const
0027 {
0028   os << "LL1PacketContainerv1" << std::endl;
0029   os << "containing " << LL1PacketsTCArray->GetEntriesFast() << " LL1 Packets" << std::endl;
0030   for (int i = 0; i <= LL1PacketsTCArray->GetLast(); i++)
0031   {
0032     LL1Packet *ll1pkt = dynamic_cast<LL1Packet *>(LL1PacketsTCArray->At(i));
0033     if (ll1pkt)
0034     {
0035       os << "id: " << ll1pkt->getIdentifier() << std::endl;
0036       os << "for beam clock: " << std::hex << ll1pkt->getBCO() << std::dec << std::endl;
0037     }
0038   }
0039 }
0040 
0041 int LL1PacketContainerv1::isValid() const
0042 {
0043   return LL1PacketsTCArray->GetSize();
0044 }
0045 
0046 unsigned int LL1PacketContainerv1::get_npackets()
0047 {
0048   return LL1PacketsTCArray->GetEntriesFast();
0049 }
0050 
0051 LL1Packet *LL1PacketContainerv1::AddPacket()
0052 {
0053   LL1Packet *newhit = new ((*LL1PacketsTCArray)[LL1PacketsTCArray->GetLast() + 1]) LL1Packetv1();
0054   return newhit;
0055 }
0056 
0057 LL1Packet *LL1PacketContainerv1::AddPacket(LL1Packet *ll1packet)
0058 {
0059   // need a dynamic cast here to use the default copy ctor for LL1Packetv1
0060   // which copies the std::arrays
0061   LL1Packet *newhit = new ((*LL1PacketsTCArray)[LL1PacketsTCArray->GetLast() + 1]) LL1Packetv1(*(dynamic_cast<LL1Packetv1 *>(ll1packet)));
0062   return newhit;
0063 }
0064 
0065 LL1Packet *LL1PacketContainerv1::getPacket(unsigned int index)
0066 {
0067   return (LL1Packet *) LL1PacketsTCArray->At(index);
0068 }
0069 
0070 LL1Packet *LL1PacketContainerv1::getPacketbyId(int id)
0071 {
0072   for (int i = 0; i <= LL1PacketsTCArray->GetLast(); i++)
0073   {
0074     LL1Packet *pkt = (LL1Packet *) LL1PacketsTCArray->At(i);
0075     if (pkt->getIdentifier() == id)
0076     {
0077       return pkt;
0078     }
0079   }
0080   return nullptr;
0081 }