File indexing completed on 2026-08-06 09:25:32
0001
0002
0003
0004
0005
0006
0007 #ifndef NINJA_AVHOLO_INTERFACE_HH
0008 #define NINJA_AVHOLO_INTERFACE_HH
0009
0010 #include <ninja/integral_library.hh>
0011
0012 #if !defined(NINJA_USE_ONELOOP) && !defined(NINJA_CONFIG_H_INTERNAL)
0013 # error "Ninja was not configured with OneLoop"
0014 #endif
0015
0016 namespace ninja {
0017
0018 struct IntegralCache;
0019
0020 class AvHOneLoop : public IntegralLibrary {
0021 public:
0022 AvHOneLoop(): cache_(0), mur_(0), mur2_(0) {}
0023
0024
0025
0026 static void setInfraredThreshold(Real threshold);
0027
0028
0029
0030
0031
0032 void clearIntegralCache();
0033
0034
0035
0036
0037 void freeIntegralCache();
0038
0039 virtual void init(Real muRsq);
0040
0041
0042
0043 virtual void getBoxIntegralRM(Complex rslt[3],
0044 Real s21, Real s32, Real s43,
0045 Real s14, Real s31, Real s42,
0046 Real m1, Real m2, Real m3, Real m4);
0047
0048 virtual void getBoxIntegralCM(Complex rslt[3],
0049 Real s21, Real s32, Real s43,
0050 Real s14, Real s31, Real s42,
0051 const Complex & m1, const Complex & m2,
0052 const Complex & m3, const Complex & m4);
0053
0054 virtual void getBoxIntegralNM(Complex rslt[3],
0055 Real s21, Real s32, Real s43,
0056 Real s14, Real s31, Real s42);
0057
0058
0059
0060 virtual void getTriangleIntegralRM(Complex rslt[3],
0061 Real s21, Real s32, Real s13,
0062 Real m1, Real m2, Real m3);
0063
0064 virtual void getTriangleIntegralCM(Complex rslt[3],
0065 Real s21, Real s32, Real s13,
0066 const Complex & m1, const Complex & m2,
0067 const Complex & m3);
0068
0069 virtual void getTriangleIntegralNM(Complex rslt[3],
0070 Real s21, Real s32, Real s13);
0071
0072
0073
0074 virtual void getBubbleIntegralRM(Complex rslt[3],
0075 Real s21, Real m1, Real m2);
0076
0077 virtual void getBubbleIntegralCM(Complex rslt[3],
0078 Real s21,
0079 const Complex & m1, const Complex & m2);
0080
0081
0082
0083 virtual void getRank2BubbleIntegralRM(Complex b11[3],
0084 Complex b1[3], Complex b0[3],
0085 Real s21, Real m1, Real m2);
0086
0087 virtual void getRank2BubbleIntegralCM(Complex b11[3],
0088 Complex b1[3], Complex b0[3],
0089 Real s21,
0090 const Complex & m1,
0091 const Complex & m2);
0092
0093 virtual void getRank2BubbleIntegralNM(Complex b11[3],
0094 Complex b1[3], Complex b0[3],
0095 Real s21);
0096
0097
0098
0099 virtual void getTadpoleIntegralRM(Complex rslt[3], Real m0);
0100 virtual void getTadpoleIntegralCM(Complex rslt[3], const Complex & m0);
0101
0102
0103
0104 virtual ~AvHOneLoop();
0105
0106 private:
0107 IntegralCache * cache_;
0108 Real mur_, mur2_;
0109 static Real ir_threshold_;
0110 static bool initialized_;
0111
0112 };
0113
0114 extern AvHOneLoop avh_olo;
0115
0116 }
0117
0118 #endif