CMS 3D CMS Logo

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 {
11 public:
12  inline ThirdOrderDelayODE(unsigned /* r */, unsigned /* c */) : a_(1.0) {}
13 
14  void calculate(double tau, double inputCurrent,
15  double dIdt, double d2Id2t,
16  const double* x, unsigned lenX,
17  unsigned firstNode, double* derivative) const;
18 
19  inline unsigned getPadeRow() const {return 0U;}
20  inline unsigned getPadeColumn() const {return 3U;}
21  inline unsigned nParameters() const {return 3U;}
22 
23  // The parameters should be set to the logs of their actual values
24  void setParameters(const double* pars, unsigned nPars);
25 
26 private:
27  double a_;
28  double b_;
29  double c_;
30 };
31 
32 #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)