ATLAS Offline Software
Public Member Functions | Protected Member Functions | List of all members
LArSamples::AbsShape Class Referenceabstract

#include <AbsShape.h>

Inheritance diagram for LArSamples::AbsShape:
Collaboration diagram for LArSamples::AbsShape:

Public Member Functions

virtual ~AbsShape ()
 
virtual unsigned int nPoints () const =0
 
virtual double value (unsigned int i) const =0
 
virtual double covariance (unsigned int i, unsigned int j) const =0
 
virtual double time (unsigned int i) const =0
 
virtual double error (unsigned int i) const
 
TVectorD values (int lwb, int upb) const
 
int findTimeInterval (double time) const
 
int interpolate (double time, double &value, double &error) const
 
int interpolateDiff (double time, double &diff) const
 
bool interpolate (const AbsShape &other, TVectorD &values, CovMatrix &errors, int lwb=-1, int upb=-1) 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 invCovarianceMatrix (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 (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
 

Protected Member Functions

 AbsShape ()
 

Detailed Description

Definition at line 28 of file AbsShape.h.

Constructor & Destructor Documentation

◆ ~AbsShape()

virtual LArSamples::AbsShape::~AbsShape ( )
inlinevirtual

Definition at line 32 of file AbsShape.h.

32 { }

◆ AbsShape()

LArSamples::AbsShape::AbsShape ( )
inlineprotected

Definition at line 72 of file AbsShape.h.

72 { }

Member Function Documentation

◆ covariance()

virtual double LArSamples::AbsShape::covariance ( unsigned int  i,
unsigned int  j 
) const
pure virtual

◆ covarianceMatrix() [1/2]

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

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

Definition at line 223 of file AbsShape.cxx.

225 {
226  return covarianceMatrix(0, n - 1, CovMatrix(), withCorrs);
227 }

◆ error()

double AbsShape::error ( unsigned int  i) const
virtual

Reimplemented in LArSamples::ScaledShiftedShape.

Definition at line 24 of file AbsShape.cxx.

25 {
26  return TMath::Sqrt(covariance(i, i));
27 }

◆ findTimeInterval()

int AbsShape::findTimeInterval ( double  time) const

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

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

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

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

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

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

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

Definition at line 230 of file AbsShape.cxx.

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

◆ maxPosition()

int AbsShape::maxPosition ( ) const

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

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

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()

virtual unsigned int LArSamples::AbsShape::nPoints ( ) const
pure virtual

◆ resample()

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

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 }

◆ time()

virtual double LArSamples::AbsShape::time ( unsigned int  i) const
pure virtual

◆ value()

virtual double LArSamples::AbsShape::value ( unsigned int  i) const
pure virtual

◆ values()

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

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 }

The documentation for this class was generated from the following files:
LArSamples::AbsShape::covariance
virtual double covariance(unsigned int i, unsigned int j) const =0
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::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
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::AbsShape::findTimeInterval
int findTimeInterval(double time) const
Definition: AbsShape.cxx:71
beamspotman.stat
stat
Definition: beamspotman.py:266
mergePhysValFiles.errors
list errors
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:43
LArSamples::AbsShape::maxValue
double maxValue(bool withErrors=false) const
Definition: AbsShape.cxx:30
InDetDD::other
@ other
Definition: InDetDD_Defs.h:16
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