2 subroutine hiwlnew(ng,mg,hidmin,hidmax,prb,mmax)
16 if(wl(m).gt.wlmin) then
18 c write (*,*) 'swlt(m),swlt0(m)',swlt(m),swlt0(m)
22 c fix by Federico Carminati CERN-EP, just to avoid a crash
23 c it should be checked by the authors
27 c if(wlt(m).eq.0) write (*,*) ' n,m,wl(m),hi ',n,m,wl(m),sqrt(hig)
30 c if(hig.gt.himax) then
35 if(hidg.gt.hidmax) then
39 if(hidg.lt.hidmin) then
50 c himax0=-0.088+0.548*aln-0.01396*aln**2
52 hidmax0=0.318+0.5942*aln-0.0258*aln**2
60 c write (*,*) ' kg,nb, nbp,prb ',kg,nb,nbp,prb
66 subroutine fitgaml(ng,mg,eg,hi,himax,mmax,level)
69 call fitgam0(ng,mg,eg,hi,himax,mmax)
70 elseif(level.eq.0) then
71 call fitgam1(ng,mg,eg,hi,himax,mmax)
72 elseif(level.eq.1) then
73 c call fitgam2(ng,mg,eg,hi,himax,mmax)
74 write (*,*) ' next time '
76 write (*,*) ' oshibsja parenek? '
81 subroutine fitgam0(ng,mg,eg,hi,himax,mmax)
85 include 'comwlgen.for'
103 call hiwlnew(ng,mg,himin,himax,prb,mmax)
109 subroutine fitgam1(ng,mg,eg,prb,himax,mmax)
111 include 'comalwl.for'
113 include 'comwlgen.for'
114 dimension mg(*),eg(*)
116 c call fitgam(ng,mg,eg)
120 call hiwlnew(ng,mg,himin,himax,prb,mmax)
125 subroutine gmplus(ng,mg,eg,gmporog,egamporog,rnenear)
130 include 'comalwl.for'
131 include 'comwlgen.for'
132 common /comwldif/ swldiff(40000),eadd(2000)
134 dimension mg(*),eg(*)
142 write (*,*) ' incr.in gmplus '
148 sig=sqrt(swlt(m)+swlt0(m))
151 dx=abs(x(1,mw(kk))-x(1,m))-(d(1,mw(kk))+d(1,m))/2.
152 dy=abs(x(2,mw(kk))-x(2,m))-(d(2,mw(kk))+d(2,m))/2.
153 if(dx.le.1..and.dy.le.1.) goto 1
154 if(dx.gt.dmax.or.dy.gt.dmax) goto 1
157 adefar=e(kk)*aclnew(xd,yd,d(1,m),m)
160 sefar=0.15*sqrt(efar)
161 swldiff(m)=wl(m)-wlt(m)-efar-sqrt(swlt(m)+swlt0(m))-sefar
162 if(swldiff(m).le.0.) swldiff(m)=0.
166 c LET'S TRY TO FINDE NEW GAMMA
173 if(m.eq.mw(k)) goto 2
174 rrk=sqrt((x(1,m)-xw(k))**2+(x(2,m)-yw(k))**2)
175 if(rrk.lt.rnenear) goto 2
178 if(em.lt.gmporog) goto 2
183 esumgg1=esumgg1+swldiff(ms)
184 esumgg2=esumgg2+wl(ms)
186 if(esumgg1.lt.egamporog) goto 2
192 dx=abs(x(1,m1)-x(1,m))-(d(1,m)+d(1,m1))/2.
193 dy=abs(x(2,m1)-x(2,m))-(d(2,m)+d(2,m1))/2.
194 if(dx.le.1..and.dy.le.1.) then
200 if(dx.gt.dmax.or.dy.gt.dmax) goto 3
205 emax=1.5*em*aclnew(xd,yd,d(1,m),m)
220 if(eadd(n).gt.summax) then
226 if(eadd(n).eq.summax) then
227 if(eg(n).gt.emax) then
238 c write (*,*) ' wlt '
240 c write (*,*) ' swldiff '
241 c call prwall(swldiff)
243 if(emax.gt.gmporog.and.summax.gt.0.) then
245 c e(kg)=emax+summax-swldiff(mmax)
247 ee=emax+summax-swldiff(mmax)
255 call adgmnew(mmax,ee,xx,yy,see,sxx,syy,ijdd)
257 c write (*,*) ' NEW GAMMA e,m',kg,e(kg),mw(kg)
258 c write(*,*) ' swldiff kg,mg',kg,mw(1)
259 c call prwlm(swldiff,mw(1),5,100.)
261 c write (*,*) ' NO NEW GAMMA ',kg
262 c write(*,*) ' swldiff kg,mg',kg,mg(1)
263 c call prwlm(swldiff,mw(1),5,100.)
266 call vzero(swldiff,nt)
271 subroutine filwltgl(ngg,mgg)
272 include 'comalwl.for'
274 include 'comwlgen.for'
275 common /comdevpar/sigmaph,sigmapd,sigphsq,sigpdsq
286 etadd=e(k)*ampcelnew(e(k),raxay(1,k),x(1,mg),d(1,mg),mg)
287 wlt(mg)=wlt(mg) +etadd
288 c swlt(ms)=swlt(ms)+(emimx(2,n,k)-emimx(1,n,k))**2/4.
290 + (sigwlgam0(etadd,e(k)))**2+sigmphsq*etadd
299 subroutine clrwltgl(ngg,mgg)
300 include 'comalwl.for'
302 include 'comwlgen.for'
319 subroutine again_gmfit
321 include 'comwlgen.for'
322 include 'comalwl.for'
324 common /par/npar,e0,x0,y0,se0,sx0,sy0,Hi,rrr0(5)
337 c x0=x(1,m)+id(k)*d(1,k)/4.
338 c y0=x(2,m)+jd(k)*d(2,k)/4.
339 c write (*,*) ' k,xm,ym,id,jd ',x(1,m),x(2,m),id(k),jd(k)
344 c only for anglx and angly
345 call ucopy(raxay(1,k),rrr0(1),5)
346 call ucopy(wsw(1,k),ws,ns(m))
348 c write (*,*) ' es k',k,(es(ii,k),ii=1,ns(m))
349 c write (*,*) ' ws k',k,(sqrt(1./wsw(ii,k)),ii=1,ns(m))
351 c write (*,*) ' e0,x0,y0 before ',e0,x0,y0
357 call gmfit(m,es(1,k),ws)
359 c write (*,*) ' e0,x0,y0 after ',e0,x0,y0
360 c write (*,*) ' se0,sx0,sy0 ',se0,sx0,sy0
380 subroutine gmfit(m,eg,weg)
381 cold external acl,dxacl
383 external ampcelnew,dampcelnew
384 include 'comalwl.for'
386 common /par/npar,e0,x0,y0,se0,sx0,sy0,Hi,rrr0(5)
387 common /comkey/keykey
392 real f(4),ff(4,4),de(5,5)
393 equivalence (aij,f(1)),(dxij,f(2)),(dyij,f(3)),(deij,f(4))
394 equivalence (ade,ff(1,4)),(dxde,ff(2,4)),(dyde,ff(3,4))
395 equivalence (aq,ff(1,1)),(dxq,ff(2,2)),(dyq,ff(3,3))
396 equivalence (adx,ff(1,2)),(ady,ff(1,3)),(dxdy,ff(2,3))
401 c write (*,*) ' se0,sx0,sy0 ',se0,sx0,sy0
429 cold aij=ACL(X0-XS,Y0-YS,D(1,ms))
434 c write (*,*) ' ax0,ay0 ',rrr0(4),rrr0(5)
437 aij=ampcelnew(e0,rrr0,x(1,ms),d(1,ms),ms)
440 cold dxij=dxacl(x0-xs,y0-ys,d(1,ms))
441 cold dyij=dxacl(y0-ys,x0-xs,d(1,ms))
444 dxij=dampcelnew(1,e0,rrr0,x(1,ms),d(1,ms),ms)
445 dyij=dampcelnew(2,e0,rrr0,x(1,ms),d(1,ms),ms)
447 c if(keykey.eq.1) then
449 c write (*,*) ' deij,dxij,dyij ',deij,dxij,dyij
454 ff(k,l)=ff(k,l)+f(k)*f(l)*weg(n)
463 dxde=dxde+wxc*(xc-x0)/e0
467 dyde=dyde+wyc*(yc-y0)/e0
476 det=aq*d11+adx*d12+ady*d13
478 write (*,*) ' e0=0 !!!!!!!!!!!!!!!!!!'
483 write (*,*) ' det=0 !!!!!!!!!!!!!!!!!!'
488 de0=(ade*d11+dxde*d12+dyde*d13)/det
489 dx0=(ade*d12+dxde*d22+dyde*d23)/(e0*det)
490 dy0=(ade*d13+dxde*d23+dyde*d33)/(e0*det)
493 if(abs(de0).gt.3.) de0=3.*de0/abs(de0)
494 if(abs(dx0).gt.d(1,ms)/3.) dx0=d(1,ms)/3.*dx0/abs(dx0)
495 if(abs(dy0).gt.d(2,ms)/3.) dy0=d(2,ms)/3.*dy0/abs(dy0)
496 c write (*,*) ' de0,dx0,dy0 ',de0,dx0,dy0
502 c write (*,*) ' return e0 !!!',e0
503 c write (*,*) ' main ',m,ns(m),x(1,m),x(2,m)
504 c write (*,*) ' eg ',(eg(ne),ne=1,ns(m))
505 c write (*,*) ' weg ',(sqrt(1./weg(ne)),ne=1,ns(m))
511 if(e0.gt.1000.) write (*,*) ' return e0 from ',e0fit,' to',e0
512 c write (*,*) 'nc,e0,x0,y0',ncc,e0,x0,y0
515 if(iefc.ne.0) Hi=Hi+wec*(ec-e0)**2
516 if(ixfc.ne.0) Hi=Hi+wxc*(xc-x0)**2
517 if(iyfc.ne.0) Hi=Hi+wyc*(yc-y0)**2
520 c write (*,*) ' Hi delthi hiold',hi,delthi,hiold
522 if(abs(delthi).lt.0.01) goto 11
525 c write (*,*) ' Hi delthi ',hi,delthi
526 if(d11/det.gt.0.) se0=sqrt(d11/det)
527 if(d22/det.gt.0.) sx0=sqrt(d22/det/e0)
528 if(d33/det.gt.0.) sy0=sqrt(d33/det/e0)
529 if(se0.eq.0) write (*,*) ' se0=0.'
530 if(sx0.eq.0) write (*,*) ' sx0=0.'
531 if(sy0.eq.0) write (*,*) ' sy0=0.'
532 c write (*,*) ' se0,sx0,sy0 ',se0,sx0,sy0
537 include 'comalwl.for'
541 c write (*,*) ' new gamma print '
544 c??? wsw(n,k)=swlt(ms)-(emimx(2,n,k)-emimx(1,n,k))**2/4.+swlt0(ms)
545 wsw(n,k)=swlt(ms)+swlt0(ms)+swltmx(ms)
546 wsw(n,k)=wsw(n,k)-(emimx(2,n,k)-emimx(1,n,k))**2/4.