TrackPropagation
RungeKutta
src
RK4OneStepTempl.h
Go to the documentation of this file.
1
#ifndef RK4OneStepTempl_H
2
#define RK4OneStepTempl_H
3
4
#include "
FWCore/Utilities/interface/Visibility.h
"
5
#include "
RKSmallVector.h
"
6
#include "
RKDerivative.h
"
7
8
template
<
typename
T,
int
N>
9
class
dso_internal
RK4OneStepTempl
{
10
public
:
11
typedef
T
Scalar
;
12
typedef
RKSmallVector<T, N>
Vector
;
13
14
Vector
operator()
(
Scalar
startPar,
const
Vector
& startState,
const
RKDerivative<T, N>
& deriv,
Scalar
step
)
const
{
15
// cout << "RK4OneStepTempl: starting from " << startPar << startState << endl;
16
17
Vector
k1 =
step
* deriv(startPar, startState);
18
Vector
k2 =
step
* deriv(startPar +
step
/ 2, startState + k1 / 2);
19
Vector
k3 =
step
* deriv(startPar +
step
/ 2, startState + k2 / 2);
20
Vector
k4 =
step
* deriv(startPar +
step
, startState + k3);
21
22
Vector
result
= startState + k1 / 6 + k2 / 3 + k3 / 3 + k4 / 6;
23
24
// cout << "RK4OneStepTempl: result for step " << step << " is " << result << endl;
25
26
return
result
;
27
}
28
};
29
30
#endif
Visibility.h
step
step
Definition:
StallMonitor.cc:94
RK4OneStepTempl::Vector
RKSmallVector< T, N > Vector
Definition:
RK4OneStepTempl.h:12
RKDerivative.h
RKSmallVector
ROOT::Math::SVector< T, N > RKSmallVector
Definition:
RKSmallVector.h:13
RK4OneStepTempl::Scalar
T Scalar
Definition:
RK4OneStepTempl.h:11
RK4OneStepTempl
Definition:
RK4OneStepTempl.h:9
dso_internal
#define dso_internal
Definition:
Visibility.h:13
RK4OneStepTempl::operator()
Vector operator()(Scalar startPar, const Vector &startState, const RKDerivative< T, N > &deriv, Scalar step) const
Definition:
RK4OneStepTempl.h:14
RKDerivative
Base class for derivative calculation.
Definition:
RKDerivative.h:10
T
long double T
Definition:
Basic3DVectorLD.h:48
mps_fire.result
result
Definition:
mps_fire.py:303
RKSmallVector.h
Generated for CMSSW Reference Manual by
1.8.16