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 &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 unsigned int nChannelsSC () 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 48 of file AbsLArCells.h.

48 { return m_pos; }

◆ cellCache()

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

Definition at line 47 of file AbsLArCells.h.

47 { 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 362 of file TreeAccessor.cxx.

365 {
366  if (filterList.size() == 0) {
367  cout << "No filter categories specified, done! (?)" << endl;
368  return std::vector<TreeAccessor*>();
369  }
370 
371  for (unsigned int f = 0; f < filterList.size(); f++) {
372  cout << "Skimming to " << filterList.fileName(f) << endl;
373  if (!gSystem->AccessPathName(filterList.fileName(f))) {
374  cout << "File already exists, exiting." << endl;
375  return std::vector<TreeAccessor*>();
376  }
377  }
378 
379  std::vector<TreeAccessor*> newAccessors;
380  for (unsigned int f = 0; f < filterList.size(); f++)
381  newAccessors.push_back(new TreeAccessor(filterList.fileName(f)));
382  std::map<std::pair<unsigned int, unsigned int>, unsigned int> eventIndices;
383  std::vector< std::map<unsigned int, unsigned int> > eventsToKeep(filterList.size());
384  std::vector< std::map<unsigned int, unsigned int> > runsToKeep(filterList.size());
385 
386  double nTot = 0, nPass = 0;
387 
388  for (unsigned int i = 0; i < accessor.nEvents(); i++) {
389  const EventData* eventData = accessor.eventData(i);
390  eventIndices[std::pair<unsigned int, unsigned int>(eventData->run(), eventData->event())] = i;
391  }
392 
393  for (unsigned int i = 0; i < accessor.nChannels(); i++) {
394  if (i % 25000 == 0) {
395  cout << "Filtering " << i << "/" << accessor.nChannels()
396  << " (passing so far = " << nPass << ", total seen = " << nTot << ")" << endl;
397  //ClassCounts::printCountsTable();
398  }
399  bool first = true;
400 
401  const History* history = nullptr;
402  for (unsigned int f = 0; f < filterList.size(); f++) {
403  history = accessor.pass(i, filterList.filterParams(f));
404  if (history) break;
405  }
406  for (unsigned int f = 0; f < filterList.size(); f++) {
407  if (!history || !history->cellInfo() || !filterList.filterParams(f).passCell(*history->cellInfo())) {
409  newAccessors[f]->add(newHist);
410  delete newHist;
411  continue;
412  }
413  if (first) { nTot += history->nData(); first = false; }
414  HistoryContainer* newHist = new HistoryContainer(new CellInfo(*history->cellInfo()));
415  for (unsigned int k = 0; k < history->nData(); k++) {
416  if (!filterList.filterParams(f).passEvent(*history->data(k))) continue;
417  const EventData* eventData = history->data(k)->eventData();
418  std::map<std::pair<unsigned int, unsigned int>, unsigned int>::const_iterator findIndex =
419  eventIndices.find(std::pair<unsigned int, unsigned int>(eventData->run(), eventData->event()));
420  if (findIndex == eventIndices.end()) {
421  cout << "Inconsistent event numbering!!!" << endl;
422  delete newHist;
423  return std::vector<TreeAccessor*>();
424  }
425  int oldEvtIndex = findIndex->second;
426  bool isNewEvt = (eventsToKeep[f].find(oldEvtIndex) == eventsToKeep[f].end());
427  unsigned int newEvtIndex = (isNewEvt ? eventsToKeep[f].size() : eventsToKeep[f][oldEvtIndex]);
428  if (isNewEvt) eventsToKeep[f][oldEvtIndex] = newEvtIndex;
429 
430  int oldRunIndex = history->data(k)->eventData()->runIndex();
431  bool isNewRun = (runsToKeep[f].find(oldRunIndex) == runsToKeep[f].end());
432  unsigned int newRunIndex = (isNewRun ? runsToKeep[f].size() : runsToKeep[f][oldRunIndex]);
433  if (isNewRun) runsToKeep[f][oldRunIndex] = newRunIndex;
434 
435  Data* newData = tweaker.tweak(*history->data(k), newEvtIndex);
436  if (!newData) {
437  cout << "Filtering failed on data " << k << " of cell " << i << ", aborting" << endl;
438  delete newHist;
439  for (unsigned int f = 0; f < filterList.size(); f++) delete newAccessors[f];
440  return std::vector<TreeAccessor*>();
441  }
442  nPass++;
443  newHist->add(newData->dissolve());
444  }
445  newAccessors[f]->add(newHist);
446  delete newHist;
447  }
448  }
449 
450  for (unsigned int f = 0; f < filterList.size(); f++) {
451  cout << "Adding runs..." << endl;
452  std::vector<unsigned int> runsToKeep_ordered(runsToKeep[f].size());
453  for (const auto& runIndex : runsToKeep[f])
454  runsToKeep_ordered[runIndex.second] = runIndex.first;
455 
456  for (unsigned int runIndex : runsToKeep_ordered) {
457  RunData* newRun = new RunData(*accessor.runData(runIndex));
458  newAccessors[f]->addRun(newRun);
459  delete newRun;
460  }
461  cout << "Adding events..." << endl;
462  std::vector<unsigned int> eventsToKeep_ordered(eventsToKeep[f].size());
463  for (const auto& eventIndex : eventsToKeep[f])
464  eventsToKeep_ordered[eventIndex.second] = eventIndex.first;
465 
466  for (unsigned int eventIndex : eventsToKeep_ordered) {
467  std::map<unsigned int, unsigned int>::const_iterator idx = runsToKeep[f].find(accessor.eventData(eventIndex)->runIndex());
468  int newRunIndex = (idx == runsToKeep[f].end() ? 0 : idx->second);
469  EventData* newEvent = tweaker.tweak(*accessor.eventData(eventIndex), newRunIndex);
470  newAccessors[f]->addEvent(newEvent);
471  delete newEvent;
472  }
473  }
474  cout << "Filtering done! final size = " << nPass << endl;
475  //ClassCounts::printCountsTable();
476  for (unsigned int f = 0; f < filterList.size(); f++) {
477  cout << "Saving " << newAccessors[f]->fileName() << endl;
478  newAccessors[f]->save();
479  }
480  return newAccessors;
481 }

◆ filter() [2/2]

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

Definition at line 351 of file TreeAccessor.cxx.

355 {
356  FilterList filterList; filterList.add(filterParams, fileName);
357  std::vector<TreeAccessor*> result = filter(accessor, filterList, tweaker);
358  return (!result.empty() ? result[0] : nullptr);
359 }

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

Implements LArSamples::AbsLArCells.

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 484 of file TreeAccessor.cxx.

485 {
486  TreeAccessor* newAccessor = new TreeAccessor(fileName);
487 
488  std::vector<short> samples(5, 0);
489  std::vector<float> autoCorrs(4, 0);
490 
491  RunData* dummyRun = new RunData(0);
492  newAccessor->addRun(dummyRun);
493  delete dummyRun;
494 
495  EventData* dummyEvent = new EventData(0, 0, 0, 0);
496  newAccessor->addEvent(dummyEvent);
497  delete dummyEvent;
498 
499  for (unsigned int i = 0; i < accessor.nChannels(); i++) {
500  if (i % 25000 == 0)
501  cout << "Templating " << i << "/" << accessor.nChannels() << endl;
502  const History* history = accessor.cellHistory(i);
503  if (!history || !history->cellInfo()) {
505  newAccessor->add(newHist);
506  delete newHist;
507  continue;
508  }
509  HistoryContainer* newHist = new HistoryContainer(new CellInfo(*history->cellInfo()));
510  DataContainer* dataContainer = new DataContainer(CaloGain::LARHIGHGAIN, samples, 0, 0, 0, 0, autoCorrs);
511  newHist->add(dataContainer);
512  newAccessor->add(newHist);
513  delete newHist;
514  }
515 
516  newAccessor->save();
517  return newAccessor;
518 }

◆ 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  cout << "Merging cells" << endl;
271  for (unsigned int i = 0; i < newAcc->nChannels(); i++) {
272  if (i % 10000 == 0) {
273  cout << "Merging channel " << i << "/" << newAcc->nChannels() << " (current size = " << size << ")" << endl;
274  //ClassCounts::printCountsTable();
275  }
277  for (const Accessor* accessor : accessors) {
278  const History* history = accessor->cellHistory(i);
279  if (!history || !history->isValid()) continue;
280  if (!historyContainer) {
281  info = new CellInfo(*history->cellInfo());
283  }
284  for (unsigned int j = 0; j < history->nData(); j++) {
285  DataContainer* newDC = new DataContainer(history->data(j)->container());
286  std::map<std::pair<int, int>, int>::const_iterator newIndex
287  = evtMap.find(std::make_pair(history->data(j)->run(), history->data(j)->event()));
288  //if (newIndex == evtMap.end()) cout << "Event not found for cell " << i << ", data " << j << "." << endl;
289  newDC->setEventIndex(newIndex != evtMap.end() ? newIndex->second : -1);
290  historyContainer->add(newDC);
291  if (!info->shape(history->data(j)->gain())) {
292  const ShapeInfo* shape = history->cellInfo()->shape(history->data(j)->gain());
293  if (!shape)
294  cout << "Shape not filled for hash = " << i << ", index = " << j << ", gain = " << Data::gainStr(history->data(j)->gain()) << endl;
295  info->setShape(history->data(j)->gain(), (shape ? new ShapeInfo(*shape) : nullptr));
296  }
297  }
298  }
299  if(historyContainer){
301  }
302  newAcc->add(historyContainer);
303  delete historyContainer;
304  historyContainer=nullptr;
305  //}
306  }
307 
308  cout << "Merging SC" << endl;
309  for (unsigned int i = 0; i < newAcc->nChannelsSC(); i++) {
310  if (i % 10000 == 0) {
311  cout << "Merging channel " << i << "/" << newAcc->nChannelsSC() << " (current size = " << size << ")" << endl;
312  }
314  for (const Accessor* accessor : accessors) {
315  const History* history = accessor->getSCHistory(i);
316  if (!history || !history->isValid()) continue;
317  if (!historyContainer) {
318  info = new CellInfo(*history->cellInfo());
320  }
321  for (unsigned int j = 0; j < history->nData(); j++) {
322  DataContainer* newDC = new DataContainer(history->data(j)->container());
323  std::map<std::pair<int, int>, int>::const_iterator newIndex
324  = evtMap.find(std::make_pair(history->data(j)->run(), history->data(j)->event()));
325  //if (newIndex == evtMap.end()) cout << "Event not found for cell " << i << ", data " << j << "." << endl;
326  newDC->setEventIndex(newIndex != evtMap.end() ? newIndex->second : -1);
327  historyContainer->add(newDC);
328  if (!info->shape(history->data(j)->gain())) {
329  const ShapeInfo* shape = history->cellInfo()->shape(history->data(j)->gain());
330  if (!shape)
331  cout << "Shape not filled for hash = " << i << ", index = " << j << ", gain = " << Data::gainStr(history->data(j)->gain()) << endl;
332  info->setShape(history->data(j)->gain(), (shape ? new ShapeInfo(*shape) : nullptr));
333  }
334  }
335  }
336  if(historyContainer){
338  }
339  newAcc->addSC(historyContainer);
340  delete historyContainer;
341  historyContainer=nullptr;
342  //}
343  }
344 
345  cout << "Merging done, final size = " << size << endl;
346  newAcc->save();
347  return newAcc;
348 }

◆ 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  cout << "Merging cells" << endl;
267  for (unsigned int i = 0; i < Definitions::nChannels; i++) {
268  if (i % 10000 == 0) {
269  cout << "Merging channel " << i << "/" << Definitions::nChannels << " (current size = " << size << ")" << endl;
270  //ClassCounts::printCountsTable();
271  }
272  HistoryContainer* newHistory = nullptr;
273  for (const PersistentAccessor* accessor : accessors) {
274  const HistoryContainer* history = accessor->historyContainer(i);
275  if (!history || !history->isValid()) continue;
276  if (!newHistory) {
277  info = new CellInfo(*history->cellInfo());
278  newHistory = new HistoryContainer(info);
279  }
280  for (unsigned int j = 0; j < history->nDataContainers(); j++) {
281  DataContainer* newDC = new DataContainer(*history->dataContainer(j));
282  std::map<std::pair<const PersistentAccessor*, int>, int>::const_iterator newIndex
283  = evtAccMap.find(std::make_pair(accessor, history->dataContainer(j)->eventIndex()));
284  if (newIndex == evtAccMap.end()) cout << "Event not found for cell " << i << ", data " << j << "." << endl;
285  newDC->setEventIndex(newIndex != evtAccMap.end() ? newIndex->second : -1);
286  newHistory->add(newDC);
287  if (!info->shape(history->dataContainer(j)->gain())) {
288  const ShapeInfo* shape = history->cellInfo()->shape(history->dataContainer(j)->gain());
289  //if (!shape)
290  // cout << "Shape not filled for hash = " << i << ", index = " << j << ", gain = " << history->dataContainer(j)->gain() << endl;
291  info->setShape(history->dataContainer(j)->gain(), (shape ? new ShapeInfo(*shape) : nullptr));
292  }
293  }
294  }
295  if (newHistory) size += newHistory->nDataContainers();
296  newAcc->add(newHistory);
297  delete newHistory;
298  }
299 
300 
301  cout << "Merging SC" << endl;
302  size=0;
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 
337  cout << "Merging done, final size = " << size << endl;
338  newAcc->save();
339  return newAcc;
340 }

◆ merge() [4/4]

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

Definition at line 343 of file PersistentAccessor.cxx.

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

◆ 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; }

◆ nChannelsSC()

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

Definition at line 35 of file AbsLArCells.h.

35 { return Definitions::nChannelsSC; }

◆ 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 520 of file TreeAccessor.cxx.

521 {
522  TFile* newFile = new TFile(fileName, "RECREATE");
523  if (newFile && !newFile->IsOpen()) { delete newFile; newFile = nullptr; }
524  if (!newFile) return false;
525 
526  cellTree().Write();
527  eventTree().Write();
528 
529  delete newFile;
530 
531  return true;
532 }

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 55 of file AbsLArCells.h.

◆ m_cellInfoCache

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

Definition at line 56 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 54 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:
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:54
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
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:56
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
dq_defect_bulk_create_defects.line
line
Definition: dq_defect_bulk_create_defects.py:27
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:16
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:140
LArSamples::PersistentAccessor::m_file
TFile * m_file
Definition: PersistentAccessor.h:78
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:55
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:351
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:534
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
LArSamples::AbsLArCells::nChannelsSC
virtual unsigned int nChannelsSC() const
Definition: AbsLArCells.h:35
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
python.ParticleTypeUtil.info
def info
Definition: ParticleTypeUtil.py:87
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