File indexing completed on 2026-07-16 08:13:59
0001 #include "TowerInfoContainerv5.h"
0002 #include "TowerInfov5.h"
0003
0004 #include <TClonesArray.h>
0005 #include <TSystem.h>
0006
0007 #include <cstdlib>
0008
0009 TowerInfoContainerv5::TowerInfoContainerv5(DETECTOR detec)
0010 : _detector(detec)
0011 {
0012 int nchannels = get_channels(detec);
0013 _clones = new TClonesArray("TowerInfov5", nchannels);
0014 for (int i = 0; i < nchannels; ++i)
0015 {
0016
0017
0018 _clones->ConstructedAt(i, "C");
0019 }
0020 }
0021
0022 TowerInfoContainerv5::TowerInfoContainerv5(const TowerInfoContainerv5& source)
0023 : TowerInfoContainer(source)
0024 , _clones(new TClonesArray("TowerInfov5", source.size()))
0025 , _detector(source.get_detectorid())
0026 {
0027 for (unsigned int i = 0; i < source.size(); ++i)
0028 {
0029 auto* tower = static_cast<TowerInfov5*>(_clones->ConstructedAt(i, "C"));
0030 auto* source_tower = static_cast<TowerInfov5*>(source._clones->UncheckedAt(i));
0031 tower->copy_tower(source_tower);
0032 }
0033 }
0034
0035 TowerInfoContainerv5::~TowerInfoContainerv5()
0036 {
0037 delete _clones;
0038 }
0039
0040 void TowerInfoContainerv5::identify(std::ostream& os) const
0041 {
0042 os << "TowerInfoContainerv5 of size " << size() << std::endl;
0043 }
0044
0045 void TowerInfoContainerv5::Reset()
0046 {
0047
0048
0049 for (Int_t i = 0; i < _clones->GetEntriesFast(); ++i)
0050 {
0051 TowerInfo* twr = (TowerInfov5*) _clones->UncheckedAt(i);
0052
0053 if (twr == nullptr)
0054 {
0055 std::cout << __PRETTY_FUNCTION__ << " Fatal access error:"
0056 << " _clones->GetSize() = " << _clones->GetSize()
0057 << " _clones->GetEntriesFast() = " << _clones->GetEntriesFast()
0058 << " i = " << i << std::endl;
0059 _clones->Print();
0060 gSystem->Exit(1);
0061 exit(1);
0062 }
0063 twr->Reset();
0064 }
0065 }
0066
0067 TowerInfov5* TowerInfoContainerv5::get_tower_at_channel(int pos)
0068 {
0069 return (TowerInfov5*) _clones->At(pos);
0070 }
0071
0072 TowerInfov5* TowerInfoContainerv5::get_tower_at_key(int pos)
0073 {
0074 int index = decode_key(pos);
0075 return (TowerInfov5*) _clones->At(index);
0076 }