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)