-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathphysics_kaon.f
More file actions
541 lines (460 loc) · 15.3 KB
/
physics_kaon.f
File metadata and controls
541 lines (460 loc) · 15.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
real*8 function peeK(vertex,main,survivalprob)
*
* Purpose:
* This routine calculates N(e,e'K)Y cross sections.
*
* variables:
*
* output:
* peeK !d5sigma/(dE_e'*dOmega_e'*Omega_K) - fm^2/MeV/sr^2 ???
*
implicit none
include 'simulate.inc'
type(event_main):: main
type(event):: vertex
real*8 S,phi
real*8 sigma_eek,sigma_saghai
real*8 k_eq,gtpr,fac
real*8 tfcos,tfsin
real*8 pathlen,zaero,betak,gammak,p_kaon
real*8 survivalprob
! Variables calculated in transformation to gamma-NUCLEON center of mass.
real*8 gstar,bstar,bstarx,bstary,bstarz !beta of boost to C.M.
real*8 nustar,qstar,qstarx,qstary,qstarz !q in C.M.
real*8 ekcm,pkcm,pkcmx,pkcmy,pkcmz !p_hadron in C.M.
real*8 ebeamcm,pbeamcm,pbeamcmx,pbeamcmy,pbeamcmz !p_beam in C.M.
real*8 etarcm,ptarcm,ptarcmx,ptarcmy,ptarcmz !p_fermi in C.M.
real*8 thetacm,phicm,phiqn,jacobian,jac_old
real*8 sig_factorized
* Calculate velocity of PHOTON-NUCLEON C.M. system in the lab frame. Use beta
* and gamma of the cm system (bstar and gstar) to transform particles into
* c.m. frame. Define z along the direction of q, and x to be along the
* direction of the pion momentum perpendicular to q.
call transform_to_cm(vertex,main,
& gstar,bstar,bstarx,bstary,bstarz,
& nustar,qstar,qstarx,qstary,qstarz,
& ekcm,pkcm,pkcmx,pkcmy,pkcmz,
& ebeamcm,pbeamcm,pbeamcmx,pbeamcmy,pbeamcmz,
& etarcm,ptarcm,ptarcmx,ptarcmy,ptarcmz,
& thetacm,phicm,phiqn,jacobian,jac_old)
* Jacobian goes from dt dphi_cm --> dOmega_lab
* Cross section is in terms of dOmega_cm (not dt dphi_cm), so need
* to include dOmega_cm --> dt dphi_cm jacobian (which is 1/2.*pk_cm*q_cm)
jacobian = jacobian/(2.*pkcm*qstar)
jac_old = jac_old/(2.*pkcm*qstar)
main%thetacm = thetacm
main%phicm = phicm
main%pcm = pkcm
main%davejac = jacobian
main%johnjac = jac_old !approx. assuming collinear boost.
! write (6,*) jacobian,jac_old,100.*(jacobian-jac_old)/jacobian,'%'
* calculate some kinematical variables
* 'f' and 'fer' indicate fermi momenta. 'star' or 'cm' indicate CM system
tfcos = pferx*vertex%uq%x+pfery*vertex%uq%y+pferz*vertex%uq%z
if(tfcos-1..gt.0..and.tfcos-1..lt.1.e-8)tfcos=1.0
tfsin = sqrt(1.-tfcos**2)
s = (vertex%nu+efer)**2-(vertex%q+pfer*tfcos)**2-(pfer*tfsin)**2
main%wcm = sqrt(s)
*******************************************************************************
* Get cross section in photon-nucleon center of mass. sigcm1 is Saghai
* model (in eekeek.f). sigcm2 is factorized model (Doug Koltenuk).
*NOTE: wants odd sign/units for s,q2,etc... Also, theta is calculated
* above, but phi is not, SO WE ARE ALWAYS CALCULATING FOR PHI=0!!
if (targ%Mrec_struck.lt.1150.) then !lambda production.
call eekeek(s/1.e6,vertex%q2,main%thetacm,main%theta_pq,phi,main%epsilon,sigma_saghai)
else
call eekeeks(s/1.e6,vertex%q2,main%thetacm,main%theta_pq,phi,main%epsilon,sigma_saghai)
endif
ntup%sigcm1 = sigma_saghai
* Factorization model (CURRENTLY SET UP FOR HYDROGEN ONLY!!!)
ntup%sigcm2 = sig_factorized(vertex%q2,main%wcm,main%t,
1 pkcm,targ%Mrec_struck,main%epsilon)
* Choose the cross section model to use by default.
! sigma_eek = ntup.sigcm1 !Saghai
sigma_eek = ntup%sigcm2 !Factorized model
ntup%sigcm = sigma_eek
* Virtual photon to electron beam flux conversion factor
* DJG,2000: Replace targ.Mtar_struck in denominator of gammaflux with more
* general efer-pfer*tfcos, for pfer =0 this reverts to old form
! k_eq = (s-targ%Mtar_struck**2)/2./(efer-pfer*tfcos)
* JRA,2001: Go back to original version - more consistent with phase space used
* in the subroutine (according to DJG - see gaskell_model.ps)
k_eq = (main%wcm**2-targ%Mtar_struck**2)/2./targ%Mtar_struck
* 'sig' is two-fold C.M. cross section: d2sigma/Omega_cm [ub/sr].
* Convert from dt dOmega_cm --> dOmega_lab using 'jacobian' [ub/sr]
* Convert to 5-fold by multiplying by flux factor, gtpr [1/MeV]
* to give d5sigma/dOmega_pi/dOmega_e/dE_e [ub/Mev/sr]
* Note that 'jacobian' above is the full jacobian from generate_cm,
* (dt dphi_cm --> dOmega_lab) times 2*pkcm*qcm (dOmega_cm --> dt dphi_cm).
*
* Note that there is an additional factor 'fac' included with gtpr. This
* takes into account pieces in the flux factor that are neglected (=1) in
* colinear collisions. The flux factor is |v_1-v_2| * 2E_1 * 2E_2.
* For a stationary target, v_2=0 and so velocity term is v_1=1 (electron
* beam), and E_2=M_2. For collinear boost, the flux factor can be expressed
* in a way that is lorenz invariant, and so can be used for lab or C.M.
* For a NON-COLLINEAR boost, there are two changes. First, the |v| term
* becomes 1 - (z component of pfer)/efer. Second, E_2 isn't just the mass,
* it becomes E_fermi, so we have to remove targ.Mtar_struck (which is used
* for E_2 by default) and replace it with efer. Since the flux factor
* comes in the denominator, we replace the usual flux factor (gtpr) with
* gtpr*fac, where fac = 1/ ( (1-pfer_z/efer)* (efer/mtar_struck) ).
fac = 1./(1.-pferz*pfer/efer) * targ%Mtar_struck/efer
gtpr = alpha/2./(pi**2)*vertex%e%E/vertex%Ein*k_eq/vertex%q2/(1.-main%epsilon)
peeK = sigma_eek*jacobian*(gtpr*fac) !ub/MeV^2/rad-->ub/sr-->ub/MeV/sr
c If doing_decay=.false., generate survival probability for main.weight.
c main.FP.p.path is dist. to back of detector, want decay prob. at aerogel.
C NOTE THAT ZAERO IS TAKEN WITH RESPECT TO THE POSITION AT WHICH PATHLEN
C IS CALCULATED (USUALLY THE BACK OF THE CALORIMETER). IF THE DRIFTS IN
C MC_SOS_HUT ARE CHANGED, THEN THE STARTING POINT MAY BE DIFFERENT AND THESE
C NUMBERS MAY BE WRONG. AERO BETWEEN S2Y AND S2X IN SOS.
C Beta/Gamma for decay need to use momentum after radiation/eloss, not vertex
C momentum. Get particle momentum from main%SP%p%delta
if (.not.doing_decay) then
if (hadron_arm.eq.1) then
zaero = 0. !no aerogel yet, use full length.
else if (hadron_arm.eq.2) then
* zaero = -76. !aero at 270cm,last project=346(cal).
zaero = -82.8 !From Rick: aero at 263.2cm,last project=346(cal).
else if (hadron_arm.eq.3) then
zaero = -183. !aero at 130cm,last project=313(S2)
else if (hadron_arm.eq.4) then
zaero = -183.
endif
pathlen = main%FP%p%path + zaero*(1+main%FP%p%dx**2+main%FP%p%dy**2)
p_kaon = spec%p%P*(1.+main%SP%p%delta/100.)
betak = spec%p%P/sqrt(spec%p%P**2+Mh2)
gammak = 1./sqrt(1.-betak**2)
survivalprob = 1./exp(pathlen/(ctau*betak*gammak))
decdist = survivalprob !decdist in ntuple
endif
return
end
real*8 function sig_factorized(q2,w,t,pk,mrec)
* Purpose:
* This routine calculates p(e,e'K+)Lambda cross sections using a
* factorized cross section model from Doug Koltenuk's thesis.
*
* Cross section (at theta_cm=0, i.e. t=tmin) is F(W)*F(Q^2).
* The t-dependance at fixed Q^2,W is F(t)~exp(-A*t),
* so the cross section is F(W)*F(Q^2)*(F(t)/F(tmin))=F(W)*F(Q^2)*F(t-tmin)
*
* The model requires W, Q^2, t, and pkcm.
real*8 q2,w,t,pk,mrec !all in Mev,MeV**2
real*8 nu,q,nucm,qcm,tmin,pktest
real*8 w2val,q2val,tval,pkval,tminval !Vars. used in model (GeV)
real*8 fact_w,fact_q,fact_t
include 'constants.inc'
! Initialize some stuff. Start with intermediate variables, all in MeV.
nu = ( w**2 + q2 - mp**2 )/2./Mp
q = sqrt(q2+nu**2)
qcm = q*(Mp/W)
nucm = sqrt(qcm**2-q2)
tmin = -1.*(Mk2 - q2 - 2*nucm*sqrt(pk**2+mk2) + 2*qcm*pk )
! Check center of mass pk, since we can get it from w2
pktest = sqrt ( (w**2+mk2-mrec**2)**2/4./w**2 - mk2 )
if (abs((pktest-pk)/pk).gt.0.001) then
write(6,*) 'Kaon C.M. momentum passed to sig_factorized does not agree with'
write(6,*) 'the value calculated from W'
write(6,*) 'Passed,calculated=',pk,pktest
endif
! Parameters used by the model, all converted to GeV.
q2val = q2/1.e6
w2val = w**2/1.e6
pkval = pk/1000.
tval = t/1.e6
tminval = tmin/1.e6
if (mrec.lt.1150.) then !lambda production
fact_q = 1./(q2val+2.67)**2
fact_t = exp(-2.1*(tval-tminval))
if (w2val.ne.0) then !=0 for central event!!!
fact_w = 0.959*4.1959*pkval/(sqrt(w2val)*(w2val-0.93827**2))
fact_w = fact_w + (0.18*1.72**2*0.10**2) /
> ( (w2val-1.72**2)**2 + 1.72**2*0.10**2 )
endif
else
fact_q = 1./(q2val+0.79)**2
fact_t = exp(-1.0*(tval-tminval))
if (w2val.ne.0) then !=0 for central event!!!
fact_w = 0.959*4.1959*pkval/(sqrt(w2val)*(w2val-0.93827**2))
! fact_w = fact_w + (0.18*1.72**2*0.10**2) /
! > ( (w2val-1.72**2)**2 + 1.72**2*0.10**2 )
endif
endif
sig_factorized = fact_q*fact_t*fact_w
return
end
subroutine eekeek(ss,q22,angl,theta,phi,epsi,sigma_eep)
implicit none
include 'simulate.inc'
real*8 ss,q22,angl,theta,phi,epsi
real*8 w,skc2,skc,q0,q0c,qr,aflx,aflxl,an,x,sx
real*8 ps,qs,as
double complex z1a,z2a,z3a,z4a,z7a,z8a,ur,ui
real*8 dsigt00,dsigl00,dsigp00,dsigi00
c real*8 dsigp0,dsigi0,ctt
real*8 zf(2,6),sigma_eep
real*8 qv2,qv,qvc
integer pn,pna(3)
integer i
c real*4 for compatability with CERNLIB routine fint.
real*4 px(3),pa(50)
real*4 fint
w=sqrt(ss)*1000.
skc2=(w**2-Mk2-targ%Mrec_struck**2)**2-4.*Mk2*targ%Mrec_struck**2
skc2=max(skc2,0.e0)
skc=sqrt(skc2)/2./w
q0=-(-q22-w**2+Mp2)/2./Mp
q0c=(-q22+q0*Mp)/w
qr=sqrt(q22)/q0c
qv2=q22+q0**2
qv=sqrt(qv2)
qvc=Mp/w*qv
C ctt not used, and causes floating exception if skc=0 (i.e. skc2<0)
C ctt=pi/skc/qvc*1.d+06
aflx=skc/2./w/(w**2-Mp2)*(hbarc)**2*10000.
aflxl=aflx*qr**2
an=angl*180./pi
x=cos(angl)
sx=sin(angl)
pn=3
px(1)=ss
px(2)=q22/1.d+06
px(3)=an
pna(1)=10
pna(2)=11
pna(3)=19
ps=2.6
qs=0.0
as=0.0
do i=1,10
pa(i)=ps
ps=ps+0.3
enddo
do i=11,21
pa(i)=qs
qs=qs+0.2
enddo
do i=22,40
pa(i)=as
as=as+10.
enddo
zf(1,1)=dble(fint(pn,px,pna,pa,zrff1))
zf(1,2)=dble(fint(pn,px,pna,pa,zrff2))
zf(1,3)=dble(fint(pn,px,pna,pa,zrff3))
zf(1,4)=dble(fint(pn,px,pna,pa,zrff4))
zf(1,5)=dble(fint(pn,px,pna,pa,zrff5))
zf(1,6)=dble(fint(pn,px,pna,pa,zrff6))
zf(2,1)=dble(fint(pn,px,pna,pa,ziff1))
zf(2,2)=dble(fint(pn,px,pna,pa,ziff2))
zf(2,3)=dble(fint(pn,px,pna,pa,ziff3))
zf(2,4)=dble(fint(pn,px,pna,pa,ziff4))
zf(2,5)=dble(fint(pn,px,pna,pa,ziff5))
zf(2,6)=dble(fint(pn,px,pna,pa,ziff6))
ur=(1.e0,0.e0)
ui=(0.e0,1.e0)
z1a=zf(1,1)*ur+zf(2,1)*ui
z2a=zf(1,2)*ur+zf(2,2)*ui
z3a=zf(1,3)*ur+zf(2,3)*ui
z4a=zf(1,4)*ur+zf(2,4)*ui
z7a=zf(1,5)*ur+zf(2,5)*ui
z8a=zf(1,6)*ur+zf(2,6)*ui
c
c calculate free cross section using Saghai's form.
c
dsigt00=aflx*(abs(z1a)**2+abs(z2a)**2
& +2.*real(conjg(z1a)*z2a)*x+0.5*sx**2*(abs(z3a)**2
& +abs(z4a)**2+2.*real(conjg(z1a)*z4a-conjg(z2a)*z3a
& +conjg(z3a)*z4a*x)))
dsigl00=aflxl*epsi*(abs(z7a)**2+abs(z8a)**2
& +2.*real(conjg(z7a)*z8a)*x)
dsigp00=aflx*epsi*(sin(theta))**2*cos(2.*phi)*
& (0.5*abs(z3a)**2+0.5*abs(z4a)**2+real(conjg(z1a)*z4a-
& conjg(z2a)*z3a+conjg(z3a)*z4a*x))
dsigi00=aflx*sqrt(2.*qr**2*epsi*(1.+epsi))*
& sin(theta)*cos(phi)*real((z7a)*(conjg(z3a)-conjg(z2a)+
& conjg(z4a)*x)+z8a*(conjg(z1a)+conjg(z3a)*x+conjg(z4a)))
C dsigp0=aflx*epsi*(sin(theta))**2*
C & (0.5*abs(z3a)**2+0.5*abs(z4a)**2+real(conjg(z1a)*z4a-
C & conjg(z2a)*z3a+conjg(z3a)*z4a*x))
C dsigi0=aflx*sqrt(2.*qr**2*epsi*(1.+epsi))*
C & sin(theta)*real(z7a*(conjg(z3a)-conjg(z2a)+
C & conjg(z4a)*x)+z8a*(conjg(z1a)+conjg(z3a)*x+conjg(z4a)))
sigma_eep=dsigt00+dsigl00+dsigp00+dsigi00
c write(21,*) 'dsig',dsigt00,dsigl00/epsi,sigma_eep
c write(21,*) 'dsig',dsigt00*ctt,dsigl00/epsi*ctt,sigma_eep*ctt
c write(21,*) dsigp00,dsigi00,sigma_eep
c write(21,*) dsigp0,dsigi0,sigma_eep
return
end
subroutine eekeeks(ss,q22,angl,theta,phi,epsi,sigma_eep)
include 'simulate.inc'
real*8 ss,q22,angl,theta,phi,epsi
real*8 w,skc2,skc,q0,q0c,qr,aflx,aflxl,an,x,sx
real*8 as
double complex z1a,z2a,z3a,z4a,z7a,z8a,ur,ui
real*8 dsigt00,dsigl00,dsigp00,dsigi00
real*8 zf(2,6),sigma_eep
real*8 qv2,qv,qvc
c real*8 ctt
integer pn,pna(3),i
c real*4 for compatability with CERNLIB routine fint.
real*4 px(3),pa(50)
real*4 fint
w=sqrt(ss)*1000.
skc2=(w**2-Mk2-targ%Mrec_struck**2)**2-4.*Mk2*targ%Mrec_struck**2
skc2=max(skc2,0.e0)
skc=sqrt(skc2)/2./w
q0=-(-q22-w**2+Mp2)/2./Mp
q0c=(-q22+q0*Mp)/w
qr=sqrt(q22)/q0c
qv2=q22+q0**2
qv=sqrt(qv2)
qvc=Mp/w*qv
C ctt not used, and causes floating exception if skc=0 (i.e. skc2<0)
C ctt=pi/skc/qvc*1.d+06
aflx=skc/2./w/(w**2-Mp2)*(hbarc)**2*10000.
aflxl=aflx*qr**2
an=angl*180./pi
x=cos(angl)
sx=sin(angl)
pn=3
px(1)=ss
px(2)=q22/1.d+06
px(3)=an
pna(1)=20
pna(2)=10
pna(3)=19
as=0.0
pa(1)=2.851
pa(2)=2.898
pa(3)=2.945
pa(4)=2.991
pa(5)=3.038
pa(6)=3.085
pa(7)=3.132
pa(8)=3.320
pa(9)=3.507
pa(10)=3.695
pa(11)=3.883
pa(12)=4.070
pa(13)=4.258
pa(14)=4.446
pa(15)=4.633
pa(16)=4.821
pa(17)=5.009
pa(18)=5.196
pa(19)=5.384
pa(20)=5.572
pa(21)=0.0
pa(22)=0.250
pa(23)=0.376
pa(24)=0.520
pa(25)=0.750
pa(26)=1.000
pa(27)=1.250
pa(28)=1.500
pa(29)=1.750
pa(30)=2.000
do i=31,49
pa(i)=as
as=as+10.
enddo
zf(1,1)=dble(fint(pn,px,pna,pa,zsrff1))
zf(1,2)=dble(fint(pn,px,pna,pa,zsrff2))
zf(1,3)=dble(fint(pn,px,pna,pa,zsrff3))
zf(1,4)=dble(fint(pn,px,pna,pa,zsrff4))
zf(1,5)=dble(fint(pn,px,pna,pa,zsrff5))
zf(1,6)=dble(fint(pn,px,pna,pa,zsrff6))
zf(2,1)=dble(fint(pn,px,pna,pa,zsiff1))
zf(2,2)=dble(fint(pn,px,pna,pa,zsiff2))
zf(2,3)=dble(fint(pn,px,pna,pa,zsiff3))
zf(2,4)=dble(fint(pn,px,pna,pa,zsiff4))
zf(2,5)=dble(fint(pn,px,pna,pa,zsiff5))
zf(2,6)=dble(fint(pn,px,pna,pa,zsiff6))
ur=(1.e0,0.e0)
ui=(0.e0,1.e0)
z1a=zf(1,1)*ur+zf(2,1)*ui
z2a=zf(1,2)*ur+zf(2,2)*ui
z3a=zf(1,3)*ur+zf(2,3)*ui
z4a=zf(1,4)*ur+zf(2,4)*ui
z7a=zf(1,5)*ur+zf(2,5)*ui
z8a=zf(1,6)*ur+zf(2,6)*ui
c
c calculate free cross section using Saghai's form.
c
dsigt00=aflx*(abs(z1a)**2+abs(z2a)**2
& +2.*real(conjg(z1a)*z2a)*x+0.5*sx**2*(abs(z3a)**2
& +abs(z4a)**2+2.*real(conjg(z1a)*z4a-conjg(z2a)*z3a
& +conjg(z3a)*z4a*x)))
dsigl00=aflxl*epsi*(abs(z7a)**2+abs(z8a)**2
& +2.*real(conjg(z7a)*z8a)*x)
dsigp00=aflx*epsi*(sin(theta))**2*cos(2.*phi)*
& (0.5*abs(z3a)**2+0.5*abs(z4a)**2+real(conjg(z1a)*z4a-
& conjg(z2a)*z3a+conjg(z3a)*z4a*x))
dsigi00=aflx*sqrt(2.*qr**2*epsi*(1.+epsi))*
& sin(theta)*cos(phi)*real((z7a)*(conjg(z3a)-conjg(z2a)+
& conjg(z4a)*x)+z8a*(conjg(z1a)+conjg(z3a)*x+conjg(z4a)))
sigma_eep=dsigt00+dsigl00+dsigp00+dsigi00
return
end
subroutine phspwght(delta,theta,phi,weight)
include 'simulate.inc'
real*8 delta,theta,phi
real*8 weight
integer pn,pna(3),i
real*8 ps,ts,ds
c real*4 for compatability with CERNLIB routine fint.
real*4 px(3),pa(78)
real*4 fint
if(electron_arm.eq.1 .and. hadron_arm.eq.2)then !e- in HMS, K in SOS
pn=2
px(1)=theta
px(2)=phi
pna(1)=20
pna(2)=50
ts=-0.03325
ps=-0.0735
do i=1,20
pa(i)=ts
ts=ts+0.0035
enddo
do i=21,70
pa(i)=ps
ps=ps+0.003
enddo
weight=dble(fint(pn,px,pna,pa,weightc))
else if (electron_arm.eq.2 .and. hadron_arm.eq.1) then !e- in SOS,K in HmS
pn=3
px(1)=delta
px(2)=theta
px(3)=phi
pna(1)=8
pna(2)=40
pna(3)=30
ts=-0.063375
ps=-0.0435
ds=-17.5
do i=1,8
pa(i)=ds
ds=ds+5.
enddo
do i=9,48
pa(i)=ts
ts=ts+0.00325
enddo
do i=49,78
pa(i)=ps
ps=ps+0.003
enddo
weight=dble(fint(pn,px,pna,pa,weightd))
else
write(6,*) 'electron_arm=',electron_arm,' and hadron_arm=',hadron_arm
write(6,*) 'eekeek.f has a phase space factor that is only defined for'
write(6,*) 'hms&sos case. Need to update for other spectrometers.'
stop
endif
weight=max(weight,0.01e00)
weight=max(100.e00/weight,1.0e00)
return
end