File indexing completed on 2024-04-06 12:13:23
0001
0002
0003 SUBROUTINE KI_BHG_FILL(iret,www) ! by droll (31/05/05) *
0004
0005
0006
0007
0008
0009 IMPLICIT NONE
0010 #include "GeneratorInterface/BeamHaloGenerator/interface/bhgrhists.inc"
0011 #include "GeneratorInterface/BeamHaloGenerator/interface/bhgcons.inc"
0012 #include "GeneratorInterface/BeamHaloGenerator/interface/bhgp_info.inc"
0013 #include "GeneratorInterface/BeamHaloGenerator/interface/bhgctrl.inc"
0014 #include "GeneratorInterface/BeamHaloGenerator/interface/chepevt.inc"
0015 #include "GeneratorInterface/BeamHaloGenerator/interface/mc_param.inc"
0016 REAL RAN01(1),E_KINE,LOG_EK,VERT_X,VERT_Y,COS_DX,COS_DY
0017 REAL PX,PY,PZ,E,M,VX,VY,VZ,T0
0018 REAL ABSMOM,P_BM_2,WEIGHT,P_MASS,SUM_BS
0019 INTEGER ID_PDG,ACC_EV,RANFLA
0020 INTEGER NI,M15_ID,IORIG,KORIG
0021
0022 REAL EF,W,X,Y,DCX,DCY,TOFF,PRIMEHITZ,
0023 & ZORIG,XORIG,YORIG,EORIG,WORIG
0024
0025 INTEGER COUNT
0026 ! Convert MARS15 id's to PDG ID
0027 INTEGER IDCONVERT(40)
0028 DATA IDCONVERT/2212,2112,211,-211,321,-321,-13,13,22,11,-11,
0029 & -2212,111,1,6,-104,-102,14,-14,12,-12,130,310,
0030 & 311,-311,3122,-3122,3222,3212,3112,-2112,3322,
0031 & 3312,3334,5112,5212,5222,-3322,-5132,-5332/
0032
0033 integer iret
0034 real www
0035 COUNT=0
0036 iret=0
0037
0038 IF (GENMOD.EQ.1) THEN ! event generator mode
0039 ID_PDG = RANFLA()
0040 111 IF (ID_PDG.EQ.-13) THEN ! mu+
0041 CALL RNHRAN(H01MUP,N_BINS,L01MUP,W01MUP,LOG_EK)
0042 E_KINE = EXP(LOG_EK)
0043 IF (E_KINE.GE.1.0000.AND.E_KINE.LT.3.0000) THEN
0044 CALL RNHRAN(H11MUP,N_BINS,L11MUP,W11MUP,VERT_X)
0045 CALL RNHRAN(H21MUP,N_BINS,L21MUP,W21MUP,VERT_Y)
0046 CALL RNHRAN(H31MUP,N_BINS,L31MUP,W31MUP,COS_DX)
0047 CALL RNHRAN(H41MUP,N_BINS,L41MUP,W41MUP,COS_DY)
0048 ELSEIF (E_KINE.GE.3.0000.AND.E_KINE.LT.9.0000) THEN
0049 CALL RNHRAN(H12MUP,N_BINS,L12MUP,W12MUP,VERT_X)
0050 CALL RNHRAN(H22MUP,N_BINS,L22MUP,W22MUP,VERT_Y)
0051 CALL RNHRAN(H32MUP,N_BINS,L32MUP,W32MUP,COS_DX)
0052 CALL RNHRAN(H42MUP,N_BINS,L42MUP,W42MUP,COS_DY)
0053 ELSEIF (E_KINE.GE.9.0000.AND.E_KINE.LT.27.000) THEN
0054 CALL RNHRAN(H13MUP,N_BINS,L13MUP,W13MUP,VERT_X)
0055 CALL RNHRAN(H23MUP,N_BINS,L23MUP,W23MUP,VERT_Y)
0056 CALL RNHRAN(H33MUP,N_BINS,L33MUP,W33MUP,COS_DX)
0057 CALL RNHRAN(H43MUP,N_BINS,L43MUP,W43MUP,COS_DY)
0058 ELSEIF (E_KINE.GE.27.000.AND.E_KINE.LT.81.000) THEN
0059 CALL RNHRAN(H14MUP,N_BINS,L14MUP,W14MUP,VERT_X)
0060 CALL RNHRAN(H24MUP,N_BINS,L24MUP,W24MUP,VERT_Y)
0061 CALL RNHRAN(H34MUP,N_BINS,L34MUP,W34MUP,COS_DX)
0062 CALL RNHRAN(H44MUP,N_BINS,L44MUP,W44MUP,COS_DY)
0063 ELSEIF (E_KINE.GE.81.000.AND.E_KINE.LT.243.00) THEN
0064 CALL RNHRAN(H15MUP,N_BINS,L15MUP,W15MUP,VERT_X)
0065 CALL RNHRAN(H25MUP,N_BINS,L25MUP,W25MUP,VERT_Y)
0066 CALL RNHRAN(H35MUP,N_BINS,L35MUP,W35MUP,COS_DX)
0067 CALL RNHRAN(H45MUP,N_BINS,L45MUP,W45MUP,COS_DY)
0068 ELSEIF (E_KINE.GE.243.00.AND.E_KINE.LT.729.00) THEN
0069 CALL RNHRAN(H16MUP,N_BINS,L16MUP,W16MUP,VERT_X)
0070 CALL RNHRAN(H26MUP,N_BINS,L26MUP,W26MUP,VERT_Y)
0071 CALL RNHRAN(H36MUP,N_BINS,L36MUP,W36MUP,COS_DX)
0072 CALL RNHRAN(H46MUP,N_BINS,L46MUP,W46MUP,COS_DY)
0073 ELSEIF (E_KINE.GE.729.00.AND.E_KINE.LT.2187.0) THEN
0074 CALL RNHRAN(H17MUP,N_BINS,L17MUP,W17MUP,VERT_X)
0075 CALL RNHRAN(H27MUP,N_BINS,L27MUP,W27MUP,VERT_Y)
0076 CALL RNHRAN(H37MUP,N_BINS,L37MUP,W37MUP,COS_DX)
0077 CALL RNHRAN(H47MUP,N_BINS,L47MUP,W47MUP,COS_DY)
0078 ELSEIF (E_KINE.GE.2187.0.AND.E_KINE.LT.7000.0) THEN
0079 CALL RNHRAN(H18MUP,N_BINS,L18MUP,W18MUP,VERT_X)
0080 CALL RNHRAN(H28MUP,N_BINS,L28MUP,W28MUP,VERT_Y)
0081 CALL RNHRAN(H38MUP,N_BINS,L38MUP,W38MUP,COS_DX)
0082 CALL RNHRAN(H48MUP,N_BINS,L48MUP,W48MUP,COS_DY)
0083 ENDIF
0084 ELSEIF (ID_PDG.EQ.13) THEN ! mu-
0085 CALL RNHRAN(H01MUM,N_BINS,L01MUM,W01MUM,LOG_EK)
0086 E_KINE = EXP(LOG_EK)
0087 IF (E_KINE.GE.1.0000.AND.E_KINE.LT.3.0000) THEN
0088 CALL RNHRAN(H11MUM,N_BINS,L11MUM,W11MUM,VERT_X)
0089 CALL RNHRAN(H21MUM,N_BINS,L21MUM,W21MUM,VERT_Y)
0090 CALL RNHRAN(H31MUM,N_BINS,L31MUM,W31MUM,COS_DX)
0091 CALL RNHRAN(H41MUM,N_BINS,L41MUM,W41MUM,COS_DY)
0092 ELSEIF (E_KINE.GE.3.0000.AND.E_KINE.LT.9.0000) THEN
0093 CALL RNHRAN(H12MUM,N_BINS,L12MUM,W12MUM,VERT_X)
0094 CALL RNHRAN(H22MUM,N_BINS,L22MUM,W22MUM,VERT_Y)
0095 CALL RNHRAN(H32MUM,N_BINS,L32MUM,W32MUM,COS_DX)
0096 CALL RNHRAN(H42MUM,N_BINS,L42MUM,W42MUM,COS_DY)
0097 ELSEIF (E_KINE.GE.9.0000.AND.E_KINE.LT.27.000) THEN
0098 CALL RNHRAN(H13MUM,N_BINS,L13MUM,W13MUM,VERT_X)
0099 CALL RNHRAN(H23MUM,N_BINS,L23MUM,W23MUM,VERT_Y)
0100 CALL RNHRAN(H33MUM,N_BINS,L33MUM,W33MUM,COS_DX)
0101 CALL RNHRAN(H43MUM,N_BINS,L43MUM,W43MUM,COS_DY)
0102 ELSEIF (E_KINE.GE.27.000.AND.E_KINE.LT.81.000) THEN
0103 CALL RNHRAN(H14MUM,N_BINS,L14MUM,W14MUM,VERT_X)
0104 CALL RNHRAN(H24MUM,N_BINS,L24MUM,W24MUM,VERT_Y)
0105 CALL RNHRAN(H34MUM,N_BINS,L34MUM,W34MUM,COS_DX)
0106 CALL RNHRAN(H44MUM,N_BINS,L44MUM,W44MUM,COS_DY)
0107 ELSEIF (E_KINE.GE.81.000.AND.E_KINE.LT.243.00) THEN
0108 CALL RNHRAN(H15MUM,N_BINS,L15MUM,W15MUM,VERT_X)
0109 CALL RNHRAN(H25MUM,N_BINS,L25MUM,W25MUM,VERT_Y)
0110 CALL RNHRAN(H35MUM,N_BINS,L35MUM,W35MUM,COS_DX)
0111 CALL RNHRAN(H45MUM,N_BINS,L45MUM,W45MUM,COS_DY)
0112 ELSEIF (E_KINE.GE.243.00.AND.E_KINE.LT.729.00) THEN
0113 CALL RNHRAN(H16MUM,N_BINS,L16MUM,W16MUM,VERT_X)
0114 CALL RNHRAN(H26MUM,N_BINS,L26MUM,W26MUM,VERT_Y)
0115 CALL RNHRAN(H36MUM,N_BINS,L36MUM,W36MUM,COS_DX)
0116 CALL RNHRAN(H46MUM,N_BINS,L46MUM,W46MUM,COS_DY)
0117 ELSEIF (E_KINE.GE.729.00.AND.E_KINE.LT.2187.0) THEN
0118 CALL RNHRAN(H17MUM,N_BINS,L17MUM,W17MUM,VERT_X)
0119 CALL RNHRAN(H27MUM,N_BINS,L27MUM,W27MUM,VERT_Y)
0120 CALL RNHRAN(H37MUM,N_BINS,L37MUM,W37MUM,COS_DX)
0121 CALL RNHRAN(H47MUM,N_BINS,L47MUM,W47MUM,COS_DY)
0122 ELSEIF (E_KINE.GE.2187.0.AND.E_KINE.LT.7000.0) THEN
0123 CALL RNHRAN(H18MUM,N_BINS,L18MUM,W18MUM,VERT_X)
0124 CALL RNHRAN(H28MUM,N_BINS,L28MUM,W28MUM,VERT_Y)
0125 CALL RNHRAN(H38MUM,N_BINS,L38MUM,W38MUM,COS_DX)
0126 CALL RNHRAN(H48MUM,N_BINS,L48MUM,W48MUM,COS_DY)
0127 ENDIF
0128 ELSEIF (ID_PDG.EQ.211) THEN ! pi+
0129 CALL RNHRAN(H01PIP,N_BINS,L01PIP,W01PIP,LOG_EK)
0130 E_KINE = EXP(LOG_EK)
0131 IF (E_KINE.GE.1.0000.AND.E_KINE.LT.3.0000) THEN
0132 CALL RNHRAN(H11PIP,N_BINS,L11PIP,W11PIP,VERT_X)
0133 CALL RNHRAN(H21PIP,N_BINS,L21PIP,W21PIP,VERT_Y)
0134 CALL RNHRAN(H31PIP,N_BINS,L31PIP,W31PIP,COS_DX)
0135 CALL RNHRAN(H41PIP,N_BINS,L41PIP,W41PIP,COS_DY)
0136 ELSEIF (E_KINE.GE.3.0000.AND.E_KINE.LT.9.0000) THEN
0137 CALL RNHRAN(H12PIP,N_BINS,L12PIP,W12PIP,VERT_X)
0138 CALL RNHRAN(H22PIP,N_BINS,L22PIP,W22PIP,VERT_Y)
0139 CALL RNHRAN(H32PIP,N_BINS,L32PIP,W32PIP,COS_DX)
0140 CALL RNHRAN(H42PIP,N_BINS,L42PIP,W42PIP,COS_DY)
0141 ELSEIF (E_KINE.GE.9.0000.AND.E_KINE.LT.27.000) THEN
0142 CALL RNHRAN(H13PIP,N_BINS,L13PIP,W13PIP,VERT_X)
0143 CALL RNHRAN(H23PIP,N_BINS,L23PIP,W23PIP,VERT_Y)
0144 CALL RNHRAN(H33PIP,N_BINS,L33PIP,W33PIP,COS_DX)
0145 CALL RNHRAN(H43PIP,N_BINS,L43PIP,W43PIP,COS_DY)
0146 ELSEIF (E_KINE.GE.27.000.AND.E_KINE.LT.81.000) THEN
0147 CALL RNHRAN(H14PIP,N_BINS,L14PIP,W14PIP,VERT_X)
0148 CALL RNHRAN(H24PIP,N_BINS,L24PIP,W24PIP,VERT_Y)
0149 CALL RNHRAN(H34PIP,N_BINS,L34PIP,W34PIP,COS_DX)
0150 CALL RNHRAN(H44PIP,N_BINS,L44PIP,W44PIP,COS_DY)
0151 ELSEIF (E_KINE.GE.81.000.AND.E_KINE.LT.243.00) THEN
0152 CALL RNHRAN(H15PIP,N_BINS,L15PIP,W15PIP,VERT_X)
0153 CALL RNHRAN(H25PIP,N_BINS,L25PIP,W25PIP,VERT_Y)
0154 CALL RNHRAN(H35PIP,N_BINS,L35PIP,W35PIP,COS_DX)
0155 CALL RNHRAN(H45PIP,N_BINS,L45PIP,W45PIP,COS_DY)
0156 ELSEIF (E_KINE.GE.243.00.AND.E_KINE.LT.729.00) THEN
0157 CALL RNHRAN(H16PIP,N_BINS,L16PIP,W16PIP,VERT_X)
0158 CALL RNHRAN(H26PIP,N_BINS,L26PIP,W26PIP,VERT_Y)
0159 CALL RNHRAN(H36PIP,N_BINS,L36PIP,W36PIP,COS_DX)
0160 CALL RNHRAN(H46PIP,N_BINS,L46PIP,W46PIP,COS_DY)
0161 ELSEIF (E_KINE.GE.729.00.AND.E_KINE.LT.2187.0) THEN
0162 CALL RNHRAN(H17PIP,N_BINS,L17PIP,W17PIP,VERT_X)
0163 CALL RNHRAN(H27PIP,N_BINS,L27PIP,W27PIP,VERT_Y)
0164 CALL RNHRAN(H37PIP,N_BINS,L37PIP,W37PIP,COS_DX)
0165 CALL RNHRAN(H47PIP,N_BINS,L47PIP,W47PIP,COS_DY)
0166 ELSEIF (E_KINE.GE.2187.0.AND.E_KINE.LT.7000.0) THEN
0167 CALL RNHRAN(H18PIP,N_BINS,L18PIP,W18PIP,VERT_X)
0168 CALL RNHRAN(H28PIP,N_BINS,L28PIP,W28PIP,VERT_Y)
0169 CALL RNHRAN(H38PIP,N_BINS,L38PIP,W38PIP,COS_DX)
0170 CALL RNHRAN(H48PIP,N_BINS,L48PIP,W48PIP,COS_DY)
0171 ENDIF
0172 ELSEIF (ID_PDG.EQ.-211) THEN ! pi-
0173 CALL RNHRAN(H01PIM,N_BINS,L01PIM,W01PIM,LOG_EK)
0174 E_KINE = EXP(LOG_EK)
0175 IF (E_KINE.GE.1.0000.AND.E_KINE.LT.3.0000) THEN
0176 CALL RNHRAN(H11PIM,N_BINS,L11PIM,W11PIM,VERT_X)
0177 CALL RNHRAN(H21PIM,N_BINS,L21PIM,W21PIM,VERT_Y)
0178 CALL RNHRAN(H31PIM,N_BINS,L31PIM,W31PIM,COS_DX)
0179 CALL RNHRAN(H41PIM,N_BINS,L41PIM,W41PIM,COS_DY)
0180 ELSEIF (E_KINE.GE.3.0000.AND.E_KINE.LT.9.0000) THEN
0181 CALL RNHRAN(H12PIM,N_BINS,L12PIM,W12PIM,VERT_X)
0182 CALL RNHRAN(H22PIM,N_BINS,L22PIM,W22PIM,VERT_Y)
0183 CALL RNHRAN(H32PIM,N_BINS,L32PIM,W32PIM,COS_DX)
0184 CALL RNHRAN(H42PIM,N_BINS,L42PIM,W42PIM,COS_DY)
0185 ELSEIF (E_KINE.GE.9.0000.AND.E_KINE.LT.27.000) THEN
0186 CALL RNHRAN(H13PIM,N_BINS,L13PIM,W13PIM,VERT_X)
0187 CALL RNHRAN(H23PIM,N_BINS,L23PIM,W23PIM,VERT_Y)
0188 CALL RNHRAN(H33PIM,N_BINS,L33PIM,W33PIM,COS_DX)
0189 CALL RNHRAN(H43PIM,N_BINS,L43PIM,W43PIM,COS_DY)
0190 ELSEIF (E_KINE.GE.27.000.AND.E_KINE.LT.81.000) THEN
0191 CALL RNHRAN(H14PIM,N_BINS,L14PIM,W14PIM,VERT_X)
0192 CALL RNHRAN(H24PIM,N_BINS,L24PIM,W24PIM,VERT_Y)
0193 CALL RNHRAN(H34PIM,N_BINS,L34PIM,W34PIM,COS_DX)
0194 CALL RNHRAN(H44PIM,N_BINS,L44PIM,W44PIM,COS_DY)
0195 ELSEIF (E_KINE.GE.81.000.AND.E_KINE.LT.243.00) THEN
0196 CALL RNHRAN(H15PIM,N_BINS,L15PIM,W15PIM,VERT_X)
0197 CALL RNHRAN(H25PIM,N_BINS,L25PIM,W25PIM,VERT_Y)
0198 CALL RNHRAN(H35PIM,N_BINS,L35PIM,W35PIM,COS_DX)
0199 CALL RNHRAN(H45PIM,N_BINS,L45PIM,W45PIM,COS_DY)
0200 ELSEIF (E_KINE.GE.243.00.AND.E_KINE.LT.729.00) THEN
0201 CALL RNHRAN(H16PIM,N_BINS,L16PIM,W16PIM,VERT_X)
0202 CALL RNHRAN(H26PIM,N_BINS,L26PIM,W26PIM,VERT_Y)
0203 CALL RNHRAN(H36PIM,N_BINS,L36PIM,W36PIM,COS_DX)
0204 CALL RNHRAN(H46PIM,N_BINS,L46PIM,W46PIM,COS_DY)
0205 ELSEIF (E_KINE.GE.729.00.AND.E_KINE.LT.2187.0) THEN
0206 CALL RNHRAN(H17PIM,N_BINS,L17PIM,W17PIM,VERT_X)
0207 CALL RNHRAN(H27PIM,N_BINS,L27PIM,W27PIM,VERT_Y)
0208 CALL RNHRAN(H37PIM,N_BINS,L37PIM,W37PIM,COS_DX)
0209 CALL RNHRAN(H47PIM,N_BINS,L47PIM,W47PIM,COS_DY)
0210 ELSEIF (E_KINE.GE.2187.0.AND.E_KINE.LT.7000.0) THEN
0211 CALL RNHRAN(H18PIM,N_BINS,L18PIM,W18PIM,VERT_X)
0212 CALL RNHRAN(H28PIM,N_BINS,L28PIM,W28PIM,VERT_Y)
0213 CALL RNHRAN(H38PIM,N_BINS,L38PIM,W38PIM,COS_DX)
0214 CALL RNHRAN(H48PIM,N_BINS,L48PIM,W48PIM,COS_DY)
0215 ENDIF
0216 ELSEIF (ID_PDG.EQ.321) THEN ! K+
0217 CALL RNHRAN(H01KAP,N_BINS,L01KAP,W01KAP,LOG_EK)
0218 E_KINE = EXP(LOG_EK)
0219 IF (E_KINE.GE.1.0000.AND.E_KINE.LT.3.0000) THEN
0220 CALL RNHRAN(H11KAP,N_BINS,L11KAP,W11KAP,VERT_X)
0221 CALL RNHRAN(H21KAP,N_BINS,L21KAP,W21KAP,VERT_Y)
0222 CALL RNHRAN(H31KAP,N_BINS,L31KAP,W31KAP,COS_DX)
0223 CALL RNHRAN(H41KAP,N_BINS,L41KAP,W41KAP,COS_DY)
0224 ELSEIF (E_KINE.GE.3.0000.AND.E_KINE.LT.9.0000) THEN
0225 CALL RNHRAN(H12KAP,N_BINS,L12KAP,W12KAP,VERT_X)
0226 CALL RNHRAN(H22KAP,N_BINS,L22KAP,W22KAP,VERT_Y)
0227 CALL RNHRAN(H32KAP,N_BINS,L32KAP,W32KAP,COS_DX)
0228 CALL RNHRAN(H42KAP,N_BINS,L42KAP,W42KAP,COS_DY)
0229 ELSEIF (E_KINE.GE.9.0000.AND.E_KINE.LT.27.000) THEN
0230 CALL RNHRAN(H13KAP,N_BINS,L13KAP,W13KAP,VERT_X)
0231 CALL RNHRAN(H23KAP,N_BINS,L23KAP,W23KAP,VERT_Y)
0232 CALL RNHRAN(H33KAP,N_BINS,L33KAP,W33KAP,COS_DX)
0233 CALL RNHRAN(H43KAP,N_BINS,L43KAP,W43KAP,COS_DY)
0234 ELSEIF (E_KINE.GE.27.000.AND.E_KINE.LT.81.000) THEN
0235 CALL RNHRAN(H14KAP,N_BINS,L14KAP,W14KAP,VERT_X)
0236 CALL RNHRAN(H24KAP,N_BINS,L24KAP,W24KAP,VERT_Y)
0237 CALL RNHRAN(H34KAP,N_BINS,L34KAP,W34KAP,COS_DX)
0238 CALL RNHRAN(H44KAP,N_BINS,L44KAP,W44KAP,COS_DY)
0239 ELSEIF (E_KINE.GE.81.000.AND.E_KINE.LT.243.00) THEN
0240 CALL RNHRAN(H15KAP,N_BINS,L15KAP,W15KAP,VERT_X)
0241 CALL RNHRAN(H25KAP,N_BINS,L25KAP,W25KAP,VERT_Y)
0242 CALL RNHRAN(H35KAP,N_BINS,L35KAP,W35KAP,COS_DX)
0243 CALL RNHRAN(H45KAP,N_BINS,L45KAP,W45KAP,COS_DY)
0244 ELSEIF (E_KINE.GE.243.00.AND.E_KINE.LT.729.00) THEN
0245 CALL RNHRAN(H16KAP,N_BINS,L16KAP,W16KAP,VERT_X)
0246 CALL RNHRAN(H26KAP,N_BINS,L26KAP,W26KAP,VERT_Y)
0247 CALL RNHRAN(H36KAP,N_BINS,L36KAP,W36KAP,COS_DX)
0248 CALL RNHRAN(H46KAP,N_BINS,L46KAP,W46KAP,COS_DY)
0249 ELSEIF (E_KINE.GE.729.00.AND.E_KINE.LT.2187.0) THEN
0250 CALL RNHRAN(H17KAP,N_BINS,L17KAP,W17KAP,VERT_X)
0251 CALL RNHRAN(H27KAP,N_BINS,L27KAP,W27KAP,VERT_Y)
0252 CALL RNHRAN(H37KAP,N_BINS,L37KAP,W37KAP,COS_DX)
0253 CALL RNHRAN(H47KAP,N_BINS,L47KAP,W47KAP,COS_DY)
0254 ELSEIF (E_KINE.GE.2187.0.AND.E_KINE.LT.7000.0) THEN
0255 CALL RNHRAN(H18KAP,N_BINS,L18KAP,W18KAP,VERT_X)
0256 CALL RNHRAN(H28KAP,N_BINS,L28KAP,W28KAP,VERT_Y)
0257 CALL RNHRAN(H38KAP,N_BINS,L38KAP,W38KAP,COS_DX)
0258 CALL RNHRAN(H48KAP,N_BINS,L48KAP,W48KAP,COS_DY)
0259 ENDIF
0260 ELSEIF (ID_PDG.EQ.-321) THEN ! K-
0261 CALL RNHRAN(H01KAM,N_BINS,L01KAM,W01KAM,LOG_EK)
0262 E_KINE = EXP(LOG_EK)
0263 IF (E_KINE.GE.1.0000.AND.E_KINE.LT.3.0000) THEN
0264 CALL RNHRAN(H11KAM,N_BINS,L11KAM,W11KAM,VERT_X)
0265 CALL RNHRAN(H21KAM,N_BINS,L21KAM,W21KAM,VERT_Y)
0266 CALL RNHRAN(H31KAM,N_BINS,L31KAM,W31KAM,COS_DX)
0267 CALL RNHRAN(H41KAM,N_BINS,L41KAM,W41KAM,COS_DY)
0268 ELSEIF (E_KINE.GE.3.0000.AND.E_KINE.LT.9.0000) THEN
0269 CALL RNHRAN(H12KAM,N_BINS,L12KAM,W12KAM,VERT_X)
0270 CALL RNHRAN(H22KAM,N_BINS,L22KAM,W22KAM,VERT_Y)
0271 CALL RNHRAN(H32KAM,N_BINS,L32KAM,W32KAM,COS_DX)
0272 CALL RNHRAN(H42KAM,N_BINS,L42KAM,W42KAM,COS_DY)
0273 ELSEIF (E_KINE.GE.9.0000.AND.E_KINE.LT.27.000) THEN
0274 CALL RNHRAN(H13KAM,N_BINS,L13KAM,W13KAM,VERT_X)
0275 CALL RNHRAN(H23KAM,N_BINS,L23KAM,W23KAM,VERT_Y)
0276 CALL RNHRAN(H33KAM,N_BINS,L33KAM,W33KAM,COS_DX)
0277 CALL RNHRAN(H43KAM,N_BINS,L43KAM,W43KAM,COS_DY)
0278 ELSEIF (E_KINE.GE.27.000.AND.E_KINE.LT.81.000) THEN
0279 CALL RNHRAN(H14KAM,N_BINS,L14KAM,W14KAM,VERT_X)
0280 CALL RNHRAN(H24KAM,N_BINS,L24KAM,W24KAM,VERT_Y)
0281 CALL RNHRAN(H34KAM,N_BINS,L34KAM,W34KAM,COS_DX)
0282 CALL RNHRAN(H44KAM,N_BINS,L44KAM,W44KAM,COS_DY)
0283 ELSEIF (E_KINE.GE.81.000.AND.E_KINE.LT.243.00) THEN
0284 CALL RNHRAN(H15KAM,N_BINS,L15KAM,W15KAM,VERT_X)
0285 CALL RNHRAN(H25KAM,N_BINS,L25KAM,W25KAM,VERT_Y)
0286 CALL RNHRAN(H35KAM,N_BINS,L35KAM,W35KAM,COS_DX)
0287 CALL RNHRAN(H45KAM,N_BINS,L45KAM,W45KAM,COS_DY)
0288 ELSEIF (E_KINE.GE.243.00.AND.E_KINE.LT.729.00) THEN
0289 CALL RNHRAN(H16KAM,N_BINS,L16KAM,W16KAM,VERT_X)
0290 CALL RNHRAN(H26KAM,N_BINS,L26KAM,W26KAM,VERT_Y)
0291 CALL RNHRAN(H36KAM,N_BINS,L36KAM,W36KAM,COS_DX)
0292 CALL RNHRAN(H46KAM,N_BINS,L46KAM,W46KAM,COS_DY)
0293 ELSEIF (E_KINE.GE.729.00.AND.E_KINE.LT.2187.0) THEN
0294 CALL RNHRAN(H17KAM,N_BINS,L17KAM,W17KAM,VERT_X)
0295 CALL RNHRAN(H27KAM,N_BINS,L27KAM,W27KAM,VERT_Y)
0296 CALL RNHRAN(H37KAM,N_BINS,L37KAM,W37KAM,COS_DX)
0297 CALL RNHRAN(H47KAM,N_BINS,L47KAM,W47KAM,COS_DY)
0298 ELSEIF (E_KINE.GE.2187.0.AND.E_KINE.LT.7000.0) THEN
0299 CALL RNHRAN(H18KAM,N_BINS,L18KAM,W18KAM,VERT_X)
0300 CALL RNHRAN(H28KAM,N_BINS,L28KAM,W28KAM,VERT_Y)
0301 CALL RNHRAN(H38KAM,N_BINS,L38KAM,W38KAM,COS_DX)
0302 CALL RNHRAN(H48KAM,N_BINS,L48KAM,W48KAM,COS_DY)
0303 ENDIF
0304 ELSEIF (ID_PDG.EQ.2212) THEN ! p+
0305 CALL RNHRAN(H01PRO,N_BINS,L01PRO,W01PRO,LOG_EK)
0306 E_KINE = EXP(LOG_EK)
0307 IF (E_KINE.GE.1.0000.AND.E_KINE.LT.3.0000) THEN
0308 CALL RNHRAN(H11PRO,N_BINS,L11PRO,W11PRO,VERT_X)
0309 CALL RNHRAN(H21PRO,N_BINS,L21PRO,W21PRO,VERT_Y)
0310 CALL RNHRAN(H31PRO,N_BINS,L31PRO,W31PRO,COS_DX)
0311 CALL RNHRAN(H41PRO,N_BINS,L41PRO,W41PRO,COS_DY)
0312 ELSEIF (E_KINE.GE.3.0000.AND.E_KINE.LT.9.0000) THEN
0313 CALL RNHRAN(H12PRO,N_BINS,L12PRO,W12PRO,VERT_X)
0314 CALL RNHRAN(H22PRO,N_BINS,L22PRO,W22PRO,VERT_Y)
0315 CALL RNHRAN(H32PRO,N_BINS,L32PRO,W32PRO,COS_DX)
0316 CALL RNHRAN(H42PRO,N_BINS,L42PRO,W42PRO,COS_DY)
0317 ELSEIF (E_KINE.GE.9.0000.AND.E_KINE.LT.27.000) THEN
0318 CALL RNHRAN(H13PRO,N_BINS,L13PRO,W13PRO,VERT_X)
0319 CALL RNHRAN(H23PRO,N_BINS,L23PRO,W23PRO,VERT_Y)
0320 CALL RNHRAN(H33PRO,N_BINS,L33PRO,W33PRO,COS_DX)
0321 CALL RNHRAN(H43PRO,N_BINS,L43PRO,W43PRO,COS_DY)
0322 ELSEIF (E_KINE.GE.27.000.AND.E_KINE.LT.81.000) THEN
0323 CALL RNHRAN(H14PRO,N_BINS,L14PRO,W14PRO,VERT_X)
0324 CALL RNHRAN(H24PRO,N_BINS,L24PRO,W24PRO,VERT_Y)
0325 CALL RNHRAN(H34PRO,N_BINS,L34PRO,W34PRO,COS_DX)
0326 CALL RNHRAN(H44PRO,N_BINS,L44PRO,W44PRO,COS_DY)
0327 ELSEIF (E_KINE.GE.81.000.AND.E_KINE.LT.243.00) THEN
0328 CALL RNHRAN(H15PRO,N_BINS,L15PRO,W15PRO,VERT_X)
0329 CALL RNHRAN(H25PRO,N_BINS,L25PRO,W25PRO,VERT_Y)
0330 CALL RNHRAN(H35PRO,N_BINS,L35PRO,W35PRO,COS_DX)
0331 CALL RNHRAN(H45PRO,N_BINS,L45PRO,W45PRO,COS_DY)
0332 ELSEIF (E_KINE.GE.243.00.AND.E_KINE.LT.729.00) THEN
0333 CALL RNHRAN(H16PRO,N_BINS,L16PRO,W16PRO,VERT_X)
0334 CALL RNHRAN(H26PRO,N_BINS,L26PRO,W26PRO,VERT_Y)
0335 CALL RNHRAN(H36PRO,N_BINS,L36PRO,W36PRO,COS_DX)
0336 CALL RNHRAN(H46PRO,N_BINS,L46PRO,W46PRO,COS_DY)
0337 ELSEIF (E_KINE.GE.729.00.AND.E_KINE.LT.2187.0) THEN
0338 CALL RNHRAN(H17PRO,N_BINS,L17PRO,W17PRO,VERT_X)
0339 CALL RNHRAN(H27PRO,N_BINS,L27PRO,W27PRO,VERT_Y)
0340 CALL RNHRAN(H37PRO,N_BINS,L37PRO,W37PRO,COS_DX)
0341 CALL RNHRAN(H47PRO,N_BINS,L47PRO,W47PRO,COS_DY)
0342 ELSEIF (E_KINE.GE.2187.0.AND.E_KINE.LT.7000.0) THEN
0343 CALL RNHRAN(H18PRO,N_BINS,L18PRO,W18PRO,VERT_X)
0344 CALL RNHRAN(H28PRO,N_BINS,L28PRO,W28PRO,VERT_Y)
0345 CALL RNHRAN(H38PRO,N_BINS,L38PRO,W38PRO,COS_DX)
0346 CALL RNHRAN(H48PRO,N_BINS,L48PRO,W48PRO,COS_DY)
0347 ENDIF
0348 ELSEIF (ID_PDG.EQ.2112) THEN ! n0
0349 CALL RNHRAN(H01NEU,N_BINS,L01NEU,W01NEU,LOG_EK)
0350 E_KINE = EXP(LOG_EK)
0351 IF (E_KINE.GE.1.0000.AND.E_KINE.LT.3.0000) THEN
0352 CALL RNHRAN(H11NEU,N_BINS,L11NEU,W11NEU,VERT_X)
0353 CALL RNHRAN(H21NEU,N_BINS,L21NEU,W21NEU,VERT_Y)
0354 CALL RNHRAN(H31NEU,N_BINS,L31NEU,W31NEU,COS_DX)
0355 CALL RNHRAN(H41NEU,N_BINS,L41NEU,W41NEU,COS_DY)
0356 ELSEIF (E_KINE.GE.3.0000.AND.E_KINE.LT.9.0000) THEN
0357 CALL RNHRAN(H12NEU,N_BINS,L12NEU,W12NEU,VERT_X)
0358 CALL RNHRAN(H22NEU,N_BINS,L22NEU,W22NEU,VERT_Y)
0359 CALL RNHRAN(H32NEU,N_BINS,L32NEU,W32NEU,COS_DX)
0360 CALL RNHRAN(H42NEU,N_BINS,L42NEU,W42NEU,COS_DY)
0361 ELSEIF (E_KINE.GE.9.0000.AND.E_KINE.LT.27.000) THEN
0362 CALL RNHRAN(H13NEU,N_BINS,L13NEU,W13NEU,VERT_X)
0363 CALL RNHRAN(H23NEU,N_BINS,L23NEU,W23NEU,VERT_Y)
0364 CALL RNHRAN(H33NEU,N_BINS,L33NEU,W33NEU,COS_DX)
0365 CALL RNHRAN(H43NEU,N_BINS,L43NEU,W43NEU,COS_DY)
0366 ELSEIF (E_KINE.GE.27.000.AND.E_KINE.LT.81.000) THEN
0367 CALL RNHRAN(H14NEU,N_BINS,L14NEU,W14NEU,VERT_X)
0368 CALL RNHRAN(H24NEU,N_BINS,L24NEU,W24NEU,VERT_Y)
0369 CALL RNHRAN(H34NEU,N_BINS,L34NEU,W34NEU,COS_DX)
0370 CALL RNHRAN(H44NEU,N_BINS,L44NEU,W44NEU,COS_DY)
0371 ELSEIF (E_KINE.GE.81.000.AND.E_KINE.LT.243.00) THEN
0372 CALL RNHRAN(H15NEU,N_BINS,L15NEU,W15NEU,VERT_X)
0373 CALL RNHRAN(H25NEU,N_BINS,L25NEU,W25NEU,VERT_Y)
0374 CALL RNHRAN(H35NEU,N_BINS,L35NEU,W35NEU,COS_DX)
0375 CALL RNHRAN(H45NEU,N_BINS,L45NEU,W45NEU,COS_DY)
0376 ELSEIF (E_KINE.GE.243.00.AND.E_KINE.LT.729.00) THEN
0377 CALL RNHRAN(H16NEU,N_BINS,L16NEU,W16NEU,VERT_X)
0378 CALL RNHRAN(H26NEU,N_BINS,L26NEU,W26NEU,VERT_Y)
0379 CALL RNHRAN(H36NEU,N_BINS,L36NEU,W36NEU,COS_DX)
0380 CALL RNHRAN(H46NEU,N_BINS,L46NEU,W46NEU,COS_DY)
0381 ELSEIF (E_KINE.GE.729.00.AND.E_KINE.LT.2187.0) THEN
0382 CALL RNHRAN(H17NEU,N_BINS,L17NEU,W17NEU,VERT_X)
0383 CALL RNHRAN(H27NEU,N_BINS,L27NEU,W27NEU,VERT_Y)
0384 CALL RNHRAN(H37NEU,N_BINS,L37NEU,W37NEU,COS_DX)
0385 CALL RNHRAN(H47NEU,N_BINS,L47NEU,W47NEU,COS_DY)
0386 ELSEIF (E_KINE.GE.2187.0.AND.E_KINE.LT.7000.0) THEN
0387 CALL RNHRAN(H18NEU,N_BINS,L18NEU,W18NEU,VERT_X)
0388 CALL RNHRAN(H28NEU,N_BINS,L28NEU,W28NEU,VERT_Y)
0389 CALL RNHRAN(H38NEU,N_BINS,L38NEU,W38NEU,COS_DX)
0390 CALL RNHRAN(H48NEU,N_BINS,L48NEU,W48NEU,COS_DY)
0391 ENDIF
0392 ELSE
0393 PRINT*,'ERROR: unknown particle flavor'
0394 STOP
0395 ENDIF
0396 IF (ACC_EV(ID_PDG,E_KINE).EQ.0) GOTO 111
0397 WEIGHT = 1.
0398 ENDIF
0399
0400 IF (GENMOD.EQ.2) THEN ! event reading mode
0401 222 WEIGHT = 0.
0402 IF (N_READ.EQ.F1N_EV) RETURN
0403 READ(22,*) ID_PDG,WEIGHT,E_KINE,VERT_X,VERT_Y,COS_DX,COS_DY
0404 N_READ = N_READ + 1.
0405 IF (ACC_EV(ID_PDG,E_KINE).EQ.1) THEN
0406 IF (ID_PDG.EQ. -13) R_MU_P = R_MU_P + WEIGHT ! mu+
0407 IF (ID_PDG.EQ. 13) R_MU_M = R_MU_M + WEIGHT ! mu-
0408 IF (ID_PDG.EQ. 211) R_PI_P = R_PI_P + WEIGHT ! pi+
0409 IF (ID_PDG.EQ.-211) R_PI_M = R_PI_M + WEIGHT ! pi-
0410 IF (ID_PDG.EQ. 321) R_KA_P = R_KA_P + WEIGHT ! K+
0411 IF (ID_PDG.EQ.-321) R_KA_M = R_KA_M + WEIGHT ! K-
0412 IF (ID_PDG.EQ.2212) R_PROT = R_PROT + WEIGHT ! p+
0413 IF (ID_PDG.EQ.2112) R_NEUT = R_NEUT + WEIGHT ! n0
0414 ELSE
0415 GOTO 222
0416 ENDIF
0417 SUM_BS = REAL(LHC_B1+LHC_B2) ! sum of beams
0418 WEIGHT = WEIGHT*SUM_BS
0419 ENDIF
0420
0421
0422 IF (GENMOD.EQ.3) THEN ! event reading mode
0423 223 WEIGHT = 0.
0424 C IF (N_READ.EQ.289945) RETURN
0425
0426 write(6,*) 'MAXLINE and LINE ',N_READ,MAXLINE
0427 C IF (N_READ.GE.289945) THEN
0428 IF (NINT(N_READ).GE.MAXLINE) THEN
0429 iret = -1
0430 return
0431 endif
0432 READ(22,*,END=333) NI,M15_ID,EF,W,X,Y,DCX,DCY,TOFF,PRIMEHITZ,
0433 & ZORIG,XORIG,YORIG,EORIG,WORIG,IORIG,KORIG
0434 C READ(22,*) ID_PDG,WEIGHT,E_KINE,VERT_X,VERT_Y,COS_DX,COS_DY
0435 IF( NILAST .NE. NI ) THEN
0436 NILAST = NI
0437 NPRIME = NPRIME + 1
0438 ENDIF
0439 N_READ = N_READ + 1.
0440 ID_PDG = IDCONVERT(M15_ID)
0441 WEIGHT = W*W0
0442 E_KINE = EF
0443 VERT_X = -Y
0444 VERT_Y = -X
0445 COS_DX = DCX
0446 COS_DY = DCY
0447 write(6,*) 'Here at N_READ ',N_READ,OFFSET,NI,EF,TOFF
0448 IF (ACC_EV(ID_PDG,E_KINE).EQ.1) THEN
0449 IF (ID_PDG.EQ. -13) R_MU_P = R_MU_P + WEIGHT ! mu+
0450 IF (ID_PDG.EQ. 13) R_MU_M = R_MU_M + WEIGHT ! mu-
0451 IF (ID_PDG.EQ. 211) R_PI_P = R_PI_P + WEIGHT ! pi+
0452 IF (ID_PDG.EQ.-211) R_PI_M = R_PI_M + WEIGHT ! pi-
0453 IF (ID_PDG.EQ. 321) R_KA_P = R_KA_P + WEIGHT ! K+
0454 IF (ID_PDG.EQ.-321) R_KA_M = R_KA_M + WEIGHT ! K-
0455 IF (ID_PDG.EQ.2212) R_PROT = R_PROT + WEIGHT ! p+
0456 IF (ID_PDG.EQ.2112) R_NEUT = R_NEUT + WEIGHT ! n0
0457 if( IW_MUO .eq. 1 ) then
0458 if( abs( id_pdg ) .eq. 13 ) nstack = nstack + 1
0459 endif
0460 if( IW_HAD .eq. 1 ) then
0461 if( abs( id_pdg ) .eq. 211 ) nstack = nstack + 1
0462 if( abs( id_pdg ) .eq. 321 ) nstack = nstack + 1
0463 if( abs( id_pdg ) .eq. 2212 ) nstack = nstack + 1
0464 if( abs( id_pdg ) .eq. 2112 ) nstack = nstack + 1
0465 endif
0466 ELSE
0467 GOTO 223
0468 ENDIF
0469 SUM_BS = REAL(LHC_B1+LHC_B2) ! sum of beams
0470 WEIGHT = WEIGHT*SUM_BS
0471 ENDIF
0472
0473 IF (GENMOD.GE.1) THEN
0474 ! number of generated particles
0475 NP_GEN = NP_GEN + 1.
0476 ! calculate HEP variables
0477 ! including coordinate transformations to detector coordinates
0478 ! and transformation to HEPEVT units (if necessary)
0479 VERT_X = VERT_X*10. ! [cm] -> [mm]
0480 VERT_Y = VERT_Y*10. ! [cm] -> [mm]
0481 M = P_MASS(ID_PDG)
0482 E = E_KINE + M
0483 ABSMOM = SQRT(E**2 - M**2)
0484 IF (GENMOD.EQ.3) THEN
0485 PX = -ABSMOM*COS_DY
0486 PY = ABSMOM*COS_DX
0487 ELSE
0488 PX = -ABSMOM*COS_DX
0489 PY = ABSMOM*COS_DY
0490 ENDIF
0491 PZ = -SQRT(ABSMOM**2 - PX**2 -PY**2)
0492 VX = VERT_X
0493 VY = VERT_Y
0494 VZ = Z_ZERO
0495 cep T0 = T_ZERO*SP_O_L
0496 T0 = (T_ZERO + idx_shift_bx*BXNS) * SP_O_L
0497 ! T0 calc from Mars added time shift too
0498 if( genmod .eq. 3 ) then
0499 VZ = 22600.0
0500 T0 = -2.0*TOFF*8.3e7+(idx_shift_bx*BXNS* SP_O_L)
0501 endif
0502
0503 P_BM_2 = 0.5
0504 IF (LHC_B1.EQ.1.AND.LHC_B2.EQ.0) P_BM_2 = 0.0
0505 IF (LHC_B1.EQ.0.AND.LHC_B2.EQ.1) P_BM_2 = 1.0
0506 CALL RANLUX(RAN01,1)
0507 IF(RAN01(1).LT.P_BM_2) THEN ! LHC beam 2
0508 VZ = -VZ
0509 PZ = -PZ
0510 ENDIF
0511 ! fill HEPEVT common block
0512 NEVHEP = NP_GEN
0513 NHEP = 1 ! number of particles
0514 ISTHEP(1) = 1 ! status: final state
0515 IDHEP(1) = ID_PDG ! flavor code
0516 JMOHEP(1,1) = 0 ! 1st mother
0517 JMOHEP(2,1) = 0 ! 2nd mother
0518 JDAHEP(1,1) = 0 ! 1st daughter
0519 JDAHEP(2,1) = 0 ! 2nd daughter
0520 PHEP(1,1) = PX ! [GeV/c]
0521 PHEP(2,1) = PY ! [GeV/c]
0522 PHEP(3,1) = PZ ! [GeV/c]
0523 PHEP(4,1) = E ! [GeV]
0524 PHEP(5,1) = M ! [GeV/c^2]
0525 VHEP(1,1) = VX ! [mm]
0526 VHEP(2,1) = VY ! [mm]
0527 VHEP(3,1) = VZ ! [mm]
0528 VHEP(4,1) = T0 ! [mm/c]
0529 WGTMCP = WEIGHT ! event weight
0530 NVRMCP = 1 ! number of partons
0531 VARMCP(NVRMCP) = 0. ! parton p_t (to VARMCP(1))
0532 nmulti = 1
0533 eventweightlh = WGTMCP
0534 eventweightmulti(1) = WGTMCP
0535 www = weight
0536 ENDIF
0537
0538 RETURN
0539 333 RETURN
0540 END
0541
0542 ************************************************************************
0543 INTEGER FUNCTION ACC_EV(ID_PDG,E_KINE) ! by droll (17/12/04)
0544 * check whether event is acceptable or not
0545 ************************************************************************
0546 IMPLICIT NONE
0547 #include "GeneratorInterface/BeamHaloGenerator/interface/bhgcons.inc"
0548 #include "GeneratorInterface/BeamHaloGenerator/interface/bhgp_info.inc"
0549 #include "GeneratorInterface/BeamHaloGenerator/interface/bhgctrl.inc"
0550 INTEGER ID_PDG
0551 REAL E_KINE
0552
0553 ACC_EV = 0 ! default: do not accept event
0554 IF (IW_MUO.EQ.1) THEN
0555 IF (E_KINE.GT.EMUMIN.AND.E_KINE.LT.EMUMAX) THEN
0556 IF (ID_PDG.EQ. -13) ACC_EV = 1 ! accept mu+
0557 IF (ID_PDG.EQ. 13) ACC_EV = 1 ! accept mu-
0558 ENDIF
0559 ENDIF
0560 IF (IW_HAD.EQ.1) THEN
0561 IF (E_KINE.GT.EPIMIN.AND.E_KINE.LT.EPIMAX) THEN
0562 IF (ID_PDG.EQ. 211) ACC_EV = 1 ! accept pi+
0563 IF (ID_PDG.EQ.-211) ACC_EV = 1 ! accept pi-
0564 ENDIF
0565 IF (E_KINE.GT.EKAMIN.AND.E_KINE.LT.EKAMAX) THEN
0566 IF (ID_PDG.EQ. 321) ACC_EV = 1 ! accept K+
0567 IF (ID_PDG.EQ.-321) ACC_EV = 1 ! accept K-
0568 ENDIF
0569 IF (E_KINE.GT.EPRMIN.AND.E_KINE.LT.EPRMAX) THEN
0570 IF (ID_PDG.EQ.2212) ACC_EV = 1 ! accept p+
0571 ENDIF
0572 IF (E_KINE.GT.ENEMIN.AND.E_KINE.LT.ENEMAX) THEN
0573 IF (ID_PDG.EQ.2112) ACC_EV = 1 ! accept n0
0574 ENDIF
0575 ENDIF
0576
0577 RETURN
0578
0579 END
0580
0581 ************************************************************************
0582 INTEGER FUNCTION RANFLA() ! by droll (18/12/04)
0583 * generate random particle flavors
0584 ************************************************************************
0585 IMPLICIT NONE
0586 #include "GeneratorInterface/BeamHaloGenerator/interface/bhgp_info.inc"
0587 DOUBLE PRECISION RAN01(1),L_1ST
0588 DOUBLE PRECISION L_MUP,L_MUM,L_PIP,L_PIM,L_KAP,L_KAM,L_PRO,L_NEU
0589
0590 L_1ST = 0D0
0591 L_MUP = FR_MUP + L_1ST
0592 L_MUM = FR_MUM + L_MUP
0593 L_PIP = FR_PIP + L_MUM
0594 L_PIM = FR_PIM + L_PIP
0595 L_KAP = FR_KAP + L_PIM
0596 L_KAM = FR_KAM + L_KAP
0597 L_PRO = FR_PRO + L_KAM
0598 L_NEU = FR_NEU + L_PRO
0599 CALL RM48(RAN01,1)
0600 IF (RAN01(1).GE.L_1ST.AND.RAN01(1).LT.L_MUP) THEN
0601 RANFLA = -13 ! mu+
0602 ELSEIF (RAN01(1).GE.L_MUP.AND.RAN01(1).LT.L_MUM) THEN
0603 RANFLA = 13 ! mu-
0604 ELSEIF (RAN01(1).GE.L_MUM.AND.RAN01(1).LT.L_PIP) THEN
0605 RANFLA = 211 ! pi+
0606 ELSEIF (RAN01(1).GE.L_PIP.AND.RAN01(1).LT.L_PIM) THEN
0607 RANFLA = -211 ! pi-
0608 ELSEIF (RAN01(1).GE.L_PIM.AND.RAN01(1).LT.L_KAP) THEN
0609 RANFLA = 321 ! K+
0610 ELSEIF (RAN01(1).GE.L_KAP.AND.RAN01(1).LT.L_KAM) THEN
0611 RANFLA = -321 ! K-
0612 ELSEIF (RAN01(1).GE.L_KAM.AND.RAN01(1).LT.L_PRO) THEN
0613 RANFLA = 2212 ! p+
0614 ELSEIF (RAN01(1).GE.L_PRO.AND.RAN01(1).LT.L_NEU) THEN
0615 RANFLA = 2112 ! n0
0616 ELSE
0617 RANFLA = 0 ! undefined
0618 ENDIF
0619
0620 RETURN
0621 END
0622
0623 ************************************************************************
0624 REAL FUNCTION P_MASS(ID_PDG) ! by droll (18/12/04)
0625 * provide particle mass for a certain flavor
0626 ************************************************************************
0627 IMPLICIT NONE
0628 #include "GeneratorInterface/BeamHaloGenerator/interface/bhgcons.inc"
0629 INTEGER ID_PDG
0630
0631 P_MASS = 0. ! default: massless
0632 IF (ID_PDG.EQ. -13) P_MASS = M_MUON ! mu+
0633 IF (ID_PDG.EQ. 13) P_MASS = M_MUON ! mu-
0634 IF (ID_PDG.EQ. 211) P_MASS = M_PION ! pi+
0635 IF (ID_PDG.EQ.-211) P_MASS = M_PION ! pi-
0636 IF (ID_PDG.EQ. 321) P_MASS = M_KAON ! K+
0637 IF (ID_PDG.EQ.-321) P_MASS = M_KAON ! K-
0638 IF (ID_PDG.EQ.2212) P_MASS = M_PROT ! p+
0639 IF (ID_PDG.EQ.2112) P_MASS = M_NEUT ! n0
0640
0641 RETURN
0642 END