1
C**************************************************************************
2
c dummy_fct_EVA_3A_matching.f
3
c 2021 October (R. Ruiz)
4
c Imposes phase space cuts on AAA final-state and on (mu-v_mu) momentum
5
c transfer (q) or transverse momentum of v_mu (pT) for matrix element
6
c matching of the processes:
7
c 1. e mu > v_e v_mu AAA
9
c pT/q cut are set to factorization scale (dsqrt_q2fact2) in run_card.dat.
10
c For further details, see Constantini et al [arXiv:2110.]
11
C**************************************************************************
13
logical FUNCTION dummy_cuts(P)
14
C**************************************************************************
16
C P(0:3,1) MOMENTUM OF INCOMING PARTON
17
C P(0:3,2) MOMENTUM OF INCOMING PARTON
18
C P(0:3,3) MOMENTUM OF ...
19
C ALL MOMENTA ARE IN THE REST FRAME!!
20
C COMMON/JETCUTS/ CUTS ON JETS
22
C TRUE IF EVENTS PASSES ALL CUTS LISTED
23
C**************************************************************************
29
include 'nexternal.inc'
33
integer idup(nexternal,maxproc,maxsproc)
34
integer mothup(2,nexternal)
35
integer icolup(2,nexternal,maxflow,maxsproc)
36
include 'leshouche.inc'
40
REAL*8 P(0:3,nexternal)
45
parameter( PI = 3.14159265358979323846d0 )
47
integer ff,ii,kk,nrPho
48
double precision evoThres2,evoScale2 ! neutrino
49
double precision pAAA(0:3),minM2,minPtX,maxEta ! photon
50
double precision rap,pt,r2,dot,SumDot
51
external rap,pt,r2,dot,SumDot
53
integer tmpPID1,tmpPID2
54
integer ipdg(nexternal)
56
c particle identification
58
logical doEVACuts,doEVAMatch
59
LOGICAL IS_A_J(NEXTERNAL),IS_A_L(NEXTERNAL)
60
LOGICAL IS_A_B(NEXTERNAL),IS_A_A(NEXTERNAL),IS_A_ONIUM(NEXTERNAL)
61
LOGICAL IS_A_NU(NEXTERNAL),IS_HEAVY(NEXTERNAL)
62
logical do_cuts(nexternal)
63
COMMON /TO_SPECISA/IS_A_J,IS_A_A,IS_A_L,IS_A_B,IS_A_NU,IS_HEAVY,
69
doEVAMatch=.true. ! set to .true.(.false.) for emu (eW) scattering
79
do ff=nincoming+1,nexternal
81
c Cut on evolution variable:
82
c 1. Find v_mu (exists only if full ME)
83
c 2. Build evolution variable (0=q^2 or 1=pT^2)
84
c 3. Cut on evolution variable
85
tmpPID1 = abs(idup(ff,1,1))
86
if(tmpPID1.eq.14.and.doEVAMatch) then
87
if(ievo_eva.eq.1) then
88
evoScale2 = pT(p(0,ff))**2
91
tmpPID2=abs(idup(ii,1,1))
92
if(tmpPID2.eq.13) then
93
evoScale2 = abs(SumDot(p(0,ff),p(0,ii),-1d0))
98
if(evoScale2.lt.evoThres2) then
106
c 1. Find photons and add momentum
107
c 2. Once three photons found: impose cut on invariant mass
108
c 3. pT/eta cuts are redundant/sanity check
109
if(IS_A_A(ff).and.doEVACuts) then
111
if(nrPho.lt.2) then ! firstTime
113
pAAA(kk) = p(kk,ff) ! p(4-momentum,list-ID)
117
pAAA(kk) = pAAA(kk) + p(kk,ff) ! p(4-momentum,list-ID)
122
if(dot(pAAA,pAAA).lt.minM2) then
128
if(abs(rap(p(0,ff))).gt.maxEta) then
133
if(pt(p(0,ff)).lt.minPtX) then
144
subroutine get_dummy_x1(sjac, X1, R, pbeam1, pbeam2, stot, shat)
146
include 'maxparticles.inc'
148
c include 'genps.inc'
149
double precision sjac ! jacobian. should be updated not reinit
150
double precision X1 ! bjorken X. output
151
double precision R ! random value after grid transfrormation. between 0 and 1
152
double precision pbeam1(0:3) ! momentum of the first beam (input and/or output)
153
double precision pbeam2(0:3) ! momentum of the second beam (input and/or output)
154
double precision stot ! total energy (input and /or output)
155
double precision shat ! output
157
c global variable to set (or not)
158
double precision cm_rap
160
common/to_cm_rap/set_cm_rap,cm_rap
162
set_cm_rap=.false. ! then cm_rap will be set as .5d0*dlog(xbk(1)*ebeam(1)/(xbk(2)*ebeam(2)))
163
! ebeam(1) and ebeam(2) are defined here thanks to 'run.inc'
164
shat = x1*ebeam(1)*ebeam(2)
168
subroutine get_dummy_x1_x2(sjac, X, R, pbeam1, pbeam2, stot,shat)
170
include 'maxparticles.inc'
172
c include 'genps.inc'
173
double precision sjac ! jacobian. should be updated not reinit
174
double precision X(2) ! bjorken X. output
175
double precision R(2) ! random value after grid transfrormation. between 0 and 1
176
double precision pbeam1(0:3) ! momentum of the first beam
177
double precision pbeam2(0:3) ! momentum of the second beam
178
double precision stot ! total energy
179
double precision shat ! output
181
c global variable to set (or not)
182
double precision cm_rap
184
common/to_cm_rap/set_cm_rap,cm_rap
186
set_cm_rap=.false. ! then cm_rap will be set as .5d0*dlog(xbk(1)*ebeam(1)/(xbk(2)*ebeam(2)))
187
! ebeam(1) and ebeam(2) are defined here thanks to 'run.inc'
188
shat = x(1)*x(2)*ebeam(1)*ebeam(2)
193
logical function dummy_boostframe()
197
dummy_boostframe = .false.