ATLAS Offline Software
AbsLArCells.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 
8 #include "LArCafJobs/CellInfo.h"
10 
11 
12 #include <iostream>
13 using std::cout;
14 using std::endl;
15 
16 using namespace LArSamples;
17 
18 
19 //std::vector<CellInfo*> AbsLArCells::m_cellInfoCache(Definitions::nChannels,nullptr);
20 
22  m_pos(nChannels() + 1),
23  m_cellCache(nullptr),
24  m_cellInfoCache(nChannels(),nullptr)
25 { }
26 
28 {
31 }
32 
33 
35 {
36  if (m_cellCache) {
37  delete m_cellCache;
38  m_cellCache = nullptr;
39  }
40  m_pos = nChannels() + 1;
41 }
42 
43 
44 const History* AbsLArCells::newCellHistory(unsigned int i) const
45 {
46  const History* history = getCellHistory(i);
47  if (!history) return nullptr;
48  if (!m_cellInfoCache[i]) {
49  const CellInfo* ci=history->cellInfo();
50  if (ci) {
51  m_cellInfoCache[i]=new CellInfo(*ci,false);
52  }
53  }
54  // m_cellInfoCache[i] = (history->cellInfo() ? new CellInfo(*history->cellInfo(), false) : new CellInfo());
55  return history;
56 }
57 
58 
59 const History* AbsLArCells::cellHistory(unsigned int i) const
60 {
61  if (m_pos == i) return m_cellCache;
62  resetCache();
63  const History* history = newCellHistory(i);
64  if (!history) return nullptr;
65  m_cellCache = history;
66  m_pos = i;
67  return m_cellCache;
68 }
69 
70 
71 const CellInfo* AbsLArCells::cellInfo(unsigned int i) const
72 {
73  const CellInfo* info = cellInfoCache(i);
74  if (info) return (info->isValid() ? new CellInfo(*info) : nullptr);
75  info = getCellInfo(i);
76  if (info) m_cellInfoCache[i] = new CellInfo(*info, false);
77  //m_cellInfoCache[i] = (info ? new CellInfo(*info, false) : new CellInfo());
78  return info;
79 }
80 
81 
82 const CellInfo* AbsLArCells::cellInfoCache(unsigned int i) const
83 {
84  return m_cellInfoCache[i];
85 }
86 
87 
88 const CellInfo* AbsLArCells::getCellInfo(unsigned int i) const
89 {
90  const History* history = this->getCellHistory(i);
91  if (!history) return nullptr;
92  if (!history->cellInfo()) { delete history; return nullptr; }
93  CellInfo* info = new CellInfo(*history->cellInfo());
94  delete history;
95  return info;
96 }
97 
98 
99 const History* AbsLArCells::pass(unsigned int i, const FilterParams& f) const
100 {
101  //std::cout << "Called AbsLArCells with hash " << i << std::endl;
102  if (!f.passHash(i)) return nullptr;
103  const CellInfo* info = cellInfo(i);
104  if (!info) {
105  return nullptr;
106  }
107  //std::cout << "Called AbsLArCells::pass on a cell belonging to " << Id::str(info->calo()) << std::endl;
108  bool result = f.passCell(*info);
109  delete info;
110  return result ? cellHistory(i) : nullptr;
111 }
112 
113 
115 {
116  unsigned int i = 0;
118  cellInfo != m_cellInfoCache.end(); ++cellInfo, i++)
119  if (*cellInfo) {
120  delete *cellInfo;
121  *cellInfo = 0;
122  }
123 }
grepfile.info
info
Definition: grepfile.py:38
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
LArSamples::AbsLArCells::m_pos
unsigned int m_pos
Definition: AbsLArCells.h:51
RPDUtils::nChannels
unsigned constexpr int nChannels
Definition: RPDUtils.h:23
get_generator_info.result
result
Definition: get_generator_info.py:21
LArSamples::AbsLArCells::newCellHistory
virtual const History * newCellHistory(unsigned int i) const
Definition: AbsLArCells.cxx:44
LArSamples::FilterParams
Definition: FilterParams.h:50
LArSamples::History::cellInfo
const CellInfo * cellInfo() const
Definition: History.h:56
LArSamples::AbsLArCells::cellHistory
virtual const History * cellHistory(unsigned int i) const
Definition: AbsLArCells.cxx:59
LArSamples::History
Definition: History.h:35
LArSamples::AbsLArCells::m_cellInfoCache
std::vector< CellInfo * > m_cellInfoCache
Definition: AbsLArCells.h:53
LArSamples::AbsLArCells::cellInfo
virtual const CellInfo * cellInfo(unsigned int i) const
Definition: AbsLArCells.cxx:71
LArSamples
Definition: AbsShape.h:24
FilterParams.h
LArSamples::AbsLArCells::resetCellInfoCache
void resetCellInfoCache()
Definition: AbsLArCells.cxx:114
lumiFormat.i
int i
Definition: lumiFormat.py:85
LArSamples::AbsLArCells::getCellInfo
virtual const CellInfo * getCellInfo(unsigned int i) const
Definition: AbsLArCells.cxx:88
hist_file_dump.f
f
Definition: hist_file_dump.py:135
LArSamples::AbsLArCells::getCellHistory
virtual const History * getCellHistory(unsigned int i) const =0
LArSamples::AbsLArCells::pass
const History * pass(unsigned int i, const FilterParams &f) const
Definition: AbsLArCells.cxx:99
LArSamples::AbsLArCells::cellInfoCache
const CellInfo * cellInfoCache(unsigned int i) const
Definition: AbsLArCells.cxx:82
LArSamples::AbsLArCells::m_cellCache
const History * m_cellCache
Definition: AbsLArCells.h:52
LArSamples::CellInfo
Definition: CellInfo.h:31
LArSamples::AbsLArCells::AbsLArCells
AbsLArCells()
Definition: AbsLArCells.cxx:21
AbsLArCells.h
LArSamples::AbsLArCells::~AbsLArCells
virtual ~AbsLArCells()
Definition: AbsLArCells.cxx:27
LArSamples::AbsLArCells::resetCache
virtual void resetCache() const
Definition: AbsLArCells.cxx:34
History.h
CellInfo.h
LArSamples::AbsLArCells::nChannels
virtual unsigned int nChannels() const
Definition: AbsLArCells.h:34