Closed valassi closed 4 months ago
Rephrasing: why does cIPC have different dimensions in P1_Sigma_MSSM_SLHA2_gu_ttxemepu (10, gives a warning) and in P1_Sigma_MSSM_SLHA2_gux_ttxemepux (14, no warning)??
@oliviermattelaer does this look right to you? I guess they should be the same... the two CPPProcess.cc are extremely similar
Thnaks
I have generated separately the four subprocesses susy_gu_ttllu, susy_gux_ttllux, susy_gd_ttlld, susy_gdx_ttlldx
It is quite clear that there is a problem in the generation of multi-P directories:
I guess there are largely speaking two options:
Ok I guess I understand better how this works now.
PLUGIN_GPUFOHelasCallWriter.format_coupling is called many times. This class is effectively a singleton and maintains effectively a singleton for couplings2order
def format_coupling(self, call):
"""Format the coupling so any minus signs are put in front"""
import re
###print(call) # FOR DEBUGGING
model = self.get('model')
newcoup = False
if not hasattr(self, 'couplings2order'):
self.couplings2order = {}
self.params2order = {}
Specifically, the same instance of the helas writer is called in sequence by the different P1 subdirectories
Now the problems here, for the warning, might well be here in CPPProcess.cc
for( size_t iicoup = 0; iicoup < nicoup; iicoup++ )
allCOUPs[ndcoup + iicoup] = CI_ACCESS::iicoupAccessBufferConst( cIPC, iicoup ); // independent couplings, fixed for all events
The problem in this line of code is that it assumes that cIPC has a number of elements that is related to nicoup, but this is not true! Specifically, nicoup is 7, and some CPPProcess.cc have cIPC[14], but for the CPPProcess.cc which has cIPC[10], the loop should run on iicoup < 5
and not on iicoup < 7
. I will try a fix.
If this makes the warning disappear, I would be reasonably confident that the rest of the code is correct. In any case allCOUP later on should normally not be used beyond. For good measure, also allCOUP should be dimensioned similar to cIPC.
Essentially, two variables are needed, nicoup (for Param.h, maximum across all P1 directories) and then some nicoup_used or similar (the one appropriate for this P1 directory, i.e. the one used for cIPC dimensions)
This is fixed in PR #824, closing for simplicity
I have essentially fixed all of the SUSY issues in #820 and am now systematically testing a large spectrum of SUSY processes. Since this is one process that I had used long ago, I am testing gq_ttllq. The build succeeds and the tests seem to succeed. however in one of the four subprocesses I get this warning, which looks worrying
This is using gcc11.3. Also gcc12.1 gives the same warning. Strangely, clang14 does not complain.
Looking at the code is complex because this is deep inside some templated methods.
However the following looks wrong, even if it is just a comment.
In Param.h:
In Param.cc:
In CPPProcess.cc:
Rephrasing: why does cIPC have different dimensions in P1_Sigma_MSSM_SLHA2_gu_ttxemepu (10, gives a warning) and in P1_Sigma_MSSM_SLHA2_gux_ttxemepux (14, no warning)??