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

#include <TreeAccessor.h>

Inheritance diagram for LArSamples::TreeAccessor:
Collaboration diagram for LArSamples::TreeAccessor:

Public Member Functions

 TreeAccessor (TTree &cellTree, TTree &eventTree, TTree *runTree, TFile *file)
 Constructor
More...
 
 TreeAccessor (const TString &fileName)
 
virtual ~TreeAccessor ()
 
bool writeToFile (const TString &fileName) const
 
unsigned int historySize (unsigned int i) const
 
unsigned int nEvents () const
 
const EventDataeventData (unsigned int i) const
 
unsigned int nRuns () const
 
const RunDatarunData (unsigned int i) const
 
void add (HistoryContainer *cont)
 
const HistorygetCellHistory (unsigned int i) const
 
const CellInfogetCellInfo (unsigned int i) 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 ()
 
bool save () const
 
const TTree & cellTree () const
 
const TTree & eventTree () const
 
const TTree & runTree () const
 
TFile * file () const
 
TString fileName () const
 
const HistoryContainerhistoryContainer (unsigned int i) const
 
void addEvent (EventData *eventData)
 
void addRun (RunData *runData)
 
HistoryContainercurrentContainer () const
 
int getCellEntry (unsigned int i) const
 

Static Public Member Functions

static TreeAccessoropen (const TString &fileName)
 
static TreeAccessormerge (const std::vector< const Accessor * > &accessors, const TString &fileName="")
 
static TreeAccessormerge (const std::vector< const Accessor * > &accessors, const TString &fileName, const TString &LBFile)
 
static TreeAccessorfilter (const Accessor &accessor, const FilterParams &filterParams, const TString &fileName, const DataTweaker &tweaker)
 
static std::vector< TreeAccessor * > filter (const Accessor &accessor, const FilterList &filterList, const DataTweaker &tweaker)
 
static TreeAccessormakeTemplate (const Accessor &accessor, const TString &fileName)
 
static PersistentAccessormerge (const std::vector< const PersistentAccessor * > &accessors, const TString &fileName)
 
static PersistentAccessormerge (const std::vector< TString > &inputFiles, const TString &fileName)
 

Private Attributes

unsigned int m_pos
 
const Historym_cellCache
 
std::vector< CellInfo * > m_cellInfoCache
 
TTree * m_cellTree
 
TTree * m_eventTree
 
TTree * m_runTree
 
TFile * m_file
 
HistoryContainerm_historyCont
 
EventDatam_eventData
 
RunDatam_runData
 
std::map< unsigned int, const RunData * > m_runCache
 

Friends

class Interface
 

Detailed Description

Definition at line 32 of file TreeAccessor.h.

Constructor & Destructor Documentation

◆ TreeAccessor() [1/2]

LArSamples::TreeAccessor::TreeAccessor ( TTree &  cellTree,
TTree &  eventTree,
TTree *  runTree,
TFile *  file 
)
inline

Constructor

Definition at line 37 of file TreeAccessor.h.

◆ TreeAccessor() [2/2]

LArSamples::TreeAccessor::TreeAccessor ( const TString &  fileName)
inline

Definition at line 40 of file TreeAccessor.h.

◆ ~TreeAccessor()

virtual LArSamples::TreeAccessor::~TreeAccessor ( )
inlinevirtual

Definition at line 44 of file TreeAccessor.h.

44 { resetCache(); }

Member Function Documentation

◆ add()

void LArSamples::TreeAccessor::add ( HistoryContainer cont)
inline

Definition at line 69 of file TreeAccessor.h.

◆ addEvent()

void PersistentAccessor::addEvent ( EventData eventData)
inherited

Definition at line 149 of file PersistentAccessor.cxx.

150 {
152  m_eventTree->Fill();
153  m_eventData = nullptr;
154 }

◆ addRun()

void PersistentAccessor::addRun ( RunData runData)
inherited

Definition at line 157 of file PersistentAccessor.cxx.

158 {
159  m_runData = runData;
160  m_runTree->Fill();
161  m_runData = nullptr;
162 }

◆ 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 59 of file AbsLArCells.cxx.

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 }

◆ cellInfo()

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

Definition at line 71 of file AbsLArCells.cxx.

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 }

◆ cellInfoCache()

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

Definition at line 82 of file AbsLArCells.cxx.

83 {
84  return m_cellInfoCache[i];
85 }

◆ cellTree()

const TTree& LArSamples::PersistentAccessor::cellTree ( ) const
inlineinherited

Definition at line 43 of file PersistentAccessor.h.

43 { return *m_cellTree; }

◆ currentContainer()

HistoryContainer* LArSamples::PersistentAccessor::currentContainer ( ) const
inlineinherited

Definition at line 62 of file PersistentAccessor.h.

62 { return m_historyCont; }

◆ eventData()

const EventData* LArSamples::TreeAccessor::eventData ( unsigned int  i) const
inlinevirtual

Implements LArSamples::Accessor.

Definition at line 64 of file TreeAccessor.h.

◆ eventTree()

const TTree& LArSamples::PersistentAccessor::eventTree ( ) const
inlineinherited

Definition at line 44 of file PersistentAccessor.h.

44 { return *m_eventTree; }

◆ file()

TFile* LArSamples::PersistentAccessor::file ( ) const
inlineinherited

Definition at line 47 of file PersistentAccessor.h.

47 { return m_file; }

◆ fileName()

TString PersistentAccessor::fileName ( ) const
inherited

Definition at line 135 of file PersistentAccessor.cxx.

136 {
137  return (m_file ? m_file->GetName() : "");
138 }

◆ filter() [1/2]

std::vector< TreeAccessor * > TreeAccessor::filter ( const Accessor accessor,
const FilterList filterList,
const DataTweaker tweaker 
)
static

Definition at line 307 of file TreeAccessor.cxx.

310 {
311  if (filterList.size() == 0) {
312  cout << "No filter categories specified, done! (?)" << endl;
313  return std::vector<TreeAccessor*>();
314  }
315 
316  for (unsigned int f = 0; f < filterList.size(); f++) {
317  cout << "Skimming to " << filterList.fileName(f) << endl;
318  if (!gSystem->AccessPathName(filterList.fileName(f))) {
319  cout << "File already exists, exiting." << endl;
320  return std::vector<TreeAccessor*>();
321  }
322  }
323 
324  std::vector<TreeAccessor*> newAccessors;
325  for (unsigned int f = 0; f < filterList.size(); f++)
326  newAccessors.push_back(new TreeAccessor(filterList.fileName(f)));
327  std::map<std::pair<unsigned int, unsigned int>, unsigned int> eventIndices;
328  std::vector< std::map<unsigned int, unsigned int> > eventsToKeep(filterList.size());
329  std::vector< std::map<unsigned int, unsigned int> > runsToKeep(filterList.size());
330 
331  double nTot = 0, nPass = 0;
332 
333  for (unsigned int i = 0; i < accessor.nEvents(); i++) {
334  const EventData* eventData = accessor.eventData(i);
335  eventIndices[std::pair<unsigned int, unsigned int>(eventData->run(), eventData->event())] = i;
336  }
337 
338  for (unsigned int i = 0; i < accessor.nChannels(); i++) {
339  if (i % 25000 == 0) {
340  cout << "Filtering " << i << "/" << accessor.nChannels()
341  << " (passing so far = " << nPass << ", total seen = " << nTot << ")" << endl;
342  //ClassCounts::printCountsTable();
343  }
344  bool first = true;
345 
346  const History* history = nullptr;
347  for (unsigned int f = 0; f < filterList.size(); f++) {
348  history = accessor.pass(i, filterList.filterParams(f));
349  if (history) break;
350  }
351  for (unsigned int f = 0; f < filterList.size(); f++) {
352  if (!history || !history->cellInfo() || !filterList.filterParams(f).passCell(*history->cellInfo())) {
354  newAccessors[f]->add(newHist);
355  delete newHist;
356  continue;
357  }
358  if (first) { nTot += history->nData(); first = false; }
359  HistoryContainer* newHist = new HistoryContainer(new CellInfo(*history->cellInfo()));
360  for (unsigned int k = 0; k < history->nData(); k++) {
361  if (!filterList.filterParams(f).passEvent(*history->data(k))) continue;
362  const EventData* eventData = history->data(k)->eventData();
363  std::map<std::pair<unsigned int, unsigned int>, unsigned int>::const_iterator findIndex =
364  eventIndices.find(std::pair<unsigned int, unsigned int>(eventData->run(), eventData->event()));
365  if (findIndex == eventIndices.end()) {
366  cout << "Inconsistent event numbering!!!" << endl;
367  delete newHist;
368  return std::vector<TreeAccessor*>();
369  }
370  int oldEvtIndex = findIndex->second;
371  bool isNewEvt = (eventsToKeep[f].find(oldEvtIndex) == eventsToKeep[f].end());
372  unsigned int newEvtIndex = (isNewEvt ? eventsToKeep[f].size() : eventsToKeep[f][oldEvtIndex]);
373  if (isNewEvt) eventsToKeep[f][oldEvtIndex] = newEvtIndex;
374 
375  int oldRunIndex = history->data(k)->eventData()->runIndex();
376  bool isNewRun = (runsToKeep[f].find(oldRunIndex) == runsToKeep[f].end());
377  unsigned int newRunIndex = (isNewRun ? runsToKeep[f].size() : runsToKeep[f][oldRunIndex]);
378  if (isNewRun) runsToKeep[f][oldRunIndex] = newRunIndex;
379 
380  Data* newData = tweaker.tweak(*history->data(k), newEvtIndex);
381  if (!newData) {
382  cout << "Filtering failed on data " << k << " of cell " << i << ", aborting" << endl;
383  delete newHist;
384  for (unsigned int f = 0; f < filterList.size(); f++) delete newAccessors[f];
385  return std::vector<TreeAccessor*>();
386  }
387  nPass++;
388  newHist->add(newData->dissolve());
389  }
390  newAccessors[f]->add(newHist);
391  delete newHist;
392  }
393  }
394 
395  for (unsigned int f = 0; f < filterList.size(); f++) {
396  cout << "Adding runs..." << endl;
397  std::vector<unsigned int> runsToKeep_ordered(runsToKeep[f].size());
398  for (const auto& runIndex : runsToKeep[f])
399  runsToKeep_ordered[runIndex.second] = runIndex.first;
400 
401  for (unsigned int runIndex : runsToKeep_ordered) {
402  RunData* newRun = new RunData(*accessor.runData(runIndex));
403  newAccessors[f]->addRun(newRun);
404  delete newRun;
405  }
406  cout << "Adding events..." << endl;
407  std::vector<unsigned int> eventsToKeep_ordered(eventsToKeep[f].size());
408  for (const auto& eventIndex : eventsToKeep[f])
409  eventsToKeep_ordered[eventIndex.second] = eventIndex.first;
410 
411  for (unsigned int eventIndex : eventsToKeep_ordered) {
412  std::map<unsigned int, unsigned int>::const_iterator idx = runsToKeep[f].find(accessor.eventData(eventIndex)->runIndex());
413  int newRunIndex = (idx == runsToKeep[f].end() ? 0 : idx->second);
414  EventData* newEvent = tweaker.tweak(*accessor.eventData(eventIndex), newRunIndex);
415  newAccessors[f]->addEvent(newEvent);
416  delete newEvent;
417  }
418  }
419  cout << "Filtering done! final size = " << nPass << endl;
420  //ClassCounts::printCountsTable();
421  for (unsigned int f = 0; f < filterList.size(); f++) {
422  cout << "Saving " << newAccessors[f]->fileName() << endl;
423  newAccessors[f]->save();
424  }
425  return newAccessors;
426 }

◆ filter() [2/2]

TreeAccessor * TreeAccessor::filter ( const Accessor accessor,
const FilterParams filterParams,
const TString &  fileName,
const DataTweaker tweaker 
)
static

Definition at line 296 of file TreeAccessor.cxx.

300 {
301  FilterList filterList; filterList.add(filterParams, fileName);
302  std::vector<TreeAccessor*> result = filter(accessor, filterList, tweaker);
303  return (!result.empty() ? result[0] : nullptr);
304 }

◆ getCellEntry()

int LArSamples::PersistentAccessor::getCellEntry ( unsigned int  i) const
inlineinherited

Definition at line 67 of file PersistentAccessor.h.

67 { return m_cellTree->GetEntry(i); }

◆ getCellHistory()

const History * TreeAccessor::getCellHistory ( unsigned int  i) const
virtual

Implements LArSamples::AbsLArCells.

Definition at line 53 of file TreeAccessor.cxx.

54 {
55  //cout << "A" << endl;
56  if (i >= cellTree().GetEntries()) return nullptr;
57  //cout << "---> TTree::GetEntry " << i << endl;
58  getCellEntry(i);
59  //cout << "---> done TTree::GetEntry" << endl;
60 
61  //cout << "B " << currentContainer()->nDataContainers() << endl;
62  std::vector<const EventData*> eventDatas;
63 
64  for (unsigned int k = 0; k < currentContainer()->nDataContainers(); k++) {
65  const EventData* evtData = eventData(currentContainer()->dataContainer(k)->eventIndex());
66  EventData* newEvtData = (evtData ? new EventData(*evtData) : nullptr);
67  eventDatas.push_back(newEvtData);
68  }
69  //cout << "C" << endl;
70  //cout << "---> TreeAcc : make new hist" << endl;
71  return (currentContainer()->cellInfo() ? new History(*currentContainer(), eventDatas, i) : nullptr);
72 }

◆ getCellInfo()

const CellInfo * TreeAccessor::getCellInfo ( unsigned int  i) const
virtual

Reimplemented from LArSamples::AbsLArCells.

Definition at line 45 of file TreeAccessor.cxx.

46 {
47  const HistoryContainer* cont = historyContainer(i);
48  if (!cont || !cont->cellInfo()) return nullptr;
49  return new CellInfo(*cont->cellInfo());
50 }

◆ historyContainer()

const HistoryContainer * PersistentAccessor::historyContainer ( unsigned int  i) const
inherited

Definition at line 99 of file PersistentAccessor.cxx.

100 {
101  m_cellTree->GetEntry(i);
102  return m_historyCont;
103 }

◆ historySize()

unsigned int LArSamples::TreeAccessor::historySize ( unsigned int  i) const
inlinevirtual

Implements LArSamples::Accessor.

Definition at line 61 of file TreeAccessor.h.

◆ makeTemplate()

TreeAccessor * TreeAccessor::makeTemplate ( const Accessor accessor,
const TString &  fileName 
)
static

Definition at line 429 of file TreeAccessor.cxx.

430 {
431  TreeAccessor* newAccessor = new TreeAccessor(fileName);
432 
433  std::vector<short> samples(5, 0);
434  std::vector<float> autoCorrs(4, 0);
435 
436  RunData* dummyRun = new RunData(0);
437  newAccessor->addRun(dummyRun);
438  delete dummyRun;
439 
440  EventData* dummyEvent = new EventData(0, 0, 0, 0);
441  newAccessor->addEvent(dummyEvent);
442  delete dummyEvent;
443 
444  for (unsigned int i = 0; i < accessor.nChannels(); i++) {
445  if (i % 25000 == 0)
446  cout << "Templating " << i << "/" << accessor.nChannels() << endl;
447  const History* history = accessor.cellHistory(i);
448  if (!history || !history->cellInfo()) {
450  newAccessor->add(newHist);
451  delete newHist;
452  continue;
453  }
454  HistoryContainer* newHist = new HistoryContainer(new CellInfo(*history->cellInfo()));
455  DataContainer* dataContainer = new DataContainer(CaloGain::LARHIGHGAIN, samples, 0, 0, 0, 0, autoCorrs);
456  newHist->add(dataContainer);
457  newAccessor->add(newHist);
458  delete newHist;
459  }
460 
461  newAccessor->save();
462  return newAccessor;
463 }

◆ merge() [1/4]

TreeAccessor * TreeAccessor::merge ( const std::vector< const Accessor * > &  accessors,
const TString &  fileName,
const TString &  LBFile 
)
static

Definition at line 165 of file TreeAccessor.cxx.

166 {
167  // O.Simard - 01.07.2011
168  // Alternative version with LB cleaning.
169 
170  bool kBadLB=false;
171  std::vector<unsigned int> LBList;
172  std::ifstream infile(LBFile.Data());
173  std::string line;
174  // assume single-line format with coma-separated LBs (from python)
175  std::getline(infile,line,'\n');
176  TString filter(line.c_str());
177  TObjArray* list = filter.Tokenize(", "); // coma\space delimiters
178  if(list->GetEntries() == 0){
179  printf("No LB filtering specified, or bad format. Exiting.\n");
180  delete list;
181  return nullptr;
182  }
183 
184  for(int k = 0; k < list->GetEntries(); k++){
185  TObjString* tobs = (TObjString*)(list->At(k));
186  LBList.push_back((unsigned int)(tobs->String()).Atoi());
187  }
188  delete list;
189  printf("LB List: %d\n",(int)LBList.size());
190 
191 
192  // from here it is similar to other functions of this class
193  TreeAccessor* newAcc = new TreeAccessor(fileName);
194  unsigned int size = 0;
195  CellInfo* info = nullptr;
196 
197  int evtIndex = 0, runIndex = 0;
198  std::map<std::pair<int, int>, int> evtMap;
199  std::map<int, int> runMap;
200 
201  cout << "Merging runs" << endl;
202  for (const Accessor* accessor : accessors) {
203  if (!accessor) {
204  cout << "Cannot merge: one of the inputs is null!" << endl;
205  delete newAcc;
206  return nullptr;
207  }
208  for (unsigned int i = 0; i < accessor->nRuns(); i++) {
209  int run = accessor->runData(i)->run();
210  if (runMap.find(run) != runMap.end()) continue;
211  runMap[run] = runIndex;
212  RunData* newRun = new RunData(*accessor->runData(i));
213  newAcc->addRun(newRun);
214  delete newRun;
215  runIndex++;
216  }
217  }
218 
219  cout << "Merging events" << endl;
220  unsigned int nEventsTotal = 0, iEvt = 0;
221  for (const Accessor* accessor : accessors)
222  nEventsTotal += accessor->nEvents();
223  for (const Accessor* accessor : accessors) {
224  for (unsigned int i = 0; i < accessor->nEvents(); i++) {
225  iEvt++;
226  if (iEvt % 100000 == 0) cout << "Merging event " << iEvt << "/" << nEventsTotal << endl;
227 
228  // ----
229  // skip LBs which are found in the list
230  kBadLB=false;
231  for(unsigned int ilb = 0 ; ilb < LBList.size() ; ilb++){
232  if(LBList.at(ilb)==accessor->eventData(i)->lumiBlock()){
233  kBadLB=true;
234  //printf(" == Rejecting Event in LB %4d\n",accessor->eventData(i)->lumiBlock());
235  break;
236  }
237  }
238  if(kBadLB) continue;
239  // ----
240 
241  std::pair<int, int> evtId(accessor->eventData(i)->run(), accessor->eventData(i)->event());
242  if (evtMap.find(evtId) != evtMap.end()) continue;
243  evtMap[evtId] = evtIndex;
244  std::map<int, int>::const_iterator idx = runMap.find(accessor->eventData(i)->run());
245  int newRunIndex = (idx == runMap.end() ? -999 : idx->second);
246  EventData* newEvent = new EventData(*accessor->eventData(i), newRunIndex);
247  newAcc->addEvent(newEvent);
248  delete newEvent;
249  evtIndex++;
250  }
251  }
252 
253  for (unsigned int i = 0; i < newAcc->nChannels(); i++) {
254  if (i % 10000 == 0) {
255  cout << "Merging channel " << i << "/" << newAcc->nChannels() << " (current size = " << size << ")" << endl;
256  //ClassCounts::printCountsTable();
257  }
259  for (const Accessor* accessor : accessors) {
260  const History* history = accessor->cellHistory(i);
261  if (!history || !history->isValid()) continue;
262  if (!historyContainer) {
263  info = new CellInfo(*history->cellInfo());
265  }
266  for (unsigned int j = 0; j < history->nData(); j++) {
267  DataContainer* newDC = new DataContainer(history->data(j)->container());
268  std::map<std::pair<int, int>, int>::const_iterator newIndex
269  = evtMap.find(std::make_pair(history->data(j)->run(), history->data(j)->event()));
270  //if (newIndex == evtMap.end()) cout << "Event not found for cell " << i << ", data " << j << "." << endl;
271  newDC->setEventIndex(newIndex != evtMap.end() ? newIndex->second : -1);
272  historyContainer->add(newDC);
273  if (!info->shape(history->data(j)->gain())) {
274  const ShapeInfo* shape = history->cellInfo()->shape(history->data(j)->gain());
275  if (!shape)
276  cout << "Shape not filled for hash = " << i << ", index = " << j << ", gain = " << Data::gainStr(history->data(j)->gain()) << endl;
277  info->setShape(history->data(j)->gain(), (shape ? new ShapeInfo(*shape) : nullptr));
278  }
279  }
280  }
281  if(historyContainer){
283  }
284  newAcc->add(historyContainer);
285  delete historyContainer;
286  historyContainer=nullptr;
287  //}
288  }
289 
290  cout << "Merging done, final size = " << size << endl;
291  newAcc->save();
292  return newAcc;
293 }

◆ merge() [2/4]

TreeAccessor * TreeAccessor::merge ( const std::vector< const Accessor * > &  accessors,
const TString &  fileName = "" 
)
static

Definition at line 75 of file TreeAccessor.cxx.

77 {
78  cout << "Merging to " << fileName << endl;
79  TreeAccessor* newAcc = new TreeAccessor(fileName);
80  unsigned int size = 0;
81  CellInfo* info = nullptr;
82 
83  int evtIndex = 0, runIndex = 0;
84  std::map<std::pair<int, int>, int> evtMap;
85  std::map<int, int> runMap;
86 
87  cout << "Merging runs" << endl;
88  for (const Accessor* accessor : accessors) {
89  if (!accessor) {
90  cout << "Cannot merge: one of the inputs is null!" << endl;
91  delete newAcc;
92  return nullptr;
93  }
94  for (unsigned int i = 0; i < accessor->nRuns(); i++) {
95  int run = accessor->runData(i)->run();
96  if (runMap.find(run) != runMap.end()) continue;
97  runMap[run] = runIndex;
98  RunData* newRun = new RunData(*accessor->runData(i));
99  newAcc->addRun(newRun);
100  delete newRun;
101  runIndex++;
102  }
103  }
104 
105  cout << "Merging events" << endl;
106  unsigned int nEventsTotal = 0, iEvt = 0;
107  for (const Accessor* accessor : accessors)
108  nEventsTotal += accessor->nEvents();
109  for (const Accessor* accessor : accessors) {
110  for (unsigned int i = 0; i < accessor->nEvents(); i++) {
111  iEvt++;
112  if (iEvt % 100000 == 0) cout << "Merging event " << iEvt << "/" << nEventsTotal << endl;
113  std::pair<int, int> evtId(accessor->eventData(i)->run(), accessor->eventData(i)->event());
114  if (evtMap.find(evtId) != evtMap.end()) continue;
115  evtMap[evtId] = evtIndex;
116  std::map<int, int>::const_iterator idx = runMap.find(accessor->eventData(i)->run());
117  int newRunIndex = (idx == runMap.end() ? -999 : idx->second);
118  //cout << "Storing eventData for run " << accessor->eventData(i)->run() << " at index " << newRunIndex << " instead of " << accessor->eventData(i)->runIndex() << endl;
119  EventData* newEvent = new EventData(*accessor->eventData(i), newRunIndex);
120  newAcc->addEvent(newEvent);
121  delete newEvent;
122  evtIndex++;
123  }
124  }
125 
126  for (unsigned int i = 0; i < newAcc->nChannels(); i++) {
127  if (i % 10000 == 0) {
128  cout << "Merging channel " << i << "/" << newAcc->nChannels() << " (current size = " << size << ")" << endl;
129  //ClassCounts::printCountsTable();
130  }
132  for (const Accessor* accessor : accessors) {
133  const History* history = accessor->cellHistory(i);
134  if (!history || !history->isValid()) continue;
135  if (!historyContainer) {
136  info = new CellInfo(*history->cellInfo());
138  }
139  for (unsigned int j = 0; j < history->nData(); j++) {
140  DataContainer* newDC = new DataContainer(history->data(j)->container());
141  std::map<std::pair<int, int>, int>::const_iterator newIndex
142  = evtMap.find(std::make_pair(history->data(j)->run(), history->data(j)->event()));
143  if (newIndex == evtMap.end()) cout << "Event not found for cell " << i << ", data " << j << "." << endl;
144  newDC->setEventIndex(newIndex != evtMap.end() ? newIndex->second : -1);
145  historyContainer->add(newDC);
146  if (!info->shape(history->data(j)->gain())) {
147  const ShapeInfo* shape = history->cellInfo()->shape(history->data(j)->gain());
148  if (!shape)
149  cout << "Shape not filled for hash = " << i << ", index = " << j << ", gain = " << Data::gainStr(history->data(j)->gain()) << endl;
150  info->setShape(history->data(j)->gain(), (shape ? new ShapeInfo(*shape) : nullptr));
151  }
152  }
153  }
155  newAcc->add(historyContainer);
156  delete historyContainer;
157  }
158 
159  cout << "Merging done, final size = " << size << endl;
160  newAcc->save();
161  return newAcc;
162 }

◆ merge() [3/4]

PersistentAccessor * PersistentAccessor::merge ( const std::vector< const PersistentAccessor * > &  accessors,
const TString &  fileName 
)
staticinherited

Definition at line 181 of file PersistentAccessor.cxx.

183 {
185  unsigned int size = 0;
186  CellInfo* info = nullptr;
187 
188  int evtIndex = 0, runIndex = 0;
189  std::map<std::pair<int, int>, int> evtMap;
190  std::map<int, int> runMap;
191  std::map< std::pair<const PersistentAccessor*, int>, int > evtAccMap;
192 
193  cout << "Merging runs" << endl;
194  for (const PersistentAccessor* accessor : accessors) {
195  if (!accessor) {
196  cout << "Cannot merge: one of the inputs is null!" << endl;
197  delete newAcc;
198  return nullptr;
199  }
200  for (unsigned int i = 0; i < accessor->nRuns(); i++) {
201  int run = accessor->runData(i)->run();
202  if (runMap.find(run) != runMap.end()) continue;
203  runMap[run] = runIndex;
204  RunData* newRun = new RunData(*accessor->runData(i));
205  newAcc->addRun(newRun);
206  delete newRun;
207  runIndex++;
208  }
209  }
210 
211  cout << "Merging events" << endl;
212  unsigned int nEventsTotal = 0, iEvt = 0;
213  for (const PersistentAccessor* accessor : accessors) {
214  nEventsTotal += accessor->nEvents();
215  }
216  for (const PersistentAccessor* accessor : accessors) {
217  for (unsigned int i = 0; i < accessor->nEvents(); i++) {
218  iEvt++;
219  if (iEvt % 100000 == 0) cout << "Merging event " << iEvt << "/" << nEventsTotal << endl;
220  std::pair<int, int> evtId(accessor->eventData(i)->run(), accessor->eventData(i)->event());
221  std::pair<const PersistentAccessor*, int> evtAccId(accessor, i);
222  if (evtMap.find(evtId) != evtMap.end()) {
223  cout << "ERROR: Skipping duplicate entry for run " << accessor->eventData(i)->run() << ", event " << accessor->eventData(i)->event() << endl;
224  continue;
225  }
226  evtAccMap[evtAccId] = evtIndex;
227  evtMap[evtId] = evtIndex;
228  std::map<int, int>::const_iterator idx = runMap.find(accessor->eventData(i)->run());
229  int newRunIndex = (idx == runMap.end() ? -999 : idx->second);
230  //cout << "Storing eventData for run " << accessor->eventData(i)->run() << " at index " << newRunIndex << " instead of " << accessor->eventData(i)->runIndex() << endl;
231  EventData* newEvent = new EventData(*accessor->eventData(i), newRunIndex);
232  newAcc->addEvent(newEvent);
233  delete newEvent;
234  evtIndex++;
235  }
236  }
237 
238  for (unsigned int i = 0; i < Definitions::nChannels; i++) {
239  if (i % 10000 == 0) {
240  cout << "Merging channel " << i << "/" << Definitions::nChannels << " (current size = " << size << ")" << endl;
241  //ClassCounts::printCountsTable();
242  }
243  HistoryContainer* newHistory = nullptr;
244  for (const PersistentAccessor* accessor : accessors) {
245  const HistoryContainer* history = accessor->historyContainer(i);
246  if (!history || !history->isValid()) continue;
247  if (!newHistory) {
248  info = new CellInfo(*history->cellInfo());
249  newHistory = new HistoryContainer(info);
250  }
251  for (unsigned int j = 0; j < history->nDataContainers(); j++) {
252  DataContainer* newDC = new DataContainer(*history->dataContainer(j));
253  std::map<std::pair<const PersistentAccessor*, int>, int>::const_iterator newIndex
254  = evtAccMap.find(std::make_pair(accessor, history->dataContainer(j)->eventIndex()));
255  if (newIndex == evtAccMap.end()) cout << "Event not found for cell " << i << ", data " << j << "." << endl;
256  newDC->setEventIndex(newIndex != evtAccMap.end() ? newIndex->second : -1);
257  newHistory->add(newDC);
258  if (!info->shape(history->dataContainer(j)->gain())) {
259  const ShapeInfo* shape = history->cellInfo()->shape(history->dataContainer(j)->gain());
260  if (!shape)
261  cout << "Shape not filled for hash = " << i << ", index = " << j << ", gain = " << history->dataContainer(j)->gain() << endl;
262  info->setShape(history->dataContainer(j)->gain(), (shape ? new ShapeInfo(*shape) : nullptr));
263  }
264  }
265  }
266  if (newHistory) size += newHistory->nDataContainers();
267  newAcc->add(newHistory);
268  delete newHistory;
269  }
270 
271  cout << "Merging done, final size = " << size << endl;
272  newAcc->save();
273  return newAcc;
274 }

◆ merge() [4/4]

PersistentAccessor * PersistentAccessor::merge ( const std::vector< TString > &  inputFiles,
const TString &  fileName 
)
staticinherited

Definition at line 277 of file PersistentAccessor.cxx.

278 {
279  std::vector<const PersistentAccessor*> accessors;
280  for (const TString& inputFile : inputFiles) {
282  if (!accessor) {
283  cout << "ERROR : could not open file " << inputFile << endl;
284  return nullptr;
285  }
286  accessors.push_back(accessor);
287  }
289  for (const PersistentAccessor* accessor : accessors) {
290  delete accessor;
291  }
292  return result;
293 }

◆ 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 LArSamples::TreeAccessor::nEvents ( ) const
inlinevirtual

Implements LArSamples::Accessor.

Definition at line 63 of file TreeAccessor.h.

63 { return PersistentAccessor::nEvents(); }

◆ newCellHistory()

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

Definition at line 44 of file AbsLArCells.cxx.

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 }

◆ nRuns()

unsigned int LArSamples::TreeAccessor::nRuns ( ) const
inlinevirtual

Implements LArSamples::Accessor.

Definition at line 66 of file TreeAccessor.h.

66 { return PersistentAccessor::nRuns(); }

◆ open()

TreeAccessor * TreeAccessor::open ( const TString &  fileName)
static

Definition at line 30 of file TreeAccessor.cxx.

31 {
32  TFile* file = TFile::Open(fileName);
33  if (!file) return nullptr;
34  if (!file->IsOpen()) { delete file; return nullptr; }
35  TTree* cellTree = (TTree*)file->Get("cells");
36  if (!cellTree) return nullptr;
37  TTree* eventTree = (TTree*)file->Get("events");
38  if (!eventTree) return nullptr;
39  TTree* runTree = (TTree*)file->Get("runs");
41  return accessor;
42 }

◆ pass()

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

Definition at line 99 of file AbsLArCells.cxx.

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 }

◆ resetCache()

void AbsLArCells::resetCache ( ) const
virtualinherited

Definition at line 34 of file AbsLArCells.cxx.

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

◆ resetCellInfoCache()

void AbsLArCells::resetCellInfoCache ( )
inherited

Definition at line 114 of file AbsLArCells.cxx.

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

◆ runData()

const RunData* LArSamples::TreeAccessor::runData ( unsigned int  i) const
inlinevirtual

Implements LArSamples::Accessor.

Definition at line 67 of file TreeAccessor.h.

67 { return PersistentAccessor::runData(i); }

◆ runTree()

const TTree& LArSamples::PersistentAccessor::runTree ( ) const
inlineinherited

Definition at line 45 of file PersistentAccessor.h.

45 { return *m_runTree; }

◆ save()

bool PersistentAccessor::save ( ) const
inherited

Definition at line 165 of file PersistentAccessor.cxx.

166 {
167  if (!m_file) return 0;
168  m_file->cd();
169  cout << "Writing " << m_runTree->GetEntries() << " run(s)..." << endl;
170  m_runTree->Write();
171  cout << "Writing " << m_eventTree->GetEntries() << " event(s)..." << endl;
172  m_eventTree->Write();
173  cout << "Writing " << m_cellTree->GetEntries() << " cell(s)..." << endl;
174  m_cellTree->Write();
175  m_file->Flush();
176  cout << "Writing done!" << endl;
177  return true;
178 }

◆ writeToFile()

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

Implements LArSamples::Accessor.

Definition at line 465 of file TreeAccessor.cxx.

466 {
467  TFile* newFile = new TFile(fileName, "RECREATE");
468  if (newFile && !newFile->IsOpen()) { delete newFile; newFile = nullptr; }
469  if (!newFile) return false;
470 
471  cellTree().Write();
472  eventTree().Write();
473 
474  delete newFile;
475 
476  return true;
477 }

Friends And Related Function Documentation

◆ Interface

friend class Interface
friend

Definition at line 55 of file TreeAccessor.h.

Member Data Documentation

◆ 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_cellTree

TTree* LArSamples::PersistentAccessor::m_cellTree
privateinherited

Definition at line 71 of file PersistentAccessor.h.

◆ m_eventData

EventData* LArSamples::PersistentAccessor::m_eventData
mutableprivateinherited

Definition at line 74 of file PersistentAccessor.h.

◆ m_eventTree

TTree * LArSamples::PersistentAccessor::m_eventTree
privateinherited

Definition at line 71 of file PersistentAccessor.h.

◆ m_file

TFile* LArSamples::PersistentAccessor::m_file
mutableprivateinherited

Definition at line 72 of file PersistentAccessor.h.

◆ m_historyCont

HistoryContainer* LArSamples::PersistentAccessor::m_historyCont
mutableprivateinherited

Definition at line 73 of file PersistentAccessor.h.

◆ m_pos

unsigned int LArSamples::AbsLArCells::m_pos
mutableprivateinherited

Definition at line 51 of file AbsLArCells.h.

◆ m_runCache

std::map<unsigned int, const RunData*> LArSamples::PersistentAccessor::m_runCache
mutableprivateinherited

Definition at line 76 of file PersistentAccessor.h.

◆ m_runData

RunData* LArSamples::PersistentAccessor::m_runData
mutableprivateinherited

Definition at line 75 of file PersistentAccessor.h.

◆ m_runTree

TTree * LArSamples::PersistentAccessor::m_runTree
privateinherited

Definition at line 71 of file PersistentAccessor.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::FilterParams::passCell
bool passCell(const CellInfo &info) const
Definition: FilterParams.cxx:482
LArSamples::FilterParams::passEvent
bool passEvent(const Data &data) const
Definition: FilterParams.cxx:427
LArSamples::AbsLArCells::m_pos
unsigned int m_pos
Definition: AbsLArCells.h:51
checkFileSG.line
line
Definition: checkFileSG.py:75
LArSamples::Data::container
const DataContainer & container() const
Definition: Data.h:156
get_generator_info.result
result
Definition: get_generator_info.py:21
LArSamples::PersistentAccessor::currentContainer
HistoryContainer * currentContainer() const
Definition: PersistentAccessor.h:62
LArSamples::AbsLArCells::newCellHistory
virtual const History * newCellHistory(unsigned int i) const
Definition: AbsLArCells.cxx:44
run.infile
string infile
Definition: run.py:13
LArSamples::PersistentAccessor::m_cellTree
TTree * m_cellTree
Definition: PersistentAccessor.h:71
LArSamples::EventData::event
int event() const
Definition: LArCalorimeter/LArCafJobs/LArCafJobs/EventData.h:44
LArSamples::DataContainer::gain
CaloGain::CaloGain gain() const
Definition: DataContainer.h:54
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::PersistentAccessor::runData
const RunData * runData(unsigned int i) const
Definition: PersistentAccessor.cxx:122
Epos_Base_Fragment.inputFiles
string inputFiles
Definition: Epos_Base_Fragment.py:18
LArSamples::Accessor
A base class for accessing ntuple data.
Definition: LArCalorimeter/LArSamplesMon/LArSamplesMon/Accessor.h:24
LArSamples::History
Definition: History.h:35
LArSamples::HistoryContainer::dataContainer
const DataContainer * dataContainer(unsigned int i) const
Definition: HistoryContainer.h:41
LArSamples::AbsLArCells::m_cellInfoCache
std::vector< CellInfo * > m_cellInfoCache
Definition: AbsLArCells.h:53
checkCorrelInHIST.ilb
ilb
Definition: checkCorrelInHIST.py:563
LArSamples::PersistentAccessor
Definition: PersistentAccessor.h:24
LArSamples::FilterList::filterParams
const FilterParams & filterParams(unsigned int i) const
Definition: FilterList.h:30
LArSamples::Data::run
int run() const
Definition: Data.cxx:27
run
int run(int argc, char *argv[])
Definition: ttree2hdf5.cxx:28
LArSamples::AbsLArCells::cellInfo
virtual const CellInfo * cellInfo(unsigned int i) const
Definition: AbsLArCells.cxx:71
LArSamples::EventData::runIndex
int runIndex() const
Definition: LArCalorimeter/LArCafJobs/LArCafJobs/EventData.h:53
GetEntries
TGraphErrors * GetEntries(TH2F *histo)
Definition: TRTCalib_makeplots.cxx:4019
LArSamples::PersistentAccessor::runTree
const TTree & runTree() const
Definition: PersistentAccessor.h:45
LArSamples::ShapeInfo
Definition: ShapeInfo.h:24
LArSamples::PersistentAccessor::eventData
const EventData * eventData(unsigned int i) const
Definition: PersistentAccessor.cxx:113
LArSamples::PersistentAccessor::addEvent
void addEvent(EventData *eventData)
Definition: PersistentAccessor.cxx:149
LArSamples::FilterList::add
void add(const FilterParams &params, const TString &fileName)
Definition: FilterList.h:27
LArSamples::Data::event
int event() const
Definition: Data.cxx:28
LArSamples::PersistentAccessor::file
TFile * file() const
Definition: PersistentAccessor.h:47
LArSamples::PersistentAccessor::add
void add(HistoryContainer *cont)
Definition: PersistentAccessor.cxx:141
python.setupRTTAlg.size
int size
Definition: setupRTTAlg.py:39
LArSamples::RunData
Definition: RunData.h:21
LArSamples::History::data
const Data * data(unsigned int i) const
Definition: History.cxx:91
LArSamples::PersistentAccessor::PersistentAccessor
PersistentAccessor(TTree &cellTree, TTree &eventTree, TTree *runTree, TFile *file)
Constructor
Definition: PersistentAccessor.cxx:26
LArSamples::Definitions::nChannels
static const unsigned int nChannels
Definition: LArCalorimeter/LArCafJobs/LArCafJobs/Definitions.h:14
LArSamples::PersistentAccessor::nEvents
unsigned int nEvents() const
Definition: PersistentAccessor.h:52
CaloCondBlobAlgs_fillNoiseFromASCII.inputFile
string inputFile
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:17
lumiFormat.i
int i
Definition: lumiFormat.py:85
LArSamples::Data::gainStr
static TString gainStr(CaloGain::CaloGain gain)
Definition: Data.cxx:505
LArSamples::AbsLArCells::getCellInfo
virtual const CellInfo * getCellInfo(unsigned int i) const
Definition: AbsLArCells.cxx:88
LArSamples::CellInfo::shape
const ShapeInfo * shape(CaloGain::CaloGain gain) const
Definition: CellInfo.cxx:78
MakeNewFileFromOldAndSubstitution.newHist
dictionary newHist
Definition: ICHEP2016/MakeNewFileFromOldAndSubstitution.py:96
LArSamples::HistoryContainer::isValid
bool isValid() const
Definition: HistoryContainer.cxx:52
LArSamples::PersistentAccessor::historySize
unsigned int historySize(unsigned int i) const
Definition: PersistentAccessor.cxx:106
LArSamples::EventData::run
int run() const
Definition: EventData.cxx:59
hist_file_dump.f
f
Definition: hist_file_dump.py:135
LArSamples::PersistentAccessor::m_file
TFile * m_file
Definition: PersistentAccessor.h:72
ITk::EventData
InDet::SiSpacePointsSeedMakerEventData EventData
Definition: ITkSiSpacePointsSeedMaker.h:63
run
Definition: run.py:1
histSizes.list
def list(name, path='/')
Definition: histSizes.py:38
LArSamples::AbsLArCells::getCellHistory
virtual const History * getCellHistory(unsigned int i) const =0
LArSamples::History::nData
unsigned int nData() const
Definition: History.h:51
LArSamples::PersistentAccessor::m_historyCont
HistoryContainer * m_historyCont
Definition: PersistentAccessor.h:73
LArSamples::PersistentAccessor::m_eventData
EventData * m_eventData
Definition: PersistentAccessor.h:74
LArSamples::TreeAccessor::eventData
const EventData * eventData(unsigned int i) const
Definition: TreeAccessor.h:64
LArSamples::PersistentAccessor::open
static PersistentAccessor * open(const TString &fileName)
Definition: PersistentAccessor.cxx:65
LArSamples::FilterList
Definition: FilterList.h:21
LArSamples::DataTweaker::tweak
Data * tweak(const Data &data, int evtIndex=-1) const
Definition: DataTweaker.cxx:47
LArSamples::PersistentAccessor::getCellEntry
int getCellEntry(unsigned int i) const
Definition: PersistentAccessor.h:67
LArSamples::PersistentAccessor::nRuns
unsigned int nRuns() const
Definition: PersistentAccessor.h:55
LArSamples::PersistentAccessor::cellTree
const TTree & cellTree() const
Definition: PersistentAccessor.h:43
LArSamples::AbsLArCells::cellInfoCache
const CellInfo * cellInfoCache(unsigned int i) const
Definition: AbsLArCells.cxx:82
LArSamples::Data
Definition: Data.h:72
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::TreeAccessor::TreeAccessor
TreeAccessor(TTree &cellTree, TTree &eventTree, TTree *runTree, TFile *file)
Constructor
Definition: TreeAccessor.h:37
LArSamples::Data::dissolve
const DataContainer * dissolve()
Definition: Data.cxx:56
LArSamples::PersistentAccessor::m_runTree
TTree * m_runTree
Definition: PersistentAccessor.h:71
LArSamples::Data::gain
CaloGain::CaloGain gain() const
Definition: Data.h:85
LArSamples::PersistentAccessor::m_eventTree
TTree * m_eventTree
Definition: PersistentAccessor.h:71
CaloGain::LARHIGHGAIN
@ LARHIGHGAIN
Definition: CaloGain.h:18
LArSamples::CellInfo
Definition: CellInfo.h:31
xAOD::JetAttributeAccessor::accessor
const AccessorWrapper< T > * accessor(xAOD::JetAttribute::AttributeID id)
Returns an attribute accessor corresponding to an AttributeID.
Definition: JetAccessorMap.h:26
LArSamples::HistoryContainer::cellInfo
const CellInfo * cellInfo() const
Definition: HistoryContainer.h:43
LArSamples::PersistentAccessor::save
bool save() const
Definition: PersistentAccessor.cxx:165
LArSamples::TreeAccessor::filter
static TreeAccessor * filter(const Accessor &accessor, const FilterParams &filterParams, const TString &fileName, const DataTweaker &tweaker)
Definition: TreeAccessor.cxx:296
LArSamples::DataContainer
Definition: DataContainer.h:25
LArSamples::PersistentAccessor::m_runData
RunData * m_runData
Definition: PersistentAccessor.h:75
LArSamples::HistoryContainer
Definition: HistoryContainer.h:29
LArSamples::DataContainer::eventIndex
int eventIndex() const
Definition: DataContainer.h:64
LArSamples::HistoryContainer::add
void add(const DataContainer *data)
append data (takes ownership)
Definition: HistoryContainer.h:46
DeMoScan.first
bool first
Definition: DeMoScan.py:536
LArNewCalib_DelayDump_OFC_Cali.idx
idx
Definition: LArNewCalib_DelayDump_OFC_Cali.py:69
LArSamples::PersistentAccessor::eventTree
const TTree & eventTree() const
Definition: PersistentAccessor.h:44
LArSamples::AbsLArCells::resetCache
virtual void resetCache() const
Definition: AbsLArCells.cxx:34
xAODRootTest.accessors
dictionary accessors
Definition: xAODRootTest.py:73
LArSamples::PersistentAccessor::addRun
void addRun(RunData *runData)
Definition: PersistentAccessor.cxx:157
LArSamples::TreeAccessor::add
void add(HistoryContainer *cont)
Definition: TreeAccessor.h:69
LArSamples::PersistentAccessor::historyContainer
const HistoryContainer * historyContainer(unsigned int i) const
Definition: PersistentAccessor.cxx:99
LArSamples::Data::eventData
const EventData * eventData() const
Definition: Data.h:95
LArSamples::History::isValid
bool isValid() const
Definition: History.cxx:152
LArSamples::TreeAccessor
Definition: TreeAccessor.h:32
LArSamples::FilterList::size
unsigned int size() const
Definition: FilterList.h:29
LArSamples::PersistentAccessor::merge
static PersistentAccessor * merge(const std::vector< const PersistentAccessor * > &accessors, const TString &fileName)
Definition: PersistentAccessor.cxx:181
LArSamples::EventData
Definition: LArCalorimeter/LArCafJobs/LArCafJobs/EventData.h:29
LArSamples::PersistentAccessor::fileName
TString fileName() const
Definition: PersistentAccessor.cxx:135
LArSamples::DataContainer::setEventIndex
void setEventIndex(int index)
Definition: DataContainer.h:92
LArSamples::AbsLArCells::nChannels
virtual unsigned int nChannels() const
Definition: AbsLArCells.h:34
fitman.k
k
Definition: fitman.py:528
LArSamples::HistoryContainer::nDataContainers
unsigned int nDataContainers() const
Definition: HistoryContainer.h:40
EventInfoCnvParams::eventIndex
thread_local event_number_t eventIndex
Definition: IEvtIdModifierSvc.h:34