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
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
146/*
147 TString problems = "";
148 for (CaloBadChannel::CALOPROBLEM pb = CaloBadChannel::DEAD; pb < CaloBadChannel::NPB; pb = CaloBadChannel::CALOPROBLEM(pb + 1))
149 if (problem(pb)) {
150 if (problems != "") problems += " ";
151 problems += str(pb);
152 }
153*/
154
155 TString problems = "";
156 if (problems =="" && sayNone) problems = "None";
157 return problems;
158}
159
160
161bool Data::isValid() const
162{
163 if (!m_container) return false;
164 if (!container().isValid()) return false;
165 return true;
166}
167
168
169short Data::maxSample() const
170{
171 int maxPos = maxPosition();
172 if (maxPos >= 0) return sample(maxPos);
173 return -1;
174}
175
176short Data::minSample() const
177{
178 int minPos = minPosition();
179 if (minPos >= 0) return sample(minPos);
180 return -1;
181}
182
183
184std::unique_ptr<SimpleShape> Data::timeAlignedShape() const
185{
186 return std::make_unique<SimpleShape>(*this, 1, -ofcTime());
187}
188
189
190std::unique_ptr<SimpleShape> Data::referenceShape() const
191{
192 if (!m_history) return nullptr;
193 return m_history->referenceShape(m_index);
194}
195
196
197std::unique_ptr<const ScaledErrorData> Data::scaledErrorData() const
198{
199 if (!m_history) return nullptr;
200 return m_history->scaledErrorData(m_index);
201}
202
203
204double Data::chi2() const
205{
206 if (!m_history) return 0;
207 return m_history->chi2(m_index);
208}
209
210
212{
213 if (!m_history) return 0;
214 return m_history->chi2(m_index, -1, -1, DefaultChi2, NoShapeError);
215}
216
217
219{
220 if (!m_history) return 0;
221 return m_history->chi2(m_index, -1, -1, DefaultChi2, RingShapeError);
222}
223
224
226{
227 if (!m_history) return 0;
228 return m_history->chi2(m_index, -1, -1, DefaultChi2, CellShapeError);
229}
230
231
232double Data::_chi2_k(const DataFuncArgs& args) const
233{
234 if (!m_history) return 0;
235 return m_history->chi2_k(m_index, args.x1);
236}
237
238
239bool Data::calcRefit(double& chi2, double& k, double& dT) const
240{
241 ShapeFitter fitter;
242 std::unique_ptr<SimpleShape> reference = referenceShape();
243 if (!reference){
244 return false;
245 }
246 std::unique_ptr<const ScaledErrorData> sed (scaledErrorData());
247 bool result = fitter.fit(*this, *reference, k, dT, chi2, sed.get());
248 return result;
249}
250
251
253{
254 double chi2, k, dT;
255 if (!calcRefit(chi2, k, dT)) return -9999;
256 return dT;
257}
258
259
260double Data::_refitScale(const DataFuncArgs&) const
261{
262 double chi2, k, dT;
263 if (!calcRefit(chi2, k, dT)) return -1;
264 return k;
265}
266
267
268double Data::_refitChi2(const DataFuncArgs&) const
269{
270 double chi2, k, dT;
271 if (!calcRefit(chi2, k, dT)) return -1;
272 return chi2;
273}
274
275
276bool Data::calcAdjust(double& k, double& dT) const
277{
278 if (!m_history) return false;
279 std::unique_ptr<OFC> ofc = m_history->ofc(m_index);
280 if (!ofc) return false;
281
282 k = ofc->A(*this)/adcMax();
283 dT = ofc->time(*this);
284 return true;
285}
286
287
288double Data::_adjDeltaT(const DataFuncArgs&) const
289{
290 double k, dT;
291 if (!calcAdjust(k, dT)) return -9999;
292 return dT;
293}
294
295
296double Data::_adjScale(const DataFuncArgs&) const
297{
298 double k, dT;
299 if (!calcAdjust(k, dT)) return -1;
300 return k;
301}
302
303
304int Data::_iEta(const DataFuncArgs&) const
305{
306 if (!m_history) return 0;
307 return m_history->cellInfo()->iEta();
308}
309
310
311int Data::_iPhi(const DataFuncArgs&) const
312{
313 if (!m_history) return 0;
314 return m_history->cellInfo()->iPhi();
315}
316
317
319{
320 if (!m_history) return 0;
321 return m_history->cellInfo()->region();
322}
323
324
325int Data::_calo(const DataFuncArgs&) const
326{
327 if (!m_history) return 0;
328 return m_history->cellInfo()->calo();
329}
330
331
332int Data::_layer(const DataFuncArgs&) const
333{
334 if (!m_history) return 0;
335 return m_history->cellInfo()->layer();
336}
337
338
340{
341 if (!m_history) return 0;
342 return m_history->cellInfo()->feedThrough();
343}
344
345
346int Data::_slot(const DataFuncArgs&) const
347{
348 if (!m_history) return 0;
349 return m_history->cellInfo()->slot();
350}
351
352
354{
355 if (!m_history) return 0;
356 return m_history->cellInfo()->channel();
357}
358
359
360int Data::_hash(const DataFuncArgs&) const
361{
362 if (!m_history) return 0;
363 return m_history->hash();
364}
365
366
367int Data::_ring(const DataFuncArgs&) const
368{
369 if (!m_history) return 0;
370 return m_history->cellInfo()->globalPhiRing();
371}
372
373
374int Data::_nData(const DataFuncArgs&) const
375{
376 if (!m_history) return 0;
377 return m_history->nData();
378}
379
380
381double Data::_timeNoTOF(const DataFuncArgs&) const
382{
383 if (!m_history) return -9999;
384 return ofcTime() + m_history->cellInfo()->position().Mag()/(TMath::C()*1E-6); // 10^-6 to convert to mm/ns
385}
386
387
388double Data::_timeForSplash1(const DataFuncArgs& args) const
389{
390 if (!m_history) return -9999;
391 return _timeNoTOF(args) + m_history->cellInfo()->position().z()/(TMath::C()*1E-6); // 10^-6 to convert to mm/ns
392}
393
394
395double Data::_timeForSplash2(const DataFuncArgs& args) const
396{
397 if (!m_history) return -9999;
398 return _timeNoTOF(args) - m_history->cellInfo()->position().z()/(TMath::C()*1E-6); // 10^-6 to convert to mm/ns
399}
400
401
402double Data::_peakSignif(const DataFuncArgs&) const
403{
404 return maxValue()/pedestalRMS();
405}
406
407
409{
410 return energy()/noise();
411}
412
413
414TVectorD Data::deltas() const
415{
416 if (!m_history) return TVectorD();
417 return m_history->deltas(m_index);
418}
419
420
421TVectorD Data::residuals() const
422{
423 if (!m_history || adcMax() < 0) return TVectorD();
424 TVectorD resv = m_history->deltas(m_index);
425 for (int i = 0; i < resv.GetNrows(); i++) resv(i) /= adcMax();
426 return resv;
427}
428
429
430double Data::delta(short sample) const
431{
432 double val = 0;
433 if (!m_history || !m_history->delta(m_index, sample, val)) return -9999;
434 return val;
435}
436
437
438double Data::residual(short sample) const
439{
440 double val = 0;
441 if (!m_history || adcMax() < 0 || !m_history->delta(m_index, sample, val)) return -9999;
442 return val/adcMax();
443}
444
445
447{
448 if (!m_history) return -999;
449 std::unique_ptr<const ShapeErrorData> sed = m_history->shapeErrorData(gain(), type);
450 return (sed ? sed->n() : 0);
451}
452
453
454double Data::residualOffset(short sample, bool scale) const
455{
456 double val = 0;
457 if (!m_history || !m_history->residualOffset(m_index, sample, val, (scale ? -1 : 1))) return -9999;
458 return val;
459}
460
461
463{
464 if (!m_history) return -999;
465 //njpb don't see the point of next line, commenting out
466 //if (g != CaloGain::UNKNOWNGAIN && type != RingShapeError) type = CellShapeError;
467 std::unique_ptr<const ShapeErrorData> sed = m_history->shapeErrorData(g == CaloGain::UNKNOWNGAIN ? gain() : g, type);
468 if (!sed) return -999;
469 double val = (sed->isInRange(sample) ? (xip ? sed->xip()(sample) : sed->xi()(sample)) : -999);
470 return val;
471}
472
473
475{
476 if (!m_history) return -1;
477 std::unique_ptr<const ShapeErrorData> sed = m_history->shapeErrorData(gain(), type);
478 if (!sed) return -1;
479 double val = TMath::Sqrt(sed->xi().Norm2Sqr());
480 return val;
481}
482
483
485{
486 return xi(sample, type, g, true);
487}
488
489
490double Data::residualError(short sample1, short sample2, bool scale) const
491{
492 double val = 0;
493 if (!m_history || !m_history->residualError(m_index, sample1, sample2, val, scale)) return -9999;
494 return val;
495}
496
497
498double Data::_x(const DataFuncArgs&) const { return m_history->cellInfo()->position().X(); }
499double Data::_y(const DataFuncArgs&) const { return m_history->cellInfo()->position().Y(); }
500double Data::_z(const DataFuncArgs&) const { return m_history->cellInfo()->position().Z(); }
501double Data::_rt(const DataFuncArgs&) const { return m_history->cellInfo()->rt(); }
502double Data::_eta(const DataFuncArgs&) const { return m_history->cellInfo()->eta(); }
503double Data::_phi(const DataFuncArgs&) const { return m_history->cellInfo()->phi(); }
504
505
507{
508 if (gain == CaloGain::LARHIGHGAIN) return "HIGH";
509 if (gain == CaloGain::LARMEDIUMGAIN) return "MEDIUM";
510 if (gain == CaloGain::LARLOWGAIN) return "LOW";
511 return "";
512}
513
514
515TString Data::description(unsigned int verbosity) const
516{
517 TString desc = "";
518 desc += Form("%d samples, ", nSamples());
519 desc += "gain = " + gainStr(gain()) + ", ";
520 desc += Form("energy = %6.1f MeV, ", energy());
521 if (verbosity >= 2) desc += Form("ADCMax = %6.1f, ", adcMax());
522 desc += Form("time = %6.1f ns, ", ofcTime());
523 if (verbosity >= 2) desc += Form("chi^2/n = %6.1f, ", chi2());
524 desc += Form("run = %d, event = %d, ", run(), event());
525 desc += Form("problems = %s", problems(true).Data());
526 return desc;
527}
528
529
530bool Data::isPassed(const TString& bitName) const
531{
532 return eventData().isPassed(bitName);
533}
534
535
537{
538 if (adcMax() < 0) return false;
539
540 CaloId caloId = (m_history ? m_history->cellInfo()->calo() : UNKNOWN_CALO);
541 //short layer = (m_history ? m_history->cellInfo()->layer() : -1);
542
543 //if (Id::matchCalo(caloId, FCAL) && energy()/noise() < 250) return false;
544 if (Id::matchCalo(caloId, FCAL)) return false;
545 if (Id::matchCalo(caloId, HEC) && energy()/noise() < 20) return false;
546 if (Id::matchCalo(caloId, EMEC_INNER) && energy()/noise() < 250) return false;
547 if (Id::matchCalo(caloId, EMEC_OUTER) && energy()/noise() < 50) return false;
548 if (Id::matchCalo(caloId, EMB) && energy()/noise() < 30) return false;
549
550 if (Id::matchCalo(caloId, HEC)) {
551 if (TMath::Abs(ofcTime()) > 10) return false;
552 }
553 else {
554 if (TMath::Abs(ofcTime()) > 5) return false;
555 }
556
557 return true;
558}
559
561{
562 if (!m_history) return -1;
563 return m_history->upstreamEnergy(m_index);
564}
565
566double Data::_ofcSigma(const DataFuncArgs& args) const
567{
568 double result = -9999;
569 if (!m_history) return result;
570 std::unique_ptr<OFC> ofc = m_history->ofc(m_index);
571 if (ofc->isInRange(args.i1))
572 result = TMath::Sqrt(ofc->Gamma()(args.i1, args.i1));
573 return result;
574}
575
576
577double Data::_ofcGamma(const DataFuncArgs& args) const
578{
579 double result = -9999;
580 if (!m_history) return result;
581 std::unique_ptr<OFC> ofc = m_history->ofc(m_index);
582 if (ofc->isInRange(args.i1) && ofc->isInRange(args.i2))
583 result = ofc->Gamma()(args.i1, args.i2);
584 return result;
585}
586
587
589{
590 double upe = upstreamEnergy();
591 if (upe < 0 || energy() == 0) return -1;
592 return upe/energy();
593}
594
595
596double Data::_chi2Anomaly(const DataFuncArgs& args) const
597{
598 if (!m_history) return -1;
599 return m_history->chi2Anomaly(args.x1);
600}
601
602double Data::timeClCorr() const
603{
604 if (!m_history) return -9999.;
605 Double_t timeClCorr=-99.;
606
607 if(run()==203636) timeClCorr = ofcTime() + 0.04;
608 else if(run()==203680) timeClCorr = ofcTime() + 0.109155;
609 else if(run()==203719) timeClCorr = ofcTime() + 0.141762;
610 else if(run()==203745) timeClCorr = ofcTime() - 0.107597;
611 else if(run()==203779) timeClCorr = ofcTime() - 0.0032581;
612 else if(run()==203876) timeClCorr = ofcTime() + 0.109328;
613 else if(run()==203934) timeClCorr = ofcTime() - 0.0404719;
614 else if(run()==204073) timeClCorr = ofcTime() - 0.0244807;
615 else if(run()==204153) timeClCorr = ofcTime() + 0.185949;
616 else if(run()==204158) timeClCorr = ofcTime() + 0.0383347;
617 else if(run()==204240) timeClCorr = ofcTime() + 0.0635586;
618 else if(run()==204265) timeClCorr = ofcTime() + 0.13898;
619 else if(run()==204416) timeClCorr = ofcTime() + 0.1074;
620 else if(run()==204564) timeClCorr = ofcTime() + 0.0369925;
621 else if(run()==210302) timeClCorr = ofcTime() - 0.2;
622 else if(run()==210308) timeClCorr = ofcTime() - 0.2;
623 else timeClCorr = ofcTime();
624
625 return timeClCorr;
626}
627
628double Data::timeECorr() const
629{
630 if (!m_history) return -9999.;
631 Double_t timeCorr=-99.;
632
633 // Int_t calo = m_history->cellInfo()->calo();
634 // Double_t p0, p1, p2, p3;
635
636 timeCorr=ofcTime();
637
638 return timeCorr;
639}
640
641double Data::_timeECorr(const DataFuncArgs&) const
642{
643 // Modify this to add Isabelle's correction
644 return ofcTime();
645}
@ 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:500
int _region(const DataFuncArgs &args) const
Definition Data.cxx:318
double _phi(const DataFuncArgs &args) const
Definition Data.cxx:503
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:408
double resCorrN(ShapeErrorType shapeErrorType=BestShapeError) const
Definition Data.cxx:446
float pedestalSubtractedSample(unsigned int i) const
Definition Data.h:94
double _chi2Anomaly(const DataFuncArgs &args) const
Definition Data.cxx:596
bool calcRefit(double &chi2, double &k, double &dT) const
Definition Data.cxx:239
double _y(const DataFuncArgs &args) const
Definition Data.cxx:499
double _ofcGamma(const DataFuncArgs &args) const
Definition Data.cxx:577
double delta(short sample) const
Definition Data.cxx:430
double _x(const DataFuncArgs &args) const
Definition Data.cxx:498
double covarianceMeV(unsigned int i, unsigned int j) const
Definition Data.cxx:93
int _calo(const DataFuncArgs &args) const
Definition Data.cxx:325
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:602
unsigned int nSamples() const
Definition Data.h:90
double residualError(short sample1, short sample2=-1, bool scale=true) const
Definition Data.cxx:490
double _ofcSigma(const DataFuncArgs &args) const
Definition Data.cxx:566
double residualOffset(short sample, bool scale=true) const
Definition Data.cxx:454
const EventData & eventData() const
Definition Data.h:97
double xiNorm(ShapeErrorType shapeErrorType=BestShapeError) const
Definition Data.cxx:474
double adc2MeV() const
Definition Data.h:128
int _layer(const DataFuncArgs &args) const
Definition Data.cxx:332
double pedestalRMS() const
Definition Data.h:120
static TString gainStr(CaloGain::CaloGain gain)
Definition Data.cxx:506
int _feedThrough(const DataFuncArgs &args) const
Definition Data.cxx:339
double adcMax() const
Definition Data.h:126
int _iEta(const DataFuncArgs &args) const
Definition Data.cxx:304
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:388
double _adjScale(const DataFuncArgs &args) const
Definition Data.cxx:296
double _timeForSplash2(const DataFuncArgs &args) const
Definition Data.cxx:395
double _timeNoTOF(const DataFuncArgs &args) const
Definition Data.cxx:381
int bunchId() const
Definition Data.cxx:30
double timeECorr() const
Definition Data.cxx:628
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:484
double _timeECorr(const DataFuncArgs &args) const
Definition Data.cxx:641
double noise() const
Definition Data.cxx:71
bool isValid() const
Definition Data.cxx:161
virtual ~Data()
Destructor.
Definition Data.cxx:57
int _ring(const DataFuncArgs &args) const
Definition Data.cxx:367
int _iPhi(const DataFuncArgs &args) const
Definition Data.cxx:311
double _adjDeltaT(const DataFuncArgs &args) const
Definition Data.cxx:288
double xi(short sample, ShapeErrorType shapeErrorType=BestShapeError, CaloGain::CaloGain g=CaloGain::UNKNOWNGAIN, bool xip=false) const
Definition Data.cxx:462
double _upstreamERatio(const DataFuncArgs &args) const
Definition Data.cxx:588
int _slot(const DataFuncArgs &args) const
Definition Data.cxx:346
const DataContainer & container() const
Definition Data.h:158
double _chi2_noCorr(const DataFuncArgs &args) const
Definition Data.cxx:211
int status() const
Definition Data.h:123
double ofcTime() const
Definition Data.h:113
bool calcAdjust(double &k, double &dT) const
Definition Data.cxx:276
double residual(short sample) const
Definition Data.cxx:438
TVectorD deltas() const
Definition Data.cxx:414
int _hash(const DataFuncArgs &args) const
Definition Data.cxx:360
bool isPassed(const TString &bitName) const
Definition Data.cxx:530
double _chi2_k(const DataFuncArgs &args) const
Definition Data.cxx:232
double _eta(const DataFuncArgs &args) const
Definition Data.cxx:502
double _refitScale(const DataFuncArgs &args) const
Definition Data.cxx:260
double _chi2_ringCorr(const DataFuncArgs &args) const
Definition Data.cxx:218
short maxSample() const
Definition Data.cxx:169
double energy() const
Definition Data.h:110
bool goodForShapeCorr() const
Definition Data.cxx:536
int _nData(const DataFuncArgs &args) const
Definition Data.cxx:374
short minSample() const
Definition Data.cxx:176
TString description(unsigned int verbosity=1) const
Definition Data.cxx:515
std::unique_ptr< SimpleShape > referenceShape() const
Definition Data.cxx:190
TVectorD residuals() const
Definition Data.cxx:421
double _chi2_cellCorr(const DataFuncArgs &args) const
Definition Data.cxx:225
int _channel(const DataFuncArgs &args) const
Definition Data.cxx:353
const short & sample(unsigned int i) const
Definition Data.h:93
double upstreamEnergy() const
Definition Data.cxx:560
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:402
double chi2() const
Definition Data.cxx:204
double _rt(const DataFuncArgs &args) const
Definition Data.cxx:501
std::unique_ptr< const ScaledErrorData > scaledErrorData() const
Definition Data.cxx:197
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:268
double _refitDeltaT(const DataFuncArgs &args) const
Definition Data.cxx:252
std::unique_ptr< SimpleShape > timeAlignedShape() const
Definition Data.cxx:184
bool isPassed(const TString &bitName) const
Definition EventData.cxx:88
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.