Unable to decay for a specific channel using MadSpin

Asked by Dhruvanshu Parmar

Hi MG team,
I am trying to generate VBF events at NLO level. I am interested in generating events with Higgs decaying through the 4 lepton channel H->ZZ->4l. Since Madgraph doesnt allow me to decay along with generation at NLO( this wasnt the issue for LO process) I am trying to achieve this decay using MadSpin.

To do that, I specifically mentioned the Higgs Decay H->ZZ in my param_card.dat as shown:
```
###################################
## INFORMATION FOR DECAY
###################################
DECAY 6 1.491500e+00 # WT
DECAY 23 2.441404e+00 # WZ
DECAY 24 2.047600e+00 # WW
DECAY 25 6.382339e-03 # WH
# BR NDA ID1 ID2
2.619e-02 2 23 23 #H->ZZ
```

The BR was taken from CERNYellowReports. I also specifically mentioned the decay process in madspin_card_default.dat (Only default card was generated during output):
```
#Some options (uncomment to apply)
#
# set seed 1
# set Nevents_for_max_weight 75 # number of events for the estimate of the max. weight
# set BW_cut 15 # cut on how far the particle can be off-shell
# set spinmode onshell # Use one of the madspin special mode
 set max_weight_ps_point 400 # number of PS to estimate the maximum for each event

# specify the decay for the final state particles
decay h > z z
#decay t > w+ b, w+ > all all
#decay t~ > w- b~, w- > all all
#decay w+ > all all
#decay w- > all all
#decay z > all all
# running the actual code
launch
```

With the above two changes, I hoped for MadSpin to identify the process and decay events accordingly. However, MadSpin is completely ignoring the mentioned decay mode:
```
(base) dhruvanshu@dhruvanshu-Inspiron-3501:~/MG5_aMC_v3_1_0/MadSpin$ ./madspin
************************************************************
* *
* W E L C O M E to M A D S P I N *
* *
************************************************************
MadSpin>import /home/dhruvanshu/MG5_aMC_v3_1_0/VBF_NLO_2jets_final/Events/run_09/events.lhe
INFO: process: p p > h j j
INFO: options: $$ w+ w- z
define p = g u c d s u~ c~ d~ s~
INFO: Restrict model sm with file ../models/sm/restrict_default.dat .
INFO: Run "set stdout_level DEBUG" before import for more information.
INFO: Change particles name to pass to MG5 convention
Defined multiparticle p = g u c d s u~ c~ d~ s~
Defined multiparticle j = g u c d s u~ c~ d~ s~
Defined multiparticle l+ = e+ mu+
Defined multiparticle l- = e- mu-
Defined multiparticle vl = ve vm vt
Defined multiparticle vl~ = ve~ vm~ vt~
Defined multiparticle all = g u c d s u~ c~ d~ s~ a ve vm vt e- mu- ve~ vm~ vt~ e+ mu+ t b t~ b~ z w+ h w- ta- ta+
Defined multiparticle p = g u c d s u~ c~ d~ s~
define j = g u c d s u~ c~ d~ s~
Defined multiparticle j = g u c d s u~ c~ d~ s~
define l+ = e+ mu+
Defined multiparticle l+ = e+ mu+
define l- = e- mu-
Defined multiparticle l- = e- mu-
define vl = ve vm vt
Defined multiparticle vl = ve vm vt
define vl~ = ve~ vm~ vt~
Defined multiparticle vl~ = ve~ vm~ vt~
Set group_subprocesses to Auto
Note that you need to regenerate all processes
Complex mass already desactivated.
set loop optimized output to True
set loop color flows to False
INFO: detected model: loop_sm. Loading...
INFO: Restrict model loop_sm with file ../models/loop_sm/restrict_default.dat .
INFO: Run "set stdout_level DEBUG" before import for more information.
INFO: Change particles name to pass to MG5 convention
Kept definitions of multiparticles l- / j / vl / l+ / p / vl~ unchanged
Defined multiparticle all = g gh gh~ d u s c d~ u~ s~ c~ a ve vm vt e- mu- ve~ vm~ vt~ e+ mu+ b t b~ t~ z w+ h w- ta- ta+
Set group_subprocesses to Auto
Note that you need to regenerate all processes
Complex mass already desactivated.
set loop optimized output to True
set loop color flows to False
Defined multiparticle p = g u c d s u~ c~ d~ s~
Defined multiparticle j = g u c d s u~ c~ d~ s~
Defined multiparticle l+ = e+ mu+
Defined multiparticle l- = e- mu-
Defined multiparticle vl = ve vm vt
Defined multiparticle vl~ = ve~ vm~ vt~
MadSpin>decay h > z z
MadSpin>launch
INFO: Will use seed 383589808
WARNING: set the mass of the b-quark to its value in the param_card.dat: 4.7 GeV
INFO: We need to recalculate the branching fractions for h
INFO: Using MadWidth (arXiv:1402.1178)
INFO: Restrict model /home/dhruvanshu/MG5_aMC_v3_1_0/models/loop_sm with file ../models/loop_sm/restrict_default.dat .
INFO: Run "set stdout_level DEBUG" before import for more information.
WARNING: The LO estimate for the width of particle 25
WARNING: differs from the one in the banner by 12 percent
INFO:
INFO: decay channels for h : ( width = 0.00564955 GeV )
INFO: BR d1 d2
INFO: 9.541999e-01 b~ b
INFO: 4.580011e-02 ta+ ta-
INFO:
INFO: generating the production square matrix element
INFO: generate p p > h j j $$ w+ w- z --no_warning=duplicate;define pert_QCD = -4 -3 -2 -1 1 2 3 4 21;add process p p > h j j pert_QCD $$ w+ w- z --no_warning=duplicate;
INFO: Done 29.19
INFO: generating the full matrix element squared (with decay)
INFO: generate p p > h j j $$ w+ w- z, h > z z QCD=99 --no_warning=duplicate;define pert_QCD = -4 -3 -2 -1 1 2 3 4 21;add process p p > h j j pert_QCD $$ w+ w- z, h > z z QCD=99 --no_warning=duplicate;
Command "launch" interrupted with error:
InvalidCmd : No matrix elements generated, check overall coupling orders
Please report this bug to developers
```
So I have the following questions:
1) Is my way correct or I am missing something?
2) Is MadSpin failing to decay because its keeping both Z onshell which would obviously fail this decay?
3) Is there a way to force MadGraph to decay Higgs at NLO without going through the MadSpin path?
4) Can we skip the auto width calculation and rather force MadSpin to take the values given? ( Coz in the process I am trying its showing only bb~ and tata~ modes, completely ignoring the zz mode).

Any help would be appreciated.

Thanks,
Dhruvanshu

Question information

Language:
English Edit question
Status:
Answered
For:
MadGraph5_aMC@NLO Edit question
Assignee:
No assignee Edit question
Last query:
Last reply:
Revision history for this message
Olivier Mattelaer (olivier-mattelaer) said :
#1

2) Is MadSpin failing to decay because its keeping both Z onshell which would obviously fail this decay?

Yes, your syntax ask for two onshell Z (since you do not decay them) and therefore this is identify has an impossible decay channel and the decay is discarded.

3) Is there a way to force MadGraph to decay Higgs at NLO without going through the MadSpin path?

Not within MG5aMC framework, other code can decay the Higgs obviously (in this case pythia can do a perfect job for example).

4) Can we skip the auto width calculation and rather force MadSpin to take the values given? ( Coz in the process I am trying its showing only bb~ and tata~ modes, completely ignoring the zz mode).

In principle, if you provide the BR information, the call to the auto-width is not done. Maybe the issue here is that MadSpin realise that the BR information is not consistent (due to the h> ZZ one which is not a valid information for madspin in this mode) and therefore goes to the auto width mode to try to recover.

My suggestion here for Higgs decay would be to use the following madspin card:

set spinmode none
define lt = ta+ ta- mu+ mu- e+ e-
decay h > z > lt lt lt lt

The "set spinmode none" discard spin correlation (which is not present for scalar anyway) and keep the Higgs exactly onshell (which for the Higgs is a good approximation since the width is much smaller than the experimental resolution). The advantage of that mode is that you are not restricted to sequence of two body decay.
However in this mode, the BR is not used/needed (we use the partial width conputed at LO and divide by the total width)

Cheers,

Olivier

Revision history for this message
Dhruvanshu Parmar (dhruvanshu) said (last edit ):
#2

Hi Olivier,

I doubted that it has to do with both Z being taken on shell. Thanks for the suggestion, I tried it and it worked well. I am getting the required decay mode now. Also the line "decay h > z z > lt lt lt lt" also seems to work. I actually tried this mode earlier, but I guess I forgot to keep spinmode none which was probably failing the decay.

So now when I look into the LHE files, it is showing the required information of decay now. One thing which caught my attention was that in the LHE files obtained the Higgs produced are all having mass of 125 GeV( I also verified this by first converting LHE to root using ExRootAnalysis, and then viewing the mass distribution by command "LHEF->Draw('Particle.M','Particle.PID==25')". Their what I am getting is a single delta like distribution(which is just one sharp long bin around 125) which is showing all Higgs at 125 GeV). So I was thinking, shouldnt there be some Higgs population whose mass would be 125+-m where 'm' being controlled by the decay width as per Breit Wigner approx? I was expecting some Higgs to have masses like 124.8 or 124.9 which would be because of its small yet non-zero decay width. Only thing I could think of this to be if decay width was set to zero during NLO generation.

Thanks,
Dhruvanshu

Revision history for this message
Olivier Mattelaer (olivier-mattelaer) said :
#3

The mode "spinmode=none" forces the Higgs to be exactly onshell (as said in my previous message).
This is the drawback of that mode.

Cheers,

Olivier

Revision history for this message
Dhruvanshu Parmar (dhruvanshu) said :
#4

I see, that explains the issue.

It would decay accordingly but this would still remain. Should I expect diff results if I go on decaying with Pythia, because if I am not wrong Pythia would also create similar issues??

Also, I observed that MadSpin didnt apply any cuts on the decayed products. Do I have to pass the run_card as an argument for MadSpin so it can apply those cuts or is there other way??

Thanks,
Dhruvanshu

Revision history for this message
Olivier Mattelaer (olivier-mattelaer) said :
#5

> Should I expect diff results if I go on decaying with Pythia, because if I am not wrong Pythia would also create similar issues??

I do not know the answer to that question.

> Also, I observed that MadSpin didnt apply any cuts on the decayed products. Do I have to pass the run_card as an argument for MadSpin so it can apply those cuts or is there other way??

In the case of "spimode=none" (and spinmode=onshell), you can indeed provide a run_card for MadSpin.
However you need to be aware that all cut are done in the center of mass of the particles that is decaying and therefore a lot of cut are meaningless (like pt cut for example).
If you want to use cuts, you need to understand how this mode (spinmode=none) works;
1) we do generate events for the decay (h > z > 4lt)
2) we boost the higgses produced in step one according to the production events and the associated decay particles
3) re-write events on disk.

The run_card (if provided) only impact the events generated in step one.
This explains why the cut are in the center of mass of the particles that decay, but also forbids any cut between the decay particle and the production particle.

Cheers,

Olivier

Can you help with this problem?

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

To post a message you must log in.