CLHEP VERSION Reference Documentation
CLHEP Home Page
CLHEP Documentation
CLHEP Bug Reports
GenericFunctions
src
FunctionDirectProduct.cc
Go to the documentation of this file.
1
// -*- C++ -*-
2
// $Id: FunctionDirectProduct.cc,v 1.3 2003/09/06 14:04:14 boudreau Exp $
3
#include "
CLHEP/GenericFunctions/FunctionDirectProduct.hh
"
4
#include <assert.h>
5
6
namespace
Genfun
{
7
FUNCTION_OBJECT_IMP
(FunctionDirectProduct)
8
9
FunctionDirectProduct
::
FunctionDirectProduct
(const
AbsFunction
*arg1, const
AbsFunction
*arg2):
10
_arg1(arg1->clone()),
11
_arg2(arg2->clone()),
12
_m(arg1->dimensionality()),
13
_n(arg2->dimensionality())
14
{
15
}
16
17
FunctionDirectProduct::FunctionDirectProduct
(
const
FunctionDirectProduct
& right):
18
AbsFunction
(right),
19
_arg1(right._arg1->clone()),
20
_arg2(right._arg2->clone()),
21
_m(right._m),
22
_n(right._n)
23
{
24
}
25
26
27
FunctionDirectProduct::~FunctionDirectProduct
()
28
{
29
delete
_arg1;
30
delete
_arg2;
31
}
32
33
34
double
FunctionDirectProduct::operator()
(
const
Argument
&
a
)
const
{
35
unsigned
int
P =
a
.dimension();
36
Argument
x1(_m);
37
Argument
x2(_n);
38
if
(_m+_n != P) {
39
std::cerr
40
<<
"Warning: Direct product function/argument dimension mismatch"
41
<< std::endl;
42
assert(0);
43
return
0;
44
}
45
for
(
unsigned
int
i = 0; i<_m;i++) {
46
x1[i]=
a
[i];
47
}
48
for
(
unsigned
int
j = 0;j<_n;j++) {
49
x2[j]=
a
[j+_m];
50
}
51
return
(*_arg1)(x1) * (*_arg2)(x2);
52
}
53
54
unsigned
int
FunctionDirectProduct::dimensionality
()
const
{
55
return
_m+_n;
56
}
57
58
double
FunctionDirectProduct::operator ()
(
double
)
const
59
{
60
std::cerr
61
<<
"Warning. direct product called with scalar argument"
62
<< std::endl;
63
assert(0);
64
return
0;
65
}
66
67
68
69
Derivative
FunctionDirectProduct::partial
(
unsigned
int
index)
const
{
70
assert (index<(_m+_n));
71
if
(index<_m) {
72
const
AbsFunction
& fPrime = (_arg1->
partial
(index))%(*_arg2);
73
return
Derivative
(&fPrime);
74
}
75
else
{
76
const
AbsFunction
& fPrime = (*_arg1)%(_arg2->
partial
(index-_m));
77
return
Derivative
(&fPrime);
78
}
79
}
80
81
82
}
// namespace Genfun
FUNCTION_OBJECT_IMP
#define FUNCTION_OBJECT_IMP(classname)
Definition
CLHEP/GenericFunctions/AbsFunction.hh:156
FunctionDirectProduct.hh
Genfun::AbsFunction
Definition
CLHEP/GenericFunctions/AbsFunction.hh:48
Genfun::AbsFunction::partial
virtual Derivative partial(unsigned int) const
Definition
AbsFunction.cc:40
Genfun::Argument
Definition
CLHEP/GenericFunctions/Argument.hh:17
Genfun::FunctionDirectProduct
Definition
CLHEP/GenericFunctions/FunctionDirectProduct.hh:23
Genfun::FunctionDirectProduct::operator()
virtual double operator()(double argument) const
Definition
FunctionDirectProduct.cc:58
Genfun::FunctionDirectProduct::dimensionality
virtual unsigned int dimensionality() const
Definition
FunctionDirectProduct.cc:54
Genfun::FunctionDirectProduct::~FunctionDirectProduct
virtual ~FunctionDirectProduct()
Definition
FunctionDirectProduct.cc:27
Genfun::FunctionDirectProduct::FunctionDirectProduct
FunctionDirectProduct(const AbsFunction *arg1, const AbsFunction *arg2)
Definition
FunctionDirectProduct.cc:9
Genfun::FunctionDirectProduct::partial
Derivative partial(unsigned int) const
Definition
FunctionDirectProduct.cc:69
Genfun::FunctionNoop
Definition
CLHEP/GenericFunctions/FunctionNoop.hh:19
Genfun
Definition
CLHEP/GenericFunctions/Abs.hh:14
Genfun::Derivative
FunctionNoop Derivative
Definition
CLHEP/GenericFunctions/AbsFunction.hh:42
a
@ a
Definition
testCategories.cc:125
Generated by
1.9.8