Main Page
Namespaces
Classes
Package Documentation
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Pages
MagneticField
ParametrizedEngine
src
HarmBasis3DCyl.cc
Go to the documentation of this file.
1
// //
3
// HarmBasis3DCyl: set of basis harmonic polynomials in cylindrical CS //
4
// //
6
7
#include "
HarmBasis3DCyl.h
"
8
9
using namespace
magfieldparam;
10
11
12
//_______________________________________________________________________________
13
HarmBasis3DCyl::HarmBasis3DCyl
(
const
unsigned
N
)
14
{
15
//Construct a basis of dimension N
16
//
17
Dim
=
N
;
18
Len
= N*(N+2);
19
20
L_k
=
new
int
[
Len
];
21
M_k
=
new
int
[
Len
];
22
23
P_k
=
new
double
[
Len
];
24
Br_k
=
new
double
[
Len
];
25
Bz_k
=
new
double
[
Len
];
26
Bphi_k
=
new
double
[
Len
];
27
28
PtB
.reserve(N);
29
BrB
.reserve(N);
30
BzB
.reserve(N);
31
BphiB
.reserve(N);
32
33
rz_harm_poly::IncNPwr
(N);
//In order to prevent GetMaxPow() calls
34
unsigned
M, vLen,
k
= 0;
35
for
(
unsigned
L
= 1;
L
<=
N
; ++
L
) {
36
vLen =
L
+1;
37
harm_poly_vec
Pt_vec; Pt_vec.reserve(vLen);
38
harm_poly_vec
Br_vec; Br_vec.reserve(vLen);
39
harm_poly_vec
Bz_vec; Bz_vec.reserve(vLen);
40
harm_poly_vec
Bphi_vec; Bphi_vec.reserve(vLen);
41
42
Pt_vec.push_back (
rz_harm_poly
(
L
));
43
Br_vec.push_back (Pt_vec[0].GetDiff(0));
44
Bz_vec.push_back (Pt_vec[0].GetDiff(1));
45
Bphi_vec.push_back(
rz_harm_poly
());
46
Bphi_vec[0].CheatL(
L
);
47
48
L_k[
k
] =
L
;
M_k
[
k
] = 0; ++
k
;
49
50
for
(M = 1; M <=
L
; ++M) {
51
Pt_vec.push_back (Pt_vec[M-1].LadderUp());
52
Br_vec.push_back (Pt_vec[M].GetDiff(0));
53
Bz_vec.push_back (Pt_vec[M].GetDiff(1));
54
Bphi_vec.push_back(Pt_vec[M].GetDecPow(0));
55
Bphi_vec[M].Scale(M);
56
L_k[
k
] =
L
;
M_k
[
k
] = M; ++
k
;
57
L_k[
k
] =
L
;
M_k
[
k
] = -M; ++
k
;
58
}
59
PtB
.push_back (Pt_vec);
60
BrB
.push_back (Br_vec);
61
BzB
.push_back (Bz_vec);
62
BphiB
.push_back(Bphi_vec);
63
}
64
}
65
66
//_______________________________________________________________________________
67
HarmBasis3DCyl::~HarmBasis3DCyl
()
68
{
69
delete
[]
Bphi_k
;
70
delete
[]
Bz_k
;
71
delete
[]
Br_k
;
72
delete
[]
P_k
;
73
delete
[]
M_k
;
74
delete
[]
L_k
;
75
}
76
77
//_______________________________________________________________________________
78
void
HarmBasis3DCyl::EvalRZ
(
harm_poly_arr
&
B
,
double
*val)
79
{
80
//Fills the linear array val[Len] with values of basis polynomials.
81
//Private function, intended for internal use only.
82
//
83
unsigned
M;
84
double
V;
85
rz_harm_poly
*
P
;
86
for
(
unsigned
L
= 1,
k
= 0;
L
<=
Dim
; ++
L
, ++
k
) {
87
(*val) = B[
k
][0].Eval(); ++val;
88
for
(M = 1; M <=
L
; ++M) {
89
P = &(B[
k
][M]);
90
V = P->
Eval
();
91
(*val) = V*P->
GetCos
(); ++val;
92
(*val) = V*P->
GetSin
(); ++val;
93
}
94
}
95
}
96
97
//_______________________________________________________________________________
98
void
HarmBasis3DCyl::EvalBphi
()
99
{
100
//Fills the array Bphi_k[Len] with values of phi-basis polynomials.
101
//
102
unsigned
M;
103
double
V;
104
double
*val =
Bphi_k
;
105
rz_harm_poly
*
P
;
106
for
(
unsigned
L
= 1,
k
= 0;
L
<=
Dim
; ++
L
, ++
k
) {
107
(*val) = 0.; ++val;
108
for
(M = 1; M <=
L
; ++M) {
109
P = &(
BphiB
[
k
][M]);
110
V = P->
Eval
();
111
(*val) = -V*P->
GetSin
(); ++val;
112
(*val) = V*P->
GetCos
(); ++val;
113
}
114
}
115
}
116
117
//_______________________________________________________________________________
118
double
HarmBasis3DCyl::GetVal
(
double
*coeff,
double
*basis)
119
{
120
//return value of the expansion with coefficients coeff[Len] for the basis
121
//Private function, intended for internal use only.
122
//
123
double
S
= 0.;
124
for
(
unsigned
k
= 0;
k
<
Len
; ++
k
) S += coeff[
k
]*basis[
k
];
125
return
S
;
126
}
127
128
//_______________________________________________________________________________
129
void
HarmBasis3DCyl::Print
(
harm_poly_arr
&
B
, std::ostream &
out
)
130
{
131
unsigned
jL, jM, wdt = 60;
132
char
fc1 =
'-'
, fc0 = out.fill(fc1);
133
for
(jL = 0; jL < B.size(); ++jL) {
134
out << std::setw(wdt) << fc1 << std::endl;
135
out <<
"Basis subset "
<< jL+1 << std::endl;
136
out << std::setw(wdt) << fc1 << std::endl;
137
for
(jM = 0; jM < B[jL].size(); ++jM) {
138
B[jL][jM].Print(out);
139
}
140
}
141
out.fill(fc0);
142
}
143
144
//_______________________________________________________________________________
145
void
HarmBasis3DCyl::Print
(std::ostream &
out
)
146
{
147
out <<
"BASIS POLYNOMIALS FOR THE POTENTIAL:\n"
<< std::endl;
148
PrintPtB
(out);
149
out <<
"\nBASIS POLYNOMIALS FOR R-COMPONENT OF THE FIELD:\n"
<< std::endl;
150
PrintBrB
(out);
151
out <<
"\nBASIS POLYNOMIALS FOR Z-COMPONENT OF THE FIELD:\n"
<< std::endl;
152
PrintBzB
(out);
153
out <<
"\nBASIS POLYNOMIALS FOR PHI-COMPONENT OF THE FIELD:\n"
<< std::endl;
154
PrintBphiB
(out);
155
}
156
magfieldparam::HarmBasis3DCyl::BphiB
harm_poly_arr BphiB
Definition:
HarmBasis3DCyl.h:29
magfieldparam::HarmBasis3DCyl::L_k
int * L_k
Definition:
HarmBasis3DCyl.h:23
magfieldparam::HarmBasis3DCyl::~HarmBasis3DCyl
virtual ~HarmBasis3DCyl()
Definition:
HarmBasis3DCyl.cc:67
magfieldparam::HarmBasis3DCyl::PrintBrB
void PrintBrB(std::ostream &out=std::cout)
Definition:
HarmBasis3DCyl.h:71
magfieldparam::HarmBasis3DCyl::PrintBphiB
void PrintBphiB(std::ostream &out=std::cout)
Definition:
HarmBasis3DCyl.h:73
magfieldparam::HarmBasis3DCyl::HarmBasis3DCyl
HarmBasis3DCyl(const unsigned N=18)
Definition:
HarmBasis3DCyl.cc:13
magfieldparam::HarmBasis3DCyl::Len
unsigned Len
Definition:
HarmBasis3DCyl.h:21
P
#define P
Definition:
PFJetBenchmark.cc:35
dttmaxenums::L
Definition:
DTTMax.h:28
magfieldparam::HarmBasis3DCyl::P_k
double * P_k
Definition:
HarmBasis3DCyl.h:24
magfieldparam::HarmBasis3DCyl::EvalBphi
void EvalBphi()
Definition:
HarmBasis3DCyl.cc:98
double_binary
Definition:
DDStreamer.cc:227
magfieldparam::HarmBasis3DCyl::PtB
harm_poly_arr PtB
Definition:
HarmBasis3DCyl.h:26
magfieldparam::poly2d_base::Eval
double Eval()
Definition:
poly2d_base.cc:157
roll_playback.k
tuple k
Definition:
roll_playback.py:138
magfieldparam::rz_harm_poly::GetSin
double GetSin()
Definition:
rz_harm_poly.h:95
magfieldparam::HarmBasis3DCyl::M_k
int * M_k
Definition:
HarmBasis3DCyl.h:23
magfieldparam::poly2d_base::IncNPwr
static void IncNPwr(const unsigned N)
Definition:
poly2d_base.h:72
magfieldparam::HarmBasis3DCyl::Bphi_k
double * Bphi_k
Definition:
HarmBasis3DCyl.h:24
magfieldparam::rz_harm_poly::GetCos
double GetCos()
Definition:
rz_harm_poly.h:94
magfieldparam::HarmBasis3DCyl::Bz_k
double * Bz_k
Definition:
HarmBasis3DCyl.h:24
magfieldparam::harm_poly_arr
std::vector< harm_poly_vec > harm_poly_arr
Definition:
HarmBasis3DCyl.h:9
dbtoconf.out
tuple out
Definition:
dbtoconf.py:99
magfieldparam::harm_poly_vec
std::vector< rz_harm_poly > harm_poly_vec
Definition:
HarmBasis3DCyl.h:8
N
#define N
Definition:
blowfish.cc:9
magfieldparam::HarmBasis3DCyl::Print
void Print(harm_poly_arr &B, std::ostream &out=std::cout)
Definition:
HarmBasis3DCyl.cc:129
magfieldparam::rz_harm_poly
Definition:
rz_harm_poly.h:38
magfieldparam::HarmBasis3DCyl::EvalRZ
void EvalRZ(harm_poly_arr &B, double *val)
Definition:
HarmBasis3DCyl.cc:78
magfieldparam::HarmBasis3DCyl::Br_k
double * Br_k
Definition:
HarmBasis3DCyl.h:24
S
double S(const TLorentzVector &, const TLorentzVector &)
Definition:
Particle.cc:99
magfieldparam::HarmBasis3DCyl::Dim
unsigned Dim
Definition:
HarmBasis3DCyl.h:20
magfieldparam::HarmBasis3DCyl::BrB
harm_poly_arr BrB
Definition:
HarmBasis3DCyl.h:27
magfieldparam::HarmBasis3DCyl::BzB
harm_poly_arr BzB
Definition:
HarmBasis3DCyl.h:28
magfieldparam::HarmBasis3DCyl::PrintBzB
void PrintBzB(std::ostream &out=std::cout)
Definition:
HarmBasis3DCyl.h:72
magfieldparam::HarmBasis3DCyl::PrintPtB
void PrintPtB(std::ostream &out=std::cout)
Definition:
HarmBasis3DCyl.h:70
HarmBasis3DCyl.h
magfieldparam::HarmBasis3DCyl::GetVal
double GetVal(double *coeff, double *basis)
Definition:
HarmBasis3DCyl.cc:118
Generated for CMSSW Reference Manual by
1.8.5