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

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

#include <DigitMonitor.h>

Inheritance diagram for LArSamples::DigitMonitor:
Collaboration diagram for LArSamples::DigitMonitor:

Public Member Functions

 DigitMonitor (const Interface &interface)
 Constructor
More...
 
TH1Dchi2Dist (const TString &name, int nBins, double max, double kFactor=0, double fitMax=-1, int lwb=-1, int upb=-1, unsigned int chi2Pars=DefaultChi2, ShapeErrorType shapeErrorType=BestShapeError, unsigned int nDof=0) const
 
TH1DbestChi2Dist (const TString &name, int nBins, double max, double refErrMin, double refErrMax, unsigned int refErrNBins, int lwb=-1, int upb=-1, unsigned int chi2Pars=DefaultChi2, unsigned int nDof=0) const
 
TH1DgainDist (const TString &name) const
 
TH1DlayerDist (const TString &name) const
 
TH1DenergyDist (const TString &name, int nBins, double eMax=10000) const
 
TH1DtimeDist (const TString &name, int nBins, double tMin=-25, double tMax=25) const
 
TH1DadcMaxDist (const TString &name, int nBins, double aMin=0, double aMax=4096) const
 
TH1DnoiseDist (const TString &name, int nBins, double max) const
 
TH2DmaxValueMap (TString name, PartitionId partition) const
 
TH2DminValueMap (TString name, PartitionId partition) const
 
TH1DresidualDist (unsigned int k, const TString &name, int nBins, double rMin, double rMax, bool norm=false) const
 
bool residualPlots (CaloId calo, unsigned int layer, CaloGain::CaloGain gain=CaloGain::LARHIGHGAIN, bool xip=false, bool ring=false, double lo=-0.05, double hi=0.05, const TString &fileName="residuals")
 
bool residualPlotsRingComp (CaloId calo, unsigned int layer, CaloGain::CaloGain gain=CaloGain::LARHIGHGAIN, bool xip=false, double lo=-0.05, double hi=0.05, const TString &fileName="residuals")
 
bool residualPlotsGainComp (CaloId calo, unsigned int layer, bool ring=false, bool xip=false, double lo=-0.05, double hi=0.05, const TString &fileName="residuals")
 
TH1DshapeErrorDist (unsigned int k, const TString &name, int nBins, double rMin, double rMax, double mean=0) const
 
double residualCorr (unsigned int k1, unsigned int k2) const
 
bool makeResidualCorrections (const TString &outputFile, short resTrunc=-1, short timeTrunc=-1, double absResTrunc=-1, unsigned int minSize=0, bool weigh=false, bool adjust=false, bool zeroTime=false) const
 
ResidualsgetResiduals (unsigned int hash, CaloGain::CaloGain gain, double absResTrunc=-1, bool adjust=false, bool zeroTime=false) const
 
bool residualParams (int lwb, int upb, CovMatrix &k, TVectorD &means) const
 
CovMatrix kMatrix (int lwb, int upb)
 
TVectorD means (int lwb, int upb)
 
int combine (SimpleShape *&shape, SimpleShape *&ref, const TString &selection="", bool timeAligned=true) const
 
TH1Ddist (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
 
TH2Ddist (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
 
TH2DpartitionMap (const DataFuncSet &func, const DataFuncArgs &args, TString name, PartitionId partition, const TString &title="", CombinationType comb=AverageValue, const FilterParams &f=FilterParams()) const
 
TH2DetaPhiMap (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 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 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 TF1 * chi2Func (const char *name, double xMin, double xMax)
 
static TF1 * fitChi2 (TH1D &h, const char *name, double xMin, double xMax, double nDof=-1, double fitMin=Definitions::none, double fitMax=Definitions::none)
 
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 33 of file DigitMonitor.h.

Constructor & Destructor Documentation

◆ DigitMonitor()

LArSamples::DigitMonitor::DigitMonitor ( const Interface interface)
inline

Constructor

Definition at line 39 of file DigitMonitor.h.

39 : MonitorBase(interface) { }

Member Function Documentation

◆ adcMaxDist()

TH1D * DigitMonitor::adcMaxDist ( const TString &  name,
int  nBins,
double  aMin = 0,
double  aMax = 4096 
) const

Definition at line 46 of file DigitMonitor.cxx.

47 { return dist(&Data::_adcMax, DataFuncArgs(), name, nBins, aMin, aMax, "ADCMax distribution", "ADCMax (counts)"); }

◆ bestChi2Dist()

TH1D * DigitMonitor::bestChi2Dist ( const TString &  name,
int  nBins,
double  max,
double  refErrMin,
double  refErrMax,
unsigned int  refErrNBins,
int  lwb = -1,
int  upb = -1,
unsigned int  chi2Pars = DefaultChi2,
unsigned int  nDof = 0 
) const

Definition at line 130 of file DigitMonitor.cxx.

133 {
134  TF1* fChi2 = chi2Func("fChi2", 0, max);
135  if (nDof > 0) fChi2->FixParameter(1, nDof);
136 
137  double delta = (refErrMax - refErrMin)/refErrNBins;
138  TH1D* fitResults = new TH1D("fitResults", "", refErrNBins, refErrMin - delta/2, refErrMax - delta/2);
139 
140  for (unsigned int k = 0; k < refErrNBins; k++) {
141  double refErr = refErrMin + delta*k;
142  TH1D* h = new TH1D(name, "#chi^{2} distribution", nBins, 0, max);
143  UniformShapeErrorGetter kFactorGetter(refErr);
144  CombinedShapeErrorGetter shapeErrorGetter;
145  if (interface().shapeErrorGetter()) shapeErrorGetter.add(*interface().shapeErrorGetter());
146  shapeErrorGetter.add(kFactorGetter);
147  for (unsigned int i = 0; i < nChannels(); i++) {
148  const History* history = cellHistory(i);
149  if (!history) continue;
150  history->setShapeErrorGetter(&shapeErrorGetter);
151  for (unsigned int j = 0; j < history->nData(); j++) {
152  h->Fill(history->chi2(j, lwb, upb, chi2Pars));
153  }
154  }
155  h->Fit(fChi2);
156  fitResults->SetBinContent(k+1, fChi2->GetChisquare());
157  delete h;
158  }
159 
160  TF1* fPol2 = new TF1("fPol2", "[0]*(x - [1])*(x - [1]) + [2]", refErrMin, refErrMax);
161 
162  double center = fitResults->GetBinCenter(fitResults->GetMinimumBin());
163  fPol2->SetParameter(0, (fitResults->GetMaximum() - fitResults->GetMinimum())/center/center);
164  fPol2->SetParameter(1, center);
165  fPol2->SetParameter(2, fitResults->GetMinimum());
166 
167  fitResults->Draw();
168  fitResults->Fit(fPol2);
169 
170  TPaveText* p = new TPaveText(0.6, 0.85, 0.85, 0.65, "NDC");
171  p->AddText(Form("Fit k_{best} = %.1f%%", fPol2->GetParameter(1)*100));
172  p->AddText(Form("Fit #delta k_{best} = %.2f%%", 1/TMath::Sqrt(fPol2->GetParameter(0))*100));
173  p->AddText(Form("Fit #chi^{2}_{min} = %.2f", fPol2->GetParameter(2)));
174  p->Draw();
175 
176  return fitResults;
177 }

◆ cachePos()

unsigned int LArSamples::AbsLArCells::cachePos ( ) const
inlineinherited

Definition at line 45 of file AbsLArCells.h.

45 { return m_pos; }

◆ cellCache()

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

Definition at line 44 of file AbsLArCells.h.

44 { return m_cellCache; }

◆ cellHistory()

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

Reimplemented in LArSamples::Interface.

Definition at line 57 of file AbsLArCells.cxx.

58 {
59  if (m_pos == i) return m_cellCache;
60  resetCache();
61  const History* history = newCellHistory(i);
62  if (!history) return nullptr;
63  m_cellCache = history;
64  m_pos = i;
65  return m_cellCache;
66 }

◆ cellInfo()

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

Definition at line 69 of file AbsLArCells.cxx.

70 {
71  const CellInfo* info = cellInfoCache(i);
72  if (info) return (info->isValid() ? new CellInfo(*info) : nullptr);
73  info = getCellInfo(i);
74  if (info) m_cellInfoCache[i] = new CellInfo(*info, false);
75  //m_cellInfoCache[i] = (info ? new CellInfo(*info, false) : new CellInfo());
76  return info;
77 }

◆ cellInfoCache()

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

Definition at line 80 of file AbsLArCells.cxx.

81 {
82  return m_cellInfoCache[i];
83 }

◆ chi2Dist()

TH1D * DigitMonitor::chi2Dist ( const TString &  name,
int  nBins,
double  max,
double  kFactor = 0,
double  fitMax = -1,
int  lwb = -1,
int  upb = -1,
unsigned int  chi2Pars = DefaultChi2,
ShapeErrorType  shapeErrorType = BestShapeError,
unsigned int  nDof = 0 
) const

Definition at line 59 of file DigitMonitor.cxx.

62 {
63  TH1D* h = new TH1D(name, "#chi^{2} distribution", nBins, 0, max);
64  unsigned int nDofEff = 0, nDofLast = 0;
65  UniformShapeErrorGetter* kFactorGetter = nullptr;
66  CombinedShapeErrorGetter* shapeErrorGetter = nullptr;
67  if (kFactor > 0) {
68  kFactorGetter = new UniformShapeErrorGetter(kFactor);
69  shapeErrorGetter = new CombinedShapeErrorGetter();
70  if (interface().shapeErrorGetter()) shapeErrorGetter->add(*interface().shapeErrorGetter());
71  shapeErrorGetter->add(*kFactorGetter);
72  }
73  for (unsigned int i = 0; i < nChannels(); i++) {
74  if ((i+1) % 10000 == 0) cout << "Processing entry # " << i+1 << endl;
75  const History* history = cellHistory(i);
76  if (!history) continue;
77  if (shapeErrorGetter) history->setShapeErrorGetter(shapeErrorGetter); // Do it at history level so it doesn't "stick" afterwards,,,
78  for (unsigned int j = 0; j < history->nData(); j++) {
79  h->Fill(history->chi2(j, lwb, upb, chi2Pars, shapeErrorType, &nDofEff));
80  if (nDofLast > 0 && nDofLast != nDofEff) cout << "WARNING @ hash = " << i << ", index = " << j << " : nDof varied from " << nDofLast << " to " << nDofEff << endl;
81  nDofLast = nDofEff;
82  }
83  }
84 
85  if (nDof > 0 && nDof != nDofEff) cout << "WARNING : fixing nDof = " << nDof << ", but computer nDofEff = " << nDofEff << endl;
86  h->Draw();
87  if (fitMax < 0) return h;
88  TF1* fChi2 = fitChi2(*h, "chi2", 0, max, nDof, 0, fitMax);
89 
90  TPaveText* p = new TPaveText(0.6, 0.85, 0.85, 0.65, "NDC");
91  p->AddText(Form("k = %.1f%%", kFactor*100));
92  p->AddText(Form("Fit #chi^{2} = %.1f", fChi2->GetChisquare()));
93  p->AddText(Form("Fit nDOF = %.1f", fChi2->GetParameter(1)));
94  p->Draw();
95 
96  if (shapeErrorGetter) {
97  delete kFactorGetter;
98  delete shapeErrorGetter;
99  }
100  return h;
101 }

◆ chi2Func()

TF1 * DigitMonitor::chi2Func ( const char *  name,
double  xMin,
double  xMax 
)
static

Definition at line 104 of file DigitMonitor.cxx.

105 {
106  TF1* fChi2 = new TF1(name, "[0]*TMath::Power(x/2, [1]/2)/x*TMath::Exp(-x/2)/TMath::Gamma([1]/2)", xMin, xMax);
107  fChi2->SetParameter(0, 100);
108  fChi2->SetParameter(1, 3);
109  fChi2->SetParLimits(1, 1, 7);
110  return fChi2;
111 }

◆ combine()

int DigitMonitor::combine ( SimpleShape *&  shape,
SimpleShape *&  ref,
const TString &  selection = "",
bool  timeAligned = true 
) const

Definition at line 527 of file DigitMonitor.cxx.

528 {
529  FilterParams f;
530  if (!f.set(selection)) return 0;
531  int n = 0;
532  shape = ref = nullptr;
533 
534  double maxSum = 0;
535 
536  for (unsigned int i = 0; i < nChannels(); i++) {
537  if ((i+1) % 50000 == 0) cout << "Cell # " << i+1 << "/" << nChannels() << endl;
538  const History* history = pass(i, f);
539  if (!history) continue;
540  for (unsigned int j = 0; j < history->nData(); j++) {
541  if (!f.passEvent(*history->data(j))) continue;
542  maxSum += history->data(j)->maxValue();
543  cout << "Adding pulse (" << n+1 << ") at hash " << i << ", index " << j << ", max = " << maxSum/(n+1) << endl;
544  //cout << i << " " << j << endl;
545  SimpleShape* thisData = new SimpleShape(*history->data(j));
546  SimpleShape* thisRef = history->referenceShape(j);
547  if (timeAligned) {
548  if (!SimpleShape::scaleAndShift(thisData, 1, -history->data(j)->ofcTime())) return -1;
549  if (!SimpleShape::scaleAndShift(thisRef, 1, -history->data(j)->ofcTime())) return -1;
550  }
551  if (!SimpleShape::add(shape, thisData)) return -1;
552  delete thisData;
553  if (!SimpleShape::add(ref, thisRef)) return -1;
554  delete thisRef;
555  n++;
556  }
557  }
558  if (!SimpleShape::scaleAndShift(shape, 1.0/n)) return -1;
559  if (!SimpleShape::scaleAndShift(ref, 1.0/n)) return -1;
560  return n;
561 }

◆ 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 64 of file LArCalorimeter/LArSamplesMon/src/MonitorBase.cxx.

67 {
68  TH1D* h = new TH1D(name, title, nBins, xMin, xMax);
69  if (xTitle != "") h->GetXaxis()->SetTitle(xTitle);
70  if (yTitle != "") h->GetYaxis()->SetTitle(yTitle);
71  for (unsigned int i = 0; i < m_interface->nChannels(); i++) {
72  if ((i+1) % printPeriodicity == 0) cout << "Cell # " << i+1 << "/" << m_interface->nChannels() << endl;
73  const History* history = pass(i, f);
74  if (!history) continue;
75  for (unsigned int j = 0; j < history->nData(); j++) {
76  if (!f.passEvent(*history->data(j))) continue;
77  h->Fill(func.val(*history->data(j), args));
78  }
79  }
80  return h;
81 }

◆ 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 84 of file LArCalorimeter/LArSamplesMon/src/MonitorBase.cxx.

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

◆ 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 312 of file LArCalorimeter/LArSamplesMon/src/MonitorBase.cxx.

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

◆ dump() [2/2]

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

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

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

◆ energyDist()

TH1D * DigitMonitor::energyDist ( const TString &  name,
int  nBins,
double  eMax = 10000 
) const

Definition at line 40 of file DigitMonitor.cxx.

41 {return dist(&Data::_energy, DataFuncArgs(), name, nBins, 0, eMax, "Energy distribution", "Energy (MeV)"); }

◆ 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 126 of file LArCalorimeter/LArSamplesMon/src/MonitorBase.cxx.

129 {
130  if (title == "") title = Form("%s %s (%s, layer %d)", name.Data(), str(comb).Data(), Id::str(calo).Data(), layer);
131  TH2D* h = Geo::etaPhiHist(calo, layer, name, title);
132  FilterParams ff(f);
133  ff.addCalo(calo);
134  ff.addLayer(layer);
135  unsigned int nValues = 0;
136  for (unsigned int i = 0; i < m_interface->nChannels(); i++) {
137  if ((i+1) % printPeriodicity == 0) cout << "Cell # " << i+1 << "/" << m_interface->nChannels() << endl;
138  const History* history = pass(i, ff);
139  if (!history) continue;
140  h->Fill(history->cellInfo()->eta(), history->cellInfo()->phi(),
141  history_value(*history, func, args, comb, f, nValues));
142  }
143  return h;
144 }

◆ fitChi2()

TF1 * DigitMonitor::fitChi2 ( TH1D h,
const char *  name,
double  xMin,
double  xMax,
double  nDof = -1,
double  fitMin = Definitions::none,
double  fitMax = Definitions::none 
)
static

Definition at line 114 of file DigitMonitor.cxx.

116 {
117  if (fitMin == Definitions::none) fitMin = xMin;
118  if (fitMax == Definitions::none) fitMin = xMax;
119 
120  TF1* fChi2 = chi2Func(name, xMin, xMax);
121  fChi2->SetParameter(0, 4*h.GetMaximum());
122  if (nDof > 0) fChi2->FixParameter(1, nDof);
123 
124  h.Fit(fChi2, "", "", fitMin, fitMax);
125  fChi2->SetRange(xMin, xMax);
126  return fChi2;
127 }

◆ func()

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

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

427 {
428  if (var == "sample") return DataFuncSet(&Data::_sample);
429  if (var == "pedSubSample") return DataFuncSet(&Data::_pedestalSubstractedSample);
430  if (var == "energy") return DataFuncSet(&Data::_energy);
431  if (var == "adcMax") return DataFuncSet(&Data::_adcMax);
432  if (var == "adcMax_new") return DataFuncSet(&Data::_adcMax_new);
433  if (var == "gain") return DataFuncSet(&Data::_gain);
434  if (var == "peakSignif") return DataFuncSet(&Data::_peakSignif);
435  if (var == "energySignif") return DataFuncSet(&Data::_energySignif);
436  if (var == "ofcTime") return DataFuncSet(&Data::_ofcTime);
437  if (var == "sampleMax") return DataFuncSet(&Data::_maxValue);
438  if (var == "maxPosition") return DataFuncSet(&Data::_maxPosition);
439  if (var == "quality") return DataFuncSet(&Data::_quality);
440  if (var == "noise") return DataFuncSet(&Data::_noise);
441  if (var == "pedestal") return DataFuncSet(&Data::_pedestal);
442  if (var == "pedestalRMS") return DataFuncSet(&Data::_pedestalRMS);
443  if (var == "maxValue") return DataFuncSet(&Data::_maxValue);
444  if (var == "minValue") return DataFuncSet(&Data::_minValue);
445  if (var == "count") return DataFuncSet(&Data::_count);
446  if (var == "chi2") return DataFuncSet(&Data::_chi2);
447  if (var == "chi2_noCorr") return DataFuncSet(&Data::_chi2_noCorr);
448  if (var == "chi2_ringCorr") return DataFuncSet(&Data::_chi2_ringCorr);
449  if (var == "chi2_cellCorr") return DataFuncSet(&Data::_chi2_cellCorr);
450  if (var == "chi2_k") return DataFuncSet(&Data::_chi2_k);
451  if (var == "refitScale") return DataFuncSet(&Data::_refitScale);
452  if (var == "refitDeltaT") return DataFuncSet(&Data::_refitDeltaT);
453  if (var == "refitChi2") return DataFuncSet(&Data::_refitChi2);
454  if (var == "adjScale") return DataFuncSet(&Data::_adjScale);
455  if (var == "adjDeltaT") return DataFuncSet(&Data::_adjDeltaT);
456  if (var == "run") return DataFuncSet(&Data::_run);
457  if (var == "event") return DataFuncSet(&Data::_event);
458  if (var == "lumiBlock") return DataFuncSet(&Data::_lumiBlock);
459  if (var == "bunchId") return DataFuncSet(&Data::_bunchId);
460  if (var == "x") return DataFuncSet(&Data::_x);
461  if (var == "y") return DataFuncSet(&Data::_y);
462  if (var == "z") return DataFuncSet(&Data::_z);
463  if (var == "rt") return DataFuncSet(&Data::_rt);
464  if (var == "eta") return DataFuncSet(&Data::_eta);
465  if (var == "phi") return DataFuncSet(&Data::_phi);
466  if (var == "iEta") return DataFuncSet(&Data::_iEta);
467  if (var == "iPhi") return DataFuncSet(&Data::_iPhi);
468  if (var == "region") return DataFuncSet(&Data::_region);
469  if (var == "calo") return DataFuncSet(&Data::_calo);
470  if (var == "layer") return DataFuncSet(&Data::_layer);
471  if (var == "feedthrough") return DataFuncSet(&Data::_feedThrough);
472  if (var == "FT") return DataFuncSet(&Data::_feedThrough);
473  if (var == "slot") return DataFuncSet(&Data::_slot);
474  if (var == "channel") return DataFuncSet(&Data::_channel);
475  if (var == "ring") return DataFuncSet(&Data::_ring);
476  if (var == "index") return DataFuncSet(&Data::_index);
477  if (var == "hash") return DataFuncSet(&Data::_hash);
478  if (var == "nData") return DataFuncSet(&Data::_nData);
479  if (var == "timeNoTOF") return DataFuncSet(&Data::_timeNoTOF);
480  if (var == "timeForSplash1") return DataFuncSet(&Data::_timeForSplash1);
481  if (var == "timeForSplash2") return DataFuncSet(&Data::_timeForSplash2);
482  if (var == "delta") return DataFuncSet(&Data::_delta);
483  if (var == "residual") return DataFuncSet(&Data::_residual);
484  if (var == "residualOffset") return DataFuncSet(&Data::_residualOffset);
485  if (var == "resCorrN") return DataFuncSet(&Data::_resCorrN);
486  if (var == "xi") return DataFuncSet(&Data::_xi);
487  if (var == "xiCell") return DataFuncSet(&Data::_xiCell);
488  if (var == "xiRing") return DataFuncSet(&Data::_xiRing);
489  if (var == "xiNormCell") return DataFuncSet(&Data::_xiNormCell);
490  if (var == "xiNormRing") return DataFuncSet(&Data::_xiNormRing);
491  if (var == "xip") return DataFuncSet(&Data::_xip);
492  if (var == "residualError") return DataFuncSet(&Data::_residualError);
493  if (var == "ofcSigma") return DataFuncSet(&Data::_ofcSigma);
494  if (var == "ofcGamma") return DataFuncSet(&Data::_ofcGamma);
495  if (var == "normResidualOffset") return DataFuncSet(&Data::_normResidualOffset);
496  if (var == "normResidualError") return DataFuncSet(&Data::_normResidualError);
497  if (var == "pass") return DataFuncSet(&Data::_pass);
498  if (var == "goodForShapeCorr") return DataFuncSet(&Data::_goodForShapeCorr);
499  if (var == "upstreamE") return DataFuncSet(&Data::_upstreamE);
500  if (var == "upstreamERatio") return DataFuncSet(&Data::_upstreamERatio);
501  if (var == "chi2Anomaly") return DataFuncSet(&Data::_chi2Anomaly);
502  if (var == "timeECorr") return DataFuncSet(&Data::_timeECorr);
503 
504  return DataFuncSet();
505 }

◆ gainDist()

TH1D * DigitMonitor::gainDist ( const TString &  name) const

Definition at line 181 of file DigitMonitor.cxx.

182 {
183  TH1D* h = new TH1D(name, "gain distribution", 3, -0.5, 2.5);
184  h->GetXaxis()->SetBinLabel(1, "Low");
185  h->GetXaxis()->SetBinLabel(2, "Medium");
186  h->GetXaxis()->SetBinLabel(3, "High");
187  for (unsigned int i = 0; i < nChannels(); i++) {
188  const History* history = cellHistory(i);
189  if (!history) continue;
190  for (unsigned int j = 0; j < history->nData(); j++) h->Fill(history->data(j)->gain());
191  }
192  return h;
193 }

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

◆ getCellInfo()

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

Reimplemented from LArSamples::AbsLArCells.

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

40 {
41  return interface().getCellInfo(i);
42 }

◆ getResiduals()

Residuals * DigitMonitor::getResiduals ( unsigned int  hash,
CaloGain::CaloGain  gain,
double  absResTrunc = -1,
bool  adjust = false,
bool  zeroTime = false 
) const

Definition at line 563 of file DigitMonitor.cxx.

564 {
565  const History* history = cellHistory(hash);
566  if (!history) return nullptr;
567  if (adjust) history = history->adjust();
568  Residuals* residuals = history->residuals(gain, absResTrunc, false, zeroTime);
569  if (adjust) delete history;
570  return residuals;
571 }

◆ 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 399 of file LArCalorimeter/LArSamplesMon/src/MonitorBase.cxx.

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

◆ interface()

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

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

74 { return *m_interface; }

◆ kMatrix()

CovMatrix LArSamples::DigitMonitor::kMatrix ( int  lwb,
int  upb 
)
inline

Definition at line 83 of file DigitMonitor.h.

83 { CovMatrix k; TVectorD means; residualParams(lwb, upb, k, means); return k; }

◆ layerDist()

TH1D * DigitMonitor::layerDist ( const TString &  name) const

Definition at line 196 of file DigitMonitor.cxx.

197 {
198  TH1D* h = new TH1D(name, "layer distribution", 4, -0.5, 3.5);
199  h->GetXaxis()->SetBinLabel(1, "PS");
200  h->GetXaxis()->SetBinLabel(2, "Strips");
201  h->GetXaxis()->SetBinLabel(3, "Middle");
202  h->GetXaxis()->SetBinLabel(4, "Back");
203  for (unsigned int i = 0; i < nChannels(); i++) {
204  const History* history = cellHistory(i);
205  if (!history) continue;
206  for (unsigned int j = 0; j < history->nData(); j++) h->Fill(history->cellInfo()->layer());
207  }
208  return h;
209 }

◆ makeResidualCorrections()

bool DigitMonitor::makeResidualCorrections ( const TString &  outputFile,
short  resTrunc = -1,
short  timeTrunc = -1,
double  absResTrunc = -1,
unsigned int  minSize = 0,
bool  weigh = false,
bool  adjust = false,
bool  zeroTime = false 
) const

Definition at line 574 of file DigitMonitor.cxx.

576 {
577  TreeShapeErrorGetter* shapeError = new TreeShapeErrorGetter(outputFile, true);
578  std::vector< std::vector<ResidualCalculator> > ringCalcs;
579  std::vector<ResidualCalculator> gainRingCalcs(Geo::nPhiRings());
580  for (unsigned int g = 0; g < CaloGain::LARNGAIN; g++) ringCalcs.push_back(gainRingCalcs);
581 
582  cout << "Processing cells" << endl;
583 
584  for (unsigned int i = 0; i < nChannels(); i++) {
585  if ((i+1) % 10000 == 0) cout << "Processing hash = " << (i+1) << endl;
586  for (unsigned int g = 0; g < CaloGain::LARNGAIN; g++) {
587  Residuals* residuals = getResiduals(i, (CaloGain::CaloGain)g, absResTrunc, adjust, zeroTime);
588  if (residuals && (resTrunc > 0 || timeTrunc > 0)) {
589  Residuals* truncated = residuals->truncate(resTrunc, timeTrunc);
590  delete residuals;
591  residuals = truncated;
592  }
593 
594  if (residuals && residuals->size() < minSize) {
595  delete residuals;
596  residuals = nullptr;
597  }
598 
599  ResidualCalculator* resCalc = nullptr;
600  if (residuals) {
601  resCalc = residuals->calculator(weigh);
602  delete residuals;
603  }
604 
605  if (!resCalc) {
607  continue;
608  }
609 
610  cout << i << " : Phi ring " << cellHistory(i)->cellInfo()->globalPhiRing() << " : adding " << resCalc->size() << endl;
611  shapeError->addCell(*resCalc, (CaloGain::CaloGain)g);
612  ringCalcs[g][cellHistory(i)->cellInfo()->globalPhiRing()].append(*resCalc);
613  if (cellHistory(i)->cellInfo()->globalPhiRing() == 1142) cout << ringCalcs[g][cellHistory(i)->cellInfo()->globalPhiRing()].regresser()->mean(0) << endl;
614  delete resCalc;
615  }
616  }
617 
618  cout << "Processing phi-symmetric data" << endl;
619 
620  for (unsigned int g = 0; g < CaloGain::LARNGAIN; g++) {
621  for (short i = 0; i < Geo::nPhiRings(); i++) {
622  if (ringCalcs[g][i].size() > 0)
623  cout << "Saving data for gain " << g << ", phi ring " << i << ", n = " << ringCalcs[g][i].size() << ", range = " << ringCalcs[g][i].rangeStr() << endl;
624  shapeError->addRing(ringCalcs[g][i], (CaloGain::CaloGain)g);
625  }
626  }
627 
628  cout << "Done!" << endl;
629 
630  delete shapeError;
631  return true;
632 }

◆ maxValueMap()

TH2D * DigitMonitor::maxValueMap ( TString  name,
PartitionId  partition 
) const

Definition at line 52 of file DigitMonitor.cxx.

53 { return partitionMap(&Data::_maxValue, DataFuncArgs(), std::move(name), partition, "Max sample value (ADC counts)", MaxValue); }

◆ means()

TVectorD LArSamples::DigitMonitor::means ( int  lwb,
int  upb 
)
inline

Definition at line 84 of file DigitMonitor.h.

84 { CovMatrix k; TVectorD means; residualParams(lwb, upb, k, means); return means; }

◆ minValueMap()

TH2D * DigitMonitor::minValueMap ( TString  name,
PartitionId  partition 
) const

Definition at line 55 of file DigitMonitor.cxx.

56 { return partitionMap(&Data::_minValue, DataFuncArgs(), std::move(name), partition, "Min sample value (ADC counts)", MinValue); }

◆ nChannels()

unsigned int MonitorBase::nChannels ( ) const
virtualinherited

Reimplemented from LArSamples::AbsLArCells.

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

46 {
47  return interface().nChannels();
48 }

◆ newCellHistory()

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

Definition at line 42 of file AbsLArCells.cxx.

43 {
44  const History* history = getCellHistory(i);
45  if (!history) return nullptr;
46  if (!m_cellInfoCache[i]) {
47  const CellInfo* ci=history->cellInfo();
48  if (ci) {
49  m_cellInfoCache[i]=new CellInfo(*ci,false);
50  }
51  }
52  // m_cellInfoCache[i] = (history->cellInfo() ? new CellInfo(*history->cellInfo(), false) : new CellInfo());
53  return history;
54 }

◆ noiseDist()

TH1D * DigitMonitor::noiseDist ( const TString &  name,
int  nBins,
double  max 
) const

Definition at line 49 of file DigitMonitor.cxx.

50 { return dist(&Data::_noise, DataFuncArgs(), name, nBins, 0, max, "Noise distribution", "Noise (ADC counts)"); }

◆ parseVariables()

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

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

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

◆ 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 108 of file LArCalorimeter/LArSamplesMon/src/MonitorBase.cxx.

110 {
111  TH2D* h = Geo::partitionHist(partition, std::move(name), title + " " + Id::str(partition));
112  unsigned int nValues = 0;
113  FilterParams ff(f);
114  ff.addPartition(partition);
115  for (unsigned int i = 0; i < m_interface->nChannels(); i++) {
116  if ((i+1) % printPeriodicity == 0) cout << "Cell # " << i+1 << "/" << m_interface->nChannels() << endl;
117  const History* history = pass(i, ff);
118  if (!history) continue;
119  h->SetBinContent(history->cellInfo()->feb() + 1, history->cellInfo()->channel() + 1,
120  history_value(*history, func, args, comb, f, nValues));
121  }
122  return h;
123 }

◆ pass()

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

Definition at line 97 of file AbsLArCells.cxx.

98 {
99  //std::cout << "Called AbsLArCells with hash " << i << std::endl;
100  if (!f.passHash(i)) return nullptr;
101  const CellInfo* info = cellInfo(i);
102  if (!info) {
103  return nullptr;
104  }
105  //std::cout << "Called AbsLArCells::pass on a cell belonging to " << Id::str(info->calo()) << std::endl;
106  bool result = f.passCell(*info);
107  delete info;
108  return result ? cellHistory(i) : nullptr;
109 }

◆ 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 239 of file LArCalorimeter/LArSamplesMon/src/MonitorBase.cxx.

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

◆ resetCache()

void AbsLArCells::resetCache ( ) const
virtualinherited

Definition at line 32 of file AbsLArCells.cxx.

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

◆ resetCellInfoCache()

void AbsLArCells::resetCellInfoCache ( )
inherited

Definition at line 112 of file AbsLArCells.cxx.

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

◆ residualCorr()

double DigitMonitor::residualCorr ( unsigned int  k1,
unsigned int  k2 
) const

Definition at line 459 of file DigitMonitor.cxx.

460 {
461  double sum = 0;
462  int n = 0;
463 
464  for (unsigned int i = 0; i < nChannels(); i++) {
465  const History* history = cellHistory(i);
466  if (!history) continue;
467  for (unsigned int j = 0; j < history->nData(); j++) {
468  double residual1 = history->data(j)->delta(k1);
469  double residual2 = history->data(j)->delta(k2);
470  sum += residual1*residual2;
471  n++;
472  }
473  }
474 
475  return sum/n;
476 }

◆ residualDist()

TH1D * DigitMonitor::residualDist ( unsigned int  k,
const TString &  name,
int  nBins,
double  rMin,
double  rMax,
bool  norm = false 
) const

Definition at line 212 of file DigitMonitor.cxx.

213 {
214  TH1D* h = new TH1D(name, "Residual distribution", nBins, rMin, rMax);
215  h->GetXaxis()->SetTitle(norm ? "Residual/ADCMax (%)" : "Residual (ADC counts)");
216 
217  for (unsigned int i = 0; i < nChannels(); i++) {
218  const History* history = cellHistory(i);
219  if (!history) continue;
220  for (unsigned int j = 0; j < history->nData(); j++)
221  h->Fill(history->data(j)->delta(k)*(norm ? 100/history->data(j)->adcMax() : 1));
222  }
223  return h;
224 }

◆ residualParams()

bool DigitMonitor::residualParams ( int  lwb,
int  upb,
CovMatrix k,
TVectorD &  means 
) const

Definition at line 479 of file DigitMonitor.cxx.

480 {
481  CovMatrix sum2N(lwb, upb), sumCN(lwb, upb);
482  TVectorD sum(lwb, upb), sumN(lwb, upb);
483  double sumA = 0, n = 0;
484  for (unsigned int i = 0; i < nChannels(); i++) {
485  const History* history = cellHistory(i);
486  if (!history) continue;
487  for (unsigned int j = 0; j < history->nData(); j++) {
488  if (history->data(j)->adcMax() < 0) continue;
489  OFC* ofc = history->ofc(j);
490  if (!ofc || ofc->hasSameRange(lwb, upb)) { cout << "Invalid index bounds!" << endl; return false; }
491  for (int i1 = lwb; i1 <= upb; i1++) {
492  sum(i1) = sum(i1) + history->data(j)->delta(i1);
493  sumN(i1) = sumN(i1) + history->data(j)->delta(i1)/TMath::Power(history->data(j)->adcMax(), 2);
494  for (int i2 = lwb; i2 <= upb; i2++) {
495  sumCN(i1, i2) = sumCN(i1, i2) + ofc->Gamma()(i1, i2)/TMath::Power(history->data(j)->adcMax(), 2);
496  sum2N(i1, i2) = sum2N(i1, i2) + history->data(j)->delta(i1)*history->data(j)->delta(i2)/TMath::Power(history->data(j)->adcMax(),2);
497  }
498  }
499  sumA += 1/TMath::Power(history->data(j)->adcMax(), 2);
500  n++;
501  }
502  }
503 
504  sumA /= n;
505  k.ResizeTo(lwb, upb);
506  means.ResizeTo(lwb, upb);
507 
508  for (int i1 = lwb; i1 <= upb; i1++) {
509  sum(i1) = sum(i1)/n;
510  sumN(i1) = sumN(i1)/n;
511  means(i1) = sum(i1);
512  }
513 
514  for (int i1 = lwb; i1 <= upb; i1++) {
515  for (int i2 = lwb; i2 <= upb; i2++) {
516  sumCN(i1, i2) = sumCN(i1, i2)/n;
517  sum2N(i1, i2) = sum2N(i1, i2)/n;
518  k(i1, i2) = sum2N(i1, i2) - sumN(i1)*sum(i2) - sum(i1)*sumN(i2)
519  + sum(i1)*sum(i2)*sumA - sumCN(i1,i2);
520  k(i1, i2) = (k(i1, i2) >= 0 ? sqrt(k(i1, i2)) : -sqrt(-k(i1, i2)));
521  }
522  }
523  return true;
524 }

◆ residualPlots()

bool DigitMonitor::residualPlots ( CaloId  calo,
unsigned int  layer,
CaloGain::CaloGain  gain = CaloGain::LARHIGHGAIN,
bool  xip = false,
bool  ring = false,
double  lo = -0.05,
double  hi = 0.05,
const TString &  fileName = "residuals" 
)

Definition at line 227 of file DigitMonitor.cxx.

229 {
230  TH1D* h1[5];
231  TH2D* hEtaPhi[5];
232  TString globalTitle = TString(xip ? "Derivative" : "Offset") + " correction";
233  for (unsigned short k = 0; k < 5; k++) {
234  TString title = globalTitle + " for sampling " + Form("%d", k);
235  h1[k] = new TH1D(Form("h%d", k), title, 100, lo, hi);
236  h1[k]->GetXaxis()->SetTitle("correction");
237  hEtaPhi[k] = Geo::etaPhiHist(calo, layer, Form("hEtaPhi%d", k), title);
238  hEtaPhi[k]->SetMinimum(lo);
239  hEtaPhi[k]->SetMaximum(hi);
240  }
241  FilterParams f;
242  f.addCalo(calo);
243  f.addLayer(layer);
244  TH2D* hAll = new TH2D("hAll", globalTitle + " vs. sampling", 5, 0, 5, 100, lo, hi);
245  hAll->GetXaxis()->SetTitle("sampling");
246  hAll->GetYaxis()->SetTitle("correction");
247  for (unsigned int i = 0; i < nChannels(); i++) {
248  if ((i+1) % 10000 == 0) cout << "Cell # " << i+1 << "/" << nChannels() << endl;
249  const History* history = pass(i, f);
250  if (!history || history->nData() == 0) continue;
251  for (unsigned short k = 0; k < 5; k++) {
253  double xi = history->data(0)->xi(k, type, gain, xip);
254  h1[k]->Fill(xi);
255  hEtaPhi[k]->Fill(history->cellInfo()->eta(), history->cellInfo()->phi(), xi);
256  if (Id::matchCalo(calo, HEC) && history->cellInfo()->region() == 1) // For HEC, take care of larger phi size in region 1
257  hEtaPhi[k]->Fill(history->cellInfo()->eta(), history->cellInfo()->phi() - Geo::phiSize(HEC_A, 1, 1), xi);
258  }
259  }
260  for (unsigned int i = 1; i <= 100; i++)
261  for (unsigned short k = 0; k < 5; k++)
262  hAll->SetBinContent(k+1, i, h1[k]->GetBinContent(i));
263  TFile* ff = TFile::Open(fileName + ".root", "RECREATE");
264  for (unsigned short k = 0; k < 5; k++) {
265  h1[k]->Write();
266  hEtaPhi[k]->Write();
267  }
268  hAll->Write();
269  ff->Close();
270  TCanvas* c1 = new TCanvas("c1", Id::str(calo) + " layer " + Form("%d", layer), 1600, 2000);
271  c1->Divide(2,3);
272  for (unsigned short k = 0; k < 5; k++) {
273  c1->cd(k+1);
274  hEtaPhi[k]->Draw("COLZ");
275  }
276  c1->cd(6);
277  hAll->Draw();
278  c1->Print(fileName + ".png");
279  c1->Print(fileName + ".eps");
280  return true;
281 }

◆ residualPlotsGainComp()

bool DigitMonitor::residualPlotsGainComp ( CaloId  calo,
unsigned int  layer,
bool  ring = false,
bool  xip = false,
double  lo = -0.05,
double  hi = 0.05,
const TString &  fileName = "residuals" 
)

Definition at line 359 of file DigitMonitor.cxx.

361 {
362  unsigned int nBins = 100;
363  TH1D* h[5][5];
364  TString globalTitle = TString(xip ? "Derivative" : "Offset") + " correction";
365  for (unsigned short l = 0; l < 5; l++)
366  for (unsigned short k = 0; k < 5; k++)
367  h[l][k] = new TH1D(Form("h%d%d", l, k), "", nBins, l < 2 ? -15 : lo, l < 2 ? 15 : hi);
368  FilterParams f;
369  f.addCalo(calo);
370  f.addLayer(layer);
371  TH2D* hAll[5];
372  hAll[0] = new TH2D("h0All", "#xi_{high}/#delta#xi vs. sampling", 5, 0, 5, nBins, -15, 15);
373  hAll[1] = new TH2D("hDAll", "(#xi_{high} - #xi_{low})/#delta#xi vs. sampling", 5, 0, 5, nBins, -15, 15);
374  hAll[2] = new TH2D("hEAll", globalTitle + " higher-gain value vs. sampling", 5, 0, 5, nBins, 0, hi);
375  hAll[3] = new TH2D("hRAll", globalTitle + " lower-gain value vs. sampling", 5, 0, 5, nBins, lo, hi);
376  hAll[4] = new TH2D("hCAll", globalTitle + " higher-gain error vs. sampling", 5, 0, 5, nBins, lo, hi);
377  TH2D* hCor = new TH2D("hCor", globalTitle + " lower-gain vs. higher-gain values", nBins, lo, hi, nBins, lo, hi);
378  hCor->GetXaxis()->SetTitle("#xi_{high}");
379  hCor->GetYaxis()->SetTitle("#xi_{low}");
380  for (unsigned short l = 0; l < 4; l++) {
381  hAll[l]->GetXaxis()->SetTitle("sampling");
382  hAll[l]->GetYaxis()->SetTitle("significance");
383  }
384 
387 
388  for (unsigned int i = 0; i < nChannels(); i++) {
389  if ((i+1) % 10000 == 0) cout << "Cell # " << i+1 << "/" << nChannels() << endl;
390  const History* history = pass(i, f);
391  if (!history || history->nData() == 0) continue;
392  for (unsigned short k = 0; k < 5; k++) {
393  const ShapeErrorData* hgSED = history->shapeErrorData(hiGain, ring ? RingShapeError : CellShapeError);
394  const ShapeErrorData* lgSED = history->shapeErrorData(loGain, ring ? RingShapeError : CellShapeError);
395  if (!hgSED || !lgSED) {
396  if (hgSED) delete hgSED;
397  if (lgSED) delete lgSED;
398  continue;
399  }
400  double hgVal = (xip ? hgSED->xi()(k) : hgSED->xip()(k));
401  double lgVal = (xip ? lgSED->xi()(k) : lgSED->xip()(k));
402  double hgErr = TMath::Sqrt(xip ? hgSED->xiErr()(k,k) : hgSED->xipErr()(k,k));
403  double error = TMath::Sqrt(xip ? hgSED->xiErr()(k,k) + lgSED->xiErr()(k,k) : hgSED->xipErr()(k,k) + lgSED->xipErr()(k,k));
404  delete hgSED;
405  delete lgSED;
406  h[0][k]->Fill(hgVal/hgErr);
407  h[1][k]->Fill((hgVal - lgVal)/error);
408  h[2][k]->Fill(hgVal);
409  h[3][k]->Fill(lgVal);
410  h[4][k]->Fill(hgErr);
411  hCor->Fill(hgVal, lgVal);
412  }
413  }
414  for (unsigned int i = 1; i <= nBins; i++)
415  for (unsigned short l = 0; l < 5; l++)
416  for (unsigned short k = 0; k < 5; k++)
417  hAll[l]->SetBinContent(k+1, i, h[l][k]->GetBinContent(i));
418  TFile* ff = TFile::Open(fileName + ".root", "RECREATE");
419  for (unsigned short l = 0; l < 5; l++) {
420  for (unsigned short k = 0; k < 5; k++)
421  h[l][k]->Write();
422  hAll[l]->Write();
423  }
424  ff->Close();
425  TCanvas* c1 = new TCanvas("c1", Id::str(calo) + " layer " + Form("%d", layer), 1600, 500);
426  c1->Divide(3,1);
427  c1->cd(1); hCor->Draw();
428  TLatex l; l.SetNDC();
429  TString corrStr = Form("Correlation : %.1f%%", 100*hCor->GetCorrelationFactor());
430  l.DrawLatex(0.2, 0.8, corrStr);
431  c1->cd(2); hAll[0]->Draw("COL");
432  c1->cd(3); hAll[1]->Draw("COL");
433  c1->Print(fileName + ".png");
434  c1->Print(fileName + ".eps");
435  return true;
436 }

◆ residualPlotsRingComp()

bool DigitMonitor::residualPlotsRingComp ( CaloId  calo,
unsigned int  layer,
CaloGain::CaloGain  gain = CaloGain::LARHIGHGAIN,
bool  xip = false,
double  lo = -0.05,
double  hi = 0.05,
const TString &  fileName = "residuals" 
)

Definition at line 284 of file DigitMonitor.cxx.

286 {
287  unsigned int nBins = 100;
288  TH1D* h[5][5];
289  TString globalTitle = TString(xip ? "Derivative" : "Offset") + " correction";
290  for (unsigned short l = 0; l < 5; l++)
291  for (unsigned short k = 0; k < 5; k++)
292  h[l][k] = new TH1D(Form("h%d%d", l, k), "", nBins, l < 2 ? -15 : lo, l < 2 ? 15 : hi);
293  FilterParams f;
294  f.addCalo(calo);
295  f.addLayer(layer);
296  TH2D* hAll[5];
297  hAll[0] = new TH2D("h0All", "#xi_{cell}/#delta#xi vs. sampling", 5, 0, 5, nBins, -15, 15);
298  hAll[1] = new TH2D("hDAll", "(#xi_{cell} - #xi_{ring})/#delta#xi vs. sampling", 5, 0, 5, nBins, -15, 15);
299  hAll[2] = new TH2D("hEAll", globalTitle + " per-cell value vs. sampling", 5, 0, 5, nBins, 0, hi);
300  hAll[3] = new TH2D("hRAll", globalTitle + " per-ring value vs. sampling", 5, 0, 5, nBins, lo, hi);
301  hAll[4] = new TH2D("hCAll", globalTitle + " per-cell error vs. sampling", 5, 0, 5, nBins, lo, hi);
302  TH2D* hCor = new TH2D("hCor", globalTitle + " per-ring vs. per-cell values", nBins, lo, hi, nBins, lo, hi);
303  hCor->GetXaxis()->SetTitle("#xi_{cell}");
304  hCor->GetYaxis()->SetTitle("#xi_{ring}");
305  for (unsigned short l = 0; l < 4; l++) {
306  hAll[l]->GetXaxis()->SetTitle("sampling");
307  hAll[l]->GetYaxis()->SetTitle("significance");
308  }
309  for (unsigned int i = 0; i < nChannels(); i++) {
310  if ((i+1) % 10000 == 0) cout << "Cell # " << i+1 << "/" << nChannels() << endl;
311  const History* history = pass(i, f);
312  if (!history || history->nData() == 0) continue;
313  for (unsigned short k = 0; k < 5; k++) {
314  const ShapeErrorData* cellSED = history->shapeErrorData(gain, CellShapeError);
315  const ShapeErrorData* ringSED = history->shapeErrorData(gain, RingShapeError);
316  if (!cellSED || !ringSED) {
317  if (cellSED) delete cellSED;
318  if (ringSED) delete ringSED;
319  continue;
320  }
321  double cellVal = (xip ? cellSED->xi()(k) : cellSED->xip()(k));
322  double ringVal = (xip ? ringSED->xi()(k) : ringSED->xip()(k));
323  double cellErr = TMath::Sqrt(xip ? cellSED->xiErr()(k,k) : cellSED->xipErr()(k,k));
324  delete cellSED;
325  delete ringSED;
326  h[0][k]->Fill(cellVal/cellErr);
327  h[1][k]->Fill((cellVal - ringVal)/cellErr);
328  h[2][k]->Fill(cellVal);
329  h[3][k]->Fill(ringVal);
330  h[4][k]->Fill(cellErr);
331  hCor->Fill(cellVal, ringVal);
332  }
333  }
334  for (unsigned int i = 1; i <= nBins; i++)
335  for (unsigned short l = 0; l < 5; l++)
336  for (unsigned short k = 0; k < 5; k++)
337  hAll[l]->SetBinContent(k+1, i, h[l][k]->GetBinContent(i));
338  TFile* ff = TFile::Open(fileName + ".root", "RECREATE");
339  for (unsigned short l = 0; l < 5; l++) {
340  for (unsigned short k = 0; k < 5; k++)
341  h[l][k]->Write();
342  hAll[l]->Write();
343  }
344  ff->Close();
345  TCanvas* c1 = new TCanvas("c1", Id::str(calo) + " layer " + Form("%d", layer), 1600, 500);
346  c1->Divide(3,1);
347  c1->cd(1); hCor->Draw();
348  TLatex l; l.SetNDC();
349  TString corrStr = Form("Correlation : %.1f%%", 100*hCor->GetCorrelationFactor());
350  l.DrawLatex(0.2, 0.8, corrStr);
351  c1->cd(2); hAll[0]->Draw("COL");
352  c1->cd(3); hAll[1]->Draw("COL");
353  c1->Print(fileName + ".png");
354  c1->Print(fileName + ".eps");
355  return true;
356 }

◆ shapeErrorDist()

TH1D * DigitMonitor::shapeErrorDist ( unsigned int  k,
const TString &  name,
int  nBins,
double  rMin,
double  rMax,
double  mean = 0 
) const

Definition at line 439 of file DigitMonitor.cxx.

440 {
441  TH1D* h = new TH1D(name, "Shape error", nBins, rMin, rMax);
442  h->GetXaxis()->SetTitle("#epsilon^{2}");
443 
444  for (unsigned int i = 0; i < nChannels(); i++) {
445  const History* history = cellHistory(i);
446  if (!history) continue;
447  for (unsigned int j = 0; j < history->nData(); j++) {
448  OFC* ofc = history->ofc(j);
449  double delta = history->data(j)->delta(k) - mean;
450  double adcMax = history->data(j)->adcMax();
451  h->Fill((delta*delta - ofc->Gamma()(k, k))/(adcMax*adcMax));
452  }
453  }
454  cout << sqrt(h->GetMean())*100 << " +/- " << sqrt(h->GetMeanError())*100 << endl;
455  return h;
456 }

◆ 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 370 of file LArCalorimeter/LArSamplesMon/src/MonitorBase.cxx.

374 {
375  Averager avg(funcs.size());
376 
377  for (unsigned int i = 0; i < m_interface->nChannels(); i++) {
378  if ((i+1) % printPeriodicity == 0) cout << "Cell # " << i+1 << "/" << m_interface->nChannels() << endl;
379  const History* history = pass(i, f);
380  if (!history) continue;
381  for (unsigned int j = 0; j < history->nData(); j++) {
382  if (!f.passEvent(*history->data(j))) continue;
383  TVectorD vals(funcs.size());
384  for (unsigned int k = 0; k < funcs.size(); k++)
385  vals(k) = funcs[k].val(*history->data(j), args[k]);
386  avg.fill(vals);
387  }
388  }
389 
390  mean = avg.means();
391  meanErr = avg.meanErrors();
392  covMatrix = avg.covarianceMatrix();
393  covMatrixErr = avg.covarianceMatrixErrors();
394 
395  return true;
396 }

◆ str()

TString MonitorBase::str ( CombinationType  comb)
staticinherited

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

52 {
53  switch (comb) {
54  case AverageValue : return "average";
55  case MaxValue : return "max value";
56  case MinValue : return "min value";
57  case TotalValue : return "total value";
58  case RMSValue : return "RMS";
59  }
60  return "";
61 }

◆ timeDist()

TH1D * DigitMonitor::timeDist ( const TString &  name,
int  nBins,
double  tMin = -25,
double  tMax = 25 
) const

Definition at line 43 of file DigitMonitor.cxx.

44 { return dist(&Data::_ofcTime, DataFuncArgs(), name, nBins, tMin, tMax, "Time distribution", "Time (ns)"); }

Member Data Documentation

◆ m_cellCache

const History* LArSamples::AbsLArCells::m_cellCache
mutableprivateinherited

Definition at line 52 of file AbsLArCells.h.

◆ m_cellInfoCache

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

Definition at line 53 of file AbsLArCells.h.

◆ m_interface

const Interface* LArSamples::MonitorBase::m_interface
privateinherited

◆ m_pos

unsigned int LArSamples::AbsLArCells::m_pos
mutableprivateinherited

Definition at line 51 of file AbsLArCells.h.

◆ printPeriodicity

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

The documentation for this class was generated from the following files:
grepfile.info
info
Definition: grepfile.py:38
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
LArSamples::Data::_layer
int _layer(const DataFuncArgs &args) const
Definition: Data.cxx:326
LArSamples::Geo::phiSize
static double phiSize(CaloId calo, short layer, short region, short iPhi=-1)
Definition: Geometry.cxx:344
LArSamples::Data::_eta
double _eta(const DataFuncArgs &args) const
Definition: Data.cxx:498
plotBeamSpotCompare.x1
x1
Definition: plotBeamSpotCompare.py:216
trigbs_pickEvents.ranges
ranges
Definition: trigbs_pickEvents.py:60
beamspotnt.var
var
Definition: bin/beamspotnt.py:1394
LArSamples::CellInfo::feb
short feb() const
Definition: CellInfo.cxx:102
LArSamples::AbsLArCells::m_pos
unsigned int m_pos
Definition: AbsLArCells.h:51
LArSamples::MonitorBase::dist
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
Definition: LArCalorimeter/LArSamplesMon/src/MonitorBase.cxx:64
LArSamples::Geo::etaPhiHist
static TH2D * etaPhiHist(CaloId calo, short layer, const TString &name, const TString &title)
Definition: Geometry.cxx:549
python.CaloRecoConfig.f
f
Definition: CaloRecoConfig.py:127
PlotCalibFromCool.norm
norm
Definition: PlotCalibFromCool.py:100
LArSamples::Data::_xip
double _xip(const DataFuncArgs &args) const
Definition: Data.h:223
LArSamples::Data::_chi2_noCorr
double _chi2_noCorr(const DataFuncArgs &args) const
Definition: Data.cxx:204
LArSamples::HEC
@ HEC
Definition: CaloId.h:26
checkFileSG.line
line
Definition: checkFileSG.py:75
WriteBchToCool.adjust
adjust
Definition: WriteBchToCool.py:73
LArSamples::CellInfo::globalPhiRing
short globalPhiRing() const
Definition: CellInfo.cxx:125
mean
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="")
Definition: dependence.cxx:254
LArSamples::MonitorBase::func
static DataFuncSet func(const TString &var)
Definition: LArCalorimeter/LArSamplesMon/src/MonitorBase.cxx:426
get_generator_info.result
result
Definition: get_generator_info.py:21
header
Definition: hcg.cxx:526
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
LArSamples::TreeShapeErrorGetter::addCell
int addCell(const ResidualCalculator &calc, CaloGain::CaloGain gain)
Definition: TreeShapeErrorGetter.cxx:128
LArSamples::Id::matchCalo
static bool matchCalo(CaloId id, CaloId idSpec)
Definition: CaloId.cxx:188
max
#define max(a, b)
Definition: cfImp.cxx:41
LArSamples::AbsLArCells::newCellHistory
virtual const History * newCellHistory(unsigned int i) const
Definition: AbsLArCells.cxx:42
checkCoolLatestUpdate.variables
variables
Definition: checkCoolLatestUpdate.py:13
LArSamples::Data::_sample
double _sample(const DataFuncArgs &args) const
Definition: Data.h:194
LArSamples::FilterParams
Definition: FilterParams.h:50
LArSamples::Data::_adjDeltaT
double _adjDeltaT(const DataFuncArgs &args) const
Definition: Data.cxx:282
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
LArSamples::Data::delta
double delta(short sample) const
Definition: Data.cxx:424
LArSamples::History::cellInfo
const CellInfo * cellInfo() const
Definition: History.h:61
LArSamples::CovMatrix
TMatrixTSym< double > CovMatrix
Definition: Definitions.h:11
LArSamples::History::referenceShape
SimpleShape * referenceShape(unsigned int k, double adcMax=-1, double time=Definitions::none, bool samplesOnly=false) const
Definition: History.cxx:544
LArSamples::AbsLArCells::cellHistory
virtual const History * cellHistory(unsigned int i) const
Definition: AbsLArCells.cxx:57
LArSamples::Data::_region
int _region(const DataFuncArgs &args) const
Definition: Data.cxx:312
LArSamples::Data::adcMax
double adcMax() const
Definition: Data.h:129
Data
@ Data
Definition: BaseObject.h:11
LArSamples::Data::_pedestalRMS
double _pedestalRMS(const DataFuncArgs &) const
Definition: Data.h:200
LArSamples::History
Definition: History.h:40
LArSamples::MinValue
@ MinValue
Definition: LArCalorimeter/LArSamplesMon/LArSamplesMon/MonitorBase.h:27
extractSporadic.c1
c1
Definition: extractSporadic.py:134
LArSamples::Data::_xi
double _xi(const DataFuncArgs &args) const
Definition: Data.h:218
LArSamples::AbsLArCells::m_cellInfoCache
std::vector< CellInfo * > m_cellInfoCache
Definition: AbsLArCells.h:53
LArSamples::MonitorBase::interface
const Interface & interface() const
Definition: LArCalorimeter/LArSamplesMon/LArSamplesMon/MonitorBase.h:74
CaloCondBlobAlgs_fillNoiseFromASCII.gain
gain
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:110
LArSamples::Data::_xiNormRing
double _xiNormRing(const DataFuncArgs &) const
Definition: Data.h:222
LArSamples::Data::_ring
int _ring(const DataFuncArgs &args) const
Definition: Data.cxx:361
LArSamples::SimpleShape
Definition: SimpleShape.h:25
LArSamples::Id::str
static TString str(CaloId id)
Definition: CaloId.cxx:15
LArSamples::History::residuals
Residuals * residuals(CaloGain::CaloGain gain=CaloGain::LARNGAIN, double absResTrunc=-1, bool correct=true, bool zeroTime=false) const
Definition: History.cxx:612
LArSamples::AbsLArCells::cellInfo
virtual const CellInfo * cellInfo(unsigned int i) const
Definition: AbsLArCells.cxx:69
LArSamples::Data::_nData
int _nData(const DataFuncArgs &args) const
Definition: Data.cxx:368
UploadAMITag.l
list l
Definition: UploadAMITag.larcaf.py:158
LArSamples::Interface::getCellHistory
const History * getCellHistory(unsigned int i) const
Definition: Interface.cxx:103
LArSamples::Data::_pass
double _pass(const DataFuncArgs &args) const
Definition: Data.h:275
LArSamples::DigitMonitor::residualParams
bool residualParams(int lwb, int upb, CovMatrix &k, TVectorD &means) const
Definition: DigitMonitor.cxx:479
LArSamples::Data::_refitDeltaT
double _refitDeltaT(const DataFuncArgs &args) const
Definition: Data.cxx:245
LArSamples::Data::ofcTime
double ofcTime() const
Definition: Data.h:116
LArSamples::MonitorBase::history_value
static double history_value(const History &history, const DataFuncSet &func, const DataFuncArgs &args, CombinationType comb, const FilterParams &f, unsigned int &nValues)
Definition: LArCalorimeter/LArSamplesMon/src/MonitorBase.cxx:399
LArSamples::CellInfo::phi
double phi() const
Definition: CellInfo.h:94
LArSamples::Averager
storage of the time histories of all the cells
Definition: Averager.h:23
LArSamples::HEC_A
@ HEC_A
Definition: CaloId.h:24
LArSamples::Data::_energySignif
double _energySignif(const DataFuncArgs &args) const
Definition: Data.cxx:402
LArSamples::ResidualCalculator::size
unsigned int size() const
Definition: LArCalorimeter/LArSamplesMon/LArSamplesMon/Residual.h:117
LArSamples::ResidualCalculator
Definition: LArCalorimeter/LArSamplesMon/LArSamplesMon/Residual.h:101
LArSamples::History::ofc
OFC * ofc(unsigned int i, int lwb=-1, int upb=-1, double time=Definitions::none, bool useCorrs=true) const
Definition: History.cxx:204
LArSamples::Data::_calo
int _calo(const DataFuncArgs &args) const
Definition: Data.cxx:319
read_hist_ntuple.h1
h1
Definition: read_hist_ntuple.py:21
CaloGain::LARNGAIN
@ LARNGAIN
Definition: CaloGain.h:19
LArSamples::MonitorBase::printPeriodicity
static const int printPeriodicity
Definition: LArCalorimeter/LArSamplesMon/LArSamplesMon/MonitorBase.h:79
LArSamples::TreeShapeErrorGetter::addRing
int addRing(const ResidualCalculator &calc, CaloGain::CaloGain gain)
Definition: TreeShapeErrorGetter.cxx:138
LArSamples::Data::_normResidualOffset
double _normResidualOffset(const DataFuncArgs &args) const
Definition: Data.h:225
LArSamples::Data::_quality
double _quality(const DataFuncArgs &) const
Definition: Data.h:198
LArSamples::CombinedShapeErrorGetter::add
void add(const AbsShapeErrorGetter &getter)
Definition: CombinedShapeErrorGetter.h:25
LArSamples::DigitMonitor::getResiduals
Residuals * getResiduals(unsigned int hash, CaloGain::CaloGain gain, double absResTrunc=-1, bool adjust=false, bool zeroTime=false) const
Definition: DigitMonitor.cxx:563
LArSamples::Data::_upstreamE
double _upstreamE(const DataFuncArgs &) const
Definition: Data.h:266
LArSamples::Data::_delta
double _delta(const DataFuncArgs &args) const
Definition: Data.h:214
LArSamples::MonitorBase::nChannels
unsigned int nChannels() const
Definition: LArCalorimeter/LArSamplesMon/src/MonitorBase.cxx:45
LArSamples::Data::_iPhi
int _iPhi(const DataFuncArgs &args) const
Definition: Data.cxx:305
LArSamples::Data::_gain
int _gain(const DataFuncArgs &) const
Definition: Data.h:213
LArSamples::SimpleShape::add
bool add(unsigned int k, double value, double error)
Definition: SimpleShape.cxx:92
LArSamples::Data::_hash
int _hash(const DataFuncArgs &args) const
Definition: Data.cxx:354
LArSamples::ShapeErrorData::xip
const TVectorD & xip() const
Definition: ShapeErrorData.h:41
compareGeometries.outputFile
string outputFile
Definition: compareGeometries.py:25
python.setupRTTAlg.size
int size
Definition: setupRTTAlg.py:39
LArSamples::Data::_resCorrN
double _resCorrN(const DataFuncArgs &) const
Definition: Data.h:217
LArSamples::History::data
const Data * data(unsigned int i) const
Definition: History.cxx:88
part1
Definition: part1.py:1
LArSamples::Data::_chi2_ringCorr
double _chi2_ringCorr(const DataFuncArgs &args) const
Definition: Data.cxx:211
LArSamples::Data::_ofcSigma
double _ofcSigma(const DataFuncArgs &args) const
Definition: Data.cxx:562
LArSamples::Data::_phi
double _phi(const DataFuncArgs &args) const
Definition: Data.cxx:499
LArSamples::Data::_adcMax_new
double _adcMax_new(const DataFuncArgs &) const
Definition: Data.h:202
LArSamples::TotalValue
@ TotalValue
Definition: LArCalorimeter/LArSamplesMon/LArSamplesMon/MonitorBase.h:27
LArSamples::Data::_residualOffset
double _residualOffset(const DataFuncArgs &args) const
Definition: Data.h:216
FortranAlgorithmOptions.fileName
fileName
Definition: FortranAlgorithmOptions.py:13
LArSamples::MonitorBase::parseVariables
static bool parseVariables(TString varStr, std::vector< TString > &vars, std::vector< DataFuncSet > &funcs, std::vector< DataFuncArgs > &args)
Definition: LArCalorimeter/LArSamplesMon/src/MonitorBase.cxx:147
LArSamples::Data::_iEta
int _iEta(const DataFuncArgs &args) const
Definition: Data.cxx:298
LArSamples::MaxValue
@ MaxValue
Definition: LArCalorimeter/LArSamplesMon/LArSamplesMon/MonitorBase.h:27
convertTimingResiduals.sum
sum
Definition: convertTimingResiduals.py:55
LArSamples::Data::_feedThrough
int _feedThrough(const DataFuncArgs &args) const
Definition: Data.cxx:333
lumiFormat.i
int i
Definition: lumiFormat.py:92
LArSamples::Data::_chi2_k
double _chi2_k(const DataFuncArgs &args) const
Definition: Data.cxx:225
LArSamples::Data::_maxPosition
int _maxPosition(const DataFuncArgs &) const
Definition: Data.h:240
D3PDSizeSummary.ff
ff
Definition: D3PDSizeSummary.py:305
h
python.CaloCondTools.g
g
Definition: CaloCondTools.py:15
beamspotman.n
n
Definition: beamspotman.py:731
LArSamples::Data::_adjScale
double _adjScale(const DataFuncArgs &args) const
Definition: Data.cxx:290
PixelAthClusterMonAlgCfg.varName
string varName
end cluster ToT and charge
Definition: PixelAthClusterMonAlgCfg.py:117
Recovery.avg
def avg(a, b)
Definition: Recovery.py:79
extractSporadic.h
list h
Definition: extractSporadic.py:97
LArSamples::Definitions::none
static const double none
Definition: Definitions.h:17
LArSamples::AbsLArCells::getCellInfo
virtual const CellInfo * getCellInfo(unsigned int i) const
Definition: AbsLArCells.cxx:86
xAOD::covMatrix
covMatrix
Definition: TrackMeasurement_v1.cxx:19
TRT::Hit::layer
@ layer
Definition: HitInfo.h:79
LArSamples::History::setShapeErrorGetter
void setShapeErrorGetter(const AbsShapeErrorGetter *err) const
Definition: History.h:92
LArSamples::Data::_pedestalSubstractedSample
double _pedestalSubstractedSample(const DataFuncArgs &args) const
Definition: Data.h:195
covarianceTool.title
title
Definition: covarianceTool.py:542
LArSamples::ShapeErrorData::xipErr
const CovMatrix & xipErr() const
Definition: ShapeErrorData.h:43
LArSamples::CellInfo::location
TString location(int verbose=1) const
Definition: CellInfo.cxx:139
plotBeamSpotVxVal.range
range
Definition: plotBeamSpotVxVal.py:195
LArSamples::Data::_peakSignif
double _peakSignif(const DataFuncArgs &args) const
Definition: Data.cxx:396
GetAllXsec.kFactor
kFactor
Definition: GetAllXsec.py:95
LArSamples::Data::_normResidualError
double _normResidualError(const DataFuncArgs &args) const
Definition: Data.h:226
LArSamples::ShapeErrorType
ShapeErrorType
Definition: Definitions.h:21
LArSamples::Data::_timeECorr
double _timeECorr(const DataFuncArgs &args) const
Definition: Data.cxx:639
LArSamples::Data::_timeForSplash2
double _timeForSplash2(const DataFuncArgs &args) const
Definition: Data.cxx:389
LArSamples::ShapeErrorData::xiErr
const CovMatrix & xiErr() const
Definition: ShapeErrorData.h:42
LArSamples::AbsLArCells::getCellHistory
virtual const History * getCellHistory(unsigned int i) const =0
LArSamples::AverageValue
@ AverageValue
Definition: LArCalorimeter/LArSamplesMon/LArSamplesMon/MonitorBase.h:27
LArSamples::MonitorBase::m_interface
const Interface * m_interface
Definition: LArCalorimeter/LArSamplesMon/LArSamplesMon/MonitorBase.h:86
LArSamples::History::nData
unsigned int nData() const
Definition: History.h:56
LArSamples::Residuals::calculator
ResidualCalculator * calculator(bool weigh=false) const
Definition: LArCalorimeter/LArSamplesMon/src/Residual.cxx:185
LArSamples::History::chi2
double chi2(int i, int lwb=-1, int upb=-1, int chi2Params=DefaultChi2, ShapeErrorType shapeErrorType=BestShapeError, unsigned int *nDof=0) const
Definition: History.cxx:161
selection
std::string selection
Definition: fbtTestBasics.cxx:73
fcn
void fcn(int &, double *, double &result, double par[], int)
this is where we write out chi2
Definition: Chi2LJets.cxx:183
LArSamples::Data::_xiNormCell
double _xiNormCell(const DataFuncArgs &) const
Definition: Data.h:221
LArSamples::Data::_timeForSplash1
double _timeForSplash1(const DataFuncArgs &args) const
Definition: Data.cxx:382
MakeTH3DFromTH2Ds.maxVals
maxVals
Definition: MakeTH3DFromTH2Ds.py:74
LArSamples::OFC
Definition: OFC.h:27
LArSamples::Geo::partitionHist
static TH2D * partitionHist(PartitionId part, const TString &name, const TString &title)
Definition: Geometry.cxx:18
LArSamples::Residuals
Definition: LArCalorimeter/LArSamplesMon/LArSamplesMon/Residual.h:72
LArSamples::Interface::getCellInfo
const CellInfo * getCellInfo(unsigned int i) const
Definition: Interface.cxx:125
LArSamples::Data::_ofcTime
double _ofcTime(const DataFuncArgs &) const
Definition: Data.h:197
dumpTgcDigiJitter.nBins
list nBins
Definition: dumpTgcDigiJitter.py:29
LArSamples::AbsLArCells::pass
const History * pass(unsigned int i, const FilterParams &f) const
Definition: AbsLArCells.cxx:97
LArSamples::Data::_chi2_cellCorr
double _chi2_cellCorr(const DataFuncArgs &args) const
Definition: Data.cxx:218
LArSamples::Data::_timeNoTOF
double _timeNoTOF(const DataFuncArgs &args) const
Definition: Data.cxx:375
LArSamples::AbsLArCells::cellInfoCache
const CellInfo * cellInfoCache(unsigned int i) const
Definition: AbsLArCells.cxx:80
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
createCoolChannelIdFile.par
par
Definition: createCoolChannelIdFile.py:29
LArSamples::AbsShape::maxValue
double maxValue(bool withErrors=false) const
Definition: AbsShape.cxx:30
LArSamples::AbsLArCells::m_cellCache
const History * m_cellCache
Definition: AbsLArCells.h:52
LArSamples::SimpleShape::scaleAndShift
static bool scaleAndShift(SimpleShape *&s1, double scale, double shift=0)
Definition: SimpleShape.cxx:142
LArSamples::Data::_minValue
double _minValue(const DataFuncArgs &) const
Definition: Data.h:205
LArSamples::Data::_upstreamERatio
double _upstreamERatio(const DataFuncArgs &args) const
Definition: Data.cxx:586
LArSamples::Residuals::truncate
Residuals * truncate(double nWidthsRes, double nWidthsTime=-1, unsigned int nMax=0) const
Definition: LArCalorimeter/LArSamplesMon/src/Residual.cxx:143
LArSamples::Data::gain
CaloGain::CaloGain gain() const
Definition: Data.h:90
LArSamples::Data::_maxValue
double _maxValue(const DataFuncArgs &) const
Definition: Data.h:204
LArSamples::Data::_noise
double _noise(const DataFuncArgs &) const
Definition: Data.h:203
covarianceTool.verbosity
verbosity
Definition: covarianceTool.py:513
LArSamples::DigitMonitor::fitChi2
static TF1 * fitChi2(TH1D &h, const char *name, double xMin, double xMax, double nDof=-1, double fitMin=Definitions::none, double fitMax=Definitions::none)
Definition: DigitMonitor.cxx:114
LArSamples::MonitorBase::partitionMap
TH2D * partitionMap(const DataFuncSet &func, const DataFuncArgs &args, TString name, PartitionId partition, const TString &title="", CombinationType comb=AverageValue, const FilterParams &f=FilterParams()) const
Definition: LArCalorimeter/LArSamplesMon/src/MonitorBase.cxx:108
LArSamples::Data::_slot
int _slot(const DataFuncArgs &args) const
Definition: Data.cxx:340
LArSamples::Data::_run
int _run(const DataFuncArgs &) const
Definition: Data.h:208
LArSamples::TreeShapeErrorGetter
Definition: TreeShapeErrorGetter.h:31
CaloGain::LARHIGHGAIN
@ LARHIGHGAIN
Definition: CaloGain.h:18
LArSamples::DigitMonitor::means
TVectorD means(int lwb, int upb)
Definition: DigitMonitor.h:84
LArSamples::CellInfo
Definition: CellInfo.h:31
LArSamples::Data::_chi2Anomaly
double _chi2Anomaly(const DataFuncArgs &args) const
Definition: Data.cxx:594
LArSamples::Data::_energy
double _energy(const DataFuncArgs &) const
Definition: Data.h:196
LArSamples::Data::_goodForShapeCorr
int _goodForShapeCorr(const DataFuncArgs &) const
Definition: Data.h:265
CaloGain::CaloGain
CaloGain
Definition: CaloGain.h:11
LArSamples::Data::_count
double _count(const DataFuncArgs &) const
Definition: Data.h:242
LArSamples::MonitorBase::prepareDumpParams
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
Definition: LArCalorimeter/LArSamplesMon/src/MonitorBase.cxx:239
LArSamples::CellInfo::channel
short channel() const
Definition: CellInfo.h:76
LArSamples::FCAL
@ FCAL
Definition: CaloId.h:26
CaloGain::LARMEDIUMGAIN
@ LARMEDIUMGAIN
Definition: CaloGain.h:18
LArSamples::History::shapeErrorData
const ShapeErrorData * shapeErrorData(CaloGain::CaloGain gain, ShapeErrorType shapeErrorType=BestShapeError, const Residual *res=0) const
Definition: History.cxx:299
CaloCondBlobAlgs_fillNoiseFromASCII.hash
dictionary hash
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:109
ref
const boost::regex ref(r_ef)
LArSamples::Residuals::size
unsigned int size() const
Definition: LArCalorimeter/LArSamplesMon/LArSamplesMon/Residual.h:80
Pythia8_RapidityOrderMPI.val
val
Definition: Pythia8_RapidityOrderMPI.py:14
LArSamples::DataFuncSet
Definition: Data.h:59
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
LArSamples::DataFuncSet::val
double val(const Data &data, const DataFuncArgs &args) const
Definition: Data.h:66
LArSamples::Data::_index
int _index(const DataFuncArgs &) const
Definition: Data.h:212
LArSamples::History::adjust
History * adjust() const
Definition: History.cxx:256
StateLessPT_NewConfig.partition
partition
Definition: StateLessPT_NewConfig.py:49
LArSamples::DataFuncArgs
Definition: Data.h:39
LArSamples::CombinedShapeErrorGetter
Definition: CombinedShapeErrorGetter.h:18
LArSamples::CellInfo::region
short region() const
Definition: CellInfo.h:59
LArSamples::Definitions::isNone
static bool isNone(double x)
Definition: Definitions.h:18
beamspotnt.varList
list varList
Definition: bin/beamspotnt.py:1108
LArSamples::Data::xi
double xi(short sample, ShapeErrorType shapeErrorType=BestShapeError, CaloGain::CaloGain g=CaloGain::UNKNOWNGAIN, bool xip=false) const
Definition: Data.cxx:456
LArSamples::CellShapeError
@ CellShapeError
Definition: Definitions.h:21
LArSamples::AbsLArCells::resetCache
virtual void resetCache() const
Definition: AbsLArCells.cxx:32
LArSamples::Data::_residual
double _residual(const DataFuncArgs &args) const
Definition: Data.h:215
str
Definition: BTagTrackIpAccessor.cxx:11
LArSamples::DigitMonitor::chi2Func
static TF1 * chi2Func(const char *name, double xMin, double xMax)
Definition: DigitMonitor.cxx:104
LArSamples::Data::_x
double _x(const DataFuncArgs &args) const
Definition: Data.cxx:494
LArSamples::CellInfo::eta
double eta() const
Definition: CellInfo.h:93
LArSamples::Data::_ofcGamma
double _ofcGamma(const DataFuncArgs &args) const
Definition: Data.cxx:574
MakeTH3DFromTH2Ds.minVals
minVals
Definition: MakeTH3DFromTH2Ds.py:73
LArSamples::ShapeErrorData
Definition: ShapeErrorData.h:19
LArSamples::Data::_residualError
double _residualError(const DataFuncArgs &args) const
Definition: Data.h:224
CaloGain::LARLOWGAIN
@ LARLOWGAIN
Definition: CaloGain.h:18
LArSamples::ShapeErrorData::xi
const TVectorD & xi() const
Definition: ShapeErrorData.h:40
dqBeamSpot.nEntries
int nEntries
Definition: dqBeamSpot.py:73
LArSamples::Data::_lumiBlock
int _lumiBlock(const DataFuncArgs &) const
Definition: Data.h:210
LArSamples::Data::_rt
double _rt(const DataFuncArgs &args) const
Definition: Data.cxx:497
error
Definition: IImpactPoint3dEstimator.h:70
LArSamples::Geo::nPhiRings
static short nPhiRings()
Definition: Geometry.cxx:84
ReadOfcFromCool.ofc
ofc
Definition: ReadOfcFromCool.py:110
LArSamples::Data::_channel
int _channel(const DataFuncArgs &args) const
Definition: Data.cxx:347
LArSamples::Data::_refitScale
double _refitScale(const DataFuncArgs &args) const
Definition: Data.cxx:253
LArSamples::MonitorBase::MonitorBase
MonitorBase(const Interface &interface)
Constructor
Definition: LArCalorimeter/LArSamplesMon/LArSamplesMon/MonitorBase.h:35
LArSamples::Data::_chi2
double _chi2(const DataFuncArgs &) const
Definition: Data.h:244
LArSamples::Data::_adcMax
double _adcMax(const DataFuncArgs &) const
Definition: Data.h:201
LArSamples::CellInfo::layer
short layer() const
Definition: CellInfo.h:53
LArSamples::Data::_z
double _z(const DataFuncArgs &args) const
Definition: Data.cxx:496
LArSamples::Data::_pedestal
double _pedestal(const DataFuncArgs &) const
Definition: Data.h:199
LArSamples::AbsLArCells::nChannels
virtual unsigned int nChannels() const
Definition: AbsLArCells.h:34
LArSamples::Data::_event
int _event(const DataFuncArgs &) const
Definition: Data.h:209
LArSamples::Data::_y
double _y(const DataFuncArgs &args) const
Definition: Data.cxx:495
python.CaloScaleNoiseConfig.args
args
Definition: CaloScaleNoiseConfig.py:80
LArSamples::Data::_bunchId
int _bunchId(const DataFuncArgs &) const
Definition: Data.h:211
LArSamples::Data::_refitChi2
double _refitChi2(const DataFuncArgs &args) const
Definition: Data.cxx:261
LArSamples::RingShapeError
@ RingShapeError
Definition: Definitions.h:23
LArSamples::Data::_xiRing
double _xiRing(const DataFuncArgs &args) const
Definition: Data.h:220
fitman.k
k
Definition: fitman.py:528
LArSamples::RMSValue
@ RMSValue
Definition: LArCalorimeter/LArSamplesMon/LArSamplesMon/MonitorBase.h:27
PlotCalibFromCool.vals
vals
Definition: PlotCalibFromCool.py:474
LArSamples::Data::_xiCell
double _xiCell(const DataFuncArgs &args) const
Definition: Data.h:219
LArSamples::UniformShapeErrorGetter
Definition: UniformShapeErrorGetter.h:17