* * $Id: evol.F,v 1.1.1.1 1996/01/11 14:14:36 mclareni Exp $ * * $Log: evol.F,v $ * Revision 1.1.1.1 1996/01/11 14:14:36 mclareni * Cojets * * #include "cojets/pilot.h" SUBROUTINE EVOL(NBK,YQSQ) C ************************* C-- GENERATES INITIAL LLA CASCADES C #if defined(CERNLIB_SINGLE) IMPLICIT REAL (A-H,O-Z) #endif #if defined(CERNLIB_DOUBLE) IMPLICIT DOUBLE PRECISION (A-H,O-Z) #endif #include "cojets/alqgen.inc" #include "cojets/cuevol.inc" #include "cojets/event.inc" #include "cojets/itapes.inc" #include "cojets/keybre.inc" #include "cojets/maxn.inc" #include "cojets/nevol.inc" #include "cojets/parq.inc" #include "cojets/qcds.inc" #include "cojets/thrfla.inc" #include "cojets/transl.inc" INTEGER NCUE(2) DATA ICALL/0/ C IF(ICALL.GT.0) GO TO 10 ICALL=1 IBOOK=1 IBOOK1=1 IBOOK2=1 10 CONTINUE C IF(IBACK(IBEAM).EQ.1) GO TO 462 NEVOL=NEVOL+1 C C-- RESET NCUE(IBEAM)=0 C C-- SETTING PARAMETERS OF INITIAL LEG IF(KEYBRE.GE.3) GO TO 100 Y=PARACT(NBK,4,IBEAM) IF(Y.GT.YQSQ) GO TO 100 IFLA=PARACT(NBK,1,IBEAM) IBOOK=PARACT(NBK,2,IBEAM) QSQ=EXP(EXP(Y)*ALQZM+ALLAM2) XM=PARACT(NBK,3,IBEAM) X=PARACT(NBK,5,IBEAM) PX=PARACT(NBK,6,IBEAM) PY=PARACT(NBK,7,IBEAM) YVI=PARACT(NBK,8,IBEAM) YVF=PARACT(NBK,9,IBEAM) IF(JBOOK.EQ.2) GO TO 200 ICANC(IBEAM)=ICANC(IBEAM)+1 NBKCNC(ICANC(IBEAM),IBEAM)=NBK GO TO 200 C 100 IBACK(IBEAM)=1 RETURN C C-- BRANCHING LOOP C ============== C C C-- GENERATE Z AND Q.N. OF SECONDARIES C ---------------------------------- 200 CONTINUE IF(IFLA.EQ.LGLUS) GO TO 210 C-- QUARK BRANCHING 201 CALL ZGENS(1,Z,IFLAQ) Z1=1.-Z IFLA1=IFLA IFLA2=LGLUS GO TO 300 C C-- GLUON BRANCHING, GENERATE DECAY CHANNEL 210 CONTINUE IF(CJRN(0.).GT.PROGL) GO TO 230 C C-- GLUON BRANCHES INTO TWO GLUONS CALL ZGENS(2,Z,IFLAQ) Z1=1.-Z IFLA1=LGLUS IFLA2=LGLUS GO TO 300 C C-- GLUON BRANCHES INTO Q-QB 230 CONTINUE CALL ZGENS(3,Z,IFLAQ) Z1=1.-Z IFLA1=IFLAQ IFLA2=-IFLAQ C C-- GENERATE PT OF SECONDARIES C -------------------------- 300 CONTINUE X1=X*Z X2=X*Z1 PTR=SQRT(Z*Z1*QSQ) IF(KEYBRE.GE.1) PTR=0. PHI=PI2*CJRN(0) PXR=PTR*COS(PHI) PYR=PTR*SIN(PHI) PX1=PXR+Z*PX PY1=PYR+Z*PY PX2=-PXR+Z1*PX PY2=-PYR+Z1*PY C C-- GENERATE MASSES OF SECONDARIES C ------------------------------ S=ECM**2 IF(X1.LT.XMIN) GO TO 301 CALL Q2GEN(IFLA1,Y,Y1,QSQ1) YVI1=YVI YVF1=YVF C-- KINEMATIC CONSTRAINT FOR 1ST HEAVY QUARK IF(IFLA1.NE.-IFLA2) GO TO 302 IF(IFLA1.LT.4) GO TO 302 QSQS=QSQ1 IF(Y1.GT.YQSQ) QSQS=EXP(EXP(YQSQ)*ALQZM+ALLAM2) IF(Z1*(QSQS/Z-QSQ).GT.AM2HEV(IFLA1)) GO TO 302 IF(JBOOK.EQ.2) GO TO 305 QSQF=QSQ1 IF(YVF.LT.Y1) QSQF=EXP(EXP(YVF)*ALQZM+ALLAM2) IF(Z1*(QSQF/Z-QSQ).GT.AM2HEV(IFLA1)) GO TO 303 305 YVF1=-100. YVFG=YVF YVIG=YVI GO TO 304 303 YVC=LOG((LOG(Z*(AM2HEV(IFLA1)/Z1+QSQ))-ALLAM2)/ALQZM) YVI1=MAX(YVI,YVC) YVFG=MIN(YVF,YVC) YVIG=YVI 304 IF(CJRN(QSQS).GT..5) GO TO 302 NCUE(IBEAM)=NCUE(IBEAM)+1 MNCUEV=MAX(MNCUEV,NCUE(IBEAM)) NC=NCUE(IBEAM) IF(NC.GE.MXCUEV) GO TO 500 CALL Q2GEN(IFLA,Y,YS,QSQS) CUEV(NC,1,IBEAM)=IFLA CUEV(NC,2,IBEAM)=YS CUEV(NC,3,IBEAM)=X CUEV(NC,4,IBEAM)=IBOOK CUEV(NC,5,IBEAM)=PX CUEV(NC,6,IBEAM)=PY CUEV(NC,7,IBEAM)=QSQS CUEV(NC,8,IBEAM)=XM CUEV(NC,9,IBEAM)=YVIG CUEV(NC,10,IBEAM)=YVFG 302 CONTINUE C PX1S=PX1 PY1S=PY1 TMSQ1=PX1S**2+PY1S**2 XM1=TMSQ1/(S*X1) IF(JBOOK.EQ.1) GO TO 301 QSQS1=QSQ1 IF(Y1.GT.YQSQ) QSQS1=EXP(EXP(YQSQ)*ALQZM+ALLAM2) TPSQ1=Z1*(QSQS1/Z-QSQ) PX1T=PX2 PY1T=PY2 301 CONTINUE IF(X2.LT.XMIN) GO TO 400 CALL Q2GEN(IFLA2,Y,Y2,QSQ2) YVI2=YVI YVF2=YVF C-- KINEMATIC CONSTRAINT FOR 2ND HEAVY QUARK IF(IFLA1.NE.-IFLA2) GO TO 306 IF(IFLA1.LT.4) GO TO 306 QSQS=QSQ2 IF(Y2.GT.YQSQ) QSQS=EXP(EXP(YQSQ)*ALQZM+ALLAM2) IF(Z*(QSQS/Z1-QSQ).GT.AM2HEV(IFLA1)) GO TO 306 IF(JBOOK.EQ.2) GO TO 309 QSQF=QSQ2 IF(YVF.LT.Y2) QSQF=EXP(EXP(YVF)*ALQZM+ALLAM2) IF(Z*(QSQF/Z1-QSQ).GT.AM2HEV(IFLA1)) GO TO 307 309 YVF2=-100. YVFG=YVF YVIG=YVI GO TO 308 307 YVC=LOG((LOG(Z1*(AM2HEV(IFLA1)/Z+QSQ))-ALLAM2)/ALQZM) YVI2=MAX(YVI,YVC) YVFG=MIN(YVF,YVC) YVIG=YVI 308 IF(CJRN(QSQS).GT..5) GO TO 306 NCUE(IBEAM)=NCUE(IBEAM)+1 MNCUEV=MAX(MNCUEV,NCUE(IBEAM)) NC=NCUE(IBEAM) IF(NC.GE.MXCUEV) GO TO 500 CALL Q2GEN(IFLA,Y,YS,QSQS) CUEV(NC,1,IBEAM)=IFLA CUEV(NC,2,IBEAM)=YS CUEV(NC,3,IBEAM)=X CUEV(NC,4,IBEAM)=IBOOK CUEV(NC,5,IBEAM)=PX CUEV(NC,6,IBEAM)=PY CUEV(NC,7,IBEAM)=QSQS CUEV(NC,8,IBEAM)=XM CUEV(NC,9,IBEAM)=YVIG CUEV(NC,10,IBEAM)=YVFG 306 CONTINUE C PX2S=PX2 PY2S=PY2 TMSQ2=PX2S**2+PY2S**2 XM2=TMSQ2/(S*X2) IF(JBOOK.EQ.1) GO TO 310 QSQS2=QSQ2 IF(Y2.GT.YQSQ) QSQS2=EXP(EXP(YQSQ)*ALQZM+ALLAM2) TPSQ2=Z*(QSQS2/Z1-QSQ) PX2T=PX1 PY2T=PY1 310 CONTINUE C C-- DECIDE WHICH IS NEXT TO CASCADE, ADD TO CUE, BOOK C ------------------------------------------------- 400 CONTINUE IF(X1.LT.XMIN) GO TO 452 IF(X1.LT.XM1) GO TO 452 IF(YVF1.LT.0.) GO TO 452 IF(X2.LT.XMIN) GO TO 450 IF(X2.LT.XM2) GO TO 450 IF(YVF2.LT.0.) GO TO 450 NCUE(IBEAM)=NCUE(IBEAM)+1 MNCUEV=MAX(MNCUEV,NCUE(IBEAM)) NC=NCUE(IBEAM) IF(NC.GE.MXCUEV) GO TO 500 IF(JBOOK.EQ.2) CALL TBOOK(IBOOK,IFLA1,TPSQ2,X1,PX2T,PY2T,IBOOK2) IF(JBOOK.EQ.2) CALL TBKISA(IFLA2,QSQ2,X2,PX2S,PY2S) CUEV(NC,1,IBEAM)=IFLA2 CUEV(NC,2,IBEAM)=Y2 CUEV(NC,3,IBEAM)=X2 CUEV(NC,4,IBEAM)=IBOOK2 CUEV(NC,5,IBEAM)=PX2S CUEV(NC,6,IBEAM)=PY2S CUEV(NC,7,IBEAM)=QSQ2 CUEV(NC,8,IBEAM)=XM2 CUEV(NC,9,IBEAM)=YVI2 CUEV(NC,10,IBEAM)=YVF2 450 CONTINUE IF(JBOOK.EQ.2) CALL TBOOK(IBOOK,IFLA2,TPSQ1,X2,PX1T,PY1T,IBOOK1) IF(JBOOK.EQ.2) CALL TBKISA(IFLA1,QSQ1,X1,PX1S,PY1S) IF(Y1.GT.YQSQ) GO TO 402 IFLA=IFLA1 Y=Y1 X=X1 PX=PX1S PY=PY1S IBOOK=IBOOK1 QSQ=QSQ1 YVI=YVI1 YVF=YVF1 GO TO 200 402 CONTINUE CALL BOOK(IFLA1,IBOOK1,XM1,Y1,X1,PX1S,PY1S,YVI1,YVF1) IF(JBOOK.EQ.1) GO TO 462 RETURN 452 IF(X2.LT.XMIN) GO TO 462 IF(X2.LT.XM2) GO TO 462 IF(YVF2.LT.0.) GO TO 462 IF(JBOOK.EQ.2) CALL TBOOK(IBOOK,IFLA1,TPSQ2,X1,PX2T,PY2T,IBOOK2) IF(JBOOK.EQ.2) CALL TBKISA(IFLA2,QSQ2,X2,PX2S,PY2S) IF(Y2.GT.YQSQ) GO TO 460 IFLA=IFLA2 Y=Y2 X=X2 PX=PX2S PY=PY2S IBOOK=IBOOK2 QSQ=QSQ2 YVI=YVI2 YVF=YVF2 GO TO 200 460 CONTINUE CALL BOOK(IFLA2,IBOOK2,XM2,Y2,X2,PX2S,PY2S,YVI2,YVF2) IF(JBOOK.EQ.1) GO TO 462 RETURN C C-- PICK UP NEXT IN CUE C ------------------- 462 IF(NCUE(IBEAM).EQ.0) GO TO 480 NC=NCUE(IBEAM) IFLA=CUEV(NC,1,IBEAM) Y=CUEV(NC,2,IBEAM) X=CUEV(NC,3,IBEAM) IBOOK=CUEV(NC,4,IBEAM) PX=CUEV(NC,5,IBEAM) PY=CUEV(NC,6,IBEAM) QSQ=CUEV(NC,7,IBEAM) XM=CUEV(NC,8,IBEAM) YVI=CUEV(NC,9,IBEAM) YVF=CUEV(NC,10,IBEAM) MBOOK(IBEAM)=IBOOK NCUE(IBEAM)=NCUE(IBEAM)-1 IF(Y.GT.YQSQ) GO TO 465 GO TO 200 465 CONTINUE CALL BOOK(IFLA,IBOOK,XM,Y,X,PX,PY,YVI,YVF) IF(JBOOK.EQ.1) GO TO 462 RETURN C C-- EXIT C ---- 480 CONTINUE ISTOP(IBEAM)=1 IBACK(IBEAM)=0 RETURN C C-- ABNORMAL EXIT 500 WRITE(ITLIS,501) MXCUEV,NEVOL 501 FORMAT(1H1,36HNUMBER OF QUANTA IN EVOL CUE EXCEEDS ,I10 1//1X,13HCASCADE NO. = ,I10 2//1X,'INCREASE MXCUEV' 3//1X,'EXECUTION TERMINATED' 4 ) STOP END