From 4c88643cc534f4534bcf3b5aae021d17fbaf3e9c Mon Sep 17 00:00:00 2001 From: Ram Krishna Sharma Date: Thu, 28 Nov 2024 00:25:58 +0100 Subject: [PATCH 1/4] WV Semileptonic aTGC cards --- .../SMP_aTGC/CardsTemplates/FKS_params.dat | 75 ++ .../CardsTemplates/customizecards.dat | 8 + .../13TeV/SMP_aTGC/CardsTemplates/cuts.f | 1039 +++++++++++++++++ .../SMP_aTGC/CardsTemplates/extramodels.dat | 1 + .../SMP_aTGC/CardsTemplates/madspin_card.dat | 15 + .../SMP_aTGC/CardsTemplates/proc_card.dat | 15 + .../SMP_aTGC/CardsTemplates/reweight_card.dat | 754 ++++++++++++ .../SMP_aTGC/CardsTemplates/run_card.dat | 170 +++ .../13TeV/SMP_aTGC/generate_cards.py | 116 ++ 9 files changed, 2193 insertions(+) create mode 100644 bin/MadGraph5_aMCatNLO/cards/production/13TeV/SMP_aTGC/CardsTemplates/FKS_params.dat create mode 100644 bin/MadGraph5_aMCatNLO/cards/production/13TeV/SMP_aTGC/CardsTemplates/customizecards.dat create mode 100644 bin/MadGraph5_aMCatNLO/cards/production/13TeV/SMP_aTGC/CardsTemplates/cuts.f create mode 100644 bin/MadGraph5_aMCatNLO/cards/production/13TeV/SMP_aTGC/CardsTemplates/extramodels.dat create mode 100644 bin/MadGraph5_aMCatNLO/cards/production/13TeV/SMP_aTGC/CardsTemplates/madspin_card.dat create mode 100644 bin/MadGraph5_aMCatNLO/cards/production/13TeV/SMP_aTGC/CardsTemplates/proc_card.dat create mode 100644 bin/MadGraph5_aMCatNLO/cards/production/13TeV/SMP_aTGC/CardsTemplates/reweight_card.dat create mode 100644 bin/MadGraph5_aMCatNLO/cards/production/13TeV/SMP_aTGC/CardsTemplates/run_card.dat create mode 100644 bin/MadGraph5_aMCatNLO/cards/production/13TeV/SMP_aTGC/generate_cards.py diff --git a/bin/MadGraph5_aMCatNLO/cards/production/13TeV/SMP_aTGC/CardsTemplates/FKS_params.dat b/bin/MadGraph5_aMCatNLO/cards/production/13TeV/SMP_aTGC/CardsTemplates/FKS_params.dat new file mode 100644 index 000000000000..87dfcafcb21a --- /dev/null +++ b/bin/MadGraph5_aMCatNLO/cards/production/13TeV/SMP_aTGC/CardsTemplates/FKS_params.dat @@ -0,0 +1,75 @@ +! ========================================================================== +! This file sets the different technical parameters intrinsic to the +! FKS program and which controls the behaviour of the code at run +! time. The common user should not edit this file and only experts +! should venture editing these parameters. +! ========================================================================== +! +! ========================================================================== +! Arbitrary numerical parameters used in the FKS formalism +! ========================================================================== +! +! To be implemented by the FKS authors +! +! ========================================================================== +! Parameters controlling the tests based on the IR poles comparison +! ========================================================================== +! +! This threshold sets the limiting value for the comparison of the +! relative difference of the IR pole from the OLP and the one computed +! internaly by MadFKS. The value below is used for the first PS +! points to assess the sanity of the computation. A value ten times +! smaller will be used for the systematic check of IR poles at +! runtime. +! Notice that the systematic comparison of IR poles at run time is +! only performed when the Monte-Carlo over helicity configurations +! method is not used. Set this value to '-1.0d0' if you want the +! check to always pass. +#IRPoleCheckThreshold +-1.0d0 +! Default :: 1.0d-5 +! +! ========================================================================== +! OLP (virtuals) behavior at run time +! ========================================================================== +! +! +! Set the precision required from the OLP code. The IR poles check +! will be performed at run time with a threshold ten times loser than +! the value below. When equal to '-1d0' the default value of the OLP +! is used, and the poles check is disabled at run time +! +#PrecisionVirtualAtRunTime +-1d0 +! Default :: 1.0d-3 +! +! ========================================================================== +! Parameters defining the techniques used for the MC integration +! ========================================================================== +! +! This integer sets what is the minimum number of contributing +! helicities (in a given subrpocess) which is necessary for MadFKS to +! switch to the Monte-Carlo over helicity configurations method. Set +! this to '-1' if you want to forbid the use of this method +! altogether. +#NHelForMCoverHels +4 +! Default :: 4 +! +! This parameter sets for which fraction of the events the virtual +! matrix elements should be included. When using MINT, during the +! grid-setup phase, this number will be updated automatically after +! each iteration depending on the relative MC uncertainties. +#VirtualFraction +1.0d0 +! Default :: 1.0d0 +! +! This parameter sets the minimal fraction of the events for which the +! virtual matrix elements should be included. +#MinVirtualFraction +0.005d0 +! Default :: 0.005d0 +! +! ========================================================================== +! End of FKS_params.dat file +! ========================================================================== diff --git a/bin/MadGraph5_aMCatNLO/cards/production/13TeV/SMP_aTGC/CardsTemplates/customizecards.dat b/bin/MadGraph5_aMCatNLO/cards/production/13TeV/SMP_aTGC/CardsTemplates/customizecards.dat new file mode 100644 index 000000000000..a5342787a029 --- /dev/null +++ b/bin/MadGraph5_aMCatNLO/cards/production/13TeV/SMP_aTGC/CardsTemplates/customizecards.dat @@ -0,0 +1,8 @@ +set param_card dim6 1 3.6 +set param_card dim6 2 4.5 +set param_card dim6 3 20.0 +set param_card dim6 4 0.0 +set param_card dim6 5 0.0 +set param_card dim6 6 0.0 +set param_card dim6 7 0.0 +set param_card dim6 8 0.0 diff --git a/bin/MadGraph5_aMCatNLO/cards/production/13TeV/SMP_aTGC/CardsTemplates/cuts.f b/bin/MadGraph5_aMCatNLO/cards/production/13TeV/SMP_aTGC/CardsTemplates/cuts.f new file mode 100644 index 000000000000..d7fdb4194a0b --- /dev/null +++ b/bin/MadGraph5_aMCatNLO/cards/production/13TeV/SMP_aTGC/CardsTemplates/cuts.f @@ -0,0 +1,1039 @@ +c +c This file contains the default cuts (as defined in the run_card.dat) +c and can easily be extended by the user to include other. This +c function should return true if event passes cuts +c (passcuts_user=.true.) and false otherwise (passcuts_user=.false.). +c +c NOTE THAT ONLY IRC-SAFE CUTS CAN BE APPLIED OTHERWISE THE INTEGRATION +c MIGHT NOT CONVERGE +c + logical function passcuts_user(p,istatus,ipdg) + implicit none +c This includes the 'nexternal' parameter that labels the number of +c particles in the (n+1)-body process + include 'nexternal.inc' +c This include file contains common blocks filled with the cuts defined +c in the run_card.dat + include 'cuts.inc' +c +c This is an array which is '-1' for initial state and '1' for final +c state particles + integer istatus(nexternal) +c This is an array with (simplified) PDG codes for the particles. Note +c that channels that are combined (i.e. they have the same matrix +c elements) are given only 1 set of PDG codes. This means, e.g., that +c when using a 5-flavour scheme calculation (massless b quark), no +c b-tagging can be applied. + integer iPDG(nexternal) +c The array of the momenta and masses of the initial and final state +c particles in the lab frame. The format is "E, px, py, pz, mass", while +c the second dimension loops over the particles in the process. Note +c that these are the (n+1)-body particles; for the n-body there is one +c momenta equal to all zero's (this is not necessarily the last particle +c in the list). If one uses IR-safe obserables only, there should be no +c difficulty in using this. + double precision p(0:4,nexternal) +c +C external functions that can be used. Some are defined in this +C file, others are in ./Source/kin_functions.f + REAL*8 R2_04,invm2_04,invm3_04,pt_04,eta_04,pt,eta + external R2_04,invm2_04,invm3_04,pt_04,eta_04,pt,eta +c local integers + integer i,j +c temporary variable for caching locally computation + double precision tmpvar +c jet cluster algorithm + integer nQCD,NJET,JET(nexternal) + double precision pQCD(0:3,nexternal),PJET(0:3,nexternal) + double precision rfj,sycut,palg,amcatnlo_fastjetdmerge + integer njet_eta + integer mm +c Photon isolation + integer nph,nem,k,nin + double precision ptg,chi_gamma_iso,iso_getdrv40 + double precision Etsum(0:nexternal) + real drlist(nexternal) + double precision pgamma(0:3,nexternal),pem(0:3,nexternal) + logical alliso +c Sort array of results: ismode>0 for real, isway=0 for ascending order + integer ismode,isway,izero,isorted(nexternal) + parameter (ismode=1) + parameter (isway=0) + parameter (izero=0) +c The UNLOPS cut + double precision p_unlops(0:3,nexternal) + include "run.inc" ! includes the ickkw parameter + logical passUNLOPScuts +c PDG specific cut + double precision etmin(nincoming+1:nexternal-1) + double precision etmax(nincoming+1:nexternal-1) + double precision mxxmin(nincoming+1:nexternal-1,nincoming+1:nexternal-1) + common /to_cuts/etmin,etmax,mxxmin +c logicals that define if particles are leptons, jets or photons. These +c are filled from the PDG codes (iPDG array) in this function. + logical is_a_lp(nexternal),is_a_lm(nexternal),is_a_j(nexternal) + $ ,is_a_ph(nexternal) + + passcuts_user=.true. ! event is okay; otherwise it is changed + +C*************************************************************** +C*************************************************************** +C Cuts from the run_card.dat +C*************************************************************** +C*************************************************************** +c + + do i=1,nexternal + if (istatus(i).eq.1 .and. (abs(ipdg(i)).eq.24)) then + if (pt_04(p(0,i)).lt.150.) then + passcuts_user=.false. + return + endif + endif + enddo + + do i=0,nexternal + do j=0,nexternal + do k=0,nexternal + if ((abs(ipdg(i)).eq.11.or.abs(ipdg(i)).eq.13.or. + & abs(ipdg(i)).eq.15).and. + & (abs(ipdg(i))+1.eq.abs(ipdg(j))).and. + & abs(ipdg(k)).eq.24) then + if (invm3_04(p(0,i),p(0,j),p(0,k),1d0).mWVCUTLOW.**2) then + passcuts_user=.false. + return + endif + if (invm3_04(p(0,i),p(0,j),p(0,k),1d0).mWVCUTHIGH.**2) then + passcuts_user=.false. + return + endif + endif + enddo + enddo + enddo + + +c CHARGED LEPTON CUTS +c +c find the charged leptons (also used in the photon isolation cuts below) + do i=1,nexternal + if(istatus(i).eq.1 .and. + & (ipdg(i).eq.11 .or. ipdg(i).eq.13 .or. ipdg(i).eq.15)) then + is_a_lm(i)=.true. + else + is_a_lm(i)=.false. + endif + if(istatus(i).eq.1 .and. + & (ipdg(i).eq.-11 .or. ipdg(i).eq.-13 .or. ipdg(i).eq.-15)) then + is_a_lp(i)=.true. + else + is_a_lp(i)=.false. + endif + enddo +c apply the charged lepton cuts + do i=nincoming+1,nexternal + if (is_a_lp(i).or.is_a_lm(i)) then +c transverse momentum + if (ptl.gt.0d0) then + if (pt_04(p(0,i)).lt.ptl) then + passcuts_user=.false. + return + endif + endif +c pseudo-rapidity + if (etal.gt.0d0) then + if (abs(eta_04(p(0,i))).gt.etal) then + passcuts_user=.false. + return + endif + endif +c DeltaR and invariant mass cuts + if (is_a_lp(i)) then + do j=nincoming+1,nexternal + if (is_a_lm(j)) then + if (drll.gt.0d0) then + if (R2_04(p(0,i),p(0,j)).lt.drll**2) then + passcuts_user=.false. + return + endif + endif + if (mll.gt.0d0) then + if (invm2_04(p(0,i),p(0,j),1d0).lt.mll**2) then + passcuts_user=.false. + return + endif + endif + if (ipdg(i).eq.-ipdg(j)) then + if (drll_sf.gt.0d0) then + if (R2_04(p(0,i),p(0,j)).lt.drll_sf**2) then + passcuts_user=.false. + return + endif + endif + if (mll_sf.gt.0d0) then + if (invm2_04(p(0,i),p(0,j),1d0).lt.mll_sf**2) + $ then + passcuts_user=.false. + return + endif + endif + endif + endif + enddo + endif + endif + enddo +c +c JET CUTS +c +c find the jets + do i=1,nexternal + if (istatus(i).eq.1 .and. + & (abs(ipdg(i)).le.maxjetflavor .or. ipdg(i).eq.21)) then + is_a_j(i)=.true. + else + is_a_j(i)=.false. + endif + enddo + +c If we do not require a mimimum jet energy, there's no need to apply +c jet clustering and all that. + if (ptj.ne.0d0.or.ptgmin.ne.0d0) then +c Put all (light) QCD partons in momentum array for jet clustering. +c From the run_card.dat, maxjetflavor defines if b quark should be +c considered here (via the logical variable 'is_a_jet'). nQCD becomes +c the number of (light) QCD partons at the real-emission level (i.e. one +c more than the Born). + nQCD=0 + do j=nincoming+1,nexternal + if (is_a_j(j)) then + nQCD=nQCD+1 + do i=0,3 + pQCD(i,nQCD)=p(i,j) + enddo + endif + enddo + endif + +c THE UNLOPS CUT: + if (ickkw.eq.4 .and. ptj.gt.0d0) then +c Use special pythia pt cut for minimal pT + do i=1,nexternal + do j=0,3 + p_unlops(j,i)=p(j,i) + enddo + enddo + call pythia_UNLOPS(p_unlops,passUNLOPScuts) + if (.not. passUNLOPScuts) then + passcuts_user=.false. + return + endif +c Bypass normal jet cuts + goto 122 +c THE VETO XSEC CUT: + elseif (ickkw.eq.-1 .and. ptj.gt.0d0) then +c Use veto'ed Xsec for analytic NNLL resummation + if (nQCD.ne.1) then + write (*,*) 'ERROR: more than one QCD parton in '/ + $ /'this event in cuts.f. There should only be one' + stop + endif + if (pt(pQCD(0,1)) .gt. ptj) then + passcuts_user=.false. + return + endif + endif + + + if (ptj.gt.0d0.and.nQCD.gt.1) then + +c Cut some peculiar momentum configurations, i.e. two partons very soft. +c This is needed to get rid of numerical instabilities in the Real emission +c matrix elements when the Born has a massless final-state parton, but +c no possible divergence related to it (e.g. t-channel single top) + mm=0 + do j=1,nQCD + if(abs(pQCD(0,j)/p(0,1)).lt.1.d-8) mm=mm+1 + enddo + if(mm.gt.1)then + passcuts_user=.false. + return + endif + + +c Define jet clustering parameters (from cuts.inc via the run_card.dat) + palg=JETALGO ! jet algorithm: 1.0=kt, 0.0=C/A, -1.0 = anti-kt + rfj=JETRADIUS ! the radius parameter + sycut=PTJ ! minimum transverse momentum + +c****************************************************************************** +c call FASTJET to get all the jets +c +c INPUT: +c input momenta: pQCD(0:3,nexternal), energy is 0th component +c number of input momenta: nQCD +c radius parameter: rfj +c minumum jet pt: sycut +c jet algorithm: palg, 1.0=kt, 0.0=C/A, -1.0 = anti-kt +c +c OUTPUT: +c jet momenta: pjet(0:3,nexternal), E is 0th cmpnt +c the number of jets (with pt > SYCUT): njet +c the jet for a given particle 'i': jet(i), note that this is the +c particle in pQCD, which doesn't +c necessarily correspond to the particle +c label in the process +c + call amcatnlo_fastjetppgenkt_etamax_timed( + $ pQCD,nQCD,rfj,sycut,etaj,palg,pjet,njet,jet) +c +c****************************************************************************** + +c Apply the jet cuts + if (njet .ne. nQCD .and. njet .ne. nQCD-1) then + passcuts_user=.false. + return + endif + endif + 122 continue +c +c PHOTON (ISOLATION) CUTS +c +c find the photons + do i=1,nexternal + if (istatus(i).eq.1 .and. ipdg(i).eq.22) then + is_a_ph(i)=.true. + else + is_a_ph(i)=.false. + endif + enddo + if (ptgmin.ne.0d0) then + nph=0 + do j=nincoming+1,nexternal + if (is_a_ph(j)) then + nph=nph+1 + do i=0,3 + pgamma(i,nph)=p(i,j) + enddo + endif + enddo + if(nph.eq.0)goto 444 + + if(isoEM)then + nem=nph + do k=1,nem + do i=0,3 + pem(i,k)=pgamma(i,k) + enddo + enddo + do j=nincoming+1,nexternal + if (is_a_lp(j).or.is_a_lm(j)) then + nem=nem+1 + do i=0,3 + pem(i,nem)=p(i,j) + enddo + endif + enddo + endif + + alliso=.true. + + j=0 + do while(j.lt.nph.and.alliso) +c Loop over all photons + j=j+1 + + ptg=pt(pgamma(0,j)) + if(ptg.lt.ptgmin)then + passcuts_user=.false. + return + endif + if (etagamma.gt.0d0) then + if (abs(eta(pgamma(0,j))).gt.etagamma) then + passcuts_user=.false. + return + endif + endif + +c Isolate from hadronic energy + do i=1,nQCD + drlist(i)=sngl(iso_getdrv40(pgamma(0,j),pQCD(0,i))) + enddo + call sortzv(drlist,isorted,nQCD,ismode,isway,izero) + Etsum(0)=0.d0 + nin=0 + do i=1,nQCD + if(dble(drlist(isorted(i))).le.R0gamma)then + nin=nin+1 + Etsum(nin)=Etsum(nin-1)+pt(pQCD(0,isorted(i))) + endif + enddo + do i=1,nin + alliso=alliso .and. + $ Etsum(i).le.chi_gamma_iso(dble(drlist(isorted(i))), + $ R0gamma,xn,epsgamma,ptg) + enddo + +c Isolate from EM energy + if(isoEM.and.nem.gt.1)then + do i=1,nem + drlist(i)=sngl(iso_getdrv40(pgamma(0,j),pem(0,i))) + enddo + call sortzv(drlist,isorted,nem,ismode,isway,izero) +c First of list must be the photon: check this, and drop it + if(isorted(1).ne.j.or.drlist(isorted(1)).gt.1.e-4)then + write(*,*)'Error #1 in photon isolation' + write(*,*)j,isorted(1),drlist(isorted(1)) + stop + endif + Etsum(0)=0.d0 + nin=0 + do i=2,nem + if(dble(drlist(isorted(i))).le.R0gamma)then + nin=nin+1 + Etsum(nin)=Etsum(nin-1)+pt(pem(0,isorted(i))) + endif + enddo + do i=1,nin + alliso=alliso .and. + $ Etsum(i).le.chi_gamma_iso(dble(drlist(isorted(i))), + $ R0gamma,xn,epsgamma,ptg) + enddo + endif +c End of loop over photons + enddo + if(.not.alliso)then + passcuts_user=.false. + return + endif + 444 continue +c End photon isolation + endif + +C +C PDG SPECIFIC CUTS (PT/M_IJ) +C + do i=nincoming+1,nexternal-1 + if(etmin(i).gt.0d0 .or. etmax(i).gt.0d0)then + tmpvar = pt_04(p(0,i)) + if (tmpvar.lt.etmin(i)) then + passcuts_user=.false. + return + elseif (tmpvar.gt.etmax(i) .and. etmax(i).gt.0d0) then + passcuts_user=.false. + return + endif + endif + do j=i+1, nexternal-1 + if (mxxmin(i,j).gt.0d0)then + if (invm2_04(p(0,i),p(0,j),1d0).lt.mxxmin(i,j)**2)then + passcuts_user=.false. + return + endif + endif + enddo + enddo + + +C*************************************************************** +C*************************************************************** +C PUT HERE YOUR USER-DEFINED CUTS +C*************************************************************** +C*************************************************************** +C +c$$$C EXAMPLE: cut on top quark pT +c$$$C Note that PDG specific cut are more optimised than simple user cut +c$$$ do i=1,nexternal ! loop over all external particles +c$$$ if (istatus(i).eq.1 ! final state particle +c$$$ & .and. abs(ipdg(i)).eq.6) then ! top quark +c$$$C apply the pT cut (pT should be large than 200 GeV for the event to +c$$$C pass cuts) +c$$$ if ( p(1,i)**2+p(2,i)**2 .lt. 200d0**2 ) then +c$$$C momenta do not pass cuts. Set passcuts_user to false and return +c$$$ passcuts_user=.false. +c$$$ return +c$$$ endif +c$$$ endif +c$$$ enddo +c + return + end + + + + + + + +C*************************************************************** +C*************************************************************** +C NO NEED TO CHANGE ANY OF THE FUNCTIONS BELOW +C*************************************************************** +C*************************************************************** + logical function passcuts(p,rwgt) + implicit none + include "nexternal.inc" + include 'run.inc' + include 'genps.inc' + include 'cuts.inc' + include 'timing_variables.inc' + REAL*8 P(0:3,nexternal),rwgt + integer i,j,istatus(nexternal),iPDG(nexternal) +c For boosts + double precision ybst_til_tolab,ybst_til_tocm,sqrtshat,shat + common/parton_cms_stuff/ybst_til_tolab,ybst_til_tocm, + # sqrtshat,shat + double precision chybst,shybst,chybstmo + double precision xd(1:3) + data (xd(i),i=1,3)/0,0,1/ +c Momenta of the particles + double precision plab(0:3, nexternal),pp(0:4, nexternal) +c Masses of external particles + double precision pmass(nexternal) + common/to_mass/pmass +c PDG codes of particles + integer idup(nexternal,maxproc),mothup(2,nexternal,maxproc), + & icolup(2,nexternal,maxflow),niprocs + common /c_leshouche_inc/idup,mothup,icolup,niprocs + logical passcuts_user + external passcuts_user + call cpu_time(tBefore) +c Make sure have reasonable 4-momenta + if (p(0,1) .le. 0d0) then + passcuts=.false. + return + endif +c Also make sure there's no INF or NAN + do i=1,nexternal + do j=0,3 + if(p(j,i).gt.1d32.or.p(j,i).ne.p(j,i))then + passcuts=.false. + return + endif + enddo + enddo + rwgt=1d0 +c Boost the momenta p(0:3,nexternal) to the lab frame plab(0:3,nexternal) + chybst=cosh(ybst_til_tolab) + shybst=sinh(ybst_til_tolab) + chybstmo=chybst-1.d0 + do i=1,nexternal + call boostwdir2(chybst,shybst,chybstmo,xd, + & p(0,i),plab(0,i)) + enddo +c Fill the arrays (momenta, status and PDG): + do i=1,nexternal + if (i.le.nincoming) then + istatus(i)=-1 + else + istatus(i)=1 + endif + do j=0,3 + pp(j,i)=plab(j,i) + enddo + pp(4,i)=pmass(i) + ipdg(i)=idup(i,1) + if (ipdg(i).eq.-21) ipdg(i)=21 + enddo +c Call the actual cuts function + passcuts = passcuts_user(pp,istatus,ipdg) + call cpu_time(tAfter) + t_cuts=t_cuts+(tAfter-tBefore) + RETURN + END + + + function chi_gamma_iso(dr,R0,xn,epsgamma,pTgamma) +c Eq.(3.4) of Phys.Lett. B429 (1998) 369-374 [hep-ph/9801442] + implicit none + real*8 chi_gamma_iso,dr,R0,xn,epsgamma,pTgamma + real*8 tmp,axn +c + axn=abs(xn) + tmp=epsgamma*pTgamma + if(axn.ne.0.d0)then + tmp=tmp*( (1-cos(dr))/(1-cos(R0)) )**axn + endif + chi_gamma_iso=tmp + return + end + + +* +* $Id: sortzv.F,v 1.1.1.1 1996/02/15 17:49:50 mclareni Exp $ +* +* $Log: sortzv.F,v $ +* Revision 1.1.1.1 1996/02/15 17:49:50 mclareni +* Kernlib +* +* +c$$$#include "kerngen/pilot.h" + SUBROUTINE SORTZV (A,INDEX,N1,MODE,NWAY,NSORT) +C +C CERN PROGLIB# M101 SORTZV .VERSION KERNFOR 3.15 820113 +C ORIG. 02/10/75 +C + DIMENSION A(N1),INDEX(N1) +C +C + N = N1 + IF (N.LE.0) RETURN + IF (NSORT.NE.0) GO TO 2 + DO 1 I=1,N + 1 INDEX(I)=I +C + 2 IF (N.EQ.1) RETURN + IF (MODE) 10,20,30 + 10 CALL SORTTI (A,INDEX,N) + GO TO 40 +C + 20 CALL SORTTC(A,INDEX,N) + GO TO 40 +C + 30 CALL SORTTF (A,INDEX,N) +C + 40 IF (NWAY.EQ.0) GO TO 50 + N2 = N/2 + DO 41 I=1,N2 + ISWAP = INDEX(I) + K = N+1-I + INDEX(I) = INDEX(K) + 41 INDEX(K) = ISWAP + 50 RETURN + END +* ======================================== + SUBROUTINE SORTTF (A,INDEX,N1) +C + DIMENSION A(N1),INDEX(N1) +C + N = N1 + DO 3 I1=2,N + I3 = I1 + I33 = INDEX(I3) + AI = A(I33) + 1 I2 = I3/2 + IF (I2) 3,3,2 + 2 I22 = INDEX(I2) + IF (AI.LE.A (I22)) GO TO 3 + INDEX (I3) = I22 + I3 = I2 + GO TO 1 + 3 INDEX (I3) = I33 + 4 I3 = INDEX (N) + INDEX (N) = INDEX (1) + AI = A(I3) + N = N-1 + IF (N-1) 12,12,5 + 5 I1 = 1 + 6 I2 = I1 + I1 + IF (I2.LE.N) I22= INDEX(I2) + IF (I2-N) 7,9,11 + 7 I222 = INDEX (I2+1) + IF (A(I22)-A(I222)) 8,9,9 + 8 I2 = I2+1 + I22 = I222 + 9 IF (AI-A(I22)) 10,11,11 + 10 INDEX(I1) = I22 + I1 = I2 + GO TO 6 + 11 INDEX (I1) = I3 + GO TO 4 + 12 INDEX (1) = I3 + RETURN + END +* ======================================== + SUBROUTINE SORTTI (A,INDEX,N1) +C + INTEGER A,AI + DIMENSION A(N1),INDEX(N1) +C + N = N1 + DO 3 I1=2,N + I3 = I1 + I33 = INDEX(I3) + AI = A(I33) + 1 I2 = I3/2 + IF (I2) 3,3,2 + 2 I22 = INDEX(I2) + IF (AI.LE.A (I22)) GO TO 3 + INDEX (I3) = I22 + I3 = I2 + GO TO 1 + 3 INDEX (I3) = I33 + 4 I3 = INDEX (N) + INDEX (N) = INDEX (1) + AI = A(I3) + N = N-1 + IF (N-1) 12,12,5 + 5 I1 = 1 + 6 I2 = I1 + I1 + IF (I2.LE.N) I22= INDEX(I2) + IF (I2-N) 7,9,11 + 7 I222 = INDEX (I2+1) + IF (A(I22)-A(I222)) 8,9,9 + 8 I2 = I2+1 + I22 = I222 + 9 IF (AI-A(I22)) 10,11,11 + 10 INDEX(I1) = I22 + I1 = I2 + GO TO 6 + 11 INDEX (I1) = I3 + GO TO 4 + 12 INDEX (1) = I3 + RETURN + END +* ======================================== + SUBROUTINE SORTTC (A,INDEX,N1) +C + INTEGER A,AI + DIMENSION A(N1),INDEX(N1) +C + N = N1 + DO 3 I1=2,N + I3 = I1 + I33 = INDEX(I3) + AI = A(I33) + 1 I2 = I3/2 + IF (I2) 3,3,2 + 2 I22 = INDEX(I2) + IF(ICMPCH(AI,A(I22)))3,3,21 + 21 INDEX (I3) = I22 + I3 = I2 + GO TO 1 + 3 INDEX (I3) = I33 + 4 I3 = INDEX (N) + INDEX (N) = INDEX (1) + AI = A(I3) + N = N-1 + IF (N-1) 12,12,5 + 5 I1 = 1 + 6 I2 = I1 + I1 + IF (I2.LE.N) I22= INDEX(I2) + IF (I2-N) 7,9,11 + 7 I222 = INDEX (I2+1) + IF (ICMPCH(A(I22),A(I222))) 8,9,9 + 8 I2 = I2+1 + I22 = I222 + 9 IF (ICMPCH(AI,A(I22))) 10,11,11 + 10 INDEX(I1) = I22 + I1 = I2 + GO TO 6 + 11 INDEX (I1) = I3 + GO TO 4 + 12 INDEX (1) = I3 + RETURN + END +* ======================================== + FUNCTION ICMPCH(IC1,IC2) +C FUNCTION TO COMPARE TWO 4 CHARACTER EBCDIC STRINGS - IC1,IC2 +C ICMPCH=-1 IF HEX VALUE OF IC1 IS LESS THAN IC2 +C ICMPCH=0 IF HEX VALUES OF IC1 AND IC2 ARE THE SAME +C ICMPCH=+1 IF HEX VALUES OF IC1 IS GREATER THAN IC2 + I1=IC1 + I2=IC2 + IF(I1.GE.0.AND.I2.GE.0)GOTO 40 + IF(I1.GE.0)GOTO 60 + IF(I2.GE.0)GOTO 80 + I1=-I1 + I2=-I2 + IF(I1-I2)80,70,60 + 40 IF(I1-I2)60,70,80 + 60 ICMPCH=-1 + RETURN + 70 ICMPCH=0 + RETURN + 80 ICMPCH=1 + RETURN + END + + + function iso_getdrv40(p1,p2) + implicit none + real*8 iso_getdrv40,p1(0:3),p2(0:3) + real*8 iso_getdr +c + iso_getdrv40=iso_getdr(p1(0),p1(1),p1(2),p1(3), + # p2(0),p2(1),p2(2),p2(3)) + return + end + + + function iso_getdr(en1,ptx1,pty1,pl1,en2,ptx2,pty2,pl2) + implicit none + real*8 iso_getdr,en1,ptx1,pty1,pl1,en2,ptx2,pty2,pl2,deta,dphi, + # iso_getpseudorap,iso_getdelphi +c + deta=iso_getpseudorap(en1,ptx1,pty1,pl1)- + # iso_getpseudorap(en2,ptx2,pty2,pl2) + dphi=iso_getdelphi(ptx1,pty1,ptx2,pty2) + iso_getdr=sqrt(dphi**2+deta**2) + return + end + + + function iso_getpseudorap(en,ptx,pty,pl) + implicit none + real*8 iso_getpseudorap,en,ptx,pty,pl,tiny,pt,eta,th + parameter (tiny=1.d-5) +c + pt=sqrt(ptx**2+pty**2) + if(pt.lt.tiny.and.abs(pl).lt.tiny)then + eta=sign(1.d0,pl)*1.d8 + else + th=atan2(pt,pl) + eta=-log(tan(th/2.d0)) + endif + iso_getpseudorap=eta + return + end + + + function iso_getdelphi(ptx1,pty1,ptx2,pty2) + implicit none + real*8 iso_getdelphi,ptx1,pty1,ptx2,pty2,tiny,pt1,pt2,tmp + parameter (tiny=1.d-5) +c + pt1=sqrt(ptx1**2+pty1**2) + pt2=sqrt(ptx2**2+pty2**2) + if(pt1.ne.0.d0.and.pt2.ne.0.d0)then + tmp=ptx1*ptx2+pty1*pty2 + tmp=tmp/(pt1*pt2) + if(abs(tmp).gt.1.d0+tiny)then + write(*,*)'Cosine larger than 1' + stop + elseif(abs(tmp).ge.1.d0)then + tmp=sign(1.d0,tmp) + endif + tmp=acos(tmp) + else + tmp=1.d8 + endif + iso_getdelphi=tmp + return + end + + + + DOUBLE PRECISION FUNCTION R2_04(P1,P2) +c************************************************************************ +c Distance in eta,phi between two particles. +c************************************************************************ + IMPLICIT NONE +c +c Arguments +c + double precision p1(0:4),p2(0:4),p1a(0:3),p2a(0:3) + integer i +c +c External +c + double precision eta,DELTA_PHI + external eta,delta_phi +c----- +c Begin Code +c----- + do i=0,3 + p1a(i)=p1(i) + p2a(i)=p2(i) + enddo + R2_04 = (DELTA_PHI(P1a,P2a))**2+(eta(p1a)-eta(p2a))**2 + RETURN + END + + double precision function pt_04(p) +c************************************************************************ +c Returns transverse momentum of particle +c************************************************************************ + IMPLICIT NONE +c +c Arguments +c + double precision p(0:4) +c----- +c Begin Code +c----- + + pt_04 = dsqrt(p(1)**2+p(2)**2) + + return + end + + + double precision function eta_04(p) +c************************************************************************ +c Returns pseudo rapidity of particle +c************************************************************************ + IMPLICIT NONE +c +c Arguments +c + double precision p(0:4),pa(0:3) + integer i +c +c external +c + double precision theta,tp,pi + parameter (pi=3.14159265358979323846264338327950d0) + external theta +c----- +c Begin Code +c----- + do i=0,3 + pa(i)=p(i) + enddo + tp=theta(pa) + if (abs(tp).lt.1d-5) then + eta_04=25d0 + elseif (abs(tp-pi).lt.1d-5) then + eta_04=-25d0 + else + eta_04=-dlog(dtan(theta(pa)/2d0)) + endif + + return + end + + + + DOUBLE PRECISION FUNCTION invm2_04(P1,P2,dsign) +c************************************************************************ +c Invarient mass of 2 particles +c************************************************************************ + IMPLICIT NONE +c +c Arguments +c + double precision p1(0:4),p2(0:4),dsign +c +c Local +c + integer i + double precision ptot(0:3) +c +c External +c + double precision dot + external dot +c----- +c Begin Code +c----- + + do i=0,3 + ptot(i)=p1(i)+dsign*p2(i) + enddo + invm2_04 = dot(ptot,ptot) + RETURN + END + + + DOUBLE PRECISION FUNCTION invm3_04(P1,P2,P3,dsign) +c************************************************************************ +c Invarient mass of 3 particles +c************************************************************************ + IMPLICIT NONE +c +c Arguments +c + double precision p1(0:4),p2(0:4),p3(0:4),dsign +c +c Local +c + integer i + double precision ptot(0:3) +c +c External +c + double precision dot + external dot +c----- +c Begin Code +c----- + + do i=0,3 + ptot(i)=p1(i)+dsign*p2(i)+dsign*p3(i) + enddo + invm3_04 = dot(ptot,ptot) + RETURN + END + + subroutine get_ID_H(IDUP_tmp) + implicit none + include "genps.inc" + include 'nexternal.inc' + integer idup(nexternal,maxproc),mothup(2,nexternal,maxproc), + & icolup(2,nexternal,maxflow),niprocs +c include 'leshouche.inc' + common /c_leshouche_inc/idup,mothup,icolup,niprocs + integer IDUP_tmp(nexternal),i +c + do i=1,nexternal + IDUP_tmp(i)=IDUP(i,1) + enddo +c + return + end + + subroutine get_ID_S(IDUP_tmp) + implicit none + include "genps.inc" + include 'nexternal.inc' + integer idup(nexternal,maxproc) + integer mothup(2,nexternal,maxproc) + integer icolup(2,nexternal,maxflow) + include 'born_leshouche.inc' + integer IDUP_tmp(nexternal),i +c + do i=1,nexternal-1 + IDUP_tmp(i)=IDUP(i,1) + enddo + IDUP_tmp(nexternal)=0 +c + return + end + + + subroutine bias_weight_function(p,ipdg,bias_wgt) +c This is a user-defined function to which to bias the event generation. +c A non-flat distribution will generate events with a certain weight +c inversely proportinal to the bias_wgt. This is particularly useful to +c generate more events (with smaller weight) in tails of distributions. +c It computes the bias_wgt factor from the momenta and multiplies the +c weight that goes into MINT (or vegas) with this factor. Before +c writing out the events (or making the plots), this factor is again +c divided out. A value different from 1 makes that MINT (or vegas) does +c not list the correct cross section, but the cross section can still be +c computed from summing all the weights of the events (and dividing by +c the number of events). Since the weights of the events are no longer +c identical for all events, the statistical uncertainty on this total +c cross section can be much larger than without including the bias. +c +c The 'bias_wgt' should be a IR-safe function of the momenta. +c +c For this to be used, the 'event_norm' option in the run_card should be +c set to +c 'bias' = event_norm +c + implicit none + include 'nexternal.inc' + double precision bias_wgt,p(0:3,nexternal),H_T + integer ipdg(nexternal),i + + bias_wgt=1d0 + +c How to enhance the tails is very process dependent. For example for +c top quark production one could use: +c do i=1,nexternal +c if (ipdg(i).eq.6) then +c bias_wgt=sqrt(p(1,i)**2+p(2,i)**2)**3 +c endif +c enddo +c Or to use H_T^2 one does +c H_T=0d0 +c do i=3,nexternal +c H_T=H_T+sqrt(max(0d0,(p(0,i)+p(3,i))*(p(0,i)-p(3,i)))) +c enddo +c bias_wgt=H_T**2 + return + end + + diff --git a/bin/MadGraph5_aMCatNLO/cards/production/13TeV/SMP_aTGC/CardsTemplates/extramodels.dat b/bin/MadGraph5_aMCatNLO/cards/production/13TeV/SMP_aTGC/CardsTemplates/extramodels.dat new file mode 100644 index 000000000000..59e200c443e9 --- /dev/null +++ b/bin/MadGraph5_aMCatNLO/cards/production/13TeV/SMP_aTGC/CardsTemplates/extramodels.dat @@ -0,0 +1 @@ +EWdim6NLO.tar.gz diff --git a/bin/MadGraph5_aMCatNLO/cards/production/13TeV/SMP_aTGC/CardsTemplates/madspin_card.dat b/bin/MadGraph5_aMCatNLO/cards/production/13TeV/SMP_aTGC/CardsTemplates/madspin_card.dat new file mode 100644 index 000000000000..26edea3d0630 --- /dev/null +++ b/bin/MadGraph5_aMCatNLO/cards/production/13TeV/SMP_aTGC/CardsTemplates/madspin_card.dat @@ -0,0 +1,15 @@ +set ms_dir ./madspingrid + +set Nevents_for_max_weigth 250 # number of events for the estimate of the max. weight +set max_weight_ps_point 400 # number of PS to estimate the maximum for each event +set BW_cut 15 + +set max_running_process 1 + +define q = g u c d s b u~ c~ d~ s~ b~ +# if W decay then redefine q to exclude b quark +#define q = g u c d s u~ c~ d~ s~ + +decay DECAYPROCESS + +launch diff --git a/bin/MadGraph5_aMCatNLO/cards/production/13TeV/SMP_aTGC/CardsTemplates/proc_card.dat b/bin/MadGraph5_aMCatNLO/cards/production/13TeV/SMP_aTGC/CardsTemplates/proc_card.dat new file mode 100644 index 000000000000..a7e49d8e2256 --- /dev/null +++ b/bin/MadGraph5_aMCatNLO/cards/production/13TeV/SMP_aTGC/CardsTemplates/proc_card.dat @@ -0,0 +1,15 @@ +import model EWdim6NLO-no_cmass_cwwwcbcw + +define j = g u c d s u~ c~ d~ s~ +define p = g u c d s u~ c~ d~ s~ + +define ell+ = e+ mu+ ta+ +define ell- = e- mu- ta- +define vl = ve vm vt +define vl~ = ve~ vm~ vt~ + +generate PROCESS1 +add process PROCESS2 + +output DIRNAME -nojpeg + diff --git a/bin/MadGraph5_aMCatNLO/cards/production/13TeV/SMP_aTGC/CardsTemplates/reweight_card.dat b/bin/MadGraph5_aMCatNLO/cards/production/13TeV/SMP_aTGC/CardsTemplates/reweight_card.dat new file mode 100644 index 000000000000..5ac6c0cca73e --- /dev/null +++ b/bin/MadGraph5_aMCatNLO/cards/production/13TeV/SMP_aTGC/CardsTemplates/reweight_card.dat @@ -0,0 +1,754 @@ +change helicity False +change mode LO +change rwgt_dir rwgt + +launch --rwgt_name=cwwwm3p6_cwm4p50_cbm20 + set DIM6 1 -3.6 + set DIM6 2 -4.50 + set DIM6 3 -20 + +launch --rwgt_name=cwwwm3p6_cwm4p50_cbm10 + set DIM6 1 -3.6 + set DIM6 2 -4.50 + set DIM6 3 -10 + +launch --rwgt_name=cwwwm3p6_cwm4p50_cb0 + set DIM6 1 -3.6 + set DIM6 2 -4.50 + set DIM6 3 0 + +launch --rwgt_name=cwwwm3p6_cwm4p50_cb10 + set DIM6 1 -3.6 + set DIM6 2 -4.50 + set DIM6 3 10 + +launch --rwgt_name=cwwwm3p6_cwm4p50_cb20 + set DIM6 1 -3.6 + set DIM6 2 -4.50 + set DIM6 3 20 + +launch --rwgt_name=cwwwm3p6_cwm2p25_cbm20 + set DIM6 1 -3.6 + set DIM6 2 -2.25 + set DIM6 3 -20 + +launch --rwgt_name=cwwwm3p6_cwm2p25_cbm10 + set DIM6 1 -3.6 + set DIM6 2 -2.25 + set DIM6 3 -10 + +launch --rwgt_name=cwwwm3p6_cwm2p25_cb0 + set DIM6 1 -3.6 + set DIM6 2 -2.25 + set DIM6 3 0 + +launch --rwgt_name=cwwwm3p6_cwm2p25_cb10 + set DIM6 1 -3.6 + set DIM6 2 -2.25 + set DIM6 3 10 + +launch --rwgt_name=cwwwm3p6_cwm2p25_cb20 + set DIM6 1 -3.6 + set DIM6 2 -2.25 + set DIM6 3 20 + +launch --rwgt_name=cwwwm3p6_cw0p00_cbm20 + set DIM6 1 -3.6 + set DIM6 2 0.00 + set DIM6 3 -20 + +launch --rwgt_name=cwwwm3p6_cw0p00_cbm10 + set DIM6 1 -3.6 + set DIM6 2 0.00 + set DIM6 3 -10 + +launch --rwgt_name=cwwwm3p6_cw0p00_cb0 + set DIM6 1 -3.6 + set DIM6 2 0.00 + set DIM6 3 0 + +launch --rwgt_name=cwwwm3p6_cw0p00_cb10 + set DIM6 1 -3.6 + set DIM6 2 0.00 + set DIM6 3 10 + +launch --rwgt_name=cwwwm3p6_cw0p00_cb20 + set DIM6 1 -3.6 + set DIM6 2 0.00 + set DIM6 3 20 + +launch --rwgt_name=cwwwm3p6_cw2p25_cbm20 + set DIM6 1 -3.6 + set DIM6 2 2.25 + set DIM6 3 -20 + +launch --rwgt_name=cwwwm3p6_cw2p25_cbm10 + set DIM6 1 -3.6 + set DIM6 2 2.25 + set DIM6 3 -10 + +launch --rwgt_name=cwwwm3p6_cw2p25_cb0 + set DIM6 1 -3.6 + set DIM6 2 2.25 + set DIM6 3 0 + +launch --rwgt_name=cwwwm3p6_cw2p25_cb10 + set DIM6 1 -3.6 + set DIM6 2 2.25 + set DIM6 3 10 + +launch --rwgt_name=cwwwm3p6_cw2p25_cb20 + set DIM6 1 -3.6 + set DIM6 2 2.25 + set DIM6 3 20 + +launch --rwgt_name=cwwwm3p6_cw4p50_cbm20 + set DIM6 1 -3.6 + set DIM6 2 4.50 + set DIM6 3 -20 + +launch --rwgt_name=cwwwm3p6_cw4p50_cbm10 + set DIM6 1 -3.6 + set DIM6 2 4.50 + set DIM6 3 -10 + +launch --rwgt_name=cwwwm3p6_cw4p50_cb0 + set DIM6 1 -3.6 + set DIM6 2 4.50 + set DIM6 3 0 + +launch --rwgt_name=cwwwm3p6_cw4p50_cb10 + set DIM6 1 -3.6 + set DIM6 2 4.50 + set DIM6 3 10 + +launch --rwgt_name=cwwwm3p6_cw4p50_cb20 + set DIM6 1 -3.6 + set DIM6 2 4.50 + set DIM6 3 20 + +launch --rwgt_name=cwwwm1p8_cwm4p50_cbm20 + set DIM6 1 -1.8 + set DIM6 2 -4.50 + set DIM6 3 -20 + +launch --rwgt_name=cwwwm1p8_cwm4p50_cbm10 + set DIM6 1 -1.8 + set DIM6 2 -4.50 + set DIM6 3 -10 + +launch --rwgt_name=cwwwm1p8_cwm4p50_cb0 + set DIM6 1 -1.8 + set DIM6 2 -4.50 + set DIM6 3 0 + +launch --rwgt_name=cwwwm1p8_cwm4p50_cb10 + set DIM6 1 -1.8 + set DIM6 2 -4.50 + set DIM6 3 10 + +launch --rwgt_name=cwwwm1p8_cwm4p50_cb20 + set DIM6 1 -1.8 + set DIM6 2 -4.50 + set DIM6 3 20 + +launch --rwgt_name=cwwwm1p8_cwm2p25_cbm20 + set DIM6 1 -1.8 + set DIM6 2 -2.25 + set DIM6 3 -20 + +launch --rwgt_name=cwwwm1p8_cwm2p25_cbm10 + set DIM6 1 -1.8 + set DIM6 2 -2.25 + set DIM6 3 -10 + +launch --rwgt_name=cwwwm1p8_cwm2p25_cb0 + set DIM6 1 -1.8 + set DIM6 2 -2.25 + set DIM6 3 0 + +launch --rwgt_name=cwwwm1p8_cwm2p25_cb10 + set DIM6 1 -1.8 + set DIM6 2 -2.25 + set DIM6 3 10 + +launch --rwgt_name=cwwwm1p8_cwm2p25_cb20 + set DIM6 1 -1.8 + set DIM6 2 -2.25 + set DIM6 3 20 + +launch --rwgt_name=cwwwm1p8_cw0p00_cbm20 + set DIM6 1 -1.8 + set DIM6 2 0.00 + set DIM6 3 -20 + +launch --rwgt_name=cwwwm1p8_cw0p00_cbm10 + set DIM6 1 -1.8 + set DIM6 2 0.00 + set DIM6 3 -10 + +launch --rwgt_name=cwwwm1p8_cw0p00_cb0 + set DIM6 1 -1.8 + set DIM6 2 0.00 + set DIM6 3 0 + +launch --rwgt_name=cwwwm1p8_cw0p00_cb10 + set DIM6 1 -1.8 + set DIM6 2 0.00 + set DIM6 3 10 + +launch --rwgt_name=cwwwm1p8_cw0p00_cb20 + set DIM6 1 -1.8 + set DIM6 2 0.00 + set DIM6 3 20 + +launch --rwgt_name=cwwwm1p8_cw2p25_cbm20 + set DIM6 1 -1.8 + set DIM6 2 2.25 + set DIM6 3 -20 + +launch --rwgt_name=cwwwm1p8_cw2p25_cbm10 + set DIM6 1 -1.8 + set DIM6 2 2.25 + set DIM6 3 -10 + +launch --rwgt_name=cwwwm1p8_cw2p25_cb0 + set DIM6 1 -1.8 + set DIM6 2 2.25 + set DIM6 3 0 + +launch --rwgt_name=cwwwm1p8_cw2p25_cb10 + set DIM6 1 -1.8 + set DIM6 2 2.25 + set DIM6 3 10 + +launch --rwgt_name=cwwwm1p8_cw2p25_cb20 + set DIM6 1 -1.8 + set DIM6 2 2.25 + set DIM6 3 20 + +launch --rwgt_name=cwwwm1p8_cw4p50_cbm20 + set DIM6 1 -1.8 + set DIM6 2 4.50 + set DIM6 3 -20 + +launch --rwgt_name=cwwwm1p8_cw4p50_cbm10 + set DIM6 1 -1.8 + set DIM6 2 4.50 + set DIM6 3 -10 + +launch --rwgt_name=cwwwm1p8_cw4p50_cb0 + set DIM6 1 -1.8 + set DIM6 2 4.50 + set DIM6 3 0 + +launch --rwgt_name=cwwwm1p8_cw4p50_cb10 + set DIM6 1 -1.8 + set DIM6 2 4.50 + set DIM6 3 10 + +launch --rwgt_name=cwwwm1p8_cw4p50_cb20 + set DIM6 1 -1.8 + set DIM6 2 4.50 + set DIM6 3 20 + +launch --rwgt_name=cwww0p0_cwm4p50_cbm20 + set DIM6 1 0.0 + set DIM6 2 -4.50 + set DIM6 3 -20 + +launch --rwgt_name=cwww0p0_cwm4p50_cbm10 + set DIM6 1 0.0 + set DIM6 2 -4.50 + set DIM6 3 -10 + +launch --rwgt_name=cwww0p0_cwm4p50_cb0 + set DIM6 1 0.0 + set DIM6 2 -4.50 + set DIM6 3 0 + +launch --rwgt_name=cwww0p0_cwm4p50_cb10 + set DIM6 1 0.0 + set DIM6 2 -4.50 + set DIM6 3 10 + +launch --rwgt_name=cwww0p0_cwm4p50_cb20 + set DIM6 1 0.0 + set DIM6 2 -4.50 + set DIM6 3 20 + +launch --rwgt_name=cwww0p0_cwm2p25_cbm20 + set DIM6 1 0.0 + set DIM6 2 -2.25 + set DIM6 3 -20 + +launch --rwgt_name=cwww0p0_cwm2p25_cbm10 + set DIM6 1 0.0 + set DIM6 2 -2.25 + set DIM6 3 -10 + +launch --rwgt_name=cwww0p0_cwm2p25_cb0 + set DIM6 1 0.0 + set DIM6 2 -2.25 + set DIM6 3 0 + +launch --rwgt_name=cwww0p0_cwm2p25_cb10 + set DIM6 1 0.0 + set DIM6 2 -2.25 + set DIM6 3 10 + +launch --rwgt_name=cwww0p0_cwm2p25_cb20 + set DIM6 1 0.0 + set DIM6 2 -2.25 + set DIM6 3 20 + +launch --rwgt_name=cwww0p0_cw0p00_cbm20 + set DIM6 1 0.0 + set DIM6 2 0.00 + set DIM6 3 -20 + +launch --rwgt_name=cwww0p0_cw0p00_cbm10 + set DIM6 1 0.0 + set DIM6 2 0.00 + set DIM6 3 -10 + +launch --rwgt_name=cwww0p0_cw0p00_cb0 + set DIM6 1 0.0 + set DIM6 2 0.00 + set DIM6 3 0 + +launch --rwgt_name=cwww0p0_cw0p00_cb10 + set DIM6 1 0.0 + set DIM6 2 0.00 + set DIM6 3 10 + +launch --rwgt_name=cwww0p0_cw0p00_cb20 + set DIM6 1 0.0 + set DIM6 2 0.00 + set DIM6 3 20 + +launch --rwgt_name=cwww0p0_cw2p25_cbm20 + set DIM6 1 0.0 + set DIM6 2 2.25 + set DIM6 3 -20 + +launch --rwgt_name=cwww0p0_cw2p25_cbm10 + set DIM6 1 0.0 + set DIM6 2 2.25 + set DIM6 3 -10 + +launch --rwgt_name=cwww0p0_cw2p25_cb0 + set DIM6 1 0.0 + set DIM6 2 2.25 + set DIM6 3 0 + +launch --rwgt_name=cwww0p0_cw2p25_cb10 + set DIM6 1 0.0 + set DIM6 2 2.25 + set DIM6 3 10 + +launch --rwgt_name=cwww0p0_cw2p25_cb20 + set DIM6 1 0.0 + set DIM6 2 2.25 + set DIM6 3 20 + +launch --rwgt_name=cwww0p0_cw4p50_cbm20 + set DIM6 1 0.0 + set DIM6 2 4.50 + set DIM6 3 -20 + +launch --rwgt_name=cwww0p0_cw4p50_cbm10 + set DIM6 1 0.0 + set DIM6 2 4.50 + set DIM6 3 -10 + +launch --rwgt_name=cwww0p0_cw4p50_cb0 + set DIM6 1 0.0 + set DIM6 2 4.50 + set DIM6 3 0 + +launch --rwgt_name=cwww0p0_cw4p50_cb10 + set DIM6 1 0.0 + set DIM6 2 4.50 + set DIM6 3 10 + +launch --rwgt_name=cwww0p0_cw4p50_cb20 + set DIM6 1 0.0 + set DIM6 2 4.50 + set DIM6 3 20 + +launch --rwgt_name=cwww1p8_cwm4p50_cbm20 + set DIM6 1 1.8 + set DIM6 2 -4.50 + set DIM6 3 -20 + +launch --rwgt_name=cwww1p8_cwm4p50_cbm10 + set DIM6 1 1.8 + set DIM6 2 -4.50 + set DIM6 3 -10 + +launch --rwgt_name=cwww1p8_cwm4p50_cb0 + set DIM6 1 1.8 + set DIM6 2 -4.50 + set DIM6 3 0 + +launch --rwgt_name=cwww1p8_cwm4p50_cb10 + set DIM6 1 1.8 + set DIM6 2 -4.50 + set DIM6 3 10 + +launch --rwgt_name=cwww1p8_cwm4p50_cb20 + set DIM6 1 1.8 + set DIM6 2 -4.50 + set DIM6 3 20 + +launch --rwgt_name=cwww1p8_cwm2p25_cbm20 + set DIM6 1 1.8 + set DIM6 2 -2.25 + set DIM6 3 -20 + +launch --rwgt_name=cwww1p8_cwm2p25_cbm10 + set DIM6 1 1.8 + set DIM6 2 -2.25 + set DIM6 3 -10 + +launch --rwgt_name=cwww1p8_cwm2p25_cb0 + set DIM6 1 1.8 + set DIM6 2 -2.25 + set DIM6 3 0 + +launch --rwgt_name=cwww1p8_cwm2p25_cb10 + set DIM6 1 1.8 + set DIM6 2 -2.25 + set DIM6 3 10 + +launch --rwgt_name=cwww1p8_cwm2p25_cb20 + set DIM6 1 1.8 + set DIM6 2 -2.25 + set DIM6 3 20 + +launch --rwgt_name=cwww1p8_cw0p00_cbm20 + set DIM6 1 1.8 + set DIM6 2 0.00 + set DIM6 3 -20 + +launch --rwgt_name=cwww1p8_cw0p00_cbm10 + set DIM6 1 1.8 + set DIM6 2 0.00 + set DIM6 3 -10 + +launch --rwgt_name=cwww1p8_cw0p00_cb0 + set DIM6 1 1.8 + set DIM6 2 0.00 + set DIM6 3 0 + +launch --rwgt_name=cwww1p8_cw0p00_cb10 + set DIM6 1 1.8 + set DIM6 2 0.00 + set DIM6 3 10 + +launch --rwgt_name=cwww1p8_cw0p00_cb20 + set DIM6 1 1.8 + set DIM6 2 0.00 + set DIM6 3 20 + +launch --rwgt_name=cwww1p8_cw2p25_cbm20 + set DIM6 1 1.8 + set DIM6 2 2.25 + set DIM6 3 -20 + +launch --rwgt_name=cwww1p8_cw2p25_cbm10 + set DIM6 1 1.8 + set DIM6 2 2.25 + set DIM6 3 -10 + +launch --rwgt_name=cwww1p8_cw2p25_cb0 + set DIM6 1 1.8 + set DIM6 2 2.25 + set DIM6 3 0 + +launch --rwgt_name=cwww1p8_cw2p25_cb10 + set DIM6 1 1.8 + set DIM6 2 2.25 + set DIM6 3 10 + +launch --rwgt_name=cwww1p8_cw2p25_cb20 + set DIM6 1 1.8 + set DIM6 2 2.25 + set DIM6 3 20 + +launch --rwgt_name=cwww1p8_cw4p50_cbm20 + set DIM6 1 1.8 + set DIM6 2 4.50 + set DIM6 3 -20 + +launch --rwgt_name=cwww1p8_cw4p50_cbm10 + set DIM6 1 1.8 + set DIM6 2 4.50 + set DIM6 3 -10 + +launch --rwgt_name=cwww1p8_cw4p50_cb0 + set DIM6 1 1.8 + set DIM6 2 4.50 + set DIM6 3 0 + +launch --rwgt_name=cwww1p8_cw4p50_cb10 + set DIM6 1 1.8 + set DIM6 2 4.50 + set DIM6 3 10 + +launch --rwgt_name=cwww1p8_cw4p50_cb20 + set DIM6 1 1.8 + set DIM6 2 4.50 + set DIM6 3 20 + +launch --rwgt_name=cwww3p6_cwm4p50_cbm20 + set DIM6 1 3.6 + set DIM6 2 -4.50 + set DIM6 3 -20 + +launch --rwgt_name=cwww3p6_cwm4p50_cbm10 + set DIM6 1 3.6 + set DIM6 2 -4.50 + set DIM6 3 -10 + +launch --rwgt_name=cwww3p6_cwm4p50_cb0 + set DIM6 1 3.6 + set DIM6 2 -4.50 + set DIM6 3 0 + +launch --rwgt_name=cwww3p6_cwm4p50_cb10 + set DIM6 1 3.6 + set DIM6 2 -4.50 + set DIM6 3 10 + +launch --rwgt_name=cwww3p6_cwm4p50_cb20 + set DIM6 1 3.6 + set DIM6 2 -4.50 + set DIM6 3 20 + +launch --rwgt_name=cwww3p6_cwm2p25_cbm20 + set DIM6 1 3.6 + set DIM6 2 -2.25 + set DIM6 3 -20 + +launch --rwgt_name=cwww3p6_cwm2p25_cbm10 + set DIM6 1 3.6 + set DIM6 2 -2.25 + set DIM6 3 -10 + +launch --rwgt_name=cwww3p6_cwm2p25_cb0 + set DIM6 1 3.6 + set DIM6 2 -2.25 + set DIM6 3 0 + +launch --rwgt_name=cwww3p6_cwm2p25_cb10 + set DIM6 1 3.6 + set DIM6 2 -2.25 + set DIM6 3 10 + +launch --rwgt_name=cwww3p6_cwm2p25_cb20 + set DIM6 1 3.6 + set DIM6 2 -2.25 + set DIM6 3 20 + +launch --rwgt_name=cwww3p6_cw0p00_cbm20 + set DIM6 1 3.6 + set DIM6 2 0.00 + set DIM6 3 -20 + +launch --rwgt_name=cwww3p6_cw0p00_cbm10 + set DIM6 1 3.6 + set DIM6 2 0.00 + set DIM6 3 -10 + +launch --rwgt_name=cwww3p6_cw0p00_cb0 + set DIM6 1 3.6 + set DIM6 2 0.00 + set DIM6 3 0 + +launch --rwgt_name=cwww3p6_cw0p00_cb10 + set DIM6 1 3.6 + set DIM6 2 0.00 + set DIM6 3 10 + +launch --rwgt_name=cwww3p6_cw0p00_cb20 + set DIM6 1 3.6 + set DIM6 2 0.00 + set DIM6 3 20 + +launch --rwgt_name=cwww3p6_cw2p25_cbm20 + set DIM6 1 3.6 + set DIM6 2 2.25 + set DIM6 3 -20 + +launch --rwgt_name=cwww3p6_cw2p25_cbm10 + set DIM6 1 3.6 + set DIM6 2 2.25 + set DIM6 3 -10 + +launch --rwgt_name=cwww3p6_cw2p25_cb0 + set DIM6 1 3.6 + set DIM6 2 2.25 + set DIM6 3 0 + +launch --rwgt_name=cwww3p6_cw2p25_cb10 + set DIM6 1 3.6 + set DIM6 2 2.25 + set DIM6 3 10 + +launch --rwgt_name=cwww3p6_cw2p25_cb20 + set DIM6 1 3.6 + set DIM6 2 2.25 + set DIM6 3 20 + +launch --rwgt_name=cwww3p6_cw4p50_cbm20 + set DIM6 1 3.6 + set DIM6 2 4.50 + set DIM6 3 -20 + +launch --rwgt_name=cwww3p6_cw4p50_cbm10 + set DIM6 1 3.6 + set DIM6 2 4.50 + set DIM6 3 -10 + +launch --rwgt_name=cwww3p6_cw4p50_cb0 + set DIM6 1 3.6 + set DIM6 2 4.50 + set DIM6 3 0 + +launch --rwgt_name=cwww3p6_cw4p50_cb10 + set DIM6 1 3.6 + set DIM6 2 4.50 + set DIM6 3 10 + +launch --rwgt_name=cwww3p6_cw4p50_cb20 + set DIM6 1 3.6 + set DIM6 2 4.50 + set DIM6 3 20 + +launch --rwgt_name=cwww5p4_cwm4p50_cbm20 + set DIM6 1 5.4 + set DIM6 2 -4.50 + set DIM6 3 -20 + +launch --rwgt_name=cwww5p4_cwm4p50_cbm10 + set DIM6 1 5.4 + set DIM6 2 -4.50 + set DIM6 3 -10 + +launch --rwgt_name=cwww5p4_cwm4p50_cb0 + set DIM6 1 5.4 + set DIM6 2 -4.50 + set DIM6 3 0 + +launch --rwgt_name=cwww5p4_cwm4p50_cb10 + set DIM6 1 5.4 + set DIM6 2 -4.50 + set DIM6 3 10 + +launch --rwgt_name=cwww5p4_cwm4p50_cb20 + set DIM6 1 5.4 + set DIM6 2 -4.50 + set DIM6 3 20 + +launch --rwgt_name=cwww5p4_cwm2p25_cbm20 + set DIM6 1 5.4 + set DIM6 2 -2.25 + set DIM6 3 -20 + +launch --rwgt_name=cwww5p4_cwm2p25_cbm10 + set DIM6 1 5.4 + set DIM6 2 -2.25 + set DIM6 3 -10 + +launch --rwgt_name=cwww5p4_cwm2p25_cb0 + set DIM6 1 5.4 + set DIM6 2 -2.25 + set DIM6 3 0 + +launch --rwgt_name=cwww5p4_cwm2p25_cb10 + set DIM6 1 5.4 + set DIM6 2 -2.25 + set DIM6 3 10 + +launch --rwgt_name=cwww5p4_cwm2p25_cb20 + set DIM6 1 5.4 + set DIM6 2 -2.25 + set DIM6 3 20 + +launch --rwgt_name=cwww5p4_cw0p00_cbm20 + set DIM6 1 5.4 + set DIM6 2 0.00 + set DIM6 3 -20 + +launch --rwgt_name=cwww5p4_cw0p00_cbm10 + set DIM6 1 5.4 + set DIM6 2 0.00 + set DIM6 3 -10 + +launch --rwgt_name=cwww5p4_cw0p00_cb0 + set DIM6 1 5.4 + set DIM6 2 0.00 + set DIM6 3 0 + +launch --rwgt_name=cwww5p4_cw0p00_cb10 + set DIM6 1 5.4 + set DIM6 2 0.00 + set DIM6 3 10 + +launch --rwgt_name=cwww5p4_cw0p00_cb20 + set DIM6 1 5.4 + set DIM6 2 0.00 + set DIM6 3 20 + +launch --rwgt_name=cwww5p4_cw2p25_cbm20 + set DIM6 1 5.4 + set DIM6 2 2.25 + set DIM6 3 -20 + +launch --rwgt_name=cwww5p4_cw2p25_cbm10 + set DIM6 1 5.4 + set DIM6 2 2.25 + set DIM6 3 -10 + +launch --rwgt_name=cwww5p4_cw2p25_cb0 + set DIM6 1 5.4 + set DIM6 2 2.25 + set DIM6 3 0 + +launch --rwgt_name=cwww5p4_cw2p25_cb10 + set DIM6 1 5.4 + set DIM6 2 2.25 + set DIM6 3 10 + +launch --rwgt_name=cwww5p4_cw2p25_cb20 + set DIM6 1 5.4 + set DIM6 2 2.25 + set DIM6 3 20 + +launch --rwgt_name=cwww5p4_cw4p50_cbm20 + set DIM6 1 5.4 + set DIM6 2 4.50 + set DIM6 3 -20 + +launch --rwgt_name=cwww5p4_cw4p50_cbm10 + set DIM6 1 5.4 + set DIM6 2 4.50 + set DIM6 3 -10 + +launch --rwgt_name=cwww5p4_cw4p50_cb0 + set DIM6 1 5.4 + set DIM6 2 4.50 + set DIM6 3 0 + +launch --rwgt_name=cwww5p4_cw4p50_cb10 + set DIM6 1 5.4 + set DIM6 2 4.50 + set DIM6 3 10 + +launch --rwgt_name=cwww5p4_cw4p50_cb20 + set DIM6 1 5.4 + set DIM6 2 4.50 + set DIM6 3 20 +################################################## \ No newline at end of file diff --git a/bin/MadGraph5_aMCatNLO/cards/production/13TeV/SMP_aTGC/CardsTemplates/run_card.dat b/bin/MadGraph5_aMCatNLO/cards/production/13TeV/SMP_aTGC/CardsTemplates/run_card.dat new file mode 100644 index 000000000000..c253007859d6 --- /dev/null +++ b/bin/MadGraph5_aMCatNLO/cards/production/13TeV/SMP_aTGC/CardsTemplates/run_card.dat @@ -0,0 +1,170 @@ +#*********************************************************************** +# MadGraph5_aMC@NLO * +# * +# run_card.dat aMC@NLO * +# * +# This file is used to set the parameters of the run. * +# * +# Some notation/conventions: * +# * +# Lines starting with a hash (#) are info or comments * +# * +# mind the format: value = variable ! comment * +# * +# Some of the values of variables can be list. These can either be * +# comma or space separated. * +#*********************************************************************** +# +#******************* +# Running parameters +#******************* +# +#*********************************************************************** +# Tag name for the run (one word) * +#*********************************************************************** + tag_1 = run_tag ! name of the run +#*********************************************************************** +# Number of LHE events (and their normalization) and the required * +# (relative) accuracy on the Xsec. * +# These values are ignored for fixed order runs * +#*********************************************************************** + 1000 = nevents ! Number of unweighted events requested + 0.001 = req_acc ! Required accuracy (-1=auto determined from nevents) + 100 = nevt_job! Max number of events per job in event generation. + ! (-1= no split). +#*********************************************************************** +# Normalize the weights of LHE events such that they sum or average to * +# the total cross section * +#*********************************************************************** + average = event_norm ! average or sum +#*********************************************************************** +# Number of points per itegration channel (ignored for aMC@NLO runs) * +#*********************************************************************** + 0.01 = req_acc_FO ! Required accuracy (-1=ignored, and use the + ! number of points and iter. below) +# These numbers are ignored except if req_acc_FO is equal to -1 + 5000 = npoints_FO_grid ! number of points to setup grids + 4 = niters_FO_grid ! number of iter. to setup grids + 10000 = npoints_FO ! number of points to compute Xsec + 6 = niters_FO ! number of iter. to compute Xsec +#*********************************************************************** +# Random number seed * +#*********************************************************************** + 0 = iseed ! rnd seed (0=assigned automatically=default)) +#*********************************************************************** +# Collider type and energy * +#*********************************************************************** + 1 = lpp1 ! beam 1 type (0 = no PDF) + 1 = lpp2 ! beam 2 type (0 = no PDF) + 6500.0 = ebeam1 ! beam 1 energy in GeV + 6500.0 = ebeam2 ! beam 2 energy in GeV +#*********************************************************************** +# PDF choice: this automatically fixes also alpha_s(MZ) and its evol. * +#*********************************************************************** + lhapdf = pdlabel ! PDF set +# 292000 = lhaid ! If pdlabel=lhapdf, this is the lhapdf number. Only +# ! numbers for central PDF sets are allowed. Can be a list; +# ! PDF sets beyond the first are included via reweighting. + $DEFAULT_PDF_SETS = lhaid + $DEFAULT_PDF_MEMBERS = reweight_PDF +#*********************************************************************** +# Include the NLO Monte Carlo subtr. terms for the following parton * +# shower (HERWIG6 | HERWIGPP | PYTHIA6Q | PYTHIA6PT | PYTHIA8) * +# WARNING: PYTHIA6PT works only for processes without FSR!!!! * +#*********************************************************************** + PYTHIA8 = parton_shower + 1.0 = shower_scale_factor ! multiply default shower starting + ! scale by this factor +#*********************************************************************** +# Renormalization and factorization scales * +# (Default functional form for the non-fixed scales is the sum of * +# the transverse masses divided by two of all final state particles * +# and partons. This can be changed in SubProcesses/set_scales.f or via * +# dynamical_scale_choice option) * +#*********************************************************************** + False = fixed_ren_scale ! if .true. use fixed ren scale + False = fixed_fac_scale ! if .true. use fixed fac scale + 91.118 = muR_ref_fixed ! fixed ren reference scale + 91.118 = muF_ref_fixed ! fixed fact reference scale + -1 = dynamical_scale_choice ! Choose one (or more) of the predefined + ! dynamical choices. Can be a list; scale choices beyond the + ! first are included via reweighting + 1.0 = muR_over_ref ! ratio of current muR over reference muR + 1.0 = muF_over_ref ! ratio of current muF over reference muF +#*********************************************************************** +# Reweight variables for scale dependence and PDF uncertainty * +#*********************************************************************** + 1.0, 2.0, 0.5 = rw_rscale ! muR factors to be included by reweighting + 1.0, 2.0, 0.5 = rw_fscale ! muF factors to be included by reweighting + True = reweight_scale ! Reweight to get scale variation using the + ! rw_rscale and rw_fscale factors. Should be a list of + ! booleans of equal length to dynamical_scale_choice to + ! specify for which choice to include scale dependence. + True = reweight_PDF ! Reweight to get PDF uncertainty. Should be a + ! list booleans of equal length to lhaid to specify for + ! which PDF set to include the uncertainties. +#*********************************************************************** +# Store reweight information in the LHE file for off-line model- * +# parameter reweighting at NLO+PS accuracy * +#*********************************************************************** + False = store_rwgt_info ! Store info for reweighting in LHE file +#*********************************************************************** +# ickkw parameter: * +# 0: No merging * +# 3: FxFx Merging - WARNING! Applies merging only at the hard-event * +# level. After showering an MLM-type merging should be applied as * +# well. See http://amcatnlo.cern.ch/FxFx_merging.htm for details. * +# 4: UNLOPS merging (with pythia8 only). No interface from within * +# MG5_aMC available, but available in Pythia8. * +# -1: NNLL+NLO jet-veto computation. See arxiv:1412.8408 [hep-ph]. * +#*********************************************************************** + 3 = ickkw +#*********************************************************************** +# +#*********************************************************************** +# BW cutoff (M+/-bwcutoff*Gamma). Determines which resonances are * +# written in the LHE event file * +#*********************************************************************** + 15.0 = bwcutoff +#*********************************************************************** +# Cuts on the jets. Jet clustering is performed by FastJet. * +# - When matching to a parton shower, these generation cuts should be * +# considerably softer than the analysis cuts. * +# - More specific cuts can be specified in SubProcesses/cuts.f * +#*********************************************************************** + 1.0 = jetalgo ! FastJet jet algorithm (1=kT, 0=C/A, -1=anti-kT) + 1.0 = jetradius ! The radius parameter for the jet algorithm + 20.0 = ptj ! Min jet transverse momentum + -1.0 = etaj ! Max jet abs(pseudo-rap) (a value .lt.0 means no cut) +#*********************************************************************** +# Cuts on the charged leptons (e+, e-, mu+, mu-, tau+ and tau-) * +# More specific cuts can be specified in SubProcesses/cuts.f * +#*********************************************************************** + 20.0 = ptl ! Min lepton transverse momentum + 3.0 = etal ! Max lepton abs(pseudo-rap) (a value .lt.0 means no cut) + 0.0 = drll ! Min distance between opposite sign lepton pairs + 0.0 = drll_sf ! Min distance between opp. sign same-flavor lepton pairs + 0.0 = mll ! Min inv. mass of all opposite sign lepton pairs + 4.0 = mll_sf ! Min inv. mass of all opp. sign same-flavor lepton pairs +#*********************************************************************** +# Photon-isolation cuts, according to hep-ph/9801442. When ptgmin=0, * +# all the other parameters are ignored. * +# More specific cuts can be specified in SubProcesses/cuts.f * +#*********************************************************************** + 20.0 = ptgmin ! Min photon transverse momentum + -1.0 = etagamma ! Max photon abs(pseudo-rap) + 0.4 = R0gamma ! Radius of isolation code + 1.0 = xn ! n parameter of eq.(3.4) in hep-ph/9801442 + 1.0 = epsgamma ! epsilon_gamma parameter of eq.(3.4) in hep-ph/9801442 + True = isoEM ! isolate photons from EM energy (photons and leptons) +#*********************************************************************** +# For aMCfast+APPLGRID use in PDF fitting (http://amcfast.hepforge.org)* +#*********************************************************************** + 0 = iappl ! aMCfast switch (0=OFF, 1=prepare grids, 2=fill grids) +#*********************************************************************** +#*********************************************************************** +# Maximal PDG code for quark to be considered a jet when applying cuts.* +# At least all massless quarks of the model should be included here. * +#*********************************************************************** + 4 = maxjetflavor +#*********************************************************************** diff --git a/bin/MadGraph5_aMCatNLO/cards/production/13TeV/SMP_aTGC/generate_cards.py b/bin/MadGraph5_aMCatNLO/cards/production/13TeV/SMP_aTGC/generate_cards.py new file mode 100644 index 000000000000..d2fce83c6373 --- /dev/null +++ b/bin/MadGraph5_aMCatNLO/cards/production/13TeV/SMP_aTGC/generate_cards.py @@ -0,0 +1,116 @@ +import os +from shutil import copyfile + +# Configuration +template_dir = "CardsTemplates" +output_base_dir = "GeneratedCards" + +sample_names = ["WpWmToLpNujj", "WmWpToLmNujj", "WpZToLpNujj", "WmZToLmNujj", "ZWpToLpLmjj", "ZWmToLpLmjj"] +mWW_window = ["150to600", "600to800", "800toInf"] +which_boson = ["W", "Z"] + +processes = { + "WpWmToLpNujj": ["p p > ell+ vl w- $$ t t~ H QED=3 [QCD] @0", "p p > ell+ vl w- j $$ t t~ H QED=3 [QCD] @1"], + "WmWpToLmNujj": ["p p > ell- vl~ w+ $$ t t~ H QED=3 [QCD] @0", "p p > ell- vl~ w+ j $$ t t~ H QED=3 [QCD] @1"], + "WpZToLpNujj": ["p p > ell+ vl z $$ t t~ H QED=3 [QCD] @0", "p p > ell+ vl z j $$ t t~ H QED=3 [QCD] @1"], + "WmZToLmNujj": ["p p > ell- vl~ z $$ t t~ H QED=3 [QCD] @0", "p p > ell- vl~ z j $$ t t~ H QED=3 [QCD] @1"], + "ZWpToLpLmjj": ["p p > ell+ ell- w+ $$ t t~ H QED=3 [QCD] @0", "p p > ell+ ell- w+ j $$ t t~ H QED=3 [QCD] @1"], + "ZWmToLpLmjj": ["p p > ell+ ell- w- $$ t t~ H QED=3 [QCD] @0", "p p > ell+ ell- w- j $$ t t~ H QED=3 [QCD] @1"], +} + +DecayProcess = { + "WpWmToLpNujj": "w- > q q", + "WmWpToLmNujj": "w+ > q q", + "WpZToLpNujj": "z > q q", + "WmZToLmNujj": "z > q q", + "ZWpToLpLmjj": "w+ > q q", + "ZWmToLpLmjj": "w- > q q", +} + + +# Ensure the output base directory exists +os.makedirs(output_base_dir, exist_ok=True) + +# Function to replace placeholders in a file +def replace_placeholders(template_file, output_file, replacements): + with open(template_file, 'r') as file: + content = file.read() + for placeholder, replacement in replacements.items(): + content = content.replace(placeholder, replacement) + with open(output_file, 'w') as file: + file.write(content) + +# Function to determine `cuts.f` logic +def get_cuts_logic(mWW): + if mWW == "150to600": + return {"mWVCUTLOW": "lt.150", "mWVCUTHIGH": "gt.600"} + elif mWW == "600to800": + return {"mWVCUTLOW": "le.600", "mWVCUTHIGH": "gt.800"} + elif mWW == "800toInf": + return {"mWVCUTLOW": "le.800", "mWVCUTHIGH": None} # No upper cut + else: + raise ValueError(f"Invalid mWW window: {mWW}") + +# Generate directories and files +for sample in sample_names: + for mWW in mWW_window: + directory_name = f"{sample}_01j_aTGC_pT{'W' if 'Wm' in sample or 'Wp' in sample else 'Z'}-150toInf_mWV-{mWW}_4f_NLO_FXFX" + directory_path = os.path.join(output_base_dir, directory_name) + os.makedirs(directory_path, exist_ok=True) + + # Copy and process each template file + for file_name in os.listdir(template_dir): + template_file = os.path.join(template_dir, file_name) + output_file = os.path.join(directory_path, f'{directory_name}_{file_name}') + + if file_name == "proc_card.dat": + # Process proc_card.dat + replacements = { + "PROCESS1": processes[sample][0], + "PROCESS2": processes[sample][1], + "DIRNAME": directory_name, + } + replace_placeholders(template_file, output_file, replacements) + elif file_name == "madspin_card.dat": + # Process madspin_card.dat + replacements = { + "DECAYPROCESS": DecayProcess[sample], + } + replace_placeholders(template_file, output_file, replacements) + elif file_name == "cuts.f": + # # Process cuts.f + # low, high = (mWW.split("to") + [None])[:2] + + # replacements = { + # "mWVCUTLOW": low, + # "mWVCUTHIGH": high, + # } + # remove_high_cut = "Inf" in mWW + # replace_placeholders(template_file, output_file, replacements, remove_high_cut=remove_high_cut) + # Process cuts.f + cuts_logic = get_cuts_logic(mWW) + if cuts_logic["mWVCUTHIGH"] is None: + # Remove the high cut + with open(template_file, 'r') as file: + lines = file.readlines() + # Remove the line with "mWVCUTHIGH" and the 3 lines above it + for i in range(len(lines)): + if "mWVCUTHIGH" in lines[i]: + lines = lines[:i-3] + lines[i+1:] + break + with open(output_file, 'w') as file: + file.writelines(lines) + # Replace the low cut + with open(output_file, 'r') as file: + content = file.read().replace("mWVCUTLOW", cuts_logic["mWVCUTLOW"]) + with open(output_file, 'w') as file: + file.write(content) + else: + # Replace both cuts + replace_placeholders(template_file, output_file, cuts_logic) + + else: + # Copy other files as-is + copyfile(template_file, output_file) + +print(f"All directories and files have been generated in '{output_base_dir}'.") From ca8b7ff1d264dc054c8ce42b4b4a57436d7d210c Mon Sep 17 00:00:00 2001 From: Ram Krishna Sharma Date: Thu, 28 Nov 2024 12:49:27 +0100 Subject: [PATCH 2/4] - Fix the decay process and the quark definition while decay - Added README --- .../SMP_aTGC/CardsTemplates/madspin_card.dat | 4 +- .../cards/production/13TeV/SMP_aTGC/README.md | 52 +++++++++++++++++++ .../13TeV/SMP_aTGC/generate_cards.py | 12 +++++ 3 files changed, 65 insertions(+), 3 deletions(-) create mode 100644 bin/MadGraph5_aMCatNLO/cards/production/13TeV/SMP_aTGC/README.md diff --git a/bin/MadGraph5_aMCatNLO/cards/production/13TeV/SMP_aTGC/CardsTemplates/madspin_card.dat b/bin/MadGraph5_aMCatNLO/cards/production/13TeV/SMP_aTGC/CardsTemplates/madspin_card.dat index 26edea3d0630..c65df6a6375d 100644 --- a/bin/MadGraph5_aMCatNLO/cards/production/13TeV/SMP_aTGC/CardsTemplates/madspin_card.dat +++ b/bin/MadGraph5_aMCatNLO/cards/production/13TeV/SMP_aTGC/CardsTemplates/madspin_card.dat @@ -6,9 +6,7 @@ set BW_cut 15 set max_running_process 1 -define q = g u c d s b u~ c~ d~ s~ b~ -# if W decay then redefine q to exclude b quark -#define q = g u c d s u~ c~ d~ s~ +DEFINEQUARKS decay DECAYPROCESS diff --git a/bin/MadGraph5_aMCatNLO/cards/production/13TeV/SMP_aTGC/README.md b/bin/MadGraph5_aMCatNLO/cards/production/13TeV/SMP_aTGC/README.md new file mode 100644 index 000000000000..1780edb2de45 --- /dev/null +++ b/bin/MadGraph5_aMCatNLO/cards/production/13TeV/SMP_aTGC/README.md @@ -0,0 +1,52 @@ +These cards are for the SMP aTGC analysis with full run-2 dataset. The process that we considered is WV semileptonic decay. + +To get the cards first setup the environment and run the command + +```bash +. /cvmfs/sft.cern.ch/lcg/views/LCG_106/x86_64-el9-gcc13-opt/setup.sh +python generate_cards.py +``` + +Few important points to note: +1. The template cards are in the `CardsTemplates` directory. +2. The cards: `run_card.dat`, `customizecards.dat`, `extramodels.dat`, `FKS_params.dat`, `reweight_card.dat` and `run_card.dat` remains same for all the processes. +3. The `proc_card.dat` is different for each process. The processs names are defined in the dict that we are using to generate the cards. + + ```python + processes = { + "WpWmToLpNujj": ["p p > ell+ vl w- $$ t t~ H QED=3 [QCD] @0", "p p > ell+ vl w- j $$ t t~ H QED=3 [QCD] @1"], + "WmWpToLmNujj": ["p p > ell- vl~ w+ $$ t t~ H QED=3 [QCD] @0", "p p > ell- vl~ w+ j $$ t t~ H QED=3 [QCD] @1"], + "WpZToLpNujj": ["p p > ell+ vl z $$ t t~ H QED=3 [QCD] @0", "p p > ell+ vl z j $$ t t~ H QED=3 [QCD] @1"], + "WmZToLmNujj": ["p p > ell- vl~ z $$ t t~ H QED=3 [QCD] @0", "p p > ell- vl~ z j $$ t t~ H QED=3 [QCD] @1"], + "ZWpToLpLmjj": ["p p > ell+ ell- w+ $$ t t~ H QED=3 [QCD] @0", "p p > ell+ ell- w+ j $$ t t~ H QED=3 [QCD] @1"], + "ZWmToLpLmjj": ["p p > ell+ ell- w- $$ t t~ H QED=3 [QCD] @0", "p p > ell+ ell- w- j $$ t t~ H QED=3 [QCD] @1"], + } + ``` + +4. The `madspin_card.dat` decays the other boson to jets. The dict that we use for it is following: + + ```python + DecayProcess = { + "WpWmToLpNujj": "w- > q q", + "WmWpToLmNujj": "w+ > q q", + "WpZToLpNujj": "z > q q", + "WmZToLmNujj": "z > q q", + "ZWpToLpLmjj": "w+ > q q", + "ZWmToLpLmjj": "w- > q q", + } + ``` + + Furthermore, we chooose to include b in the quark definition when we have Z-boson. The dict for it is: + + ```python + DecayProcessQuarkDefinition = { + "WpWmToLpNujj": "define q = g u c d s u~ c~ d~ s~ ", + "WmWpToLmNujj": "define q = g u c d s u~ c~ d~ s~ ", + "WpZToLpNujj": "define q = g u c d s b u~ c~ d~ s~ b~", + "WmZToLmNujj": "define q = g u c d s b u~ c~ d~ s~ b~", + "ZWpToLpLmjj": "define q = g u c d s u~ c~ d~ s~ ", + "ZWmToLpLmjj": "define q = g u c d s u~ c~ d~ s~ ", + } + ``` + +5. Finally, we need to update `cuts.f` to adapt for different mWV window, which is ["150to600", "600to800", "800toInf"]. diff --git a/bin/MadGraph5_aMCatNLO/cards/production/13TeV/SMP_aTGC/generate_cards.py b/bin/MadGraph5_aMCatNLO/cards/production/13TeV/SMP_aTGC/generate_cards.py index d2fce83c6373..4a272b04b00c 100644 --- a/bin/MadGraph5_aMCatNLO/cards/production/13TeV/SMP_aTGC/generate_cards.py +++ b/bin/MadGraph5_aMCatNLO/cards/production/13TeV/SMP_aTGC/generate_cards.py @@ -1,3 +1,5 @@ +# Before run set the LCG environment: +# . /cvmfs/sft.cern.ch/lcg/views/LCG_106/x86_64-el9-gcc13-opt/setup.sh import os from shutil import copyfile @@ -18,6 +20,15 @@ "ZWmToLpLmjj": ["p p > ell+ ell- w- $$ t t~ H QED=3 [QCD] @0", "p p > ell+ ell- w- j $$ t t~ H QED=3 [QCD] @1"], } +DecayProcessQuarkDefinition = { + "WpWmToLpNujj": "define q = g u c d s u~ c~ d~ s~ ", + "WmWpToLmNujj": "define q = g u c d s u~ c~ d~ s~ ", + "WpZToLpNujj": "define q = g u c d s b u~ c~ d~ s~ b~", + "WmZToLmNujj": "define q = g u c d s b u~ c~ d~ s~ b~", + "ZWpToLpLmjj": "define q = g u c d s u~ c~ d~ s~ ", + "ZWmToLpLmjj": "define q = g u c d s u~ c~ d~ s~ ", +} + DecayProcess = { "WpWmToLpNujj": "w- > q q", "WmWpToLmNujj": "w+ > q q", @@ -75,6 +86,7 @@ def get_cuts_logic(mWW): # Process madspin_card.dat replacements = { "DECAYPROCESS": DecayProcess[sample], + "DEFINEQUARKS": DecayProcessQuarkDefinition[sample], } replace_placeholders(template_file, output_file, replacements) elif file_name == "cuts.f": From a539e8f0933e93645d78988a51376dab99ab0456 Mon Sep 17 00:00:00 2001 From: Ram Krishna Sharma Date: Thu, 28 Nov 2024 13:02:03 +0100 Subject: [PATCH 3/4] Updated readme --- .../cards/production/13TeV/SMP_aTGC/README.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/bin/MadGraph5_aMCatNLO/cards/production/13TeV/SMP_aTGC/README.md b/bin/MadGraph5_aMCatNLO/cards/production/13TeV/SMP_aTGC/README.md index 1780edb2de45..dd003b075ed4 100644 --- a/bin/MadGraph5_aMCatNLO/cards/production/13TeV/SMP_aTGC/README.md +++ b/bin/MadGraph5_aMCatNLO/cards/production/13TeV/SMP_aTGC/README.md @@ -1,5 +1,16 @@ These cards are for the SMP aTGC analysis with full run-2 dataset. The process that we considered is WV semileptonic decay. +We need MC samples for the following processes: + +1. WpWmToLpNujj +2. WmWpToLmNujj +3. WpZToLpNujj +4. WmZToLmNujj +5. ZWpToLpLmjj +6. ZWmToLpLmjj + +We binned each process based on mWV mass. There are three mWV mass bins: 150-600, 600-800, and 800 to Inf. So, in total, we will have 18 independent samples. + To get the cards first setup the environment and run the command ```bash @@ -8,6 +19,7 @@ python generate_cards.py ``` Few important points to note: + 1. The template cards are in the `CardsTemplates` directory. 2. The cards: `run_card.dat`, `customizecards.dat`, `extramodels.dat`, `FKS_params.dat`, `reweight_card.dat` and `run_card.dat` remains same for all the processes. 3. The `proc_card.dat` is different for each process. The processs names are defined in the dict that we are using to generate the cards. From 8317b80d098fee13e12c3ab5f8f9c6f3d495fff5 Mon Sep 17 00:00:00 2001 From: Ram Krishna Sharma Date: Thu, 28 Nov 2024 18:33:08 +0100 Subject: [PATCH 4/4] Added model restrict card --- .../restrict_no_cmass_cwwwcbcw.dat | 146 ++++++++++++++++++ .../13TeV/SMP_aTGC/generate_cards.py | 4 +- 2 files changed, 149 insertions(+), 1 deletion(-) create mode 100644 bin/MadGraph5_aMCatNLO/cards/production/13TeV/SMP_aTGC/CardsTemplates/restrict_no_cmass_cwwwcbcw.dat diff --git a/bin/MadGraph5_aMCatNLO/cards/production/13TeV/SMP_aTGC/CardsTemplates/restrict_no_cmass_cwwwcbcw.dat b/bin/MadGraph5_aMCatNLO/cards/production/13TeV/SMP_aTGC/CardsTemplates/restrict_no_cmass_cwwwcbcw.dat new file mode 100644 index 000000000000..d351cfdcf8eb --- /dev/null +++ b/bin/MadGraph5_aMCatNLO/cards/production/13TeV/SMP_aTGC/CardsTemplates/restrict_no_cmass_cwwwcbcw.dat @@ -0,0 +1,146 @@ +###################################################################### +## PARAM_CARD AUTOMATICALY GENERATED BY MG5 FOLLOWING UFO MODEL #### +###################################################################### +## ## +## Width set on Auto will be computed following the information ## +## present in the decay.py files of the model. By default, ## +## this is only 1->2 decay modes. ## +## ## +###################################################################### + +################################### +## INFORMATION FOR DIM6 +################################### +Block dim6 + 1 2.250000e+00 # CWWWL2 + 2 3.000000e+00 # CWL2 + 3 1.250000e+02 # CBL2 + 4 0.000000e+00 # CPWWWL2 + 5 0.000000e+00 # CPWL2 + 6 0.000000e+00 # CphidL2 + 7 0.000000e+00 # CphiWL2 + 8 0.000000e+00 # CphiBL2 + +################################### +## INFORMATION FOR LOOP +################################### +Block loop + 1 9.118800e+01 # MU_R + +################################### +## INFORMATION FOR MASS +################################### +Block mass + 4 0.000000e+00 # MC + 5 4.700000e+00 # MB + 6 1.720000e+02 # MT + 23 9.118760e+01 # MZ + 25 1.200000e+02 # MH +## Dependent parameters, given by model restrictions. +## Those values should be edited following the +## analytical expression. MG5 ignores those values +## but they are important for interfacing the output of MG5 +## to external program such as Pythia. + 1 0.000000 # d : 0.0 + 2 0.000000 # u : 0.0 + 3 0.000000 # s : 0.0 + 11 0.000000 # e- : 0.0 + 12 0.000000 # ve : 0.0 + 13 0.000000 # mu- : 0.0 + 14 0.000000 # vm : 0.0 + 15 0.000000 # ta- : 0.0 + 16 0.000000 # vt : 0.0 + 21 0.000000 # g : 0.0 + 22 0.000000 # a : 0.0 + 24 79.824360 # w+ : cmath.sqrt(MZ__exp__2/2. + cmath.sqrt(MZ__exp__4/4. - (aEW*cmath.pi*MZ__exp__2)/(Gf*sqrt__2))) + 82 0.000000 # ghg : 0.0 + 9000001 0.000000 # gha : 0.0 + 9000002 91.187600 # ghz : MZ + 9000003 79.824360 # ghwp : MW + 9000004 79.824360 # ghwm : MW + +################################### +## INFORMATION FOR SMINPUTS +################################### +Block sminputs + 1 1.279000e+02 # aEWM1 + 2 1.166370e-05 # Gf + 3 1.184000e-01 # aS + +################################### +## INFORMATION FOR WOLFENSTEIN +################################### +Block wolfenstein + 1 0.000000e+00 # lamWS + 2 0.000000e+00 # AWS + 3 0.000000e+00 # rhoWS + 4 0.000000e+00 # etaWS + +################################### +## INFORMATION FOR YUKAWA +################################### +Block yukawa + 4 0.000000e+00 # ymc + 5 4.700000e+00 # ymb + 6 1.720000e+02 # ymt + 15 1.777000e+00 # ymtau + +################################### +## INFORMATION FOR DECAY +################################### +DECAY 6 1.508336e+00 # WT +DECAY 23 2.495200e+00 # WZ +DECAY 24 2.085000e+00 # WW +DECAY 25 5.753088e-03 # WH +## Dependent parameters, given by model restrictions. +## Those values should be edited following the +## analytical expression. MG5 ignores those values +## but they are important for interfacing the output of MG5 +## to external program such as Pythia. +DECAY 1 0.000000 # d : 0.0 +DECAY 2 0.000000 # u : 0.0 +DECAY 3 0.000000 # s : 0.0 +DECAY 4 0.000000 # c : 0.0 +DECAY 5 0.000000 # b : 0.0 +DECAY 11 0.000000 # e- : 0.0 +DECAY 12 0.000000 # ve : 0.0 +DECAY 13 0.000000 # mu- : 0.0 +DECAY 14 0.000000 # vm : 0.0 +DECAY 15 0.000000 # ta- : 0.0 +DECAY 16 0.000000 # vt : 0.0 +DECAY 21 0.000000 # g : 0.0 +DECAY 22 0.000000 # a : 0.0 +DECAY 82 0.000000 # ghg : 0.0 +DECAY 9000001 0.000000 # gha : 0.0 +DECAY 9000002 0.000000 # ghz : 0.0 +DECAY 9000003 0.000000 # ghwp : 0.0 +DECAY 9000004 0.000000 # ghwm : 0.0 +#=========================================================== +# QUANTUM NUMBERS OF NEW STATE(S) (NON SM PDG CODE) +#=========================================================== + +Block QNUMBERS 9000001 # gha + 1 0 # 3 times electric charge + 2 1 # number of spin states (2S+1) + 3 1 # colour rep (1: singlet, 3: triplet, 8: octet) + 4 1 # Particle/Antiparticle distinction (0=own anti) +Block QNUMBERS 9000002 # ghz + 1 0 # 3 times electric charge + 2 1 # number of spin states (2S+1) + 3 1 # colour rep (1: singlet, 3: triplet, 8: octet) + 4 1 # Particle/Antiparticle distinction (0=own anti) +Block QNUMBERS 9000003 # ghwp + 1 3 # 3 times electric charge + 2 1 # number of spin states (2S+1) + 3 1 # colour rep (1: singlet, 3: triplet, 8: octet) + 4 1 # Particle/Antiparticle distinction (0=own anti) +Block QNUMBERS 9000004 # ghwm + 1 -3 # 3 times electric charge + 2 1 # number of spin states (2S+1) + 3 1 # colour rep (1: singlet, 3: triplet, 8: octet) + 4 1 # Particle/Antiparticle distinction (0=own anti) +Block QNUMBERS 82 # ghg + 1 0 # 3 times electric charge + 2 1 # number of spin states (2S+1) + 3 8 # colour rep (1: singlet, 3: triplet, 8: octet) + 4 1 # Particle/Antiparticle distinction (0=own anti) diff --git a/bin/MadGraph5_aMCatNLO/cards/production/13TeV/SMP_aTGC/generate_cards.py b/bin/MadGraph5_aMCatNLO/cards/production/13TeV/SMP_aTGC/generate_cards.py index 4a272b04b00c..a8d624273f51 100644 --- a/bin/MadGraph5_aMCatNLO/cards/production/13TeV/SMP_aTGC/generate_cards.py +++ b/bin/MadGraph5_aMCatNLO/cards/production/13TeV/SMP_aTGC/generate_cards.py @@ -120,7 +120,9 @@ def get_cuts_logic(mWW): else: # Replace both cuts replace_placeholders(template_file, output_file, cuts_logic) - + elif file_name == "restrict_no_cmass_cwwwcbcw.dat": + # don't add the directory name to the output file + copyfile(template_file, output_file.replace(f"{directory_name}_","")) else: # Copy other files as-is copyfile(template_file, output_file)