All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups
pxolap.f
Go to the documentation of this file.
1 CDECK ID>, PXOLAP.
2 ******............................................................******
3  SUBROUTINE pxolap(NJET,NTRAK,JETLIS,PJ,PP)
4 ******............................................................******
5 *
6 *** Looks for particles assigned to more than 1 jet, and reassigns them
7 *** If more than a fraction OVLIM of a jet's energy is contained in
8 *** higher energy jets, that jet is neglected.
9 *** Particles assigned to the jet closest in angle (a la CDF, Snowmass).
10 *.
11 *. Modification Log.
12 *. 22-Apr-97: D. Chrisman - Dimension IJET with MXPROT instead of 30.
13 *.
14  IMPLICIT NONE
15  INTEGER mxtrak, mxprot
16  parameter(mxtrak=200,mxprot=100)
17  INTEGER njet, ntrak
18  LOGICAL jetlis(mxprot,mxtrak)
19  REAL pj(4,mxprot),pp(4,mxtrak)
20  INTEGER i,j,n,mu
21  LOGICAL ovelap
22  REAL eover
23  REAL ovlim
24  INTEGER iterr, ijmin, ijet(mxprot), nj
25  REAL vec1(3), vec2(3), cost, thet, thmin
26  parameter(ovlim = 0.75)
27 *
28  IF (njet.LE.1) RETURN
29 *** Look for jets with large overlaps with higher energy jets.
30  DO 100 i = 2,njet
31 *** Find overlap energy between jets I and all higher energy jets.
32  eover = 0.0
33  DO 110 n = 1,ntrak
34  ovelap = .false.
35  DO 120 j= 1,i-1
36  IF (jetlis(i,n).AND.jetlis(j,n)) THEN
37  ovelap = .true.
38  ENDIF
39 120 CONTINUE
40  IF (ovelap) THEN
41  eover = eover + pp(4,n)
42  ENDIF
43 110 CONTINUE
44 *** Is the fraction of energy shared larger than OVLIM?
45  IF (eover.GT.ovlim*pj(4,i)) THEN
46 *** De-assign all particles from Jet I
47  DO 130 n = 1,ntrak
48  jetlis(i,n) = .false.
49 130 CONTINUE
50  ENDIF
51 100 CONTINUE
52 *** Now there are no big overlaps, assign every particle in
53 *** more than 1 jet to the closet jet.
54 *** Any particles now in more than 1 jet are assigned to the CLOSET
55 *** jet (in angle).
56  DO 140 i=1,ntrak
57  nj=0
58  DO 150 j=1, njet
59  IF(jetlis(j,i)) THEN
60  nj=nj+1
61  ijet(nj)=j
62  ENDIF
63 150 CONTINUE
64  IF (nj .GT. 1) THEN
65 *** Particle in > 1 jet - calc angles...
66  vec1(1)=pp(1,i)
67  vec1(2)=pp(2,i)
68  vec1(3)=pp(3,i)
69  thmin=0.
70  DO 160 j=1,nj
71  vec2(1)=pj(1,ijet(j))
72  vec2(2)=pj(2,ijet(j))
73  vec2(3)=pj(3,ijet(j))
74  CALL pxang3(vec1,vec2,cost,thet,iterr)
75  IF (j .EQ. 1) THEN
76  thmin=thet
77  ijmin=ijet(j)
78  ELSEIF (thet .LT. thmin) THEN
79  thmin=thet
80  ijmin=ijet(j)
81  ENDIF
82 160 CONTINUE
83 *** Assign track to IJMIN
84  DO 170 j=1,njet
85  jetlis(j,i) = .false.
86 170 CONTINUE
87  jetlis(ijmin,i)=.true.
88  ENDIF
89 140 CONTINUE
90 *** Recompute PJ
91  DO 200 i = 1,njet
92  DO 210 mu = 1,4
93  pj(mu,i) = 0.0
94 210 CONTINUE
95  DO 220 n = 1,ntrak
96  IF( jetlis(i,n) ) THEN
97  DO 230 mu = 1,4
98  pj(mu,i) = pj(mu,i) + pp(mu,n)
99 230 CONTINUE
100  ENDIF
101 220 CONTINUE
102 200 CONTINUE
103  RETURN
104  END
subroutine pxolap(NJET, NTRAK, JETLIS, PJ, PP)
Definition: pxolap.f:3
subroutine pxang3(VEC1, VEC2, COST, THET, IERR)
Definition: pxang3.f:2