#159 closed enhancement (fixed)
Make forbidden processes non-fatal
Reported by: | sschmidt | Owned by: | kilian |
---|---|---|---|
Priority: | P3 | Milestone: | |
Component: | core | Version: | 2.0.0beta |
Severity: | normal | Keywords: | higgs color flow |
Cc: |
Description
When replacing the Z in decays.sin with a Higgs, W2 fails in compiling and gives errors due to missing table_color_flows and table_ghost_flows:
libtool: compile: gfortran -c -I/localscratch/sschmidt/whizard/2.00_gfortran/lib/whizard/mod/models -I/localscratch/sschmidt/whizard/2.00_gfortran/include/omega -I/localscratch/sschmidt/whizard/2.00_gfortran/lib/whizard/mod/whizard-core -I/localscratch/sschmidt/whizard/2.00_gfortran/lib/whizard/mod/misc -lgfortran hee.f90 -fPIC -o .libs/hee.o hee.f90:62.21: table_color_flows 1 Error: PARAMETER at (1) is missing an initializer hee.f90:63.77: logical, dimension(n_prt, n_cflow), parameter, private :: table_ghost_flags 1 Error: PARAMETER at (1) is missing an initializer hee.f90:132.25: a = table_color_flows 1 Error: Symbol 'table_color_flows' at (1) has no IMPLICIT type
Attachments (1)
Change History (24)
Changed 15 years ago by
comment:1 Changed 15 years ago by
Priority: | P1 → P3 |
---|
comment:2 Changed 15 years ago by
Seems very strange: Having only
process hh = e1, E1 -> H, n1, N1
(removing the Higgs decays) works, with the decays
process hee = H -> e1, E1 process huu = H -> u, U process hh = e1, E1 -> H, n1, N1
produces the aforementioned error. The different process
process eeHH = e1, E1 -> H, H
also don't work. and gives the same error, while
process eeZZ = e1, E1 -> Z, Z
works.
comment:3 Changed 15 years ago by
I recall that H -> u, U and H -> e+ e- are both zero, arent' they?
comment:4 Changed 15 years ago by
Sorry, I overestimated the numerical skills of W2 (I knew they were small...). Nevertheless, an error about color-flow in an e+ e- -> H -> e+ e- seems quite strange to me...
comment:5 Changed 15 years ago by
Damn Freudian slips ;-)
BTW: Is H-> e+e- zero because of the numerics ore because the Yukawa coupling was set to zero (as an approximation)?
After replacing the electrons by muons, the input file works, so removing the bug would be only in order to make the program foolproof. (for people like me :-) )
comment:6 Changed 15 years ago by
Higgs couplings are there only for t, b, tau. For the muon because of only one single special application.
comment:7 Changed 15 years ago by
Owner: | changed from kilian to Juergen Reuter |
---|---|
Status: | new → assigned |
Summary: | test/decays.sin crashes when replacing Z by H → WHIZARD does not compile for a forbidden process |
When a process is forbidden, then WHIZARD does not issue a message, but just crashes in compilation! A very user-unfriendly behavior.
comment:8 Changed 15 years ago by
Owner: | changed from Juergen Reuter to ALL |
---|---|
Priority: | P3 → P1 |
Status: | assigned → new |
This is a very confusing one for the user. Now I introduced an O'Mega emergency stopp, if there are no processes. But WHIZARD does not know how to handle this yet.
comment:9 Changed 15 years ago by
Milestone: | v2.0final → v2.0-rc2 |
---|
comment:10 Changed 15 years ago by
I've taken a look into passing this condition to WHIZARD via the exit status of the O'Mega process. This is viable but, however, the exit status as returned by "os_system_call" is useless as "system" encodes the exit code in a supposedly platform specific way (at least subject to endianess issues, possibly more). POSIX defines a portable way of converting it in sys/wait.h but, unfortunately, this is implemented as a macro, so it can't be directly used from FORTRAN. Therefore, I see three ways to accomplish this:
- 1) Capture and parse the STDOUT / STDERR output of O'Mega.
- 2) Write a small piece of C which provides a conversion call.
- 3) Determine the actual exit code returned by "system" during configure.
I'm opting and volunteering to implement 2) or 3) if the WHIZARD masters are fine with one of those two :)
comment:11 Changed 15 years ago by
Milestone: | v2.0-rc2 → v2.1 |
---|---|
Priority: | P1 → P5 |
Summary: | WHIZARD does not compile for a forbidden process → Make forbidden processes non-fatal |
Type: | defect → feature_request |
OK, I took the liberty of implementing 2) :) The absence of diagrams is now passed to WHIZARD via the O'Mega exit code, and WHIZARD then bails out with a fatal error. It might be nice to handle this in a more sophisticated way be setting the matrix element to zero at some point in the future, so I am making this a (low priority) feature request.
comment:14 Changed 15 years ago by
Owner: | changed from ALL to kilian |
---|---|
Priority: | P5 → P3 |
Status: | new → assigned |
Type: | feature_request → enhancement |
Considering this in conjunction with #178 (jet summation), I'd rather think the best solution is that O'Mega generates a valid interface where number_flavor_states is zero, and Whizard checks for this. This doesn't need an exit code, and we are free to just issue a warning and continue. Just make sure that transferring (unused) zero-size tables is no compilation problem.
I revert this to a RC2 ticket.
comment:15 Changed 15 years ago by
Milestone: | v2.1 → v2.0-rc2 |
---|
comment:16 Changed 15 years ago by
In the jets branch, O'Mega generates a compilable module, also zero allowd processes. This makes the exit code obsolete. Sorry Christian:(.
comment:17 Changed 15 years ago by
Milestone: | v2.0-rc2 → v2.0-rc3 |
---|
comment:18 Changed 15 years ago by
This seems to be the corresponding error message:
| Integrating process 'eeem' *** Fatal error: Process 'eeem': beam/process mismatch (collision/decay)
Is this what you want(ed)?
If so, we could close the ticket I guess.
comment:19 follow-up: 21 Changed 15 years ago by
Nope we can't. Now I get a seg fault for the input file:
process eeem = e1,E1 -> e1, E2 compile sqrts = 500 cuts = all E > 100 GeV [e2:E2] integrate(eeem)
comment:20 Changed 15 years ago by
Here is the backtrace of the seg fault:
Program received signal SIGSEGV, Segmentation fault. 0x58467a0f in free () from /lib/tls/i686/cmov/libc.so.6 (gdb) bt #0 0x58467a0f in free () from /lib/tls/i686/cmov/libc.so.6 #1 0x584699ef in malloc () from /lib/tls/i686/cmov/libc.so.6 #2 0xb7e45842 in __state_matrices_MOD_node_append_child () at state_matrices.f90:201 #3 0xb7e45a9a in node_make_branch.4532 () at state_matrices.f90:514 #4 0x088cb5b8 in ?? () #5 0xbf18618c in ?? () #6 0x083f2e84 in ?? () #7 0x00000000 in ?? ()
I'll look into it.
comment:21 Changed 15 years ago by
Replying to jr_reuter:
You get the segfault because the beams statement is missing. If you include it you get the aforementioned error message. So maybe the integration should check if there are beams at all?
comment:22 Changed 15 years ago by
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
Finally done in r1801. Forbidden processes go through smoothly, with appropriate warnings.
example sin file