test
Main Page
Namespaces
Classes
Package Documentation
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Pages
RecoTracker
FinalTrackSelectors
plugins
powN.h
Go to the documentation of this file.
1
namespace
{
2
// not a generic solution (wrong for N negative for instance)
3
template
<
int
N>
4
struct
PowN {
5
template
<
typename
T>
6
static
T
op(
T
t
) {
return
PowN<
N
/2>::op(t)*PowN<(
N
+1)/2>::op(t);}
7
};
8
template
<>
9
struct
PowN<0> {
10
template
<
typename
T>
11
static
T
op(
T
t
) {
return
T
(1);}
12
};
13
template
<>
14
struct
PowN<1> {
15
template
<
typename
T>
16
static
T
op(
T
t
) {
return
t
;}
17
};
18
template
<>
19
struct
PowN<2> {
20
template
<
typename
T>
21
static
T
op(
T
t
) {
return
t*
t
;}
22
};
23
24
template
<
typename
T>
25
T
powN(
T
t
,
int
n
) {
26
switch
(n) {
27
case
4:
return
PowN<4>::op(t);
// the only one that matters
28
case
3:
return
PowN<3>::op(t);
// and this
29
case
8:
return
PowN<8>::op(t);
// used in conversion????
30
case
2:
return
PowN<2>::op(t);
31
case
5:
return
PowN<5>::op(t);
32
case
6:
return
PowN<6>::op(t);
33
case
7:
return
PowN<7>::op(t);
34
case
0:
return
PowN<0>::op(t);
35
case
1:
return
PowN<1>::op(t);
36
default
:
return
std::pow
(t,
T
(n));
37
}
38
}
39
}
40
lumiQTWidget.t
tuple t
Definition:
lumiQTWidget.py:50
N
#define N
Definition:
blowfish.cc:9
gen::n
int n
Definition:
Cascade2Hadronizer.cc:79
T
long double T
Definition:
Basic3DVectorLD.h:57
funct::pow
Power< A, B >::type pow(const A &a, const B &b)
Definition:
Power.h:40
Generated for CMSSW Reference Manual by
1.8.5