]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ISAJET/code/elctrn.F
Adding the track fit residuals as a consequence of the ExB distortions (Marian)
[u/mrichter/AliRoot.git] / ISAJET / code / elctrn.F
1 #include "isajet/pilot.h"
2       SUBROUTINE ELCTRN
3 C          GENERATE E+ E- ----> QK QB EVENT USING SIGEE CROSS SECTION.
4 #include "isajet/itapes.inc"
5 #include "isajet/jetsig.inc"
6 #include "isajet/eepar.inc"
7 #include "isajet/primar.inc"
8 #include "isajet/pjets.inc"
9 #include "isajet/pinits.inc"
10 #include "isajet/jetpar.inc"
11 #include "isajet/jetlim.inc"
12 #include "isajet/const.inc"
13 #include "isajet/totals.inc"
14 #include "isajet/partcl.inc"
15 #include "isajet/xmssm.inc"
16 #include "isajet/sstype.inc"
17       REAL AMQ(2),SSXLAM,RSH,XD,GAM,V,DUMMY
18       INTEGER MSUPL,MSDNL,MSSTL,MSCHL,MSBT1,MSTP1,
19      $MSUPR,MSDNR,MSSTR,MSCHR,MSBT2,MSTP2,MSW1,MSW2,
20      $MSNEL,MSEL,MSNML,MSMUL,MSNTL,MSTAU1,MSER,MSMUR,MSTAU2,IDSS(85)
21       PARAMETER (MSUPL=-ISUPL)
22       PARAMETER (MSDNL=-ISDNL)
23       PARAMETER (MSSTL=-ISSTL)
24       PARAMETER (MSCHL=-ISCHL)
25       PARAMETER (MSBT1=-ISBT1)
26       PARAMETER (MSTP1=-ISTP1)
27       PARAMETER (MSUPR=-ISUPR)
28       PARAMETER (MSDNR=-ISDNR)
29       PARAMETER (MSSTR=-ISSTR)
30       PARAMETER (MSCHR=-ISCHR)
31       PARAMETER (MSBT2=-ISBT2)
32       PARAMETER (MSTP2=-ISTP2)
33       PARAMETER (MSW1=-ISW1)
34       PARAMETER (MSW2=-ISW2)
35       PARAMETER (MSNEL=-ISNEL)
36       PARAMETER (MSEL=-ISEL)
37       PARAMETER (MSNML=-ISNML)
38       PARAMETER (MSMUL=-ISMUL)
39       PARAMETER (MSNTL=-ISNTL)
40       PARAMETER (MSTAU1=-ISTAU1)
41       PARAMETER (MSER=-ISER)
42       PARAMETER (MSMUR=-ISMUR)
43       PARAMETER (MSTAU2=-ISTAU2)
44       DIMENSION LISTJ(29)
45       DATA LISTJ/9,1,-1,2,-2,3,-3,4,-4,5,-5,6,-6,
46      111,-11,12,-12,13,-13,14,-14,15,-15,16,-16,10,80,-80,90/
47       DATA IDSS/0,
48      $ISUPL,MSUPL,ISDNL,MSDNL,ISSTL,MSSTL,ISCHL,MSCHL,ISBT1,MSBT1,
49      $ISTP1,MSTP1,
50      $ISUPR,MSUPR,ISDNR,MSDNR,ISSTR,MSSTR,ISCHR,MSCHR,ISBT2,MSBT2,
51      $ISTP2,MSTP2,ISW1,MSW1,ISW2,MSW2,ISZ1,ISZ2,ISZ3,ISZ4,
52      $ISNEL,MSNEL,ISEL,MSEL,ISNML,MSNML,ISMUL,MSMUL,
53      $ISNTL,MSNTL,ISTAU1,MSTAU1,ISER,MSER,ISMUR,MSMUR,
54      $ISTAU2,MSTAU2,
55      $9,1,-1,2,-2,3,-3,4,-4,5,-5,6,-6,11,-11,12,-12,13,-13,
56      $14,-14,15,-15,16,-16,10,80,-80,90,82,83,84,86,-86/
57 C          ENTRY
58       NPTCL=0
59       NREJ=-1
60       SIGMA=0.
61       NSIGS=0
62       DO 10 I=1,MXSIGS
63 10    SIGS(I)=0.
64       WT=1.
65 C          GENERATE NEXT KINEMATIC POINT
66 100   CONTINUE
67       NREJ=NREJ+1
68       IF(NREJ.GT.NTRIES) GO TO 9999
69       NKINPT=NKINPT+1
70       SUMWT=SUMWT+SIGMA*WT
71       IF (IBREM) THEN
72         RSH=RSHMIN+(RSHMAX-RSHMIN)*RANF()
73         SHAT=RSH**2
74         QSQ=SHAT
75         XD=(1.-SHAT/SCM)*(-1.+2*RANF())
76         X1=(XD+SQRT(XD**2+4*SHAT/SCM))/2.
77         X2=X1-XD
78       ELSE
79         SHAT=SCM
80         RSH=SQRT(SHAT)
81       END IF  
82       PHI(1)=PHIMIN(1)+(PHIMAX(1)-PHIMIN(1))*RANF()
83       PHI(2)=AMOD(PHI(1)+PI,2.*PI)
84       CTH(1)=XJMIN(1)+(XJMAX(1)-XJMIN(1))*RANF()
85       CTH(2)=-CTH(1)
86       DO 110 I=1,2
87       TH(I)=ACOS(CTH(I))
88       STH(I)=SIN(TH(I))
89       PT(I)=HALFE*STH(I)
90       YJ(I)=.5*ALOG((1+CTH(I))/(1-CTH(I)))
91       XJ(I)=CTH(I)
92 110   CONTINUE
93 C          CALCULATE CROSS SECTION
94       IF (GOMSSM) THEN
95         CALL SIGSSE
96       ELSE
97         CALL SIGEE
98       END IF
99       WT=XJMAX(1)-XJMIN(1)
100 C          TEST CROSS SECTION
101       IF(SIGMA.GT.SGMXEE) SGMXEE=SIGMA
102       IF(SIGMA.LT.SGMXEE*RANF()) GO TO 100
103       SUMWT=SUMWT+SIGMA*WT
104       NKEEP=NKEEP+1
105 C          SELECT JET TYPES
106       SIGINV=1./SIGMA
107       TRY=RANF()
108       SUM=0.
109       DO 200 I=1,NSIGS
110       SUM=SUM+SIGS(I)*SIGINV
111       IF(SUM.LT.TRY) GO TO 200
112 C          FIND REACTION
113       ISIGS=I
114       SIGEVT=SIGS(ISIGS)
115       II=INOUT(I)/IOPAK**2
116       JETTYP(1)=MOD(II,IOPAK)
117       II=II/IOPAK
118       JETTYP(2)=MOD(II,IOPAK)
119       GO TO 210
120 200   CONTINUE
121       GO TO 9998
122 C          SET PJETS. RESET P AND PT INCLUDING MASSES.
123 210   CONTINUE
124       IF (GOMSSM) THEN
125         AMQ(1)=AMASS(IDSS(JETTYP(1)))
126         AMQ(2)=AMASS(IDSS(JETTYP(2)))
127       ELSE
128         AMQ(1)=AMASS(LISTJ(JETTYP(1)))
129         AMQ(2)=AMASS(LISTJ(JETTYP(2)))
130       END IF
131       PCM=SQRT(SSXLAM(SHAT,AMQ(1)**2,AMQ(2)**2))/2./RSH
132       DO 220 I=1,2
133       PJETS(1,I)=PCM*STH(I)*COS(PHI(I))
134       PJETS(2,I)=PCM*STH(I)*SIN(PHI(I))
135       PJETS(3,I)=PCM*CTH(I)
136       PJETS(4,I)=SQRT(PCM**2+AMQ(I)**2)
137       PJETS(5,I)=AMQ(I)
138       IF (GOMSSM) THEN
139         IDJETS(I)=IDSS(JETTYP(I))
140       ELSE
141         IDJETS(I)=LISTJ(JETTYP(I))
142       END IF
143       P(I)=PCM
144       PT(I)=P(I)*STH(I)
145 220   CONTINUE
146 C     IF BREMSSTRAHLUNG, THEN BOOST TO LAB FRAME
147       IF (IBREM) THEN
148         GAM=(X1+X2)*ECM/2./RSH
149         V=-SIGN(1.,(X1-X2))*SQRT(ABS(1.-1./GAM)*(1.+1./GAM))
150         DO I=1,2
151           DUMMY=PJETS(4,I)
152           PJETS(4,I)=GAM*(PJETS(4,I)-V*PJETS(3,I))
153           PJETS(3,I)=GAM*(PJETS(3,I)-V*DUMMY)
154         END DO
155       END IF
156       RETURN
157 C          ERROR MESSAGES
158 9998  CONTINUE
159       CALL PRTEVT(0)
160       WRITE(ITLIS,1010)
161 1010  FORMAT(//' ERROR IN ELCTRN...NO GOOD JET TYPES FOUND')
162       STOP 99
163 9999  CONTINUE
164       CALL PRTEVT(0)
165       WRITE(ITLIS,1020) NTRIES
166 1020  FORMAT(//' IT IS TAKING MORE THAN',I5,' TRIES TO GENERATE AN',
167      $' EVENT. CHECK LIMITS OR INCREASE NTRIES.')
168       STOP 99
169       END