ATLAS Offline Software
Loading...
Searching...
No Matches
Data.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3*/
4
6
10
11#include "LArCafJobs/CellInfo.h"
15#include "LArSamplesMon/OFC.h"
17#include "TMath.h"
18#include <iostream>
19#include <fstream>
20
21using std::cout;
22using std::endl;
23
24using namespace LArSamples;
25
26
27int Data::run() const { return eventData().run(); }
28int Data::event() const { return eventData().event(); }
29int Data::lumiBlock() const { return eventData().lumiBlock(); }
30int Data::bunchId() const { return eventData().bunchId(); }
31
38
39
40Data::Data(std::unique_ptr<const DataContainer> container, const EventData& eventData, const History* history, int index)
43{
45}
46
47
48Data::Data(const Data& other, const EventData* eventData, const History* history, int index)
49 : AbsShape(), m_container(new DataContainer(other.container())),
51 m_history(history ? history : other.m_history), m_index(index >= 0 ? index : other.m_index)
52{
54}
55
56
61
62
64{
65 const DataContainer* container = m_container.release();
66 delete this;
67 return container;
68}
69
70
71double Data::noise() const
72{
73 return (m_container->corrs().empty() ? 0 : TMath::Sqrt(m_container->corrs()[0]));
74}
75
76double Data::adcMax_new() const
77{
78 return ((energy()/noise())*pedestalRMS());
79
80}
81
82double Data::covariance(unsigned int i, unsigned int j) const
83{
84 if (i >= nSamples() || j >= nSamples()) return 0;
85 const std::vector<float>& corrs = m_container->corrs();
86 unsigned int index = TMath::Abs(int(i) - int(j)); // we use time-translation-invariant correlations...
87 if (index >= corrs.size()) return 0;
88 double corr = corrs[index];
89 return corr*pedestalRMS()*pedestalRMS()/(noise()*noise()); // hack to correct the noise per sample/ADC_max noise error
90}
91
92
93double Data::covarianceMeV(unsigned int i, unsigned int j) const
94{
95 double adc2mev = adc2MeV();
96 if (adc2mev < 0) return 0;
97 return covariance(i,j)*adc2mev*adc2mev; // we use time-translation-invariant correlations...
98 //return (i == j ? m_corrs[0] : 0); // temporary
99}
100
101
102std::vector<float> Data::pedestalSubtractedSamples() const
103{
104 std::vector<float> samples;
105
106 for (unsigned int i = 0; i < nSamples(); i++)
107 samples.push_back(pedestalSubtractedSample(i));
108
109 return samples;
110}
111
112
114{
115 return ((status() >> 16) & 0x1) != 0;
116}
117
119{
120 return ((status() >> (error + 17)) & 0x1) != 0;
121}
122
124{
125 if (error == LArFebErrorSummary::Parity) return "Parity";
126 if (error == LArFebErrorSummary::BCID) return "BCID";
127 if (error == LArFebErrorSummary::SampleHeader) return "SampleHeader";
128 if (error == LArFebErrorSummary::EVTID) return "EVTID";
129 if (error == LArFebErrorSummary::ScacStatus) return "ScacStatus";
130 if (error == LArFebErrorSummary::ScaOutOfRange) return "ScaOutOfRange";
131 if (error == LArFebErrorSummary::GainMismatch) return "GainMismatch";
132 if (error == LArFebErrorSummary::TypeMismatch) return "TypeMismatch";
133 if (error == LArFebErrorSummary::NumOfSamples) return "NumOfSamples";
134 if (error == LArFebErrorSummary::EmptyDataBlock) return "EmptyDataBlock";
135 if (error == LArFebErrorSummary::DspBlockSize) return "DspBlockSize";
136 if (error == LArFebErrorSummary::CheckSum) return "CheckSum";
137 if (error == LArFebErrorSummary::MissingHeader) return "MissingHeader";
138 return "";
139}
140
141
142TString Data::problems(bool sayNone) const
143{
144 if (isDisconnected()) return "DISCONNECTED";
145 TString problems{};
146 if (sayNone) problems = "None";
147 return problems;
148}
149
150
151bool Data::isValid() const
152{
153 if (!m_container) return false;
154 if (!container().isValid()) return false;
155 return true;
156}
157
158
159short Data::maxSample() const
160{
161 int maxPos = maxPosition();
162 if (maxPos >= 0) return sample(maxPos);
163 return -1;
164}
165
166short Data::minSample() const
167{
168 int minPos = minPosition();
169 if (minPos >= 0) return sample(minPos);
170 return -1;
171}
172
173
174std::unique_ptr<SimpleShape> Data::timeAlignedShape() const
175{
176 return std::make_unique<SimpleShape>(*this, 1, -ofcTime());
177}
178
179
180std::unique_ptr<SimpleShape> Data::referenceShape() const
181{
182 if (!m_history) return nullptr;
183 return m_history->referenceShape(m_index);
184}
185
186
187std::unique_ptr<const ScaledErrorData> Data::scaledErrorData() const
188{
189 if (!m_history) return nullptr;
190 return m_history->scaledErrorData(m_index);
191}
192
193
194double Data::chi2() const
195{
196 if (!m_history) return 0;
197 return m_history->chi2(m_index);
198}
199
200
202{
203 if (!m_history) return 0;
204 return m_history->chi2(m_index, -1, -1, DefaultChi2, NoShapeError);
205}
206
207
209{
210 if (!m_history) return 0;
211 return m_history->chi2(m_index, -1, -1, DefaultChi2, RingShapeError);
212}
213
214
216{
217 if (!m_history) return 0;
218 return m_history->chi2(m_index, -1, -1, DefaultChi2, CellShapeError);
219}
220
221
222double Data::_chi2_k(const DataFuncArgs& args) const
223{
224 if (!m_history) return 0;
225 return m_history->chi2_k(m_index, args.x1);
226}
227
228
229bool Data::calcRefit(double& chi2, double& k, double& dT) const
230{
231 ShapeFitter fitter;
232 std::unique_ptr<SimpleShape> reference = referenceShape();
233 if (!reference){
234 return false;
235 }
236 std::unique_ptr<const ScaledErrorData> sed (scaledErrorData());
237 bool result = fitter.fit(*this, *reference, k, dT, chi2, sed.get());
238 return result;
239}
240
241
243{
244 double chi2, k, dT;
245 if (!calcRefit(chi2, k, dT)) return -9999;
246 return dT;
247}
248
249
250double Data::_refitScale(const DataFuncArgs&) const
251{
252 double chi2, k, dT;
253 if (!calcRefit(chi2, k, dT)) return -1;
254 return k;
255}
256
257
258double Data::_refitChi2(const DataFuncArgs&) const
259{
260 double chi2, k, dT;
261 if (!calcRefit(chi2, k, dT)) return -1;
262 return chi2;
263}
264
265
266bool Data::calcAdjust(double& k, double& dT) const
267{
268 if (!m_history) return false;
269 std::unique_ptr<OFC> ofc = m_history->ofc(m_index);
270 if (!ofc) return false;
271
272 k = ofc->A(*this)/adcMax();
273 dT = ofc->time(*this);
274 return true;
275}
276
277
278double Data::_adjDeltaT(const DataFuncArgs&) const
279{
280 double k, dT;
281 if (!calcAdjust(k, dT)) return -9999;
282 return dT;
283}
284
285
286double Data::_adjScale(const DataFuncArgs&) const
287{
288 double k, dT;
289 if (!calcAdjust(k, dT)) return -1;
290 return k;
291}
292
293
294int Data::_iEta(const DataFuncArgs&) const
295{
296 if (!m_history) return 0;
297 return m_history->cellInfo()->iEta();
298}
299
300
301int Data::_iPhi(const DataFuncArgs&) const
302{
303 if (!m_history) return 0;
304 return m_history->cellInfo()->iPhi();
305}
306
307
309{
310 if (!m_history) return 0;
311 return m_history->cellInfo()->region();
312}
313
314
315int Data::_calo(const DataFuncArgs&) const
316{
317 if (!m_history) return 0;
318 return m_history->cellInfo()->calo();
319}
320
321
322int Data::_layer(const DataFuncArgs&) const
323{
324 if (!m_history) return 0;
325 return m_history->cellInfo()->layer();
326}
327
328
330{
331 if (!m_history) return 0;
332 return m_history->cellInfo()->feedThrough();
333}
334
335
336int Data::_slot(const DataFuncArgs&) const
337{
338 if (!m_history) return 0;
339 return m_history->cellInfo()->slot();
340}
341
342
344{
345 if (!m_history) return 0;
346 return m_history->cellInfo()->channel();
347}
348
349
350int Data::_hash(const DataFuncArgs&) const
351{
352 if (!m_history) return 0;
353 return m_history->hash();
354}
355
356
357int Data::_ring(const DataFuncArgs&) const
358{
359 if (!m_history) return 0;
360 return m_history->cellInfo()->globalPhiRing();
361}
362
363
364int Data::_nData(const DataFuncArgs&) const
365{
366 if (!m_history) return 0;
367 return m_history->nData();
368}
369
370
371double Data::_timeNoTOF(const DataFuncArgs&) const
372{
373 if (!m_history) return -9999;
374 return ofcTime() + m_history->cellInfo()->position().Mag()/(TMath::C()*1E-6); // 10^-6 to convert to mm/ns
375}
376
377
378double Data::_timeForSplash1(const DataFuncArgs& args) const
379{
380 if (!m_history) return -9999;
381 return _timeNoTOF(args) + m_history->cellInfo()->position().z()/(TMath::C()*1E-6); // 10^-6 to convert to mm/ns
382}
383
384
385double Data::_timeForSplash2(const DataFuncArgs& args) const
386{
387 if (!m_history) return -9999;
388 return _timeNoTOF(args) - m_history->cellInfo()->position().z()/(TMath::C()*1E-6); // 10^-6 to convert to mm/ns
389}
390
391
392double Data::_peakSignif(const DataFuncArgs&) const
393{
394 return maxValue()/pedestalRMS();
395}
396
397
399{
400 return energy()/noise();
401}
402
403
404TVectorD Data::deltas() const
405{
406 if (!m_history) return TVectorD();
407 return m_history->deltas(m_index);
408}
409
410
411TVectorD Data::residuals() const
412{
413 if (!m_history || adcMax() < 0) return TVectorD();
414 TVectorD resv = m_history->deltas(m_index);
415 for (int i = 0; i < resv.GetNrows(); i++) resv(i) /= adcMax();
416 return resv;
417}
418
419
420double Data::delta(short sample) const
421{
422 double val = 0;
423 if (!m_history || !m_history->delta(m_index, sample, val)) return -9999;
424 return val;
425}
426
427
428double Data::residual(short sample) const
429{
430 double val = 0;
431 if (!m_history || adcMax() < 0 || !m_history->delta(m_index, sample, val)) return -9999;
432 return val/adcMax();
433}
434
435
437{
438 if (!m_history) return -999;
439 std::unique_ptr<const ShapeErrorData> sed = m_history->shapeErrorData(gain(), type);
440 return (sed ? sed->n() : 0);
441}
442
443
444double Data::residualOffset(short sample, bool scale) const
445{
446 double val = 0;
447 if (!m_history || !m_history->residualOffset(m_index, sample, val, (scale ? -1 : 1))) return -9999;
448 return val;
449}
450
451
453{
454 if (!m_history) return -999;
455 //njpb don't see the point of next line, commenting out
456 //if (g != CaloGain::UNKNOWNGAIN && type != RingShapeError) type = CellShapeError;
457 std::unique_ptr<const ShapeErrorData> sed = m_history->shapeErrorData(g == CaloGain::UNKNOWNGAIN ? gain() : g, type);
458 if (!sed) return -999;
459 double val = (sed->isInRange(sample) ? (xip ? sed->xip()(sample) : sed->xi()(sample)) : -999);
460 return val;
461}
462
463
465{
466 if (!m_history) return -1;
467 std::unique_ptr<const ShapeErrorData> sed = m_history->shapeErrorData(gain(), type);
468 if (!sed) return -1;
469 double val = TMath::Sqrt(sed->xi().Norm2Sqr());
470 return val;
471}
472
473
475{
476 return xi(sample, type, g, true);
477}
478
479
480double Data::residualError(short sample1, short sample2, bool scale) const
481{
482 double val = 0;
483 if (!m_history || !m_history->residualError(m_index, sample1, sample2, val, scale)) return -9999;
484 return val;
485}
486
487
488double Data::_x(const DataFuncArgs&) const {
489 if (auto ci = cellInfo(); !ci)[[unlikely]] return 0.;
490 else return ci->position().X();
491}
492double Data::_y(const DataFuncArgs&) const {
493 if (auto ci = cellInfo(); !ci)[[unlikely]] return 0.;
494 else return ci->position().Y();
495}
496double Data::_z(const DataFuncArgs&) const {
497 if (auto ci = cellInfo(); !ci)[[unlikely]] return 0.;
498 else return ci->position().Z();
499}
500double Data::_rt(const DataFuncArgs&) const {
501 if (auto ci = cellInfo(); !ci)[[unlikely]] return 0.;
502 else return ci->rt();
503}
504double Data::_eta(const DataFuncArgs&) const {
505 if (auto ci = cellInfo(); !ci)[[unlikely]] return 0.;
506 else return ci->eta();
507}
508double Data::_phi(const DataFuncArgs&) const {
509 if (auto ci = cellInfo(); !ci)[[unlikely]] return 0.;
510 else return ci->phi();
511}
512
513
515{
516 if (gain == CaloGain::LARHIGHGAIN) return "HIGH";
517 if (gain == CaloGain::LARMEDIUMGAIN) return "MEDIUM";
518 if (gain == CaloGain::LARLOWGAIN) return "LOW";
519 return "";
520}
521
522
523TString Data::description(unsigned int verbosity) const
524{
525 TString desc = "";
526 desc += Form("%d samples, ", nSamples());
527 desc += "gain = " + gainStr(gain()) + ", ";
528 desc += Form("energy = %6.1f MeV, ", energy());
529 if (verbosity >= 2) desc += Form("ADCMax = %6.1f, ", adcMax());
530 desc += Form("time = %6.1f ns, ", ofcTime());
531 if (verbosity >= 2) desc += Form("chi^2/n = %6.1f, ", chi2());
532 desc += Form("run = %d, event = %d, ", run(), event());
533 desc += Form("problems = %s", problems(true).Data());
534 return desc;
535}
536
537
538bool Data::isPassed(const TString& bitName) const
539{
540 return eventData().isPassed(bitName);
541}
542
543
545{
546 if (adcMax() < 0) return false;
547
548 CaloId caloId = (m_history ? m_history->cellInfo()->calo() : UNKNOWN_CALO);
549 //short layer = (m_history ? m_history->cellInfo()->layer() : -1);
550
551 //if (Id::matchCalo(caloId, FCAL) && energy()/noise() < 250) return false;
552 if (Id::matchCalo(caloId, FCAL)) return false;
553 if (Id::matchCalo(caloId, HEC) && energy()/noise() < 20) return false;
554 if (Id::matchCalo(caloId, EMEC_INNER) && energy()/noise() < 250) return false;
555 if (Id::matchCalo(caloId, EMEC_OUTER) && energy()/noise() < 50) return false;
556 if (Id::matchCalo(caloId, EMB) && energy()/noise() < 30) return false;
557
558 if (Id::matchCalo(caloId, HEC)) {
559 if (TMath::Abs(ofcTime()) > 10) return false;
560 }
561 else {
562 if (TMath::Abs(ofcTime()) > 5) return false;
563 }
564
565 return true;
566}
567
569{
570 if (!m_history) return -1;
571 return m_history->upstreamEnergy(m_index);
572}
573
574double Data::_ofcSigma(const DataFuncArgs& args) const
575{
576 double result = -9999;
577 if (!m_history) return result;
578 std::unique_ptr<OFC> ofc = m_history->ofc(m_index);
579 if (ofc->isInRange(args.i1))
580 result = TMath::Sqrt(ofc->Gamma()(args.i1, args.i1));
581 return result;
582}
583
584
585double Data::_ofcGamma(const DataFuncArgs& args) const
586{
587 double result = -9999;
588 if (!m_history) return result;
589 std::unique_ptr<OFC> ofc = m_history->ofc(m_index);
590 if (ofc->isInRange(args.i1) && ofc->isInRange(args.i2))
591 result = ofc->Gamma()(args.i1, args.i2);
592 return result;
593}
594
595
597{
598 double upe = upstreamEnergy();
599 if (upe < 0 || energy() == 0) return -1;
600 return upe/energy();
601}
602
603
604double Data::_chi2Anomaly(const DataFuncArgs& args) const
605{
606 if (!m_history) return -1;
607 return m_history->chi2Anomaly(args.x1);
608}
609
610double Data::timeClCorr() const
611{
612 if (!m_history) return -9999.;
613 Double_t timeClCorr=-99.;
614
615 if(run()==203636) timeClCorr = ofcTime() + 0.04;
616 else if(run()==203680) timeClCorr = ofcTime() + 0.109155;
617 else if(run()==203719) timeClCorr = ofcTime() + 0.141762;
618 else if(run()==203745) timeClCorr = ofcTime() - 0.107597;
619 else if(run()==203779) timeClCorr = ofcTime() - 0.0032581;
620 else if(run()==203876) timeClCorr = ofcTime() + 0.109328;
621 else if(run()==203934) timeClCorr = ofcTime() - 0.0404719;
622 else if(run()==204073) timeClCorr = ofcTime() - 0.0244807;
623 else if(run()==204153) timeClCorr = ofcTime() + 0.185949;
624 else if(run()==204158) timeClCorr = ofcTime() + 0.0383347;
625 else if(run()==204240) timeClCorr = ofcTime() + 0.0635586;
626 else if(run()==204265) timeClCorr = ofcTime() + 0.13898;
627 else if(run()==204416) timeClCorr = ofcTime() + 0.1074;
628 else if(run()==204564) timeClCorr = ofcTime() + 0.0369925;
629 else if(run()==210302) timeClCorr = ofcTime() - 0.2;
630 else if(run()==210308) timeClCorr = ofcTime() - 0.2;
631 else timeClCorr = ofcTime();
632
633 return timeClCorr;
634}
635
636double Data::timeECorr() const
637{
638 if (!m_history) return -9999.;
639 Double_t timeCorr=-99.;
640
641 // Int_t calo = m_history->cellInfo()->calo();
642 // Double_t p0, p1, p2, p3;
643
644 timeCorr=ofcTime();
645
646 return timeCorr;
647}
648
649double Data::_timeECorr(const DataFuncArgs&) const
650{
651 // Modify this to add Isabelle's correction
652 return ofcTime();
653}
@ Data
Definition BaseObject.h:11
#define maxValue(current, test)
int maxPosition() const
Definition AbsShape.cxx:52
int minPosition() const
Definition AbsShape.cxx:61
const History * m_history
Definition Data.h:285
std::unique_ptr< const DataContainer > m_container
Definition Data.h:283
double _z(const DataFuncArgs &args) const
Definition Data.cxx:496
int _region(const DataFuncArgs &args) const
Definition Data.cxx:308
double _phi(const DataFuncArgs &args) const
Definition Data.cxx:508
const History * history() const
Definition Data.h:167
unsigned int m_index
Definition Data.h:286
double _energySignif(const DataFuncArgs &args) const
Definition Data.cxx:398
double resCorrN(ShapeErrorType shapeErrorType=BestShapeError) const
Definition Data.cxx:436
float pedestalSubtractedSample(unsigned int i) const
Definition Data.h:94
double _chi2Anomaly(const DataFuncArgs &args) const
Definition Data.cxx:604
bool calcRefit(double &chi2, double &k, double &dT) const
Definition Data.cxx:229
double _y(const DataFuncArgs &args) const
Definition Data.cxx:492
double _ofcGamma(const DataFuncArgs &args) const
Definition Data.cxx:585
double delta(short sample) const
Definition Data.cxx:420
double _x(const DataFuncArgs &args) const
Definition Data.cxx:488
double covarianceMeV(unsigned int i, unsigned int j) const
Definition Data.cxx:93
int _calo(const DataFuncArgs &args) const
Definition Data.cxx:315
Data(const DataContainer &container, const EventData &eventData, const History *history, int index)
Constructor.
Definition Data.cxx:32
CaloGain::CaloGain gain() const
Definition Data.h:87
int lumiBlock() const
Definition Data.cxx:29
static TString str(LArFebErrorSummary::LArFebErrorType error)
Definition Data.cxx:123
double timeClCorr() const
Definition Data.cxx:610
unsigned int nSamples() const
Definition Data.h:90
double residualError(short sample1, short sample2=-1, bool scale=true) const
Definition Data.cxx:480
double _ofcSigma(const DataFuncArgs &args) const
Definition Data.cxx:574
double residualOffset(short sample, bool scale=true) const
Definition Data.cxx:444
const EventData & eventData() const
Definition Data.h:97
const CellInfo * cellInfo() const
Definition Data.h:281
double xiNorm(ShapeErrorType shapeErrorType=BestShapeError) const
Definition Data.cxx:464
double adc2MeV() const
Definition Data.h:128
int _layer(const DataFuncArgs &args) const
Definition Data.cxx:322
double pedestalRMS() const
Definition Data.h:120
static TString gainStr(CaloGain::CaloGain gain)
Definition Data.cxx:514
int _feedThrough(const DataFuncArgs &args) const
Definition Data.cxx:329
double adcMax() const
Definition Data.h:126
int _iEta(const DataFuncArgs &args) const
Definition Data.cxx:294
std::vector< float > pedestalSubtractedSamples() const
Definition Data.cxx:102
bool isDisconnected() const
Definition Data.cxx:113
bool febError(LArFebErrorSummary::LArFebErrorType error) const
Definition Data.cxx:118
double _timeForSplash1(const DataFuncArgs &args) const
Definition Data.cxx:378
double _adjScale(const DataFuncArgs &args) const
Definition Data.cxx:286
double _timeForSplash2(const DataFuncArgs &args) const
Definition Data.cxx:385
double _timeNoTOF(const DataFuncArgs &args) const
Definition Data.cxx:371
int bunchId() const
Definition Data.cxx:30
double timeECorr() const
Definition Data.cxx:636
double adcMax_new() const
Definition Data.cxx:76
const EventData & m_eventData
Definition Data.h:284
double xip(short sample, ShapeErrorType shapeErrorType=BestShapeError, CaloGain::CaloGain g=CaloGain::UNKNOWNGAIN) const
Definition Data.cxx:474
double _timeECorr(const DataFuncArgs &args) const
Definition Data.cxx:649
double noise() const
Definition Data.cxx:71
bool isValid() const
Definition Data.cxx:151
virtual ~Data()
Destructor.
Definition Data.cxx:57
int _ring(const DataFuncArgs &args) const
Definition Data.cxx:357
int _iPhi(const DataFuncArgs &args) const
Definition Data.cxx:301
double _adjDeltaT(const DataFuncArgs &args) const
Definition Data.cxx:278
double xi(short sample, ShapeErrorType shapeErrorType=BestShapeError, CaloGain::CaloGain g=CaloGain::UNKNOWNGAIN, bool xip=false) const
Definition Data.cxx:452
double _upstreamERatio(const DataFuncArgs &args) const
Definition Data.cxx:596
int _slot(const DataFuncArgs &args) const
Definition Data.cxx:336
const DataContainer & container() const
Definition Data.h:158
double _chi2_noCorr(const DataFuncArgs &args) const
Definition Data.cxx:201
int status() const
Definition Data.h:123
double ofcTime() const
Definition Data.h:113
bool calcAdjust(double &k, double &dT) const
Definition Data.cxx:266
double residual(short sample) const
Definition Data.cxx:428
TVectorD deltas() const
Definition Data.cxx:404
int _hash(const DataFuncArgs &args) const
Definition Data.cxx:350
bool isPassed(const TString &bitName) const
Definition Data.cxx:538
double _chi2_k(const DataFuncArgs &args) const
Definition Data.cxx:222
double _eta(const DataFuncArgs &args) const
Definition Data.cxx:504
double _refitScale(const DataFuncArgs &args) const
Definition Data.cxx:250
double _chi2_ringCorr(const DataFuncArgs &args) const
Definition Data.cxx:208
short maxSample() const
Definition Data.cxx:159
double energy() const
Definition Data.h:110
bool goodForShapeCorr() const
Definition Data.cxx:544
int _nData(const DataFuncArgs &args) const
Definition Data.cxx:364
short minSample() const
Definition Data.cxx:166
TString description(unsigned int verbosity=1) const
Definition Data.cxx:523
std::unique_ptr< SimpleShape > referenceShape() const
Definition Data.cxx:180
TVectorD residuals() const
Definition Data.cxx:411
double _chi2_cellCorr(const DataFuncArgs &args) const
Definition Data.cxx:215
int _channel(const DataFuncArgs &args) const
Definition Data.cxx:343
const short & sample(unsigned int i) const
Definition Data.h:93
double upstreamEnergy() const
Definition Data.cxx:568
const DataContainer * dissolve()
Definition Data.cxx:63
double covariance(unsigned int i, unsigned int j) const
Definition Data.cxx:82
int event() const
Definition Data.cxx:28
double _peakSignif(const DataFuncArgs &args) const
Definition Data.cxx:392
double chi2() const
Definition Data.cxx:194
double _rt(const DataFuncArgs &args) const
Definition Data.cxx:500
std::unique_ptr< const ScaledErrorData > scaledErrorData() const
Definition Data.cxx:187
TString problems(bool sayNone=false) const
Definition Data.cxx:142
int run() const
Definition Data.cxx:27
double _refitChi2(const DataFuncArgs &args) const
Definition Data.cxx:258
double _refitDeltaT(const DataFuncArgs &args) const
Definition Data.cxx:242
std::unique_ptr< SimpleShape > timeAlignedShape() const
Definition Data.cxx:174
unsigned int lumiBlock() const
Definition EventData.h:47
bool isPassed(const TString &bitName) const
Definition EventData.cxx:88
int event() const
Definition EventData.h:44
unsigned int bunchId() const
Definition EventData.h:50
static bool matchCalo(CaloId id, CaloId idSpec)
Definition CaloId.cxx:188
bool isInRange(int i) const
Definition IndexRange.h:27
const TVectorD & xi() const
const TVectorD & xip() const
bool fit(const LArSamples::AbsShape &data, const AbsShape &reference, double &k, double &deltaT, double &chi2, const ScaledErrorData *sed=0) const
@ LARMEDIUMGAIN
Definition CaloGain.h:18
@ LARLOWGAIN
Definition CaloGain.h:18
@ UNKNOWNGAIN
Definition CaloGain.h:21
@ LARHIGHGAIN
Definition CaloGain.h:18
@ EMEC_INNER
Definition CaloId.h:25
@ UNKNOWN_CALO
Definition CaloId.h:23
@ EMEC_OUTER
Definition CaloId.h:25
@ DefaultChi2
Definition Chi2Calc.h:24
Definition index.py:1
STL namespace.
#define unlikely(x)