ROOT
6.07/01
Reference Guide
ROOT Home Page
Main Page
Tutorials
User's Classes
Namespaces
All Classes
Files
Release Notes
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Groups
Pages
math
minuit2
inc
Minuit2
ABSum.h
Go to the documentation of this file.
1
// @(#)root/minuit2:$Id$
2
// Authors: M. Winkler, F. James, L. Moneta, A. Zsenei 2003-2005
3
4
/**********************************************************************
5
* *
6
* Copyright (c) 2005 LCG ROOT Math team, CERN/PH-SFT *
7
* *
8
**********************************************************************/
9
10
#ifndef ROOT_Minuit2_ABSum
11
#define ROOT_Minuit2_ABSum
12
13
#include "
Minuit2/ABObj.h
"
14
15
namespace
ROOT {
16
17
namespace
Minuit2 {
18
19
20
template
<
class
M1,
class
M2>
21
class
ABSum
{
22
23
private
:
24
25
ABSum
() :
fA
(M1()),
fB
(M2()) {}
26
27
ABSum
&
operator=
(
const
ABSum
&) {
return
*
this
;}
28
29
template
<
class
MI1,
class
MI2>
30
ABSum
&
operator=
(
const
ABSum<MI1,MI2>
&) {
return
*
this
;}
31
32
public
:
33
34
ABSum
(
const
M1&
a
,
const
M2& b):
fA
(a),
fB
(b) {}
35
36
~ABSum
() {}
37
38
ABSum
(
const
ABSum
& sum) :
fA
(sum.
fA
),
fB
(sum.
fB
) {}
39
40
template
<
class
MI1,
class
MI2>
41
ABSum
(
const
ABSum<MI1,MI2>
& sum) :
fA
(M1(sum.
A
() )),
fB
(M2(sum.
B
() )) {}
42
43
const
M1&
A
()
const
{
return
fA
;}
44
const
M2&
B
()
const
{
return
fB
;}
45
46
private
:
47
48
M1
fA
;
49
M2
fB
;
50
};
51
52
// ABObj + ABObj
53
template
<
class
atype,
class
A,
class
btype,
class
B,
class
T>
54
inline
ABObj<typename AlgebraicSumType<atype, btype>::Type
,
ABSum<ABObj<atype,A,T>
,
ABObj<btype,B,T>
>,
T
>
operator+
(
const
ABObj<atype,A,T>
&
a
,
const
ABObj<btype,B,T>
& b) {
55
56
return
ABObj<typename AlgebraicSumType<atype,btype>::Type
,
ABSum<ABObj<atype,A,T>
,
ABObj<btype,B,T>
>,
T
>(ABSum<ABObj<atype,A,T>, ABObj<btype,B,T> >(
a
, b));
57
}
58
59
// ABObj - ABObj
60
template
<
class
atype,
class
A,
class
btype,
class
B,
class
T>
61
inline
ABObj<typename AlgebraicSumType<atype, btype>::Type
,
ABSum<ABObj<atype,A,T>
,
ABObj<btype,B,T>
>,
T
>
operator-
(
const
ABObj<atype,A,T>
&
a
,
const
ABObj<btype,B,T>
& b) {
62
63
return
ABObj<typename AlgebraicSumType<atype,btype>::Type
,
ABSum<ABObj<atype,A,T>
,
ABObj<btype,B,T>
>,
T
>(ABSum<ABObj<atype,A,T>, ABObj<btype,B,T> >(
a
, ABObj<btype,B,T>(b.
Obj
(),
T
(-1.)*b.
f
())));
64
}
65
66
}
// namespace Minuit2
67
68
}
// namespace ROOT
69
70
#endif // ROOT_Minuit2_ABSum
ROOT::Minuit2::ABObj
Definition:
ABObj.h:21
ROOT::Minuit2::ABObj::f
T f() const
Definition:
ABObj.h:56
ROOT::Minuit2::ABSum::operator=
ABSum & operator=(const ABSum< MI1, MI2 > &)
Definition:
ABSum.h:30
a
TArc * a
Definition:
textangle.C:12
ROOT::Minuit2::operator-
ABObj< mt, M, T > operator-(const M &obj)
Definition:
ABObj.h:152
ROOT::Minuit2::ABObj::Obj
const M & Obj() const
Definition:
ABObj.h:54
T
TTree * T
Definition:
memstatExample.C:53
ROOT::Minuit2::ABSum::fA
M1 fA
Definition:
ABSum.h:48
ABObj.h
ROOT::Minuit2::ABSum::ABSum
ABSum(const ABSum< MI1, MI2 > &sum)
Definition:
ABSum.h:41
ROOT::Minuit2::ABSum::ABSum
ABSum(const ABSum &sum)
Definition:
ABSum.h:38
ROOT::Minuit2::operator+
ABObj< typename AlgebraicSumType< atype, btype >::Type, ABSum< ABObj< atype, A, T >, ABObj< btype, B, T > >, T > operator+(const ABObj< atype, A, T > &a, const ABObj< btype, B, T > &b)
Definition:
ABSum.h:54
ROOT::Minuit2::ABSum::fB
M2 fB
Definition:
ABSum.h:49
ROOT::Minuit2::ABSum::A
const M1 & A() const
Definition:
ABSum.h:43
ROOT::Minuit2::ABSum::ABSum
ABSum(const M1 &a, const M2 &b)
Definition:
ABSum.h:34
ROOT::Minuit2::ABSum::ABSum
ABSum()
Definition:
ABSum.h:25
ROOT::Minuit2::ABSum::operator=
ABSum & operator=(const ABSum &)
Definition:
ABSum.h:27
ROOT::Minuit2::ABSum::~ABSum
~ABSum()
Definition:
ABSum.h:36
ROOT::Minuit2::ABSum::B
const M2 & B() const
Definition:
ABSum.h:44
ROOT::Minuit2::ABSum
Definition:
ABSum.h:21