ATLAS Offline Software
Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Attributes | List of all members
LArSamples::MultiTreeAccessor Class Reference

#include <MultiTreeAccessor.h>

Inheritance diagram for LArSamples::MultiTreeAccessor:
Collaboration diagram for LArSamples::MultiTreeAccessor:

Public Member Functions

 MultiTreeAccessor (const std::vector< const TreeAccessor * > &accessors)
 Constructor
More...
 
virtual ~MultiTreeAccessor ()
 
unsigned int nEvents () const
 
unsigned int nRuns () const
 
const EventDataeventData (unsigned int i) const
 
const RunDatarunData (unsigned int i) const
 
unsigned int historySize (unsigned int i) const
 
bool writeToFile (const TString &fileName) const
 
const TreeAccessoraccessor (unsigned int i) const
 
unsigned int nAccessors () const
 
std::vector< MultiTreeAccessor * > filterComponents (const FilterList &filterList, const DataTweaker &tweaker) const
 
virtual const HistorynewCellHistory (unsigned int i) const
 
virtual const HistorycellHistory (unsigned int i) const
 
virtual const CellInfocellInfo (unsigned int i) const
 
virtual unsigned int nChannels () const
 
virtual void resetCache () const
 
const CellInfocellInfoCache (unsigned int i) const
 
const Historypass (unsigned int i, const FilterParams &f) const
 
const HistorycellCache () const
 
unsigned int cachePos () const
 
void resetCellInfoCache ()
 

Static Public Member Functions

static MultiTreeAccessoropen (const std::vector< TString > &files)
 
static MultiTreeAccessoropenList (const TString &fileList)
 
static MultiTreeAccessoropenWild (const TString &wcName)
 

Protected Member Functions

const HistorygetCellHistory (unsigned int i) const
 
const CellInfogetCellInfo (unsigned int i) const
 

Private Attributes

std::vector< const TreeAccessor * > m_accessors
 
unsigned int m_pos
 
const Historym_cellCache
 
std::vector< CellInfo * > m_cellInfoCache
 

Detailed Description

Definition at line 27 of file MultiTreeAccessor.h.

Constructor & Destructor Documentation

◆ MultiTreeAccessor()

LArSamples::MultiTreeAccessor::MultiTreeAccessor ( const std::vector< const TreeAccessor * > &  accessors)
inline

Constructor

Definition at line 32 of file MultiTreeAccessor.h.

33  : m_accessors(accessors) { }

◆ ~MultiTreeAccessor()

MultiTreeAccessor::~MultiTreeAccessor ( )
virtual

Definition at line 95 of file MultiTreeAccessor.cxx.

96 {
97  for (const TreeAccessor* accessor : m_accessors)
98  delete accessor;
99 }

Member Function Documentation

◆ accessor()

const TreeAccessor& LArSamples::MultiTreeAccessor::accessor ( unsigned int  i) const
inline

Definition at line 51 of file MultiTreeAccessor.h.

51 { return *m_accessors[i]; }

◆ cachePos()

unsigned int LArSamples::AbsLArCells::cachePos ( ) const
inlineinherited

Definition at line 45 of file AbsLArCells.h.

45 { return m_pos; }

◆ cellCache()

const History* LArSamples::AbsLArCells::cellCache ( ) const
inlineinherited

Definition at line 44 of file AbsLArCells.h.

44 { return m_cellCache; }

◆ cellHistory()

const History * AbsLArCells::cellHistory ( unsigned int  i) const
virtualinherited

Reimplemented in LArSamples::Interface.

Definition at line 57 of file AbsLArCells.cxx.

58 {
59  if (m_pos == i) return m_cellCache;
60  resetCache();
61  const History* history = newCellHistory(i);
62  if (!history) return nullptr;
63  m_cellCache = history;
64  m_pos = i;
65  return m_cellCache;
66 }

◆ cellInfo()

const CellInfo * AbsLArCells::cellInfo ( unsigned int  i) const
virtualinherited

Definition at line 69 of file AbsLArCells.cxx.

70 {
71  const CellInfo* info = cellInfoCache(i);
72  if (info) return (info->isValid() ? new CellInfo(*info) : nullptr);
73  info = getCellInfo(i);
74  if (info) m_cellInfoCache[i] = new CellInfo(*info, false);
75  //m_cellInfoCache[i] = (info ? new CellInfo(*info, false) : new CellInfo());
76  return info;
77 }

◆ cellInfoCache()

const CellInfo * AbsLArCells::cellInfoCache ( unsigned int  i) const
inherited

Definition at line 80 of file AbsLArCells.cxx.

81 {
82  return m_cellInfoCache[i];
83 }

◆ eventData()

const EventData * MultiTreeAccessor::eventData ( unsigned int  i) const
virtual

Implements LArSamples::Accessor.

Definition at line 102 of file MultiTreeAccessor.cxx.

103 {
104  unsigned int nEventsSoFar = 0;
105  for (const TreeAccessor* accessor : m_accessors) {
106  unsigned int n = accessor->nEvents();
107  if (i < nEventsSoFar + n) return accessor->eventData(i - nEventsSoFar);
108  nEventsSoFar += n;
109  }
110  return nullptr;
111 }

◆ filterComponents()

std::vector< MultiTreeAccessor * > MultiTreeAccessor::filterComponents ( const FilterList filterList,
const DataTweaker tweaker 
) const

Definition at line 223 of file MultiTreeAccessor.cxx.

224 {
225  std::vector< std::vector<const TreeAccessor*> > filteredAccessors(filterList.size());
226 
227  for (unsigned int i = 0; i < nAccessors(); i++) {
228  const TreeAccessor* treeAcc = dynamic_cast<const TreeAccessor*>(&accessor(i));
229  cout << "Processing data " << i << " of " << nAccessors();
230  if (treeAcc) cout << " (fileName = " << treeAcc->fileName() << ")";
231  cout << endl;
232  FilterList thisFilterList;
233  //
234  for (unsigned int f = 0; f < filterList.size(); f++) {
235  std::string pathname = (string)filterList.fileName(f);
236  if( pathname.find("eos/atlas/") < pathname.length() ){
237  int nslashes = 0, slpos = 0;
238  for( int k1 = 0; k1 < (int)pathname.length(); k1++ ){
239  if( nslashes > 2 )break;
240  if( pathname[k1] != '/' )continue;
241  nslashes++;
242  slpos = k1;
243  }
244  pathname.resize( slpos );
245  }
246  TString thisFN = Form("%s_filter%d.root", pathname.c_str(), i );//filterList.fileName(f).Data(), i);
247  //if (treeAcc) thisFN = treeAcc->fileName() + Form("_filter%d.root", f);
248  thisFilterList.add(filterList.filterParams(f), thisFN);
249  }
250  std::vector<TreeAccessor*> filteredTreeAccs = TreeAccessor::filter(accessor(i), thisFilterList, tweaker);
251  if (filteredTreeAccs.size() != filterList.size()) {
252  cout << "Filtering failed, exiting" << endl;
253  return std::vector<MultiTreeAccessor*>();
254  }
255  for (unsigned int f = 0; f < filteredTreeAccs.size(); f++) filteredAccessors[f].push_back(filteredTreeAccs[f]);
256  //if (treeAcc) treeAcc->resetCache(); // to save memory
257  }
258 
259  std::vector<MultiTreeAccessor*> result;
260  for (unsigned int f = 0; f < filteredAccessors.size(); f++) result.push_back(new MultiTreeAccessor(filteredAccessors[f]));
261  return result;
262 }

◆ getCellHistory()

const History * MultiTreeAccessor::getCellHistory ( unsigned int  i) const
protectedvirtual

Implements LArSamples::AbsLArCells.

Definition at line 156 of file MultiTreeAccessor.cxx.

157 {
158  CellInfo* cellInfo = nullptr;
159  std::vector<const Data*> allData;
160  std::vector<const EventData*> allEventData;
161  for (const TreeAccessor* accessor : m_accessors) {
162  //cout << "---> Getting history for a treeAccessor..." << endl;
163  const History* thisHistory = accessor->getCellHistory(i);
164  //cout << "---> done Getting history for a treeAccessor..." << endl;
165  if (!thisHistory) continue;
166  if (!cellInfo) {
167  cellInfo = new CellInfo(*thisHistory->cellInfo());
168  //cout << "---> done new cell info" << endl;
169  }
170  //cout << "---> Creating new event data N = " << thisHistory->eventData().size() << endl;
171  const std::vector<const EventData*>& thisEventData = thisHistory->eventData();
172  std::map<const EventData*, const EventData*> eventMap;
173  for (const EventData* event : thisEventData) {
174  if (eventMap.find(event) != eventMap.end()) continue;
175  EventData* newED = new EventData(*event);
176  eventMap[event] = newED;
177  allEventData.push_back(newED);
178  }
179  //cout << "---> Creating new data N = " << thisHistory->nData() << endl;
180 
181  for (unsigned int i = 0; i < thisHistory->nData(); i++) {
182  //cout << "------> Creating new data " << i << endl;
183  allData.push_back(new Data(*thisHistory->data(i), eventMap[thisHistory->data(i)->eventData()], nullptr, -1));
184  //cout << "------> done Creating new data " << i << endl;
185  if (!cellInfo->shape(thisHistory->data(i)->gain())) {
186  const ShapeInfo* thisShape = thisHistory->cellInfo()->shape(thisHistory->data(i)->gain());
187  cellInfo->setShape(thisHistory->data(i)->gain(), thisShape ? new ShapeInfo(*thisShape) : nullptr);
188  }
189  //cout << "------> done shape " << i << endl;
190  }
191  //cout << "---> done Creating new data, deleting treeAcc history" << endl;
192  delete thisHistory;
193  }
194  //cout << "--->returning new history..." << endl;
195  return (cellInfo ? new History(allData, *cellInfo, allEventData, i) : nullptr);
196 }

◆ getCellInfo()

const CellInfo * MultiTreeAccessor::getCellInfo ( unsigned int  i) const
protectedvirtual

Reimplemented from LArSamples::AbsLArCells.

Definition at line 199 of file MultiTreeAccessor.cxx.

200 {
201  resetCache();
202  for (const TreeAccessor* accessor : m_accessors) {
204  if (cont && cont->cellInfo()) return new CellInfo(*cont->cellInfo());
205  }
206  return nullptr;
207 }

◆ historySize()

unsigned int MultiTreeAccessor::historySize ( unsigned int  i) const
virtual

Implements LArSamples::Accessor.

Definition at line 144 of file MultiTreeAccessor.cxx.

145 {
146  resetCache();
147  unsigned int size = 0;
148  for (const TreeAccessor* accessor : m_accessors) {
150  if (cont) size += cont->nDataContainers();
151  }
152  return size;
153 }

◆ nAccessors()

unsigned int LArSamples::MultiTreeAccessor::nAccessors ( ) const
inline

Definition at line 52 of file MultiTreeAccessor.h.

52 { return m_accessors.size(); }

◆ nChannels()

virtual unsigned int LArSamples::AbsLArCells::nChannels ( ) const
inlinevirtualinherited

Reimplemented in LArSamples::MonitorBase.

Definition at line 34 of file AbsLArCells.h.

34 { return Definitions::nChannels; }

◆ nEvents()

unsigned int MultiTreeAccessor::nEvents ( ) const
virtual

Implements LArSamples::Accessor.

Definition at line 126 of file MultiTreeAccessor.cxx.

127 {
128  unsigned int n = 0;
129  for (const TreeAccessor* accessor : m_accessors)
130  n += accessor->nEvents();
131  return n;
132 }

◆ newCellHistory()

const History * AbsLArCells::newCellHistory ( unsigned int  i) const
virtualinherited

Definition at line 42 of file AbsLArCells.cxx.

43 {
44  const History* history = getCellHistory(i);
45  if (!history) return nullptr;
46  if (!m_cellInfoCache[i]) {
47  const CellInfo* ci=history->cellInfo();
48  if (ci) {
49  m_cellInfoCache[i]=new CellInfo(*ci,false);
50  }
51  }
52  // m_cellInfoCache[i] = (history->cellInfo() ? new CellInfo(*history->cellInfo(), false) : new CellInfo());
53  return history;
54 }

◆ nRuns()

unsigned int MultiTreeAccessor::nRuns ( ) const
virtual

Implements LArSamples::Accessor.

Definition at line 135 of file MultiTreeAccessor.cxx.

136 {
137  unsigned int n = 0;
138  for (const TreeAccessor* accessor : m_accessors)
139  n += accessor->nRuns();
140  return n;
141 }

◆ open()

MultiTreeAccessor * MultiTreeAccessor::open ( const std::vector< TString > &  files)
static

Definition at line 25 of file MultiTreeAccessor.cxx.

26 {
27  std::vector<const TreeAccessor*> accessors;
28  for (const TString& fileName : files) {
30  if (!accessor) {
31  cout << "Skipping invalid file " << fileName << endl;
32  continue;
33  }
34  accessors.push_back(accessor);
35  }
36 
37  if (accessors.empty()) return nullptr;
38  return new MultiTreeAccessor(accessors);
39 }

◆ openList()

MultiTreeAccessor * MultiTreeAccessor::openList ( const TString &  fileList)
static

Definition at line 42 of file MultiTreeAccessor.cxx.

43 {
44  std::ifstream f(fileList);
45  if (!f) {
46  cout << "file " << fileList << " not accessible" << endl;
47  return nullptr;
48  }
49 
50  std::string fileName;
51  unsigned int i = 0;
52 
53  std::vector<const TreeAccessor*> accessors;
54 
55  while (f >> fileName) {
56  //gSystem->Exec("free");
58  if (!accessor) {
59  cout << "Skipping invalid file " << fileName << endl;
60  continue;
61  }
62  cout << std::setw(2) << ++i << " - " << fileName << endl;
63  accessors.push_back(accessor);
64  }
65 
66  if (accessors.empty()) return nullptr;
67  return new MultiTreeAccessor(accessors);
68 }

◆ openWild()

MultiTreeAccessor * MultiTreeAccessor::openWild ( const TString &  wcName)
static

Definition at line 71 of file MultiTreeAccessor.cxx.

72 {
73  // Piggyback on TChain wildcarding feature...
74  TChain chain("");
75  chain.Add(wcName);
76 
77  std::vector<const TreeAccessor*> accessors;
78 
79  for (int i = 0; i < chain.GetListOfFiles()->GetEntries(); i++) {
80  std::string fileName = chain.GetListOfFiles()->At(i)->GetTitle();
82  if (!accessor) {
83  cout << "Skipping invalid file " << fileName << endl;
84  continue;
85  }
86  cout << std::setw(2) << i+1 << " - " << fileName << " , nEvents = " << accessor->nEvents() << ", nRuns = " << accessor->nRuns() << endl;
87  accessors.push_back(accessor);
88  }
89 
90  if (accessors.empty()) return nullptr;
91  return new MultiTreeAccessor(accessors);
92 }

◆ pass()

const History * AbsLArCells::pass ( unsigned int  i,
const FilterParams f 
) const
inherited

Definition at line 97 of file AbsLArCells.cxx.

98 {
99  //std::cout << "Called AbsLArCells with hash " << i << std::endl;
100  if (!f.passHash(i)) return nullptr;
101  const CellInfo* info = cellInfo(i);
102  if (!info) {
103  return nullptr;
104  }
105  //std::cout << "Called AbsLArCells::pass on a cell belonging to " << Id::str(info->calo()) << std::endl;
106  bool result = f.passCell(*info);
107  delete info;
108  return result ? cellHistory(i) : nullptr;
109 }

◆ resetCache()

void AbsLArCells::resetCache ( ) const
virtualinherited

Definition at line 32 of file AbsLArCells.cxx.

33 {
34  if (m_cellCache) {
35  delete m_cellCache;
36  m_cellCache = nullptr;
37  }
38  m_pos = nChannels() + 1;
39 }

◆ resetCellInfoCache()

void AbsLArCells::resetCellInfoCache ( )
inherited

Definition at line 112 of file AbsLArCells.cxx.

113 {
114  unsigned int i = 0;
116  cellInfo != m_cellInfoCache.end(); ++cellInfo, i++)
117  if (*cellInfo) {
118  delete *cellInfo;
119  *cellInfo = 0;
120  }
121 }

◆ runData()

const RunData * MultiTreeAccessor::runData ( unsigned int  i) const
virtual

Implements LArSamples::Accessor.

Definition at line 114 of file MultiTreeAccessor.cxx.

115 {
116  unsigned int nRunsSoFar = 0;
117  for (const TreeAccessor* accessor : m_accessors) {
118  unsigned int n = accessor->nRuns();
119  if (i < nRunsSoFar + n) return accessor->runData(i - nRunsSoFar);
120  nRunsSoFar += n;
121  }
122  return nullptr;
123 }

◆ writeToFile()

bool MultiTreeAccessor::writeToFile ( const TString &  fileName) const
virtual

Implements LArSamples::Accessor.

Definition at line 210 of file MultiTreeAccessor.cxx.

211 {
212  std::vector<const Accessor*> accessors;
213  for (unsigned int i = 0; i < m_accessors.size(); i++)
214  accessors.push_back(m_accessors[i]);
215  cout << "Merging data..." << endl;
216  TreeAccessor* singleContainer = TreeAccessor::merge(accessors, fileName);
217  if (!singleContainer) return false;
218  delete singleContainer;
219  return true;
220 }

Member Data Documentation

◆ m_accessors

std::vector<const TreeAccessor*> LArSamples::MultiTreeAccessor::m_accessors
private

Definition at line 63 of file MultiTreeAccessor.h.

◆ m_cellCache

const History* LArSamples::AbsLArCells::m_cellCache
mutableprivateinherited

Definition at line 52 of file AbsLArCells.h.

◆ m_cellInfoCache

std::vector<CellInfo*> LArSamples::AbsLArCells::m_cellInfoCache
mutableprivateinherited

Definition at line 53 of file AbsLArCells.h.

◆ m_pos

unsigned int LArSamples::AbsLArCells::m_pos
mutableprivateinherited

Definition at line 51 of file AbsLArCells.h.


The documentation for this class was generated from the following files:
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
python.CaloRecoConfig.f
f
Definition: CaloRecoConfig.py:127
get_generator_info.result
result
Definition: get_generator_info.py:21
runLayerRecalibration.chain
chain
Definition: runLayerRecalibration.py:175
LArSamples::AbsLArCells::newCellHistory
virtual const History * newCellHistory(unsigned int i) const
Definition: AbsLArCells.cxx:42
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
LArSamples::CellInfo::setShape
bool setShape(CaloGain::CaloGain gain, ShapeInfo *shape)
Definition: CellInfo.cxx:90
LArSamples::History::cellInfo
const CellInfo * cellInfo() const
Definition: History.h:61
LArSamples::AbsLArCells::cellHistory
virtual const History * cellHistory(unsigned int i) const
Definition: AbsLArCells.cxx:57
Data
@ Data
Definition: BaseObject.h:11
LArSamples::History
Definition: History.h:40
LArSamples::AbsLArCells::m_cellInfoCache
std::vector< CellInfo * > m_cellInfoCache
Definition: AbsLArCells.h:53
LArSamples::FilterList::filterParams
const FilterParams & filterParams(unsigned int i) const
Definition: FilterList.h:30
LArSamples::AbsLArCells::cellInfo
virtual const CellInfo * cellInfo(unsigned int i) const
Definition: AbsLArCells.cxx:69
CscCalibQuery.fileList
fileList
Definition: CscCalibQuery.py:330
LArSamples::MultiTreeAccessor::nAccessors
unsigned int nAccessors() const
Definition: MultiTreeAccessor.h:52
LArSamples::ShapeInfo
Definition: ShapeInfo.h:24
LArSamples::FilterList::add
void add(const FilterParams &params, const TString &fileName)
Definition: FilterList.h:27
python.setupRTTAlg.size
int size
Definition: setupRTTAlg.py:39
LArSamples::History::data
const Data * data(unsigned int i) const
Definition: History.cxx:88
LArSamples::TreeAccessor::getCellHistory
const History * getCellHistory(unsigned int i) const
Definition: TreeAccessor.cxx:51
FortranAlgorithmOptions.fileName
fileName
Definition: FortranAlgorithmOptions.py:13
LArSamples::Definitions::nChannels
static const unsigned int nChannels
Definition: Definitions.h:14
event
POOL::TEvent event(POOL::TEvent::kClassAccess)
lumiFormat.i
int i
Definition: lumiFormat.py:92
beamspotman.n
n
Definition: beamspotman.py:731
LArSamples::AbsLArCells::getCellInfo
virtual const CellInfo * getCellInfo(unsigned int i) const
Definition: AbsLArCells.cxx:86
LArSamples::CellInfo::shape
const ShapeInfo * shape(CaloGain::CaloGain gain) const
Definition: CellInfo.cxx:78
generateReferenceFile.files
files
Definition: generateReferenceFile.py:12
LArSamples::MultiTreeAccessor::MultiTreeAccessor
MultiTreeAccessor(const std::vector< const TreeAccessor * > &accessors)
Constructor
Definition: MultiTreeAccessor.h:32
ITk::EventData
InDet::SiSpacePointsSeedMakerEventData EventData
Definition: ITkSiSpacePointsSeedMaker.h:63
LArSamples::AbsLArCells::getCellHistory
virtual const History * getCellHistory(unsigned int i) const =0
LArSamples::History::nData
unsigned int nData() const
Definition: History.h:56
LArSamples::TreeAccessor::merge
static TreeAccessor * merge(const std::vector< const Accessor * > &accessors, const TString &fileName="")
Definition: TreeAccessor.cxx:73
LArSamples::TreeAccessor::nRuns
unsigned int nRuns() const
Definition: TreeAccessor.h:66
LArSamples::TreeAccessor::eventData
const EventData * eventData(unsigned int i) const
Definition: TreeAccessor.h:64
LArSamples::FilterList
Definition: FilterList.h:21
LArSamples::AbsLArCells::cellInfoCache
const CellInfo * cellInfoCache(unsigned int i) const
Definition: AbsLArCells.cxx:80
LArSamples::MultiTreeAccessor
Definition: MultiTreeAccessor.h:27
LArSamples::FilterList::fileName
const TString & fileName(unsigned int i) const
Definition: FilterList.h:31
LArSamples::AbsLArCells::m_cellCache
const History * m_cellCache
Definition: AbsLArCells.h:52
LArSamples::Data::gain
CaloGain::CaloGain gain() const
Definition: Data.h:90
LArSamples::CellInfo
Definition: CellInfo.h:31
LArSamples::HistoryContainer::cellInfo
const CellInfo * cellInfo() const
Definition: HistoryContainer.h:43
LArSamples::TreeAccessor::filter
static TreeAccessor * filter(const Accessor &accessor, const FilterParams &filterParams, const TString &fileName, const DataTweaker &tweaker)
Definition: TreeAccessor.cxx:292
LArSamples::HistoryContainer
Definition: HistoryContainer.h:29
LArSamples::TreeAccessor::runData
const RunData * runData(unsigned int i) const
Definition: TreeAccessor.h:67
generate::GetEntries
double GetEntries(TH1D *h, int ilow, int ihi)
Definition: rmsFrac.cxx:20
LArSamples::AbsLArCells::resetCache
virtual void resetCache() const
Definition: AbsLArCells.cxx:32
LArSamples::MultiTreeAccessor::accessor
const TreeAccessor & accessor(unsigned int i) const
Definition: MultiTreeAccessor.h:51
xAODRootTest.accessors
dictionary accessors
Definition: xAODRootTest.py:67
LArSamples::PersistentAccessor::historyContainer
const HistoryContainer * historyContainer(unsigned int i) const
Definition: PersistentAccessor.cxx:99
LArSamples::Data::eventData
const EventData * eventData() const
Definition: Data.h:100
LArSamples::History::eventData
const std::vector< const EventData * > & eventData() const
Definition: History.h:63
LArSamples::TreeAccessor
Definition: TreeAccessor.h:32
LArSamples::FilterList::size
unsigned int size() const
Definition: FilterList.h:29
LArSamples::TreeAccessor::nEvents
unsigned int nEvents() const
Definition: TreeAccessor.h:63
LArSamples::EventData
Definition: LArCalorimeter/LArCafJobs/LArCafJobs/EventData.h:29
LArSamples::PersistentAccessor::fileName
TString fileName() const
Definition: PersistentAccessor.cxx:135
LArSamples::AbsLArCells::nChannels
virtual unsigned int nChannels() const
Definition: AbsLArCells.h:34
LArSamples::MultiTreeAccessor::m_accessors
std::vector< const TreeAccessor * > m_accessors
Definition: MultiTreeAccessor.h:63
LArSamples::TreeAccessor::open
static TreeAccessor * open(const TString &fileName)
Definition: TreeAccessor.cxx:28
LArSamples::HistoryContainer::nDataContainers
unsigned int nDataContainers() const
Definition: HistoryContainer.h:40