Adding minimum pt cut on the mediator

Asked by Siew Yan HOH

Hi MG5 expert,

I am using DMScalar model to simulate a final state involving b b~ phim, which phim decays to chi chi~ , I would like to cut on the mediator (phim) with pdgid 9100000 at minimum threshold pt > 100 GeV. Is that possible to do that in MG5 generator?

Thanks.

Siew Yan

Question information

Language:
English Edit question
Status:
Solved
For:
MadGraph5_aMC@NLO Edit question
Assignee:
No assignee Edit question
Solved by:
Valentin Hirschi
Solved:
Last query:
Last reply:
Revision history for this message
Valentin Hirschi (valentin-hirschi) said :
#1

Such a cut can indeed not be specified in the run_card.
You will have to implement your cut directly in the file '<proc_output>SubProcesses/cuts.f' inside which you can find comments guiding you as to how to code your cut.

Revision history for this message
Siew Yan HOH (siew-yan-hoh) said :
#2

Hi Valentin,

Thanks for the hint. I am using MG5_aMC_v2_3_3, I have a look into the cuts.f. I do not get much information on how to implement the cut from the code except the label for each block of code specifically for different particle. I believe the structure of the new cut should look similar to the default in cuts.f. I am not familiar with Fortran, it would be nice if you could explain or demonstrate how to implement such a cuts in cuts.f, it would really help a lot! Thanks.

SY

Revision history for this message
Best Valentin Hirschi (valentin-hirschi) said :
#3

Sorry I assumed you were working on a process output at NLO accuracy where the file cuts.f is better documented (as to where you should code your own cuts).
For a process output at LO accuracy, you can implement your cuts just before these lines, at the very end of the function 'PASSCUTS(P)':

<< code your cuts here:
| When you want the cuts to *not* pass, simply put:
| passcuts=.false.
| return
>>
      if(debug) write (*,*) '============================='
      if(debug) write (*,*) ' EVENT PASSED THE CUTS '
      if(debug) write (*,*) '============================='

The basic information you have available here to code your cut is the kinematics of the event, passed as the array P in argument of the function, i.e. P(0:3,i) where the index 'i' labels the particles as defined in the process.
This should be enough to implement the cut you described in your question.

If you need more information, like flavors, masses of external particles, etc... it is also possible and reasonably simple but you then need to access additional information that just the argument of the function. You can maybe figure it out by reading the rest of the code in cuts.f (which implements the default cuts of the run_card) and setcuts.f. But if you have any doubt and need additional information on the event to implement your cut, then just ask us.

Revision history for this message
Siew Yan HOH (siew-yan-hoh) said :
#4

Hi,

Sorry for late reply, I have been followed on the suggestion and tips from you for the couple of day. I have successfully cut on the pt of the boson by overriding the is_a_l() in setcuts.f and making use of the ptllm parameter in run_card.dat.

It solves my problem :-) Thanks.

Just my curiosity, In future will Madgraph introduce kinematics cut on boson in the default run_card.dat?

Thanks

Revision history for this message
Siew Yan HOH (siew-yan-hoh) said :
#5

Thanks Valentin Hirschi, that solved my question.

Revision history for this message
Valentin Hirschi (valentin-hirschi) said :
#6

In our opinion cuts on invariant mass of intermediate particles are too specific to warrant being made default.

Revision history for this message
Siew Yan HOH (siew-yan-hoh) said :
#7

Thanks, its good to know. :-)