static void writeEvent(double *x, double w) { int i,icc; double GG,qF1,qF2,qR,qS,x1,x2; REAL pvectR[4*maxNp],cb_coeff_[buffSize],*cb_coeff; double pvect[4*maxNp]; double factor_0; int cb_pow=cb_int[Nsub-1].pow; int nc=cb_int[Nsub-1].nC; mkmom(x, &factor_0,&x1,&x2,pvectR); for(i=0;i<4*(nin_int+nout_int);i++) pvect[i]=pvectR[i]; Scale(Nsub,pvect,&qR,&qF1,&qF2,&qS); if(cb_pow) { double sum=0; int err; if(buffSize<cb_pow) cb_coeff=cb_coeff_; else cb_coeff=malloc(sizeof(REAL)*buffSize); GG=sqrt(4*M_PI*alpha_2(qR)); sqme_int(Nsub,GG,pvectR,cb_coeff,&err); for(i=0;i<cb_pow;i++) sum+=fabs(cb_coeff[i]); if(nPROCSS) pthread_mutex_lock(&drandXX_key); sum*=drandXX(); if(nPROCSS) pthread_mutex_unlock(&drandXX_key); for(i=0;i<cb_pow;i++) { sum-=fabs(cb_coeff[i]); if(sum<=0) break; } if(i==cb_pow) i--; icc=i; if(cb_coeff!=cb_coeff_) free(cb_coeff); } if(nPROCSS)pthread_mutex_lock(&wrt_key); fprintf(events_,"%12.3E",w); if(nin_int==2) fprintf(events_," %17.10E %17.10E",pvect[3],pvect[7]); for(i=0;i<nout_int;i++) fprintf(events_," %17.10E %17.10E %17.10E", pvect[4*(i+nin_int)+1],pvect[4*(i+nin_int)+2],pvect[4*(i+nin_int)+3]); fprintf(events_,"| %.3E %.3E ", qS,alpha_2(qR)); if(cb_pow) { int j; fprintf(events_," "); for(j=0;j<nc;j++) { int *offset=cb_int[Nsub-1].chains +4*nc*icc+4*j; fprintf(events_,"(%d %d %d %d)",offset[0],offset[1],offset[2],offset[3]); } } fprintf(events_,"\n"); // fflush(events_); if(nPROCSS)pthread_mutex_unlock(&wrt_key); }
static double func_2(double *x, double wgt,double *pout) { double ret_val=0.; int err=0,nd,i; double factor_0; double xx0=x[0],xx1=x[1],x1,x2; double GG,qF,qR; nCall++; REAL pvectR[200]; double pvect[40]; /* get momenta */ mkmom(x, &factor_0,pvectR); if(sf_num[0]){x1=x[0]; x[0]=xx0;} if(sf_num[1]){x2=x[1]; x[1]=xx1;} nd=0; if (!factor_0) goto exi; nd=4*(nin_int+nout_int); for(i=0;i<nd;i++) pvect[i]=pvectR[i]; factor_0 *= calcCutFactor(pvect); if(nin_int>1) factor_0 *= usrFF(nin_int, nout_int,pvect,p_names,p_codes); if (!factor_0) goto exi; Scale(pvect,&qF,&qR); /* ** structure function multiplication */ if (nin_int == 2) { if(sf_num[0]) { factor_0 *= strfun_(1, x1,qF); if(factor_0==0.) {/*printf("|x1=%.2f|",x1);*/ goto exi;}} if(sf_num[1]) { factor_0 *= strfun_(2, x2,qF); if(factor_0==0.) {/*printf("|x2=%.2f|",x2);*/ goto exi;}} } if (!factor_0) { printf("strf"); goto exi;} /* ** call for 'running strong coupling constant' */ GG=sqrt(4*M_PI*alpha_2(qR)); ret_val = factor_0 * sqme_int(Nsub,GG,pvectR,&err); if(err) badPoints+= (ret_val>0 ? ret_val*wgt : - ret_val*wgt); if(ret_val<0) negPoints+=ret_val*wgt; exi: if(pout)for(i=0;i<nd;i++) pout[i]=pvect[i]; return ret_val; } /* func_ */
static double func_(double *x, double wgt) { double ret_val=0.; int err=0,nd,i; double factor_0; double x1,x2; double GG,qF1,qF2,qR,qS; REAL pvectR[100]; double pvect[100]; /* get momenta */ mkmom(x, &factor_0,&x1,&x2,pvectR); if (!factor_0) goto exi; nd=4*(nin_int+nout_int); for(i=0;i<nd;i++) pvect[i]=pvectR[i]; factor_0 *= calcCutFactor(pvect)*usrFF(nin_int,nout_int,pvect,p_names,p_codes); if (!factor_0) goto exi; Scale(Nsub,pvect,&qR,&qF1,&qF2,&qS); /* ** structure function multiplication */ if (nin_int == 2) { if(sf_num[0]) { factor_0 *= strfun_(1, x1,qF1); if(factor_0==0.) goto exi;} if(sf_num[1]) { factor_0 *= strfun_(2, x2,qF2); if(factor_0==0.) goto exi;} } if (!factor_0) { goto exi;} /* ** call for 'running strong coupling constant' */ GG=sqrt(4*M_PI*alpha_2(qR)); ret_val = factor_0 * sqme_int(Nsub,GG,pvectR,NULL,&err); if(err) badPoints+= (ret_val>0 ? ret_val*wgt : - ret_val*wgt); if(ret_val<0) negPoints+=ret_val*wgt; exi: if(hFill) { if(nPROCSS) pthread_mutex_lock(&hist_key); fillHists(ret_val*wgt,pvect); if(nPROCSS) pthread_mutex_unlock(&hist_key); } return ret_val; } /* func_ */