ATLAS Offline Software
Public Member Functions | Private Attributes | List of all members
LArSamples::GraphShape Class Reference

#include <GraphShape.h>

Inheritance diagram for LArSamples::GraphShape:
Collaboration diagram for LArSamples::GraphShape:

Public Member Functions

 GraphShape (const std::vector< double > &times, const std::vector< double > &values, const std::vector< double > &errors)
 Constructor
More...
 
 GraphShape (const GraphShape &other)
 
 GraphShape (const AbsShape &other, double scale=1, double shift=0)
 
virtual ~GraphShape ()
 
bool add (const AbsShape &other)
 
unsigned int nPoints () const
 
double value (unsigned int i) const
 
double time (unsigned int i) const
 
double covariance (unsigned int i, unsigned int j) const
 
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
 
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

std::vector< GraphPointm_points
 

Detailed Description

Definition at line 32 of file GraphShape.h.

Constructor & Destructor Documentation

◆ GraphShape() [1/3]

GraphShape::GraphShape ( const std::vector< double > &  times,
const std::vector< double > &  values,
const std::vector< double > &  errors 
)

Constructor

Definition at line 11 of file GraphShape.cxx.

13 {
14  for (unsigned int k = 0; k < times.size(); k++)
15  m_points.emplace_back(times[k], values[k], errors[k]);
16 }

◆ GraphShape() [2/3]

LArSamples::GraphShape::GraphShape ( const GraphShape other)
inline

Definition at line 39 of file GraphShape.h.

39  :
40  AbsShape(),
41  m_points(other.m_points) { }

◆ GraphShape() [3/3]

GraphShape::GraphShape ( const AbsShape other,
double  scale = 1,
double  shift = 0 
)

Definition at line 19 of file GraphShape.cxx.

20 {
21  for (unsigned int k = 0; k < shape.nPoints(); k++)
22  m_points.emplace_back(shape.time(k) + shift, shape.value(k)*scale, shape.error(k)*scale);
23 }

◆ ~GraphShape()

virtual LArSamples::GraphShape::~GraphShape ( )
inlinevirtual

Definition at line 45 of file GraphShape.h.

45 { }

Member Function Documentation

◆ add()

bool GraphShape::add ( const AbsShape other)

Definition at line 26 of file GraphShape.cxx.

27 {
28  for (unsigned int k = 0; k < other.nPoints(); k++)
29  m_points.emplace_back(other.time(k), other.value(k), other.error(k));
30 
31  std::sort(m_points.begin(), m_points.end());
32  return true;
33 }

◆ covariance()

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

Implements LArSamples::AbsShape.

Definition at line 53 of file GraphShape.h.

53 { return (i == j ? m_points[i].error*m_points[i].error : 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 }

◆ 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 AbsShape::error ( unsigned int  i) const
virtualinherited

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
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::GraphShape::nPoints ( ) const
inlinevirtual
Returns
size

Implements LArSamples::AbsShape.

Definition at line 50 of file GraphShape.h.

50 { return m_points.size(); }

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

◆ time()

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

Implements LArSamples::AbsShape.

Definition at line 52 of file GraphShape.h.

52 { return m_points[i].time; }

◆ value()

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

Implements LArSamples::AbsShape.

Definition at line 51 of file GraphShape.h.

51 { return m_points[i].value; }

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

std::vector<GraphPoint> LArSamples::GraphShape::m_points
private

Definition at line 57 of file GraphShape.h.


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
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
LArSamples::GraphShape::m_points
std::vector< GraphPoint > m_points
Definition: GraphShape.h:57
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
yodamerge_tmp.scale
scale
Definition: yodamerge_tmp.py:138
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
std::sort
void sort(typename std::reverse_iterator< DataModel_detail::iterator< DVL > > beg, typename std::reverse_iterator< DataModel_detail::iterator< DVL > > end, const Compare &comp)
Specialization of sort for DataVector/List.
Definition: DVL_algorithms.h:623
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
error
Definition: IImpactPoint3dEstimator.h:70
LArSamples::AbsShape::minPosition
int minPosition() const
Definition: AbsShape.cxx:61
python.compressB64.c
def c
Definition: compressB64.py:93
plot_times.times
def times(fn)
Definition: plot_times.py:11
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
fitman.k
k
Definition: fitman.py:528
LArSamples::AbsShape::nPoints
virtual unsigned int nPoints() const =0
PlotCalibFromCool.vals
vals
Definition: PlotCalibFromCool.py:474