4 SUBROUTINE PHCORK(MODCOR)
6 C.----------------------------------------------------------------------
8 C. PHCORK: corrects kinmatics of subbranch needed if host program
9 C. produces events with the shaky momentum conservation
11 C. Input Parameters: Common /PHOEVT/, MODCOR
12 C. MODCOR >0 type of action
14 C. =2 corrects energy from mass
15 C. =3 corrects mass from energy
16 C. =4 corrects energy from mass for
17 C. particles up to .4 GeV mass,
18 C. for heavier ones corrects mass,
21 C. Output Parameters: corrected /PHOEVT/
23 C. Author(s): P.Golonka, Z. Was Created at: 01/02/99
24 C. Modified : 08/02/99
25 C.----------------------------------------------------------------------
27 PARAMETER (NMXPHO=10000)
29 REAL*8 M,P2,PX,PY,PZ,E,EN,MCUT
30 INTEGER MODCOR,MODOP,I,IEV,IPRINT
31 INTEGER IDPHO,ISTPHO,JDAPHO,JMOPHO,NEVPHO,NPHO
33 COMMON/PHOEVT/NEVPHO,NPHO,ISTPHO(NMXPHO),IDPHO(NMXPHO),
34 &JMOPHO(2,NMXPHO),JDAPHO(2,NMXPHO),PPHO(5,NMXPHO),VPHO(4,NMXPHO)
49 WRITE(PHLUN,*) 'Message from PHCORK(MODCOR):: initialization'
51 WRITE(PHLUN,*) 'MODOP=1 -- no corrections on event: DEFAULT'
52 ELSEIF (MODOP.EQ.2) THEN
53 WRITE(PHLUN,*) 'MODOP=2 -- corrects Energy from mass'
54 ELSEIF (MODOP.EQ.3) THEN
55 WRITE(PHLUN,*) 'MODOP=3 -- corrects mass from Energy'
56 ELSEIF (MODOP.EQ.4) THEN
57 WRITE(PHLUN,*) 'MODOP=4 -- corrects Energy from mass to Mcut'
58 WRITE(PHLUN,*) ' and mass from energy above Mcut '
60 WRITE(PHLUN,*) 'Mcut=',MCUT,'GeV'
62 WRITE(PHLUN,*) 'PHCORK wrong MODCOR=',MODCOR
68 IF (MODOP.EQ.0.AND.MODCOR.EQ.0) THEN
69 WRITE(PHLUN,*) 'PHCORK lack of initialization'
84 C -----------------------
85 C In this case we do nothing
87 ELSEIF(MODOP.EQ.2) THEN
88 C -----------------------
89 CC lets loop thru all daughters and correct their energies
90 CC according to E^2=p^2+m^2
98 P2=PPHO(1,I)**2+PPHO(2,I)**2+PPHO(3,I)**2
100 EN=SQRT( PPHO(5,I)**2 + P2)
103 & WRITE(PHLUN,*) 'CORRECTING ENERGY OF ',I,':',
111 ELSEIF(MODOP.EQ.3) THEN
112 C -----------------------
114 CC lets loop thru all daughters and correct their masses
115 CC according to E^2=p^2+m^2
124 P2=PPHO(1,I)**2+PPHO(2,I)**2+PPHO(3,I)**2
126 M=SQRT(ABS( PPHO(4,I)**2 - P2))
129 & WRITE(PHLUN,*) 'CORRECTING MASS OF ',I,':',
137 ELSEIF(MODOP.EQ.4) THEN
138 C -----------------------
140 CC lets loop thru all daughters and correct their masses
141 CC or energies according to E^2=p^2+m^2
149 P2=PPHO(1,I)**2+PPHO(2,I)**2+PPHO(3,I)**2
151 M=SQRT(ABS( PPHO(4,I)**2 - P2))
155 & WRITE(PHLUN,*) 'CORRECTING MASS OF ',I,':',
161 EN=SQRT( PPHO(5,I)**2 + P2)
164 & WRITE(PHLUN,*) 'CORRECTING ENERGY OF ',I,':',
175 IF (IPRINT.EQ.1) THEN
176 WRITE(PHLUN,*) 'CORRECTING MOTHER'
177 WRITE(PHLUN,*) 'PX:',PPHO(1,1),'=>',PX-PPHO(1,2)
178 WRITE(PHLUN,*) 'PY:',PPHO(2,1),'=>',PY-PPHO(2,2)
179 WRITE(PHLUN,*) 'PZ:',PPHO(3,1),'=>',PZ-PPHO(3,2)
180 WRITE(PHLUN,*) ' E:',PPHO(4,1),'=>',E-PPHO(4,2)
183 PPHO(1,1)=PX-PPHO(1,2)
184 PPHO(2,1)=PY-PPHO(2,2)
185 PPHO(3,1)=PZ-PPHO(3,2)
186 PPHO(4,1)=E -PPHO(4,2)
188 P2=PPHO(1,1)**2+PPHO(2,1)**2+PPHO(3,1)**2
190 IF (PPHO(4,1)**2.GT.P2) THEN
191 M=SQRT( PPHO(4,1)**2 - P2 )
193 & WRITE(PHLUN,*) ' M:',PPHO(5,1),'=>',M