45 model_name=
"PARTWAVE";
67 <<_nA<<
","<<_nB<<
","<<_nC<<endl;
77 <<_JA2<<
","<<_JB2<<
","<<_JC2<<endl;
82 int* _lambdaA2=
new int[_nA];
83 int* _lambdaB2=
new int[_nB];
84 int* _lambdaC2=
new int[_nC];
88 for(ib=0;ib<_nB;ib++){
96 fillHelicity(_lambdaA2,_nA,_JA2);
97 fillHelicity(_lambdaB2,_nB,_JB2);
98 fillHelicity(_lambdaC2,_nC,_JC2);
101 report(
INFO,
"EvtGen")<<
"Helicity states of particle A:"<<endl;
106 report(
INFO,
"EvtGen")<<
"Helicity states of particle B:"<<endl;
111 report(
INFO,
"EvtGen")<<
"Helicity states of particle C:"<<endl;
116 report(
INFO,
"EvtGen")<<
"Will now figure out the valid (M_LS) states:"<<endl;
120 int Lmin=std::max(_JA2-_JB2-_JC2,std::max(_JB2-_JA2-_JC2,_JC2-_JA2-_JB2));
123 int Lmax=_JA2+_JB2+_JC2;
127 int _nPartialWaveAmp=0;
132 for (L=Lmin;L<=Lmax;L+=2){
133 int Smin=
abs(L-_JA2);
134 if (Smin<
abs(_JB2-_JC2)) Smin=
abs(_JB2-_JC2);
136 if (Smax>
abs(_JB2+_JC2)) Smax=
abs(_JB2+_JC2);
138 for (S=Smin;S<=Smax;S+=2){
139 _nL[_nPartialWaveAmp]=L;
140 _nS[_nPartialWaveAmp]=S;
144 report(
INFO,
"EvtGen")<<
"M["<<L<<
"]["<<S<<
"]"<<endl;
155 for(i=0;i<_nPartialWaveAmp;i++){
159 report(
INFO,
"EvtGen")<<
"M["<<_nL[i]<<
"]["<<_nS[i]<<
"]="<<_M[i]<<endl;
167 for(ib=0;ib<_nB;ib++){
168 for(ic=0;ic<_nC;ic++){
170 if (
abs(_lambdaB2[ib]-_lambdaC2[ic])<=_JA2){
171 for(i=0;i<_nPartialWaveAmp;i++){
174 int lambda2=_lambdaB2[ib];
175 int lambda3=_lambdaC2[ic];
179 int m1=lambda2-lambda3;
184 report(
INFO,
"EvtGen") <<
"s2,lambda2:"<<s2<<
" "<<lambda2<<endl;
187 double fkwTmp = (L+1.0)/(s1+1.0);
192 *c1.
coef(S,m1,s2,s3,lambda2,-lambda3)
193 *c2.
coef(s1,m1,L,S,0,m1)*_M[i];
199 report(
INFO,
"EvtGen")<<
"_HBC["<<ib<<
"]["<<ic<<
"]="<<_HBC[ib][ic]<<endl;
216 double maxprob=_evalHelAmp->
probMax();
219 report(
INFO,
"EvtGen")<<
"Calculated probmax"<<maxprob<<endl;
240void EvtPartWave::fillHelicity(
int* lambda2,
int n,
int J2){
EvtComplex exp(const EvtComplex &c)
ostream & report(Severity severity, const char *facility)
double coef(int J, int M, int j1, int j2, int m1, int m2)
void setProbMax(double prbmx)
void checkNDaug(int d1, int d2=-1)
void checkNArg(int a1, int a2=-1, int a3=-1, int a4=-1)
void evalAmp(EvtParticle *p, EvtAmp &)
static EvtSpinType::spintype getSpinType(EvtId i)
void getName(std::string &name)
void decay(EvtParticle *p)
double initializePhaseSpace(int numdaughter, EvtId *daughters, double poleSize=-1., int whichTwo1=0, int whichTwo2=1)
static int getSpin2(spintype stype)
static int getSpinStates(spintype stype)