ATLAS Offline Software
Loading...
Searching...
No Matches
LArSamples::ScaledShiftedShape Class Reference

#include <ScaledShiftedShape.h>

Inheritance diagram for LArSamples::ScaledShiftedShape:
Collaboration diagram for LArSamples::ScaledShiftedShape:

Public Member Functions

 ScaledShiftedShape (const AbsShape &base, double scaling=1, double shift=0)
 Constructor.
 ScaledShiftedShape (const ScaledShiftedShape &other)
virtual ~ScaledShiftedShape ()
const AbsShapebase () const
double scaling () const
double shift () const
unsigned int nPoints () const
double value (unsigned int i) const
double error (unsigned int i) const
double time (unsigned int i) const
double covariance (unsigned int i, unsigned int j) const
TVectorD values (int lwb, int upb) const
int findTimeInterval (double time) const
int interpolate (double time, double &value, double &error) const
bool interpolate (const AbsShape &other, TVectorD &values, CovMatrix &errors, int lwb=-1, int upb=-1) const
int interpolateDiff (double time, double &diff) const
bool interpolateDiff (const AbsShape &other, TVectorD &diffs, int lwb=-1, int upb=-1) const
CovMatrix covarianceMatrix (int lwb=-1, int upb=-1, const CovMatrix &refErr=CovMatrix(), bool withCorrs=true) const
CovMatrix covarianceMatrix (unsigned int nPoints, bool withCorrs=true) const
CovMatrix invCovarianceMatrix (int lwb=-1, int upb=-1, const CovMatrix &refErr=CovMatrix(), bool withCorrs=true) const
CovMatrix invCovarianceMatrix (unsigned int nPoints, bool withCorrs=true) const
double maxValue (bool withErrors=false) const
double minValue (bool withErrors=false) const
int maxPosition () const
int minPosition () const
TGraphErrors * graph (bool timeInUnitOfSamples=false) const
SimpleShaperesample (unsigned int nPts) const

Private Attributes

const AbsShapem_base
double m_scaling
double m_shift

Detailed Description

Definition at line 17 of file ScaledShiftedShape.h.

Constructor & Destructor Documentation

◆ ScaledShiftedShape() [1/2]

LArSamples::ScaledShiftedShape::ScaledShiftedShape ( const AbsShape & base,
double scaling = 1,
double shift = 0 )
inline

◆ ScaledShiftedShape() [2/2]

LArSamples::ScaledShiftedShape::ScaledShiftedShape ( const ScaledShiftedShape & other)
inline

Definition at line 25 of file ScaledShiftedShape.h.

26 : AbsShape(), m_base(&other.base()), m_scaling(other.scaling()), m_shift(other.shift()) { }

◆ ~ScaledShiftedShape()

virtual LArSamples::ScaledShiftedShape::~ScaledShiftedShape ( )
inlinevirtual

Definition at line 28 of file ScaledShiftedShape.h.

28{ }

Member Function Documentation

◆ base()

const AbsShape & LArSamples::ScaledShiftedShape::base ( ) const
inline

Definition at line 30 of file ScaledShiftedShape.h.

30{ return *m_base; }

◆ covariance()

double LArSamples::ScaledShiftedShape::covariance ( unsigned int i,
unsigned int j ) const
inlinevirtual

Implements LArSamples::AbsShape.

Definition at line 38 of file ScaledShiftedShape.h.

38{ return base().covariance(i, j)*scaling()*scaling(); }
virtual double covariance(unsigned int i, unsigned int j) const =0

◆ covarianceMatrix() [1/2]

CovMatrix AbsShape::covarianceMatrix ( int lwb = -1,
int upb = -1,
const CovMatrix & refErr = CovMatrix(),
bool withCorrs = true ) const
inherited

Definition at line 198 of file AbsShape.cxx.

201{
202 if (lwb < 0 || upb < 0) { lwb = 0; upb = nPoints() - 1; }
203 CovMatrix c(lwb, upb);
204 for (int i = lwb; i <= upb; i++) {
205 for (int j = lwb; j <= upb; j++) {
206 double cov = (withCorrs || i == j ? covariance(i, j) : 0);
207 if (refErr.GetNrows() > 0) cov += refErr(i, j);
208 c(i, j) = cov;
209 }
210 }
211 return c;
212}
virtual unsigned int nPoints() const =0

◆ covarianceMatrix() [2/2]

CovMatrix AbsShape::covarianceMatrix ( unsigned int nPoints,
bool withCorrs = true ) const
inherited

Definition at line 223 of file AbsShape.cxx.

225{
226 return covarianceMatrix(0, n - 1, CovMatrix(), withCorrs);
227}
CovMatrix covarianceMatrix(int lwb=-1, int upb=-1, const CovMatrix &refErr=CovMatrix(), bool withCorrs=true) const
Definition AbsShape.cxx:198

◆ error()

double LArSamples::ScaledShiftedShape::error ( unsigned int i) const
inlinevirtual

Reimplemented from LArSamples::AbsShape.

Definition at line 36 of file ScaledShiftedShape.h.

36{ return scaling()*base().error(i); }
virtual double error(unsigned int i) const
Definition AbsShape.cxx:24

◆ findTimeInterval()

int AbsShape::findTimeInterval ( double time) const
inherited

Definition at line 71 of file AbsShape.cxx.

72{
73 if (t < time(0)) return -1;
74 if (t > time(nPoints() - 1)) return int(nPoints()) - 1;
75
76 for (unsigned int i = 0; i < nPoints() - 1; i++)
77 if (time(i) <= t && t < time(i+1)) return i;
78
79 return nPoints() - 1;
80}
virtual double time(unsigned int i) const =0

◆ graph()

TGraphErrors * AbsShape::graph ( bool timeInUnitOfSamples = false) const
inherited

Definition at line 186 of file AbsShape.cxx.

187{
188 TGraphErrors* graph = new TGraphErrors(nPoints());
189 double unit = (timeInUnitOfSamples ? Definitions::samplingInterval : 1);
190 for (unsigned int i = 0; i < nPoints(); i++) {
191 graph->SetPoint(i, time(i)/unit, value(i));
192 graph->SetPointError(i, 0, error(i));
193 }
194 return graph;
195}
const PlainObject unit() const
This is a plugin that makes Eigen look like CLHEP & defines some convenience methods.
virtual double value(unsigned int i) const =0
TGraphErrors * graph(bool timeInUnitOfSamples=false) const
Definition AbsShape.cxx:186

◆ interpolate() [1/2]

bool AbsShape::interpolate ( const AbsShape & other,
TVectorD & values,
CovMatrix & errors,
int lwb = -1,
int upb = -1 ) const
inherited

Definition at line 147 of file AbsShape.cxx.

148{
149 if (lwb < 0) lwb = 0;
150 if (upb < 0) upb = other.nPoints() - 1;
151 values.ResizeTo(lwb, upb);
152 errors.ResizeTo(lwb, upb, lwb, upb);
153 int actualLwb = -1, actualUpb = upb;
154 for (int i = lwb; i <= upb; i++) {
155 double val, err;
156 int stat = interpolate(other.time(i), val, err);
157 if (stat == 0 && actualLwb < 0) actualLwb = i;
158 if (stat == +1) { actualUpb = i - 1; break; }
159 values(i) = val;
160 errors(i, i) = err*err;
161 }
162 values.ResizeTo(actualLwb, actualUpb);
163 errors.ResizeTo(actualLwb, actualUpb, actualLwb, actualUpb);
164 return (actualLwb >= 0);
165}
TVectorD values(int lwb, int upb) const
Definition AbsShape.cxx:135
int interpolate(double time, double &value, double &error) const
Definition AbsShape.cxx:83

◆ interpolate() [2/2]

int AbsShape::interpolate ( double time,
double & value,
double & error ) const
inherited

Definition at line 83 of file AbsShape.cxx.

84{
85 if (nPoints() < 2) return -1;
86
87 int status = 0;
88 int i1 = findTimeInterval(t);
89
90 if (i1 < 0) {
91 status = -1;
92 i1 = 0;
93 }
94
95 if (i1 > int(nPoints()) - 2) {
96 status = 1;
97 i1 = nPoints() - 2;
98 }
99
100 double delta = (t - time(i1))/(time(i1+1) - time(i1));
101 val = value(i1) + delta*(value(i1 + 1) - value(i1));
102 err = error(i1) + delta*(error(i1 + 1) - error(i1));
103 //cout << t << " " << i1 << " " << time(i1) << " " << delta << " " << value(i1) << " " << value(i1+1) << " " << val << " " << status << endl;
104 return status;
105}
int findTimeInterval(double time) const
Definition AbsShape.cxx:71
status
Definition merge.py:16

◆ interpolateDiff() [1/2]

bool AbsShape::interpolateDiff ( const AbsShape & other,
TVectorD & diffs,
int lwb = -1,
int upb = -1 ) const
inherited

Definition at line 168 of file AbsShape.cxx.

169{
170 if (lwb < 0) lwb = 0;
171 if (upb < 0) upb = other.nPoints() - 1;
172 diffs.ResizeTo(lwb, upb);
173 int actualLwb = -1, actualUpb = upb;
174 for (int i = lwb; i <= upb; i++) {
175 double diff;
176 int stat = interpolateDiff(other.time(i), diff);
177 if (stat == 0 && actualLwb < 0) actualLwb = i;
178 if (stat == +1) { actualUpb = i - 1; break; }
179 diffs(i) = diff;
180 }
181 diffs.ResizeTo(actualLwb, actualUpb);
182 return (actualLwb >= 0);
183}
void diff(const Jet &rJet1, const Jet &rJet2, std::map< std::string, double > varDiff)
Difference between jets - Non-Class function required by trigger.
Definition Jet.cxx:631
int interpolateDiff(double time, double &diff) const
Definition AbsShape.cxx:108

◆ interpolateDiff() [2/2]

int AbsShape::interpolateDiff ( double time,
double & diff ) const
inherited

Definition at line 108 of file AbsShape.cxx.

109{
110 int status = 0;
111 int i1 = findTimeInterval(t);
112 if (i1 < 0) {
113 i1 = 0;
114 status = -1;
115 }
116 if (i1 > int(nPoints()) - 1) {
117 i1 = nPoints() - 1;
118 status = 1;
119 }
120 if (i1 > 1 && i1 < int(nPoints()) - 2)
121 diff = (value(i1 - 2) - 8*value(i1 - 1) + 8*value(i1 + 1) - value(i1 + 2))/(time(i1 + 2) - time(i1 - 2))/3;
122 else
123 if (i1 > 0)
124 if (i1 < int(nPoints()) - 1)
125 diff = (value(i1 + 1) - value(i1 - 1))/(time(i1 + 1) - time(i1 - 1));
126 else
127 diff = (value(i1) - value(i1 - 1))/(time(i1) - time(i1 - 1));
128 else
129 diff = (value(i1 + 1) - value(i1))/(time(i1 + 1) - time(i1));
130
131 return status;
132}

◆ invCovarianceMatrix() [1/2]

CovMatrix AbsShape::invCovarianceMatrix ( int lwb = -1,
int upb = -1,
const CovMatrix & refErr = CovMatrix(),
bool withCorrs = true ) const
inherited

Definition at line 215 of file AbsShape.cxx.

218{
219 return covarianceMatrix(lwb, upb, refErr, withCorrs).Invert();
220}

◆ invCovarianceMatrix() [2/2]

CovMatrix AbsShape::invCovarianceMatrix ( unsigned int nPoints,
bool withCorrs = true ) const
inherited

Definition at line 230 of file AbsShape.cxx.

232{
233 return covarianceMatrix(n, withCorrs).Invert();
234}

◆ maxPosition()

int AbsShape::maxPosition ( ) const
inherited

Definition at line 52 of file AbsShape.cxx.

53{
54 int maxPosition = -1;
55 double maxValue = -1;
56 for (unsigned int i = 0; i < nPoints(); i++)
57 if (value(i) > maxValue) { maxPosition = i; maxValue = value(i); }
58 return maxPosition;
59}
int maxPosition() const
Definition AbsShape.cxx:52
double maxValue(bool withErrors=false) const
Definition AbsShape.cxx:30

◆ maxValue()

double AbsShape::maxValue ( bool withErrors = false) const
inherited
Returns
sample max parameters

Definition at line 30 of file AbsShape.cxx.

31{
32 double maxValue = -DBL_MAX;
33 for (unsigned int i = 0; i < nPoints(); i++) {
34 double val = value(i) + (withErrors ? error(i) : 0);
35 if (val > maxValue) maxValue = val;
36 }
37 return maxValue;
38}

◆ minPosition()

int AbsShape::minPosition ( ) const
inherited

Definition at line 61 of file AbsShape.cxx.

62{
63 int minPosition = -1;
65 for (unsigned int i = 0; i < nPoints(); i++)
66 if (value(i) < minValue) { minPosition = i; minValue = value(i); }
67 return minPosition;
68}
int minPosition() const
Definition AbsShape.cxx:61
double minValue(bool withErrors=false) const
Definition AbsShape.cxx:41

◆ minValue()

double AbsShape::minValue ( bool withErrors = false) const
inherited

Definition at line 41 of file AbsShape.cxx.

42{
43 double minValue = DBL_MAX;
44 for (unsigned int i = 0; i < nPoints(); i++) {
45 double val = value(i) - (withErrors ? error(i) : 0);
46 if (val < minValue) minValue = val;
47 }
48 return minValue;
49}

◆ nPoints()

unsigned int LArSamples::ScaledShiftedShape::nPoints ( ) const
inlinevirtual
Returns
data points

Implements LArSamples::AbsShape.

Definition at line 34 of file ScaledShiftedShape.h.

34{ return base().nPoints(); }

◆ resample()

SimpleShape * AbsShape::resample ( unsigned int nPts) const
inherited

Definition at line 237 of file AbsShape.cxx.

238{
239 std::vector<double> values, errors;
240 double t0 = time(0);
241 double t1 = time(nPoints() - 1);
242 double dT = (t1 - t0)/nPts;
243 double t = t0;
244 for (unsigned int i = 0; i < nPts; i++, t += dT) {
245 double val, err;
246 int inRange = interpolate(t, val, err);
247 if (inRange != 0) return nullptr;
248 values.push_back(val);
249 errors.push_back(err);
250 }
251
252 return new SimpleShape(values, errors, dT, t0);
253}
static Double_t t0
bool inRange(const double *boundaries, const double value, const double tolerance=0.02)
std::vector< ALFA_RawDataCollection_p1 > t1

◆ scaling()

double LArSamples::ScaledShiftedShape::scaling ( ) const
inline

Definition at line 31 of file ScaledShiftedShape.h.

31{ return m_scaling; }

◆ shift()

double LArSamples::ScaledShiftedShape::shift ( ) const
inline

Definition at line 32 of file ScaledShiftedShape.h.

32{ return m_shift; }

◆ time()

double LArSamples::ScaledShiftedShape::time ( unsigned int i) const
inlinevirtual

Implements LArSamples::AbsShape.

Definition at line 37 of file ScaledShiftedShape.h.

37{ return base().time(i) + shift(); }

◆ value()

double LArSamples::ScaledShiftedShape::value ( unsigned int i) const
inlinevirtual

Implements LArSamples::AbsShape.

Definition at line 35 of file ScaledShiftedShape.h.

35{ return scaling()*base().value(i); }

◆ values()

TVectorD AbsShape::values ( int lwb,
int upb ) const
inherited

Definition at line 135 of file AbsShape.cxx.

136{
137 if (lwb < 0) lwb = 0;
138 if (upb < 0) upb = (int)nPoints() - 1;
139 if (upb >= (int)nPoints()) upb = (int)nPoints() - 1;
140 TVectorD vals(lwb, upb);
141 for (int i = lwb; i <= upb; i++)
142 vals(i) = value(i);
143 return vals;
144}

Member Data Documentation

◆ m_base

const AbsShape* LArSamples::ScaledShiftedShape::m_base
private

Definition at line 42 of file ScaledShiftedShape.h.

◆ m_scaling

double LArSamples::ScaledShiftedShape::m_scaling
private

Definition at line 43 of file ScaledShiftedShape.h.

◆ m_shift

double LArSamples::ScaledShiftedShape::m_shift
private

Definition at line 43 of file ScaledShiftedShape.h.


The documentation for this class was generated from the following file: