Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-30 10:22:11

0001 // @(#)root/minuit2:$Id$
0002 // Authors: M. Winkler, F. James, L. Moneta, A. Zsenei   2003-2005
0003 
0004 /**********************************************************************
0005  *                                                                    *
0006  * Copyright (c) 2005 LCG ROOT Math team,  CERN/PH-SFT                *
0007  *                                                                    *
0008  **********************************************************************/
0009 
0010 #ifndef ROOT_Minuit2_ABTypes
0011 #define ROOT_Minuit2_ABTypes
0012 
0013 namespace ROOT {
0014 
0015 namespace Minuit2 {
0016 
0017 class gen {
0018 };
0019 class sym {
0020 };
0021 class vec {
0022 };
0023 
0024 template <class A, class B>
0025 class AlgebraicSumType {
0026 public:
0027    typedef gen Type;
0028 };
0029 
0030 template <class T>
0031 class AlgebraicSumType<T, T> {
0032 public:
0033    typedef T Type;
0034 };
0035 
0036 template <>
0037 class AlgebraicSumType<vec, gen> {
0038 private:
0039    typedef gen Type;
0040 };
0041 
0042 template <>
0043 class AlgebraicSumType<gen, vec> {
0044 private:
0045    typedef gen Type;
0046 };
0047 
0048 template <>
0049 class AlgebraicSumType<vec, sym> {
0050 private:
0051    typedef gen Type;
0052 };
0053 
0054 template <>
0055 class AlgebraicSumType<sym, vec> {
0056 private:
0057    typedef gen Type;
0058 };
0059 
0060 //
0061 
0062 template <class A, class B>
0063 class AlgebraicProdType {
0064 private:
0065    typedef gen Type;
0066 };
0067 
0068 template <class T>
0069 class AlgebraicProdType<T, T> {
0070 private:
0071    typedef T Type;
0072 };
0073 
0074 template <>
0075 class AlgebraicProdType<gen, gen> {
0076 public:
0077    typedef gen Type;
0078 };
0079 
0080 template <>
0081 class AlgebraicProdType<sym, sym> {
0082 public:
0083    typedef gen Type;
0084 };
0085 
0086 template <>
0087 class AlgebraicProdType<sym, gen> {
0088 public:
0089    typedef gen Type;
0090 };
0091 
0092 template <>
0093 class AlgebraicProdType<gen, sym> {
0094 public:
0095    typedef gen Type;
0096 };
0097 
0098 template <>
0099 class AlgebraicProdType<vec, gen> {
0100 private:
0101    typedef gen Type;
0102 };
0103 
0104 template <>
0105 class AlgebraicProdType<gen, vec> {
0106 public:
0107    typedef vec Type;
0108 };
0109 
0110 template <>
0111 class AlgebraicProdType<vec, sym> {
0112 private:
0113    typedef gen Type;
0114 };
0115 
0116 template <>
0117 class AlgebraicProdType<sym, vec> {
0118 public:
0119    typedef vec Type;
0120 };
0121 
0122 } // namespace Minuit2
0123 
0124 } // namespace ROOT
0125 
0126 #endif // ROOT_Minuit2_ABTypes