File indexing completed on 2025-08-06 08:17:13
0001 #include "CaloPacketContainerv1.h"
0002 #include "CaloPacketv1.h"
0003
0004 #include <phool/phool.h>
0005
0006 #include <TClonesArray.h>
0007
0008 static const int NCALOPACKETS = 128;
0009
0010 CaloPacketContainerv1::CaloPacketContainerv1()
0011 : CaloPacketsTCArray(new TClonesArray("CaloPacketv1", NCALOPACKETS))
0012 {
0013 }
0014
0015 CaloPacketContainerv1::~CaloPacketContainerv1()
0016 {
0017 delete CaloPacketsTCArray;
0018 }
0019
0020 void CaloPacketContainerv1::Reset()
0021 {
0022 CaloPacketsTCArray->Clear();
0023 CaloPacketsTCArray->Expand(NCALOPACKETS);
0024 }
0025
0026 void CaloPacketContainerv1::identify(std::ostream &os) const
0027 {
0028 os << "CaloPacketContainerv1" << std::endl;
0029 os << "containing " << CaloPacketsTCArray->GetEntriesFast() << " Calo Packets" << std::endl;
0030 for (int i = 0; i <= CaloPacketsTCArray->GetLast(); i++)
0031 {
0032
0033
0034 CaloPacket *calopkt = static_cast<CaloPacket *>(CaloPacketsTCArray->At(i));
0035 if (calopkt)
0036 {
0037 os << "id: " << calopkt->getIdentifier() << std::endl;
0038 os << "for beam clock: " << std::hex << calopkt->getBCO() << std::dec << std::endl;
0039 }
0040 }
0041 }
0042
0043 int CaloPacketContainerv1::isValid() const
0044 {
0045 return CaloPacketsTCArray->GetSize();
0046 }
0047
0048 unsigned int CaloPacketContainerv1::get_npackets()
0049 {
0050 return CaloPacketsTCArray->GetEntriesFast();
0051 }
0052
0053 CaloPacket *CaloPacketContainerv1::AddPacket()
0054 {
0055 CaloPacket *newhit = new ((*CaloPacketsTCArray)[CaloPacketsTCArray->GetLast() + 1]) CaloPacketv1();
0056 return newhit;
0057 }
0058
0059 CaloPacket *CaloPacketContainerv1::AddPacket(CaloPacket *calopacket)
0060 {
0061
0062
0063 CaloPacket *newhit = new ((*CaloPacketsTCArray)[CaloPacketsTCArray->GetLast() + 1]) CaloPacketv1(*(dynamic_cast<CaloPacketv1 *>(calopacket)));
0064 return newhit;
0065 }
0066
0067 CaloPacket *CaloPacketContainerv1::getPacket(unsigned int index)
0068 {
0069 return (CaloPacket *) CaloPacketsTCArray->At(index);
0070 }
0071
0072 CaloPacket *CaloPacketContainerv1::getPacketbyId(int id)
0073 {
0074 for (int i = 0; i <= CaloPacketsTCArray->GetLast(); i++)
0075 {
0076 CaloPacket *pkt = (CaloPacket *) CaloPacketsTCArray->At(i);
0077 if (pkt->getIdentifier() == id)
0078 {
0079 return pkt;
0080 }
0081 }
0082 return nullptr;
0083 }
0084
0085 void CaloPacketContainerv1::deletePacketAt(int index)
0086 {
0087 if (CaloPacketsTCArray->At(index))
0088 {
0089 CaloPacketsTCArray->RemoveAt(index);
0090 CaloPacketsTCArray->Compress();
0091 }
0092 }
0093
0094 void CaloPacketContainerv1::deletePacket(CaloPacket *packet)
0095 {
0096 if (packet)
0097 {
0098 CaloPacketsTCArray->Remove(packet);
0099 CaloPacketsTCArray->Compress();
0100 }
0101 }