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