ATLAS Offline Software
Public Member Functions | Private Attributes | List of all members
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
More...
 
 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

Constructor

Definition at line 22 of file ScaledShiftedShape.h.

◆ 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(); }

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

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

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

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

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

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

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

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

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

◆ 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;
64  double minValue = Definitions::none;
65  for (unsigned int i = 0; i < nPoints(); i++)
66  if (value(i) < minValue) { minPosition = i; minValue = value(i); }
67  return minPosition;
68 }

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

◆ 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:
LArSamples::AbsShape::covariance
virtual double covariance(unsigned int i, unsigned int j) const =0
LArSamples::AbsShape::AbsShape
AbsShape()
Definition: AbsShape.h:72
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
LArSamples::CovMatrix
TMatrixTSym< double > CovMatrix
Definition: Definitions.h:11
ALFA_EventTPCnv_Dict::t0
std::vector< ALFA_RawData_p1 > t0
Definition: ALFA_EventTPCnvDict.h:42
LArSamples::AbsShape::value
virtual double value(unsigned int i) const =0
ALFA_EventTPCnv_Dict::t1
std::vector< ALFA_RawDataCollection_p1 > t1
Definition: ALFA_EventTPCnvDict.h:43
plotBeamSpotVxVal.cov
cov
Definition: plotBeamSpotVxVal.py:201
LArSamples::SimpleShape
Definition: SimpleShape.h:25
mc.diff
diff
Definition: mc.SFGenPy8_MuMu_DD.py:14
LArSamples::AbsShape::minValue
double minValue(bool withErrors=false) const
Definition: AbsShape.cxx:41
IOVDbNamespace::inRange
bool inRange(const NumericType &val, const std::pair< NumericType, NumericType > &range)
Function to check whether a number is in the inclusive range, given as a pair.
Definition: IOVDbCoolFunctions.h:42
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
LArSamples::ScaledShiftedShape::shift
double shift() const
Definition: ScaledShiftedShape.h:32
LArSamples::AbsShape::interpolate
int interpolate(double time, double &value, double &error) const
Definition: AbsShape.cxx:83
LArSamples::AbsShape::error
virtual double error(unsigned int i) const
Definition: AbsShape.cxx:24
LArSamples::AbsShape::graph
TGraphErrors * graph(bool timeInUnitOfSamples=false) const
Definition: AbsShape.cxx:186
LArSamples::ScaledShiftedShape::base
const AbsShape & base() const
Definition: ScaledShiftedShape.h:30
dqt_zlumi_pandas.err
err
Definition: dqt_zlumi_pandas.py:193
lumiFormat.i
int i
Definition: lumiFormat.py:92
beamspotman.n
n
Definition: beamspotman.py:731
LArSamples::Definitions::none
static const double none
Definition: Definitions.h:17
LArSamples::ScaledShiftedShape::m_base
const AbsShape * m_base
Definition: ScaledShiftedShape.h:42
LArSamples::AbsShape::findTimeInterval
int findTimeInterval(double time) const
Definition: AbsShape.cxx:71
LArSamples::ScaledShiftedShape::scaling
double scaling() const
Definition: ScaledShiftedShape.h:31
beamspotman.stat
stat
Definition: beamspotman.py:266
mergePhysValFiles.errors
list errors
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:43
LArSamples::ScaledShiftedShape::m_scaling
double m_scaling
Definition: ScaledShiftedShape.h:43
LArSamples::AbsShape::maxValue
double maxValue(bool withErrors=false) const
Definition: AbsShape.cxx:30
InDetDD::other
@ other
Definition: InDetDD_Defs.h:16
LArSamples::ScaledShiftedShape::m_shift
double m_shift
Definition: ScaledShiftedShape.h:43
Pythia8_RapidityOrderMPI.val
val
Definition: Pythia8_RapidityOrderMPI.py:14
unit
const PlainObject unit() const
This is a plugin that makes Eigen look like CLHEP & defines some convenience methods.
Definition: AmgMatrixBasePlugin.h:20
merge.status
status
Definition: merge.py:17
LArSamples::AbsShape::maxPosition
int maxPosition() const
Definition: AbsShape.cxx:52
LArSamples::AbsShape::covarianceMatrix
CovMatrix covarianceMatrix(int lwb=-1, int upb=-1, const CovMatrix &refErr=CovMatrix(), bool withCorrs=true) const
Definition: AbsShape.cxx:198
LArSamples::Definitions::samplingInterval
static const unsigned int samplingInterval
Definition: Definitions.h:15
LArSamples::AbsShape::time
virtual double time(unsigned int i) const =0
LArSamples::AbsShape::minPosition
int minPosition() const
Definition: AbsShape.cxx:61
python.compressB64.c
def c
Definition: compressB64.py:93
LArSamples::AbsShape::values
TVectorD values(int lwb, int upb) const
Definition: AbsShape.cxx:135
LArSamples::AbsShape::interpolateDiff
int interpolateDiff(double time, double &diff) const
Definition: AbsShape.cxx:108
LArSamples::AbsShape::nPoints
virtual unsigned int nPoints() const =0
PlotCalibFromCool.vals
vals
Definition: PlotCalibFromCool.py:474