| 1 | c ------------------------------------------------------------------------------------------
|
|---|
| 2 | c PGS.INC - include file for PGS package
|
|---|
| 3 | c
|
|---|
| 4 | c Version 3.3
|
|---|
| 5 | c ------------------------------------------------------------------------------------------
|
|---|
| 6 | c
|
|---|
| 7 | c This include file is to be used with the PGS package. See
|
|---|
| 8 | c http://www.physics.rutgers.edu/~jconway/soft/pgs/pgs.html
|
|---|
| 9 | c for documentation and details.
|
|---|
| 10 | c
|
|---|
| 11 | c ------------------------------------------------------------------------------------------
|
|---|
| 12 |
|
|---|
| 13 |
|
|---|
| 14 | c STDHEP common blocks (see L. Garren, STDHEP 4.10, PM0091) -------------------------------
|
|---|
| 15 |
|
|---|
| 16 | c generated particle list
|
|---|
| 17 |
|
|---|
| 18 | integer nmxhep
|
|---|
| 19 | parameter (nmxhep=4000)
|
|---|
| 20 |
|
|---|
| 21 | integer nevhep,nhep,isthep,idhep,jmohep,jdahep
|
|---|
| 22 |
|
|---|
| 23 | double precision phep,vhep
|
|---|
| 24 |
|
|---|
| 25 | common /hepevt/ nevhep, ! event number
|
|---|
| 26 | . nhep, ! number of entries in record
|
|---|
| 27 | . isthep(nmxhep), ! status code
|
|---|
| 28 | . idhep(nmxhep), ! particle ID (PDG standard)
|
|---|
| 29 | . jmohep(2,nmxhep), ! index to first and second particle mothers
|
|---|
| 30 | . jdahep(2,nmxhep), ! index to first and last daughter particles
|
|---|
| 31 | . phep(5,nmxhep), ! 4-vector and mass
|
|---|
| 32 | . vhep(4,nmxhep) ! (x,y,z) of production, and production time (mm/c)
|
|---|
| 33 |
|
|---|
| 34 | integer numhep ! for symmetry
|
|---|
| 35 | equivalence(numhep,nhep) ! with other lists
|
|---|
| 36 |
|
|---|
| 37 | integer numgen ! for symmetry
|
|---|
| 38 | equivalence(numgen,nhep) ! with other lists
|
|---|
| 39 |
|
|---|
| 40 | c table of particle properties
|
|---|
| 41 |
|
|---|
| 42 | integer nmxln
|
|---|
| 43 |
|
|---|
| 44 | parameter (nmxln=2000)
|
|---|
| 45 |
|
|---|
| 46 | integer idt
|
|---|
| 47 | real*4 stmerr,stwerr
|
|---|
| 48 |
|
|---|
| 49 | real*8 stmass,stwidth
|
|---|
| 50 |
|
|---|
| 51 | character*21 stname
|
|---|
| 52 |
|
|---|
| 53 | common /stdtbl/ idt(nmxln), ! particle ID (PDG standard)
|
|---|
| 54 | . stmerr(2,nmxln), ! positive (1) and negative (2) error on mass
|
|---|
| 55 | . stwerr(2,nmxln), ! positive (1) and negative (2) error on width
|
|---|
| 56 | . stmass(nmxln), ! particle mass (GeV/c^2 for this, and rest)
|
|---|
| 57 | . stwidth(nmxln), ! particle width
|
|---|
| 58 | . stname(nmxln) ! particle name
|
|---|
| 59 |
|
|---|
| 60 |
|
|---|
| 61 | c STDHEP logical unit numbers and I/O information
|
|---|
| 62 |
|
|---|
| 63 | integer lnhwrt,lnhrd,lnhout,lnhdcy,lnhrdm
|
|---|
| 64 |
|
|---|
| 65 | common /heplun/ lnhwrt, ! logical unit number for writing
|
|---|
| 66 | . lnhrd, ! logical unit number for reading
|
|---|
| 67 | . lnhout, ! logical unit number for output
|
|---|
| 68 | . lnhdcy, ! logical unit number for decay table (NYI)
|
|---|
| 69 | . lnhrdm(15) ! logical unit number for reading multiple streams
|
|---|
| 70 |
|
|---|
| 71 | real stdecom,stdxsec
|
|---|
| 72 | double precision stdseed1,stdseed2
|
|---|
| 73 | integer nevtreq,nevtgen,nevtwrt
|
|---|
| 74 |
|
|---|
| 75 | common /stdcm1/ stdecom, ! center of mass energy
|
|---|
| 76 | . stdxsec, ! cross section
|
|---|
| 77 | . stdseed1, ! random number seed 1
|
|---|
| 78 | . stdseed2, ! random number seed 2
|
|---|
| 79 | . nevtreq, ! events to generate
|
|---|
| 80 | . nevtgen, ! actually generated
|
|---|
| 81 | . nevtwrt ! written to output file
|
|---|
| 82 | save /stdcm1/
|
|---|
| 83 |
|
|---|
| 84 |
|
|---|
| 85 | c ---------------------------------------------------------------------------------------------
|
|---|
| 86 |
|
|---|
| 87 | c PGS functions for ET, pt, etc. of generated, reconstructed, clusters and tracks
|
|---|
| 88 |
|
|---|
| 89 | real*8 et_gen,pt_gen,p_gen,eta_gen,phi_gen
|
|---|
| 90 | real*8 et_obj,pt_obj,p_obj,eta_obj,phi_obj
|
|---|
| 91 | real*8 et_clu,pt_clu,p_clu,eta_clu,phi_clu
|
|---|
| 92 | real*8 et_trk,pt_trk,p_trk,eta_trk,phi_trk
|
|---|
| 93 |
|
|---|
| 94 | real*8 cos_theta,cos_del_phi,del_phi,pgs_cluster_width
|
|---|
| 95 |
|
|---|
| 96 | real*8 v4mass,v4mass2,v4et,v4p,v4pt,v4eta,v4phi
|
|---|
| 97 |
|
|---|
| 98 | logical pgs_cal_fid_cut
|
|---|
| 99 |
|
|---|
| 100 | c PGS detector parameters
|
|---|
| 101 |
|
|---|
| 102 | integer netacal,nphical
|
|---|
| 103 |
|
|---|
| 104 | real*8 deta,dphi,crack_frac,rmax,bfield,sagitta_res
|
|---|
| 105 | real*8 ecal_res,hcal_res,met_res
|
|---|
| 106 | real*8 seed_thresh,shoulder_thresh,conesize
|
|---|
| 107 | real*8 eff_track,eta_max_track,min_track_pt
|
|---|
| 108 |
|
|---|
| 109 |
|
|---|
| 110 | common /pgspar/ netacal, ! number of eta cells in calorimeter
|
|---|
| 111 | . nphical, ! number of phi cells in calorimeter
|
|---|
| 112 | . deta, ! eta width of calorimeter cells
|
|---|
| 113 | . dphi, ! phi width of calorimeter cells (2*pi/nphical)
|
|---|
| 114 | . ecal_res, ! electromagnetic calorimeter resolution * sqrt(E)
|
|---|
| 115 | . hcal_res, ! hadronic calorimeter resolution * sqrt(E)
|
|---|
| 116 | . met_res, ! MET resolution
|
|---|
| 117 | . crack_frac, ! calorimeter cell edge "crack" fraction
|
|---|
| 118 | . seed_thresh, ! calorimeter cluster seed tower threshold
|
|---|
| 119 | . shoulder_thresh, ! calorimeter shoulder tower threshold
|
|---|
| 120 | . conesize, ! cluster finder cone size
|
|---|
| 121 | . rmax, ! outer radius of tracking (m)
|
|---|
| 122 | . bfield, ! magnetic field (T)
|
|---|
| 123 | . sagitta_res, ! sagitta resolution (m)
|
|---|
| 124 | . eff_track, ! track finding efficiency
|
|---|
| 125 | . min_track_pt, ! minimum track pt (GeV/c)
|
|---|
| 126 | . eta_max_track ! maximum tracking coverage in eta
|
|---|
| 127 |
|
|---|
| 128 | c PGS event header and control information
|
|---|
| 129 |
|
|---|
| 130 | integer nevpgs,nprpgs
|
|---|
| 131 |
|
|---|
| 132 | character*6 optpgs
|
|---|
| 133 | character*80 pgs_input_file,pgs_output_file,pgs_param_file
|
|---|
| 134 | character*80 pgs_isajet_decay,pgs_isajet_cards,pgs_pythia_cards
|
|---|
| 135 |
|
|---|
| 136 | common /pgsevt/ nevpgs, ! number of events to generate/read
|
|---|
| 137 | . nprpgs, ! number of events to print out
|
|---|
| 138 | . optpgs, ! type of run: 'PYTHIA', 'ISAJET', 'FILE', ...
|
|---|
| 139 | . pgs_input_file, ! input file
|
|---|
| 140 | . pgs_output_file, ! output file
|
|---|
| 141 | . pgs_param_file, ! detector parameter file
|
|---|
| 142 | . pgs_isajet_decay, ! ISAJET decay table file name
|
|---|
| 143 | . pgs_isajet_cards, ! ISAJET card file name
|
|---|
| 144 | . pgs_pythia_cards ! PYTHIA card file name
|
|---|
| 145 |
|
|---|
| 146 | c PGS track list
|
|---|
| 147 |
|
|---|
| 148 | integer ntrkmx
|
|---|
| 149 | parameter (ntrkmx=500)
|
|---|
| 150 |
|
|---|
| 151 | integer numtrk,dumtrk,indtrk
|
|---|
| 152 |
|
|---|
| 153 | real*8 ptrk,qtrk
|
|---|
| 154 |
|
|---|
| 155 | common /pgstrk/ numtrk,dumtrk, ! number of tracks
|
|---|
| 156 | . indtrk(ntrkmx), ! index to HEPEVT particle
|
|---|
| 157 | . ptrk(3,ntrkmx), ! track 3-vector
|
|---|
| 158 | . qtrk(ntrkmx) ! track charge
|
|---|
| 159 |
|
|---|
| 160 |
|
|---|
| 161 | c PGS calorimeter tower arrays
|
|---|
| 162 |
|
|---|
| 163 | real*8 pi
|
|---|
| 164 | parameter(pi=3.141592654)
|
|---|
| 165 |
|
|---|
| 166 | integer nphimax,netamax
|
|---|
| 167 | parameter (nphimax=600)
|
|---|
| 168 | parameter (netamax=600)
|
|---|
| 169 |
|
|---|
| 170 | real*8 ecal,hcal,met_cal,phi_met_cal
|
|---|
| 171 |
|
|---|
| 172 | common /pgscal/ ecal(netamax,nphimax), ! electromagnetic energy in each tower
|
|---|
| 173 | . hcal(netamax,nphimax), ! hadronic energy in each tower
|
|---|
| 174 | . met_cal, ! calorimeter missing ET
|
|---|
| 175 | . phi_met_cal ! calorimeter missing ET phi
|
|---|
| 176 |
|
|---|
| 177 |
|
|---|
| 178 | c PGS calorimeter cluster list
|
|---|
| 179 |
|
|---|
| 180 | integer nclumx
|
|---|
| 181 |
|
|---|
| 182 | parameter (nclumx=50)
|
|---|
| 183 |
|
|---|
| 184 | integer cclu,numclu,dumclu,etaclu,phiclu,mulclu
|
|---|
| 185 |
|
|---|
| 186 | real*8 pclu,etclu,emclu,ehclu,efclu,widclu
|
|---|
| 187 |
|
|---|
| 188 | common /pgsclu/ cclu(netamax,nphimax), ! map of cluster indices
|
|---|
| 189 | . numclu,dumclu, ! number of clusters in list
|
|---|
| 190 | . pclu(5,nclumx), ! cluster 4 vector and mass
|
|---|
| 191 | . etaclu(nclumx), ! cluster seed tower eta
|
|---|
| 192 | . phiclu(nclumx), ! cluster seed tower phi
|
|---|
| 193 | . emclu(nclumx), ! cluster electromagnetic energy
|
|---|
| 194 | . ehclu(nclumx), ! cluster hadronic energy
|
|---|
| 195 | . efclu(nclumx), ! cluster electromagnetic fraction
|
|---|
| 196 | . widclu(nclumx), ! cluster width sqrt(deta**2+dphi**2)
|
|---|
| 197 | . mulclu(nclumx) ! cluster tower multiplicity
|
|---|
| 198 |
|
|---|
| 199 |
|
|---|
| 200 | c PGS trigger object list
|
|---|
| 201 |
|
|---|
| 202 | integer ntrgmx
|
|---|
| 203 | parameter (ntrgmx=500)
|
|---|
| 204 |
|
|---|
| 205 | integer numtrg,dumtrg,indtrg,typtrg
|
|---|
| 206 |
|
|---|
| 207 | real*8 vectrg
|
|---|
| 208 |
|
|---|
| 209 | common /pgstrg/ numtrg,dumtrg, ! number of trigger objects
|
|---|
| 210 | . indtrg(ntrgmx), ! index to HEPEVT particle (where relevant)
|
|---|
| 211 | . typtrg(ntrgmx), ! reconstructed type: 0=photon
|
|---|
| 212 | ! 1=electron
|
|---|
| 213 | ! 2=muon
|
|---|
| 214 | ! 3=tau (hadronic)
|
|---|
| 215 | ! 4=jet
|
|---|
| 216 | ! 5=detached vertex
|
|---|
| 217 | ! 6=MET
|
|---|
| 218 | . vectrg(10,ntrgmx) ! trigger object vector: 1 = eta
|
|---|
| 219 | ! 2 = phi
|
|---|
| 220 | ! 3 = ET of cluster
|
|---|
| 221 | ! 4 = cluster #
|
|---|
| 222 | ! 5 = pt of track (if any)
|
|---|
| 223 | ! 6 = track #
|
|---|
| 224 |
|
|---|
| 225 | c PGS reconstructed object list
|
|---|
| 226 |
|
|---|
| 227 | integer nobjmx
|
|---|
| 228 | parameter (nobjmx=500)
|
|---|
| 229 |
|
|---|
| 230 | integer numobj,dumobj,indobj,typobj
|
|---|
| 231 | real*8 pobj,qobj,vecobj
|
|---|
| 232 |
|
|---|
| 233 | common /pgsrec/ numobj,dumobj, ! number of reconstructed objects
|
|---|
| 234 | . indobj(nobjmx), ! index to HEPEVT particle (where relevant)
|
|---|
| 235 | . typobj(nobjmx), ! reconstructed type: 0 = photon
|
|---|
| 236 | ! 1 = electron
|
|---|
| 237 | ! 2 = muon
|
|---|
| 238 | ! 3 = tau (hadronic)
|
|---|
| 239 | ! 4 = jet
|
|---|
| 240 | ! 5 = heavy charged
|
|---|
| 241 | . pobj(4,nobjmx), ! four vector of reconstructed object
|
|---|
| 242 | . qobj(nobjmx), ! charge of reconstructed object
|
|---|
| 243 | . vecobj(10,nobjmx) ! interesting object quantities
|
|---|
| 244 |
|
|---|
| 245 | c --------------------------
|
|---|
| 246 | c table of vecobj quantities
|
|---|
| 247 | c --------------------------
|
|---|
| 248 | c
|
|---|
| 249 | c -------------------------------------------------------------------------------------
|
|---|
| 250 | c type 1 2 3 4 5 6 7
|
|---|
| 251 | c -------------------------------------------------------------------------------------
|
|---|
| 252 | c 0 photon EM energy HAD energy track E N(trk) width - -
|
|---|
| 253 | c 1 electron " " " " " " - - -
|
|---|
| 254 | c 2 muon " " " " " " trk iso E - -
|
|---|
| 255 | c 3 tau " " " " " " width mtau ptmax
|
|---|
| 256 | c 4 jet " " " " " " " flavor c,b tags ->
|
|---|
| 257 | c -------------------------------------------------------------------------------------
|
|---|
| 258 | c
|
|---|
| 259 | c b, c tagging: vecobj(7,iobj) non-zero if charm tag (jet prob. alg.)
|
|---|
| 260 | c vecobj(8,iobj) non-zero if b tag ( " " " )
|
|---|
| 261 | c vecobj(9,iobj) non-zero if b tag (impact method)
|
|---|
| 262 | c
|
|---|
| 263 | c --> all algorithms include rates for gluon, uds, c and b jets
|
|---|
| 264 | c
|
|---|