+++ /dev/null
-*
-* $Id$
-*
-* $Log$
-* Revision 1.1.1.1 1995/10/24 10:21:55 cernlib
-* Geant
-*
-*
-#include "geant321/pilot.h"
-*CMZ : 3.21/02 29/03/94 15.41.48 by S.Giani
-*-- Author :
- SUBROUTINE CMLABI(D,LD,AWR,KZ,ID,FM,Q,IFLG,LIFLAG,LRI)
-C THIS ROUTINE CONVERTS THE EXIT NEUTRON SCATTERING ANGLE
-C FROM THE CENTER OF MASS COORDINATE SYSTEM TO THE LABORATORY
-C COORDINATE SYSTEM FOR AN INELASTIC SCATTERING REACTION. IT
-C ALSO CALCULATES THE EXIT ENERGIES AND DIRECTIONAL COSINES
-C FOR THE NEUTRON AND RECOIL NUCLEUS AS WELL AS SETTING ALL
-C EXIT PARAMETERS FOR THE RECOIL NUCLEUS.
-#include "geant321/minput.inc"
-#include "geant321/mconst.inc"
-#include "geant321/mnutrn.inc"
-#include "geant321/mrecoi.inc"
-#include "geant321/mapoll.inc"
-#include "geant321/mmass.inc"
-#include "geant321/mpstor.inc"
- DIMENSION D(*),LD(*)
- SAVE
- MT=0
- IF((ID.GE.14).AND.(ID.LE.54))MT=51
- IF(MT.NE.51)GO TO 10
- IMT=ID-14
- MT=MT+IMT
- 10 IF(ID.EQ.11)MT=22
- IF(ID.EQ.13)MT=28
-C IFLG EQUAL TO ONE IMPLIES LABORATORY COORDINATE SYSTEM
- IF(LIFLAG.EQ.1)GO TO 60
- IF(IFLG.EQ.1)GO TO 20
-C E1 EQUALS THE EXIT ENERGY IN THE COM SYSTEM
- E1=((AWR/(AWR+1.0))**2)*EOLD+Q*(AWR/(AWR+1.0))
-C re-sample in COLISN E1<0.0 (Q-value = -EOLD) !!!
- IF(E1.LT.0.0) THEN
- IFLG = -1
- RETURN
- ENDIF
-C E2 EQUALS THE EXIT ENERGY IN THE LAB SYSTEM
- E2=E1+(EOLD+2.0*FM*(AWR+1.0)*SQRT(EOLD*E1))/((AWR+1.0)**2)
-C CALCULATE COSINE OF SCATTERING ANGLE FM IN LAB SYSTEM
- FM=(SQRT(E1/E2))*FM+(SQRT(EOLD/E2))*(1.0/(AWR+1.0))
- E=E2
-C CALCULATE THE NEUTRON EXIT DIRECTIONAL COSINES
- 20 SINPSI=SQRT(1.0-FM**2)
- CALL AZIRN(SINETA,COSETA)
- STHETA=1.0-UOLD**2
- IF(STHETA)40,40,30
- 30 STHETA=SQRT(STHETA)
- COSPHI=VOLD/STHETA
- SINPHI=WOLD/STHETA
- GO TO 50
- 40 COSPHI=1.0
- SINPHI=0.0
- STHETA=0.0
- 50 U=UOLD*FM-COSETA*SINPSI*STHETA
- V=VOLD*FM+UOLD*COSPHI*COSETA*SINPSI-SINPHI*SINPSI*SINETA
- W=WOLD*FM+UOLD*SINPHI*COSETA*SINPSI+COSPHI*SINPSI*SINETA
- S=1.0/SQRT(U**2+V**2+W**2)
- U=U*S
- V=V*S
- W=W*S
- IF(MT.EQ.91)LIFLAG=1
- IF(MT.EQ.22)LIFLAG=1
- IF(MT.EQ.28)LIFLAG=1
- IF(LIFLAG.EQ.1)GO TO 60
-C CALCULATE AND SET THE RECOIL NUCLEUS EXIT PARAMETERS
- ER=EOLD-E+Q
- 60 XR=X
- YR=Y
- ZR=Z
- WATER=WTBC
- NZR=KZ
- AGER=AGE
- NCOLR=NCOL
- MTNR=MT
- AR=AWR*AN
- ENIR=EOLD
- UNIR=UOLD
- VNIR=VOLD
- WNIR=WOLD
- ENOR=E
- UNOR=U
- VNOR=V
- WNOR=W
- WTNR=WATE
- QR=Q
-C CALCULATE THE NEUTRON MOMENTUM BEFORE AND AFTER COLLISION
-C NEUTRON MOMENTUM BEFORE COLLISION (PI) EQUALS TOTAL MOMENTUM
- PI=SQRT(2.0*ZN*EOLD)
- PO=SQRT(2.0*ZN*E)
-C CALCULATE THE DIRECTIONAL MOMENTUM OF THE RECOIL NUCLEUS
- PRX=PI*UOLD-PO*U
- PRY=PI*VOLD-PO*V
- PRZ=PI*WOLD-PO*W
-C CALCULATE THE TOTAL MOMENTUM OF THE RECOIL NUCLEUS
- PR=SQRT(PRX**2+PRY**2+PRZ**2)
-C CALCULATE THE RECOIL NUCLEUS DIRECTIONAL COSINES
- UR=PRX/PR
- VR=PRY/PR
- WR=PRZ/PR
-C CALCULATE THE RECOIL HEAVY ION ENERGY FOR MT-91
- IF(LIFLAG.EQ.0)GO TO 70
- XM = AR*931.075E6
- ER= SQRT(PR**2 + XM**2) - XM
- 70 CONTINUE
-C IF LR-FLAG IS USED, DO NOT STORE RECOIL ION AT THIS TIME
- IF(LRI.EQ.22)RETURN
- IF(LRI.EQ.23)RETURN
- IF(LRI.EQ.28)RETURN
-C STORE THE RECOIL HEAVY ION IN THE RECOIL BANK
- EP = ER
- UP = UR
- VP = VR
- WP = WR
- AGEP = AGE
- MTP = MT
- AMP = AR
- ZMP = FLOAT(NZR)
- CALL STOPAR(IDHEVY,NHEVY)
- RETURN
- END