CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
ThirdOrderDelayODE.h
Go to the documentation of this file.
1 #ifndef CalibCalorimetry_HcalAlgos_ThirdOrderDelayODE_h_
2 #define CalibCalorimetry_HcalAlgos_ThirdOrderDelayODE_h_
3 
4 //
5 // Equation a/6*tau^3*V_out''' + b/2*tau^2*V_out'' + c*tau*V_out' + V_out = V_in,
6 // with parameters "a", "b", and "c". a = 1, b = 1, c = 1 corresponds to the
7 // Pade table delay equation with row = 0 and column = 3.
8 //
10 public:
11  inline ThirdOrderDelayODE(unsigned /* r */, unsigned /* c */) : a_(1.0) {}
12 
13  void calculate(double tau,
14  double inputCurrent,
15  double dIdt,
16  double d2Id2t,
17  const double* x,
18  unsigned lenX,
19  unsigned firstNode,
20  double* derivative) const;
21 
22  inline unsigned getPadeRow() const { return 0U; }
23  inline unsigned getPadeColumn() const { return 3U; }
24  inline unsigned nParameters() const { return 3U; }
25 
26  // The parameters should be set to the logs of their actual values
27  void setParameters(const double* pars, unsigned nPars);
28 
29 private:
30  double a_;
31  double b_;
32  double c_;
33 };
34 
35 #endif // CalibCalorimetry_HcalAlgos_ThirdOrderDelayODE_h_
Derivative< X, A >::type derivative(const A &_)
Definition: Derivative.h:18
unsigned nParameters() const
void calculate(double tau, double inputCurrent, double dIdt, double d2Id2t, const double *x, unsigned lenX, unsigned firstNode, double *derivative) const
unsigned getPadeRow() const
unsigned getPadeColumn() const
ThirdOrderDelayODE(unsigned, unsigned)
void setParameters(const double *pars, unsigned nPars)