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
virtual unsigned int nChannels () const override
virtual std::unique_ptr< const HistorygetCellHistory (unsigned int i) const override
virtual std::unique_ptr< const HistorygetSCHistory (unsigned int i) const override
virtual std::unique_ptr< const CellInfogetCellInfo (unsigned int i) const override
virtual std::unique_ptr< const HistorynewCellHistory (unsigned int i) const
virtual const HistorycellHistory (unsigned int i) const
virtual std::unique_ptr< 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

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
std::unique_ptr< const Historym_cellCache
std::vector< std::unique_ptr< 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 49 of file AbsLArCells.h.

49{ return m_pos; }

◆ cellCache()

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

Definition at line 48 of file AbsLArCells.h.

48{ return m_cellCache.get(); }
std::unique_ptr< 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 54 of file AbsLArCells.cxx.

55{
56 if (m_pos == i) return m_cellCache.get();
57 resetCache();
58 std::unique_ptr<const History> history = newCellHistory(i);
59 if (!history) return nullptr;
60 m_cellCache = std::move(history);
61 m_pos = i;
62 return m_cellCache.get();
63}
virtual void resetCache() const
virtual std::unique_ptr< const History > newCellHistory(unsigned int i) const

◆ cellInfo()

std::unique_ptr< const CellInfo > AbsLArCells::cellInfo ( unsigned int i) const
virtualinherited

Definition at line 66 of file AbsLArCells.cxx.

67{
68 const CellInfo* info = cellInfoCache(i);
69 if (info) {
70 if (info->isValid()) {
71 return std::make_unique<CellInfo> (*info);
72 }
73 return nullptr;
74 }
75 std::unique_ptr<const CellInfo> infop = getCellInfo(i);
76 if (infop) m_cellInfoCache[i] = std::make_unique<CellInfo>(*infop, false);
77 return infop;
78}
virtual std::unique_ptr< const CellInfo > getCellInfo(unsigned int i) const
std::vector< std::unique_ptr< CellInfo > > m_cellInfoCache
Definition AbsLArCells.h:56
const CellInfo * cellInfoCache(unsigned int i) const

◆ cellInfoCache()

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

Definition at line 81 of file AbsLArCells.cxx.

82{
83 return m_cellInfoCache[i].get();
84}

◆ 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:88
unsigned int nData() const
Definition History.h:54
static DataFuncSet func(const TString &var)
float j(const xAOD::IParticle &, const xAOD::TrackMeasurementValidation &hit, const Eigen::Matrix3d &jab_inv)

◆ 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:62

◆ 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:59
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:213
double _z(const DataFuncArgs &args) const
Definition Data.cxx:500
int _region(const DataFuncArgs &args) const
Definition Data.cxx:318
double _phi(const DataFuncArgs &args) const
Definition Data.cxx:503
double _sample(const DataFuncArgs &args) const
Definition Data.h:191
double _energySignif(const DataFuncArgs &args) const
Definition Data.cxx:408
int _maxPosition(const DataFuncArgs &) const
Definition Data.h:237
double _xiCell(const DataFuncArgs &args) const
Definition Data.h:216
double _chi2Anomaly(const DataFuncArgs &args) const
Definition Data.cxx:596
double _y(const DataFuncArgs &args) const
Definition Data.cxx:499
double _ofcGamma(const DataFuncArgs &args) const
Definition Data.cxx:577
double _xip(const DataFuncArgs &args) const
Definition Data.h:220
double _x(const DataFuncArgs &args) const
Definition Data.cxx:498
double _normResidualOffset(const DataFuncArgs &args) const
Definition Data.h:222
double _residualError(const DataFuncArgs &args) const
Definition Data.h:221
int _calo(const DataFuncArgs &args) const
Definition Data.cxx:325
double _adcMax(const DataFuncArgs &) const
Definition Data.h:198
int _gain(const DataFuncArgs &) const
Definition Data.h:210
double _adcMax_new(const DataFuncArgs &) const
Definition Data.h:199
double _delta(const DataFuncArgs &args) const
Definition Data.h:211
double _ofcSigma(const DataFuncArgs &args) const
Definition Data.cxx:566
double _quality(const DataFuncArgs &) const
Definition Data.h:195
int _lumiBlock(const DataFuncArgs &) const
Definition Data.h:207
int _goodForShapeCorr(const DataFuncArgs &) const
Definition Data.h:262
double _chi2(const DataFuncArgs &) const
Definition Data.h:241
double _minValue(const DataFuncArgs &) const
Definition Data.h:202
double _energy(const DataFuncArgs &) const
Definition Data.h:193
double _pass(const DataFuncArgs &args) const
Definition Data.h:272
int _layer(const DataFuncArgs &args) const
Definition Data.cxx:332
double _pedestalRMS(const DataFuncArgs &) const
Definition Data.h:197
int _run(const DataFuncArgs &) const
Definition Data.h:205
double _normResidualError(const DataFuncArgs &args) const
Definition Data.h:223
int _feedThrough(const DataFuncArgs &args) const
Definition Data.cxx:339
int _iEta(const DataFuncArgs &args) const
Definition Data.cxx:304
double _timeForSplash1(const DataFuncArgs &args) const
Definition Data.cxx:388
double _adjScale(const DataFuncArgs &args) const
Definition Data.cxx:296
double _timeForSplash2(const DataFuncArgs &args) const
Definition Data.cxx:395
double _timeNoTOF(const DataFuncArgs &args) const
Definition Data.cxx:381
double _maxValue(const DataFuncArgs &) const
Definition Data.h:201
double _xi(const DataFuncArgs &args) const
Definition Data.h:215
double _timeECorr(const DataFuncArgs &args) const
Definition Data.cxx:641
int _ring(const DataFuncArgs &args) const
Definition Data.cxx:367
int _iPhi(const DataFuncArgs &args) const
Definition Data.cxx:311
double _adjDeltaT(const DataFuncArgs &args) const
Definition Data.cxx:288
double _count(const DataFuncArgs &) const
Definition Data.h:239
double _upstreamERatio(const DataFuncArgs &args) const
Definition Data.cxx:588
int _slot(const DataFuncArgs &args) const
Definition Data.cxx:346
double _chi2_noCorr(const DataFuncArgs &args) const
Definition Data.cxx:211
double _xiNormRing(const DataFuncArgs &) const
Definition Data.h:219
int _hash(const DataFuncArgs &args) const
Definition Data.cxx:360
double _noise(const DataFuncArgs &) const
Definition Data.h:200
double _upstreamE(const DataFuncArgs &) const
Definition Data.h:263
double _xiRing(const DataFuncArgs &args) const
Definition Data.h:217
double _chi2_k(const DataFuncArgs &args) const
Definition Data.cxx:232
double _eta(const DataFuncArgs &args) const
Definition Data.cxx:502
double _refitScale(const DataFuncArgs &args) const
Definition Data.cxx:260
double _chi2_ringCorr(const DataFuncArgs &args) const
Definition Data.cxx:218
double _ofcTime(const DataFuncArgs &) const
Definition Data.h:194
double _residual(const DataFuncArgs &args) const
Definition Data.h:212
double _pedestalSubstractedSample(const DataFuncArgs &args) const
Definition Data.h:192
int _bunchId(const DataFuncArgs &) const
Definition Data.h:208
int _index(const DataFuncArgs &) const
Definition Data.h:209
double _pedestal(const DataFuncArgs &) const
Definition Data.h:196
int _nData(const DataFuncArgs &args) const
Definition Data.cxx:374
double _chi2_cellCorr(const DataFuncArgs &args) const
Definition Data.cxx:225
int _channel(const DataFuncArgs &args) const
Definition Data.cxx:353
double _peakSignif(const DataFuncArgs &args) const
Definition Data.cxx:402
double _resCorrN(const DataFuncArgs &) const
Definition Data.h:214
int _event(const DataFuncArgs &) const
Definition Data.h:206
double _rt(const DataFuncArgs &args) const
Definition Data.cxx:501
double _refitChi2(const DataFuncArgs &args) const
Definition Data.cxx:268
double _refitDeltaT(const DataFuncArgs &args) const
Definition Data.cxx:252
double _xiNormCell(const DataFuncArgs &) const
Definition Data.h:218

◆ getCellHistory()

std::unique_ptr< const History > MonitorBase::getCellHistory ( unsigned int i) const
overridevirtualinherited

Implements LArSamples::AbsLArCells.

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

35{
36 return interface().getCellHistory(i);
37}
virtual std::unique_ptr< const History > getCellHistory(unsigned int i) const override

◆ getCellInfo()

std::unique_ptr< const CellInfo > MonitorBase::getCellInfo ( unsigned int i) const
overridevirtualinherited

Reimplemented from LArSamples::AbsLArCells.

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

45{
46 return interface().getCellInfo(i);
47}
virtual std::unique_ptr< const CellInfo > getCellInfo(unsigned int i) const override

◆ getSCHistory()

std::unique_ptr< const History > MonitorBase::getSCHistory ( unsigned int i) const
overridevirtualinherited

Implements LArSamples::AbsLArCells.

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

40{
41 return interface().getSCHistory(i);
42}
virtual std::unique_ptr< const History > getSCHistory(unsigned int i) const override

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

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:35

◆ nChannelsSC()

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

Definition at line 36 of file AbsLArCells.h.

◆ newCellHistory()

std::unique_ptr< const History > AbsLArCells::newCellHistory ( unsigned int i) const
virtualinherited

Definition at line 39 of file AbsLArCells.cxx.

40{
41 std::unique_ptr<const History> history = getCellHistory(i);
42 if (!history) return nullptr;
43 if (!m_cellInfoCache[i]) {
44 const CellInfo* ci=history->cellInfo();
45 if (ci) {
46 m_cellInfoCache[i]=std::make_unique<CellInfo>(*ci,false);
47 }
48 }
49 // m_cellInfoCache[i] = (history->cellInfo() ? new CellInfo(*history->cellInfo(), false) : new CellInfo());
50 return history;
51}
virtual std::unique_ptr< 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 96 of file AbsLArCells.cxx.

97{
98 //std::cout << "Called AbsLArCells with hash " << i << std::endl;
99 if (!f.passHash(i)) return nullptr;
100 std::unique_ptr<const CellInfo> info = cellInfo(i);
101 if (!info) {
102 return nullptr;
103 }
104 //std::cout << "Called AbsLArCells::pass on a cell belonging to " << Id::str(info->calo()) << std::endl;
105 bool result = f.passCell(*info);
106 return result ? cellHistory(i) : nullptr;
107}
virtual const History * cellHistory(unsigned int i) const
virtual std::unique_ptr< 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 32 of file AbsLArCells.cxx.

33{
34 m_cellCache.reset();
35 m_pos = nChannels() + 1;
36}

◆ 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:113
virtual unsigned int nChannels() const override
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

std::unique_ptr<const History> LArSamples::AbsLArCells::m_cellCache
mutableprivateinherited

Definition at line 55 of file AbsLArCells.h.

◆ m_cellInfoCache

std::vector<std::unique_ptr<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: