ATLAS Offline Software
Loading...
Searching...
No Matches
LArSamples::TimingMonitor Class Reference

storage of the time histories of all the cells More...

#include <TimingMonitor.h>

Inheritance diagram for LArSamples::TimingMonitor:
Collaboration diagram for LArSamples::TimingMonitor:

Public Member Functions

 TimingMonitor (const Interface &interface)
 Constructor.
TH2D ** timingPlots (PartitionId part, unsigned int tBins=100, double tMin=-50, double tMax=50) const
TH1F * timing (PartitionId part, unsigned int ft, unsigned int feb, unsigned int tBins=100, double tMin=-50, double tMax=50) const
TH1D * dist (const DataFuncSet &func, const DataFuncArgs &args, const TString &name, int nBins, double xMin, double xMax, const TString &title="", const TString &xTitle="", const TString &yTitle="", const FilterParams &f=FilterParams()) const
TH2D * dist (const DataFuncSet &funcX, const DataFuncArgs &argsX, const DataFuncSet &funcY, const DataFuncArgs &argsY, const TString &name, int nBinsX, double xMin, double xMax, int nBinsY, double yMin, double yMax, const TString &title="", const TString &xTitle="", const TString &yTitle="", const FilterParams &f=FilterParams()) const
TH2D * partitionMap (const DataFuncSet &func, const DataFuncArgs &args, TString name, PartitionId partition, const TString &title="", CombinationType comb=AverageValue, const FilterParams &f=FilterParams()) const
TH2D * etaPhiMap (const DataFuncSet &func, const DataFuncArgs &args, const TString &name, CaloId calo, short layer, TString title="", CombinationType comb=AverageValue, const FilterParams &f=FilterParams()) const
bool prepareDumpParams (const TString &vars, int verbosity, std::vector< TString > &variables, std::vector< DataFuncSet > &funcs, std::vector< DataFuncArgs > &args, std::vector< TString > &formats, TString &locFormat, TString &locHeader, TString &varHeader) const
bool dump (const TString &vars, const FilterParams &f=FilterParams(), unsigned int verbosity=1) const
bool dump (const TString &vars, CombinationType comb=AverageValue, const FilterParams &f=FilterParams(), const TString &ranges="", unsigned int verbosity=1) const
bool statParams (const std::vector< DataFuncSet > &funcs, const std::vector< DataFuncArgs > &args, TVectorD &mean, TVectorD &meanErr, TMatrixD &covMatrix, TMatrixD &covMatrixErr, const FilterParams &f=FilterParams()) const
const Interfaceinterface () const
unsigned int nChannels () const
const HistorygetCellHistory (unsigned int i) const
const HistorygetSCHistory (unsigned int i) const
const CellInfogetCellInfo (unsigned int i) const
virtual const HistorynewCellHistory (unsigned int i) const
virtual const HistorycellHistory (unsigned int i) const
virtual const CellInfocellInfo (unsigned int i) const
virtual unsigned int 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 ()

Static Public Member Functions

static double history_value (const History &history, const DataFuncSet &func, const DataFuncArgs &args, CombinationType comb, const FilterParams &f, unsigned int &nValues)
static DataFuncSet func (const TString &var)
static bool parseVariables (TString varStr, std::vector< TString > &vars, std::vector< DataFuncSet > &funcs, std::vector< DataFuncArgs > &args)
static TString str (CombinationType comb)

Static Public Attributes

static const int printPeriodicity = 10000

Private Attributes

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

Detailed Description

storage of the time histories of all the cells

Definition at line 21 of file TimingMonitor.h.

Constructor & Destructor Documentation

◆ TimingMonitor()

LArSamples::TimingMonitor::TimingMonitor ( const Interface & interface)
inline

Constructor.

Definition at line 29 of file TimingMonitor.h.

Member Function Documentation

◆ 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; }
const History * m_cellCache
Definition AbsLArCells.h:55

◆ 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}
virtual void resetCache() const
virtual const History * newCellHistory(unsigned int i) const

◆ 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}
std::vector< CellInfo * > m_cellInfoCache
Definition AbsLArCells.h:56
virtual const CellInfo * getCellInfo(unsigned int i) const
const CellInfo * cellInfoCache(unsigned int i) const

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

◆ dist() [1/2]

TH1D * MonitorBase::dist ( const DataFuncSet & func,
const DataFuncArgs & args,
const TString & name,
int nBins,
double xMin,
double xMax,
const TString & title = "",
const TString & xTitle = "",
const TString & yTitle = "",
const FilterParams & f = FilterParams() ) const
inherited

Definition at line 69 of file LArCalorimeter/LArSamplesMon/src/MonitorBase.cxx.

72{
73 TH1D* h = new TH1D(name, title, nBins, xMin, xMax);
74 if (xTitle != "") h->GetXaxis()->SetTitle(xTitle);
75 if (yTitle != "") h->GetYaxis()->SetTitle(yTitle);
76 for (unsigned int i = 0; i < m_interface->nChannels(); i++) {
77 if ((i+1) % printPeriodicity == 0) cout << "Cell # " << i+1 << "/" << m_interface->nChannels() << endl;
78 const History* history = pass(i, f);
79 if (!history) continue;
80 for (unsigned int j = 0; j < history->nData(); j++) {
81 if (!f.passEvent(*history->data(j))) continue;
82 h->Fill(func.val(*history->data(j), args));
83 }
84 }
85 return h;
86}
const History * pass(unsigned int i, const FilterParams &f) const
const Data * data(unsigned int i) const
Definition History.cxx:91
unsigned int nData() const
Definition History.h:51
static DataFuncSet func(const TString &var)

◆ dist() [2/2]

TH2D * MonitorBase::dist ( const DataFuncSet & funcX,
const DataFuncArgs & argsX,
const DataFuncSet & funcY,
const DataFuncArgs & argsY,
const TString & name,
int nBinsX,
double xMin,
double xMax,
int nBinsY,
double yMin,
double yMax,
const TString & title = "",
const TString & xTitle = "",
const TString & yTitle = "",
const FilterParams & f = FilterParams() ) const
inherited

Definition at line 89 of file LArCalorimeter/LArSamplesMon/src/MonitorBase.cxx.

96{
97 TH2D* h = new TH2D(name, title, nBinsX, xMin, xMax, nBinsY, yMin, yMax);
98 if (xTitle != "") h->GetXaxis()->SetTitle(xTitle);
99 if (yTitle != "") h->GetYaxis()->SetTitle(yTitle);
100 for (unsigned int i = 0; i < m_interface->nChannels(); i++) {
101 if ((i+1) % printPeriodicity == 0) cout << "Cell # " << i+1 << "/" << m_interface->nChannels() << endl;
102 const History* history = pass(i, f);
103 if (!history) continue;
104 for (unsigned int j = 0; j < history->nData(); j++) {
105 if (!f.passEvent(*history->data(j))) continue;
106 h->Fill(funcX.val(*history->data(j), argsX),
107 funcY.val(*history->data(j), argsY));
108 }
109 }
110 return h;
111}
double val(const Data &data, const DataFuncArgs &args) const
Definition Data.h:61

◆ dump() [1/2]

bool MonitorBase::dump ( const TString & vars,
CombinationType comb = AverageValue,
const FilterParams & f = FilterParams(),
const TString & ranges = "",
unsigned int verbosity = 1 ) const
inherited

Definition at line 317 of file LArCalorimeter/LArSamplesMon/src/MonitorBase.cxx.

319{
320 std::vector<TString> variables, formats;
321 std::vector<DataFuncSet> funcs;
322 std::vector<DataFuncArgs> args;
323 TString locFormat, locHeader, varHeader;
324 if (!prepareDumpParams(vars, verbosity, variables, funcs, args,
325 formats, locFormat, locHeader, varHeader)) return false;
326
327 std::vector<double> minVals, maxVals;
328 TObjArray* rangeList = ranges.Tokenize(":");
329 for (unsigned int k = 0; k < variables.size(); k++) {
330 TString range = (k < (unsigned int)rangeList->GetEntries() ? ((TObjString*)rangeList->At(k))->String() : "");
331 if (range == "") {
332 minVals.push_back(-DBL_MAX);
333 maxVals.push_back(+DBL_MAX);
334 continue;
335 }
336 TObjArray* minMaxList = range.Tokenize(",");
337 if (minMaxList->GetEntries() == 2) {
338 minVals.push_back(((TObjString*)minMaxList->At(0))->String().Atof());
339 maxVals.push_back(((TObjString*)minMaxList->At(1))->String().Atof());
340 }
341 else {
342 cout << "Invalid range specification " << range << endl;
343 return false;
344 }
345 delete minMaxList;
346 }
347 delete rangeList;
348
349 TString header = locHeader + varHeader;
350 TString separator = "";
351 for (int i = 0; i < header.Length(); i++) separator += "-";
352 cout << separator << endl << header << endl << separator << endl;
353
354 unsigned int nEntries = 0, nValues = 0;
355
356 for (unsigned int i = 0; i < m_interface->nChannels(); i++) {
357 const History* history = pass(i, f);
358 if (!history) continue;
359 TString line = Form(locFormat, i, history->cellInfo()->location(verbosity).Data());
360 bool ok = true;
361 for (unsigned int k = 0; k < variables.size(); k++) {
362 double val = history_value(*history, funcs[k], args[k], comb, f, nValues);
363 if (nValues == 0 || val < minVals[k] || val >= maxVals[k]) { ok = false; break; }
364 line += Form(formats[k].Data(), val);
365 }
366 if (!ok) continue;
367 cout << line << endl;
368 nEntries++;
369 }
370 cout << nEntries << " entries selected" << endl;
371 return true;
372}
@ Data
Definition BaseObject.h:11
TString location(int verbose=1) const
Definition CellInfo.cxx:139
const CellInfo * cellInfo() const
Definition History.h:56
bool prepareDumpParams(const TString &vars, int verbosity, std::vector< TString > &variables, std::vector< DataFuncSet > &funcs, std::vector< DataFuncArgs > &args, std::vector< TString > &formats, TString &locFormat, TString &locHeader, TString &varHeader) const
static double history_value(const History &history, const DataFuncSet &func, const DataFuncArgs &args, CombinationType comb, const FilterParams &f, unsigned int &nValues)

◆ dump() [2/2]

bool MonitorBase::dump ( const TString & vars,
const FilterParams & f = FilterParams(),
unsigned int verbosity = 1 ) const
inherited

Definition at line 284 of file LArCalorimeter/LArSamplesMon/src/MonitorBase.cxx.

285{
286 std::vector<TString> variables, formats;
287 std::vector<DataFuncSet> funcs;
288 std::vector<DataFuncArgs> args;
289 TString locFormat, locHeader, varHeader;
290 if (!prepareDumpParams(vars, verbosity, variables, funcs, args,
291 formats, locFormat, locHeader, varHeader)) return false;
292 TString header = locHeader + " idx |" + varHeader;
293 TString separator = "";
294 for (int i = 0; i < header.Length(); i++) separator += "-";
295 cout << separator << endl << header << endl << separator << endl;
296
297 unsigned int nEntries = 0;
298
299 for (unsigned int i = 0; i < m_interface->nChannels(); i++) {
300 const History* history = pass(i, f);
301 if (!history) continue;
302 TString part1 = Form(locFormat, i, history->cellInfo()->location(verbosity).Data());
303 for (unsigned int j = 0; j < history->nData(); j++) {
304 if (!f.passEvent(*history->data(j))) continue;
305 TString line = part1 + Form(" %3d |", j);
306 for (unsigned int k = 0; k < variables.size(); k++)
307 line += Form(formats[k].Data(), funcs[k].val(*history->data(j), args[k]));
308 cout << line << endl;
309 nEntries++;
310 }
311 }
312 cout << nEntries << " entries selected" << endl;
313 return true;
314}

◆ etaPhiMap()

TH2D * MonitorBase::etaPhiMap ( const DataFuncSet & func,
const DataFuncArgs & args,
const TString & name,
CaloId calo,
short layer,
TString title = "",
CombinationType comb = AverageValue,
const FilterParams & f = FilterParams() ) const
inherited

Definition at line 131 of file LArCalorimeter/LArSamplesMon/src/MonitorBase.cxx.

134{
135 if (title == "") title = Form("%s %s (%s, layer %d)", name.Data(), str(comb).Data(), Id::str(calo).Data(), layer);
136 TH2D* h = Geo::etaPhiHist(calo, layer, name, title);
137 FilterParams ff(f);
138 ff.addCalo(calo);
139 ff.addLayer(layer);
140 unsigned int nValues = 0;
141 for (unsigned int i = 0; i < m_interface->nChannels(); i++) {
142 if ((i+1) % printPeriodicity == 0) cout << "Cell # " << i+1 << "/" << m_interface->nChannels() << endl;
143 const History* history = pass(i, ff);
144 if (!history) continue;
145 h->Fill(history->cellInfo()->eta(), history->cellInfo()->phi(),
146 history_value(*history, func, args, comb, f, nValues));
147 }
148 return h;
149}
double eta() const
Definition CellInfo.h:93
double phi() const
Definition CellInfo.h:94
static TH2D * etaPhiHist(CaloId calo, short layer, const TString &name, const TString &title)
Definition Geometry.cxx:549
static TString str(CaloId id)
Definition CaloId.cxx:15

◆ func()

DataFuncSet MonitorBase::func ( const TString & var)
staticinherited

Definition at line 431 of file LArCalorimeter/LArSamplesMon/src/MonitorBase.cxx.

432{
433 if (var == "sample") return DataFuncSet(&Data::_sample);
434 if (var == "pedSubSample") return DataFuncSet(&Data::_pedestalSubstractedSample);
435 if (var == "energy") return DataFuncSet(&Data::_energy);
436 if (var == "adcMax") return DataFuncSet(&Data::_adcMax);
437 if (var == "adcMax_new") return DataFuncSet(&Data::_adcMax_new);
438 if (var == "gain") return DataFuncSet(&Data::_gain);
439 if (var == "peakSignif") return DataFuncSet(&Data::_peakSignif);
440 if (var == "energySignif") return DataFuncSet(&Data::_energySignif);
441 if (var == "ofcTime") return DataFuncSet(&Data::_ofcTime);
442 if (var == "sampleMax") return DataFuncSet(&Data::_maxValue);
443 if (var == "maxPosition") return DataFuncSet(&Data::_maxPosition);
444 if (var == "quality") return DataFuncSet(&Data::_quality);
445 if (var == "noise") return DataFuncSet(&Data::_noise);
446 if (var == "pedestal") return DataFuncSet(&Data::_pedestal);
447 if (var == "pedestalRMS") return DataFuncSet(&Data::_pedestalRMS);
448 if (var == "maxValue") return DataFuncSet(&Data::_maxValue);
449 if (var == "minValue") return DataFuncSet(&Data::_minValue);
450 if (var == "count") return DataFuncSet(&Data::_count);
451 if (var == "chi2") return DataFuncSet(&Data::_chi2);
452 if (var == "chi2_noCorr") return DataFuncSet(&Data::_chi2_noCorr);
453 if (var == "chi2_ringCorr") return DataFuncSet(&Data::_chi2_ringCorr);
454 if (var == "chi2_cellCorr") return DataFuncSet(&Data::_chi2_cellCorr);
455 if (var == "chi2_k") return DataFuncSet(&Data::_chi2_k);
456 if (var == "refitScale") return DataFuncSet(&Data::_refitScale);
457 if (var == "refitDeltaT") return DataFuncSet(&Data::_refitDeltaT);
458 if (var == "refitChi2") return DataFuncSet(&Data::_refitChi2);
459 if (var == "adjScale") return DataFuncSet(&Data::_adjScale);
460 if (var == "adjDeltaT") return DataFuncSet(&Data::_adjDeltaT);
461 if (var == "run") return DataFuncSet(&Data::_run);
462 if (var == "event") return DataFuncSet(&Data::_event);
463 if (var == "lumiBlock") return DataFuncSet(&Data::_lumiBlock);
464 if (var == "bunchId") return DataFuncSet(&Data::_bunchId);
465 if (var == "x") return DataFuncSet(&Data::_x);
466 if (var == "y") return DataFuncSet(&Data::_y);
467 if (var == "z") return DataFuncSet(&Data::_z);
468 if (var == "rt") return DataFuncSet(&Data::_rt);
469 if (var == "eta") return DataFuncSet(&Data::_eta);
470 if (var == "phi") return DataFuncSet(&Data::_phi);
471 if (var == "iEta") return DataFuncSet(&Data::_iEta);
472 if (var == "iPhi") return DataFuncSet(&Data::_iPhi);
473 if (var == "region") return DataFuncSet(&Data::_region);
474 if (var == "calo") return DataFuncSet(&Data::_calo);
475 if (var == "layer") return DataFuncSet(&Data::_layer);
476 if (var == "feedthrough") return DataFuncSet(&Data::_feedThrough);
477 if (var == "FT") return DataFuncSet(&Data::_feedThrough);
478 if (var == "slot") return DataFuncSet(&Data::_slot);
479 if (var == "channel") return DataFuncSet(&Data::_channel);
480 if (var == "ring") return DataFuncSet(&Data::_ring);
481 if (var == "index") return DataFuncSet(&Data::_index);
482 if (var == "hash") return DataFuncSet(&Data::_hash);
483 if (var == "nData") return DataFuncSet(&Data::_nData);
484 if (var == "timeNoTOF") return DataFuncSet(&Data::_timeNoTOF);
485 if (var == "timeForSplash1") return DataFuncSet(&Data::_timeForSplash1);
486 if (var == "timeForSplash2") return DataFuncSet(&Data::_timeForSplash2);
487 if (var == "delta") return DataFuncSet(&Data::_delta);
488 if (var == "residual") return DataFuncSet(&Data::_residual);
489 if (var == "residualOffset") return DataFuncSet(&Data::_residualOffset);
490 if (var == "resCorrN") return DataFuncSet(&Data::_resCorrN);
491 if (var == "xi") return DataFuncSet(&Data::_xi);
492 if (var == "xiCell") return DataFuncSet(&Data::_xiCell);
493 if (var == "xiRing") return DataFuncSet(&Data::_xiRing);
494 if (var == "xiNormCell") return DataFuncSet(&Data::_xiNormCell);
495 if (var == "xiNormRing") return DataFuncSet(&Data::_xiNormRing);
496 if (var == "xip") return DataFuncSet(&Data::_xip);
497 if (var == "residualError") return DataFuncSet(&Data::_residualError);
498 if (var == "ofcSigma") return DataFuncSet(&Data::_ofcSigma);
499 if (var == "ofcGamma") return DataFuncSet(&Data::_ofcGamma);
500 if (var == "normResidualOffset") return DataFuncSet(&Data::_normResidualOffset);
501 if (var == "normResidualError") return DataFuncSet(&Data::_normResidualError);
502 if (var == "pass") return DataFuncSet(&Data::_pass);
503 if (var == "goodForShapeCorr") return DataFuncSet(&Data::_goodForShapeCorr);
504 if (var == "upstreamE") return DataFuncSet(&Data::_upstreamE);
505 if (var == "upstreamERatio") return DataFuncSet(&Data::_upstreamERatio);
506 if (var == "chi2Anomaly") return DataFuncSet(&Data::_chi2Anomaly);
507 if (var == "timeECorr") return DataFuncSet(&Data::_timeECorr);
508
509 return DataFuncSet();
510}
double _residualOffset(const DataFuncArgs &args) const
Definition Data.h:211
double _z(const DataFuncArgs &args) const
Definition Data.cxx:499
int _region(const DataFuncArgs &args) const
Definition Data.cxx:315
double _phi(const DataFuncArgs &args) const
Definition Data.cxx:502
double _sample(const DataFuncArgs &args) const
Definition Data.h:189
double _energySignif(const DataFuncArgs &args) const
Definition Data.cxx:405
int _maxPosition(const DataFuncArgs &) const
Definition Data.h:235
double _xiCell(const DataFuncArgs &args) const
Definition Data.h:214
double _chi2Anomaly(const DataFuncArgs &args) const
Definition Data.cxx:597
double _y(const DataFuncArgs &args) const
Definition Data.cxx:498
double _ofcGamma(const DataFuncArgs &args) const
Definition Data.cxx:577
double _xip(const DataFuncArgs &args) const
Definition Data.h:218
double _x(const DataFuncArgs &args) const
Definition Data.cxx:497
double _normResidualOffset(const DataFuncArgs &args) const
Definition Data.h:220
double _residualError(const DataFuncArgs &args) const
Definition Data.h:219
int _calo(const DataFuncArgs &args) const
Definition Data.cxx:322
double _adcMax(const DataFuncArgs &) const
Definition Data.h:196
int _gain(const DataFuncArgs &) const
Definition Data.h:208
double _adcMax_new(const DataFuncArgs &) const
Definition Data.h:197
double _delta(const DataFuncArgs &args) const
Definition Data.h:209
double _ofcSigma(const DataFuncArgs &args) const
Definition Data.cxx:565
double _quality(const DataFuncArgs &) const
Definition Data.h:193
int _lumiBlock(const DataFuncArgs &) const
Definition Data.h:205
int _goodForShapeCorr(const DataFuncArgs &) const
Definition Data.h:260
double _chi2(const DataFuncArgs &) const
Definition Data.h:239
double _minValue(const DataFuncArgs &) const
Definition Data.h:200
double _energy(const DataFuncArgs &) const
Definition Data.h:191
double _pass(const DataFuncArgs &args) const
Definition Data.h:270
int _layer(const DataFuncArgs &args) const
Definition Data.cxx:329
double _pedestalRMS(const DataFuncArgs &) const
Definition Data.h:195
int _run(const DataFuncArgs &) const
Definition Data.h:203
double _normResidualError(const DataFuncArgs &args) const
Definition Data.h:221
int _feedThrough(const DataFuncArgs &args) const
Definition Data.cxx:336
int _iEta(const DataFuncArgs &args) const
Definition Data.cxx:301
double _timeForSplash1(const DataFuncArgs &args) const
Definition Data.cxx:385
double _adjScale(const DataFuncArgs &args) const
Definition Data.cxx:293
double _timeForSplash2(const DataFuncArgs &args) const
Definition Data.cxx:392
double _timeNoTOF(const DataFuncArgs &args) const
Definition Data.cxx:378
double _maxValue(const DataFuncArgs &) const
Definition Data.h:199
double _xi(const DataFuncArgs &args) const
Definition Data.h:213
double _timeECorr(const DataFuncArgs &args) const
Definition Data.cxx:642
int _ring(const DataFuncArgs &args) const
Definition Data.cxx:364
int _iPhi(const DataFuncArgs &args) const
Definition Data.cxx:308
double _adjDeltaT(const DataFuncArgs &args) const
Definition Data.cxx:285
double _count(const DataFuncArgs &) const
Definition Data.h:237
double _upstreamERatio(const DataFuncArgs &args) const
Definition Data.cxx:589
int _slot(const DataFuncArgs &args) const
Definition Data.cxx:343
double _chi2_noCorr(const DataFuncArgs &args) const
Definition Data.cxx:204
double _xiNormRing(const DataFuncArgs &) const
Definition Data.h:217
int _hash(const DataFuncArgs &args) const
Definition Data.cxx:357
double _noise(const DataFuncArgs &) const
Definition Data.h:198
double _upstreamE(const DataFuncArgs &) const
Definition Data.h:261
double _xiRing(const DataFuncArgs &args) const
Definition Data.h:215
double _chi2_k(const DataFuncArgs &args) const
Definition Data.cxx:225
double _eta(const DataFuncArgs &args) const
Definition Data.cxx:501
double _refitScale(const DataFuncArgs &args) const
Definition Data.cxx:256
double _chi2_ringCorr(const DataFuncArgs &args) const
Definition Data.cxx:211
double _ofcTime(const DataFuncArgs &) const
Definition Data.h:192
double _residual(const DataFuncArgs &args) const
Definition Data.h:210
double _pedestalSubstractedSample(const DataFuncArgs &args) const
Definition Data.h:190
int _bunchId(const DataFuncArgs &) const
Definition Data.h:206
int _index(const DataFuncArgs &) const
Definition Data.h:207
double _pedestal(const DataFuncArgs &) const
Definition Data.h:194
int _nData(const DataFuncArgs &args) const
Definition Data.cxx:371
double _chi2_cellCorr(const DataFuncArgs &args) const
Definition Data.cxx:218
int _channel(const DataFuncArgs &args) const
Definition Data.cxx:350
double _peakSignif(const DataFuncArgs &args) const
Definition Data.cxx:399
double _resCorrN(const DataFuncArgs &) const
Definition Data.h:212
int _event(const DataFuncArgs &) const
Definition Data.h:204
double _rt(const DataFuncArgs &args) const
Definition Data.cxx:500
double _refitChi2(const DataFuncArgs &args) const
Definition Data.cxx:264
double _refitDeltaT(const DataFuncArgs &args) const
Definition Data.cxx:248
double _xiNormCell(const DataFuncArgs &) const
Definition Data.h:216

◆ getCellHistory()

const History * MonitorBase::getCellHistory ( unsigned int i) const
virtualinherited

Implements LArSamples::AbsLArCells.

Definition at line 34 of file LArCalorimeter/LArSamplesMon/src/MonitorBase.cxx.

35{
36 return interface().getCellHistory(i);
37}
const History * getCellHistory(unsigned int i) const

◆ getCellInfo()

const CellInfo * MonitorBase::getCellInfo ( unsigned int i) const
virtualinherited

Reimplemented from LArSamples::AbsLArCells.

Definition at line 44 of file LArCalorimeter/LArSamplesMon/src/MonitorBase.cxx.

45{
46 return interface().getCellInfo(i);
47}
const CellInfo * getCellInfo(unsigned int i) const

◆ getSCHistory()

const History * MonitorBase::getSCHistory ( unsigned int i) const
virtualinherited

Implements LArSamples::AbsLArCells.

Definition at line 39 of file LArCalorimeter/LArSamplesMon/src/MonitorBase.cxx.

40{
41 return interface().getSCHistory(i);
42}
const History * getSCHistory(unsigned int i) const

◆ history_value()

double MonitorBase::history_value ( const History & history,
const DataFuncSet & func,
const DataFuncArgs & args,
CombinationType comb,
const FilterParams & f,
unsigned int & nValues )
staticinherited

Definition at line 404 of file LArCalorimeter/LArSamplesMon/src/MonitorBase.cxx.

406{
407 double val = 0, sum1 = 0, sum2 = 0;
408 nValues = 0;
409 if (comb == MaxValue) val = DBL_MIN;
410 if (comb == MinValue) val = DBL_MAX;
411 for (unsigned int j = 0; j < history.nData(); j++) {
412 if (!f.passEvent(*history.data(j))) continue;
413 double thisVal = func.val(*history.data(j), args);
414 nValues++;
415 switch (comb) {
416 case AverageValue : val += thisVal; break;
417 case MaxValue : if (thisVal > val) val = thisVal; break;
418 case MinValue : if (thisVal < val) val = thisVal; break;
419 case TotalValue : val += thisVal; break;
420 case RMSValue : sum1 += thisVal; sum2 += thisVal*thisVal; break;
421 }
422 }
423 if (comb == AverageValue && nValues > 0) val /= nValues;
424 if (comb == RMSValue)
425 val = (nValues > 0 ? TMath::Sqrt((sum2 - sum1*sum1/nValues)/nValues) : -1);
426 if (TMath::Abs(val) > 0.9*DBL_MAX) val = 0;
427 return val;
428}

◆ interface()

const Interface & LArSamples::MonitorBase::interface ( ) const
inlineinherited

Definition at line 74 of file LArCalorimeter/LArSamplesMon/LArSamplesMon/MonitorBase.h.

74{ return *m_interface; }

◆ nChannels()

unsigned int MonitorBase::nChannels ( ) const
virtualinherited

Reimplemented from LArSamples::AbsLArCells.

Definition at line 50 of file LArCalorimeter/LArSamplesMon/src/MonitorBase.cxx.

51{
52 return interface().nChannels();
53}
virtual unsigned int nChannels() const
Definition AbsLArCells.h:34

◆ nChannelsSC()

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

Definition at line 35 of file AbsLArCells.h.

◆ 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}
virtual const History * getCellHistory(unsigned int i) const =0

◆ parseVariables()

bool MonitorBase::parseVariables ( TString varStr,
std::vector< TString > & vars,
std::vector< DataFuncSet > & funcs,
std::vector< DataFuncArgs > & args )
staticinherited

Definition at line 152 of file LArCalorimeter/LArSamplesMon/src/MonitorBase.cxx.

154{
155 varStr.ReplaceAll(" ", "");
156 TObjArray* varList = varStr.Tokenize(":");
157 for (int i = 0; i < varList->GetEntries(); i++) {
158 TString varAndSample = ((TObjString*)varList->At(i))->String();
159 TString var = varAndSample;
160 short sample1 = -1, sample2 = -1;
161 double par = Definitions::none;
162 TString str = "";
163 if (varAndSample.CountChar('[') + varAndSample.CountChar(']') > 0) {
164 if (varAndSample.CountChar('[') != 1 || varAndSample.CountChar(']') != 1 || varAndSample[varAndSample.Length() - 1] != ']') {
165 cout << "Invalid use of [ ] delimiters" << endl;
166 delete varList;
167 return false;
168 }
169 TObjArray* varSampList = varAndSample.Tokenize("[,]");
170 if (varSampList->GetEntries() == 2) {
171 var = ((TObjString*)varSampList->At(0))->String();
172 TString sampStr = ((TObjString*)varSampList->At(1))->String();
173 delete varSampList;
174 if (!sampStr.IsDigit()) {
175 cout << "Sample argument [sample] should be an integer" << endl;
176 delete varList;
177 return false;
178 }
179 sample1 = sampStr.Atoi();
180 }
181 else if (varSampList->GetEntries() == 3) {
182 var = ((TObjString*)varSampList->At(0))->String();
183 TString sampStr1 = ((TObjString*)varSampList->At(1))->String();
184 TString sampStr2 = ((TObjString*)varSampList->At(2))->String();
185 delete varSampList;
186 if (!sampStr1.IsDigit() || !sampStr2.IsDigit()) {
187 cout << "Sample arguments [sample1, sample2] should be an integer" << endl;
188 delete varList;
189 return false;
190 }
191 sample1 = sampStr1.Atoi();
192 sample2 = sampStr2.Atoi();
193 }
194 else {
195 cout << "Invalid specification of sample argument (expected var[sample])" << endl;
196 delete varSampList;
197 delete varList;
198 return false;
199 }
200 }
201 if (varAndSample.CountChar('(') + varAndSample.CountChar(')') > 0) {
202 if (varAndSample.CountChar('(') != 1 || varAndSample.CountChar(')') != 1 || varAndSample[varAndSample.Length() - 1] != ')') {
203 cout << "Invalid use of ( ) delimiters" << endl;
204 delete varList;
205 return false;
206 }
207 TObjArray* varSampList = varAndSample.Tokenize("(,)");
208 if (varSampList->GetEntries() == 2) {
209 var = ((TObjString*)varSampList->At(0))->String();
210 TString sampStr = ((TObjString*)varSampList->At(1))->String();
211 delete varSampList;
212 if (!sampStr.IsFloat()) {
213 cout << "floating-point argument expected between ()" << endl;
214 delete varList;
215 return false;
216 }
217 par = sampStr.Atof();
218 }
219 else {
220 cout << "Invalid specification of floating-point argument (expected func(arg))" << endl;
221 delete varSampList;
222 delete varList;
223 return false;
224 }
225 }
226 if (varAndSample(0, 5) == "pass_") {
227 str = varAndSample(5, varAndSample.Length() - 5);
228 var = "pass";
229 }
230 DataFuncSet fcn = func(var);
231 if (fcn.isNull()) {
232 cout << "Unknown variable " << var << endl;
233 return false;
234 }
235 vars.push_back(varAndSample);
236 funcs.push_back(fcn);
237 args.emplace_back(sample1, sample2, par, Definitions::none, str);
238 }
239 delete varList;
240 return true;
241}

◆ partitionMap()

TH2D * MonitorBase::partitionMap ( const DataFuncSet & func,
const DataFuncArgs & args,
TString name,
PartitionId partition,
const TString & title = "",
CombinationType comb = AverageValue,
const FilterParams & f = FilterParams() ) const
inherited

Definition at line 113 of file LArCalorimeter/LArSamplesMon/src/MonitorBase.cxx.

115{
116 TH2D* h = Geo::partitionHist(partition, std::move(name), title + " " + Id::str(partition));
117 unsigned int nValues = 0;
118 FilterParams ff(f);
119 ff.addPartition(partition);
120 for (unsigned int i = 0; i < m_interface->nChannels(); i++) {
121 if ((i+1) % printPeriodicity == 0) cout << "Cell # " << i+1 << "/" << m_interface->nChannels() << endl;
122 const History* history = pass(i, ff);
123 if (!history) continue;
124 h->SetBinContent(history->cellInfo()->feb() + 1, history->cellInfo()->channel() + 1,
125 history_value(*history, func, args, comb, f, nValues));
126 }
127 return h;
128}
short feb() const
Definition CellInfo.cxx:102
short channel() const
Definition CellInfo.h:76
static TH2D * partitionHist(PartitionId part, const TString &name, const TString &title)
Definition Geometry.cxx:18

◆ 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}
virtual const History * cellHistory(unsigned int i) const
virtual const CellInfo * cellInfo(unsigned int i) const

◆ prepareDumpParams()

bool MonitorBase::prepareDumpParams ( const TString & vars,
int verbosity,
std::vector< TString > & variables,
std::vector< DataFuncSet > & funcs,
std::vector< DataFuncArgs > & args,
std::vector< TString > & formats,
TString & locFormat,
TString & locHeader,
TString & varHeader ) const
inherited

Definition at line 244 of file LArCalorimeter/LArSamplesMon/src/MonitorBase.cxx.

249{
250 if (!parseVariables(vars, variables, funcs, args)) {
251 cout << "Invalid variable specification " << vars << endl;
252 return false;
253 }
254
255 locFormat = "| %6d | %-";
256 if (verbosity <= 1)
257 locFormat += "26";
258 else if (verbosity == 2)
259 locFormat += "80";
260 else if (verbosity == 3)
261 locFormat += "108";
262 else
263 locFormat += "120";
264 locFormat += "s |";
265
266 TString locFormatHeader = locFormat; locFormatHeader.ReplaceAll("d", "s");
267 locHeader = Form(locFormatHeader, "hash", "location");
268
269 for (unsigned int i = 0; i < variables.size(); i++) {
270 formats.emplace_back(" %-9.8g |");
271 TString fH = formats[i]; fH.ReplaceAll("g", "s");
272 TString varName = variables[i];
273 if (args[i].i2 != -1) varName += Form("[%d, %d]", args[i].i1, args[i].i2);
274 else if (args[i].i1 != -1) varName += Form("[%d]", args[i].i1);
275 if (!Definitions::isNone(args[i].x1)) varName += Form("[%.5f]", args[i].x1);
276 if (args[i].str != "") varName += Form("_%s", args[i].str.Data());
277 varHeader += Form(fH, varName.Data());
278 }
279 return true;
280}
static bool parseVariables(TString varStr, std::vector< TString > &vars, std::vector< DataFuncSet > &funcs, std::vector< DataFuncArgs > &args)
str varName
end cluster ToT and charge

◆ 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;
117 for (std::vector<CellInfo*>::iterator cellInfo = m_cellInfoCache.begin();
118 cellInfo != m_cellInfoCache.end(); ++cellInfo, i++)
119 if (*cellInfo) {
120 delete *cellInfo;
121 *cellInfo = 0;
122 }
123}

◆ statParams()

bool MonitorBase::statParams ( const std::vector< DataFuncSet > & funcs,
const std::vector< DataFuncArgs > & args,
TVectorD & mean,
TVectorD & meanErr,
TMatrixD & covMatrix,
TMatrixD & covMatrixErr,
const FilterParams & f = FilterParams() ) const
inherited

Definition at line 375 of file LArCalorimeter/LArSamplesMon/src/MonitorBase.cxx.

379{
380 Averager avg(funcs.size());
381
382 for (unsigned int i = 0; i < m_interface->nChannels(); i++) {
383 if ((i+1) % printPeriodicity == 0) cout << "Cell # " << i+1 << "/" << m_interface->nChannels() << endl;
384 const History* history = pass(i, f);
385 if (!history) continue;
386 for (unsigned int j = 0; j < history->nData(); j++) {
387 if (!f.passEvent(*history->data(j))) continue;
388 TVectorD vals(funcs.size());
389 for (unsigned int k = 0; k < funcs.size(); k++)
390 vals(k) = funcs[k].val(*history->data(j), args[k]);
391 avg.fill(vals);
392 }
393 }
394
395 mean = avg.means();
396 meanErr = avg.meanErrors();
397 covMatrix = avg.covarianceMatrix();
398 covMatrixErr = avg.covarianceMatrixErrors();
399
400 return true;
401}
void mean(std::vector< double > &bins, std::vector< double > &values, const std::vector< std::string > &files, const std::string &histname, const std::string &tplotname, const std::string &label="")
avg(a, b)
Definition Recovery.py:79

◆ str()

TString MonitorBase::str ( CombinationType comb)
staticinherited

Definition at line 56 of file LArCalorimeter/LArSamplesMon/src/MonitorBase.cxx.

57{
58 switch (comb) {
59 case AverageValue : return "average";
60 case MaxValue : return "max value";
61 case MinValue : return "min value";
62 case TotalValue : return "total value";
63 case RMSValue : return "RMS";
64 }
65 return "";
66}

◆ timing()

TH1F * TimingMonitor::timing ( PartitionId part,
unsigned int ft,
unsigned int feb,
unsigned int tBins = 100,
double tMin = -50,
double tMax = 50 ) const

Definition at line 56 of file TimingMonitor.cxx.

58{
59
60 TH1F* hists;
61 // for (int i = 0; i < Geo::nFeedThroughs(part); i++){
62 // for (int u = 0; u < Geo::nSlots(part); u++){
63 hists= new TH1F(Form("timing_ft_%d,feb_%d",ft,FEB), Form("Timing for FT %d, feb %d", ft,FEB), tBins, tMin, tMax );
64 // }
65 //}
66
67 for (unsigned int i = 0; i < nChannels(); i++) {
68 const History* history = cellHistory(i);
69 if (!history) continue;
70 if (history->cellInfo()->partition() != part) continue;
71 unsigned int fT = history->cellInfo()->feedThrough();
72 unsigned int feb = history->cellInfo()->slot();
73
74 for (unsigned int j = 0; j < history->nData(); j++)
75 if (fT==ft && feb==FEB) hists->Fill(history->data(j)->ofcTime());
76 }
77 return hists;
78}
short slot() const
Definition CellInfo.h:68
short feedThrough() const
Definition CellInfo.h:65
PartitionId partition() const
Definition CellInfo.cxx:198
double ofcTime() const
Definition Data.h:111
TH1F(name, title, nxbins, bins_par2, bins_par3=None, path='', **kwargs)

◆ timingPlots()

TH2D ** TimingMonitor::timingPlots ( PartitionId part,
unsigned int tBins = 100,
double tMin = -50,
double tMax = 50 ) const

Definition at line 27 of file TimingMonitor.cxx.

28{
29 TH2D** hists = new TH2D*[Geo::nFeedThroughs(part)];
30 for (int i = 0; i < Geo::nFeedThroughs(part); i++) hists[i] = nullptr;
31
32 for (unsigned int i = 0; i < nChannels(); i++) {
33 const History* history = cellHistory(i);
34
35 if (!history) continue;
36 if (history->cellInfo()->partition() != part) continue;
37 unsigned int fT = history->cellInfo()->feedThrough();
38 if (!hists[fT]) {
39 hists[fT] = new TH2D(Form("timing_%d", fT), Form("Timing for %s FT=%d", Id::str(part).Data(), fT),
40 Geo::nSlots(part), -0.5, Geo::nSlots(part) - 0.5,
41 tBins, tMin, tMax);
42 hists[fT]->GetXaxis()->SetTitle("Slot");
43 hists[fT]->GetYaxis()->SetTitle("Time [ns]");
44 }
45 for (unsigned int j = 0; j < history->nData(); j++)
46 hists[fT]->Fill(history->cellInfo()->slot(), history->data(j)->ofcTime());
47
48 // cout << history->data(0)->ofcTime() << "time" << endl;
49
50 // cout << history->nData() << " eventi " << history->cellInfo()->slot() << " slot" << endl;
51
52 }
53 return hists;
54}
static short nSlots(PartitionId part)
Definition Geometry.cxx:59
static short nFeedThroughs(PartitionId part)
Definition Geometry.cxx:49

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_interface

const Interface* LArSamples::MonitorBase::m_interface
privateinherited

◆ m_pos

unsigned int LArSamples::AbsLArCells::m_pos
mutableprivateinherited

Definition at line 54 of file AbsLArCells.h.

◆ printPeriodicity

const int LArSamples::MonitorBase::printPeriodicity = 10000
staticinherited

The documentation for this class was generated from the following files: