GAP functions for the calculation of the Rouquier blocks of the cyclotomic Hecke algebras of all exceptional complex reflection groups

Using the algorithm explained in Chapter 4 of my Ph.D. Thesis, we have been able to calculate the Rouquier blocks associated with all essential hyperplanes (and thus the Rouquier blocks of all cyclotomic Hecke algebras) for all exceptional irreducible complex reflection groups. We have stored these data in a file and have created functions which display them.
These functions are contained in the file RouquierBlocks.g (zip), along with the data needed for them to work. Let us explain how they are used. From now on, let W be an exceptional irreducible complex reflection group.

EssentialHyperplanes

EssentialHuperplanes(W,p)
This function returns
gap> W:=ComplexReflectionGroup(4);;
gap> EssentialHyperplanes(W,0);
c_1-c_2=0
c_0-c_1=0
c_0-c_2=0
2c_0-c_1-c_2=0
c_0-2c_1+c_2=0
c_0+c_1-2c_2=0
gap> EssentialHyperplanes(W,2);
2c_0-c_1-c_2=0
c_0-2c_1+c_2=0
c_0+c_1-2c_2=0
c_0-c_1=0
c_1-c_2=0
c_0-c_2=0
gap> EssentialHyperplanes(W,3);
c_1-c_2=0
c_0-c_1=0
c_0-c_2=0
gap> EssentialHyperplanes(W,5);
Error, The number p should divide the order of the group

DisplayAllBlocks

DisplayAllBlocks(W)
It displays all essential hyperplanes for W and the Rouquier blocks associated with each.
gap> W:=ComplexReflectionGroup(4);;
gap> DisplayAllBlocks(W);
No essential hyperplane
[["phi{1,0}"],["phi{1,4}"],["phi{1,8}"],
["phi{2,5}"],["phi{2,3}"],["phi{2,1}"],["phi{3,2}"]]
c_1-c_2=0
[["phi{1,0}"],["phi{1,4}","phi{1,8}","phi{2,5}"],
["phi{2,3}","phi{2,1}"],["phi{3,2}"]]
c_0-c_1=0
[["phi{1,0}","phi{1,4}","phi{2,1}"],["phi{1,8}"],
["phi{2,5}","phi{2,3}"],["phi{3,2}"]]
c_0-c_2=0
[["phi{1,0}","phi{1,8}","phi{2,3}"],["phi{1,4}"],
["phi{2,5}","phi{2,1}"],["phi{3,2}"]]
2c_0-c_1-c_2=0
[["phi{1,0}","phi{2,5}","phi{3,2}"],["phi{1,4}"],
["phi{1,8}"], ["phi{2,3}"],["phi{2,1}"]]
c_0-2c_1+c_2=0
[["phi{1,0}"],["phi{1,4}","phi{2,3}","phi{3,2}"],
["phi{1,8}"],["phi{2,5}"],["phi{2,1}"]]
c_0+c_1-2c_2=0
[["phi{1,0}"],["phi{1,4}"],["phi{1,8}","phi{2,1}","phi{3,2}"],
["phi{2,5}"],["phi{2,3}"]]

AllBlocks

AllBlocks(W)
It displays the same data as DisplayAllBlocks(W) in a way easy to work with: the essential hyperplanes are represented by the vectors cond (where cond:=[] means "No essential hyperplane") and the characters are defined by their indexes in the list CharNames(W)
gap> W:=ComplexReflectionGroup(4);;
gap> AllBlocks(W);
[rec(cond:=[ ],block:=[[1],[2],[3],[4],[5],[6],[7]]),
rec(cond:=[0,1,-1],block:=[[1],[2,3,4],[5,6],[7]]),
rec(cond:=[1,-1,0],block:=[[1,2,6],[3],[4,5],[7]]),
rec(cond:=[1,0,-1],block:=[[1,3,5],[2],[4,6],[7]]),
rec(cond:=[2,-1,-1],block:=[[1,4,7],[2],[3],[5],[6]]),
rec(cond:=[1,-2,1],block:=[[1],[2,5,7],[3],[4],[6]]),
rec(cond:=[1,1,-2],block:=[[1],[2],[3,6,7],[4],[5]])]

DisplayRouquierBlocks

DisplayRouquierBlocks(H)
Given a cyclotomic Hecke algebra H associated with W (for its construction, the user should refer to Chapter 82 of the GAP manual), this functions returns its Rouquier blocks using the characters' names.
gap> W:=ComplexReflectionGroup(4);;
gap> H:=Hecke(W,[[1,E(3)*x,E(3)^2*x^2]]);;
gap> DisplayRouquierBlocks(H);
[["phi{1,0}"],["phi{1,4}","phi{2,3}","phi{3,2}"],
["phi{1,8}"],["phi{2,5}"],[ "phi{2,1}"]]

RouquierBlocks

RouquierBlocks(H)
Given a cyclotomic Hecke algebra H associated with W this functions returns its Rouquier blocks using the characters' index in the list CharNames(W).
gap> W:=ComplexReflectionGroup(4);;
gap> H:=Hecke(W,[[1,E(3)*x,E(3)^2*x^2]]);;
gap> RouquierBlocks(H);
[ [ 1 ], [ 2, 5, 7 ], [ 3 ], [ 4 ], [ 6 ] ]



From now on, p will denote a prime number which divides the order of W.

DisplayAllpBlocks

DisplayAllpBlocks(W,p)
It displays all p-essential hyperplanes for W and the p-Rouquier blocks associated with each.
gap> W:=ComplexReflectionGroup(4);;
gap> DisplayAllpBlocks(W,3);
No essential hyperplane
[["phi{1,0}"],["phi{1,4}"],["phi{1,8}"],
["phi{2,5}"],["phi{2,3}"],["phi{2,1}"],["phi{3,2}"]]
c_1-c_2=0
[["phi{1,0}"],["phi{1,4}","phi{1,8}"],
["phi{2,5}"],["phi{2,3}","phi{2,1}"],["phi{3,2}"]]
c_0-c_1=0
[["phi{1,0}","phi{1,4}"],["phi{1,8}"],
["phi{2,5}","phi{2,3}"],["phi{2,1}"],["phi{3,2}"]]
c_0-c_2=0
[["phi{1,0}","phi{1,8}"],["phi{1,4}"],
["phi{2,5}","phi{2,1}"],["phi{2,3}"],["phi{3,2}"]]

AllpBlocks

AllpBlocks(W,p)
It displays the same data as DisplayAllpBlocks(W,p) in a way easy to work with: the p-essential hyperplanes are represented by the vectors cond (where cond:=[] means "No essential hyperplane") and the characters are defined by their indexes in the list CharNames(W)
gap> W:=ComplexReflectionGroup(4);;
gap> AllpBlocks(W,3);
[rec(cond:=[ ],block:=[[1],[2],[3],[4],[5],[6],[7]]),
rec(cond:=[0,1,-1],block:=[[1],[2,3],[4],[5,6],[7]]),
rec(cond:=[1,-1,0],block:=[[1,2],[3],[4,5],[6],[7]]),
rec(cond:=[1,0,-1],block:=[[1,3],[2],[4,6],[5],[7]])]

DisplaypRouquierBlocks

DisplaypRouquierBlocks(H,p)
Given a cyclotomic Hecke algebra H associated with W, this functions returns its p-Rouquier blocks using the characters' names.
gap> W:=ComplexReflectionGroup(4);;
gap> H:=Hecke(W,[[1,E(3)*x,E(3)^2*x^2]]);;
gap> DisplaypRouquierBlocks(H,2);
[["phi{1,0}"],["phi{1,4}","phi{2,3}","phi{3,2}"],
["phi{1,8}"],["phi{2,5}"],["phi{2,1}"]]
gap> DisplaypRouquierBlocks(H,3);
[["phi{1,0}"],["phi{1,4}"],["phi{1,8}"],
["phi{2,5}"],["phi{2,3}"],["phi{2,1}"],["phi{3,2}"]]

pRouquierBlocks

pRouquierBlocks(H,p)
Given a cyclotomic Hecke algebra H associated with W this functions returns its p-Rouquier blocks using the characters' index in the list CharNames(W).
gap> W:=ComplexReflectionGroup(4);;
gap> H:=Hecke(W,[[1,E(3)*x,E(3)^2*x^2]]);;
gap> pRouquierBlocks(H,2);
[ [ 1 ], [ 2, 5, 7 ], [ 3 ], [ 4 ], [ 6 ] ]
gap> pRouquierBlocks(H,3);
[ [ 1 ], [ 2 ], [ 3 ], [ 4 ], [ 5 ], [ 6 ], [ 7 ] ]

Remark:

For the group G_31, we are not sure whether the set
[ "phi{6,18}" , "phi{6,14}" , "phi{16,16}" ,
  "phi{24,14}", "phi{24,6}" , "phi{30,10}'", "phi{30,10}''",
  "phi{40,10}", "phi{40,14}", "phi{64,11}" , "phi{64,9}"  ]
is a 2-block associated with no essential hyperplane or union of 2-blocks.
Nevertheless, we are sure for its Rouquier blocks associated with no essential hyperplane.