(*******************************************************************************)

<< asy.m;

(*******************************************************************************)
(* Simple large-momentum expansion

            - d1,m,v1 -<-
           |             |
 - p0,M ->-@             @-
           |             |
            - d2,m ------

   limit: p0^2 = -M^2 >> m^2
*)

Print["expect 3 regions:"];
AlphaRepExpand[
  {v1},
  {v1^2 + m^2, (v1+p0)^2 + m^2},
  {p0^2 -> -M^2},
  {m -> x},
  Verbose -> True]

(*******************************************************************************)
(* Simple large-momentum expansion

            - d1,m,v1 -<-
           |             |
 - p0,M ->-@             @-
           |             |
            - d2,0 ------

   limit: p0^2 = -M^2 >> m^2
*)

Print["expect 2 regions:"];
AlphaRepExpand[
  {v1},
  {v1^2 + m^2, (v1+p0)^2},
  {p0^2 -> -M^2},
  {m -> x},
  Verbose -> True]

(*******************************************************************************)
(* One-loop box with collinear/Sudakov region

  - p1,0 ->-@- d1,0 -@- p3,0 -<-
            |        |
           d2,0    d4,0
            |        |
  - p2,0 ->-@- d3,0 -@- p4,0 -<-

  limit: s = (p1+p2)^2 >> t = (p2+p3)^2
*)

Print["expect 3 regions:"];
AlphaRepExpand[
  {k},
  {k^2, (k + p1)^2, (k + p1 + p2)^2, (k + p1 + p2 + p3)^2},
  {p1^2 -> 0, p2^2 -> 0, p3^2 -> 0, p4^2 -> 0,
   p1*p2 -> s/2, p1*p3 -> (-s - t)/2, p1*p4 -> t/2,
   p2*p3 -> t/2,  p2*p4 -> (-s - t)/2, p3*p4 -> s/2},
  {s -> x^0, t -> x},
  Verbose->True]

(*******************************************************************************)
(* Simple on-shell expansion

            - d5,0,v1 -<--------
           |                    |
 - p0,M ->-@- d2,M -@- d3,m ----@- d4,m -------@-
                    |                          |
                    @- d1,0,v3+v2 -<-----------@
                    |                          |
                     - d6,0,v3 ->--------------

   limit: p0^2 = -M^2 >> m^2
*)

Print["expect 4 regions (one eikonal):"];
AlphaRepExpand[
  {v1,v2,v3},
  {(v3+v2)^2,(p0+v1)^2+M^2,(p0+v1+v2)^2+m^2,(p0+v2)^2+m^2,v1^2,v3^2},
  {p0^2 -> -M^2},
  {m -> x},
  Verbose -> True]

(*******************************************************************************)
(* More complex on-shell expansion

            - d7,0,v2 -<-----------------------
           |                     - d6,0,v1 -<--|-----------
           | p0+v2>   p0+v2+v4> | p0+v1+v2+v4> | p0+v1+v4> | p0+v4>
 - p0,M ->-@- d8,M -@- d5,m ----@- d4,m -------@- d3,m ----@- d2,m -@-
                    |                                               |
                    @- d1,0,v3+v4 -<--------------------------------@
                    |                                               |
                     - d9,0,v3 ->-----------------------------------

   limit: p0^2 = -M^2 >> m^2
*)

Print["expect 11 regions (two eikonal):"];
AlphaRepExpand[
  {v1,v2,v3,v4},
  {(v3+v4)^2,(p0+v4)^2+m^2,(p0+v1+v4)^2+m^2,(p0+v1+v2+v4)^2+m^2,
     (p0+v2+v4)^2+m^2,v1^2,v2^2,(p0+v2)^2+M^2,v3^2},
  {p0^2 -> -M^2},
  {m -> x},
  Verbose -> True]

(*******************************************************************************)
(* Simple collinear/Sudakov expansion

    - M -@- M -@- p1,M ->-
   |     |     |
 ==@     v1,0  v2,0
   |     |     |
    - m -@- m -@- p2,m ->-

   limit: ss ~ M^2 >> m^2
*)

Print["expect 5 regions (hard, 1c-h, 1c-1c, h-1c, us-1c)"];
AlphaRepExpand[
  {v1,v2},
  {(p1-v1-v2)^2+M^2,(p1-v2)^2+M^2,(p2+v1+v2)^2+m^2,(p2+v2)^2+m^2,v1^2,v2^2},
  {p1^2 -> -M^2, p2^2 -> -m^2, p1*p2 -> ss/2},
  {m -> x},
  Verbose -> True]

(*******************************************************************************)
(* More complex collinear/Sudakov expansion

    - m -@- m -@- p1,m ->-
   |     |     |
 ==@     v1,0  v2,0
   |     |     |
    - m -@- m -@- p2,m ->-

   limit: p1.p2 = ss + m^2, ss ~ M^2 >> m^2
*)

Print["expect 9 regions (hard, 1c-1h, 1c-1c, h-1c, 1uc-2c)"];
AlphaRepExpand[
  {v1,v2},
  {(p1-v1-v2)^2+m^2,(p1-v2)^2+m^2,(p2+v1+v2)^2+m^2,(p2+v2)^2+m^2,v1^2,v2^2},
  {p1^2 -> -M^2, p2^2 -> -m^2, p1*p2 -> ss + m^2},
  {m -> x},
  Verbose -> True]

(*******************************************************************************)
