537   if(twoJ1 < 0 || twoJ2 < 0 || twoJ3 < 0 || 
 
  538      twoJ4 < 0 || twoJ5 < 0 || twoJ6 < 0 ||
 
  539      twoJ7 < 0 || twoJ8 < 0 || twoJ9 < 0) 
return 0;
 
  542     if(twoJ3 != twoJ6) 
return 0;
 
  543     if(twoJ7 != twoJ8) 
return 0;
 
  545     if(sixJ == 0) 
return 0;
 
  546     if((twoJ2+twoJ3+twoJ4+twoJ7)/2 % 2) sixJ = -sixJ;
 
  547     return sixJ/sqrt((twoJ3+1)*(twoJ7+1));
 
  549   if(twoJ1 == 0) 
return Wigner9J(twoJ9, twoJ6, twoJ3, twoJ8, twoJ5, twoJ2, twoJ7, twoJ4, twoJ1);
 
  550   if(twoJ2 == 0) 
return Wigner9J(twoJ7, twoJ9, twoJ8, twoJ4, twoJ6, twoJ5, twoJ1, twoJ3, twoJ2);
 
  551   if(twoJ4 == 0) 
return Wigner9J(twoJ3, twoJ2, twoJ1, twoJ9, twoJ8, twoJ7, twoJ6, twoJ5, twoJ4);
 
  552   if(twoJ5 == 0) 
return Wigner9J(twoJ1, twoJ3, twoJ2, twoJ7, twoJ9, twoJ8, twoJ4, twoJ6, twoJ5);
 
  553   G4int twoS = twoJ1+twoJ2+twoJ3+twoJ4+twoJ5+twoJ6+twoJ7+twoJ8+twoJ9;
 
  554   if(twoS % 2) 
return 0;
 
  556   if(twoJ3 == 0) 
return sign*
Wigner9J(twoJ7, twoJ8, twoJ9, twoJ4, twoJ5, twoJ6, twoJ1, twoJ2, twoJ3);
 
  557   if(twoJ6 == 0) 
return sign*
Wigner9J(twoJ1, twoJ2, twoJ3, twoJ7, twoJ8, twoJ9, twoJ4, twoJ5, twoJ6);
 
  558   if(twoJ7 == 0) 
return sign*
Wigner9J(twoJ3, twoJ2, twoJ1, twoJ6, twoJ5, twoJ4, twoJ9, twoJ8, twoJ7);
 
  559   if(twoJ8 == 0) 
return sign*
Wigner9J(twoJ1, twoJ3, twoJ2, twoJ4, twoJ6, twoJ5, twoJ7, twoJ9, twoJ8);
 
  563   i =  twoJ1+twoJ2-twoJ3; 
if(i<0 || i%2) 
return 0;
 
  564   i =  twoJ1-twoJ2+twoJ3; 
if(i<0 || i%2) 
return 0;
 
  565   i = -twoJ1+twoJ2+twoJ3; 
if(i<0 || i%2) 
return 0;
 
  566   i =  twoJ4+twoJ5-twoJ6; 
if(i<0 || i%2) 
return 0;
 
  567   i =  twoJ4-twoJ5+twoJ6; 
if(i<0 || i%2) 
return 0;
 
  568   i = -twoJ4+twoJ5+twoJ6; 
if(i<0 || i%2) 
return 0;
 
  569   i =  twoJ7+twoJ8-twoJ9; 
if(i<0 || i%2) 
return 0;
 
  570   i =  twoJ7-twoJ8+twoJ9; 
if(i<0 || i%2) 
return 0;
 
  571   i = -twoJ7+twoJ8+twoJ9; 
if(i<0 || i%2) 
return 0;
 
  572   i =  twoJ1+twoJ4-twoJ7; 
if(i<0 || i%2) 
return 0;
 
  573   i =  twoJ1-twoJ4+twoJ7; 
if(i<0 || i%2) 
return 0;
 
  574   i = -twoJ1+twoJ4+twoJ7; 
if(i<0 || i%2) 
return 0;
 
  575   i =  twoJ2+twoJ5-twoJ8; 
if(i<0 || i%2) 
return 0;
 
  576   i =  twoJ2-twoJ5+twoJ8; 
if(i<0 || i%2) 
return 0;
 
  577   i = -twoJ2+twoJ5+twoJ8; 
if(i<0 || i%2) 
return 0;
 
  578   i =  twoJ3+twoJ6-twoJ9; 
if(i<0 || i%2) 
return 0;
 
  579   i =  twoJ3-twoJ6+twoJ9; 
if(i<0 || i%2) 
return 0;
 
  580   i = -twoJ3+twoJ6+twoJ9; 
if(i<0 || i%2) 
return 0;
 
  584   G4int twoKMax = twoJ1+twoJ9;
 
  585   if(twoJ4+twoJ8 < twoKMax) twoKMax = twoJ4+twoJ8;
 
  586   if(twoJ2+twoJ6 < twoKMax) twoKMax = twoJ2+twoJ6;
 
  587   G4int twoKMin = twoJ1-twoJ9;
 
  588   if(twoJ9-twoJ1 > twoKMin) twoKMin = twoJ9-twoJ1;
 
  589   if(twoJ4-twoJ8 > twoKMin) twoKMin = twoJ4-twoJ8;
 
  590   if(twoJ8-twoJ4 > twoKMin) twoKMin = twoJ8-twoJ4;
 
  591   if(twoJ2-twoJ6 > twoKMin) twoKMin = twoJ2-twoJ6;
 
  592   if(twoJ6-twoJ2 > twoKMin) twoKMin = twoJ6-twoJ2;
 
  593   if(twoKMin > twoKMax) 
return 0;
 
  596   for(
G4int twoK = twoKMin; twoK <= twoKMax; twoK += 2) {
 
  598     if(value == 0) 
continue;
 
  599     value *= 
Wigner6J(twoJ2, twoJ5, twoJ8, twoJ4, twoK, twoJ6);
 
  600     if(value == 0) 
continue;
 
  601     value *= 
Wigner6J(twoJ3, twoJ6, twoJ9, twoK, twoJ1, twoJ2);
 
  602     if(value == 0) 
continue;
 
  603     if(twoK % 2) value = -
value;
 
const XML_Char int const XML_Char * value
 
static G4double Wigner9J(G4int twoJ1, G4int twoJ2, G4int twoJ3, G4int twoJ4, G4int twoJ5, G4int twoJ6, G4int twoJ7, G4int twoJ8, G4int twoJ9)
 
static G4double Wigner6J(G4int twoJ1, G4int twoJ2, G4int twoJ3, G4int twoJ4, G4int twoJ5, G4int twoJ6)