File indexing completed on 2026-08-06 09:25:32
0001
0002
0003
0004
0005
0006
0007
0008
0009 #ifndef NINJA_INTEGRAL_LIBRARY_HH
0010 #define NINJA_INTEGRAL_LIBRARY_HH
0011
0012 #include <ninja/types.hh>
0013
0014 namespace ninja {
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034 class IntegralLibrary {
0035 public:
0036
0037
0038
0039
0040
0041
0042
0043
0044
0045 virtual void init(Real muRsq) = 0;
0046
0047
0048
0049 virtual void getBoxIntegralRM(Complex rslt[3],
0050 Real s21, Real s32, Real s43,
0051 Real s14, Real s31, Real s42,
0052 Real m1sq, Real m2sq,
0053 Real m3sq, Real m4sq) = 0;
0054
0055 virtual void getBoxIntegralCM(Complex rslt[3],
0056 Real s21, Real s32, Real s43,
0057 Real s14, Real s31, Real s42,
0058 const Complex & m1sq, const Complex & m2sq,
0059 const Complex & m3sq, const Complex & m4sq)
0060 = 0;
0061
0062
0063
0064 virtual void getTriangleIntegralRM(Complex rslt[3],
0065 Real s21, Real s32, Real s13,
0066 Real m1sq, Real m2sq, Real m3sq) = 0;
0067
0068 virtual void getTriangleIntegralCM(Complex rslt[3],
0069 Real s21, Real s32, Real s13,
0070 const Complex & m1sq,
0071 const Complex & m2sq,
0072 const Complex & m3sq) = 0;
0073
0074
0075
0076 virtual void getBubbleIntegralRM(Complex rslt[3],
0077 Real s21, Real m1sq, Real m2sq) = 0;
0078
0079 virtual void getBubbleIntegralCM(Complex rslt[3],
0080 Real s21,
0081 const Complex & m1sq,
0082 const Complex & m2sq) = 0;
0083
0084
0085
0086 virtual void getRank2BubbleIntegralRM(Complex b11[3],
0087 Complex b1[3], Complex b0[3],
0088 Real s21, Real m1sq, Real m2sq) = 0;
0089
0090 virtual void getRank2BubbleIntegralCM(Complex b11[3],
0091 Complex b1[3], Complex b0[3],
0092 Real s21,
0093 const Complex & m1sq,
0094 const Complex & m2sq) = 0;
0095
0096
0097
0098 virtual void getTadpoleIntegralRM(Complex rslt[3], Real m0sq) = 0;
0099 virtual void getTadpoleIntegralCM(Complex rslt[3],
0100 const Complex & m0sq) = 0;
0101
0102
0103
0104
0105
0106
0107
0108
0109
0110
0111
0112
0113 virtual void exit() {}
0114
0115
0116
0117
0118
0119 virtual void getRank3BubbleIntegralRM(Complex b111[3], Complex b11[3],
0120 Complex b1[3], Complex b0[3],
0121 Real s21,
0122 Real m1sq, Real m2sq);
0123
0124 virtual void getRank3BubbleIntegralCM(Complex b111[3], Complex b11[3],
0125 Complex b1[3], Complex b0[3],
0126 Real s21,
0127 const Complex & m1sq,
0128 const Complex & m2sq);
0129
0130
0131
0132
0133
0134 virtual void getBoxIntegralNM(Complex rslt[3],
0135 Real s21, Real s32, Real s43,
0136 Real s14, Real s31, Real s42);
0137 virtual void getTriangleIntegralNM(Complex rslt[3],
0138 Real s21, Real s32, Real s13);
0139 virtual void getBubbleIntegralNM(Complex rslt[3],
0140 Real s21);
0141 virtual void getRank2BubbleIntegralNM(Complex b11[3],
0142 Complex b1[3], Complex b0[3],
0143 Real s21);
0144 virtual void getRank3BubbleIntegralNM(Complex b111[3], Complex b11[3],
0145 Complex b1[3], Complex b0[3],
0146 Real s21);
0147 virtual void getTadpoleIntegralNM(Complex rslt[3]);
0148
0149
0150
0151 virtual bool requiresOrderedCalls()
0152 {
0153 return false;
0154 }
0155
0156
0157 virtual ~IntegralLibrary() {}
0158
0159 };
0160
0161 }
0162
0163 #endif