* * $Id: lsigmx.F,v 1.1.1.1 1996/03/08 17:40:14 mclareni Exp $ * * $Log: lsigmx.F,v $ * Revision 1.1.1.1 1996/03/08 17:40:14 mclareni * Lepto63 * * C ********************************************************************** SUBROUTINE LSIGMX(NPAR,DERIV,DIFSIG,XF,IFLAG) C...Calculates the negative of the differential cross-section. C...In the generation procedure the maximum of the differential cross- C...section is needed for weighting purposes. This maximum is found by C...minimizing the negative differential cross-section using the MINUIT C...routines which are then calling this routine. C...More precisly, only the part of the cross-section formula which is C...needed for the weighting procedure is included here. COMMON /LEPTOU/ CUT(14),LST(40),PARL(30),X,Y,W2,Q2,U COMMON /LINTER/ PARI(40),EWQC(2,2,8),QC(8),ZL(2,4),ZQ(2,8),PQ(17) COMMON /LINTRL/ PSAVE(3,4,5),KSAVE(4),XMIN,XMAX,YMIN,YMAX, &Q2MIN,Q2MAX,W2MIN,W2MAX,ILEP,INU,IG,IZ COMMON /LOPTIM/ OPTX(4),OPTY(4),OPTQ2(4),OPTW2(4),COMFAC COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5) DIMENSION DERIV(30),XF(30) DATA NCALLS/0/ DUMMY=NPAR+DERIV(1) IF(IFLAG.EQ.1) NCALLS=0 IF(IFLAG.EQ.2) WRITE(6,1000) DIFSIG=1.E+10 NCALLS=NCALLS+1 X=XF(1) IF(X.LT.XMIN.OR.X.GT.XMAX) RETURN S=PARL(21) PM2=PSAVE(3,2,5)**2 IF(LST(31).EQ.1) THEN Q2=XF(2) Y=Q2/(PARL(21)*X) W2=(1.-X)*Y*PARL(21)+PM2 ELSEIF(LST(31).EQ.2) THEN Y=XF(2) Q2=Y*X*PARL(21) W2=(1.-X)*Y*PARL(21)+PM2 ELSEIF(LST(31).EQ.3) THEN W2=XF(2) Y=(W2-PM2)/((1.-X)*PARL(21)) Q2=X*Y*PARL(21) ENDIF Q2LOW=MAX(Q2MIN,X*YMIN*S,(W2MIN-PM2)*X/(1.-X)) Q2UPP=MIN(Q2MAX,X*YMAX*S,(W2MAX-PM2)*X/(1.-X)) YLOW=MAX(YMIN,Q2MIN/(S*X),(W2MIN-PM2)/(S*(1.-X))) YUPP=MIN(YMAX,Q2MAX/(S*X),(W2MAX-PM2)/(S*(1.-X))) W2LOW=MAX(W2MIN,(1.-X)*YMIN*S+PM2,Q2MIN*(1.-X)/X+PM2) W2UPP=MIN(W2MAX,(1.-X)*YMAX*S+PM2,Q2MAX*(1.-X)/X+PM2) IF(Q2.LT.Q2LOW.OR.Q2.GT.Q2UPP) RETURN IF(Y.LT.YLOW.OR.Y.GT.YUPP) RETURN IF(W2.LT.W2LOW.OR.W2.GT.W2UPP) RETURN LST2=LST(2) LST(2)=-1 CALL LEPTO LST(2)=LST2 IF(LST(21).NE.0) RETURN DIFSIG=-PQ(17)*COMFAC IF(LST(3).GE.4.AND.IFLAG.EQ.3) &WRITE(6,1100) NCALLS,DIFSIG,X,Y,Q2,W2 RETURN 1000 FORMAT(' Warning: IFLAG = 2 in call to LSIGMX, which does not ' &,'calculate derivatives.') 1100 FORMAT(/,5X,'Terminating entry in LSIGMX after ',I5,' calls.',/, &5X,'Best estimate of minimum found to be ',E12.4,/, &5X,'located at x, y, Q**2, W**2 = ',4G10.3,/) END