COSMOS v7.655  COSMOSv7655
(AirShowerMC)
cloreb.f File Reference

Go to the source code of this file.

Functions/Subroutines

subroutine cloreb (i, gb, q, p)
 

Function/Subroutine Documentation

◆ cloreb()

subroutine cloreb ( integer  i,
type(fmom gb,
type(ptcl q,
type(ptcl p 
)

Definition at line 82 of file cloreb.f.

References clorep().

Referenced by cibstpol().

82  implicit none
83 #include "Zptcl.h"
84  type(fmom):: gb
85  type(ptcl):: q, p
86  integer i
87 
88  type(ptcl):: qq
89  type(fmom):: a, b, beta
90  real*8 betanorm, anorm
91 
92 #ifdef USESAVE
93  save a, b, beta, betanorm
94 #endif
95 
96  if(i .eq. 1) then
97 #ifdef NEXT486
98  betanorm = gb%x**2 + gb%y**2 + gb%z**2
99  if(betanorm .ne. 0.) then
100  betanorm = sqrt(betanorm)
101  beta%x = gb%x/betanorm
102  beta%y = gb%y/betanorm
103  beta%z = gb%z/betanorm
104  a%x= beta%y
105  a%y = -beta%x
106  a%z= 0
107  anorm = a%x**2 + a%y**2
108  if(anorm .eq. 0.) then
109  a%x = 1.
110  a%y = 0.
111  a%z = 0.
112  else
113  anorm = sqrt(anorm)
114  a%x = a%x/anorm
115  a%y = a%y/anorm
116  endif
117 !
118  b%x = beta%y*a%z - beta%z * a%y
119  b%y = beta%z*a%x - beta%x* a%z
120  b%z = beta%x*a%y - beta%y* a%x
121  endif
122  endif
123  if(betanorm .eq. 0.) then
124  p = q
125  if(gb%z .lt. 0.) then
126  p%fm%z = - p%fm%z
127  p%fm%y = - p%fm%y
128  p%fm%x = - p%fm%x
129  endif
130  else
131 ! assume that qx is a-direction and qy is b direction
132 
133  qq = q
134  qq%fm%x = q%fm%x*a%x + q%fm%y*b%x +
135  * q%fm%z*beta%x
136  qq%fm%y = q%fm%x*a%y + q%fm%y*b%y +
137  * q%fm%z*beta%y
138  qq%fm%z = q%fm%x*a%z + q%fm%y*b%z +
139  * q%fm%z*beta%z
140  qq%fm%e = q%fm%e
141 ! Lorentz boost by gb
142  call clorep(i, gb, qq, p)
143  endif
144 #else
145  betanorm = gb%p(1)**2 + gb%p(2)**2 + gb%p(3)**2
146  if(betanorm .ne. 0.) then
147  betanorm = sqrt(betanorm)
148  beta%p(1) = gb%p(1)/betanorm
149  beta%p(2) = gb%p(2)/betanorm
150  beta%p(3) = gb%p(3)/betanorm
151  a%p(1)= beta%p(2)
152  a%p(2) = -beta%p(1)
153  a%p(3)= 0
154  anorm = a%p(1)**2 + a%p(2)**2
155  if(anorm .eq. 0.) then
156  a%p(1) = 1.
157  a%p(2) = 0.
158  a%p(3) = 0.
159  else
160  anorm = sqrt(anorm)
161  a%p(1) = a%p(1)/anorm
162  a%p(2) = a%p(2)/anorm
163  endif
164 !
165  b%p(1) = beta%p(2)*a%p(3) - beta%p(3) * a%p(2)
166  b%p(2) = beta%p(3)*a%p(1) - beta%p(1)* a%p(3)
167  b%p(3) = beta%p(1)*a%p(2) - beta%p(2)* a%p(1)
168  endif
169  endif
170  if(betanorm .eq. 0.) then
171  p = q
172  if(gb%p(3) .lt. 0.) then
173  p%fm%p(3) = - p%fm%p(3)
174  p%fm%p(2) = - p%fm%p(2)
175  p%fm%p(1) = - p%fm%p(1)
176  endif
177  else
178 ! assume that qx is a-direction and qy is b direction
179 !
180  qq = q
181  qq%fm%p(1) = q%fm%p(1)*a%p(1) + q%fm%p(2)*b%p(1) +
182  * q%fm%p(3)*beta%p(1)
183  qq%fm%p(2) = q%fm%p(1)*a%p(2) + q%fm%p(2)*b%p(2) +
184  * q%fm%p(3)*beta%p(2)
185  qq%fm%p(3) = q%fm%p(1)*a%p(3) + q%fm%p(2)*b%p(3) +
186  * q%fm%p(3)*beta%p(3)
187  qq%fm%p(4) = q%fm%p(4)
188 ! Lorentz boost by gb
189  call clorep(i, gb, qq, p)
190  endif
191 #endif
nodes i
Definition: Zptcl.h:72
********************block data cblkHeavy ********************integer j data *HeavyG2symbol p
Definition: cblkHeavy.h:7
real(4), save a
Definition: cNRLAtmos.f:20
subroutine clorep(j, gb, q, p)
Definition: clorep.f:88
real(4), save b
Definition: cNRLAtmos.f:21
Definition: Zptcl.h:75
Here is the call graph for this function:
Here is the caller graph for this function: