21 mi =
new Int_t[max_pzm*J];
26 for (
Int_t pzm=0; pzm<max_pzm; pzm++) {
30 for (
Int_t pzm=0; pzm<max_pzm; pzm++) {
44 for (
Int_t MM=J; MM>=-J; MM--) {
46 for (
Int_t pzm=max_pzm-1; pzm>=0; pzm--) {
47 if ( ((type==
's' || type==
'c') &&
M[pzm]==MM) ||
48 (type==
'l' &&
M[pzm]==MM && MM==0) ) {
52 if (mi[J*pzm+
i]== 1) cout <<
"+";
53 if (mi[J*pzm+
i]== 0) cout <<
"0";
54 if (mi[J*pzm+
i]==-1) cout <<
"-";
56 if (mi[J*pzm+
i]== 0) m0++;
58 if (type==
's' || type==
'c')
64 << coeff[pzm].FracString()
65 <<
") (eq. 4.1) ["<<pzm<<
"]" <<endl;
77 for (
Int_t pzm=max_pzm-1; pzm>=0; pzm--) {
78 if (
M[pzm]==delta ) {
80 for (
Int_t i=0;
i<J;
i++) pzm_field[
i] = mi[J*pzm+
i];
82 if ( !(coeff[pzm]==ZERO) )
93 if ( !(type==
's' && E->
type==
's') ) {
94 cerr<<
"GetSpinCoupledTensorSum only for spin-type wave functions!"<<endl;
102 Int_t twoSmin=twoS1-twoS2;
103 if (twoSmin<0) twoSmin=-twoSmin;
105 if (twoS<twoSmin || twoS>twoS1+twoS2){
106 cerr<<
"GetSpinCoupledTensorSum: no coupling "
107 << J <<
" + " << E->
J <<
" -> "<< S << endl;
114 cout <<
"Clebsch-Gordans calculated for "
115 <<twoS<<
","<<twoS1<<
","<<twoS2<<
": "<< S1S2 << endl;
121 for (
Int_t MM1=J; MM1>=-J; MM1--) {
122 for (
Int_t pzm1=max_pzm-1; pzm1>=0; pzm1--) {
123 if (
M[pzm1]==MM1 && !(coeff[pzm1]==ZERO) ) {
125 for (
Int_t MM2=E->
J; MM2>=-J; MM2--) {
127 if ( E->
M[pzm2]==MM2 && !(E->
coeff[pzm2]==ZERO) ) {
129 if (MM1+MM2==delta) {
133 pzm1_field[
i] = mi[J*pzm1+
i];
137 pzm2_field[
i] = E->
mi[E->
J*pzm2+
i];
140 new TTensorTerm(
'o', J, pzm1_field, &(coeff[pzm1]));
143 coeff2_CG = coeff2_CG * E->
coeff[pzm2];
145 newterm->Multiply(
'e', E->
J, pzm2_field, &coeff2_CG);
171 for (
Int_t pzm=0; pzm<max_pzm; pzm++) {
175 for (
Int_t jj=1; jj<J; jj++) {
176 Int_t mj=mi[J*pzm+jj];
179 cout << mj <<
": * CG["<<jj-1<<
"]["
180 << (mj+1)*(2*jj+1) + jj+m
181 <<
"]:"<< J1J[jj-1][ (mj+1)*(2*jj+1) + jj+m ].
Dval()
184 coeffCG[pzm]=coeffCG[pzm] * J1J[jj-1][ (mj+1)*(2*jj+1) + jj+m ];
189 cout <<
"done."<<endl;
193 for (
Int_t MM=J; MM>=0; MM--) {
194 cout <<
"Phi("<<J<<
","<<MM<<
")="<<endl;
195 for (
Int_t pzm=max_pzm-1; pzm>=0; pzm--) {
200 if (mi[J*pzm+
i]== 1) cout <<
"+";
201 if (mi[J*pzm+
i]== 0) {cout <<
"0"; m0++;}
202 if (mi[J*pzm+
i]==-1) cout <<
"-";
204 cout <<
") [ (4.1): "<< coeff[pzm].FracString()<<
" ]" <<endl;