15 if (name ==
'o') {Rome=RJ; ome_pzm=pzm_field;}
16 if (name ==
'e') {Reps=RJ; eps_pzm=pzm_field;}
17 if (name ==
'c') {Rchi=RJ; chi_pzm=pzm_field;}
18 if (name ==
'p') {Rphi=RJ; phi_pzm=pzm_field;}
37 for (
Int_t con=0; con<contractions; con++) {
39 if (con_type==
'c') { cp=L->
chi_pzm[Rchi-1]; Rchi--; }
40 else { cp=L->
phi_pzm[Rphi-1]; Rphi--; }
51 if ( con_type ==
'c' && ( (oe==1&&cp==-1) || (oe==-1&&cp==1) ) )
54 ( con_type ==
'p' && ( (oe==1&&cp==1) || (oe==-1&&cp==-1) ) ) ;
55 else if (oe==0&&cp==0 ) {
56 if (ocount) gam_s_pot++;
66 ome_pzm =
new Int_t[Rome];
68 eps_pzm =
new Int_t[Reps];
70 chi_pzm =
new Int_t[Rchi];
72 if (i < L->Rchi) chi_pzm[
i] = L->
chi_pzm[
i];
75 phi_pzm =
new Int_t[Rphi];
77 if (i < L->Rphi) phi_pzm[
i] = L->
phi_pzm[
i];
85 for (
Int_t con=0; con<ncon; con++) {
86 Int_t c=chi_pzm[Rchi-1];
99 if (Rome+Reps+Rchi+Rphi!=3) {
100 cerr <<
"TTensorTerm::LJContraction:"
101 <<
" Contraction ended with wrong number of indices!!" <<endl;
105 Int_t os=-100;
if (Rome==1) os=ome_pzm[0];
106 Int_t es=-100;
if (Reps==1) es=eps_pzm[0];
107 Int_t cs=-100;
if (Rchi==1) cs=chi_pzm[0];
108 Int_t ps=-100;
if (Rphi==1) ps=phi_pzm[0];
110 Reps--; Rchi--; Rphi--;
111 if (es== 1 && cs==-1 && ps== 0 ) ;
112 else if (es==-1 && cs== 1 && ps== 0 ) prefac.FlipSign();
113 else if (es== 1 && cs== 0 && ps== 1 ) ;
114 else if (es==-1 && cs== 0 && ps==-1 ) prefac.FlipSign();
115 else if (es== 0 && cs== 1 && ps== 1 ){prefac.FlipSign();gam_sig_pot++;}
116 else if (es== 0 && cs==-1 && ps==-1 ){ gam_sig_pot++;}
117 else { prefac=
TFracNum(0,0,0,0,0);
return 1;}
119 else if ( Reps==0 ) {
120 Rome--; Rchi--; Rphi--;
121 if (os== 1 && cs==-1 && ps== 0 ) ;
122 else if (os==-1 && cs== 1 && ps== 0 ) prefac.FlipSign();
123 else if (os== 1 && cs== 0 && ps== 1 ) ;
124 else if (os==-1 && cs== 0 && ps==-1 ) prefac.FlipSign();
125 else if (os== 0 && cs== 1 && ps== 1 ){prefac.FlipSign();gam_s_pot++;}
126 else if (os== 0 && cs==-1 && ps==-1 ){ gam_s_pot++;}
127 else { prefac=
TFracNum(0,0,0,0,0);
return 1;}
129 else if ( Rchi==0 ) {
130 Rome--; Reps--; Rphi--;
131 if (os== 1 && es==-1 && ps== 0 ) ;
132 else if (os==-1 && es== 1 && ps== 0 ) prefac.FlipSign();
133 else if (os== 1 && es== 0 && ps== 1 ){ gam_sig_pot++;}
134 else if (os==-1 && es== 0 && ps==-1 ){prefac.FlipSign();gam_sig_pot++;}
135 else if (os== 0 && es== 1 && ps== 1 ){prefac.FlipSign();gam_s_pot++;}
136 else if (os== 0 && es==-1 && ps==-1 ){ gam_s_pot++;}
137 else { prefac=
TFracNum(0,0,0,0,0);
return 1;}
139 else if ( Rphi==0 ) {
140 Rome--; Reps--; Rchi--;
141 if (os== 1 && es==-1 && cs== 0 ) ;
142 else if (os==-1 && es== 1 && cs== 0 ) prefac.FlipSign();
143 else if (os== 1 && es== 0 && cs==-1 ){prefac.FlipSign();gam_sig_pot++;}
144 else if (os==-1 && es== 0 && cs== 1 ){ gam_sig_pot++;}
145 else if (os== 0 && es== 1 && cs==-1 ){ gam_s_pot++;}
146 else if (os== 0 && es==-1 && cs== 1 ){prefac.FlipSign();gam_s_pot++;}
147 else { prefac=
TFracNum(0,0,0,0,0);
return 1;}
154 if (Rome!=0 || Reps!=0 || Rchi!=0 || Rphi!=0 ) trouble=1;
157 cerr <<
"TTensorTerm::LJContraction: "
158 <<
"Invalid espilon-contraction occurred "<< trouble << endl;
168 prefac = prefac * *prefac_;
171 if (name ==
'o') {
if (Rome) Merr=1;
else {Rome=RJ; ome_pzm=pzm_field;}}
172 if (name ==
'e') {
if (Reps) Merr=1;
else {Reps=RJ; eps_pzm=pzm_field;}}
173 if (name ==
'c') {
if (Rchi) Merr=1;
else {Rchi=RJ; chi_pzm=pzm_field;}}
174 if (name ==
'p') {
if (Rphi) Merr=1;
else {Rphi=RJ; phi_pzm=pzm_field;}}
176 cerr <<
"TTensorTerm::Multiply: Each type can be multiplied only once!"
188 Int_t o = ome_pzm[Rome-1];
189 Int_t e = eps_pzm[Reps-1];
190 if ( (o==1&&e==-1) || (o==-1&&e==1) ) {
207 if (Rome==other->
Rome &&
218 if (!SameStructure(other)) {
219 cerr <<
"NO NO NO these terms cannot be added!" << endl;
234 if (flag==
's') cout << prefac.FracStringSqrt()<<
" ";
235 else cout << prefac.FracString()<<
" ";
239 if (ome_pzm[
i]== 1) cout <<
"+";
240 if (ome_pzm[
i]== 0) cout <<
"0";
241 if (ome_pzm[
i]==-1) cout <<
"-";
248 if (eps_pzm[
i]== 1) cout <<
"+";
249 if (eps_pzm[
i]== 0) cout <<
"0";
250 if (eps_pzm[
i]==-1) cout <<
"-";
257 if (chi_pzm[
i]== 1) cout <<
"+";
258 if (chi_pzm[
i]== 0) cout <<
"0";
259 if (chi_pzm[
i]==-1) cout <<
"-";
266 if (phi_pzm[
i]== 1) cout <<
"+";
267 if (phi_pzm[
i]== 0) cout <<
"0";
268 if (phi_pzm[
i]==-1) cout <<
"-";
273 if (gam_s_pot==1) cout <<
" gs";
274 else cout <<
" gs^" << gam_s_pot;
277 if (gam_sig_pot==1) cout <<
" gsig";
278 else cout <<
" gsig^" << gam_sig_pot;
288 terms[
i].Print(flag);
289 if (
i<Nterms-1) cout <<
" ";
309 Int_t non_zero_terms=0;
312 val[
i] = terms[
i].SpinInnerContraction(cPsiInt);
313 if (val[
i]!=0) non_zero_terms++;
315 if (non_zero_terms<Nterms) {
325 Nterms=non_zero_terms;
339 contr, co, ce, con_type);
350 for (
Int_t i=0;
i<Nterms;
i++) terms[
i].LJContraction(cChiPhi, even);
357 if (terms[
i].SameStructure(&(tls->
terms[j]))) {
358 if ( (tls->
terms[j]).AddTwoTerms(&(terms[
i])) ) {