1 c---------------------------------------------------------------------
3 c---------------------------------------------------------------------
5 parameter (mxhis=500,mxcontr=300,mxidcd=60,mxtri=20,mxbin=400)
6 parameter (mypara=10,mxpara=10)
7 logical ilog,icnx,itrevt,idmod
8 double precision bin,bbin,zcbin,zbbin
9 common/bins/bin(mxbin,2,mxhis),zcbin(mxbin,2,mxhis)
10 $ ,bbin(mxbin,2,mxcontr),itrevt(mxhis),zbbin(mxbin,2,mxcontr)
11 $ ,nac(mxhis),ilog(mxhis),icnx(mxhis),xinc(mxhis),ncevt(mxhis)
12 $ ,sval(2,mxhis),valtri(mxtri,mxhis),ntrc(mxtri,mxhis)
13 $ ,xmin(mxhis),xmax(mxhis),nhis,noweak(mxhis)
14 $ ,ivar(2,mxhis),inorm(mxhis),nbin(mxhis),nidcod(mxhis)
15 $ ,idcod(mxidcd,mxhis),idmod(mxidcd,mxhis),ntri(mxhis)
16 $ ,itri(mxtri,mxhis),xmitri(mxtri,mxhis),xmatri(mxtri,mxhis)
17 $ ,xmitrp(mxtri,mxhis),xmatrp(mxtri,mxhis),xpara(mxpara,mxhis)
18 $ ,ypara(mypara,mxhis),lookcontr(mxhis)
19 $ ,lookcontrx(mxhis),ncontrall,icontrtyp(mxhis),nccevt(mxcontr)
20 double precision ebin,zebin
21 common/errbins/ebin(mxbin,2,mxhis/2),zebin(mxbin,2,mxhis/2),
22 $inoerr(mxhis),noerr(mxhis/2,2),noerrhis(mxhis/2),noerrall
25 common/pfra/nfra,ifra(mxfra),ivfra(2,mxhis),itfra(mxtri,mxhis)
26 $ ,imofra(3,mxfra),iffra(mxfra),r1fra(3,mxfra),r2fra(3,mxfra)
28 common/stavar/multc05,multy1,multc14,multyi,multc3,imulty1,multeb
31 common/varhis/icorrtrig(0:mxxhis),ihardevent(0:mxxhis)
32 &,ijetfind1(0:mxxhis),ijetfind2(0:mxxhis)
51 c---------------------------------------------------------------------
53 c---------------------------------------------------------------------
54 c called after beginhisto
55 c---------------------------------------------------------------------
57 parameter (mxhis=500,mxcontr=300,mxidcd=60,mxtri=20,mxbin=400)
58 parameter (mypara=10,mxpara=10)
59 logical ilog,icnx,itrevt,idmod
60 double precision bin,bbin,zcbin,zbbin
61 common/bins/bin(mxbin,2,mxhis),zcbin(mxbin,2,mxhis)
62 $ ,bbin(mxbin,2,mxcontr),itrevt(mxhis),zbbin(mxbin,2,mxcontr)
63 $ ,nac(mxhis),ilog(mxhis),icnx(mxhis),xinc(mxhis),ncevt(mxhis)
64 $ ,sval(2,mxhis),valtri(mxtri,mxhis),ntrc(mxtri,mxhis)
65 $ ,xmin(mxhis),xmax(mxhis),nhis,noweak(mxhis)
66 $ ,ivar(2,mxhis),inorm(mxhis),nbin(mxhis),nidcod(mxhis)
67 $ ,idcod(mxidcd,mxhis),idmod(mxidcd,mxhis),ntri(mxhis)
68 $ ,itri(mxtri,mxhis),xmitri(mxtri,mxhis),xmatri(mxtri,mxhis)
69 $ ,xmitrp(mxtri,mxhis),xmatrp(mxtri,mxhis),xpara(mxpara,mxhis)
70 $ ,ypara(mypara,mxhis),lookcontr(mxhis)
71 $ ,lookcontrx(mxhis),ncontrall,icontrtyp(mxhis),nccevt(mxcontr)
72 double precision ebin,zebin
73 common/errbins/ebin(mxbin,2,mxhis/2),zebin(mxbin,2,mxhis/2),
74 $inoerr(mxhis),noerr(mxhis/2,2),noerrhis(mxhis/2),noerrall
75 common/stavar/multc05,multy1,multc14,multyi,multc3,imulty1,multeb
79 common/pfra/nfra,ifra(mxfra),ivfra(2,mxhis),itfra(mxtri,mxhis)
80 $ ,imofra(3,mxfra),iffra(mxfra),r1fra(3,mxfra),r2fra(3,mxfra)
82 character line*160,cvar*6
88 call utpri('xini ',ish,ishini,5)
103 if(nhis.gt.mxhis)stop'xini: mxhis too small. '
110 1 call utword(line,i,j,0)
111 if(line(i:j).eq.'application')then !-----------
112 call utword(line,i,j,1)
113 if(line(i:j).eq.'analysis')then
123 elseif(line(i:j).eq.'input')then !-----------
124 call utword(line,i,j,0)
127 if(nopen.gt.9)stop'too many nested input commands'
128 open(unit=20+nopen,file=line(i:j),status='old')
129 if(iprmpt.eq.1)iprmpt=-1
131 elseif(line(i:j).eq.'runprogram')then !-----------
136 elseif(line(i:j).eq.'frame'.or.line(i:j).eq.'frame+')then !------
138 if(line(i:j).eq.'frame+')ifp=2
139 call utword(line,i,j,1)
140 if(line(i:j).eq.'total')then
142 elseif(line(i:j).eq.'nucleon-nucleon')then
144 elseif(line(i:j).eq.'target')then
146 elseif(line(i:j).eq.'gamma-nucleon')then
148 elseif(line(i:j).eq.'lab')then
150 elseif(line(i:j).eq.'breit')then
152 elseif(line(i:j).eq.'thrust')then
154 elseif(line(i:j).eq.'sphericity')then
159 if(ifra(l).eq.nfp)then
178 elseif(line(i:j).eq.'binning')then !-----------
179 call utword(line,i,j,1)
180 if(line(i:j).eq.'lin')then
183 elseif(line(i:j).eq.'log')then
186 elseif(line(i:j).eq.'clin')then
189 elseif(line(i:j).eq.'clog')then
193 print *, 'what the heck is ',line(i:j),' binning?'
194 print *, 'I will use the linear (lin) one'
196 elseif(line(i:j).eq.'setm')then !-----------
198 print *,"You should use histogram instead of setm, please"
201 elseif(line(i:j).eq.'set')then !-----------
202 call utword(line,i,j,1)
203 if(line(i:j).eq.'iologb')then
204 call utword(line,i,j,1)
205 read(line(i:j),*) iologb
206 elseif(line(i:j).eq.'iocnxb')then
207 call utword(line,i,j,1)
208 read(line(i:j),*) iocnxb
209 elseif(line(i:j).eq.'etacut')then
210 call utword(line,i,j,1)
211 read(line(i:j),*) etacut
212 elseif(line(i:j).eq.'nemsi')then
213 call utword(line,i,j,1)
214 read(line(i:j),*)nemsi
216 elseif(line(i:j).eq.'xpara')then !-----------
217 call utword(line,i,j,1)
218 read(line(i:j),*)ipara
219 if(ipara.gt.mxpara)stop'mxpara too small. '
220 call utword(line,i,j,1)
222 xpara(ipara,nhis)=val
223 elseif(line(i:j).eq.'echo')then !-----------
224 call utword(line,i,j,1)
225 if(line(i:j).eq.'on')iecho=1
226 if(line(i:j).eq.'off')iecho=0
227 if(line(i:j).ne.'on'.and.line(i:j).ne.'off')
228 * stop'invalid option'
229 elseif(line(i:j).eq.'noweak')then !-----------
231 elseif(line(i:j).eq.'histogram')then !-----------
233 call utword(line,i,j,1) !xvaria
236 call xtrans(cvar,inom,ifrnew,nhis)
238 if(line(i:i).ge.'0'.and.line(i:i).le.'9')then
240 read(line(i:j),*) sval(1,nhis)
244 if(ifrnew.ne.0)then !check frame for e+e- event
245 go=.true. !shape variables
247 if(ifra(l).eq.ifrnew)then
249 go=.false. !have it already
258 call utword(line,i,j,1) !yvaria
261 call xtrans(cvar,inom,ifrnew,nhis)
264 if(line(i:i).ge.'0'.and.line(i:i).le.'9')then
266 read(line(i:j),*) sval(2,nhis)
269 if(inom.eq.-1)ivar(1,nhis)=inom
274 call utword(line,i,j,1) !normation
275 read(line(i:j),*) inorm(nhis)
277 call utword(line,i,j,1) !xmin
278 if(line(i:j).eq.'egy')then
281 elseif(ecms.gt.0.)then
283 elseif(elab.gt.0)then
284 call idmass(idproj,apj)
285 call idmass(idtarg,atg)
286 egy=sqrt( 2*elab*atg+atg**2+apj**2 )
287 elseif(ekin.gt.0.)then
288 call idmass(idproj,apj)
289 call idmass(idtarg,atg)
290 egy=sqrt( 2*(ekin+apj)*atg+atg**2+apj**2 )
291 elseif(pnll.gt.0.)then
292 call idmass(idproj,apj)
293 call idmass(idtarg,atg)
294 egy=sqrt( 2*sqrt(pnll**2+apj**2)*atg+atg**2+apj**2 )
296 stop'pb in xini (1). '
300 read(line(i:j),*) xmin(nhis)
303 call utword(line,i,j,1) !xmax
304 if(line(i:j).eq.'egy')then
307 elseif(ecms.gt.0.)then
309 elseif(elab.gt.0)then
310 call idmass(idproj,apj)
311 call idmass(idtarg,atg)
312 egy=sqrt( 2*elab*atg+atg**2+apj**2 )
313 elseif(ekin.gt.0.)then
314 call idmass(idproj,apj)
315 call idmass(idtarg,atg)
316 egy=sqrt( 2*(ekin+apj)*atg+atg**2+apj**2 )
317 elseif(pnll.gt.0.)then
318 call idmass(idproj,apj)
319 call idmass(idtarg,atg)
320 egy=sqrt( 2*sqrt(pnll**2+apj**2)*atg+atg**2+apj**2 )
322 stop'pb in xini (2). '
326 read(line(i:j),*) xmax(nhis)
329 call utword(line,i,j,1) !nbin
330 read(line(i:j),*) nbin(nhis)
332 bin(l,nac(nhis),nhis)=0.
333 zcbin(l,nac(nhis),nhis)=0
338 elseif(line(i:j).eq.'idcode')then !-----------
339 call utword(line,i,j,1) !idcode
340 if(line(i:i+2).eq.'995')stop'xini: idcode 995 not supported'
341 if(line(i:i+2).eq.'994')stop'xini: idcode 994 not supported'
342 nidcod(nhis)=nidcod(nhis)+1
343 read(line(i:j),*) idcod(nidcod(nhis),nhis)
344 idmod(nidcod(nhis),nhis)=.false.
345 elseif(line(i:j).eq.'idcode+')then !-----------
346 stop'xini: idcode+ not supported'
347 call utword(line,i,j,1) !idcode
348 if(line(i:i+2).eq.'995')stop'xini: idcode 995 not supported'
349 if(line(i:i+2).eq.'994')stop'xini: idcode 994 not supported'
350 nidcod(nhis)=nidcod(nhis)+1
351 read(line(i:j),*) idcod(nidcod(nhis),nhis)
352 idmod(nidcod(nhis),nhis)=.true.
353 elseif(line(i:j).eq.'trigger')then !-----------
354 call utword(line,i,j,1)
359 if(line(i:j).eq.'or'.or.line(i:j).eq.'contr')then
361 if(line(i:j).eq.'contr')imo=3
362 call utword(line,i,j,1)
365 call utword(line,i,j,1)
368 ncontrall=ncontrall+ncontr
369 if(ncontrall.gt.mxcontr)stop'xini: mxcontr too small. '
370 if(ncontr.gt.mxcnt)stop'xini: mxcnt too small. '
371 lookcontr(nhis)=ncontrall-ncontr+1
372 lookcontrx(nhis)=ncontrall
375 bbin(nb,nac(nhis),lookcontr(nhis)-1+nn)=0.d0
376 zbbin(nb,nac(nhis),lookcontr(nhis)-1+nn)=0.d0
380 nccevt(lookcontr(nhis)-1+nn)=0
385 if(n.ne.1)call utword(line,i,j,1) !trigger-name
388 if(line(j:j).eq.'+')then
395 call xtrans(cvar,inom,ifrnew,nhis)
397 ntri(nhis)=ntri(nhis)+1
399 ntrc(ntri(nhis),nhis)=1
401 ntrc(ntri(nhis),nhis)=2
403 ntrc(ntri(nhis),nhis)=3
405 ntrc(ntri(nhis),nhis)=0
408 ntrc(ntri(nhis),nhis)=-1
410 icontrtyp(nhis)=1+inom/100
412 if(1+inom/100.ne.icontrtyp(nhis))
413 * stop'xini: type mismatch'
416 itri(ntri(nhis),nhis)=inom
418 itfra(ntri(nhis),nhis)=indfra
420 itfra(ntri(nhis),nhis)=inpfra
422 xmitrp(ntri(nhis),nhis)=100.
423 xmatrp(ntri(nhis),nhis)=100.
424 call utword(line,i,j,1) !-----------xmin----------
425 if(line(i:j).eq.'inf')then
426 xmitri(ntri(nhis),nhis)=1e30
427 elseif(line(i:j).eq.'-inf')then
428 xmitri(ntri(nhis),nhis)=-1e30
429 elseif(line(i:j).eq.'A')then
430 xmitri(ntri(nhis),nhis)=maproj
431 elseif(line(i:j).eq.'A+1')then
432 xmitri(ntri(nhis),nhis)=maproj+1
433 elseif(line(i:j).eq.'A+B')then
434 xmitri(ntri(nhis),nhis)=maproj+matarg
435 elseif(line(i:j).eq.'A+B+1')then
436 xmitri(ntri(nhis),nhis)=maproj+matarg+1
437 elseif(line(i:j).eq.'lead')then !leading particle (neads Standard Variable)
438 xmitri(ntri(nhis),nhis)=-123456
443 if(line(k:k).eq.'%')kk=k
446 read(line(i:j),*)xmitri(ntri(nhis),nhis)
448 read(line(i:kk-1),*)xmitrp(ntri(nhis),nhis)
449 read(line(kk+1:j),*)xmitri(ntri(nhis),nhis)
452 call utword(line,i,j,1) !-----------xmax------------
453 if(line(i:j).eq.'inf')then
454 xmatri(ntri(nhis),nhis)=1e30
455 elseif(line(i:j).eq.'-inf')then
456 xmatri(ntri(nhis),nhis)=-1e30
457 elseif(line(i:j).eq.'A')then
458 xmatri(ntri(nhis),nhis)=maproj
459 elseif(line(i:j).eq.'A+1')then
460 xmatri(ntri(nhis),nhis)=maproj+1
461 elseif(line(i:j).eq.'A+B')then
462 xmatri(ntri(nhis),nhis)=maproj+matarg
463 elseif(line(i:j).eq.'A+B+1')then
464 xmatri(ntri(nhis),nhis)=maproj+matarg+1
465 elseif(line(i:j).eq.'lead')then !leading particle (neads Standard Variable)
466 xmatri(ntri(nhis),nhis)=-123456
471 if(line(k:k).eq.'%')kk=k
474 read(line(i:j),*)xmatri(ntri(nhis),nhis)
475 xmatrp(ntri(nhis),nhis)=100.
477 read(line(i:kk-1),*)xmatrp(ntri(nhis),nhis)
478 read(line(kk+1:j),*)xmatri(ntri(nhis),nhis)
481 !---exchange min-max------------------
482 if(xmitri(ntri(nhis),nhis).gt.xmatri(ntri(nhis),nhis))then
483 xmatri_save=xmatri(ntri(nhis),nhis)
484 xmatrp_save=xmatrp(ntri(nhis),nhis)
485 xmatri(ntri(nhis),nhis)=xmitri(ntri(nhis),nhis)
486 xmatrp(ntri(nhis),nhis)=xmitrp(ntri(nhis),nhis)
487 xmitri(ntri(nhis),nhis)=xmatri_save
488 xmitrp(ntri(nhis),nhis)=xmatrp_save
490 !-------------------------------------
493 call utword(line,i,j,1) !xmin
494 call utword(line,i,j,1) !xmax
497 elseif(line(i:j).eq.'noerrorbut')then !-----------
499 if(ionoerr.gt.2)stop'xini: not more than 2 noerrorbut ! '
501 if(noerrall.gt.mxhis/2)stop'xini: to many noerrorbut '
503 call utword(line,i,j,1) !variable-name
505 call xtrans(cvar,inom,ifrnew,nhis)
508 write(*,*)'xini: noerrorbut can not be used with :',cvar
509 stop'xini: error with noerrorbut!'
511 noerrhis(nhis)=noerrall-ionoerr+1
512 noerr(noerrhis(nhis),ionoerr)=inom
514 ebin(nb,nac(nhis),ionoerr-1+noerrhis(nhis))=0.d0
515 zebin(nb,nac(nhis),ionoerr-1+noerrhis(nhis))=0.d0
522 elseif(line(i:j).eq.'write')then !-----------
523 call utword(line,i,j,1)
524 elseif(line(i:j).eq.'writearray')then !-----------
525 call utword(line,i,j,1)
528 elseif(line(i:j).eq.'writehisto')then !-----------
529 call utword(line,i,j,1)
532 elseif(line(i:j).eq.'endhisto')then !-----------
535 if(iologb.eq.1)ilog(nhis)=.true.
536 if(iocnxb.eq.1)icnx(nhis)=.true.
538 xinc(nhis)=1./log(xmax(nhis)/xmin(nhis))*nbin(nhis)
540 xinc(nhis)=float(nbin(nhis))/(xmax(nhis)-xmin(nhis))
553 write (ifch,*) ivar(1,n),ivar(2,n),'(',ivfra(1,n),ivfra(2,n)
555 $ ,xmin(n),xmax(n),ilog(n),icnx(n)
556 $ ,nbin(n),(idcod(j,n),j=1,nidcod(n))
557 $ ,' tri:',ntri(n),(itri(j,n),j=1,ntri(n)),'('
558 $ ,(itfra(j,n),j=1,ntri(n)),')'
559 $ ,(xmitri(j,n),j=1,ntri(n)) ,(xmatri(j,n),j=1,ntri(n))
561 write (ifch,*) (ifra(j),j=1,nfra)
563 call utprix('xini ',ish,ishini,5)
568 c---------------------------------------------------------------------
570 c---------------------------------------------------------------------
572 parameter (mxhis=500,mxcontr=300,mxidcd=60,mxtri=20,mxbin=400)
573 parameter (mypara=10,mxpara=10)
574 logical ilog,icnx,itrevt,idmod
575 double precision bin,bbin,zcbin,zbbin
576 common/bins/bin(mxbin,2,mxhis),zcbin(mxbin,2,mxhis)
577 $ ,bbin(mxbin,2,mxcontr),itrevt(mxhis),zbbin(mxbin,2,mxcontr)
578 $ ,nac(mxhis),ilog(mxhis),icnx(mxhis),xinc(mxhis),ncevt(mxhis)
579 $ ,sval(2,mxhis),valtri(mxtri,mxhis),ntrc(mxtri,mxhis)
580 $ ,xmin(mxhis),xmax(mxhis),nhis,noweak(mxhis)
581 $ ,ivar(2,mxhis),inorm(mxhis),nbin(mxhis),nidcod(mxhis)
582 $ ,idcod(mxidcd,mxhis),idmod(mxidcd,mxhis),ntri(mxhis)
583 $ ,itri(mxtri,mxhis),xmitri(mxtri,mxhis),xmatri(mxtri,mxhis)
584 $ ,xmitrp(mxtri,mxhis),xmatrp(mxtri,mxhis),xpara(mxpara,mxhis)
585 $ ,ypara(mypara,mxhis),lookcontr(mxhis)
586 $ ,lookcontrx(mxhis),ncontrall,icontrtyp(mxhis),nccevt(mxcontr)
587 double precision ebin,zebin
588 common/errbins/ebin(mxbin,2,mxhis/2),zebin(mxbin,2,mxhis/2),
589 $inoerr(mxhis),noerr(mxhis/2,2),noerrhis(mxhis/2),noerrall
592 common/pfra/nfra,ifra(mxfra),ivfra(2,mxhis),itfra(mxtri,mxhis)
593 $ ,imofra(3,mxfra),iffra(mxfra),r1fra(3,mxfra),r2fra(3,mxfra)
595 double precision bofra
596 common/dfra/bofra(5,mxfra)
597 parameter (ntim=1000)
598 common/cprt/nprtj,pprt(5,ntim),idprt(ntim),iorprt(ntim)
601 double precision pgampr,rgampr
602 common/cgampr/pgampr(5),rgampr(4)
605 logical go,goo(mxcnt)
607 common/stavar/multc05,multy1,multc14,multyi,multc3,imulty1,multeb
610 common/varhis/icorrtrig(0:mxxhis),ihardevent(0:mxxhis)
611 &,ijetfind1(0:mxxhis),ijetfind2(0:mxxhis)
613 call utpri('xana ',ish,ishini,4)
622 if(ish.ge.5)write(ifch,*)'frames ...'
625 if(mod(iolept/10,10).eq.1) call gakjet(1)
626 if(mod(iolept/100,10).eq.1) call gakjet(2)
631 if(ifra(l).eq.12)emax(l)=sqrt(pnll**2+prom**2)
632 if(ifra(l).eq.iframe)then
636 elseif(ifra(l).eq.11.or.ifra(l).eq.12)then
641 bofra(3,l)=dsinh(dble(yhaha))
642 bofra(4,l)=dcosh(dble(yhaha))
644 if(ifra(l).eq.11.and.iframe.eq.12)then
645 imofra(3,l)=1 ! target -> NN
646 elseif(ifra(l).eq.12.and.iframe.eq.11)then
647 imofra(3,l)=-1 ! NN -> target
649 imofra(3,l)=0 ! not known
651 elseif(ifra(l).eq.21)then
653 print *, 'invalid frame request'
654 print *, 'choose frame gamma-nucleon for event run'
657 elseif(ifra(l).eq.22)then
659 imofra(1,l)=-1 !' trafo gN -> lab'
670 elseif(iframe.eq.22)then
671 ! nothing to do already gN-frame
673 print *, 'invalid frame request'
674 print *, 'choose frame gamma-nucleon or lab for event run'
677 elseif(ifra(l).eq.23)then
679 imofra(1,l)=0 ! gN -> breit-frame
688 bofra(4,l)=sqrt(rgampr(1)**2+rgampr(2)**2+rgampr(3)**2)
689 bofra(5,l)=sqrt( bofra(4,l)**2-rgampr(4)**2)
690 elseif(iframe.eq.23)then
691 ! nothing to do already breit-frame
693 print *, 'invalid frame request'
694 print *, 'choose frame gamma-nucleon or lab for event run'
697 elseif(ifra(l).eq.33.or.ifra(l).eq.36)then
698 if(ifra(l).eq.33)then
703 if(ten(4,1).lt.0.)then
714 call utrota(1,arox,aroy,aroz,brox,broy,broz)
723 imofra(3,l)=0 !no boost
725 bofra(1,l)=dble(ten(4,1)) !usually this is for boosting
726 bofra(2,l)=dble(ten(4,2)) !I abuse it to store the eigenvalues
727 bofra(3,l)=dble(ten(4,3)) !
728 elseif(ifra(l).eq.32.or.ifra(l).eq.34.or.ifra(l).eq.35)then
729 if(ifra(l).eq.32)then
730 call gaksphe(ten,2.,2)
731 elseif(ifra(l).eq.34)then
732 call gaksphe(ten,1.,2)
734 call gaksphe(ten,2.,3)
736 if(ten(4,1).lt.0.)then
747 call utrota(1,arox,aroy,aroz,brox,broy,broz)
758 bofra(1,l)=dble(ten(4,1))
759 bofra(2,l)=dble(ten(4,2))
760 bofra(3,l)=dble(ten(4,3))
766 if(ivar(1,n).ge.100.and.ivar(1,n).le.199) sval(1,n)=0.
767 if(ivar(2,n).ge.100.and.ivar(2,n).le.199) sval(2,n)=0.
768 if(ivar(1,n).gt.300.and.ivar(1,n).lt.400)then
769 call xval(n,ivar(1,n),ivfra(1,n),0,x) !initializing of variables
771 if(ivar(2,n).gt.300.and.ivar(2,n).lt.400)then
772 call xval(n,ivar(2,n),ivfra(2,n),0,y) !
777 do j=1,nbin(n) !copy bins
778 bin(j,3-nac(n),n)=bin(j,nac(n),n)
779 zcbin(j,3-nac(n),n)=zcbin(j,nac(n),n)
781 if(lookcontr(n).gt.0)then
783 do loo=lookcontr(n),lookcontrx(n)
784 bbin(j,3-nac(n),loo)=bbin(j,nac(n),loo)
785 zbbin(j,3-nac(n),loo)=zbbin(j,nac(n),loo)
789 if(inoerr(n).gt.0)then
792 ebin(j,3-nac(n),nn-1+noerrhis(n))=ebin(j,nac(n),
794 zebin(j,3-nac(n),nn-1+noerrhis(n))=zebin(j,nac(n),
802 if(ish.ge.5)write(ifch,*)'Calculate standard variables ...'
803 call StandardVariables
805 if(ish.ge.5)write(ifch,*)'Call corrtrig ...'
807 call corrtrig(icorrtrig(n))
809 if(ish.ge.5)write(ifch,*)'Call hardevent ...'
811 call hardevent(ihardevent(n))
813 if(ish.ge.5)write(ifch,*)'Call jetfind ...'
815 call jetfind(1,ijetfind1(n))
818 call jetfind(2,ijetfind2(n))
821 c...........................loop nptl...................................
822 if(ish.ge.5)write(ifch,*)'Loop nptl ...'
824 if(iorptl(j).lt.0.or.istptl(j).gt.istmax)goto8
825 if(ish.ge.5)write(ifch,*)'ptl :',j
826 call idchrg(idptl(j),ch)
828 iffra(i)=0 !flag if frame calculated or not
831 if(ivar(1,n).eq.-1.or.ivar(2,n).eq.-1)goto 9
833 c...........check ids
836 if(istptl(j).eq.0.and.idcod(i,n).eq.9990)then
837 if(abs(idptl(j)).ge.100
838 $ .and.abs(idptl(j)).lt.10000) go=.true.
839 elseif(istptl(j).eq.0.and.idcod(i,n).eq.9970)then
840 if(abs(ch).gt.0.1.and.abs(idptl(j)).ge.100
841 $ .and.abs(idptl(j)).lt.10000) go=.true.
842 elseif(istptl(j).eq.0.and.idcod(i,n).eq.-9960)then
843 if(ch.lt.-0.1.and.abs(idptl(j)).ge.100
844 $ .and.abs(idptl(j)).lt.10000)go=.true.
845 elseif(istptl(j).eq.0.and.idcod(i,n).eq.9960)then
846 if(ch.gt.0.1.and.abs(idptl(j)).ge.100
847 $ .and.abs(idptl(j)).lt.10000)go=.true.
848 elseif((istptl(j).le.1.or.istptl(j).ge.10)
849 $ .and.idcod(i,n).eq.idptl(j))then
853 if(ish.ge.10)write(ifch,*)j,' id,ist',idptl(j),istptl(j),go
855 c...........check weak decay
857 if(noweak(n).eq.1)then !do not consider weak decay products
858 if(iorptl(j).ne.0)then
859 idora=abs( idptl(iorptl(j)) )
860 if( idora.eq.20 .or.idora.eq.2130
861 & .or.idora.eq.2230 .or.idora.eq.1130
862 & .or.idora.eq.2330 .or.idora.eq.1330
863 & .or.idora.eq.3331 )go=.false.
864 ! print *, j,n, ' ', idptl(j),idora,go
869 c...........check triggers
871 if(ish.ge.7)write(ifch,*)' check triggers in histogram ',n
874 if(ish.ge.7)write(ifch,*)' trigger variable: ',itri(i,n)
875 if(itri(i,n).lt.100)then
876 call xval(n,itri(i,n),itfra(i,n),j,x)
877 if(ntrc(i,n).ne.-1)then
878 call triggercondition(i,n,x,go)
882 call triggercondition(i,n,x,goo(ncontr))
883 if((ivar(1,n).gt.100.and.ivar(1,n).lt.200)
884 . .or.(ivar(2,n).gt.100.and.ivar(2,n).lt.200))then
885 print*,'!-----------------------------------------'
886 print*,'! 100-199 event variables can not be used'
887 print*,'! in connection with "trigger contr ..." '
888 print*,'!-----------------------------------------'
892 elseif(itri(i,n).lt.200)then
893 if(ntrc(i,n).eq.-1)then
894 print*,'!-----------------------------------------'
895 print*,'! 100-199 event variables can not be used'
896 print*,'! in connection with "trigger contr ..." '
897 print*,'!-----------------------------------------'
900 call xval(n,itri(i,n),itfra(i,n),j,x)
901 valtri(i,n)=valtri(i,n)+x
906 c............fill histogram
908 if(ish.ge.7)write(ifch,*)' fill histogram '
909 & ,n,ivar(1,n),ivar(2,n),ivfra(2,n)
910 if(ivar(1,n).lt.100.or.ivar(2,n).lt.100)then
911 if(ivar(2,n).lt.100)then
912 call xval(n,ivar(2,n),ivfra(2,n),j,y)
915 if(ivar(1,n).lt.100)then
916 call xval(n,ivar(1,n),ivfra(1,n),j,x)
917 if(x.ge.xmin(n).and.x.le.xmax(n))then
918 norm3=mod(inorm(n)/100,10)
921 elseif(norm3.eq.2.and.ivar(1,n).eq.63.and.x.ne.0.)then
922 y=y/(x+pptl(5,j))/2/pi
923 elseif(norm3.eq.2.and.ivar(1,n).ne.63.and.x.ne.0.)then
925 elseif(norm3.eq.4.and.x.ne.0.)then
927 elseif(norm3.eq.5.and.x.ne.0.)then
929 elseif(norm3.eq.7.and.x.ne.0.)then
930 y=y/x/sqrt(x-pptl(5,j))
933 call fillhistoconex(n,x,y,ivfra(2,n),j) !for conex
936 nb=1+int(log(x/xmin(n))*xinc(n))
938 nb=1+int((x-xmin(n))*xinc(n))
940 bin(nb,nac(n),n)=bin(nb,nac(n),n)+y
941 if(ncontr.gt.0)then !ptl trigger contr
944 bbin(nb,nac(n),lookcontr(n)-1+nn)=
945 & bbin(nb,nac(n),lookcontr(n)-1+nn)+y
946 zbbin(nb,nac(n),lookcontr(n)-1+nn)=
947 & zbbin(nb,nac(n),lookcontr(n)-1+nn)+1
951 if(inoerr(n).gt.0)then
953 call xval(n,noerr(noerrhis(n),nn),ivfra(2,n),j,y)
954 ebin(nb,nac(n),nn-1+noerrhis(n))=
955 & ebin(nb,nac(n),nn-1+noerrhis(n))+y
956 zebin(nb,nac(n),nn-1+noerrhis(n))=
957 & zebin(nb,nac(n),nn-1+noerrhis(n))+1
960 zcbin(nb,nac(n),n)=zcbin(nb,nac(n),n)+1
966 if(ivar(1,n).gt.100.and.ivar(1,n).lt.200)then
967 call xval(n,ivar(1,n),ivfra(1,n),j,x)
968 sval(1,n)=sval(1,n)+x
970 if(ivar(2,n).gt.100.and.ivar(2,n).lt.200)then
971 call xval(n,ivar(2,n),ivfra(2,n),j,y)
972 sval(2,n)=sval(2,n)+y
974 if(ivar(1,n).gt.300.and.ivar(1,n).lt.400)then
975 call xval(n,ivar(1,n),ivfra(1,n),j,x)
977 if(ivar(2,n).gt.300.and.ivar(2,n).lt.400)then
978 call xval(n,ivar(2,n),ivfra(2,n),j,y)
980 if(ish.ge.8)write (ifch,*) ' ---> histo n,x,y:',n,x,y
986 c...........................end loop nptl...........................
990 if(ivar(1,n).eq.-1.or.ivar(2,n).eq.-1)goto 99
992 c........check event triggers
997 if(itri(i,n).gt.100)then
998 if(itri(i,n).lt.200)then
1001 call xval(n,itri(i,n),itfra(i,n),0,x)
1003 if(ntrc(i,n).ne.-1)then
1004 call triggercondition(i,n,x,go)
1008 call triggercondition(i,n,x,goo(ncontr))
1013 c........event variables > 200
1016 if(ivar(1,n).gt.100)then
1017 if(ivar(1,n).gt.200.and.ivar(1,n).lt.300)then
1018 call xval(n,ivar(1,n),ivfra(1,n),0,x)
1019 elseif(ivar(1,n).gt.300.and.ivar(1,n).lt.400)then
1020 call xval(n,ivar(1,n),ivfra(1,n),nptl+1,x)
1021 elseif(ivar(1,n).gt.100.and.ivar(1,n).lt.200)then
1024 call xval(n,ivar(1,n),ivfra(1,n),0,x)
1026 if(ivar(2,n).gt.200.and.ivar(2,n).lt.300)then
1027 call xval(n,ivar(2,n),ivfra(2,n),0,y)
1028 elseif(ivar(2,n).gt.300.and.ivar(2,n).lt.400)then
1029 call xval(n,ivar(2,n),ivfra(2,n),nptl+1,y)
1030 elseif(ivar(2,n).gt.0.and.ivar(2,n).lt.200)then
1033 call xval(n,ivar(2,n),ivfra(2,n),0,y)
1035 c The following doesn't work for ivar(2,n)<100, since particle number is not defined !
1036 c if(ivar(2,n).gt.200.and.ivar(2,n).lt.300)then
1037 c call xval(n,ivar(2,n),ivfra(2,n),0,y)
1038 c elseif(ivar(2,n).gt.300.and.ivar(2,n).lt.400)then
1039 c call xval(n,ivar(2,n),ivfra(2,n),nptl+1,y)
1040 c elseif(ivar(2,n).gt.100.and.ivar(2,n).lt.200)then
1043 c call xval(n,ivar(2,n),ivfra(2,n),0,y)
1045 if(mod(inorm(n)/100,10).eq.1)y=y*x
1046 if(mod(inorm(n)/100,10).eq.2.and.x.ne.0.)y=y/x/2/pi
1047 if(mod(inorm(n)/100,10).eq.4.and.x.ne.0.)y=y/x**1.5
1048 if(mod(inorm(n)/100,10).eq.5.and.x.ne.0.)y=y/x
1052 write (ifch,*) 'histo n,x,y:',n,x,y
1054 if(x.ge.xmin(n).and.x.le.xmax(n))then
1056 nb=1+int(log(x/xmin(n))*xinc(n))
1058 nb=1+int((x-xmin(n))*xinc(n))
1060 bin(nb,nac(n),n)=bin(nb,nac(n),n)+y
1064 & bbin(nb,nac(n),lookcontr(n)-1+nn)=
1065 & bbin(nb,nac(n),lookcontr(n)-1+nn)+y
1068 zcbin(nb,nac(n),n)=zcbin(nb,nac(n),n)+1
1074 c........particle variables
1077 if(ivar(1,n).le.100)then
1078 if(ncontr.gt.0)then !event trigger contr
1082 & bbin(nb,nac(n),lookcontr(n)-1+nn)=
1083 & bbin(nb,nac(n),lookcontr(n)-1+nn)
1084 & +bin(nb,nac(n),n)-bin(nb,3-nac(n),n)
1091 c............event ok (increase ncevt) or not (take copy)
1097 loo=lookcontr(n)-1+nn
1099 & nccevt(loo)=nccevt(loo)+1
1110 call utprix('xana ',ish,ishini,4)
1113 c--------------------------------------------------------------------
1114 subroutine triggercondition(i,n,x,go)
1115 c--------------------------------------------------------------------
1116 c ntrc is used to distinguish the different usage of trigger:
1118 c trigger var xmin xmax
1120 c trigger or n var1 xmin1 xmax1 var2 xmin2 xmax2 ... varn xminn xmaxn
1126 c trigger contr n var1 xmin1 xmax1 var2 xmin2 xmax2 ... varn xminn xmaxn
1128 c--------------------------------------------------------------------
1130 parameter (mxhis=500,mxcontr=300,mxidcd=60,mxtri=20,mxbin=400)
1131 parameter (mypara=10,mxpara=10)
1132 logical ilog,icnx,itrevt,idmod
1133 double precision bin,bbin,zcbin,zbbin
1135 common/bins/bin(mxbin,2,mxhis),zcbin(mxbin,2,mxhis)
1136 $ ,bbin(mxbin,2,mxcontr),itrevt(mxhis),zbbin(mxbin,2,mxcontr)
1137 $ ,nac(mxhis),ilog(mxhis),icnx(mxhis),xinc(mxhis),ncevt(mxhis)
1138 $ ,sval(2,mxhis),valtri(mxtri,mxhis),ntrc(mxtri,mxhis)
1139 $ ,xmin(mxhis),xmax(mxhis),nhis,noweak(mxhis)
1140 $ ,ivar(2,mxhis),inorm(mxhis),nbin(mxhis),nidcod(mxhis)
1141 $ ,idcod(mxidcd,mxhis),idmod(mxidcd,mxhis),ntri(mxhis)
1142 $ ,itri(mxtri,mxhis),xmitri(mxtri,mxhis),xmatri(mxtri,mxhis)
1143 $ ,xmitrp(mxtri,mxhis),xmatrp(mxtri,mxhis),xpara(mxpara,mxhis)
1144 $ ,ypara(mypara,mxhis),lookcontr(mxhis)
1145 $ ,lookcontrx(mxhis),ncontrall,icontrtyp(mxhis),nccevt(mxcontr)
1146 double precision ebin,zebin
1147 common/errbins/ebin(mxbin,2,mxhis/2),zebin(mxbin,2,mxhis/2),
1148 $inoerr(mxhis),noerr(mxhis/2,2),noerrhis(mxhis/2),noerrall
1149 logical go,gox,ok,goz
1152 if(xmn.eq.-123456.and.xmx.eq.-123456)then !for leading part
1158 if(abs(ntrc(i,n)).eq.1)then
1160 if(pmn.gt.99.999.and.pmx.gt.99.999)then
1161 if(x.lt.xmn.or.x.gt.xmx)goz=.false.
1163 if(x.lt.xmn-0.5.or.x.gt.xmx+0.5)goz=.false.
1164 ok=rangen().le.xmitrp(i,n)/100.
1165 if(.not.ok.and.x.lt.xmn+0.5)goz=.false.
1166 ok=rangen().le.xmatrp(i,n)/100.
1167 if(.not.ok.and.x.gt.xmx-0.5)goz=.false.
1169 if(.not.goz)go=.false.
1171 if(ntrc(i,n).eq.2)gox=.false.
1173 if(pmn.gt.99.999.and.pmx.gt.99.999)then
1174 if(x.lt.xmn.or.x.gt.xmx)goz=.false.
1176 if(x.lt.xmn-0.5.or.x.gt.xmx+0.5)goz=.false.
1177 ok=rangen().le.xmitrp(i,n)/100.
1178 if(.not.ok.and.x.lt.xmn+0.5)goz=.false.
1179 ok=rangen().le.xmatrp(i,n)/100.
1180 if(.not.ok.and.x.gt.xmx-0.5)goz=.false.
1183 if(ntrc(i,n).eq.3.and..not.gox)go=.false.
1187 c-----------------------------------------------------------------------
1188 subroutine fillhistoconex(n,x,y,lf,j) !for conex
1189 c-----------------------------------------------------------------------
1191 parameter (mxhis=500,mxcontr=300,mxidcd=60,mxtri=20,mxbin=400)
1192 parameter (mypara=10,mxpara=10)
1193 logical ilog,icnx,itrevt,idmod
1194 double precision bin,bbin,zcbin,zbbin
1195 common/bins/bin(mxbin,2,mxhis),zcbin(mxbin,2,mxhis)
1196 $ ,bbin(mxbin,2,mxcontr),itrevt(mxhis),zbbin(mxbin,2,mxcontr)
1197 $ ,nac(mxhis),ilog(mxhis),icnx(mxhis),xinc(mxhis),ncevt(mxhis)
1198 $ ,sval(2,mxhis),valtri(mxtri,mxhis),ntrc(mxtri,mxhis)
1199 $ ,xmin(mxhis),xmax(mxhis),nhis,noweak(mxhis)
1200 $ ,ivar(2,mxhis),inorm(mxhis),nbin(mxhis),nidcod(mxhis)
1201 $ ,idcod(mxidcd,mxhis),idmod(mxidcd,mxhis),ntri(mxhis)
1202 $ ,itri(mxtri,mxhis),xmitri(mxtri,mxhis),xmatri(mxtri,mxhis)
1203 $ ,xmitrp(mxtri,mxhis),xmatrp(mxtri,mxhis),xpara(mxpara,mxhis)
1204 $ ,ypara(mypara,mxhis),lookcontr(mxhis)
1205 $ ,lookcontrx(mxhis),ncontrall,icontrtyp(mxhis),nccevt(mxcontr)
1206 double precision ebin,zebin
1207 common/errbins/ebin(mxbin,2,mxhis/2),zebin(mxbin,2,mxhis/2),
1208 $inoerr(mxhis),noerr(mxhis/2,2),noerrhis(mxhis/2),noerrall
1210 if(.not.(mod(inorm(n),10).ne.4
1211 & .and.mod(inorm(n),10).ne.6
1212 & .and.mod(inorm(n)/100,10).ne.3))return
1214 c=(xmax(n)/xmin(n))**(1./real(nbin(n)))
1215 nde=nint(1./log10(c))
1216 nb=max(1,1+int(log10(x/xmin(n))*nde))
1217 xmb=xmin(n)*c**(nb-0.5)
1218 if(x.gt.xmb.and.nb.lt.nbin(n))then
1220 & write(ifmt,*)'xana max ?',x,xmax(n),nb
1223 elseif(x.lt.xmb.and.nb.gt.1)then
1224 if(x.lt.xmin(n))write(ifmt,*)'xana min ?',x,nb
1232 c=(xmax(n)-xmin(n))/real(nbin(n))
1233 nb=max(1,1+int((x-xmin(n))/c))
1234 xmb=xmin(n)+c*(nb-0.5)
1238 elseif(x.lt.xmb)then
1246 xc=(x-xmx)/(xmb-xmx)
1247 xc=max(0.,min(1.,xc))
1248 bin(nb,nac(n),n)=bin(nb,nac(n),n)+xc*y
1249 if(nbx.ne.0)bin(nb+nbx,nac(n),n)
1250 & =bin(nb+nbx,nac(n),n)+(1.-xc)*y
1251 zcbin(nb,nac(n),n)=zcbin(nb,nac(n),n)+1
1252 if(inoerr(n).gt.0)then
1254 call xval(n,noerr(noerrhis(n),nn),lf,j,y2)
1255 ebin(nb,nac(n),nn-1+noerrhis(n))=
1256 & ebin(nb,nac(n),nn-1+noerrhis(n))+y2
1257 zebin(nb,nac(n),nn-1+noerrhis(n))=
1258 & zebin(nb,nac(n),nn-1+noerrhis(n))+1
1263 c---------------------------------------------------------------------
1265 c---------------------------------------------------------------------
1267 parameter (mxhis=500,mxcontr=300,mxidcd=60,mxtri=20,mxbin=400)
1268 parameter (mypara=10,mxpara=10)
1269 logical ilog,icnx,itrevt,idmod
1270 double precision bin,bbin,zcbin,zbbin
1271 common/bins/bin(mxbin,2,mxhis),zcbin(mxbin,2,mxhis)
1272 $ ,bbin(mxbin,2,mxcontr),itrevt(mxhis),zbbin(mxbin,2,mxcontr)
1273 $ ,nac(mxhis),ilog(mxhis),icnx(mxhis),xinc(mxhis),ncevt(mxhis)
1274 $ ,sval(2,mxhis),valtri(mxtri,mxhis),ntrc(mxtri,mxhis)
1275 $ ,xmin(mxhis),xmax(mxhis),nhis,noweak(mxhis)
1276 $ ,ivar(2,mxhis),inorm(mxhis),nbin(mxhis),nidcod(mxhis)
1277 $ ,idcod(mxidcd,mxhis),idmod(mxidcd,mxhis),ntri(mxhis)
1278 $ ,itri(mxtri,mxhis),xmitri(mxtri,mxhis),xmatri(mxtri,mxhis)
1279 $ ,xmitrp(mxtri,mxhis),xmatrp(mxtri,mxhis),xpara(mxpara,mxhis)
1280 $ ,ypara(mypara,mxhis),lookcontr(mxhis)
1281 $ ,lookcontrx(mxhis),ncontrall,icontrtyp(mxhis),nccevt(mxcontr)
1282 double precision ebin,zebin
1283 common/errbins/ebin(mxbin,2,mxhis/2),zebin(mxbin,2,mxhis/2),
1284 $inoerr(mxhis),noerr(mxhis/2,2),noerrhis(mxhis/2),noerrall
1287 double precision histoweight
1288 common/chiswei/histoweight
1291 double precision dcel
1293 common/geom/rmproj,rmtarg,bmax,bkmx
1296 if(ivar(1,n).eq.-1)then
1301 c.......here normalization.......................................
1302 c see also "..........fill histogram"
1303 c.................................................................
1304 c the norm ( inorm(n) ) is a number hijk which normalizes to:
1307 c 1: / number of events
1308 c 2: / number of triggered events
1310 c 6: / number of summed bin-counts (yield=1.)
1311 c 7: uses same normalization as one histo before
1315 c 2: * sigma_total / bin-width
1316 c 3: * sigma_diff / bin-width
1320 c 2: y => y/x/2/pi (modified for mt0)
1324 c 6: y => y*xi (for conex, xi=x of the bin)
1330 c.................................................................
1331 norm1=mod(inorm(n),10)
1332 norm2=mod(inorm(n)/10,10)
1333 norm3=mod(inorm(n)/100,10)
1334 norm4=mod(inorm(n)/1000,10)
1337 nctbin=nctbin+zcbin(l,nac(n),n)
1338 if(norm1.eq.4.and.zcbin(l,nac(n),n).ne.0d0)then
1339 bin(l,nac(n),n)=bin(l,nac(n),n)/zcbin(l,nac(n),n)
1340 if(lookcontr(n).gt.0)then
1341 do loo=lookcontr(n),lookcontrx(n)
1342 if(zbbin(l,nac(n),loo).ne.0.)
1343 & bbin(l,nac(n),loo)=bbin(l,nac(n),loo)
1344 & /zbbin(l,nac(n),loo)
1349 xx(l)=xmin(n)*(xmax(n)/xmin(n))**((float(l)-.5)/nbin(n))
1351 xx(l)=(float(l)-0.5)*(xmax(n)-xmin(n))/nbin(n)+xmin(n)
1355 if(norm1.eq.1)cnorm=1./float(nevent)
1357 if(ncevt(n).ne.0)then
1358 cnorm=1./float(ncevt(n))
1363 if(norm1.eq.6.and.nctbin.ne.0)cnorm=1./float(nctbin)
1364 if(norm1.eq.7)cnorm=cnormx
1367 & sigma=10.*pi*bmax**2.*nevent/ntevt !total (untriggered) sigma
1368 if(norm2.eq.3)then !differential (triggered) sigma
1370 & sigma=10.*pi*bmax**2.*ncevt(n)/ntevt
1372 if(norm3.eq.3)then !kno
1376 if(nctbin.ne.0)first=first+xx(l)*zcbin(l,nac(n),n)/nctbin
1377 if(nctbin.ne.0)secnd=secnd
1378 $ +xx(l)**2*zcbin(l,nac(n),n)/nctbin
1384 if(norm2.eq.2.or.norm2.eq.3) cnorm=cnorm*sigma
1386 if(norm2.ge.1.and.norm2.le.3) cnorm=cnorm*xinc(n)
1387 if(norm2.eq.2.or.norm2.eq.3) cnorm=cnorm*sigma
1390 if(ilog(n).and.norm2.ge.1.and.norm2.le.3)
1391 $ bin(l,nac(n),n) = bin(l,nac(n),n)
1392 $ /(xmin(n)*exp(float(l)/xinc(n))*(1.-exp(-1./xinc(n))))
1393 bin(l,nac(n),n) = bin(l,nac(n),n) * cnorm
1400 if(nint(xpara(1,n)).eq.999963)shft=xpara(2,n)
1403 if(norm3.eq.1.and.xx(ii).ne.0.)g=1./xx(ii)
1404 if(norm3.eq.2)g=2*pi*(xx(ii)+shft)
1405 if(norm3.eq.4)g=xx(ii)**1.5
1406 if(norm3.eq.5)g=xx(ii)
1408 yield=yield+bin(ii,nac(n),n)/xinc(n)*hisfac*f*g
1411 x=(xx(l)+xshift) !*xhfact
1414 if(zcbin(l,nac(n),n).ne.0d0)
1415 * sigbin=bin(l,nac(n),n)*hisfac*f/sqrt(zcbin(l,nac(n),n))
1416 if(norm4.eq.0.or.l.eq.1)then
1417 ar(l,3)=bin(l,nac(n),n)*hisfac*f
1418 if(lookcontr(n).gt.0)then
1419 do loo=lookcontr(n),lookcontrx(n)
1421 if(norm1.eq.2.and.nccevt(loo).ne.0.)
1422 * r=float(ncevt(n))/nccevt(loo)
1423 lo=loo-lookcontr(n)+1
1424 ary(l,lo)=bbin(l,nac(n),loo)*hisfac*f*cnorm*r
1425 if(zbbin(l,nac(n),loo).gt.0.)then
1426 ardy(l,lo)=ary(l,lo)/sqrt(zbbin(l,nac(n),loo))
1430 if(norm1.eq.4)ardy(l,lo)=zbbin(l,nac(n),loo)
1433 if(norm3.eq.6)then !conex
1434 ar(l,3)=ar(l,3)*xx(l)
1438 ar(l,3)=ar(l-1,3)+bin(l,nac(n),n)*hisfac*f
1439 ar(l,4)=sqrt(ar(l-1,4)**2+sigbin**2)
1441 if(inoerr(n).ge.1)then
1442 if(zebin(l,nac(n),noerrhis(n)).gt.0.d0)then
1443 ar(l,4)=ebin(l,nac(n),noerrhis(n))/zebin(l,nac(n),noerrhis(n))
1448 if(inoerr(n).eq.2)then
1449 if(zebin(l,nac(n),noerrhis(n)+1).gt.0.d0)then
1450 ar(l,5)=ebin(l,nac(n),noerrhis(n)+1)/zebin(l,nac(n),noerrhis(n)+1)
1455 if(norm1.eq.4)ar(l,4)=zcbin(l,nac(n),n)
1458 histoweight=dble(ncevt(n))
1459 if(norm1.eq.4)histoweight=0d0
1465 c-----------------------------------------------------------------------
1466 integer function nsdiff(insdif,now)
1467 c-----------------------------------------------------------------------
1468 c returns 1 if trigger condition for NSD fulfilled and 0 otherwise
1469 c for UA1 (insdif=1) or CDF (insdif=2) or STAR (insdif=3,4)
1470 C or BRAHMS (insdif=5)
1471 c now ... noweak(histogram number)
1472 c-----------------------------------------------------------------------
1481 if(istptl(npts).ne.0)goto 60
1482 if( idptl(npts).ne.120 .and.idptl(npts).ne.-120
1483 * .and.idptl(npts).ne.130 .and.idptl(npts).ne.-130
1484 * .and.idptl(npts).ne.1120.and.idptl(npts).ne.-1120
1485 * .and.idptl(npts).ne.1130.and.idptl(npts).ne.-1130
1486 * .and.idptl(npts).ne.2230.and.idptl(npts).ne.-2230
1487 * .and.idptl(npts).ne.2330.and.idptl(npts).ne.-2330
1488 * .and.idptl(npts).ne.3331.and.idptl(npts).ne.-3331)goto 60
1489 c if(now.eq.1)then !do not consider weak decay products
1490 c if(iorptl(npts).ne.0)then
1491 c idora=abs( idptl(iorptl(npts)) )
1492 c if( idora.eq.20 .or.idora.eq.2130
1493 c & .or.idora.eq.2230 .or.idora.eq.1130
1494 c & .or.idora.eq.2330 .or.idora.eq.1330
1495 c & .or.idora.eq.3331 )goto 60
1498 ppp=sqrt(pptl(1,npts)**2+pptl(2,npts)**2+pptl(3,npts)**2)
1499 if(ppp.gt.abs(pptl(3,npts)))then
1500 yyy=.5*log((ppp+pptl(3,npts))/(ppp-pptl(3,npts)))
1502 yyy=sign(100.,pptl(3,npts))
1505 if(yyy.gt.2. .and. yyy.lt.5.6)iii1=1
1506 if(yyy.gt.-5.6 .and. yyy.lt.-2.)iii2=1
1507 elseif(insdif.eq.2)then
1508 if(yyy.gt.3.2 .and. yyy.lt.5.9)iii1=1
1509 if(yyy.gt.-5.9 .and. yyy.lt.-3.2)iii2=1
1510 if(yyy.gt.0. .and. yyy.lt.3.0)ipos=ipos+1
1511 if(yyy.gt.-3.0 .and. yyy.lt.0. )ineg=ineg+1
1512 elseif(insdif.eq.3)then
1513 if(yyy.gt.-5.0 .and. yyy.lt.-3.3 )iii1=1
1514 if(yyy.gt. 3.3 .and. yyy.lt. 5.0 )iii2=1
1515 elseif(insdif.eq.4)then
1516 if(yyy.gt.-5.0 .and. yyy.lt.-3.1 )iii1=1
1517 if(yyy.gt. 3.1 .and. yyy.lt. 5.0 )iii2=1
1518 elseif(insdif.eq.5)then
1519 if(yyy.gt.-5.25 .and. yyy.lt.-3.26 )iii1=1
1520 if(yyy.gt. 3.26 .and. yyy.lt. 5.25 )iii2=1
1525 if(iii1.eq.1 .and. iii2.eq.1) nsdiff=1
1526 elseif(insdif.eq.2)then
1527 if((iii1.eq.1 .and. iii2.eq.1) .and.
1528 * ((ipos.ne.0 .and. ineg.ne.0) .and. ipos+ineg.ge.4)) nsdiff=1
1529 elseif(insdif.eq.3.or.insdif.eq.4.or.insdif.eq.5)then
1530 if(iii1.eq.1 .and. iii2.eq.1) nsdiff=1
1533 stop'in nsdiff. argument of nsdiff not authorized. '
1537 c----------------------------------------------------------------------
1538 subroutine xtrans(cvar,inom,ifr,n)
1539 c----------------------------------------------------------------------
1540 common/stavar/multc05,multy1,multc14,multyi,multc3,imulty1,multeb
1542 parameter(mxxhis=50)
1543 common/varhis/icorrtrig(0:mxxhis),ihardevent(0:mxxhis)
1544 &,ijetfind1(0:mxxhis),ijetfind2(0:mxxhis)
1548 if(cvar.eq.'numptl')then
1550 elseif(cvar.eq.'npaptl')then
1552 elseif(cvar.eq.'npmptl')then
1554 elseif(cvar.eq.'ispptl')then
1556 elseif(cvar.eq.'rapx')then
1558 elseif(cvar.eq.'iptlfr')then
1560 elseif(cvar.eq.'rinp')then
1562 elseif(cvar.eq.'eco')then
1564 elseif(cvar.eq.'absrap')then
1566 elseif(cvar.eq.'rap')then
1568 elseif(cvar.eq.'xp')then
1570 elseif(cvar.eq.'xe')then
1572 elseif(cvar.eq.'pt')then
1574 elseif(cvar.eq.'p1a')then
1576 elseif(cvar.eq.'p2a')then
1578 elseif(cvar.eq.'xi')then
1580 elseif(cvar.eq.'xf')then
1582 elseif(cvar.eq.'t')then
1584 elseif(cvar.eq.'rapmi')then
1586 elseif(cvar.eq.'eta')then
1588 elseif(cvar.eq.'theta')then
1590 elseif(cvar.eq.'pt2')then
1592 elseif(cvar.eq.'et')then
1594 elseif(cvar.eq.'idptl')then
1596 elseif(cvar.eq.'istptl')then
1598 elseif(cvar.eq.'mass')then
1600 elseif(cvar.eq.'idaptl')then
1602 elseif(cvar.eq.'egy')then
1604 elseif(cvar.eq.'rapwro')then
1606 elseif(cvar.eq.'mt')then
1608 elseif(cvar.eq.'pplus')then
1610 elseif(cvar.eq.'pminus')then
1612 elseif(cvar.eq.'p5')then
1614 elseif(cvar.eq.'pa')then
1616 elseif(cvar.eq.'sob')then
1618 elseif(cvar.eq.'idpom')then
1620 elseif(cvar.eq.'p3a')then
1622 elseif(cvar.eq.'cmass')then
1624 elseif(cvar.eq.'arappi')then
1626 elseif(cvar.eq.'itsptl')then
1628 elseif(cvar.eq.'ityptl')then
1630 elseif(cvar.eq.'idoptl')then
1632 elseif(cvar.eq.'iptl')then
1634 elseif(cvar.eq.'index')then
1636 elseif(cvar.eq.'p1')then
1638 elseif(cvar.eq.'p2')then
1640 elseif(cvar.eq.'p3')then
1642 elseif(cvar.eq.'p4')then
1644 elseif(cvar.eq.'xg')then
1646 elseif(cvar.eq.'ek')then
1648 elseif(cvar.eq.'beta')then
1650 elseif(cvar.eq.'mt0')then
1652 elseif(cvar.eq.'qsqptl')then
1654 elseif(cvar.eq.'xelab')then
1656 elseif(cvar.eq.'hgtc05')then
1658 imulty1=1 !to switch on the calculation of "Standard variable"
1659 elseif(cvar.eq.'hadtyp')then
1662 elseif(cvar.eq.'hgtc1')then
1664 elseif(cvar.eq.'x4')then
1666 elseif(cvar.eq.'npn')then
1668 elseif(cvar.eq.'routp')then
1670 elseif(cvar.eq.'hgtc3')then
1673 elseif(cvar.eq.'mu14')then
1676 elseif(cvar.eq.'delphi')then
1679 !------------------------------------------------------------
1680 !icorrtrig sores the histogram numbers of those histograms which
1681 !use the delphi variable (and therfore require a call corrtrig
1682 !------------------------------------------------------------
1684 if(icorrtrig(i).eq.n)iok=1
1687 icorrtrig(0)=icorrtrig(0)+1
1688 if(icorrtrig(0).gt.mxxhis)stop'mxxhis too small'
1689 icorrtrig(icorrtrig(0))=n
1691 elseif(cvar.eq.'v2')then
1693 elseif(cvar.eq.'pt4')then
1695 elseif(cvar.eq.'rin')then
1697 elseif(cvar.eq.'mulevt')then
1699 elseif(cvar.eq.'etevt')then
1701 elseif(cvar.eq.'enevt')then
1703 elseif(cvar.eq.'ev6evt')then
1705 elseif(cvar.eq.'xenevt')then
1707 elseif(cvar.eq.'netevt')then
1709 elseif(cvar.eq.'ptevt')then
1711 elseif(cvar.eq.'pmxevt')then
1713 elseif(cvar.eq.'numevt')then
1715 elseif(cvar.eq.'egyevt')then
1717 elseif(cvar.eq.'bimevt')then
1719 elseif(cvar.eq.'xbjevt')then
1721 elseif(cvar.eq.'qsqevt')then
1723 elseif(cvar.eq.'yevt')then
1725 elseif(cvar.eq.'eloevt')then
1727 elseif(cvar.eq.'nd1evt')then
1729 elseif(cvar.eq.'nd2evt')then
1731 elseif(cvar.eq.'theevt')then
1733 elseif(cvar.eq.'nspevt')then
1735 elseif(cvar.eq.'nhpevt')then
1737 elseif(cvar.eq.'sigtot')then
1739 elseif(cvar.eq.'sigela')then
1741 elseif(cvar.eq.'sloela')then
1743 elseif(cvar.eq.'nrgevt')then
1745 elseif(cvar.eq.'qevt')then
1747 elseif(cvar.eq.'qtlevt')then
1749 elseif(cvar.eq.'threvt')then
1751 ifr=33 !set thrust-frame
1752 elseif(cvar.eq.'omtevt')then
1754 ifr=33 !set thrust-frame
1755 elseif(cvar.eq.'tmaevt')then
1757 ifr=33 !set thrust-frame
1758 elseif(cvar.eq.'tmievt')then
1760 ifr=33 !set thrust-frame
1761 elseif(cvar.eq.'oblevt')then
1763 ifr=33 !set thrust-frame
1764 elseif(cvar.eq.'sphevt')then
1766 ifr=32 !set sph-frame
1767 elseif(cvar.eq.'aplevt')then
1769 ifr=32 !set sph-frame
1770 elseif(cvar.eq.'cpaevt')then
1772 ifr=34 !set sph2-frame
1773 elseif(cvar.eq.'dpaevt')then
1775 ifr=34 !set sph2-frame
1776 elseif(cvar.eq.'npoevt')then
1778 elseif(cvar.eq.'npnevt')then
1781 !....unused 236, 237
1783 elseif(cvar.eq.'npxevt')then
1785 elseif(cvar.eq.'mu1evt')then
1788 elseif(cvar.eq.'muievt')then
1791 elseif(cvar.eq.'hgtevt')then
1794 elseif(cvar.eq.'difevt')then
1796 elseif(cvar.eq.'dixevt')then
1798 elseif(cvar.eq.'qinevt')then
1800 elseif(cvar.eq.'qfievt')then
1802 elseif(cvar.eq.'einevt')then
1804 elseif(cvar.eq.'efievt')then
1806 elseif(cvar.eq.'pinevt')then
1808 elseif(cvar.eq.'pfievt')then
1810 elseif(cvar.eq.'pxfevt')then ! leading proton xf in cms
1812 elseif(cvar.eq.'pi+xf')then ! pi+xf: pi+ yield at cms xf>0.01
1814 elseif(cvar.eq.'pi-xf')then ! pi-xf: pi- yield at cms xf>0.01
1816 elseif(cvar.eq.'sigcut')then
1818 elseif(cvar.eq.'keu')then
1820 elseif(cvar.eq.'ked')then
1822 elseif(cvar.eq.'kes')then
1824 elseif(cvar.eq.'kolevt')then
1826 elseif(cvar.eq.'sigsd')then
1828 elseif(cvar.eq.'nglevt')then
1830 elseif(cvar.eq.'kppevt')then ! collision numbers per participant
1832 elseif(cvar.eq.'npievt')then ! pion + multiplicity per event
1834 elseif(cvar.eq.'np2evt')then ! pion + multiplicity per participant
1836 elseif(cvar.eq.'sigdif'.or.cvar.eq.'sigdifr')then
1838 elseif(cvar.eq.'koievt')then
1840 elseif(cvar.eq.'ineevt')then
1842 elseif(cvar.eq.'elaevt')then
1844 elseif(cvar.eq.'itgevt')then
1848 if(icorrtrig(i).eq.n)iok=1
1851 icorrtrig(0)=icorrtrig(0)+1
1852 if(icorrtrig(0).gt.mxxhis)stop'mxxhis too small'
1853 icorrtrig(icorrtrig(0))=n
1855 elseif(cvar.eq.'hrdevt')then
1858 do i=1,ihardevent(0)
1859 if(ihardevent(i).eq.n)iok=1
1862 ihardevent(0)=ihardevent(0)+1
1863 if(ihardevent(0).gt.mxxhis)stop'mxxhis too small'
1864 ihardevent(ihardevent(0))=n
1866 elseif(cvar(2:6).eq.'j1evt'.or.cvar(2:6).eq.'j2evt')then
1869 if(ijetfind1(i).eq.n)iok=1
1872 ijetfind1(0)=ijetfind1(0)+1
1873 if(ijetfind1(0).gt.mxxhis)stop'mxxhis too small'
1874 ijetfind1(ijetfind1(0))=n
1876 if(cvar.eq.'ej1evt')inom=277
1877 if(cvar.eq.'pj1evt')inom=278
1878 if(cvar(2:6).eq.'j2evt')then
1881 if(ijetfind2(i).eq.n)iok=1
1884 ijetfind2(0)=ijetfind2(0)+1
1885 if(ijetfind2(0).gt.mxxhis)stop'mxxhis too small'
1886 ijetfind2(ijetfind2(0))=n
1888 if(cvar.eq.'ej2evt')inom=279
1889 if(cvar.eq.'pj2evt')inom=280
1891 elseif(cvar.eq.'zppevt')then
1893 elseif(cvar.eq.'zptevt')then
1895 elseif(cvar.eq.'***not used***')then
1897 elseif(cvar.eq.'nd3evt')then
1899 elseif(cvar.eq.'nd4evt')then
1901 elseif(cvar.eq.'nd5evt')then
1903 elseif(cvar.eq.'mubevt')then
1906 elseif(cvar.eq.'aimevt')then
1908 elseif(cvar.eq.'wjbevt')then
1910 elseif(cvar.eq.'njbevt')then
1912 elseif(cvar.eq.'djbevt')then
1914 elseif(cvar.eq.'tjbevt')then
1916 elseif(cvar.eq.'hjmevt')then
1918 elseif(cvar.eq.'ljmevt')then
1920 elseif(cvar.eq.'djmevt')then
1922 elseif(cvar.eq.'ybal')then
1924 elseif(cvar.eq.'yabal')then
1926 elseif(cvar.eq.'sigine')then
1928 elseif(cvar.eq.'sigiaa')then
1930 elseif(cvar.eq.'alpdsf')then
1932 elseif(cvar.eq.'alpdsh')then
1934 elseif(cvar.eq.'betdsf')then
1936 elseif(cvar.eq.'betdsh')then
1938 elseif(cvar.eq.'rexdip')then
1940 elseif(cvar.eq.'rexdit')then
1942 elseif(cvar.eq.'m14evt')then
1944 elseif(cvar.eq.'ht3evt')then
1946 elseif(cvar.eq.'sigiex')then
1948 elseif(cvar.eq.'sigdex')then
1950 elseif(cvar.eq.'sigsex')then
1952 elseif(cvar.eq.'ox1evt')then
1954 elseif(cvar.eq.'ox2evt')then
1956 elseif(cvar.eq.'ox3evt')then
1958 elseif(cvar.eq.'ox4evt')then
1962 print *,' xtrans: unknown variable ',cvar
1969 c----------------------------------------------------------------------
1970 subroutine xval(n,inom,lf,j,x)
1971 c----------------------------------------------------------------------
1972 c n ...... histogram index
1973 c inom ... variable index
1974 c 1-100 particle variables
1975 c 101-200 accumulative event variables
1976 c > 200 other event variables
1977 c lf ..... frame index
1978 c particle index (used for particle variables)
1979 c----------------------------------------------------------------------
1981 common/stavar/multc05,multy1,multc14,multyi,multc3,imulty1,multeb
1983 parameter(mxxhis=50)
1984 common/varhis/icorrtrig(0:mxxhis),ihardevent(0:mxxhis)
1985 &,ijetfind1(0:mxxhis),ijetfind2(0:mxxhis)
1988 parameter (ntim=1000)
1989 common/cprt/nprtj,pprt(5,ntim),idprt(ntim),iorprt(ntim)
1992 common/cxyzt/xptl(mxptl),yptl(mxptl),zptl(mxptl),tptl(mxptl)
1993 *,optl(mxptl),uptl(mxptl),sptl(mxptl),rptl(mxptl,3)
1995 parameter (mxhis=500,mxcontr=300,mxidcd=60,mxtri=20,mxbin=400)
1996 parameter (mypara=10,mxpara=10)
1997 logical ilog,icnx,itrevt,idmod
1998 double precision bin,bbin,zcbin,zbbin
1999 common/bins/bin(mxbin,2,mxhis),zcbin(mxbin,2,mxhis)
2000 $ ,bbin(mxbin,2,mxcontr),itrevt(mxhis),zbbin(mxbin,2,mxcontr)
2001 $ ,nac(mxhis),ilog(mxhis),icnx(mxhis),xinc(mxhis),ncevt(mxhis)
2002 $ ,sval(2,mxhis),valtri(mxtri,mxhis),ntrc(mxtri,mxhis)
2003 $ ,xmin(mxhis),xmax(mxhis),nhis,noweak(mxhis)
2004 $ ,ivar(2,mxhis),inorm(mxhis),nbin(mxhis),nidcod(mxhis)
2005 $ ,idcod(mxidcd,mxhis),idmod(mxidcd,mxhis),ntri(mxhis)
2006 $ ,itri(mxtri,mxhis),xmitri(mxtri,mxhis),xmatri(mxtri,mxhis)
2007 $ ,xmitrp(mxtri,mxhis),xmatrp(mxtri,mxhis),xpara(mxpara,mxhis)
2008 $ ,ypara(mypara,mxhis),lookcontr(mxhis)
2009 $ ,lookcontrx(mxhis),ncontrall,icontrtyp(mxhis),nccevt(mxcontr)
2010 double precision ebin,zebin
2011 common/errbins/ebin(mxbin,2,mxhis/2),zebin(mxbin,2,mxhis/2),
2012 $inoerr(mxhis),noerr(mxhis/2,2),noerrhis(mxhis/2),noerrall
2014 common/pfra/nfra,ifra(mxfra),ivfra(2,mxhis),itfra(mxtri,mxhis)
2015 $ ,imofra(3,mxfra),iffra(mxfra),r1fra(3,mxfra),r2fra(3,mxfra)
2018 double precision bofra
2019 common/dfra/bofra(5,mxfra)
2020 dimension p(5,mxfra),aimuni(10,mxhis),xor(5,mxfra)
2022 if(iffra(lf).eq.0.and.j.ne.0)then
2027 xor(l,lf)=xorptl(l,j)
2029 if(imofra(1,lf).ne.0)then
2030 call utrota(imofra(1,lf),r1fra(1,lf),r1fra(2,lf),r1fra(3,lf)
2031 $ ,p(1,lf),p(2,lf),p(3,lf))
2032 call utrota(imofra(1,lf),r1fra(1,lf),r1fra(2,lf),r1fra(3,lf)
2033 $ ,xor(1,lf),xor(2,lf),xor(3,lf))
2035 if(imofra(2,lf).ne.0)then !the x-z exchanged is ok !!
2036 call utrota(imofra(2,lf),r2fra(3,lf),r2fra(2,lf),r2fra(1,lf)
2037 $ ,p(3,lf),p(2,lf),p(1,lf))
2038 call utrota(imofra(2,lf),r2fra(3,lf),r2fra(2,lf),r2fra(1,lf)
2039 $ ,xor(3,lf),xor(2,lf),xor(1,lf))
2041 if(imofra(3,lf).ne.0)then
2042 call utlob4(imofra(3,lf),bofra(1,lf),bofra(2,lf)
2043 $ ,bofra(3,lf) ,bofra(4,lf),bofra(5,lf)
2044 $ ,p(1,lf),p(2,lf),p(3,lf),p(4,lf))
2045 call utlob4(imofra(3,lf),bofra(1,lf),bofra(2,lf)
2046 $ ,bofra(3,lf) ,bofra(4,lf),bofra(5,lf)
2047 $ ,xor(1,lf),xor(2,lf),xor(3,lf),xor(4,lf))
2052 c--------------------------------- 1 - 100 ----------------------------
2055 elseif(inom.eq.2)then
2057 elseif(inom.eq.3)then
2059 if(iabs(idptl(j)).le.9999
2060 $ .and.mod(iabs(idptl(j)),10).le.1)
2061 $ call idchrg(idptl(j),chrg)
2065 x=int(sign(1.,chrg))
2067 elseif(inom.eq.4)then
2071 if (iad.ge.100.and.iad.lt.1000) x=1./(1.+2.*jspin)
2072 if (iad.ge.1000.and.iad.lt.9999) x=1./(2.+2*jspin)
2073 elseif(inom.eq.5)then !'rapx' !st-rap for string segments only !!!!!!!!!!
2075 elseif(inom.eq.6)then !'iptlfr'
2077 if(j.ge.minfra.and.j.le.maxfra)x=1
2078 elseif(inom.eq.7)then !'rinp'
2081 x=xptl(j)*aa+yptl(j)*bb
2082 elseif(inom.eq.8)then !'eco' !engy in comoving frame
2084 amt=p(5,lf)**2+p(1,lf)**2+p(2,lf)**2
2085 if(amt.gt.0..and.p(4,lf)+abs(p(3,lf)).gt.0.d0)then
2087 rap=sign(1.,p(3,lf))*alog((p(4,lf)+abs(p(3,lf)))/amt)
2089 x=amt*cosh(rap-rapx)
2091 elseif(inom.eq.12)then !'absrap'
2092 amt=p(5,lf)**2+p(1,lf)**2+p(2,lf)**2
2093 if(amt.gt.0..and.p(4,lf)+abs(p(3,lf)).gt.0.d0)then
2095 x=alog((p(4,lf)+abs(p(3,lf)))/amt)
2099 elseif(inom.eq.13)then !'rap'
2100 amt=p(5,lf)**2+p(1,lf)**2+p(2,lf)**2
2101 if(amt.gt.0..and.p(4,lf)+abs(p(3,lf)).gt.0.d0)then
2103 x=sign(1.,p(3,lf))*alog((p(4,lf)+abs(p(3,lf)))/amt)
2107 elseif(inom.eq.14)then !'xp'
2108 x=sqrt(p(3,lf)**2+p(2,lf)**2+p(1,lf)**2)/emax(lf)
2109 elseif(inom.eq.15)then !'xe'
2111 elseif(inom.eq.16)then !'pt'
2112 x=sqrt(p(2,lf)**2+p(1,lf)**2)
2113 elseif(inom.eq.17)then
2115 elseif(inom.eq.18)then
2117 elseif(inom.eq.19)then
2118 x=-log(sqrt(p(3,lf)**2+p(2,lf)**2+p(1,lf)**2)/emax(lf))
2119 elseif(inom.eq.20)then !'xf'
2120 m=mod(ifra(lf)/10,10)
2122 c pmax=sqrt((engy/2)**2-prom*2)
2123 pmax=pnullx !???????????????????
2124 if(ifra(lf).eq.12)pmax=pnll
2129 elseif(inom.eq.21)then
2131 c pmax=sqrt((engy/2)**2-prom*2)
2132 pmax=pnullx !???????????????????
2133 if(ifra(lf).eq.12)pmax=pnll
2134 x=-(amproj**2-2.*sqrt(amproj**2+pmax**2)*p(4,lf)
2135 * +2.*abs(pmax*p(3,lf))+p(5,lf)**2)
2136 elseif(inom.eq.22)then
2137 amt=sqrt(p(5,lf)**2+p(1,lf)**2+p(2,lf)**2)
2139 x=-sign(1.,p(3,lf))*alog((p(4,lf)+abs(p(3,lf)))/amt)
2143 elseif(inom.eq.23)then !'eta'
2144 pt=sqrt(p(2,lf)**2+p(1,lf)**2)
2146 if(p(3,lf).ne.0..and.pt.ne.0.)x=sign(1.,p(3,lf))*
2147 * alog((sqrt(p(3,lf)**2+pt**2)+abs(p(3,lf)))/pt)
2148 elseif(inom.eq.24)then !'theta'
2149 pt=sqrt(p(2,lf)**2+p(1,lf)**2)
2151 if(p(3,lf).ne.0.)x=atan(pt/p(3,lf))/pi*180.
2153 elseif(inom.eq.25)then !'pt2'
2154 x=p(2,lf)**2+p(1,lf)**2
2155 elseif(inom.eq.26)then !'et'
2156 pt=sqrt(p(2,lf)**2+p(1,lf)**2)
2159 c if(idptl(j).ge.1000)eef=eef-prom
2160 c if(idptl(j).le.-1000)eef=eef+prom
2161 p2=p(3,lf)**2+p(2,lf)**2+p(1,lf)**2
2162 if(p2.ne.0.)x=eef*pt/sqrt(p2)
2163 elseif(inom.eq.27)then !'idptl'
2165 elseif(inom.eq.28)then !istptl
2167 elseif(inom.eq.29)then !mass
2169 if(istptl(j).le.1)call idmass(idptl(j),x)
2170 elseif(inom.eq.30)then !idaptl
2172 elseif(inom.eq.31)then !egy
2174 elseif(inom.eq.32)then !arapwro
2176 pt2=p(2,lf)**2+p(1,lf)**2
2177 if(p(3,lf).ne.0.)x=sign(1.,p(3,lf))*
2178 * alog((sqrt(p(3,lf)**2+pt2+.13957**2)+abs(p(3,lf)))
2179 * /sqrt(pt2+.13957**2))
2180 elseif(inom.eq.33)then !'mt'
2181 x=sqrt(p(2,lf)**2+p(1,lf)**2+p(5,lf)**2)
2182 elseif(inom.eq.34)then !'pplus'
2183 x=sign(1.,p(3,lf)) * (p(4,lf)+abs(p(3,lf)))
2184 elseif(inom.eq.35)then !'pminus'
2185 x=sign(1.,p(3,lf)) * (p(4,lf)-abs(p(3,lf)))
2186 elseif(inom.eq.36)then !'p5' (mass)
2188 elseif(inom.eq.37)then !pa
2189 x=sqrt(p(1,lf)**2+p(2,lf)**2+p(3,lf)**2)
2190 elseif(inom.eq.38)then !'pa'
2191 if(p(1,lf)**2+p(2,lf)**2+p(3,lf)**2.ne.0)
2192 * x=egyevt**2/sqrt(p(1,lf)**2+p(2,lf)**2+p(3,lf)**2)*p(4,lf)
2193 elseif(inom.eq.39)then !idpom
2195 elseif(inom.eq.40)then !p3a
2197 elseif(inom.eq.41)then
2198 cm2=p(4,lf)**2-p(3,lf)**2-p(2,lf)**2-p(1,lf)**2 !cmass
2199 x=sign(sqrt(abs(cm2)),cm2)
2200 elseif(inom.eq.42)then !arappi
2202 pt2=p(2,lf)**2+p(1,lf)**2
2204 * x=alog((sqrt(p(3,lf)**2+pt2+.13957**2)+abs(p(3,lf)))
2205 * /sqrt(pt2+.13957**2))
2206 elseif(inom.eq.50)then
2208 elseif(inom.eq.51)then
2210 elseif(inom.eq.52)then
2212 if(iorptl(j).ne.0) x=idptl(iorptl(j))
2213 elseif(inom.eq.53)then
2215 elseif(inom.eq.54)then !sloela
2216 call idflav(idptl(j),ifl1,ifl2,ifl3,jspin,indx)
2218 elseif(inom.eq.55)then !p_x
2220 elseif(inom.eq.56)then !p_y
2222 elseif(inom.eq.57)then !p_z
2224 elseif(inom.eq.58)then !'e'
2226 elseif(inom.eq.59)then !E/p_max
2227 c pmax=sqrt((engy/2)**2-prom*2)
2228 pmax=pnullx !???????????????????
2229 if(ifra(lf).eq.12)pmax=pnll
2231 elseif(inom.eq.60)then !e_kin
2233 elseif(inom.eq.61)then !'beta'
2235 elseif(inom.eq.63)then !'mt0'
2236 x=sqrt(p(2,lf)**2+p(1,lf)**2+p(5,lf)**2)-p(5,lf)
2237 elseif(inom.eq.64)then !qsqptl
2239 elseif(inom.eq.65)then !xelab=Elab/Eolab
2240 x=p(4,lf)/(engy**2/2/prom-prom)
2241 if(x.gt.0.9999999) x=.9999999
2242 elseif(inom.eq.66)then !hgtc05 ... charged ptl mult |[c]|<0.5
2244 elseif(inom.eq.67)then !hadtyp ... primary (1) or secondary (2) hadron
2250 elseif(inom.eq.68)then !hgtc1
2252 elseif(inom.eq.69)then !'x4'
2254 elseif(inom.eq.70)then !'npn'
2256 elseif(inom.eq.71)then !'routp'
2259 x=xptl(j)*cc+yptl(j)*dd
2260 elseif(inom.eq.72)then !hgtc3 ... charged ptl mult |eta|<3.15 /6.3
2262 elseif(inom.eq.73)then !mu14 ... charged ptl mult |eta|<1 pt>.4
2264 elseif(inom.eq.74)then !delphi ... azimuthhal correlation
2266 pt=sqrt(p(1,lf)**2+p(2,lf)**2)
2268 if(nint(ypara(1,n)).ne.0.and.j.ne.nint(ypara(1,n)).and.
2270 phi=sign(1.,p(2,lf))*acos(p(1,lf)/pt)
2272 if(x.lt.-2.5*pi)then
2274 elseif(x.lt.-0.5*pi)then
2276 elseif(x.gt.3.5*pi)then
2278 elseif(x.gt.1.5*pi)then
2282 elseif(inom.eq.75)then !'v2'
2287 px=p(1,lf)*aa+p(2,lf)*bb
2288 py=p(1,lf)*cc+p(2,lf)*dd
2289 pt2=p(2,lf)**2+p(1,lf)**2
2291 if(pt2.gt.0.)x=(px**2-py**2)/pt2
2292 elseif(inom.eq.76)then !'pt4'
2293 x=(p(2,lf)**2+p(1,lf)**2)**2
2294 elseif(inom.eq.77)then !'rin'
2298 c--------------------------------- 101 - 200 ----------------------------
2300 elseif(inom.eq.101)then !mulevt
2302 elseif(inom.eq.102)then !'etevt'
2304 if(istptl(j).eq.0)then
2306 if(idptl(j).ge.1000)eef=eef-prom
2307 if(idptl(j).le.-1000)eef=eef+prom
2308 pp=sqrt(p(1,lf)**2+p(2,lf)**2+p(3,lf)**2)
2309 if(pp.ne.0.)x=eef*sqrt(p(1,lf)**2+p(2,lf)**2)/pp
2311 write(ifch,*)x,eef,p(1,lf),p(2,lf),p(3,lf),pp,prom,idptl(j),j
2312 call alist('xan&',1,nptl)
2313 stop 'probleme dans xan'
2316 elseif(inom.eq.103)then
2318 elseif(inom.eq.104)then !'ev6evt'
2320 if(istptl(j).eq.0)then
2321 pt=sqrt(p(2,lf)**2+p(1,lf)**2)
2323 if(p(3,lf).ne.0..and.pt.ne.0.)eta=sign(1.,p(3,lf))*
2324 * alog((sqrt(p(3,lf)**2+pt**2)+abs(p(3,lf)))/pt)
2325 if(pt.eq.0.)eta=sign(1e5,p(3,lf))
2328 if(idptl(j).ge.1000)eef=eef-prom
2329 if(idptl(j).le.-1000)eef=eef+prom
2330 pp=sqrt(p(1,lf)**2+p(2,lf)**2+p(3,lf)**2)
2331 if(pp.ne.0.)x=0.001*eef
2334 elseif(inom.eq.105)then
2335 etot=maproj*emax(lf)+matarg*0.94 !nur richtig fur target frame!!!!!
2337 elseif(inom.eq.106)then
2339 elseif(inom.eq.107)then !'ptevt'
2340 x=sqrt(p(2,lf)**2+p(1,lf)**2)
2341 elseif(inom.eq.108)then !'pmxevt'
2344 c--------------------------------- > 200 ----------------------------
2346 elseif(inom.eq.201)then
2348 elseif(inom.eq.202)then
2350 elseif(inom.eq.203)then
2352 elseif(inom.eq.204)then !'xbjevt'
2354 elseif(inom.eq.205)then !'qsqevt'
2356 elseif(inom.eq.206)then !'yevt'
2357 x=qsqevt/xbjevt/engy**2
2358 elseif(inom.eq.207)then !'eloevt'
2359 x=qsqevt/4./elepti+elepti*(1.-qsqevt/xbjevt/engy**2)
2360 elseif(inom.eq.208)then !nd1evt
2361 x=nsdiff(1,noweak(n))
2362 elseif(inom.eq.209)then !'nd2evt'
2363 x=nsdiff(2,noweak(n))
2364 elseif(inom.eq.284)then !'nd3evt'
2365 x=nsdiff(3,noweak(n))
2366 elseif(inom.eq.285)then !'nd4evt'
2367 x=nsdiff(4,noweak(n))
2368 elseif(inom.eq.287)then !'nd5evt'
2369 x=nsdiff(5,noweak(n))
2370 elseif(inom.eq.210)then !'theevt'
2371 eloevt=qsqevt/4./elepti+elepti*(1.-qsqevt/xbjevt/engy**2)
2372 x=acos(1-qsqevt/2./elepti/eloevt)/pi*180.
2373 elseif(inom.eq.211)then !'nspevt'
2376 if((istptl(i).eq.30.or.istptl(i).eq.31)
2377 & .and.int(idptl(i)/1000000).eq.1)x=x+1
2379 elseif(inom.eq.212)then !'nhpevt'
2382 if((istptl(i).eq.30.or.istptl(i).eq.31)
2383 & .and.int(idptl(i)/1000000).eq.3)x=x+1
2385 elseif(inom.eq.213)then !'sigtot'
2387 elseif(inom.eq.214)then !'sigela'
2389 elseif(inom.eq.215)then !'sloela'
2391 elseif(inom.eq.216)then !'nrgevt'
2394 if(istptl(i).eq.31.and.int(idptl(i)/10000).eq.2)x=x+1
2396 elseif(inom.eq.217)then !qevt
2398 elseif(inom.eq.218)then !qevt
2404 elseif(inom.eq.220)then!------------------------------------------
2405 x=sngl(bofra(1,lf)) !thrust
2406 elseif(inom.eq.221)then
2407 x=1.-sngl(bofra(1,lf)) !1-thrust
2408 elseif(inom.eq.222)then
2409 x=sngl(bofra(2,lf)) !major
2410 elseif(inom.eq.223)then
2411 x=sngl(bofra(3,lf)) !minor
2412 elseif(inom.eq.224)then
2413 x=sngl(bofra(2,lf)-bofra(3,lf)) !oblateness
2414 elseif(inom.eq.230)then!------------------------------------------
2415 x=1.5*(1.-sngl(bofra(1,lf))) !spherecity
2416 elseif(inom.eq.231)then
2417 x=1.5*sngl(bofra(3,lf)) !aplanarity
2418 elseif(inom.eq.232)then
2419 x=3.*sngl(bofra(1,lf)*bofra(2,lf)+bofra(1,lf)*bofra(3,lf)
2420 & +bofra(2,lf)*bofra(3,lf)) !c-parameter
2421 elseif(inom.eq.233)then
2422 x=27.*sngl(bofra(1,lf)*bofra(2,lf)*bofra(3,lf)) !d-parameter
2423 elseif(inom.eq.234)then !npoevt
2426 if(istptl(i).eq.30.or.istptl(i).eq.31)x=x+1
2428 elseif(inom.eq.235)then !npnevt
2431 !....unused 236, 237
2433 elseif(inom.eq.238)then !npxevt ... nr of pomerons, including absorbed
2436 if(istptl(i).eq.30.or.istptl(i).eq.31)x=x+1
2437 if(mod(abs(idptl(i)),100).eq.94)x=x+0.5
2439 elseif(inom.eq.240)then !mu1evt ... charged ptl multipl for central rap
2441 elseif(inom.eq.241)then !muievt ... charged ptl multipl
2443 elseif(inom.eq.242)then !hgtevt ... charged ptl multipl for central eta
2445 elseif(inom.eq.243)then !difevt
2448 if(istptl(i).eq.30.or.istptl(i).eq.31)npom=npom+1
2452 elseif(inom.eq.244)then !dixevt
2455 if(istptl(i).eq.30.or.istptl(i).eq.31)zpom=zpom+1
2456 if(mod(abs(idptl(i)),100).eq.94)zpom=zpom+0.5
2459 if(abs(zpom).lt.0.001)x=1
2460 elseif(inom.eq.250)then
2461 if(iappl.eq.8)then !mass in
2466 elseif(inom.eq.251)then
2467 if(iappl.eq.8)then !mass out
2472 elseif(inom.eq.252)then
2478 elseif(inom.eq.253)then
2484 elseif(inom.eq.254)then
2490 elseif(inom.eq.255)then
2496 if(imofra(1,lf).ne.0)then
2497 call utrota(imofra(1,lf),r1fra(1,lf),r1fra(2,lf),r1fra(3,lf)
2498 $ ,p(1,lf),p(2,lf),p(3,lf))
2500 if(imofra(2,lf).ne.0)then !the x-z exchanged is ok !!
2501 call utrota(imofra(2,lf),r2fra(3,lf),r2fra(2,lf),r2fra(1,lf)
2502 $ ,p(3,lf),p(2,lf),p(1,lf))
2504 if(imofra(3,lf).ne.0)then
2505 call utlob4(imofra(3,lf),bofra(1,lf),bofra(2,lf)
2506 $ ,bofra(3,lf) ,bofra(4,lf),bofra(5,lf)
2507 $ ,p(1,lf),p(2,lf),p(3,lf),p(4,lf))
2513 elseif(inom.eq.256)then !pxfevt: leading proton xf in cms
2515 c pmax=sqrt((engy/2.)**2-prom**2)
2516 pmax=pnullx !???????????????????
2518 if(idptl(i).eq.1120.and.istptl(i).eq.0)then
2519 if(iframe.eq.11)then
2522 amt=sqrt(prom**2+pptl(1,i)**2+pptl(2,i)**2)
2523 rap=alog((pptl(4,i)+pptl(3,i))/amt)
2524 & -alog((sqrt(pnll**2+engy**2)+pnll)/engy)
2530 elseif(inom.eq.257)then ! pi+xf: pi+ yield at cms xf>0.01
2532 c pmax=sqrt((engy/2)**2-prom*2)
2533 pmax=pnullx !???????????????????
2535 if(idptl(i).eq.120.and.istptl(i).eq.0)then
2536 if(iframe.eq.11)then
2539 amt=sqrt(pptl(5,i)**2+pptl(1,i)**2+pptl(2,i)**2)
2540 rap=alog((pptl(4,i)+pptl(3,i))/amt)
2541 & -alog((sqrt(pnll**2+engy**2)+pnll)/engy)
2544 if(pz/pmax.gt.0.01)x=x+1.
2547 elseif(inom.eq.258)then ! pi-xf: pi- yield at cms xf>0.01
2549 c pmax=sqrt((engy/2)**2-prom*2)
2550 pmax=pnullx !???????????????????
2552 if(idptl(i).eq.-120.and.istptl(i).eq.0)then
2553 if(iframe.eq.11)then
2556 amt=sqrt(pptl(5,i)**2+pptl(1,i)**2+pptl(2,i)**2)
2557 rap=alog((pptl(4,i)+pptl(3,i))/amt)
2558 & -alog((sqrt(pnll**2+engy**2)+pnll)/engy)
2561 if(pz/pmax.gt.0.01)x=x+1.
2564 elseif(inom.eq.260)then!------------------------------
2566 elseif(inom.eq.261)then
2568 elseif(inom.eq.262)then
2570 elseif(inom.eq.263)then
2572 elseif(inom.eq.265)then
2574 elseif(inom.eq.266)then
2576 elseif(inom.eq.267)then
2578 elseif(inom.eq.268)then ! kppevt : collision number per participant
2579 x=kolevt/float(npjevt+ntgevt)
2580 elseif(inom.eq.269)then ! npievt : pion + multi per event
2583 if(idptl(i).eq.120)x=x+1
2585 elseif(inom.eq.270)then ! np2evt : pion + multi per event
2588 if(idptl(i).eq.120)x=x+1
2590 x=x/float(npjevt+ntgevt)
2591 elseif(inom.eq.271)then
2593 elseif(inom.eq.272)then !number of inelastic collisions per event
2595 elseif(inom.eq.273)then ! inelasticity (energy loss of leading particle)
2597 do i=maproj+matarg+1,nptl
2598 if(istptl(i).eq.0)then
2599 if((((abs(idptl(i)).gt.1000.and.abs(idptl(i)).lt.10000)
2600 * .and.idproj.gt.1000).or.(iabs(idptl(i)).gt.100
2601 * .and.idproj.lt.1000)).and.pptl(4,i)
2602 * .gt.x.and.pptl(3,i).gt.0.)x=pptl(4,i)
2606 if(Eini.gt.0.)x=(Eini-x)/Eini
2607 elseif(inom.eq.274)then ! elasticity (energy of leading particle)
2609 do i=maproj+matarg+1,nptl
2610 if(istptl(i).eq.0)then
2611 if((((abs(idptl(i)).gt.1000.and.abs(idptl(i)).lt.10000)
2612 * .and.idproj.gt.1000).or.(iabs(idptl(i)).gt.100
2613 * .and.idproj.lt.1000)).and.pptl(4,i)
2614 * .gt.x.and.pptl(3,i).gt.0.)x=pptl(4,i)
2618 if(Eini.gt.0.)x=x/Eini
2619 elseif(inom.eq.275)then !'itgevt'
2621 if(nint(ypara(1,n)).ne.0)x=1
2622 elseif(inom.eq.276)then !'hrdevt' ...... 1 = hard event
2624 if(nint(ypara(1,n)).ne.0)x=1
2625 elseif(inom.eq.277)then !'ej1evt' .... et of jet 1
2627 if(nint(ypara(1,n)).ne.0)
2629 elseif(inom.eq.278)then !'pj1evt' .... phi of jet 1
2631 if(nint(ypara(1,n)).ne.0)
2633 elseif(inom.eq.279)then !'ej2evt' .... et of jet 2
2635 if(nint(ypara(6,n)).ne.0)
2637 elseif(inom.eq.280)then !'pj2evt' .... delta_phi of jet 2 1
2639 if(nint(ypara(6,n)).ne.0)then
2640 x=ypara(9,n)-ypara(4,n)
2641 if(x.lt.-2.5*pi)then
2643 elseif(x.lt.-0.5*pi)then
2645 elseif(x.gt.3.5*pi)then
2647 elseif(x.gt.1.5*pi)then
2651 elseif(inom.eq.281)then !'zppevt'
2653 elseif(inom.eq.282)then !'zptevt'
2655 elseif(inom.eq.283)then
2656 stop '**********not used*********'
2657 elseif(inom.eq.286)then !'mubevt'
2659 elseif(inom.eq.298)then
2661 elseif(inom.eq.299)then
2663 elseif(inom.eq.301)then !---------------------------------------------
2664 if(j.eq.0)then !initialize
2668 elseif(j.gt.nptl)then !final calculation
2669 am2=aimuni(4,n)**2-aimuni(3,n)**2
2670 $ -aimuni(2,n)**2-aimuni(1,n)**2
2671 x=sign(sqrt(abs(am2)),am2)
2675 aimuni(l,n)=aimuni(l,n)+p(l,lf)
2677 c print *, j,(p(l,lf),l=1,5)
2679 elseif(inom.ge.302.and.inom.le.305)then !-----------------------
2680 if(j.eq.0)then !initialize
2684 elseif(j.gt.nptl)then !final calculation
2685 if(inom.eq.302) x=max(aimuni(1,n)/2/(aimuni(2,n)+aimuni(4,n))
2686 $ ,aimuni(3,n)/2/(aimuni(2,n)+aimuni(4,n)))
2687 if(inom.eq.303) x=min(aimuni(1,n)/2/(aimuni(2,n)+aimuni(4,n))
2688 $ ,aimuni(3,n)/2/(aimuni(2,n)+aimuni(4,n)))
2689 if(inom.eq.304) x=abs(aimuni(1,n)/2/(aimuni(2,n)+aimuni(4,n))
2690 $ -aimuni(3,n)/2/(aimuni(2,n)+aimuni(4,n)))
2691 if(inom.eq.305) x=aimuni(1,n)/2/(aimuni(2,n)+aimuni(4,n))
2692 $ +aimuni(3,n)/2/(aimuni(2,n)+aimuni(4,n))
2695 if(p(3,lf).lt.0.)l=2
2696 aimuni(1+l,n)=aimuni(1+l,n)+sqrt(p(1,lf)**2+p(2,lf)**2)
2697 aimuni(2+l,n)=aimuni(2+l,n)
2698 $ +sqrt(p(1,lf)**2+p(2,lf)**2+p(3,lf)**2)
2701 elseif(inom.eq.306.or.inom.eq.307.or.inom.eq.308)then !---------
2702 if(j.eq.0)then !initialize
2706 elseif(j.gt.nptl)then !final calculation
2707 am2a=aimuni(4,n)**2-aimuni(3,n)**2
2708 $ -aimuni(2,n)**2-aimuni(1,n)**2
2709 am2b=aimuni(8,n)**2-aimuni(7,n)**2
2710 $ -aimuni(6,n)**2-aimuni(5,n)**2
2711 if(inom.eq.306)x=(max(0.,am2a,am2b))/engy**2
2712 if(inom.eq.307)x=(max(0.,min(am2a,am2b)))/engy**2
2713 if(inom.eq.308)x=(abs(am2a-am2b))/engy**2
2716 if(p(3,lf).lt.0.)ll=4
2718 aimuni(l+ll,n)=aimuni(l+ll,n)+p(l,lf)
2721 elseif (inom.eq.310.or.inom.eq.311) then !---------
2722 if(j.eq.0)then !initialize
2727 if(istptl(i).eq.0) then
2728 if (idptl(i).eq.idcod(1,n)) aimuni(1,n)=aimuni(1,n)+1.
2729 if (idptl(i).eq.idcod(2,n)) aimuni(2,n)=aimuni(2,n)+1.
2732 elseif(j.gt.nptl)then !final calculation
2733 if(aimuni(1,n).eq.0.or.aimuni(2,n).eq.0) then
2738 zcbin(i,nac(n),n)=abs(zcbin(i,nac(n),n))
2742 $ .and. aimuni(1,n).ne.0. .and. aimuni(2,n).ne.0. ) then
2744 if(id1.eq.idcod(1,n) .or. id1.eq.idcod(2,n)) then
2745 y1=sign(1.,pptl(3,j))*alog((pptl(4,j)+abs(pptl(3,j)))
2746 * /sqrt(pptl(5,j)**2+pptl(1,j)**2+pptl(2,j)**2))
2748 if(i.eq.j .or. istptl(i).ne.0) goto 124
2750 if(id2.eq.idcod(1,n) .or. id2.eq.idcod(2,n)) then
2751 y2=sign(1.,pptl(3,i))*alog((pptl(4,i)+abs(pptl(3,i)))
2752 * /sqrt(pptl(5,i)**2+pptl(1,i)**2+pptl(2,i)**2))
2754 if(inom.eq.311) dy=abs(dy)
2755 ib=1+int((dy-xmin(n))*xinc(n))
2756 if(dy.ge.xmin(n).and.dy.le.xmax(n)) then
2757 if( id1.eq.idcod(1,n) ) then
2758 if( id2.eq.idcod(2,n) ) then
2759 bin(ib,nac(n),n)=bin(ib,nac(n),n)+.5/aimuni(2,n)
2760 zcbin(ib,nac(n),n)=zcbin(ib,nac(n),n)+1
2762 bin(ib,nac(n),n)=bin(ib,nac(n),n)-.5/aimuni(1,n)
2763 zcbin(ib,nac(n),n)=zcbin(ib,nac(n),n)-1
2765 else !id1 is idcod(2,n)
2766 if(id2.eq.idcod(1,n)) then
2767 bin(ib,nac(n),n)=bin(ib,nac(n),n)+.5/aimuni(1,n)
2768 zcbin(ib,nac(n),n)=zcbin(ib,nac(n),n)+1
2770 bin(ib,nac(n),n)=bin(ib,nac(n),n)-.5/aimuni(2,n)
2771 zcbin(ib,nac(n),n)=zcbin(ib,nac(n),n)-1
2780 elseif (inom.eq.312) then !---------
2782 elseif (inom.eq.313) then !---------
2784 elseif (inom.eq.314) then !---------
2785 x=alpD(idxD0,iclpro,icltar)
2786 elseif (inom.eq.315) then !---------
2787 x=alpD(1,iclpro,icltar)
2788 elseif (inom.eq.316) then !---------
2789 x=betD(idxD0,iclpro,icltar)
2791 elseif (inom.eq.317) then !---------
2792 x=betD(1,iclpro,icltar)
2793 elseif (inom.eq.318) then !---------
2795 elseif (inom.eq.319) then !---------
2797 elseif(inom.eq.320)then !m14evt ... multipl |eta|<1, pt>0.4
2799 elseif(inom.eq.321)then !ht3evt ... height |eta|<3.15
2801 elseif (inom.eq.322) then !---------
2803 elseif (inom.eq.323) then !---------
2805 elseif (inom.eq.324) then !---------
2807 elseif (inom.eq.501) then !---------
2809 elseif (inom.eq.502) then !---------
2811 elseif (inom.eq.503) then !---------
2813 elseif (inom.eq.504) then !---------
2815 endif !---------------------------------------
2818 c----------------------------------------------------------------------
2819 subroutine StandardVariables
2820 c----------------------------------------------------------------------
2822 common/stavar/multc05,multy1,multc14,multyi,multc3,imulty1,multeb
2825 parameter(mxxhis=50)
2826 common/varhis/icorrtrig(0:mxxhis),ihardevent(0:mxxhis)
2827 &,ijetfind1(0:mxxhis),ijetfind2(0:mxxhis)
2839 do i=maproj+matarg+1,nptl
2840 c---multy1---charged ptl multipl for central rap
2841 if(istptl(i).eq.0)then
2842 amt=pptl(5,i)**2+pptl(1,i)**2+pptl(2,i)**2
2843 pt=pptl(1,i)**2+pptl(2,i)**2
2844 pp=sqrt(pptl(1,i)**2+pptl(2,i)**2+pptl(3,i)**2)
2845 if(amt.gt.0..and.pptl(4,i).gt.0.)then
2847 rap=sign(1.,pptl(3,i))*alog((pptl(4,i)+abs(pptl(3,i)))/amt)
2853 eta=sign(1.,pptl(3,i))*alog((pp+abs(pptl(3,i)))/pt)
2857 if(abs(idptl(i)).ge.100
2858 $ .and.abs(idptl(i)).lt.10000)then
2859 call idchrg(idptl(i),ch)
2860 if(abs(ch).gt.0.1)then
2861 c---multyi---charged ptl multipl
2863 c---multy1---charged ptl multipl for central rap
2864 if(abs(rap).le.1.)multy1=multy1+1
2865 if(abs(eta).le.0.5)multc05=multc05+1
2866 if(abs(eta).le.1.and.pt.gt.0.4)multc14=multc14+1
2867 if(abs(eta).le.1)multc1=multc1+1
2868 if(abs(rap).le.3.15)multc3=multc3+1
2869 c---multeb---charged ptl multipl for back rap
2870 if(eta.gt.-3.8.and.eta.lt.-2.8)multeb=multeb+1
2873 if((((abs(idptl(i)).gt.1000.and.abs(idptl(i)).lt.10000)
2874 * .and.idproj.gt.1000).or.(iabs(idptl(i)).gt.100
2875 * .and.idproj.lt.1000)).and.pptl(4,i)
2876 * .gt.Emax.and.pptl(3,i).gt.0.)then
2884 c----------------------------------------------------------------------
2885 subroutine jetfind(m,n)
2886 c----------------------------------------------------------------------
2887 c m = 1 ou 2 (two different definitions)
2889 c input(jet definition):
2890 c xpara(1,n) ... 1=used (m=1)
2891 c xpara(2,n) ... etamin (m=1)
2892 c xpara(3,n) ... etamax (m=1)
2893 c xpara(4,n) ... rmax (m=1) (rmax defining the cone)
2894 c xpara(5,n) ... ichd (m=1) (1=charged, 0=all)
2895 c xpara(6,n) ... 1=used (m=2)
2896 c xpara(7,n) ... etamin (m=2)
2897 c xpara(8,n) ... etamax (m=2)
2898 c xpara(9,n) ... rmax (m=2)
2899 c xpara(10,n) .. ichd (m=2)
2900 c output (jet properties):
2901 c ypara(1,n) ... 1 (found) or 0 if not (m=1)
2902 c ypara(2,n) ... et (m=1)
2903 c ypara(3,n) ... eta of center (m=1)
2904 c ypara(4,n) ... phi of center (m=1)
2906 c ypara(6,n) ... 1 (found) or 0 if not (m=2)
2907 c ypara(7,n) ... et (m=2)
2908 c ypara(8,n) ... eta of center (m=2)
2909 c ypara(9,n) ... phi of center (m=2)
2911 c----------------------------------------------------------------------
2914 parameter (mxhis=500,mxcontr=300,mxidcd=60,mxtri=20,mxbin=400)
2915 parameter (mypara=10,mxpara=10)
2917 real ptx(mxval),lst(mxval),etax(mxval),phix(mxval)
2918 logical ilog,icnx,itrevt,idmod
2919 double precision bin,bbin,zcbin,zbbin
2920 common/bins/bin(mxbin,2,mxhis),zcbin(mxbin,2,mxhis)
2921 $ ,bbin(mxbin,2,mxcontr),itrevt(mxhis),zbbin(mxbin,2,mxcontr)
2922 $ ,nac(mxhis),ilog(mxhis),icnx(mxhis),xinc(mxhis),ncevt(mxhis)
2923 $ ,sval(2,mxhis),valtri(mxtri,mxhis),ntrc(mxtri,mxhis)
2924 $ ,xmin(mxhis),xmax(mxhis),nhis,noweak(mxhis)
2925 $ ,ivar(2,mxhis),inorm(mxhis),nbin(mxhis),nidcod(mxhis)
2926 $ ,idcod(mxidcd,mxhis),idmod(mxidcd,mxhis),ntri(mxhis)
2927 $ ,itri(mxtri,mxhis),xmitri(mxtri,mxhis),xmatri(mxtri,mxhis)
2928 $ ,xmitrp(mxtri,mxhis),xmatrp(mxtri,mxhis),xpara(mxpara,mxhis)
2929 $ ,ypara(mypara,mxhis),lookcontr(mxhis)
2930 $ ,lookcontrx(mxhis),ncontrall,icontrtyp(mxhis),nccevt(mxcontr)
2932 if(m.ne.1.and.m.ne.2)stop'jetfind: value of m not valid. '
2934 etamin= xpara(2+5*(m-1),n)
2935 etamax= xpara(3+5*(m-1),n)
2936 rmax = xpara(4+5*(m-1),n)
2937 ichd = nint(xpara(5+5*(m-1),n))
2951 do i=maproj+matarg+1,nptl
2953 if(istptl(i).eq.0.and.abs(idptl(i)).lt.10000)iok=1
2954 if(iok.eq.1)call idchrg(idptl(i),ch)
2955 if(ichd.eq.1.and.nint(ch).eq.0)iok=0
2960 pt=sqrt(p1**2+p2**2)
2962 eta=sign(1.,p3)*alog((sqrt(p3**2+pt**2)+abs(p3))/pt)
2963 phi=sign(1.,p2)*acos(p1/pt)
2972 if(dphi.lt.-pi)dphi=dphi+2*pi
2973 if(dphi.gt. pi)dphi=dphi-2*pi
2974 if(abs(dphi).lt.pi/2)iok=0
2976 if(iok.eq.1.and.pt.gt.ptx(k)
2977 & .and.eta.le.etamax.and.eta.ge.etamin)then
3005 do j=maproj+matarg+1,nptl
3007 if(istptl(j).eq.0.and.abs(idptl(j)).lt.10000)iok=1
3008 if(iok.eq.1)call idchrg(idptl(j),ch)
3009 if(ichd.eq.1.and.nint(ch).eq.0)iok=0
3014 pt=sqrt(p1**2+p2**2)
3017 eta=sign(1.,p3)*alog((sqrt(p3**2+pt**2)+abs(p3))/pt)
3018 phi=sign(1.,p2)*acos(p1/pt)
3023 if(eta.le.etamax.and.eta.ge.etamin)then
3026 if(dphi.lt.-pi)dphi=dphi+2*pi
3027 if(dphi.gt. pi)dphi=dphi-2*pi
3028 if(deta**2+dphi**2.lt.rmax**2)et=et+sqrt(pt**2+am**2)
3040 ypara(1+5*(m-1),n)=ifound
3041 ypara(2+5*(m-1),n)=etx
3043 ypara(3+5*(m-1),n)=etax(kk)
3044 ypara(4+5*(m-1),n)=phix(kk)
3050 c----------------------------------------------------------------------
3051 subroutine hardevent(n)
3052 c----------------------------------------------------------------------
3054 c input(jet event conditions):
3055 c xpara(2,n) ... pt1
3056 c xpara(3,n) ... pt2
3057 c xpara(4,n) ... absetamax
3058 c xpara(5,n) ... rmax (r=sqrt(deltaeta**2+deltaphi**2))
3059 c xpara(6,n) ... Et_min
3060 c output (jet event found or not):
3061 c ypara(1,n) ... 1 (found) or 0 if not
3062 c----------------------------------------------------------------------
3065 parameter (mxhis=500,mxcontr=300,mxidcd=60,mxtri=20,mxbin=400)
3066 parameter (mypara=10,mxpara=10)
3067 logical ilog,icnx,itrevt,idmod
3068 double precision bin,bbin,zcbin,zbbin
3069 common/bins/bin(mxbin,2,mxhis),zcbin(mxbin,2,mxhis)
3070 $ ,bbin(mxbin,2,mxcontr),itrevt(mxhis),zbbin(mxbin,2,mxcontr)
3071 $ ,nac(mxhis),ilog(mxhis),icnx(mxhis),xinc(mxhis),ncevt(mxhis)
3072 $ ,sval(2,mxhis),valtri(mxtri,mxhis),ntrc(mxtri,mxhis)
3073 $ ,xmin(mxhis),xmax(mxhis),nhis,noweak(mxhis)
3074 $ ,ivar(2,mxhis),inorm(mxhis),nbin(mxhis),nidcod(mxhis)
3075 $ ,idcod(mxidcd,mxhis),idmod(mxidcd,mxhis),ntri(mxhis)
3076 $ ,itri(mxtri,mxhis),xmitri(mxtri,mxhis),xmatri(mxtri,mxhis)
3077 $ ,xmitrp(mxtri,mxhis),xmatrp(mxtri,mxhis),xpara(mxpara,mxhis)
3078 $ ,ypara(mypara,mxhis),lookcontr(mxhis)
3079 $ ,lookcontrx(mxhis),ncontrall,icontrtyp(mxhis),nccevt(mxcontr)
3082 do i=maproj+matarg+1,nptl
3083 if(abs(idptl(i)).ge.100.and.abs(idptl(i)).lt.10000.
3084 $ and.istptl(i).eq.0)then
3085 call idchrg(idptl(i),ch)
3086 if(abs(ch).gt.0.1)then
3090 pt=sqrt(p1**2+p2**2)
3092 eta=sign(1.,p3)*alog((sqrt(p3**2+pt**2)+abs(p3))/pt)
3093 phi=sign(1.,p2)*acos(p1/pt)
3098 if(pt.ge.xpara(2,n).and.abs(eta).lt.xpara(4,n))then
3099 et1=pptl(4,i)*pt/sqrt(p3**2+pt**2)
3100 do j=maproj+matarg+1,nptl
3102 $ .and.abs(idptl(j)).ge.100.and.abs(idptl(j)).lt.10000.
3103 $ .and.istptl(j).eq.0)then
3104 call idchrg(idptl(j),ch)
3105 if(abs(ch).gt.0.1.and.abs(idptl(j)).ge.100
3106 $ .and.abs(idptl(j)).lt.10000.and.istptl(j).eq.0)then
3110 pt=sqrt(p1**2+p2**2)
3112 etax=sign(1.,p3)*alog((sqrt(p3**2+pt**2)+abs(p3))/pt)
3113 phix=sign(1.,p2)*acos(p1/pt)
3118 if(pt.ge.xpara(3,n).and.abs(etax).lt.xpara(4,n))then
3121 if(dphi.lt.-pi)dphi=dphi+2*pi
3122 if(dphi.gt. pi)dphi=dphi-2*pi
3123 if(deta**2+dphi**2.lt.xpara(5,n)**2)then
3124 et2=pptl(4,j)*pt/sqrt(p3**2+pt**2)
3125 if(et1+et2.gt.xpara(6,n))then
3143 c----------------------------------------------------------------------
3144 subroutine corrtrig(n)
3145 c----------------------------------------------------------------------
3147 c input(trigger conditions):
3148 c xpara(2,n) ... ptmin
3149 c xpara(3,n) ... ptmax
3150 c xpara(4,n) ... etamin
3151 c xpara(5,n) ... etamax
3154 c output (triggered particle (the one with highest pt if there are several)):
3155 c ypara(1,n) ... iptl or 0 if no particle found
3156 c ypara(2,n) ... phi of particle
3157 c----------------------------------------------------------------------
3160 parameter (mxhis=500,mxcontr=300,mxidcd=60,mxtri=20,mxbin=400)
3161 parameter (mypara=10,mxpara=10)
3162 logical ilog,icnx,itrevt,idmod
3163 double precision bin,bbin,zcbin,zbbin
3164 common/bins/bin(mxbin,2,mxhis),zcbin(mxbin,2,mxhis)
3165 $ ,bbin(mxbin,2,mxcontr),itrevt(mxhis),zbbin(mxbin,2,mxcontr)
3166 $ ,nac(mxhis),ilog(mxhis),icnx(mxhis),xinc(mxhis),ncevt(mxhis)
3167 $ ,sval(2,mxhis),valtri(mxtri,mxhis),ntrc(mxtri,mxhis)
3168 $ ,xmin(mxhis),xmax(mxhis),nhis,noweak(mxhis)
3169 $ ,ivar(2,mxhis),inorm(mxhis),nbin(mxhis),nidcod(mxhis)
3170 $ ,idcod(mxidcd,mxhis),idmod(mxidcd,mxhis),ntri(mxhis)
3171 $ ,itri(mxtri,mxhis),xmitri(mxtri,mxhis),xmatri(mxtri,mxhis)
3172 $ ,xmitrp(mxtri,mxhis),xmatrp(mxtri,mxhis),xpara(mxpara,mxhis)
3173 $ ,ypara(mypara,mxhis),lookcontr(mxhis)
3174 $ ,lookcontrx(mxhis),ncontrall,icontrtyp(mxhis),nccevt(mxcontr)
3178 do i=maproj+matarg+1,nptl
3179 if(abs(idptl(i)).ge.100.and.abs(idptl(i)).lt.10000.
3180 $ and.istptl(i).eq.0)then
3181 call idchrg(idptl(i),ch)
3182 if(abs(ch).gt.0.1)then
3186 pt=sqrt(p1**2+p2**2)
3188 eta=sign(1.,p3)*alog((sqrt(p3**2+pt**2)+abs(p3))/pt)
3189 phi=sign(1.,p2)*acos(p1/pt)
3190 if(pt.ge.pt0.and.pt.le.xpara(3,n).and.eta.gt.xpara(4,n)
3191 $ .and.eta.lt.xpara(5,n))then
3203 c----------------------------------------------------------------------