Commit 232d6026 authored by Vincent Rothe's avatar Vincent Rothe
Browse files

727b3c5 Metadata for v2.8.5

parent efce6843
......@@ -19,6 +19,11 @@ General:
Known (recent) bugs:
* WHIZARD 2.8.4 and earlier do not support Pythia 8.301+. If you want to use
these versions of Pythia 8 please use WHIZARD 2.8.5 or 3. Note that
Pythia 8.301-2 and contain a bug in their LHA interface, so you have to use
Pythia 8.303+.
* WHIZARD 2.8.3 exhibits a bug for UFO models containing Majorana fermions:
no matrix element is generated. WHIZARD 2.8.4 solves this problem. There
are still some wrong sign in interference terms for very complicated
......@@ -46,7 +51,7 @@ Compilers and OS specialties:
anything for the installed WHIZARD, but the testsuite (make check)
will not work before make install has been executed. make distcheck
will not work on El Capitan. There is also the option to disable
the System Integrity Protocol (SIP) of El Capitan by booting in
the System Integrity Protocol (SIP) of modern OSX by booting in
Recovery Mode, open a terminal and type 'csrutil disable'. However, we
do not recommend to do so.
......@@ -57,6 +62,9 @@ Manual:
on the Hepforge webpage:
https://whizard.hepforge.org/manual.pdf
Old bugs in old versions:
* In version 2.3.0 there is a regression which produces invalid O'Mega
......
......@@ -2,7 +2,24 @@ ChangeLog -- Summary of changes to the WHIZARD package
Use svn log to see detailed changes.
Version 2.8.4
Version 2.8.5
2020-09-16
RELEASE: version 2.8.5
2020-09-11
Bug fix for H->tau tau transverse polarization with PYTHIA6
(thanks to Junping Tian / Akiya Miyamoto)
2020-09-09
Fix a long standing bug (since 2.0) in the calculation of color
factors when particles of different color were combined in a
particle class. NB: O'Mega never produced a wrong number,
2020-09-02
Compatibility fix for PYTHIA v8.301+ interface
##################################################################
2020-07-08
RELEASE: version 2.8.4
......
......@@ -3,5 +3,5 @@ NEWS -- User-visible changes for the WHIZARD package
(for NEWS on the O'Mega matrix element generator cf. its
corresponding NEWS file)
version 2.8.4
version 2.8.5
for details cf. the ChangeLog file
......@@ -3,7 +3,7 @@
@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Implementation of [[circe2]]}
<<Version>>=
'Version 2.8.4'
'Version 2.8.5'
@
<<[[implicit none]]>>=
implicit none
......
......@@ -33,7 +33,7 @@ dnl FCFLAGS Fortran compiler flags
dnl ***********************************************************************
dnl
dnl Start configuration
AC_INIT([XXXWHIZARDXXX],[2.8.4])
AC_INIT([XXXWHIZARDXXX],[2.8.5])
AC_CONFIG_MACRO_DIR([m4])
AM_INIT_AUTOMAKE([1.12.2 color-tests parallel-tests])
AC_PREREQ([2.65])
......@@ -49,7 +49,7 @@ AC_MSG_NOTICE([**************************************************************])
WO_CONFIGURE_SECTION([Start of package configuration])
### Further version information
PACKAGE_DATE="Jul 08 2020"
PACKAGE_DATE="Sep 16 2020"
PACKAGE_STATUS="release"
AC_SUBST(PACKAGE_DATE)
......
......@@ -26,6 +26,11 @@
become [Stdlib.Pervasives] in O'Caml 4.07 and [Stdlib] in O'Caml 4.08. *)
let pcompare = compare
module type Test =
sig
val suite : OUnit.test
end
(* \thocwmodulesection{Quantum Numbers} *)
type t =
......@@ -156,15 +161,21 @@ module type Flow =
type factor = power list
val factor : t -> t -> factor
val zero : factor
module Test : Test
end
module Flow : Flow =
struct
(* All [int]s are non-zero! *)
type color =
| Lines of int * int
| N of int
| N_bar of int
| SUN of int * int
| Singlet
| Ghost
(* Incoming and outgoing, since we need to cross the incoming states. *)
type t = color list * color list
let rank cflow =
......@@ -176,11 +187,17 @@ module Flow : Flow =
Ghost
let of_list = function
| [c1; c2] -> Lines (c1, c2)
| [0; 0] -> Singlet
| [c; 0] -> N c
| [0; c] -> N_bar c
| [c1; c2] -> SUN (c1, c2)
| _ -> invalid_arg "Color.Flow.of_list: num_lines != 2"
let to_list = function
| Lines (c1, c2) -> [c1; c2]
| N c -> [c; 0]
| N_bar c -> [0; c]
| SUN (c1, c2) -> [c1; c2]
| Singlet -> [0; 0]
| Ghost -> [0; 0]
let to_lists (cfin, cfout) =
......@@ -193,7 +210,7 @@ module Flow : Flow =
List.map to_list cfout
let ghost_flag = function
| Lines _ -> false
| N _ | N_bar _ | SUN (_, _) | Singlet -> false
| Ghost -> true
let ghost_flags (cfin, cfout) =
......@@ -224,7 +241,10 @@ module Flow : Flow =
| Mismatch
let conjugate = function
| Lines (c1, c2) -> Lines (-c2, -c1)
| N c -> N_bar (-c)
| N_bar c -> N (-c)
| SUN (c1, c2) -> SUN (-c2, -c1)
| Singlet -> Singlet
| Ghost -> Ghost
let cross_in (cin, cout) =
......@@ -240,25 +260,91 @@ module Flow : Flow =
let to_string = string_of_int
end)
let square f1 f2 =
let rec square' acc f1' f2' =
(* Match lines in the color flows [f1] and [f2] after crossing the
incoming states. This will be used to compute squared diagrams
in [square] and [square2] below. *)
let match_lines match1 match2 f1 f2 =
let rec match_lines' acc f1' f2' =
match f1', f2' with
(* If we encounter an empty list, we're done --- unless the
lengths don't match (which should never happen!): *)
| [], [] -> Square (List.rev acc)
| _, [] | [], _ -> Mismatch
| Ghost :: rest1, Ghost :: rest2 ->
square' acc rest1 rest2
| Lines (0, 0) :: rest1, Lines (0, 0) :: rest2 ->
square' acc rest1 rest2
| Lines (0, c1') :: rest1, Lines (0, c2') :: rest2 ->
square' ((c1', c2') :: acc) rest1 rest2
| Lines (c1, 0) :: rest1, Lines (c2, 0) :: rest2 ->
square' ((c1, c2) :: acc) rest1 rest2
| Lines (0, _) :: _, _ | _ , Lines (0, _) :: _
| Lines (_, 0) :: _, _ | _, Lines (_, 0) :: _ -> Mismatch
| Lines (_, _) :: _, Ghost :: _ | Ghost :: _, Lines (_, _) :: _ -> Mismatch
| Lines (c1, c1') :: rest1, Lines (c2, c2') :: rest2 ->
square' ((c1', c2') :: (c1, c2) :: acc) rest1 rest2 in
square' [] (cross_out f1) (cross_out f2)
| _ :: _, [] | [], _ :: _ -> Mismatch
(* Handle matching \ldots *)
| Ghost :: rest1, Ghost :: rest2
| Singlet :: rest1, Singlet :: rest2 ->
match_lines' acc rest1 rest2
(* \ldots{} and mismatched ghosts and singlet gluons: *)
| Ghost :: _, Singlet :: _
| Singlet :: _, Ghost :: _ ->
Mismatch
(* Ghosts and singlet gluons can't match anything else *)
| (Ghost | Singlet) :: _, (N _ | N_bar _ | SUN (_, _)) :: _
| (N _ | N_bar _ | SUN (_, _)) :: _, (Ghost | Singlet) :: _ ->
Mismatch
(* Handle matching \ldots *)
| N_bar c1 :: rest1, N_bar c2 :: rest2
| N c1 :: rest1, N c2 :: rest2 ->
match_lines' (match1 c1 c2 acc) rest1 rest2
(* \ldots{} and mismatched $N$ or $\bar N$ states: *)
| N _ :: _, N_bar _ :: _
| N_bar _ :: _, N _ :: _ ->
Mismatch
(* The $N$ and $\bar N$ don't match non-singlet gluons: *)
| (N _ | N_bar _) :: _, SUN (_, _) :: _
| SUN (_, _) :: _, (N _ | N_bar _) :: _ ->
Mismatch
(* Now we're down to non-singlet gluons: *)
| SUN (c1, c1') :: rest1, SUN (c2, c2') :: rest2 ->
match_lines' (match2 c1 c1' c2 c2' acc) rest1 rest2 in
match_lines' [] (cross_out f1) (cross_out f2)
(* NB: in WHIZARD versions before 3.0, the code for [match_lines]
contained a bug in the pattern matching of [Singlet], [N], [N_bar]
and [SUN] states, because they all were represented as
[SUN (c1, c2)], only distinguished by the numeric conditions
[c1 = 0] and/or [c2 = 0].
This prevented the use of exhaustiveness checking and introduced a
subtle dependence on the pattern order. *)
let square f1 f2 =
match_lines
(fun c1 c2 pairs -> (c1, c2) :: pairs)
(fun c1 c1' c2 c2' pairs -> (c1', c2') :: (c1, c2) :: pairs)
f1 f2
(*i
let square f1 f2 =
let ll2s ll =
String.concat "; "
(List.map (ThoList.to_string string_of_int) ll)
and lp2s lp =
String.concat "; "
(List.map
(fun (c1, c2) ->
string_of_int c1 ^ ", " ^ string_of_int c2)
lp) in
Printf.eprintf
"square ([%s], [%s]) ([%s], [%s]) = "
(ll2s (in_to_lists f1)) (ll2s (out_to_lists f1))
(ll2s (in_to_lists f2)) (ll2s (out_to_lists f2));
let res = square f1 f2 in
begin match res with
| Mismatch -> Printf.eprintf "Mismatch!\n"
| Square f12 -> Printf.eprintf "Square [%s]\n" (lp2s f12)
end;
res
i*)
(* In addition to counting closed color loops, we also need to count closed
gluon loops. Fortunately, we can use the same algorithm on a different
......@@ -272,23 +358,10 @@ module Flow : Flow =
end)
let square2 f1 f2 =
let rec square2' acc f1' f2' =
match f1', f2' with
| [], [] -> Square (List.rev acc)
| _, [] | [], _ -> Mismatch
| Ghost :: rest1, Ghost :: rest2 ->
square2' acc rest1 rest2
| Lines (0, 0) :: rest1, Lines (0, 0) :: rest2 ->
square2' acc rest1 rest2
| Lines (0, _) :: rest1, Lines (0, _) :: rest2
| Lines (_, 0) :: rest1, Lines (_, 0) :: rest2 ->
square2' acc rest1 rest2
| Lines (0, _) :: _, _ | _ , Lines (0, _) :: _
| Lines (_, 0) :: _, _ | _, Lines (_, 0) :: _ -> Mismatch
| Lines (_, _) :: _, Ghost :: _ | Ghost :: _, Lines (_, _) :: _ -> Mismatch
| Lines (c1, c1') :: rest1, Lines (c2, c2') :: rest2 ->
square2' (((c1, c1'), (c2, c2')) :: acc) rest1 rest2 in
square2' [] (cross_out f1) (cross_out f2)
match_lines
(fun c1 c2 pairs -> pairs)
(fun c1 c1' c2 c2' pairs -> ((c1, c1'), (c2, c2')) :: pairs)
f1 f2
(* $\ocwlowerid{int\_power}: n\, p \to n^p$
for integers is missing from [Pervasives]! *)
......@@ -336,6 +409,55 @@ module Flow : Flow =
power = power + power2 })
(ThoList.range 0 num_cycles2)
module Test : Test =
struct
open OUnit
let suite_square =
"square" >:::
[ "square ([], []) ([], [])" >::
(fun () ->
assert_equal (Square []) (square ([], []) ([], [])));
"square ([3], [3; 0]) ([3], [3; 0])" >::
(fun () ->
assert_equal
(Square [(-1, -1); (1, 1)])
(square
([N 1], [N 1; Singlet])
([N 1], [N 1; Singlet])));
"square ([0], [3; -3]) ([0], [3; -3])" >::
(fun () ->
assert_equal
(Square [(1, 1); (-1, -1)])
(square
([Singlet], [N 1; N_bar (-1)])
([Singlet], [N 1; N_bar (-1)])));
"square ([3], [3; 0]) ([0], [3; -3])" >::
(fun () ->
assert_equal
Mismatch
(square
([N 1], [N 1; Singlet])
([Singlet], [N 1; N_bar (-1)])));
"square ([3; 8], [3]) ([3; 8], [3])" >::
(fun () ->
assert_equal
(Square [-1, -1; 1, 1; -2, -2; 2, 2])
(square
([N 1; SUN (2, -1)], [N 2])
([N 1; SUN (2, -1)], [N 2]))) ]
let suite =
"Color.Flow" >:::
[suite_square]
end
end
(* later: *)
......@@ -366,11 +488,6 @@ module General_Flow =
module Q = Algebra.Q
module QC = Algebra.QC
module type Test =
sig
val suite : OUnit.test
end
module type Arrow =
sig
type endpoint
......
......@@ -22,6 +22,11 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *)
module type Test =
sig
val suite : OUnit.test
end
(* \thocwmodulesection{Quantum Numbers} *)
(* Color is not necessarily the~$\textrm{SU}(3)$ of QCD. Conceptually,
......@@ -69,6 +74,8 @@ module type Flow =
val factor : t -> t -> factor
val zero : factor
module Test : Test
end
module Flow : Flow
......@@ -81,11 +88,6 @@ module Flow : Flow
some complexity in [UFO] or here.
\end{dubious} *)
module type Test =
sig
val suite : OUnit.test
end
module type Arrow =
sig
type endpoint
......
......@@ -188,6 +188,7 @@ let suite =
Algebra.Q.Test.suite;
Algebra.QC.Test.suite;
Algebra.Laurent.Test.suite;
Color.Flow.Test.suite;
Color.Arrow.Test.suite;
Color.Birdtracks.Test.suite;
Color.SU3.Test.suite;
......
......@@ -68364,29 +68364,30 @@ C... call pylist (2)
C... If Parent is Higgs (IORIG=25,35,36), another tau is boosted and rotate.
C... Only Higgs to tau pair decay
IF(KFORIG.EQ.25.OR.KFORIG.EQ.35.OR.KFORIG.EQ.36) THEN
ITFOUND=0
IF (.NOT.(K(IORIG,4).EQ.0.OR.K(IORIG,5).EQ.0)) THEN
DO 60210 J=K(IORIG,4), K(IORIG,5)
IF( ABS(K(J,2)).EQ.15 ) THEN
ITFOUND=ITFOUND+1
IF( ITFOUND.GT.3 ) THEN
PRINT *,'%%Fatal error in PYDCAY after PYTAUD,'
PRINT *,'call: Higgs has >2 tau daughters.'
STOP
ENDIF
CALL PYROBO(J,J,THETAU,PHITAU,0D0,0D0,0D0)
CALL PYROBO(J,J,0D0,0D0,DBETAU(1),
& DBETAU(2),DBETAU(3))
ENDIF
60210 CONTINUE
ENDIF
C... Fix Akiya Miyamoto for transversely polarized taus.
C IF(KFORIG.EQ.25.OR.KFORIG.EQ.35.OR.KFORIG.EQ.36) THEN
C ITFOUND=0
C IF (.NOT.(K(IORIG,4).EQ.0.OR.K(IORIG,5).EQ.0)) THEN
C DO 60210 J=K(IORIG,4), K(IORIG,5)
C IF( ABS(K(J,2)).EQ.15 ) THEN
C ITFOUND=ITFOUND+1
C IF( ITFOUND.GT.3 ) THEN
C PRINT *,'%%Fatal error in PYDCAY after PYTAUD,'
C PRINT *,'call: Higgs has >2 tau daughters.'
C STOP
C ENDIF
C CALL PYROBO(J,J,THETAU,PHITAU,0D0,0D0,0D0)
C CALL PYROBO(J,J,0D0,0D0,DBETAU(1),
C & DBETAU(2),DBETAU(3))
C ENDIF
C60210 CONTINUE
C ENDIF
C ... In the case of single tau decay, copy momentum before PYTAUD
ELSE
C ELSE
DO 211 J=1,4
P(ITAU,J)=PTAU(J)
211 CONTINUE
ENDIF
C ENDIF
C...Skip past ordinary tau decay treatment.
MMAT=0
MBST=0
% custom.hva -- tuning HEVEA for WHIZARD documentation
% Wolfgang's version, continued by JRR
% Specials
\newcommand{\thisversion}{2.8.4}
\newcommand{\thisversion}{2.8.5}
\newenvironment{interaction}{\small\verbatim}{\endverbatim\endsmall}
\newenvironment{syntax}{\begin{quote}\begin{flushleft}\tt}{\end{flushleft}\end{quote}}
\newcommand{\var}[1]{$\langle$\textit{#1}$\rangle$}
......
......@@ -283,7 +283,7 @@ Parameter & Value & Default & Description \\
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%END LATEX
\newcommand{\thisversion}{2.8.4}
\newcommand{\thisversion}{2.8.5}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
......@@ -707,7 +707,8 @@ of \whizard (we break the table into logical and temporal blocks of
LCIO alternative weights \\
2.8.3 & 07/2020 & UFO Majorana feature complete, many $e^+e^-$ related
improvements \\
2.8.4 & 07/2020 & Bug fix for UFO Majorana models
2.8.4 & 07/2020 & Bug fix for UFO Majorana models \\
2.8.5 & 09/2020 & Bug fix for polarizations in $H\to\tau\tau$
\\\hline\hline
\end{tabular}
\end{center}
......@@ -1802,7 +1803,7 @@ named \verb|hello.sin|.
| M. Moretti, T. Ohl, J. Reuter, arXiv: hep-ph/0102195 |
| |
|=============================================================================|
| WHIZARD 2.8.4
| WHIZARD 2.8.5
|=============================================================================|
| Reading model file '/usr/local/share/whizard/models/SM.mdl'
| Preloaded model: SM
......@@ -1833,7 +1834,7 @@ including the \whizard\ banner is shown in Fig.~\ref{fig:helloworld})
\centerline{[... here a banner is displayed]}
\begin{Verbatim}
|=============================================================================|
| WHIZARD 2.8.4
| WHIZARD 2.8.5
|=============================================================================|
| Reading model file '/usr/local/share/whizard/models/SM.mdl'
| Preloaded model: SM
......@@ -1892,7 +1893,7 @@ This produces a lot of output which looks similar to this:
| Writing log to 'whizard.log'
[... banner ...]
|=============================================================================|
| WHIZARD 2.8.4
| WHIZARD 2.8.5
|=============================================================================|
| Reading model file '/usr/local/share/whizard/models/SM.mdl'
| Preloaded model: SM
......@@ -11808,7 +11809,7 @@ This is the modern version of the Les Houches accord event format
<LesHouchesEvents version="1.0">
<header>
<generator_name>WHIZARD</generator_name>
<generator_version>2.8.4</generator_version>
<generator_version>2.8.5</generator_version>
</header>
<init>
25 25 5.0000000000E+02 5.0000000000E+02 -1 -1 -1 -1 3 1
......
......@@ -48,12 +48,12 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\def\WhizardVersion{2.8.4}
\def\WhizardDate{Jul 08 2020}
\def\WhizardVersion{2.8.5}
\def\WhizardDate{Sep 16 2020}
<<Version>>=
2.8.4
2.8.5
<<Date>>=
Jul 08 2020
Sep 16 2020
@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\title{%
......
......@@ -19,9 +19,15 @@ extern "C" {
delete pythia;
}
#if PYTHIA_VERSION_INTEGER > 8300
bool pythia8_set_lhaup_ptr (Pythia* pythia, LHAupWhizard* whizard_lha) {
return pythia->setLHAupPtr ((LHAupPtr)whizard_lha);
}
#else
bool pythia8_set_lhaup_ptr (Pythia* pythia, LHAupWhizard* whizard_lha) {
return pythia->setLHAupPtr (whizard_lha);
}
#endif
bool pythia8_set_rndm_engine_ptr (Pythia* pythia, void* rndm) {
WhizardRndm* whizard_rndm = new WhizardRndm (rndm);
......
......@@ -1746,11 +1746,11 @@ end module pythia8_uti
call lha%init ()
call lha%set_init &
([2212, 2212], [6500._default, 6500._default], 1, .true., .true.)
([2212, 2212], [6500._default, 6500._default], 1, .false., .false.)
xsec = [1.0, 1.2, 1.4, 1.6, 1.8] * 1e3 ! fb
xerror = 0.05 * xsec
max_weight = 1e-3 * xsec
xsec = [1.0, 1.2, 1.4, 1.6, 1.8] * 1e3_default ! fb
xerror = 0.05_default * xsec
max_weight = 1e-3_default * xsec
do i = 1, N_PROC
call lha%set_process_parameters (process_id = i, &
cross_section = xsec(i), error = xerror(i), &
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment