Logo ROOT   6.30.04
Reference Guide
 All Namespaces Files Pages
ABTypes.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_ABTypes
11 #define ROOT_Minuit2_ABTypes
12 
13 namespace ROOT {
14 
15  namespace Minuit2 {
16 
17 
18 class gen {};
19 class sym {};
20 class vec {};
21 
22 template<class A, class B>
23 class AlgebraicSumType {
24 public:
25  typedef gen Type;
26 };
27 
28 template<class T>
29 class AlgebraicSumType<T, T> {
30 public:
31  typedef T Type;
32 };
33 
34 template < >
35 class AlgebraicSumType<vec, gen> {
36 private:
37  typedef gen Type;
38 };
39 
40 template < >
41 class AlgebraicSumType<gen, vec> {
42 private:
43  typedef gen Type;
44 };
45 
46 template < >
47 class AlgebraicSumType<vec, sym> {
48 private:
49  typedef gen Type;
50 };
51 
52 template < >
53 class AlgebraicSumType<sym, vec> {
54 private:
55  typedef gen Type;
56 };
57 
58 //
59 
60 template<class A, class B>
61 class AlgebraicProdType {
62 private:
63  typedef gen Type;
64 };
65 
66 template<class T>
67 class AlgebraicProdType<T, T> {
68 private:
69  typedef T Type;
70 };
71 
72 template < >
73 class AlgebraicProdType<gen, gen> {
74 public:
75  typedef gen Type;
76 };
77 
78 template < >
79 class AlgebraicProdType<sym, sym> {
80 public:
81  typedef gen Type;
82 };
83 
84 template < >
85 class AlgebraicProdType<sym, gen> {
86 public:
87  typedef gen Type;
88 };
89 
90 template < >
91 class AlgebraicProdType<gen, sym> {
92 public:
93  typedef gen Type;
94 };
95 
96 template < >
97 class AlgebraicProdType<vec, gen> {
98 private:
99  typedef gen Type;
100 };
101 
102 template < >
103 class AlgebraicProdType<gen, vec> {
104 public:
105  typedef vec Type;
106 };
107 
108 template < >
109 class AlgebraicProdType<vec, sym> {
110 private:
111  typedef gen Type;
112 };
113 
114 template < >
115 class AlgebraicProdType<sym, vec> {
116 public:
117  typedef vec Type;
118 };
119 
120 
121 
122  } // namespace Minuit2
123 
124 } // namespace ROOT
125 
126 #endif // ROOT_Minuit2_ABTypes