how can i change cos th value from limit (-1 to 0) or (0 to 1) in cuts.f

Asked by Elsa on 2020-09-30

HI,
I have use e+ e- > mu+ mu-.
In cuts.f file in SubProcesses folder :

Here the line are:
            IF(PABS1*PABS2 .NE. 0D0) THEN
              COSTH = ( PJET(I,1)*PJET(J,1) + PJET(I,2)*PJET(J,2) + PJET(I,3)*PJET(J,3) )/(PABS1*PABS2)
            ELSE
C IF 3-MOMENTA VANISH, MAKE JET COSTH = 1D0 SO THAT JET MEASURE VANISHES
              COSTH = 1D0
            ENDIF

here how can i set the cos(theta) limit from [-1 to 0]

Please help me to get the solution.

Thanks
Elsa

Question information

Language:
English Edit question
Status:
Answered
For:
MadGraph5_aMC@NLO Edit question
Assignee:
No assignee Edit question
Last query:
2020-09-30
Last reply:
2020-10-02

Here is the FAQ that should answer your question:
https://cp3.irmp.ucl.ac.be/projects/madgraph/wiki/FAQ-General-1

Cheers,

Olivier

Elsa (rmvkook97) said : #2

Hi,
Thanks for this
But am unable to detect where the cos(theta) value limit can be changed.

Please help to know what should i change for solving this.

Thanks
Elsa

We do not have default cut on costh.
You have to hardcode your own cut.
The line that you quote are for the kt-durham cut that is not applied on lepton.

Cheers,

Olivier

Elsa (rmvkook97) said : #4

Can you suggest me how can i harddcode my own cut.
So that it will be helpful.

Thanks

Elsa

Did you check the above FAQ?

Cheers,

Olivier

Elsa (rmvkook97) said : #6

Yes, i had go through SubProcesses/dummy_fct.f .

But unable to find the change of cos(theta) value for a certain limit like (0,1).

Thanks

Elsa

Hi Elsa,

So the idea is to take the set of momenta and compute the cos(theta) value.
(be carefull that theta is not a lorentz invariant quantity and therefore you might need to boost the momenta to the frame of your choice.

When you have the value of cos(theta) (which will be between -1 and 1.
If that value is between 0 and 1 as you want then you set "dummy_cuts=.true."
if it is between -1 and 0 then you set "dummy_cuts=.false."

The machine learning layer of the code will then optimize the code automatically to avoid to generate the events between -1,0.

Cheers,

Olivier

Elsa (rmvkook97) said : #8

Hello sir,

Here is the dummy_fct.f page. when i changed the "dummy_cuts=.true." to "dummy_cuts=.false.", error is seen.

how can i solve this . kindly suggest.

  logical FUNCTION dummy_cuts(P)
C**************************************************************************
C INPUT:
C P(0:3,1) MOMENTUM OF INCOMING PARTON
C P(0:3,2) MOMENTUM OF INCOMING PARTON
C P(0:3,3) MOMENTUM OF ...
C ALL MOMENTA ARE IN THE REST FRAME!!
C COMMON/JETCUTS/ CUTS ON JETS
C OUTPUT:
C TRUE IF EVENTS PASSES ALL CUTS LISTED
C**************************************************************************
      IMPLICIT NONE
c
c Constants
c
      include 'genps.inc'
      include 'nexternal.inc'
C
C ARGUMENTS
C
      REAL*8 P(0:3,nexternal)
C
C PARAMETERS
C
      real*8 PI
      parameter( PI = 3.14159265358979323846d0 )
c
c particle identification
c
      LOGICAL IS_A_J(NEXTERNAL),IS_A_L(NEXTERNAL)
      LOGICAL IS_A_B(NEXTERNAL),IS_A_A(NEXTERNAL),IS_A_ONIUM(NEXTERNAL)
      LOGICAL IS_A_NU(NEXTERNAL),IS_HEAVY(NEXTERNAL)
      logical do_cuts(nexternal)
      COMMON /TO_SPECISA/IS_A_J,IS_A_A,IS_A_L,IS_A_B,IS_A_NU,IS_HEAVY,
     . IS_A_ONIUM, do_cuts

      dummy_cuts=.true.

      return
      end

      subroutine get_dummy_x1(sjac, X1, R, pbeam1, pbeam2, stot, shat)
      implicit none
      include 'maxparticles.inc'
      include 'run.inc'
c include 'genps.inc'
      double precision sjac ! jacobian. should be updated not reinit
      double precision X1 ! bjorken X. output
      double precision R ! random value after grid transfrormation. between 0 and 1
      double precision pbeam1(0:3) ! momentum of the first beam (input and/or output)
      double precision pbeam2(0:3) ! momentum of the second beam (input and/or output)
      double precision stot ! total energy (input and /or output)
      double precision shat ! output

c global variable to set (or not)
      double precision cm_rap
      logical set_cm_rap
      common/to_cm_rap/set_cm_rap,cm_rap

      set_cm_rap=.false. ! then cm_rap will be set as .5d0*dlog(xbk(1)*ebeam(1)/(xbk(2)*ebeam(2)))
                         ! ebeam(1) and ebeam(2) are defined here thanks to 'run.inc'
      shat = x1*ebeam(1)*ebeam(2)
      return
      end

      subroutine get_dummy_x1_x2(sjac, X, R, pbeam1, pbeam2, stot,shat)
      implicit none
      include 'maxparticles.inc'
      include 'run.inc'
c include 'genps.inc'
      double precision sjac ! jacobian. should be updated not reinit
      double precision X(2) ! bjorken X. output
      double precision R(2) ! random value after grid transfrormation. between 0 and 1
      double precision pbeam1(0:3) ! momentum of the first beam
      double precision pbeam2(0:3) ! momentum of the second beam
      double precision stot ! total energy
      double precision shat ! output

c global variable to set (or not)
      double precision cm_rap
      logical set_cm_rap
      common/to_cm_rap/set_cm_rap,cm_rap

      set_cm_rap=.false. ! then cm_rap will be set as .5d0*dlog(xbk(1)*ebeam(1)/(xbk(2)*ebeam(2)))
                         ! ebeam(1) and ebeam(2) are defined here thanks to 'run.inc'
      shat = x(1)*x(2)*ebeam(1)*ebeam(2)
      return
      end

      logical function dummy_boostframe()
      implicit none
c
c
      dummy_boostframe = .false.
      return
      end

That's expected right, if you ALWAYS return .false. this is the same as asking to not allow any range in cos(theta) --or any other variable--. In that case the cross-section is then 0 which is not a very interesting quantity to compute.
Additionally madgraph is not able to generate events for a zero cross-section.

Cheers,

olivier

Elsa (rmvkook97) said : #10

Then how can i change the cos{theta} limit for AFB{forward - backward assymetry}???

Can you help with this problem?

Provide an answer of your own, or ask Elsa for more information if necessary.

To post a message you must log in.