File indexing completed on 2025-08-06 08:17:14
0001 #include "MicromegasRawHitContainerv3.h"
0002 #include "MicromegasRawHitv3.h"
0003
0004 #include <TClonesArray.h>
0005
0006 #include <iostream>
0007
0008 static constexpr int NHITS = 100;
0009
0010 MicromegasRawHitContainerv3::MicromegasRawHitContainerv3()
0011 : MicromegasRawHitsTCArray(new TClonesArray("MicromegasRawHitv3", NHITS))
0012 {
0013 }
0014
0015 MicromegasRawHitContainerv3::~MicromegasRawHitContainerv3()
0016 {
0017 MicromegasRawHitsTCArray->Clear("C");
0018 delete MicromegasRawHitsTCArray;
0019 }
0020
0021 void MicromegasRawHitContainerv3::Reset()
0022 {
0023 MicromegasRawHitsTCArray->Clear("C");
0024 MicromegasRawHitsTCArray->Expand(NHITS);
0025 }
0026
0027 void MicromegasRawHitContainerv3::identify(std::ostream &os) const
0028 {
0029 os << "MicromegasRawHitContainerv3" << std::endl;
0030 os << "containing " << MicromegasRawHitsTCArray->GetEntriesFast() << " Tpc hits" << std::endl;
0031
0032 MicromegasRawHit *tpchit = static_cast<MicromegasRawHit *>(MicromegasRawHitsTCArray->At(0));
0033 if (tpchit)
0034 {
0035 os << "for beam clock: " << std::hex << tpchit->get_bco() << std::dec << std::endl;
0036 }
0037 }
0038
0039 int MicromegasRawHitContainerv3::isValid() const
0040 {
0041 return MicromegasRawHitsTCArray->GetSize();
0042 }
0043
0044 unsigned int MicromegasRawHitContainerv3::get_nhits()
0045 {
0046 return MicromegasRawHitsTCArray->GetEntriesFast();
0047 }
0048
0049 MicromegasRawHit *MicromegasRawHitContainerv3::AddHit()
0050 {
0051 auto *newhit = new ((*MicromegasRawHitsTCArray)[MicromegasRawHitsTCArray->GetLast() + 1]) MicromegasRawHitv3();
0052 return newhit;
0053 }
0054
0055 MicromegasRawHit *MicromegasRawHitContainerv3::AddHit(MicromegasRawHit *rawhit)
0056 {
0057 if (rawhit->IsA() == MicromegasRawHitv3::Class())
0058 {
0059
0060 return new ((*MicromegasRawHitsTCArray)[MicromegasRawHitsTCArray->GetLast() + 1])
0061 MicromegasRawHitv3(std::move(*dynamic_cast<MicromegasRawHitv3 *>(rawhit)));
0062 }
0063
0064
0065 std::cout << __PRETTY_FUNCTION__ << "WARNING: input hit is not of type MicromegasRawHitv3. This is slow, please avoid." << std::endl;
0066 return new ((*MicromegasRawHitsTCArray)[MicromegasRawHitsTCArray->GetLast() + 1]) MicromegasRawHitv3(rawhit);
0067 }
0068
0069 MicromegasRawHit *MicromegasRawHitContainerv3::get_hit(unsigned int index)
0070 {
0071
0072 return static_cast<MicromegasRawHit *>(MicromegasRawHitsTCArray->At(index));
0073 }