To list possible S matrices for a metaclass, run the below code once B,W and V matrices are defined for that metaclass.

The below code works by permutating eigenvectors for eigenvalues +1 and -1 in W.

W=W/.{eps1->-1,eps2->-1,eps3->-1};
For[i=1,i≤6, i++,

For[j=1,j≤6, j++,

tmp=Eigenvectors[W];
kk1=Permutations[{1,2,3}][[i]];
kk2=Permutations[{4,5,6}][[j]];

tmpP={tmp[[kk1[[1]]]],tmp[[kk1[[2]]]],tmp[[kk1[[3]]]],tmp[[kk2[[1]]]],tmp[[kk2[[2]]]],tmp[[kk2[[3]]]]};
dd=tmpP.W.Transpose[tmpP];
scale=DiagonalMatrix[Table[Sqrt[Abs[dd[[i]][[i]]]],{i,1,6}]];
scale=Inverse[scale];
S=Sqrt[2]Inverse[Eigenvectors[B]].scale.tmpP;
res=Simplify[S.V.Inverse[S]];


If[Count[Flatten[res],0]≥10,
Print[" "];
Print[" "];
Print["Permutation: "<>ToString[i]<>ToString[j]];
Print["Zeroes: "<> ToString[Count[Flatten[res],0]]];
Print[S//MatrixForm];
Print[Transpose[S].B.S==W];
(*Print[res//MatrixForm];*)
Print[Petrov[res]];
];
]
]