Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
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 &scTree, 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 historySizeSC (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 HistorygetSCHistory (unsigned int i) const
 
const CellInfogetCellInfo (unsigned int i) const
 
const CellInfogetSCInfo (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 & SCTree () const
 
const TTree & eventTree () const
 
const TTree & runTree () const
 
TFile * file () const
 
TString fileName () const
 
const HistoryContainerhistoryContainer (unsigned int i) const
 
const HistoryContainerhistoryContainerSC (unsigned int i) const
 
void addSC (HistoryContainer *cont)
 
void addEvent (EventData *eventData)
 
void addRun (RunData *runData)
 
HistoryContainercurrentContainer () const
 
HistoryContainercurrentContainerSC () const
 
int getCellEntry (unsigned int i) const
 
int getSCEntry (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_SCTree
 
TTree * m_eventTree
 
TTree * m_runTree
 
TFile * m_file
 
HistoryContainerm_historyCont
 
HistoryContainerm_historyContSC
 
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 &  scTree,
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 70 of file TreeAccessor.h.

◆ addEvent()

void PersistentAccessor::addEvent ( EventData eventData)
inherited

Definition at line 175 of file PersistentAccessor.cxx.

176 {
178  m_eventTree->Fill();
179  m_eventData = nullptr;
180 }

◆ addRun()

void PersistentAccessor::addRun ( RunData runData)
inherited

Definition at line 183 of file PersistentAccessor.cxx.

184 {
185  m_runData = runData;
186  m_runTree->Fill();
187  m_runData = nullptr;
188 }

◆ addSC()

void PersistentAccessor::addSC ( HistoryContainer cont)
inherited

Definition at line 167 of file PersistentAccessor.cxx.

168 {
169  m_historyContSC = cont;
170  m_SCTree->Fill();
171  m_historyContSC = nullptr;
172 }

◆ 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 44 of file PersistentAccessor.h.

44 { return *m_cellTree; }

◆ currentContainer()

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

Definition at line 66 of file PersistentAccessor.h.

66 { return m_historyCont; }

◆ currentContainerSC()

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

Definition at line 67 of file PersistentAccessor.h.

67 { return m_historyContSC; }

◆ eventData()

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

Implements LArSamples::Accessor.

Definition at line 65 of file TreeAccessor.h.

◆ eventTree()

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

Definition at line 46 of file PersistentAccessor.h.

46 { return *m_eventTree; }

◆ file()

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

Definition at line 49 of file PersistentAccessor.h.

49 { return m_file; }

◆ fileName()

TString PersistentAccessor::fileName ( ) const
inherited

Definition at line 154 of file PersistentAccessor.cxx.

155 {
156  return (m_file ? m_file->GetName() : "");
157 }

◆ filter() [1/2]

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

Definition at line 324 of file TreeAccessor.cxx.

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

◆ filter() [2/2]

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

Definition at line 313 of file TreeAccessor.cxx.

317 {
318  FilterList filterList; filterList.add(filterParams, fileName);
319  std::vector<TreeAccessor*> result = filter(accessor, filterList, tweaker);
320  return (!result.empty() ? result[0] : nullptr);
321 }

◆ getCellEntry()

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

Definition at line 72 of file PersistentAccessor.h.

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

◆ getCellHistory()

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

Implements LArSamples::AbsLArCells.

Definition at line 62 of file TreeAccessor.cxx.

63 {
64  if (i >= cellTree().GetEntries()) return nullptr;
65  getCellEntry(i);
66 
67  std::vector<const EventData*> eventDatas;
68 
69  for (unsigned int k = 0; k < currentContainer()->nDataContainers(); k++) {
70  const EventData* evtData = eventData(currentContainer()->dataContainer(k)->eventIndex());
71  EventData* newEvtData = (evtData ? new EventData(*evtData) : nullptr);
72  eventDatas.push_back(newEvtData);
73  }
74  return (currentContainer()->cellInfo() ? new History(*currentContainer(), eventDatas, i) : nullptr);
75 }

◆ getCellInfo()

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

Reimplemented from LArSamples::AbsLArCells.

Definition at line 47 of file TreeAccessor.cxx.

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

◆ getSCEntry()

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

Definition at line 73 of file PersistentAccessor.h.

73 { return m_SCTree->GetEntry(i); }

◆ getSCHistory()

const History * TreeAccessor::getSCHistory ( unsigned int  i) const

Definition at line 77 of file TreeAccessor.cxx.

78 {
79  if (i >= SCTree().GetEntries()) return nullptr;
80  getSCEntry(i);
81 
82  std::vector<const EventData*> eventDatas;
83 
84  for (unsigned int k = 0; k < currentContainerSC()->nDataContainers(); k++) {
85  const EventData* evtData = eventData(currentContainerSC()->dataContainer(k)->eventIndex());
86  EventData* newEvtData = (evtData ? new EventData(*evtData) : nullptr);
87  eventDatas.push_back(newEvtData);
88  }
89  return (currentContainerSC()->cellInfo() ? new History(*currentContainerSC(), eventDatas, i) : nullptr);
90 }

◆ getSCInfo()

const CellInfo * TreeAccessor::getSCInfo ( unsigned int  i) const

Definition at line 54 of file TreeAccessor.cxx.

55 {
56  const HistoryContainer* cont = historyContainerSC(i);
57  if (!cont || !cont->cellInfo()) return nullptr;
58  return new CellInfo(*cont->cellInfo());
59 }

◆ historyContainer()

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

Definition at line 106 of file PersistentAccessor.cxx.

107 {
108  m_cellTree->GetEntry(i);
109  return m_historyCont;
110 }

◆ historyContainerSC()

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

Definition at line 112 of file PersistentAccessor.cxx.

113 {
114  m_SCTree->GetEntry(i);
115  return m_historyContSC;
116 }

◆ historySize()

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

Implements LArSamples::Accessor.

Definition at line 61 of file TreeAccessor.h.

◆ historySizeSC()

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

Implements LArSamples::Accessor.

Definition at line 62 of file TreeAccessor.h.

◆ makeTemplate()

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

Definition at line 446 of file TreeAccessor.cxx.

447 {
448  TreeAccessor* newAccessor = new TreeAccessor(fileName);
449 
450  std::vector<short> samples(5, 0);
451  std::vector<float> autoCorrs(4, 0);
452 
453  RunData* dummyRun = new RunData(0);
454  newAccessor->addRun(dummyRun);
455  delete dummyRun;
456 
457  EventData* dummyEvent = new EventData(0, 0, 0, 0);
458  newAccessor->addEvent(dummyEvent);
459  delete dummyEvent;
460 
461  for (unsigned int i = 0; i < accessor.nChannels(); i++) {
462  if (i % 25000 == 0)
463  cout << "Templating " << i << "/" << accessor.nChannels() << endl;
464  const History* history = accessor.cellHistory(i);
465  if (!history || !history->cellInfo()) {
467  newAccessor->add(newHist);
468  delete newHist;
469  continue;
470  }
471  HistoryContainer* newHist = new HistoryContainer(new CellInfo(*history->cellInfo()));
472  DataContainer* dataContainer = new DataContainer(CaloGain::LARHIGHGAIN, samples, 0, 0, 0, 0, autoCorrs);
473  newHist->add(dataContainer);
474  newAccessor->add(newHist);
475  delete newHist;
476  }
477 
478  newAccessor->save();
479  return newAccessor;
480 }

◆ merge() [1/4]

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

Definition at line 182 of file TreeAccessor.cxx.

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

◆ merge() [2/4]

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

Definition at line 92 of file TreeAccessor.cxx.

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

◆ merge() [3/4]

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

Definition at line 209 of file PersistentAccessor.cxx.

211 {
213  unsigned int size = 0;
214  CellInfo* info = nullptr;
215 
216  int evtIndex = 0, runIndex = 0;
217  std::map<std::pair<int, int>, int> evtMap;
218  std::map<int, int> runMap;
219  std::map< std::pair<const PersistentAccessor*, int>, int > evtAccMap;
220 
221  cout << "Merging runs" << endl;
222  for (const PersistentAccessor* accessor : accessors) {
223  if (!accessor) {
224  cout << "Cannot merge: one of the inputs is null!" << endl;
225  delete newAcc;
226  return nullptr;
227  }
228  for (unsigned int i = 0; i < accessor->nRuns(); i++) {
229  int run = accessor->runData(i)->run();
230  if (runMap.find(run) != runMap.end()) continue;
231  runMap[run] = runIndex;
232  RunData* newRun = new RunData(*accessor->runData(i));
233  newAcc->addRun(newRun);
234  delete newRun;
235  runIndex++;
236  }
237  }
238 
239  cout << "Merging events" << endl;
240  unsigned int nEventsTotal = 0, iEvt = 0;
241  for (const PersistentAccessor* accessor : accessors) {
242  nEventsTotal += accessor->nEvents();
243  }
244  for (const PersistentAccessor* accessor : accessors) {
245  for (unsigned int i = 0; i < accessor->nEvents(); i++) {
246  iEvt++;
247  if (iEvt % 100000 == 0) cout << "Merging event " << iEvt << "/" << nEventsTotal << endl;
248  std::pair<int, int> evtId(accessor->eventData(i)->run(), accessor->eventData(i)->event());
249  std::pair<const PersistentAccessor*, int> evtAccId(accessor, i);
250  if (evtMap.find(evtId) != evtMap.end()) {
251  cout << "ERROR: Skipping duplicate entry for run " << accessor->eventData(i)->run() << ", event " << accessor->eventData(i)->event() << endl;
252  continue;
253  }
254  evtAccMap[evtAccId] = evtIndex;
255  evtMap[evtId] = evtIndex;
256  std::map<int, int>::const_iterator idx = runMap.find(accessor->eventData(i)->run());
257  int newRunIndex = (idx == runMap.end() ? -999 : idx->second);
258  //cout << "Storing eventData for run " << accessor->eventData(i)->run() << " at index " << newRunIndex << " instead of " << accessor->eventData(i)->runIndex() << endl;
259  EventData* newEvent = new EventData(*accessor->eventData(i), newRunIndex);
260  newAcc->addEvent(newEvent);
261  delete newEvent;
262  evtIndex++;
263  }
264  }
265 
266 
267  cout << "Merging cells" << endl;
268  for (unsigned int i = 0; i < Definitions::nChannels; i++) {
269  if (i % 10000 == 0) {
270  cout << "Merging channel " << i << "/" << Definitions::nChannels << " (current size = " << size << ")" << endl;
271  //ClassCounts::printCountsTable();
272  }
273  HistoryContainer* newHistory = nullptr;
274  for (const PersistentAccessor* accessor : accessors) {
275  const HistoryContainer* history = accessor->historyContainer(i);
276  if (!history || !history->isValid()) continue;
277  if (!newHistory) {
278  info = new CellInfo(*history->cellInfo());
279  newHistory = new HistoryContainer(info);
280  }
281  for (unsigned int j = 0; j < history->nDataContainers(); j++) {
282  DataContainer* newDC = new DataContainer(*history->dataContainer(j));
283  std::map<std::pair<const PersistentAccessor*, int>, int>::const_iterator newIndex
284  = evtAccMap.find(std::make_pair(accessor, history->dataContainer(j)->eventIndex()));
285  if (newIndex == evtAccMap.end()) cout << "Event not found for cell " << i << ", data " << j << "." << endl;
286  newDC->setEventIndex(newIndex != evtAccMap.end() ? newIndex->second : -1);
287  newHistory->add(newDC);
288  if (!info->shape(history->dataContainer(j)->gain())) {
289  const ShapeInfo* shape = history->cellInfo()->shape(history->dataContainer(j)->gain());
290  //if (!shape)
291  // cout << "Shape not filled for hash = " << i << ", index = " << j << ", gain = " << history->dataContainer(j)->gain() << endl;
292  info->setShape(history->dataContainer(j)->gain(), (shape ? new ShapeInfo(*shape) : nullptr));
293  }
294  }
295  }
296  if (newHistory) size += newHistory->nDataContainers();
297  newAcc->add(newHistory);
298  delete newHistory;
299  }
300 
301 
302  cout << "Merging SC" << endl;
303  for (unsigned int i = 0; i < Definitions::nChannelsSC; i++) {
304  if (i % 10000 == 0) {
305  cout << "Merging channel " << i << "/" << Definitions::nChannelsSC << " (current size = " << size << ")" << endl;
306  //ClassCounts::printCountsTable();
307  }
308  HistoryContainer* newHistory = nullptr;
309  for (const PersistentAccessor* accessor : accessors) {
310  const HistoryContainer* history = accessor->historyContainerSC(i);
311  if (!history || !history->isValid()) continue;
312  if (!newHistory) {
313  info = new CellInfo(*history->cellInfo());
314  newHistory = new HistoryContainer(info);
315  }
316  for (unsigned int j = 0; j < history->nDataContainers(); j++) {
317  DataContainer* newDC = new DataContainer(*history->dataContainer(j));
318  std::map<std::pair<const PersistentAccessor*, int>, int>::const_iterator newIndex
319  = evtAccMap.find(std::make_pair(accessor, history->dataContainer(j)->eventIndex()));
320  if (newIndex == evtAccMap.end()) cout << "Event not found for cell " << i << ", data " << j << "." << endl;
321  newDC->setEventIndex(newIndex != evtAccMap.end() ? newIndex->second : -1);
322  newHistory->add(newDC);
323  if (!info->shape(history->dataContainer(j)->gain())) {
324  const ShapeInfo* shape = history->cellInfo()->shape(history->dataContainer(j)->gain());
325  //if (!shape)
326  // cout << "Shape not filled for hash = " << i << ", index = " << j << ", gain = " << history->dataContainer(j)->gain() << endl;
327  info->setShape(history->dataContainer(j)->gain(), (shape ? new ShapeInfo(*shape) : nullptr));
328  }
329  }
330  }
331  if (newHistory) size += newHistory->nDataContainers();
332  newAcc->addSC(newHistory);
333  delete newHistory;
334  }
335 
336  cout << "Merging done, final size = " << size << endl;
337  newAcc->save();
338  return newAcc;
339 }

◆ merge() [4/4]

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

Definition at line 342 of file PersistentAccessor.cxx.

343 {
344  std::vector<const PersistentAccessor*> accessors;
345  for (const TString& inputFile : inputFiles) {
347  if (!accessor) {
348  cout << "ERROR : could not open file " << inputFile << endl;
349  return nullptr;
350  }
351  accessors.push_back(accessor);
352  }
354  for (const PersistentAccessor* accessor : accessors) {
355  delete accessor;
356  }
357  return result;
358 }

◆ 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 64 of file TreeAccessor.h.

64 { 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 67 of file TreeAccessor.h.

67 { 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* scTree = (TTree*)file->Get("SC");
38  if (!scTree) return nullptr;
39  TTree* eventTree = (TTree*)file->Get("events");
40  if (!eventTree) return nullptr;
41  TTree* runTree = (TTree*)file->Get("runs");
43  return accessor;
44 }

◆ 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 68 of file TreeAccessor.h.

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

◆ runTree()

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

Definition at line 47 of file PersistentAccessor.h.

47 { return *m_runTree; }

◆ save()

bool PersistentAccessor::save ( ) const
inherited

Definition at line 191 of file PersistentAccessor.cxx.

192 {
193  if (!m_file) return 0;
194  m_file->cd();
195  cout << "Writing " << m_runTree->GetEntries() << " run(s)..." << endl;
196  m_runTree->Write();
197  cout << "Writing " << m_eventTree->GetEntries() << " event(s)..." << endl;
198  m_eventTree->Write();
199  cout << "Writing " << m_cellTree->GetEntries() << " cell(s)..." << endl;
200  m_cellTree->Write();
201  cout << "Writing " << m_SCTree->GetEntries() << " SC(s)..." << endl;
202  m_SCTree->Write();
203  m_file->Flush();
204  cout << "Writing done!" << endl;
205  return true;
206 }

◆ SCTree()

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

Definition at line 45 of file PersistentAccessor.h.

45 { return *m_SCTree; }

◆ writeToFile()

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

Implements LArSamples::Accessor.

Definition at line 482 of file TreeAccessor.cxx.

483 {
484  TFile* newFile = new TFile(fileName, "RECREATE");
485  if (newFile && !newFile->IsOpen()) { delete newFile; newFile = nullptr; }
486  if (!newFile) return false;
487 
488  cellTree().Write();
489  eventTree().Write();
490 
491  delete newFile;
492 
493  return true;
494 }

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 77 of file PersistentAccessor.h.

◆ m_eventData

EventData* LArSamples::PersistentAccessor::m_eventData
mutableprivateinherited

Definition at line 81 of file PersistentAccessor.h.

◆ m_eventTree

TTree * LArSamples::PersistentAccessor::m_eventTree
privateinherited

Definition at line 77 of file PersistentAccessor.h.

◆ m_file

TFile* LArSamples::PersistentAccessor::m_file
mutableprivateinherited

Definition at line 78 of file PersistentAccessor.h.

◆ m_historyCont

HistoryContainer* LArSamples::PersistentAccessor::m_historyCont
mutableprivateinherited

Definition at line 79 of file PersistentAccessor.h.

◆ m_historyContSC

HistoryContainer* LArSamples::PersistentAccessor::m_historyContSC
mutableprivateinherited

Definition at line 80 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 83 of file PersistentAccessor.h.

◆ m_runData

RunData* LArSamples::PersistentAccessor::m_runData
mutableprivateinherited

Definition at line 82 of file PersistentAccessor.h.

◆ m_runTree

TTree * LArSamples::PersistentAccessor::m_runTree
privateinherited

Definition at line 77 of file PersistentAccessor.h.

◆ m_SCTree

TTree * LArSamples::PersistentAccessor::m_SCTree
privateinherited

Definition at line 77 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::PersistentAccessor::m_SCTree
TTree * m_SCTree
Definition: PersistentAccessor.h:77
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
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:66
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:77
collListGuids.line
string line
Definition: collListGuids.py:77
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:141
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:47
LArSamples::ShapeInfo
Definition: ShapeInfo.h:24
LArSamples::PersistentAccessor::eventData
const EventData * eventData(unsigned int i) const
Definition: PersistentAccessor.cxx:132
LArSamples::PersistentAccessor::addEvent
void addEvent(EventData *eventData)
Definition: PersistentAccessor.cxx:175
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::SCTree
const TTree & SCTree() const
Definition: PersistentAccessor.h:45
LArSamples::PersistentAccessor::file
TFile * file() const
Definition: PersistentAccessor.h:49
LArSamples::PersistentAccessor::add
void add(HistoryContainer *cont)
Definition: PersistentAccessor.cxx:160
LArSamples::PersistentAccessor::m_historyContSC
HistoryContainer * m_historyContSC
Definition: PersistentAccessor.h:80
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::Definitions::nChannels
static const unsigned int nChannels
Definition: LArCalorimeter/LArCafJobs/LArCafJobs/Definitions.h:14
LArSamples::PersistentAccessor::nEvents
unsigned int nEvents() const
Definition: PersistentAccessor.h:55
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::historySizeSC
unsigned int historySizeSC(unsigned int i) const
Definition: PersistentAccessor.cxx:125
LArSamples::PersistentAccessor::historySize
unsigned int historySize(unsigned int i) const
Definition: PersistentAccessor.cxx:119
LArSamples::EventData::run
int run() const
Definition: EventData.cxx:59
hist_file_dump.f
f
Definition: hist_file_dump.py:141
LArSamples::PersistentAccessor::m_file
TFile * m_file
Definition: PersistentAccessor.h:78
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:79
LArSamples::PersistentAccessor::m_eventData
EventData * m_eventData
Definition: PersistentAccessor.h:81
LArSamples::TreeAccessor::eventData
const EventData * eventData(unsigned int i) const
Definition: TreeAccessor.h:65
LArSamples::PersistentAccessor::open
static PersistentAccessor * open(const TString &fileName)
Definition: PersistentAccessor.cxx:68
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:72
LArSamples::PersistentAccessor::nRuns
unsigned int nRuns() const
Definition: PersistentAccessor.h:58
LArSamples::PersistentAccessor::cellTree
const TTree & cellTree() const
Definition: PersistentAccessor.h:44
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::Data::dissolve
const DataContainer * dissolve()
Definition: Data.cxx:56
LArSamples::PersistentAccessor::m_runTree
TTree * m_runTree
Definition: PersistentAccessor.h:77
LArSamples::Data::gain
CaloGain::CaloGain gain() const
Definition: Data.h:85
LArSamples::PersistentAccessor::m_eventTree
TTree * m_eventTree
Definition: PersistentAccessor.h:77
CaloGain::LARHIGHGAIN
@ LARHIGHGAIN
Definition: CaloGain.h:18
LArSamples::CellInfo
Definition: CellInfo.h:31
LArSamples::PersistentAccessor::historyContainerSC
const HistoryContainer * historyContainerSC(unsigned int i) const
Definition: PersistentAccessor.cxx:112
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:191
LArSamples::TreeAccessor::filter
static TreeAccessor * filter(const Accessor &accessor, const FilterParams &filterParams, const TString &fileName, const DataTweaker &tweaker)
Definition: TreeAccessor.cxx:313
LArSamples::DataContainer
Definition: DataContainer.h:25
LArSamples::PersistentAccessor::m_runData
RunData * m_runData
Definition: PersistentAccessor.h:82
LArSamples::HistoryContainer
Definition: HistoryContainer.h:29
LArSamples::PersistentAccessor::currentContainerSC
HistoryContainer * currentContainerSC() const
Definition: PersistentAccessor.h:67
LArSamples::Definitions::nChannelsSC
static const unsigned int nChannelsSC
Definition: LArCalorimeter/LArCafJobs/LArCafJobs/Definitions.h:15
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
LArSamples::PersistentAccessor::getSCEntry
int getSCEntry(unsigned int i) const
Definition: PersistentAccessor.h:73
LArNewCalib_DelayDump_OFC_Cali.idx
idx
Definition: LArNewCalib_DelayDump_OFC_Cali.py:69
LArSamples::PersistentAccessor::addSC
void addSC(HistoryContainer *cont)
Definition: PersistentAccessor.cxx:167
LArSamples::PersistentAccessor::eventTree
const TTree & eventTree() const
Definition: PersistentAccessor.h:46
LArSamples::AbsLArCells::resetCache
virtual void resetCache() const
Definition: AbsLArCells.cxx:34
LArSamples::TreeAccessor::TreeAccessor
TreeAccessor(TTree &cellTree, TTree &scTree, TTree &eventTree, TTree *runTree, TFile *file)
Constructor
Definition: TreeAccessor.h:37
xAODRootTest.accessors
dictionary accessors
Definition: xAODRootTest.py:73
LArSamples::PersistentAccessor::addRun
void addRun(RunData *runData)
Definition: PersistentAccessor.cxx:183
LArSamples::TreeAccessor::add
void add(HistoryContainer *cont)
Definition: TreeAccessor.h:70
LArSamples::PersistentAccessor::historyContainer
const HistoryContainer * historyContainer(unsigned int i) const
Definition: PersistentAccessor.cxx:106
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:209
LArSamples::EventData
Definition: LArCalorimeter/LArCafJobs/LArCafJobs/EventData.h:29
LArSamples::PersistentAccessor::fileName
TString fileName() const
Definition: PersistentAccessor.cxx:154
LArSamples::PersistentAccessor::PersistentAccessor
PersistentAccessor(TTree &cellTree, TTree &SCTree, TTree &eventTree, TTree *runTree, TFile *file)
Constructor
Definition: PersistentAccessor.cxx:26
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