QCDLoop
One-loop scalar Feynman integrals
All Classes Namespaces Functions Pages
triangle.h
1 //
2 // QCDLoop 2016
3 //
4 // Authors: Stefano Carrazza: stefano.carrazza@cern.ch
5 // Keith Ellis: keith.ellis@durham.ac.uk
6 // Giulia Zanderighi: giulia.zanderighi@cern.ch
7 
8 #pragma once
9 
10 #include "topology.h"
11 
12 namespace ql
13 {
19  template<typename TOutput = complex, typename TMass = double, typename TScale = double>
20  class Triangle: public Topology<TOutput,TMass,TScale>
21  {
22  public:
23  Triangle();
24  ~Triangle();
25 
27  void integral(vector<TOutput> &res, TScale const& mu2, vector<TMass> const& m, vector<TScale> const& p);
28 
30  void T0(vector<TOutput> &res, TMass const (&xpi)[6], int const& massive) const;
31 
33  void T1(vector<TOutput> &res, TScale const& mu2, TScale const& p) const;
34 
36  void T2(vector<TOutput> &res, TScale const& mu2, TScale const& p2, TScale const& p3) const;
37 
39  void T3(vector<TOutput> &res, TScale const& mu2, TMass const& m, TScale const& p1, TScale const& p2) const;
40 
42  void T4(vector<TOutput> &res, TScale const& mu2, TMass const& m, TScale const& p2) const;
43 
45  void T5(vector<TOutput> &res, TScale const& mu2, TMass const& m) const;
46 
48  void T6(vector<TOutput> &res, TScale const& mu2, TMass const& m2, TMass const& m3, TScale const& p2) const;
49 
50  private:
52  void TriSort(TScale (&psq)[3], TMass (&msq)[3]) const;
53 
55  void TriSort2(TMass const (&xpi)[6], TMass (&ypi)[6]) const;
56 
58  void SnglSort(TScale (&psq)[3]) const;
59 
61  void TIN0(TOutput &res, TMass const (&xpi)[6]) const;
62 
64  void TIN1(TOutput &res, TMass const (&xpi)[6], TMass const (&sxpi)[6], int const& massive) const;
65 
67  void TIN2(TOutput &res, TMass const (&xpi)[6], TMass const (&sxpi)[6], int const& massive) const;
68 
70  void TIN3(TOutput &res, TMass const (&xpi)[6], TMass const (&sxpi)[6], int const& massive) const;
71 
73  void TINDNS(TOutput &res, TMass const (&xpi)[6]) const;
74 
76  void TINDNS1(TOutput &res, TMass const (&xpi)[6]) const;
77 
79  void TINDNS2(TOutput &res, TMass const (&xpi)[6]) const;
80 
82  TOutput Kallen(TOutput const& p1, TOutput const& p2, TOutput const& p3) const;
83 
85  TOutput Kallen2(TOutput const& p1, TOutput const& p2, TOutput const& p3) const;
86 
87  };
88 }
void integral(vector< TOutput > &res, TScale const &mu2, vector< TMass > const &m, vector< TScale > const &p)
Computes the Triangle integral.
Definition: triangle.cc:155
void T1(vector< TOutput > &res, TScale const &mu2, TScale const &p) const
Divergent triangle integral I(0,0,p2;0,0,0)
Definition: triangle.cc:786
void T0(vector< TOutput > &res, TMass const (&xpi)[6], int const &massive) const
General case triangle integral I(p1,p2,p3;m1,m2,m3)
Definition: triangle.cc:250
void T5(vector< TOutput > &res, TScale const &mu2, TMass const &m) const
Divergent triangle integral I(0,m2,m2;0,0,m2)
Definition: triangle.cc:913
void T3(vector< TOutput > &res, TScale const &mu2, TMass const &m, TScale const &p1, TScale const &p2) const
Divergent triangle integral I(0,p1,p2;0,0,m2)
Definition: triangle.cc:840
Definition: box.cc:14
void T6(vector< TOutput > &res, TScale const &mu2, TMass const &m2, TMass const &m3, TScale const &p2) const
Divergent triangle integral I(m2,s,m3;0,m2,m3)
Definition: triangle.cc:936
Triangle()
The Constructor.
Definition: triangle.cc:29
The Topology abstract class.
Definition: topology.h:26
void T2(vector< TOutput > &res, TScale const &mu2, TScale const &p2, TScale const &p3) const
Divergent triangle integral I(0,p1,p2;0,0,0)
Definition: triangle.cc:807
The Triangle integral.
Definition: triangle.h:20
void T4(vector< TOutput > &res, TScale const &mu2, TMass const &m, TScale const &p2) const
Divergent triangle integral I(0,m2,p2;0,0,m2)
Definition: triangle.cc:881
~Triangle()
The Destructor.
Definition: triangle.cc:37