diff --git a/Generators/AcerMC_i/AcerMC_i/AcerMC_acset.h b/Generators/AcerMC_i/AcerMC_i/AcerMC_acset.h deleted file mode 100644 index 18370f703d2f9f4b6753a134ed0d03ea7fd789b2..0000000000000000000000000000000000000000 --- a/Generators/AcerMC_i/AcerMC_i/AcerMC_acset.h +++ /dev/null @@ -1,33 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - - -/** - @class AcerMC_acset - AcerMC acset common block access - @author Borut Paul Kersevan (February 2003) -*/ -#ifndef AcerMC_acset_h -#define AcerMC_acset_h -extern "C" { - void* acermc_acset_address_(void); -} -class AcerMC_acset { - public: - AcerMC_acset(); - ~AcerMC_acset(); - int& acset12(); - inline void init(); - private: - struct ACERMC_ACSET; - friend struct ACERMC_ACSET; - struct ACERMC_ACSET { - int acset12; - }; - static ACERMC_ACSET* s_acermc_acset; -}; -#include "AcerMC_i/AcerMC_acset.icc" -#endif - - diff --git a/Generators/AcerMC_i/AcerMC_i/AcerMC_acset.icc b/Generators/AcerMC_i/AcerMC_i/AcerMC_acset.icc deleted file mode 100644 index 2949dd209ba2c679f9fdb6f2f6a547d889ca3759..0000000000000000000000000000000000000000 --- a/Generators/AcerMC_i/AcerMC_i/AcerMC_acset.icc +++ /dev/null @@ -1,13 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// AcerMC acset common block access -// Borut Paul Kersevan (February 2003) -// Inline implementations for AcerMC_acset -// initialise pointer -void AcerMC_acset::init(void) { - if (!s_acermc_acset) s_acermc_acset = static_cast<ACERMC_ACSET*>(acermc_acset_address_()); -} - - diff --git a/Generators/AcerMC_i/AcerMC_i/AcerMC_acset.inc b/Generators/AcerMC_i/AcerMC_i/AcerMC_acset.inc deleted file mode 100644 index b59be17d36ad65e4490551b6b068d055723d60fc..0000000000000000000000000000000000000000 --- a/Generators/AcerMC_i/AcerMC_i/AcerMC_acset.inc +++ /dev/null @@ -1,5 +0,0 @@ -C AcerMC acset common block access -c Borut Paul Kersevan (February 2003) - INTEGER ACSET12 - COMMON/ACERMC_ACSET/ACSET12 - SAVE /ACERMC_ACSET/ diff --git a/Generators/AcerMC_i/CMakeLists.txt b/Generators/AcerMC_i/CMakeLists.txt deleted file mode 100644 index f5591742b432647e1274f32bb4c120fd365b6760..0000000000000000000000000000000000000000 --- a/Generators/AcerMC_i/CMakeLists.txt +++ /dev/null @@ -1,30 +0,0 @@ -################################################################################ -# Package: AcerMC_i -################################################################################ - -# Declare the package name: -atlas_subdir( AcerMC_i ) - -# Declare the package's dependencies: -atlas_depends_on_subdirs( - PRIVATE - Generators/GeneratorFortranCommon ) - -# External dependencies: -find_package( Herwig ) -find_package( Pythia6 ) - -# Remove the --as-needed linker flags: -atlas_disable_as_needed() - -# Component(s) in the package: -atlas_add_library( AcerMC_i - AcerMC_i/*.h AcerMC_i/*.icc AcerMC_i/*.inc src/*.cxx src/*.F - PUBLIC_HEADERS AcerMC_i - PRIVATE_INCLUDE_DIRS ${HERWIG_INCLUDE_DIRS} ${PYTHIA6_INCLUDE_DIRS} - LINK_LIBRARIES GeneratorFortranCommonLib - PRIVATE_LINK_LIBRARIES ${HERWIG_LIBRARIES} ${PYTHIA6_LIBRARIES} ) - -# Install files from the package: -atlas_install_joboptions( share/*.py ) -atlas_install_runtime( share/*.events share/*.dat ) diff --git a/Generators/AcerMC_i/doc/AcerMC.pdf b/Generators/AcerMC_i/doc/AcerMC.pdf deleted file mode 100644 index 51475c297d63ab1a6825140aae985d4fa4f8235a..0000000000000000000000000000000000000000 Binary files a/Generators/AcerMC_i/doc/AcerMC.pdf and /dev/null differ diff --git a/Generators/AcerMC_i/doc/AcerMC.tex b/Generators/AcerMC_i/doc/AcerMC.tex deleted file mode 100644 index 586e08699bdb0e9bdf19e9fdb45de87625661afc..0000000000000000000000000000000000000000 --- a/Generators/AcerMC_i/doc/AcerMC.tex +++ /dev/null @@ -1,54 +0,0 @@ -\documentclass[11pt]{article} -\newdimen\SaveHeight \SaveHeight=\textheight -\textwidth=6.5in -\textheight=8.9in -\textwidth=6.5in -\textheight=9.0in -\hoffset=-.5in -\voffset=-1in -\def\topfraction{1.} -\def\textfraction{0.} -\def\topfraction{1.} -\def\textfraction{0.} -\begin{document} -\title{Acermc\_i: An interface between Acermc and Athena\\ -Version in release 6.5.0 and later} -\author{ Borut Kersevan (Borut.Kersevan@cern.ch), Ian Hinchliffe (I\_Hinchliffe@lbl.gov) and Georgios Stavropoulos (George.Stavropoulos@cern.ch) } -%\today - -\maketitle - -This package runs Acermc from within Athena. \\See the example -in {\bf Acermc\_i/share/jobOptions.AcermcPythia.py } and {\bf - Acermc\_i/share/jobOptions.AcermcHerwig.py } which show how to -read Acermc events and hadronize them using Pythia or Herwig - -Users must first run -Acermc in standalone mode and make a file of events. An athena job -then takes these events hadronizes them and passes them down the -Athena event chain. The events must be made with a version of Acermc -that is compatible, recent versions that support the Les Houches -interface should be acceptable. There is a compatible version in /afs/cern.ch/atlas/offline/external/acermc - - -To hadronize {\bf AcerMC} generated events with Herwig, you only need to run athena with the jobOptions -file jobOptions.AcerMCHerwig.py by typing in the prompt \\ -{\it athena jobOptions.AcerMCHerwig.py}\\ - -To hadronize {\bf AcerMC} generated events with Pythia, you only need to run athena with the jobOptions -file jobOptions.AcerMCPythia.py by typing in the prompt \\ -{\it athena jobOptions.AcerMCPythia.py}\\ - - -More infomation about ACerMC here - -http://borut.home.cern.ch/borut/ - -\end{document} - - - - - - - diff --git a/Generators/AcerMC_i/doc/packagedoc.h b/Generators/AcerMC_i/doc/packagedoc.h deleted file mode 100644 index 83ef525fae0c07765b5981d283a6c1d050e50d90..0000000000000000000000000000000000000000 --- a/Generators/AcerMC_i/doc/packagedoc.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -/** -@page AcerMC_i_page AcerMC_i -@author Borut.Kersevan@cern.ch, Giorgios.Stavropoulos@cern.ch, Ian.Hinchliffe@cern.ch, Judith.Katzy@cern.ch - -@section AcerMC_i_The interface between AcerMC and Athena - -This package runs AcerMC from within Athena. See the example -in AcerMC_i/share/jobOptions.AcerMCPythia.py and - AcerMC_i/share/jobOptions.AcerMCHerwig.py which show how to -read AcerMC events and hadronize them using Pythia or Herwig - -Users must first run -AcerMC in standalone mode and make a file of events. An athena job -then takes these events hadronizes them and passes them down the -Athena event chain. The events must be made with a version of AcerMC - that supports the Les Houches -interface. There are compatible versions in /afs/cern.ch/atlas/offline/external/acermc -To hadronize AcerMC generated events with Herwig, you only need to run athena with the jobOptions -file jobOptions.AcerMCHerwig.py by typing in the prompt - athena jobOptions.AcerMCHerwig.py - -To hadronize AcerMC generated events with Pythia, you only need to run athena with the jobOptions -file jobOptions.AcerMCPythia.py by typing in the prompt athena jobOptions.AcerMCPythia.py - -Example jobOption files to run with Tauola and Photos are also provided, see -jobOptions.AcerMCHerwig.AtlasTauolaPhotos.py and jobOptions.AcerMCPythia.AtlasTauolaPhotos.py - - - -The AcerMC generator home page is here -https://twiki.cern.ch/twiki/bin/view/AtlasProtected/AcerMCForAtlas - - - - -*/ diff --git a/Generators/AcerMC_i/share/AcerMC_p004_r000696.events b/Generators/AcerMC_i/share/AcerMC_p004_r000696.events deleted file mode 100644 index 0dc76f6172dbc5450754b2e50a67793eb29e1b49..0000000000000000000000000000000000000000 --- a/Generators/AcerMC_i/share/AcerMC_p004_r000696.events +++ /dev/null @@ -1,900 +0,0 @@ - 7 - 7877.74193 0.00776119889 0.127733508 - -1 -1 0 0 0 501 0. 0. 493.29684 493.29684 0. 0. 9. 2 -1 0 502 0 0 0. - 0. -287.273409 287.273409 0. 0. 9. 6 1 1 502 2 0 65.8085123 22.1509118 - 231.301892 298.239817 175. 0. 9. -6 1 1 0 2 501 -103.276531 -23.4497627 - 171.245287 266.769341 175. 0. 9. 24 2 1 0 2 0 37.4680186 1.29885092 - -196.523747 215.561091 80.246254 0. 9. -13 1 5 0 5 0 -14.3494336 - -22.569091 -33.6436996 42.9788296 0.10566 0. 9. 14 1 5 0 5 0 51.8174522 - 23.8679419 -162.880048 172.582261 0. 0. 9. - 7 - 7685.71061 0.00776011684 0.127979636 - 1 -1 0 501 0 0 0. 0. 750.209488 750.209488 0. 0. 9. -2 -1 0 0 0 502 0. - 0. -101.724795 101.724795 0. 0. 9. 6 1 1 501 2 0 67.9394278 61.3402769 - 505.158794 542.391742 175. 0. 9. -6 1 1 0 2 502 -52.9220532 -29.9080233 - 97.6421711 209.414009 175. 0. 9. -24 2 1 0 2 0 -15.0173746 -31.4322536 - 45.6837284 100.128531 82.0073876 0. 9. 13 1 5 0 5 0 -43.9711568 - -36.8255184 40.5276725 70.2288035 0.10566 0. 9. -14 1 5 0 5 0 28.9537822 - 5.39326486 5.15605586 29.8997277 0. 0. 9. - 7 - 12409.0351 0.00778112968 0.123365166 - -1 -1 0 0 0 501 0. 0. 530.4787 530.4787 0. 0. 9. 2 -1 0 502 0 0 0. 0. - -389.816839 389.816839 0. 0. 9. 6 1 1 502 2 0 -119.118769 -167.696667 - -127.537306 298.667403 175. 0. 9. -6 1 1 0 2 501 122.845779 90.7360154 - -87.5820359 248.233202 175. 0. 9. 24 2 1 0 2 0 -3.72700936 76.9606521 - 355.781203 373.394933 83.1064281 0. 9. -13 1 5 0 5 0 7.07857973 - 64.7556837 350.136008 356.144129 0.10566 0. 9. 14 1 5 0 5 0 -10.8055891 - 12.2049684 5.64519511 17.250804 0. 0. 9. - 7 - 10535.6357 0.00777400378 0.124903714 - -1 -1 0 0 0 501 0. 0. 49.4133544 49.4133544 0. 0. 9. 2 -1 0 502 0 0 0. - 0. -2366.86596 2366.86596 0. 0. 9. 6 1 1 502 2 0 -5.09777196 8.36082553 - -1870.16042 1878.3559 175. 0. 9. -6 1 1 0 2 501 -52.8572717 -34.9059968 - -218.75361 287.211528 175. 0. 9. 24 2 1 0 2 0 57.9550437 26.5451712 - -228.538575 250.711886 81.0131859 0. 9. -13 1 5 0 5 0 61.830505 - 45.042565 -133.956849 154.26047 0.10566 0. 9. 14 1 5 0 5 0 -3.8754613 - -18.4973938 -94.5817258 96.4514159 0. 0. 9. - 7 - 16096.9665 0.00779248622 0.12099556 - -1 -1 0 0 0 501 0. 0. 173.758067 173.758067 0. 0. 9. 2 -1 0 502 0 0 0. - 0. -807.386721 807.386721 0. 0. 9. 6 1 1 502 2 0 -68.5498478 58.8176878 - -1.24810613 196.939483 175. 0. 9. -6 1 1 0 2 501 107.394489 -148.905744 - -173.431619 307.262141 175. 0. 9. 24 2 1 0 2 0 -38.844641 90.088056 - -458.948928 476.943164 84.9464491 0. 9. -13 1 5 0 5 0 4.87561486 - -12.0929944 -108.801517 109.580078 0.10566 0. 9. 14 1 5 0 5 0 -43.7202559 - 102.18105 -350.147411 367.363086 0. 0. 9. - 7 - 9309.87427 0.00776853058 0.12609218 - 2 -1 0 501 0 0 0. 0. 538.656962 538.656962 0. 0. 9. -1 -1 0 0 0 502 0. - 0. -317.028368 317.028368 0. 0. 9. 6 1 1 501 2 0 -257.647977 203.625954 - 118.205588 390.440226 175. 0. 9. -6 1 1 0 2 502 267.447482 -151.265267 - 54.5163496 357.779777 175. 0. 9. 24 2 1 0 2 0 -9.79950427 -52.3606864 - 48.9066564 107.465326 79.4937954 0. 9. -13 1 5 0 5 0 -28.5853754 - -66.2926137 39.1318655 82.1166754 0.10566 0. 9. 14 1 5 0 5 0 18.7858711 - 13.9319273 9.77479086 25.3486506 0. 0. 9. - 7 - 10305.304 0.00777304234 0.125114462 - 1 -1 0 501 0 0 0. 0. 1404.21801 1404.21801 0. 0. 9. -2 -1 0 0 0 502 0. - 0. -76.474221 76.474221 0. 0. 9. 6 1 1 501 2 0 -78.893539 -52.1757159 - 1087.63509 1105.67698 175. 0. 9. -6 1 1 0 2 502 23.5199464 24.4833564 - 193.753456 263.283164 175. 0. 9. -24 2 1 0 2 0 55.3735926 27.6923596 - 46.355247 111.732091 80.6359082 0. 9. 13 1 5 0 5 0 50.4222576 - -19.6082324 25.0669931 59.6259352 0.10566 0. 9. -14 1 5 0 5 0 4.95133503 - 47.3005919 21.288254 52.1061558 0. 0. 9. - 7 - 8169.46638 0.00776279376 0.127372574 - -1 -1 0 0 0 501 0. 0. 92.4614185 92.4614185 0. 0. 9. 2 -1 0 502 0 0 0. - 0. -1674.18635 1674.18635 0. 0. 9. 6 1 1 502 2 0 -182.852294 -83.5267926 - -287.396748 391.961194 175. 0. 9. -6 1 1 0 2 501 146.495462 64.1503989 - -329.399153 405.838633 175. 0. 9. 24 2 1 0 2 0 36.3568322 19.3763937 - -964.929031 968.847942 76.6879151 0. 9. -13 1 5 0 5 0 2.09192466 - 12.3823853 -806.810511 806.908242 0.10566 0. 9. 14 1 5 0 5 0 34.2649075 - 6.99400842 -158.11852 161.9397 0. 0. 9. - 7 - 8670.59636 0.00776540639 0.126786018 - 1 -1 0 501 0 0 0. 0. 840.493423 840.493423 0. 0. 9. -2 -1 0 0 0 502 0. - 0. -92.3004175 92.3004175 0. 0. 9. 6 1 1 501 2 0 32.2434513 -16.5825642 - 302.833731 351.636019 175. 0. 9. -6 1 1 0 2 502 -31.5526225 -30.2993792 - 455.12061 489.56449 175. 0. 9. -24 2 1 0 2 0 -0.690828761 46.8819434 - -9.76133561 91.5933308 78.0747124 0. 9. 13 1 5 0 5 0 0.440571291 - -8.94525875 -30.6832335 31.963788 0.10566 0. 9. -14 1 5 0 5 0 -1.13140005 - 55.8272021 20.9218979 59.6295428 0. 0. 9. - 7 - 8819.91558 0.00776615604 0.126618786 - 2 -1 0 501 0 0 0. 0. 469.342302 469.342302 0. 0. 9. -1 -1 0 0 0 502 0. - 0. -128.08749 128.08749 0. 0. 9. 6 1 1 501 2 0 12.7547369 11.1183593 - 247.0629 303.234856 175. 0. 9. -6 1 1 0 2 502 -6.72787745 36.9585587 - 87.2772337 199.131903 175. 0. 9. 24 2 1 0 2 0 -6.02685948 -48.076918 - 6.91467747 95.0630321 81.4951178 0. 9. -13 1 5 0 5 0 -11.1650535 - -50.3872883 37.6070109 63.8579335 0.10566 0. 9. 14 1 5 0 5 0 5.13819406 - 2.31037025 -30.6923334 31.2050986 0. 0. 9. - 7 - 7239.36809 0.00775749487 0.128580288 - 2 -1 0 501 0 0 0. 0. 1552.60391 1552.60391 0. 0. 9. -1 -1 0 0 0 502 0. - 0. -56.6924077 56.6924077 0. 0. 9. 6 1 1 501 2 0 -89.4933116 30.7424673 - 263.60908 330.255808 175. 0. 9. -6 1 1 0 2 502 112.008478 -14.610732 - 497.859605 539.674494 175. 0. 9. 24 2 1 0 2 0 -22.5151661 -16.1317353 - 734.442816 739.366014 80.5523894 0. 9. -13 1 5 0 5 0 28.2684698 - 4.53565343 186.172501 188.361063 0.10566 0. 9. 14 1 5 0 5 0 -50.7836359 - -20.6673887 548.270314 551.004951 0. 0. 9. - 7 - 9692.5639 0.00777030084 0.125702637 - 1 -1 0 501 0 0 0. 0. 1885.13641 1885.13641 0. 0. 9. -2 -1 0 0 0 502 0. - 0. -462.890277 462.890277 0. 0. 9. 6 1 1 501 2 0 -170.162608 579.682765 - 1366.22881 1504.05904 175. 0. 9. -6 1 1 0 2 502 117.979184 -601.981905 - 200.080767 668.549635 175. 0. 9. -24 2 1 0 2 0 52.1834244 22.2991393 - -144.063449 175.418011 82.4429491 0. 9. 13 1 5 0 5 0 51.5478906 - 43.3733966 -137.860844 153.440738 0.10566 0. 9. -14 1 5 0 5 0 0.63553386 - -21.0742572 -6.20260469 21.9772729 0. 0. 9. - 7 - 16132.1921 0.00779258177 0.120976039 - -1 -1 0 0 0 501 0. 0. 200.192315 200.192315 0. 0. 9. 2 -1 0 502 0 0 0. - 0. -626.286104 626.286104 0. 0. 9. 6 1 1 502 2 0 112.284731 195.116519 - -55.3382817 290.457643 175. 0. 9. -6 1 1 0 2 501 -14.036261 -192.428083 - -247.586954 359.374295 175. 0. 9. 24 2 1 0 2 0 -98.2484704 -2.68843573 - -123.168553 176.646482 79.8341861 0. 9. -13 1 5 0 5 0 -5.72361254 - 28.092716 -22.0268063 36.1545543 0.10566 0. 9. 14 1 5 0 5 0 -92.5248579 - -30.7811517 -101.141747 140.491927 0. 0. 9. - 7 - 10531.3763 0.00777398619 0.124907562 - -1 -1 0 0 0 501 0. 0. 325.467431 325.467431 0. 0. 9. 2 -1 0 502 0 0 0. - 0. -238.106141 238.106141 0. 0. 9. 6 1 1 502 2 0 60.283708 86.2843561 - -0.597189334 204.216728 175. 0. 9. -6 1 1 0 2 501 -109.614326 -126.603879 - 82.6365121 255.925059 175. 0. 9. 24 2 1 0 2 0 49.330618 40.3195225 - 5.32196664 103.431785 81.3058242 0. 9. -13 1 5 0 5 0 -3.51612059 - -1.96769056 30.8369222 31.0992258 0.10566 0. 9. 14 1 5 0 5 0 52.8467386 - 42.2872131 -25.5149555 72.3325592 0. 0. 9. - 7 - 51359.2572 0.00784353016 0.111450344 - 2 -1 0 501 0 0 0. 0. 1659.56094 1659.56094 0. 0. 9. -1 -1 0 0 0 502 0. - 0. -114.515538 114.515538 0. 0. 9. 6 1 1 501 2 0 124.782489 5.58952139 - 789.244499 818.005985 175. 0. 9. -6 1 1 0 2 502 -241.201819 -182.6025 - 540.749872 643.861331 175. 0. 9. 24 2 1 0 2 0 116.419329 177.012978 - 215.051028 312.20916 79.6276324 0. 9. -13 1 5 0 5 0 112.503778 - 185.378497 208.980443 301.156312 0.10566 0. 9. 14 1 5 0 5 0 3.91555154 - -8.36551869 6.0705849 11.052848 0. 0. 9. - 7 - 10406.3632 0.00777346676 0.125021333 - 1 -1 0 501 0 0 0. 0. 660.079752 660.079752 0. 0. 9. -2 -1 0 0 0 502 0. - 0. -143.897341 143.897341 0. 0. 9. 6 1 1 501 2 0 106.309771 51.3224876 - 62.4442109 220.136423 175. 0. 9. -6 1 1 0 2 502 -56.3507926 -89.2469023 - 433.755247 479.488306 175. 0. 9. -24 2 1 0 2 0 -49.9589782 37.9244146 - 19.9829534 104.352364 80.9687387 0. 9. 13 1 5 0 5 0 -34.9585248 - -21.5603345 8.30228566 41.9032885 0.10566 0. 9. -14 1 5 0 5 0 -15.0004534 - 59.4847491 11.6806677 62.4490751 0. 0. 9. - 7 - 8610.70313 0.00776510211 0.126854033 - -1 -1 0 0 0 501 0. 0. 183.072157 183.072157 0. 0. 9. 2 -1 0 502 0 0 0. - 0. -2228.1873 2228.1873 0. 0. 9. 6 1 1 502 2 0 -160.655908 -38.1099915 - 27.6408428 242.181148 175. 0. 9. -6 1 1 0 2 501 137.645849 78.2228055 - -249.765684 343.617642 175. 0. 9. 24 2 1 0 2 0 23.0100584 -40.112814 - -1822.9903 1825.46066 82.9126388 0. 9. -13 1 5 0 5 0 19.9212298 - 13.4924622 -180.941729 182.534442 0.10566 0. 9. 14 1 5 0 5 0 3.08882863 - -53.6052762 -1642.04857 1642.92622 0. 0. 9. - 7 - 15055.4523 0.00778956364 0.121595974 - -1 -1 0 0 0 501 0. 0. 161.904734 161.904734 0. 0. 9. 2 -1 0 502 0 0 0. - 0. -487.442327 487.442327 0. 0. 9. 6 1 1 502 2 0 -29.5675854 59.1873262 - 4.69105687 187.148037 175. 0. 9. -6 1 1 0 2 501 85.9639138 14.3157616 - -165.96858 256.44747 175. 0. 9. 24 2 1 0 2 0 -56.3963284 -73.5030878 - -164.26007 205.751553 82.2744279 0. 9. -13 1 5 0 5 0 -58.760232 - -89.5436059 -148.897137 183.415351 0.10566 0. 9. 14 1 5 0 5 0 2.36390357 - 16.0405181 -15.3629325 22.3362028 0. 0. 9. - 7 - 11445.9931 0.00777761062 0.124119844 - -1 -1 0 0 0 501 0. 0. 107.918765 107.918765 0. 0. 9. 2 -1 0 502 0 0 0. - 0. -1821.85478 1821.85478 0. 0. 9. 6 1 1 502 2 0 205.02791 -14.4728694 - -478.528616 549.418369 175. 0. 9. -6 1 1 0 2 501 -205.646809 84.9952596 - -1242.07435 1273.92641 175. 0. 9. 24 2 1 0 2 0 0.618898577 -70.5223902 - 6.66695413 106.428764 79.4282255 0. 9. -13 1 5 0 5 0 3.07674203 - 17.6977244 0.888573389 17.9854529 0.10566 0. 9. 14 1 5 0 5 0 -2.45784346 - -88.2201146 5.77838074 88.4433112 0. 0. 9. - 7 - 14494.6912 0.00778790618 0.121939342 - 2 -1 0 501 0 0 0. 0. 1670.8071 1670.8071 0. 0. 9. -1 -1 0 0 0 502 0. - 0. -47.1582211 47.1582211 0. 0. 9. 6 1 1 501 2 0 33.0024893 -28.4406225 - 347.238969 391.277312 175. 0. 9. -6 1 1 0 2 502 -120.660306 10.0396462 - 536.454335 577.120402 175. 0. 9. 24 2 1 0 2 0 87.6578164 18.4009763 - 739.955577 749.56761 79.3401371 0. 9. -13 1 5 0 5 0 1.41111134 - 3.34444888 -0.747990211 3.7077253 0.10566 0. 9. 14 1 5 0 5 0 86.246705 - 15.0565274 740.703568 745.859885 0. 0. 9. - 7 - 48942.34 0.00784139615 0.111816826 - 2 -1 0 501 0 0 0. 0. 1794.76326 1794.76326 0. 0. 9. -1 -1 0 0 0 502 0. - 0. -191.847391 191.847391 0. 0. 9. 6 1 1 501 2 0 -75.9687914 323.874701 - 417.340945 561.662304 175. 0. 9. -6 1 1 0 2 502 52.3462221 -528.599179 - 944.534756 1097.69218 175. 0. 9. 24 2 1 0 2 0 23.6225694 204.724478 - 241.04017 327.256168 80.7842706 0. 9. -13 1 5 0 5 0 37.2305944 - 189.583387 238.196256 306.700905 0.10566 0. 9. 14 1 5 0 5 0 -13.608025 - 15.1410907 2.84391385 20.5552625 0. 0. 9. - 7 - 18353.2779 0.007798224 0.119835156 - -1 -1 0 0 0 501 0. 0. 103.143526 103.143526 0. 0. 9. 2 -1 0 502 0 0 0. - 0. -1483.42852 1483.42852 0. 0. 9. 6 1 1 502 2 0 106.892553 -174.331089 - -328.785034 424.902277 175. 0. 9. -6 1 1 0 2 501 -180.518881 93.9554754 - -966.346228 1002.92808 175. 0. 9. 24 2 1 0 2 0 73.6263279 80.3756136 - -85.1537286 158.741687 77.8889605 0. 9. -13 1 5 0 5 0 82.1400765 - 89.4730007 -78.4650724 144.600099 0.10566 0. 9. 14 1 5 0 5 0 -8.51374864 - -9.09738703 -6.68865618 14.1415872 0. 0. 9. - 7 - 72812.519 0.00785901767 0.108866589 - 2 -1 0 501 0 0 0. 0. 3883.82478 3883.82478 0. 0. 9. -1 -1 0 0 0 502 0. - 0. -42.2219329 42.2219329 0. 0. 9. 6 1 1 501 2 0 -31.6103136 -41.8331648 - 1418.57796 1430.29286 175. 0. 9. -6 1 1 0 2 502 217.267424 -136.693455 - 1003.68417 1050.6651 175. 0. 9. 24 2 1 0 2 0 -185.65711 178.526619 - 1419.34071 1445.08875 86.0995615 0. 9. -13 1 5 0 5 0 -51.2636578 - 9.55421409 379.926414 383.488379 0.10566 0. 9. 14 1 5 0 5 0 -134.393453 - 168.972405 1039.4143 1061.60038 0. 0. 9. - 7 - 10162.121 0.0077724339 0.125248226 - 2 -1 0 501 0 0 0. 0. 1258.7021 1258.7021 0. 0. 9. -1 -1 0 0 0 502 0. - 0. -489.100987 489.100987 0. 0. 9. 6 1 1 501 2 0 409.844268 479.25962 - -59.5017836 657.135884 175. 0. 9. -6 1 1 0 2 502 -371.319332 -432.294231 - 784.280448 985.127997 175. 0. 9. 24 2 1 0 2 0 -38.5249368 -46.9653892 - 44.822447 105.539205 73.7533282 0. 9. -13 1 5 0 5 0 2.74787848 - 11.4270108 30.400331 32.5932309 0.10566 0. 9. 14 1 5 0 5 0 -41.2728153 - -58.3924 14.422116 72.9459737 0. 0. 9. - 7 - 76097.3598 0.00786097995 0.108548457 - 2 -1 0 501 0 0 0. 0. 1970.368 1970.368 0. 0. 9. -1 -1 0 0 0 502 0. 0. - -81.8623156 81.8623156 0. 0. 9. 6 1 1 501 2 0 135.642445 95.6689409 - 1040.76999 1068.35322 175. 0. 9. -6 1 1 0 2 502 119.618156 -28.8319547 - 467.494429 514.116549 175. 0. 9. 24 2 1 0 2 0 -255.260601 -66.8369862 - 380.24126 469.760546 80.4139156 0. 9. -13 1 5 0 5 0 -240.941827 - -45.9899961 366.407053 440.93331 0.10566 0. 9. 14 1 5 0 5 0 -14.3187744 - -20.84699 13.8342063 28.8272364 0. 0. 9. - 7 - 164066.947 0.00789530247 0.103293121 - -1 -1 0 0 0 501 0. 0. 385.679806 385.679806 0. 0. 9. 2 -1 0 502 0 0 0. - 0. -648.159726 648.159726 0. 0. 9. 6 1 1 502 2 0 138.274357 -137.331389 - -97.0200044 279.316289 175. 0. 9. -6 1 1 0 2 501 192.548838 -82.101421 - -213.751754 346.598486 175. 0. 9. 24 2 1 0 2 0 -330.823195 219.43281 - 48.2918385 407.924756 80.4721095 0. 9. -13 1 5 0 5 0 -26.6507426 - 27.5300022 28.4585766 47.7290776 0.10566 0. 9. 14 1 5 0 5 0 -304.172453 - 191.902808 19.8332619 360.195678 0. 0. 9. - 7 - 13578.6885 0.00778505727 0.122534436 - 2 -1 0 501 0 0 0. 0. 2681.73563 2681.73563 0. 0. 9. -1 -1 0 0 0 502 0. - 0. -189.129678 189.129678 0. 0. 9. 6 1 1 501 2 0 -27.6225509 77.8719375 - 5.45002953 193.602032 175. 0. 9. -6 1 1 0 2 502 43.69857 -160.624868 - 2540.02299 2551.4803 175. 0. 9. 24 2 1 0 2 0 -16.0760191 82.7529309 - -52.8670618 125.782984 76.9411914 0. 9. -13 1 5 0 5 0 -17.7765014 - -6.97699865 4.0345399 19.5184832 0.10566 0. 9. 14 1 5 0 5 0 1.70048231 - 89.7299295 -56.9016017 106.264501 0. 0. 9. - 7 - 17649.3604 0.00779651248 0.120178779 - 2 -1 0 501 0 0 0. 0. 598.816588 598.816588 0. 0. 9. -1 -1 0 0 0 502 0. - 0. -205.401641 205.401641 0. 0. 9. 6 1 1 501 2 0 -132.171794 2.83699156 - 295.606265 368.083544 175. 0. 9. -6 1 1 0 2 502 80.1903602 -94.8972351 - -67.1020066 224.863644 175. 0. 9. 24 2 1 0 2 0 51.9814337 92.0602436 - 164.910688 211.271041 79.1375996 0. 9. -13 1 5 0 5 0 4.28507854 - -1.26728224 69.1751843 69.3194431 0.10566 0. 9. 14 1 5 0 5 0 47.6963552 - 93.3275258 95.7355039 141.951598 0. 0. 9. - 7 - 27549.4634 0.00781604418 0.116379191 - -1 -1 0 0 0 501 0. 0. 419.757504 419.757504 0. 0. 9. 2 -1 0 502 0 0 0. - 0. -440.134549 440.134549 0. 0. 9. 6 1 1 502 2 0 -108.535977 133.72712 - -45.7525329 249.762477 175. 0. 9. -6 1 1 0 2 501 105.017701 -278.864581 - -142.605394 373.83883 175. 0. 9. 24 2 1 0 2 0 3.51827591 145.137461 - 167.980882 236.290745 80.8608599 0. 9. -13 1 5 0 5 0 -22.7400336 - 70.6794887 36.041904 82.533201 0.10566 0. 9. 14 1 5 0 5 0 26.2583096 - 74.4579724 131.938978 153.757545 0. 0. 9. - 7 - 12918.2191 0.00778288262 0.122992907 - -1 -1 0 0 0 501 0. 0. 310.852384 310.852384 0. 0. 9. 2 -1 0 502 0 0 0. - 0. -922.661772 922.661772 0. 0. 9. 6 1 1 502 2 0 322.771573 239.236802 - -305.237695 534.051295 175. 0. 9. -6 1 1 0 2 501 -265.162125 -183.315714 - -406.871512 547.800174 175. 0. 9. 24 2 1 0 2 0 -57.609448 -55.9210885 - 100.299819 151.662686 80.5946641 0. 9. -13 1 5 0 5 0 0.349145659 - -0.627579803 -12.9370448 12.9573937 0.10566 0. 9. 14 1 5 0 5 0 -57.9585937 - -55.2935086 113.236864 138.705292 0. 0. 9. - 7 - 32379.4592 0.00782315421 0.115059484 - -1 -1 0 0 0 501 0. 0. 94.8671463 94.8671463 0. 0. 9. 2 -1 0 502 0 0 0. - 0. -1824.50166 1824.50166 0. 0. 9. 6 1 1 502 2 0 256.536126 100.589903 - -414.811393 527.847141 175. 0. 9. -6 1 1 0 2 501 -110.442232 -33.03377 - -333.265367 393.674385 175. 0. 9. 24 2 1 0 2 0 -146.093893 -67.556133 - -981.557758 997.847284 79.6009698 0. 9. -13 1 5 0 5 0 -135.00617 - -27.7885668 -724.448367 737.444451 0.10566 0. 9. 14 1 5 0 5 0 -11.0877232 - -39.7675662 -257.109391 260.402834 0. 0. 9. - 7 - 13434.6597 0.00778459209 0.122632196 - 2 -1 0 501 0 0 0. 0. 3259.03199 3259.03199 0. 0. 9. -1 -1 0 0 0 502 0. - 0. -93.3345658 93.3345658 0. 0. 9. 6 1 1 501 2 0 96.5500272 159.490224 - 334.240119 420.833098 175. 0. 9. -6 1 1 0 2 502 -166.31073 -113.709207 - 2801.73042 2814.41066 175. 0. 9. 24 2 1 0 2 0 69.7607029 -45.7810169 - 29.7268868 117.122795 76.6263928 0. 9. -13 1 5 0 5 0 86.356159 - -33.5694935 23.2421485 95.5222786 0.10566 0. 9. 14 1 5 0 5 0 -16.5954561 - -12.2115234 6.48473827 21.6005161 0. 0. 9. - 7 - 36263.4589 0.0078281481 0.114151707 - 4 -1 0 501 0 0 0. 0. 348.101042 348.101042 0. 0. 9. -3 -1 0 0 0 502 0. - 0. -449.640195 449.640195 0. 0. 9. 6 1 1 501 2 0 -17.2942821 171.116963 - -197.458179 314.952123 175. 0. 9. -6 1 1 0 2 502 63.2951924 -4.75839636 - -98.7762012 210.738372 175. 0. 9. 24 2 1 0 2 0 -46.0009103 -166.358566 - 194.695228 272.050742 79.4614255 0. 9. -13 1 5 0 5 0 11.0765292 - -44.012688 16.0704939 48.146424 0.10566 0. 9. 14 1 5 0 5 0 -57.0774396 - -122.345878 178.624734 223.904318 0. 0. 9. - 7 - 9719.39219 0.00777042234 0.125675997 - 1 -1 0 501 0 0 0. 0. 343.690202 343.690202 0. 0. 9. -2 -1 0 0 0 502 0. - 0. -435.036161 435.036161 0. 0. 9. 6 1 1 501 2 0 -24.437141 97.0031198 - 83.8248422 218.308001 175. 0. 9. -6 1 1 0 2 502 -31.9764049 -105.046846 - -323.289657 383.66461 175. 0. 9. -24 2 1 0 2 0 56.4135459 8.04372616 - 148.118856 176.753753 77.8171189 0. 9. 13 1 5 0 5 0 39.8036387 - 21.8428357 148.366546 155.158249 0.10566 0. 9. -14 1 5 0 5 0 16.6099072 - -13.7991096 -0.247689912 21.595504 0. 0. 9. - 7 - 9088.38655 0.00776747285 0.126326173 - 2 -1 0 501 0 0 0. 0. 2111.11553 2111.11553 0. 0. 9. -1 -1 0 0 0 502 0. - 0. -65.7572413 65.7572413 0. 0. 9. 6 1 1 501 2 0 -59.0181102 -253.875371 - 543.449825 627.613379 175. 0. 9. -6 1 1 0 2 502 68.9000266 203.690395 - 1233.96201 1264.72299 175. 0. 9. 24 2 1 0 2 0 -9.88191643 50.1849756 - 267.946452 284.536404 80.9288581 0. 9. -13 1 5 0 5 0 -39.8770888 - 29.152911 88.1622303 101.057728 0.10566 0. 9. 14 1 5 0 5 0 29.9951723 - 21.0320646 179.784222 183.478676 0. 0. 9. - 7 - 13935.9069 0.00778619024 0.122297027 - -1 -1 0 0 0 501 0. 0. 476.338293 476.338293 0. 0. 9. 2 -1 0 502 0 0 0. - 0. -482.009079 482.009079 0. 0. 9. 6 1 1 502 2 0 88.5784172 -40.4636388 - 245.434603 316.775293 175. 0. 9. -6 1 1 0 2 501 -124.752193 118.918481 - 104.315285 266.85463 175. 0. 9. 24 2 1 0 2 0 36.1737763 -78.4548423 - -355.420674 374.717449 81.397831 0. 9. -13 1 5 0 5 0 -14.6781196 - -62.6277575 -219.638014 228.863609 0.10566 0. 9. 14 1 5 0 5 0 50.8518959 - -15.8270847 -135.78266 145.85384 0. 0. 9. - 7 - 12803.7708 0.00778249464 0.123075091 - 2 -1 0 501 0 0 0. 0. 188.127491 188.127491 0. 0. 9. -1 -1 0 0 0 502 0. - 0. -451.05295 451.05295 0. 0. 9. 6 1 1 501 2 0 -74.5565228 44.086374 - -84.2354213 212.656741 175. 0. 9. -6 1 1 0 2 502 15.4737216 9.21269652 - 40.0914876 180.434579 175. 0. 9. 24 2 1 0 2 0 59.0828011 -53.2990705 - -218.781525 246.089121 79.7679848 0. 9. -13 1 5 0 5 0 75.9908021 - -46.2538166 -203.994052 222.547977 0.10566 0. 9. 14 1 5 0 5 0 -16.908001 - -7.0452539 -14.7874727 23.5411438 0. 0. 9. - 7 - 115472.438 0.00787957336 0.105631246 - 2 -1 0 501 0 0 0. 0. 4889.72807 4889.72807 0. 0. 9. -1 -1 0 0 0 502 0. - 0. -206.343005 206.343005 0. 0. 9. 6 1 1 501 2 0 -378.244282 425.793495 - 1236.18796 1372.28076 175. 0. 9. -6 1 1 0 2 502 126.140984 -212.617129 - 46.8429738 306.4912 175. 0. 9. 24 2 1 0 2 0 252.103297 -213.176365 - 3400.35413 3417.29911 80.7757075 0. 9. -13 1 5 0 5 0 85.0564673 - -42.6103329 704.470277 710.864703 0.10566 0. 9. 14 1 5 0 5 0 167.04683 - -170.566032 2695.88386 2706.4344 0. 0. 9. - 7 - 13477.9916 0.00778473256 0.122602658 - 2 -1 0 501 0 0 0. 0. 159.499537 159.499537 0. 0. 9. -1 -1 0 0 0 502 0. - 0. -610.76967 610.76967 0. 0. 9. 6 1 1 501 2 0 45.4701442 -17.1067859 - 49.129575 188.145931 175. 0. 9. -6 1 1 0 2 502 14.3975094 -41.3881128 - -286.406018 338.487328 175. 0. 9. 24 2 1 0 2 0 -59.8676535 58.4948988 - -213.993689 243.635948 80.9900425 0. 9. -13 1 5 0 5 0 -36.2856957 - 45.4835971 -208.078995 216.060845 0.10566 0. 9. 14 1 5 0 5 0 -23.5819578 - 13.0113016 -5.91469412 27.5751031 0. 0. 9. - 7 - 36258.9668 0.00782814263 0.114152692 - 1 -1 0 501 0 0 0. 0. 234.03758 234.03758 0. 0. 9. -2 -1 0 0 0 502 0. - 0. -1474.39907 1474.39907 0. 0. 9. 6 1 1 501 2 0 -49.3021901 257.534577 - 46.9636302 318.724563 175. 0. 9. -6 1 1 0 2 502 204.677739 -182.40001 - -913.028929 969.231431 175. 0. 9. -24 2 1 0 2 0 -155.375549 -75.1345673 - -374.29619 420.480657 83.1840145 0. 9. 13 1 5 0 5 0 7.79280503 - -16.1654875 -30.5314699 35.4151467 0.10566 0. 9. -14 1 5 0 5 0 -163.168354 - -58.9690798 -343.76472 385.06551 0. 0. 9. - 7 - 6524.87575 0.00775294522 0.129637023 - -1 -1 0 0 0 501 0. 0. 172.834403 172.834403 0. 0. 9. 2 -1 0 502 0 0 0. - 0. -380.814209 380.814209 0. 0. 9. 6 1 1 502 2 0 -13.4388991 10.4808664 - 36.155343 179.506717 175. 0. 9. -6 1 1 0 2 501 16.5910703 -3.94350722 - -93.6209327 199.200135 175. 0. 9. 24 2 1 0 2 0 -3.15217118 -6.53735913 - -150.514216 174.941759 88.867411 0. 9. -13 1 5 0 5 0 29.4769245 - 27.887916 -83.5272018 92.8624227 0.10566 0. 9. 14 1 5 0 5 0 -32.6290957 - -34.4252751 -66.987014 82.0793367 0. 0. 9. - 7 - 13085.9601 0.00778344516 0.122873956 - 1 -1 0 501 0 0 0. 0. 2661.79837 2661.79837 0. 0. 9. -2 -1 0 0 0 502 0. - 0. -76.8542289 76.8542289 0. 0. 9. 6 1 1 501 2 0 286.009783 7.77694847 - 521.894413 620.371547 175. 0. 9. -6 1 1 0 2 502 -207.94948 -30.588056 - 717.190505 767.571388 175. 0. 9. -24 2 1 0 2 0 -78.0603036 22.8111075 - 1345.85922 1350.70966 80.4101503 0. 9. 13 1 5 0 5 0 -94.4012987 - 22.6853667 1205.2099 1209.1142 0.10566 0. 9. -14 1 5 0 5 0 16.340995 - 0.125740851 140.649324 141.595467 0. 0. 9. - 7 - 11557.6255 0.00777803324 0.124028687 - 3 -1 0 501 0 0 0. 0. 76.5727725 76.5727725 0. 0. 9. -4 -1 0 0 0 502 0. - 0. -1567.20724 1567.20724 0. 0. 9. 6 1 1 501 2 0 31.2022321 -12.6951868 - -547.741225 576.003643 175. 0. 9. -6 1 1 0 2 502 38.5361178 -2.2039936 - -76.7304361 194.94217 175. 0. 9. -24 2 1 0 2 0 -69.7383498 14.8991804 - -866.162805 872.834198 80.7224204 0. 9. 13 1 5 0 5 0 -46.5629167 - 19.5387079 -200.807893 207.059623 0.10566 0. 9. -14 1 5 0 5 0 -23.1754331 - -4.63952752 -665.354912 665.774575 0. 0. 9. - 7 - 6957.17464 0.00775575338 0.128982592 - 2 -1 0 501 0 0 0. 0. 388.913052 388.913052 0. 0. 9. -1 -1 0 0 0 502 0. - 0. -348.55352 348.55352 0. 0. 9. 6 1 1 501 2 0 -223.559706 -45.3585241 - 81.7632108 298.90895 175. 0. 9. -6 1 1 0 2 502 243.494056 35.9993662 - 59.2283858 307.763401 175. 0. 9. 24 2 1 0 2 0 -19.9343498 9.35915788 - -100.632064 130.79422 80.5936934 0. 9. -13 1 5 0 5 0 -28.3650797 - -3.91355978 0.309161931 28.6356499 0.10566 0. 9. 14 1 5 0 5 0 8.43072996 - 13.2727177 -100.941226 102.15857 0. 0. 9. - 7 - 11308.953 0.0077770862 0.124233158 - 1 -1 0 501 0 0 0. 0. 250.279096 250.279096 0. 0. 9. -2 -1 0 0 0 502 0. - 0. -388.820067 388.820067 0. 0. 9. 6 1 1 501 2 0 25.8566119 -80.9030512 - 125.049869 231.249514 175. 0. 9. -6 1 1 0 2 502 -69.2716455 26.5717956 - -105.225634 217.26034 175. 0. 9. -24 2 1 0 2 0 43.4150336 54.3312556 - -158.365207 190.58931 80.0499577 0. 9. 13 1 5 0 5 0 66.1339168 - 36.1930125 -127.996762 148.54902 0.10566 0. 9. -14 1 5 0 5 0 -22.7188831 - 18.1382431 -30.3684454 42.0402901 0. 0. 9. - 7 - 7107.04606 0.00775668679 0.128766628 - -1 -1 0 0 0 501 0. 0. 2412.08867 2412.08867 0. 0. 9. 2 -1 0 502 0 0 0. - 0. -72.6131443 72.6131443 0. 0. 9. 6 1 1 502 2 0 263.094428 -72.2974213 - 460.56342 563.195578 175. 0. 9. -6 1 1 0 2 501 -239.595436 63.2067165 - 1217.94744 1255.15817 175. 0. 9. 24 2 1 0 2 0 -23.4989925 9.09070479 - 660.964663 666.348065 80.6883768 0. 9. -13 1 5 0 5 0 -6.4323381 - 42.3609188 455.320624 457.33216 0.10566 0. 9. 14 1 5 0 5 0 -17.0666544 - -33.2702141 205.644039 209.015905 0. 0. 9. - 7 - 12025.9973 0.00777976349 0.123656977 - 2 -1 0 501 0 0 0. 0. 115.524734 115.524734 0. 0. 9. -1 -1 0 0 0 502 0. - 0. -956.370019 956.370019 0. 0. 9. 6 1 1 501 2 0 188.360212 -55.5404912 - -197.293074 328.806741 175. 0. 9. -6 1 1 0 2 502 -115.240556 69.9387812 - -228.462967 317.792615 175. 0. 9. 24 2 1 0 2 0 -73.1196558 -14.39829 - -415.089243 425.295397 54.9845485 0. 9. -13 1 5 0 5 0 -70.6808854 - -13.2404756 -416.206994 422.373497 0.10566 0. 9. 14 1 5 0 5 0 -2.43877046 - -1.15781435 1.11775108 2.92190056 0. 0. 9. - 7 - 19942.6314 0.00780186111 0.119111914 - -1 -1 0 0 0 501 0. 0. 210.562283 210.562283 0. 0. 9. 2 -1 0 502 0 0 0. - 0. -1411.2974 1411.2974 0. 0. 9. 6 1 1 502 2 0 -91.5645369 -306.455206 - -710.045203 798.177955 175. 0. 9. -6 1 1 0 2 501 -18.9820557 271.101567 - -11.4493373 323.438503 175. 0. 9. 24 2 1 0 2 0 110.546593 35.3536393 - -479.240577 500.243225 84.2693543 0. 9. -13 1 5 0 5 0 91.4123185 - 58.7100871 -313.918235 332.186327 0.10566 0. 9. 14 1 5 0 5 0 19.1342741 - -23.3564477 -165.322342 168.056898 0. 0. 9. - 7 - 60307.1066 0.00785064882 0.110246414 - -1 -1 0 0 0 501 0. 0. 156.997539 156.997539 0. 0. 9. 2 -1 0 502 0 0 0. - 0. -1478.51406 1478.51406 0. 0. 9. 6 1 1 502 2 0 -216.880581 -146.707949 - -152.12604 349.753829 175. 0. 9. -6 1 1 0 2 501 -14.4421236 164.727679 - -845.114714 878.742091 175. 0. 9. 24 2 1 0 2 0 231.322704 -18.0197302 - -324.275763 407.015676 81.6828367 0. 9. -13 1 5 0 5 0 156.615901 - 23.9138732 -233.71648 282.354065 0.10566 0. 9. 14 1 5 0 5 0 74.7068027 - -41.9336033 -90.5592832 124.661611 0. 0. 9. - 7 - 6743.49474 0.00775438759 0.129299996 - 2 -1 0 501 0 0 0. 0. 349.340801 349.340801 0. 0. 9. -1 -1 0 0 0 502 0. - 0. -328.124953 328.124953 0. 0. 9. 6 1 1 501 2 0 185.892435 -31.9515582 - 74.0725615 267.747351 175. 0. 9. -6 1 1 0 2 502 -191.655688 47.3813074 - -132.956344 295.430669 175. 0. 9. 24 2 1 0 2 0 5.76325271 -15.4297492 - 80.0996315 114.287734 79.8401084 0. 9. -13 1 5 0 5 0 -12.6763306 - 28.3063553 47.4160431 56.6589041 0.10566 0. 9. 14 1 5 0 5 0 18.4395833 - -43.7361045 32.6835884 57.6288298 0. 0. 9. - 7 - 7902.59339 0.00776133701 0.127702163 - 1 -1 0 501 0 0 0. 0. 459.042397 459.042397 0. 0. 9. -2 -1 0 0 0 502 0. - 0. -146.516473 146.516473 0. 0. 9. 6 1 1 501 2 0 -35.6454528 -23.5964809 - 182.165804 256.196745 175. 0. 9. -6 1 1 0 2 502 71.5062982 35.6127473 - 157.633917 248.706394 175. 0. 9. -24 2 1 0 2 0 -35.8608453 -12.0162664 - -27.2737979 100.655731 89.203841 0. 9. 13 1 5 0 5 0 -43.8015548 - 16.6362556 -45.8836312 65.5794174 0.10566 0. 9. -14 1 5 0 5 0 7.9407095 - -28.652522 18.6098333 35.0763137 0. 0. 9. - 7 - 10451.0587 0.00777365318 0.124980477 - -2 -1 0 0 0 501 0. 0. 100.315411 100.315411 0. 0. 9. 1 -1 0 502 0 0 0. - 0. -819.121302 819.121302 0. 0. 9. 6 1 1 502 2 0 -82.4106214 1.90483776 - -82.5194621 210.308346 175. 0. 9. -6 1 1 0 2 501 19.3890721 0.767341035 - -535.726552 563.918844 175. 0. 9. -24 2 1 0 2 0 63.0215493 -2.6721788 - -100.559877 145.209522 83.6340857 0. 9. 13 1 5 0 5 0 79.6568618 - -16.5369353 -89.2973695 120.80032 0.10566 0. 9. -14 1 5 0 5 0 -16.6353125 - 13.8647565 -11.2625072 24.4092024 0. 0. 9. - 7 - 11549.4987 0.00777800261 0.124035289 - -1 -1 0 0 0 501 0. 0. 433.085844 433.085844 0. 0. 9. 2 -1 0 502 0 0 0. - 0. -366.588246 366.588246 0. 0. 9. 6 1 1 502 2 0 22.9964132 195.158717 - -36.2284194 265.618633 175. 0. 9. -6 1 1 0 2 501 45.7486891 -176.412861 - -124.291126 281.580759 175. 0. 9. 24 2 1 0 2 0 -68.7451023 -18.7458559 - 227.017144 252.474697 84.4357334 0. 9. -13 1 5 0 5 0 -56.2260026 - 24.2061252 94.3672061 112.483246 0.10566 0. 9. 14 1 5 0 5 0 -12.5190997 - -42.9519811 132.649937 139.991451 0. 0. 9. - 7 - 17748.2361 0.00779675692 0.120129572 - 2 -1 0 501 0 0 0. 0. 423.06777 423.06777 0. 0. 9. -1 -1 0 0 0 502 0. - 0. -179.031818 179.031818 0. 0. 9. 6 1 1 501 2 0 76.0050945 94.6604757 - 49.9982906 218.774334 175. 0. 9. -6 1 1 0 2 502 -66.5617005 11.1074583 - 68.5756958 199.703434 175. 0. 9. 24 2 1 0 2 0 -9.44339396 -105.767934 - 125.461966 183.62182 81.854958 0. 9. -13 1 5 0 5 0 21.0175386 - 0.0675096943 36.1989813 41.8583193 0.10566 0. 9. 14 1 5 0 5 0 - -30.4609326 -105.835444 89.2629849 141.7635 0. 0. 9. - 7 - 8062.18532 0.00776221389 0.127503549 - -2 -1 0 0 0 501 0. 0. 529.061279 529.061279 0. 0. 9. 1 -1 0 502 0 0 0. - 0. -222.748156 222.748156 0. 0. 9. 6 1 1 502 2 0 -129.979239 -107.542734 - 189.252232 308.060788 175. 0. 9. -6 1 1 0 2 501 147.512545 71.7298033 - 206.871104 316.742434 175. 0. 9. -24 2 1 0 2 0 -17.5333065 35.8129304 - -89.8102126 127.006213 80.4656508 0. 9. 13 1 5 0 5 0 2.97081951 - -10.7876635 9.97048362 14.9873667 0.10566 0. 9. -14 1 5 0 5 0 -20.504126 - 46.6005939 -99.7806962 112.018846 0. 0. 9. - 7 - 120718.029 0.00788155934 0.105329686 - 3 -1 0 501 0 0 0. 0. 171.248592 171.248592 0. 0. 9. -4 -1 0 0 0 502 0. - 0. -1399.80572 1399.80572 0. 0. 9. 6 1 1 501 2 0 132.594939 82.7240974 - -785.899726 820.175636 175. 0. 9. -6 1 1 0 2 502 181.578747 41.938333 - -148.443766 295.618364 175. 0. 9. -24 2 1 0 2 0 -314.173686 -124.66243 - -294.213632 455.260309 80.3396569 0. 9. 13 1 5 0 5 0 -253.103823 - -125.542218 -213.926305 354.382376 0.10566 0. 9. -14 1 5 0 5 0 -61.0698637 - 0.879787927 -80.2873272 100.877932 0. 0. 9. - 7 - 12250.8829 0.00778057072 0.123484378 - 2 -1 0 501 0 0 0. 0. 1396.36509 1396.36509 0. 0. 9. -1 -1 0 0 0 502 0. - 0. -57.9406007 57.9406007 0. 0. 9. 6 1 1 501 2 0 -105.465192 -90.4535183 - 512.101323 558.728477 175. 0. 9. -6 1 1 0 2 502 150.415752 29.149949 - 584.528354 629.104931 175. 0. 9. 24 2 1 0 2 0 -44.9505598 61.3035693 - 241.794812 266.472283 82.2439398 0. 9. -13 1 5 0 5 0 18.5376988 - -3.28005431 23.3202161 29.9707971 0.10566 0. 9. 14 1 5 0 5 0 -63.4882586 - 64.5836236 218.474596 236.501485 0. 0. 9. - 7 - 12778.4811 0.00778240845 0.123093365 - -1 -1 0 0 0 501 0. 0. 64.4555644 64.4555644 0. 0. 9. 2 -1 0 502 0 0 0. - 0. -1035.8448 1035.8448 0. 0. 9. 6 1 1 502 2 0 -98.6148003 -4.41075215 - -379.131446 429.080397 175. 0. 9. -6 1 1 0 2 501 34.6116316 -42.5985344 - -470.085877 504.597198 175. 0. 9. 24 2 1 0 2 0 64.0031687 47.0092866 - -122.171914 166.622772 80.813939 0. 9. -13 1 5 0 5 0 75.9510739 - 24.0802839 -61.4347777 100.611474 0.10566 0. 9. 14 1 5 0 5 0 -11.9479051 - 22.9290027 -60.7371365 66.0112972 0. 0. 9. - 7 - 9044.41365 0.00776725983 0.126373412 - -4 -1 0 0 0 501 0. 0. 1142.77043 1142.77043 0. 0. 9. 3 -1 0 502 0 0 0. - 0. -159.464857 159.464857 0. 0. 9. 6 1 1 502 2 0 -49.6405859 150.048042 - -17.9255379 236.484519 175. 0. 9. -6 1 1 0 2 501 45.1031119 -200.561629 - 728.882839 777.27373 175. 0. 9. -24 2 1 0 2 0 4.53747401 50.513587 - 272.348273 288.47704 80.4562586 0. 9. 13 1 5 0 5 0 -28.5216126 - 12.0152737 184.066043 186.649856 0.10566 0. 9. -14 1 5 0 5 0 33.0590866 - 38.4983134 88.2822298 101.827184 0. 0. 9. - 7 - 25863.126 0.00781326758 0.116903485 - -2 -1 0 0 0 501 0. 0. 22.8292462 22.8292462 0. 0. 9. 1 -1 0 502 0 0 0. - 0. -4247.05775 4247.05775 0. 0. 9. 6 1 1 502 2 0 -7.92446241 30.8913178 - -691.706428 714.21275 175. 0. 9. -6 1 1 0 2 501 -6.47678614 -169.39593 - -2108.62356 2122.65288 175. 0. 9. -24 2 1 0 2 0 14.4012486 138.504612 - -1423.89851 1433.02136 81.6843214 0. 9. 13 1 5 0 5 0 -17.2307427 - 100.950222 -699.047326 706.509038 0.10566 0. 9. -14 1 5 0 5 0 31.6319912 - 37.5543898 -724.851184 726.512322 0. 0. 9. - 7 - 10236.0099 0.00777274893 0.125178928 - -1 -1 0 0 0 501 0. 0. 62.8508951 62.8508951 0. 0. 9. 2 -1 0 502 0 0 0. - 0. -2379.50348 2379.50348 0. 0. 9. 6 1 1 502 2 0 231.92397 -157.399853 - -737.694152 808.319927 175. 0. 9. -6 1 1 0 2 501 -175.708852 181.969505 - -1309.4409 1345.08252 175. 0. 9. 24 2 1 0 2 0 -56.2151187 -24.5696516 - -269.51753 288.951931 84.2004282 0. 9. -13 1 5 0 5 0 -5.16463483 - -44.3639919 -165.285375 171.21362 0.10566 0. 9. 14 1 5 0 5 0 -51.0504839 - 19.7943403 -104.232155 117.738311 0. 0. 9. - 7 - 6909.96889 0.00775545525 0.129051732 - -2 -1 0 0 0 501 0. 0. 278.391811 278.391811 0. 0. 9. 1 -1 0 502 0 0 0. - 0. -396.598532 396.598532 0. 0. 9. 6 1 1 502 2 0 -127.098334 -62.2343635 - 145.57738 268.038945 175. 0. 9. -6 1 1 0 2 501 137.731395 44.2148075 - -185.828922 293.397809 175. 0. 9. -24 2 1 0 2 0 -10.6330614 18.019556 - -77.9551788 113.553588 79.8726555 0. 9. 13 1 5 0 5 0 11.8071642 - 21.3519663 -86.0685071 89.460129 0.10566 0. 9. -14 1 5 0 5 0 -22.4402256 - -3.33241034 8.11332834 24.0934592 0. 0. 9. - 7 - 18018.3142 0.00779741781 0.119996751 - -1 -1 0 0 0 501 0. 0. 91.0024642 91.0024642 0. 0. 9. 2 -1 0 502 0 0 0. - 0. -3870.75837 3870.75837 0. 0. 9. 6 1 1 502 2 0 377.581628 -55.4477062 - -1180.33259 1252.77785 175. 0. 9. -6 1 1 0 2 501 -482.679814 77.8191856 - -1260.25788 1363.05192 175. 0. 9. 24 2 1 0 2 0 105.098186 -22.3714794 - -1339.16544 1345.93106 81.3647347 0. 9. -13 1 5 0 5 0 4.79883184 - 13.927376 -472.029929 472.259744 0.10566 0. 9. 14 1 5 0 5 0 100.299354 - -36.2988554 -867.135512 873.671313 0. 0. 9. - 7 - 14181.5878 0.00778695292 0.12213777 - -1 -1 0 0 0 501 0. 0. 42.4195054 42.4195054 0. 0. 9. 2 -1 0 502 0 0 0. - 0. -1763.21854 1763.21854 0. 0. 9. 6 1 1 502 2 0 64.0506858 -69.147629 - -1025.8874 1044.96595 175. 0. 9. -6 1 1 0 2 501 -70.4250603 -18.4237855 - -394.008946 437.226685 175. 0. 9. 24 2 1 0 2 0 6.37437457 87.5714144 - -300.902692 323.445411 79.7816915 0. 9. -13 1 5 0 5 0 32.2902511 - 83.7136361 -200.148536 219.340103 0.10566 0. 9. 14 1 5 0 5 0 -25.9158765 - 3.85777838 -100.754156 104.105308 0. 0. 9. - 7 - 8231.78501 0.00776312716 0.1272974 - -1 -1 0 0 0 501 0. 0. 44.2779279 44.2779279 0. 0. 9. 2 -1 0 502 0 0 0. - 0. -2331.91124 2331.91124 0. 0. 9. 6 1 1 502 2 0 124.504977 38.3713714 - -1390.2613 1407.27586 175. 0. 9. -6 1 1 0 2 501 -95.7022427 -7.87571633 - -275.418754 340.149138 175. 0. 9. 24 2 1 0 2 0 -28.8027347 -30.4956551 - -621.953257 628.764173 82.2128268 0. 9. -13 1 5 0 5 0 -32.3055878 - -11.7519031 -593.604761 594.599345 0.10566 0. 9. 14 1 5 0 5 0 3.50285303 - -18.743752 -28.3484963 34.1648279 0. 0. 9. - 7 - 10495.5921 0.00777383813 0.124939969 - 2 -1 0 501 0 0 0. 0. 181.564748 181.564748 0. 0. 9. -1 -1 0 0 0 502 0. - 0. -574.172546 574.172546 0. 0. 9. 6 1 1 501 2 0 -8.49886096 88.3827095 - -195.689548 277.133782 175. 0. 9. -6 1 1 0 2 502 16.3760524 -151.321882 - 26.7056473 233.462371 175. 0. 9. 24 2 1 0 2 0 -7.87719148 62.939173 - -223.623898 245.14114 77.8661756 0. 9. -13 1 5 0 5 0 -32.0616331 - 13.7750869 -37.9637384 51.5650845 0.10566 0. 9. 14 1 5 0 5 0 24.1844416 - 49.1640861 -185.660159 193.576056 0. 0. 9. - 7 - 7488.98051 0.00775898025 0.128239271 - -3 -1 0 0 0 501 0. 0. 317.577647 317.577647 0. 0. 9. 2 -1 0 502 0 0 0. - 0. -1134.35391 1134.35391 0. 0. 9. 6 1 1 502 2 0 -98.4926756 264.844897 - -345.390138 479.335972 175. 0. 9. -6 1 1 0 2 501 117.251371 -239.059448 - 145.44005 350.25007 175. 0. 9. 24 2 1 0 2 0 -18.7586955 -25.7854484 - -616.82617 622.345511 76.3061791 0. 9. -13 1 5 0 5 0 -33.3032116 - -46.196745 -463.293006 466.780102 0.10566 0. 9. 14 1 5 0 5 0 14.544516 - 20.4112966 -153.533164 155.565409 0. 0. 9. - 7 - 109676.642 0.0078772726 0.105982964 - 2 -1 0 501 0 0 0. 0. 2336.9297 2336.9297 0. 0. 9. -1 -1 0 0 0 502 0. - 0. -696.151663 696.151663 0. 0. 9. 6 1 1 501 2 0 -212.033528 -393.178282 - 82.4767371 486.800565 175. 0. 9. -6 1 1 0 2 502 -91.9480291 289.256904 - -416.302123 544.1107 175. 0. 9. 24 2 1 0 2 0 303.981557 103.921378 - 1974.60343 2002.1701 80.1372898 0. 9. -13 1 5 0 5 0 37.3785723 - -0.0340829272 122.013362 127.610464 0.10566 0. 9. 14 1 5 0 5 0 - 266.602985 103.955461 1852.59006 1874.55964 0. 0. 9. - 7 - 19866.4808 0.00780169349 0.119145039 - 2 -1 0 501 0 0 0. 0. 170.945015 170.945015 0. 0. 9. -1 -1 0 0 0 502 0. - 0. -472.007142 472.007142 0. 0. 9. 6 1 1 501 2 0 -85.9659809 99.8599601 - -104.258447 242.604586 175. 0. 9. -6 1 1 0 2 502 -29.4570201 -108.333987 - -110.953628 235.668573 175. 0. 9. 24 2 1 0 2 0 115.423001 8.47402702 - -85.8500514 164.678997 79.7161373 0. 9. -13 1 5 0 5 0 116.190564 - -10.059884 -87.8657101 146.020008 0.10566 0. 9. 14 1 5 0 5 0 -0.767563323 - 18.533911 2.01565871 18.6589895 0. 0. 9. - 7 - 24639.2551 0.00781113796 0.117309082 - 2 -1 0 501 0 0 0. 0. 331.971746 331.971746 0. 0. 9. -3 -1 0 0 0 502 0. - 0. -307.428483 307.428483 0. 0. 9. 6 1 1 501 2 0 -130.399673 -5.9282335 - 98.4789391 239.504321 175. 0. 9. -6 1 1 0 2 502 15.7147534 -64.8843497 - -135.90818 231.415137 175. 0. 9. 24 2 1 0 2 0 114.684919 70.8125832 - 61.9725033 168.480771 79.8631721 0. 9. -13 1 5 0 5 0 2.14393704 - -14.0238196 13.1061086 19.3143788 0.10566 0. 9. 14 1 5 0 5 0 112.540982 - 84.8364028 48.8663947 149.166392 0. 0. 9. - 7 - 9058.56357 0.00776732849 0.126358182 - -2 -1 0 0 0 501 0. 0. 225.052789 225.052789 0. 0. 9. 1 -1 0 502 0 0 0. - 0. -1945.82165 1945.82165 0. 0. 9. 6 1 1 502 2 0 -0.36877625 48.6118665 - 170.141887 248.870471 175. 0. 9. -6 1 1 0 2 501 -6.17193153 -99.0457858 - -728.560664 755.826568 175. 0. 9. -24 2 1 0 2 0 6.54070778 50.4339192 - -1162.35008 1166.1774 79.5339389 0. 9. 13 1 5 0 5 0 -17.1600367 - 35.5395975 -1036.53143 1037.28248 0.10566 0. 9. -14 1 5 0 5 0 23.7007445 - 14.8943217 -125.818655 128.894918 0. 0. 9. - 7 - 9905.16515 0.00777125467 0.125493818 - 2 -1 0 501 0 0 0. 0. 206.649619 206.649619 0. 0. 9. -1 -1 0 0 0 502 0. - 0. -1691.79137 1691.79137 0. 0. 9. 6 1 1 501 2 0 2.59893503 -28.9863164 - 87.6387418 197.869932 175. 0. 9. -6 1 1 0 2 502 25.33736 80.4889966 - -1587.52093 1599.36492 175. 0. 9. 24 2 1 0 2 0 -27.936295 -51.5026802 - 14.7404393 101.206129 81.1938255 0. 9. -13 1 5 0 5 0 4.9190315 - -58.7415186 27.7279324 65.143014 0.10566 0. 9. 14 1 5 0 5 0 -32.8553265 - 7.2388384 -12.9874931 36.0631147 0. 0. 9. - 7 - 95259.8248 0.00787098293 0.1069576 - -1 -1 0 0 0 501 0. 0. 1119.89416 1119.89416 0. 0. 9. 2 -1 0 502 0 0 0. - 0. -223.394315 223.394315 0. 0. 9. 6 1 1 502 2 0 -74.7064757 -38.5033974 - 480.415499 518.157911 175. 0. 9. -6 1 1 0 2 501 -198.529508 -80.3651002 - -36.3628358 278.961952 175. 0. 9. 24 2 1 0 2 0 273.235983 118.868498 - 452.447183 546.168613 69.3114586 0. 9. -13 1 5 0 5 0 275.101224 - 109.246763 440.555103 530.758277 0.10566 0. 9. 14 1 5 0 5 0 -1.86524053 - 9.62173436 11.8920801 15.4103362 0. 0. 9. - 7 - 26562.7297 0.00781444062 0.116681365 - 1 -1 0 501 0 0 0. 0. 200.740372 200.740372 0. 0. 9. -4 -1 0 0 0 502 0. - 0. -535.132752 535.132752 0. 0. 9. 6 1 1 501 2 0 161.885708 -75.0033429 - -299.130503 389.790381 175. 0. 9. -6 1 1 0 2 502 -25.6162933 36.0011132 - -31.4709937 183.214896 175. 0. 9. -24 2 1 0 2 0 -136.269414 39.0022297 - -3.79088322 162.867847 80.1313769 0. 9. 13 1 5 0 5 0 -75.6980248 - 1.47344605 33.0972 82.6304896 0.10566 0. 9. -14 1 5 0 5 0 -60.5713897 - 37.5287837 -36.8880832 80.2373575 0. 0. 9. - 7 - 7120.27171 0.00775676823 0.128747823 - -1 -1 0 0 0 501 0. 0. 297.350848 297.350848 0. 0. 9. 2 -1 0 502 0 0 0. - 0. -1284.20653 1284.20653 0. 0. 9. 6 1 1 502 2 0 -84.455235 53.8558324 - -545.771424 581.828656 175. 0. 9. -6 1 1 0 2 501 64.9792831 -70.2496271 - -699.967621 727.830329 175. 0. 9. 24 2 1 0 2 0 19.4759519 16.3937948 - 258.883368 271.898388 79.1205771 0. 9. -13 1 5 0 5 0 3.01034799 - 41.7166777 212.289184 216.370174 0.10566 0. 9. 14 1 5 0 5 0 16.4656039 - -25.322883 46.594184 55.5282135 0. 0. 9. - 7 - 21481.7081 0.00780511968 0.118471882 - 2 -1 0 501 0 0 0. 0. 1720.62676 1720.62676 0. 0. 9. -1 -1 0 0 0 502 0. - 0. -157.920051 157.920051 0. 0. 9. 6 1 1 501 2 0 -378.672075 169.453132 - 1094.71077 1183.69066 175. 0. 9. -6 1 1 0 2 502 303.153685 -72.9830419 - 394.552672 532.471119 175. 0. 9. 24 2 1 0 2 0 75.51839 -96.4700905 - 73.4432657 162.385032 77.2365187 0. 9. -13 1 5 0 5 0 -15.9441879 - -20.0026335 11.7121504 28.1337539 0.10566 0. 9. 14 1 5 0 5 0 91.4625779 - -76.4674571 61.7311153 134.251278 0. 0. 9. - 7 - 10211.8954 0.00777264636 0.125201481 - -2 -1 0 0 0 501 0. 0. 28.3129586 28.3129586 0. 0. 9. 1 -1 0 502 0 0 0. - 0. -2595.26895 2595.26895 0. 0. 9. 6 1 1 502 2 0 17.8652744 50.9507954 - -1679.25586 1689.21295 175. 0. 9. -6 1 1 0 2 501 -15.282706 10.1476761 - -690.38708 712.457617 175. 0. 9. -24 2 1 0 2 0 -2.58256837 -61.0984715 - -197.313052 221.91134 81.0710159 0. 9. 13 1 5 0 5 0 -40.1647866 - -22.7806949 -71.3243615 84.9667338 0.10566 0. 9. -14 1 5 0 5 0 37.5822183 - -38.3177766 -125.98869 136.944606 0. 0. 9. - 7 - 8736.35667 0.0077657381 0.126711962 - 1 -1 0 501 0 0 0. 0. 333.560391 333.560391 0. 0. 9. -2 -1 0 0 0 502 0. - 0. -239.629021 239.629021 0. 0. 9. 6 1 1 501 2 0 92.6843241 -19.4767904 - 155.255475 252.386592 175. 0. 9. -6 1 1 0 2 502 -117.373764 -21.199809 - -79.5559907 226.230387 175. 0. 9. -24 2 1 0 2 0 24.6894397 40.6765994 - 18.231885 94.5724332 79.6705047 0. 9. 13 1 5 0 5 0 44.6895085 - 51.4258647 21.9180836 71.5694438 0.10566 0. 9. -14 1 5 0 5 0 -20.0000688 - -10.7492654 -3.68619862 23.0029893 0. 0. 9. - 7 - 23450.4644 0.00780896677 0.117725732 - -1 -1 0 0 0 501 0. 0. 244.634175 244.634175 0. 0. 9. 2 -1 0 502 0 0 0. - 0. -1360.30258 1360.30258 0. 0. 9. 6 1 1 502 2 0 280.041914 -117.672288 - -213.206991 410.307765 175. 0. 9. -6 1 1 0 2 501 -362.331356 16.6440263 - -154.812211 431.45435 175. 0. 9. 24 2 1 0 2 0 82.2894424 101.028261 - -747.649204 763.174642 80.4856468 0. 9. -13 1 5 0 5 0 -12.8202245 - 32.6826698 -139.447891 143.799306 0.10566 0. 9. 14 1 5 0 5 0 95.1096669 - 68.3455917 -608.201313 619.375335 0. 0. 9. - 7 - 7506.52015 0.00775908277 0.128215805 - -2 -1 0 0 0 501 0. 0. 69.4012293 69.4012293 0. 0. 9. 1 -1 0 502 0 0 0. - 0. -1211.83514 1211.83514 0. 0. 9. 6 1 1 502 2 0 12.3564402 -85.719621 - -197.655985 277.837045 175. 0. 9. -6 1 1 0 2 501 -44.260461 89.7756173 - -359.66203 412.311079 175. 0. 9. -24 2 1 0 2 0 31.9040208 -4.05599626 - -585.115893 591.088243 77.3975786 0. 9. 13 1 5 0 5 0 16.6572837 - -38.0894537 -206.700058 210.839268 0.10566 0. 9. -14 1 5 0 5 0 15.2467372 - 34.0334575 -378.415834 380.248975 0. 0. 9. - 7 - 10059.0378 0.00777199059 0.125345881 - -1 -1 0 0 0 501 0. 0. 138.556763 138.556763 0. 0. 9. 2 -1 0 502 0 0 0. - 0. -1073.15362 1073.15362 0. 0. 9. 6 1 1 502 2 0 -116.102102 114.156323 - -97.1580277 258.023345 175. 0. 9. -6 1 1 0 2 501 67.5427461 -79.1017341 - -135.401679 244.494829 175. 0. 9. 24 2 1 0 2 0 48.5593561 -35.0545888 - -702.037154 709.192213 80.6882509 0. 9. -13 1 5 0 5 0 49.7299533 - -10.1850092 -644.542905 646.538761 0.10566 0. 9. 14 1 5 0 5 0 -1.17059726 - -24.8695796 -57.4942496 62.6534518 0. 0. 9. - 7 - 6503.77481 0.00775280348 0.129670243 - -2 -1 0 0 0 501 0. 0. 123.111287 123.111287 0. 0. 9. 1 -1 0 502 0 0 0. - 0. -1364.37174 1364.37174 0. 0. 9. 6 1 1 502 2 0 114.770124 -8.53322236 - -1167.78418 1186.41893 175. 0. 9. -6 1 1 0 2 501 -115.655046 2.98441878 - -33.5497772 212.451368 175. 0. 9. -24 2 1 0 2 0 0.884921398 5.54880358 - -39.9265016 88.612729 78.9082879 0. 9. 13 1 5 0 5 0 2.34523934 -34.565522 - -33.0616903 47.8890592 0.10566 0. 9. -14 1 5 0 5 0 -1.46031794 40.1143256 - -6.86481123 40.7236698 0. 0. 9. - 7 - 17299.0699 0.00779563545 0.120355682 - -2 -1 0 0 0 501 0. 0. 88.1692562 88.1692562 0. 0. 9. 1 -1 0 502 0 0 0. - 0. -954.498393 954.498393 0. 0. 9. 6 1 1 502 2 0 64.1590071 -40.3299931 - -393.311543 437.10623 175. 0. 9. -6 1 1 0 2 501 -153.047564 -13.7596726 - -221.848941 321.643962 175. 0. 9. -24 2 1 0 2 0 88.8885566 54.0896657 - -251.168653 283.917458 81.8325316 0. 9. 13 1 5 0 5 0 100.704413 - 44.6503798 -242.827771 266.646531 0.10566 0. 9. -14 1 5 0 5 0 -11.8158565 - 9.4392859 -8.34088166 17.2709261 0. 0. 9. - 7 - 77062.3638 0.00786154052 0.108457946 - -1 -1 0 0 0 501 0. 0. 404.074516 404.074516 0. 0. 9. 2 -1 0 502 0 0 0. - 0. -471.201447 471.201447 0. 0. 9. 6 1 1 502 2 0 240.763593 -208.690468 - -164.53242 399.017213 175. 0. 9. -6 1 1 0 2 501 -38.2325868 36.7272371 - -6.80792517 182.980787 175. 0. 9. 24 2 1 0 2 0 -202.531007 171.963231 - 104.213414 293.277962 67.5378873 0. 9. -13 1 5 0 5 0 -102.478151 - 121.282245 82.8824944 179.110785 0.10566 0. 9. 14 1 5 0 5 0 -100.052855 - 50.680986 21.3309198 114.167177 0. 0. 9. - 7 - 13152.3295 0.00778366577 0.122827374 - 2 -1 0 501 0 0 0. 0. 1637.75443 1637.75443 0. 0. 9. -1 -1 0 0 0 502 0. - 0. -54.5613303 54.5613303 0. 0. 9. 6 1 1 501 2 0 57.0286346 3.08838239 - 448.61856 484.917948 175. 0. 9. -6 1 1 0 2 502 -61.5016506 -84.6979351 - 285.874224 351.148494 175. 0. 9. 24 2 1 0 2 0 4.473016 81.6095527 - 848.700318 856.249321 78.680001 0. 9. -13 1 5 0 5 0 38.552993 - 23.1525776 390.172756 392.75586 0.10566 0. 9. 14 1 5 0 5 0 -34.079977 - 58.456975 458.527562 463.493461 0. 0. 9. - 7 - 11648.7182 0.00777837512 0.123955051 - -1 -1 0 0 0 501 0. 0. 275.184403 275.184403 0. 0. 9. 2 -1 0 502 0 0 0. - 0. -309.327791 309.327791 0. 0. 9. 6 1 1 502 2 0 23.9383996 133.081543 - -126.012827 254.534824 175. 0. 9. -6 1 1 0 2 501 9.69979592 -69.4813272 - -0.669747158 188.539623 175. 0. 9. 24 2 1 0 2 0 -33.6381955 -63.6002159 - 92.5391857 141.437747 79.14935 0. 9. -13 1 5 0 5 0 14.0664045 - 3.21572827 -3.74147751 14.9068596 0.10566 0. 9. 14 1 5 0 5 0 -47.7046 - -66.8159442 96.2806632 126.530887 0. 0. 9. - 7 - 26188.6883 0.00781381731 0.116799278 - 1 -1 0 501 0 0 0. 0. 3239.74692 3239.74692 0. 0. 9. -2 -1 0 0 0 502 0. - 0. -38.3717515 38.3717515 0. 0. 9. 6 1 1 501 2 0 -147.726071 -33.5002203 - 1111.32522 1135.17135 175. 0. 9. -6 1 1 0 2 502 56.7559723 140.462489 - 1761.17699 1776.32214 175. 0. 9. -24 2 1 0 2 0 90.9700983 -106.962269 - 328.872966 366.625187 80.8709711 0. 9. 13 1 5 0 5 0 9.95398713 - -63.8911437 185.097192 196.066677 0.10566 0. 9. -14 1 5 0 5 0 81.0161112 - -43.0711254 143.775774 170.55851 0. 0. 9. - 7 - 15745.5596 0.00779152159 0.121193027 - 2 -1 0 501 0 0 0. 0. 1420.51096 1420.51096 0. 0. 9. -1 -1 0 0 0 502 0. - 0. -64.9545666 64.9545666 0. 0. 9. 6 1 1 501 2 0 -20.9068046 -8.96766544 - 303.77859 351.317442 175. 0. 9. -6 1 1 0 2 502 -28.0111933 91.9157609 - 953.470353 974.147754 175. 0. 9. 24 2 1 0 2 0 48.9179979 -82.9480954 - 98.3074536 160.000333 81.6234892 0. 9. -13 1 5 0 5 0 -8.50379557 - -37.4543167 1.2890905 38.4293286 0.10566 0. 9. 14 1 5 0 5 0 57.4217935 - -45.4937788 97.0183631 121.571004 0. 0. 9. - 7 - 14956.2584 0.00778927494 0.121655633 - 2 -1 0 501 0 0 0. 0. 171.861763 171.861763 0. 0. 9. -1 -1 0 0 0 502 0. - 0. -1115.3977 1115.3977 0. 0. 9. 6 1 1 501 2 0 13.1228708 -194.522351 - -60.2992955 268.834819 175. 0. 9. -6 1 1 0 2 502 2.19987213 103.696862 - -868.17455 891.689367 175. 0. 9. 24 2 1 0 2 0 -15.322743 90.8254889 - -15.0620915 126.735277 85.7374358 0. 9. -13 1 5 0 5 0 -49.1621635 - 61.673736 2.06955915 78.8977964 0.10566 0. 9. 14 1 5 0 5 0 33.8394206 - 29.1517529 -17.1316506 47.8374804 0. 0. 9. - 7 - 18120.1525 0.00779766447 0.11994726 - 1 -1 0 501 0 0 0. 0. 2641.57596 2641.57596 0. 0. 9. -2 -1 0 0 0 502 0. - 0. -24.2148798 24.2148798 0. 0. 9. 6 1 1 501 2 0 26.284384 -34.1049785 - 901.349121 919.189456 175. 0. 9. -6 1 1 0 2 502 72.5722864 -9.19985667 - 942.957788 961.844979 175. 0. 9. -24 2 1 0 2 0 -98.8566704 43.3048352 - 773.054175 784.756408 81.1289884 0. 9. 13 1 5 0 5 0 13.2426867 - 10.3363636 140.486575 141.487449 0.10566 0. 9. -14 1 5 0 5 0 -112.099357 - 32.9684716 632.567599 643.268959 0. 0. 9. - 7 - 6892.69506 0.00775534566 0.129077169 - 2 -1 0 501 0 0 0. 0. 653.953102 653.953102 0. 0. 9. -1 -1 0 0 0 502 0. - 0. -113.589564 113.589564 0. 0. 9. 6 1 1 501 2 0 -31.3598128 149.31018 - 285.395981 367.903294 175. 0. 9. -6 1 1 0 2 502 45.0746484 -134.065645 - 178.715419 287.349129 175. 0. 9. 24 2 1 0 2 0 -13.7148356 -15.2445349 - 76.2521374 112.290242 79.8386963 0. 9. -13 1 5 0 5 0 -19.6337846 - -43.5430758 66.3005738 81.7145164 0.10566 0. 9. 14 1 5 0 5 0 5.91894892 - 28.2985409 9.95156358 30.5757255 0. 0. 9. - 7 - 14420.2589 0.00778768142 0.121986064 - -2 -1 0 0 0 501 0. 0. 1913.74381 1913.74381 0. 0. 9. 1 -1 0 502 0 0 0. - 0. -92.9305324 92.9305324 0. 0. 9. 6 1 1 502 2 0 -63.6063539 -264.953794 - 848.015585 907.745402 175. 0. 9. -6 1 1 0 2 501 151.045067 247.560466 - 454.519089 566.845128 175. 0. 9. -24 2 1 0 2 0 -87.4387128 17.3933279 - 518.278601 532.08381 80.9469999 0. 9. 13 1 5 0 5 0 -97.4959977 - 7.38248767 355.902833 369.08916 0.10566 0. 9. -14 1 5 0 5 0 10.0572849 - 10.0108403 162.375768 162.99465 0. 0. 9. - 7 - 20630.1312 0.00780334637 0.118819264 - -2 -1 0 0 0 501 0. 0. 210.863525 210.863525 0. 0. 9. 1 -1 0 502 0 0 0. - 0. -593.338057 593.338057 0. 0. 9. 6 1 1 502 2 0 -78.484128 -127.484081 - -117.179426 258.394983 175. 0. 9. -6 1 1 0 2 501 74.3607684 246.399709 - -254.374941 401.962624 175. 0. 9. -24 2 1 0 2 0 4.12335962 -118.915628 - -10.920165 143.843976 80.0868951 0. 9. 13 1 5 0 5 0 7.72249755 - 2.84764734 -20.0619299 21.6849777 0.10566 0. 9. -14 1 5 0 5 0 -3.59913793 - -121.763275 9.14176485 122.158998 0. 0. 9. - 7 - 11096.8281 0.00777626193 0.124411712 - -1 -1 0 0 0 501 0. 0. 98.8354574 98.8354574 0. 0. 9. 2 -1 0 502 0 0 0. - 0. -708.235721 708.235721 0. 0. 9. 6 1 1 502 2 0 14.8204696 -75.6380819 - -147.400364 241.438674 175. 0. 9. -6 1 1 0 2 501 31.8189412 26.1467596 - -412.617747 450.082773 175. 0. 9. 24 2 1 0 2 0 -46.6394108 49.4913223 - -49.3821527 115.549731 79.3001751 0. 9. -13 1 5 0 5 0 -34.3841912 - 70.6630076 -29.1933974 83.831968 0.10566 0. 9. 14 1 5 0 5 0 -12.2552197 - -21.1716853 -20.1887553 31.7177633 0. 0. 9. - 7 - 8444.22209 0.0077642452 0.127045998 - -1 -1 0 0 0 501 0. 0. 415.093919 415.093919 0. 0. 9. 2 -1 0 502 0 0 0. - 0. -184.976143 184.976143 0. 0. 9. 6 1 1 502 2 0 -121.194944 93.3376402 - 190.280411 300.386025 175. 0. 9. -6 1 1 0 2 501 85.741659 -66.5965819 - 33.9411546 208.719282 175. 0. 9. 24 2 1 0 2 0 35.4532847 -26.7410583 - 5.89621025 90.9647538 79.1694483 0. 9. -13 1 5 0 5 0 40.4259138 - 18.5983772 8.39933745 45.2848118 0.10566 0. 9. 14 1 5 0 5 0 -4.97262915 - -45.3394355 -2.5031272 45.679942 0. 0. 9. - 7 - 11570.7856 0.00777808279 0.124018008 - -2 -1 0 0 0 501 0. 0. 147.66877 147.66877 0. 0. 9. 1 -1 0 502 0 0 0. - 0. -762.157976 762.157976 0. 0. 9. 6 1 1 502 2 0 -59.6661864 -13.8921552 - -486.636136 520.761725 175. 0. 9. -6 1 1 0 2 501 75.0937022 83.6099786 - 16.587985 208.638093 175. 0. 9. -24 2 1 0 2 0 -15.4275157 -69.7178234 - -144.441055 180.426927 81.1915909 0. 9. 13 1 5 0 5 0 -23.8393809 - 9.79442867 -20.4930159 32.9275231 0.10566 0. 9. -14 1 5 0 5 0 8.41186518 - -79.5122521 -123.948039 147.499404 0. 0. 9. - 7 - 8571.10455 0.00776489978 0.126899302 - 2 -1 0 501 0 0 0. 0. 262.81202 262.81202 0. 0. 9. -1 -1 0 0 0 502 0. - 0. -227.066457 227.066457 0. 0. 9. 6 1 1 501 2 0 -29.1392102 -20.5509565 - 69.7906153 191.747661 175. 0. 9. -6 1 1 0 2 502 74.5251478 26.7974523 - -70.2141627 204.51682 175. 0. 9. 24 2 1 0 2 0 -45.3859376 -6.24649585 - 36.1691108 93.6139966 73.1879343 0. 9. -13 1 5 0 5 0 -55.0356012 - 19.5040755 29.0052321 65.1969402 0.10566 0. 9. 14 1 5 0 5 0 9.64966354 - -25.7505714 7.16387874 28.4170564 0. 0. 9. - 7 - 148068.982 0.00789070159 0.103965305 - -1 -1 0 0 0 501 0. 0. 1063.10094 1063.10094 0. 0. 9. 2 -1 0 502 0 0 0. - 0. -496.21877 496.21877 0. 0. 9. 6 1 1 502 2 0 56.7973552 236.020072 - 429.205568 523.234014 175. 0. 9. -6 1 1 0 2 501 -9.97064289 137.34843 - 474.788386 524.416834 175. 0. 9. 24 2 1 0 2 0 -46.8267123 -373.368502 - -337.111784 511.668862 81.0178343 0. 9. -13 1 5 0 5 0 -28.528934 - -33.9396126 -29.7671639 53.4031141 0.10566 0. 9. 14 1 5 0 5 0 -18.2977783 - -339.428889 -307.34462 458.265748 0. 0. 9. - 7 - 27637.7455 0.00781618487 0.11635276 - -1 -1 0 0 0 501 0. 0. 758.495786 758.495786 0. 0. 9. 2 -1 0 502 0 0 0. - 0. -194.554099 194.554099 0. 0. 9. 6 1 1 502 2 0 -137.096696 -1.36315735 - 514.385628 560.370357 175. 0. 9. -6 1 1 0 2 501 -0.947567324 47.2905377 - -47.7488729 187.462657 175. 0. 9. 24 2 1 0 2 0 138.044264 -45.9273803 - 97.3049315 205.216872 107.145564 0. 9. -13 1 5 0 5 0 81.2047166 - 27.6481203 61.6637164 105.645869 0.10566 0. 9. 14 1 5 0 5 0 56.8395471 - -73.5755007 35.6412152 99.571003 0. 0. 9. - 7 - 8459.44373 0.00776432424 0.127028265 - -1 -1 0 0 0 501 0. 0. 182.204064 182.204064 0. 0. 9. 2 -1 0 502 0 0 0. - 0. -563.74405 563.74405 0. 0. 9. 6 1 1 502 2 0 -26.7611443 -22.3904697 - -266.795857 320.971215 175. 0. 9. -6 1 1 0 2 501 -3.52390275 -10.3212584 - 94.2180412 199.050209 175. 0. 9. 24 2 1 0 2 0 30.285047 32.7117281 - -208.962171 225.92669 73.4196095 0. 9. -13 1 5 0 5 0 -2.12208519 - 43.8365444 -68.559464 81.4036678 0.10566 0. 9. 14 1 5 0 5 0 32.4071322 - -11.1248163 -140.402707 144.523022 0. 0. 9. diff --git a/Generators/AcerMC_i/share/inparmAcerMC.dat b/Generators/AcerMC_i/share/inparmAcerMC.dat deleted file mode 100644 index e2ae6a47881ee6e8cac9a66756b40bbf7b654df6..0000000000000000000000000000000000000000 --- a/Generators/AcerMC_i/share/inparmAcerMC.dat +++ /dev/null @@ -1,19 +0,0 @@ - ----------------------------------------------------------------------------- - - AcerMC 1.0 (February 2002), B. P. Kersevan, E. Richter-Was - - Header file for process: - q + q~ -> (W->) l nu_l t t~ (MG) ID= 4 - - ----------------------------------------------------------------------------- - - Beam Code: 2212 2212 - Beam Energy (GeV): 7000.00 - PDF Choice: 4 55 - Event File: AcerMC_p004_r000696.events - # of stored events: 100 - Cross-section (pb): 0.633082E-01 +/- 0.286712E-02 - - ----------------------------------------------------------------------------- - - Please consult the control card output for more info! diff --git a/Generators/AcerMC_i/share/jobOptions.AcerMCHerwig.AtlasTauolaPhotos.py b/Generators/AcerMC_i/share/jobOptions.AcerMCHerwig.AtlasTauolaPhotos.py deleted file mode 100644 index a7bfffbba8b64f0f8e6a022fa52a6d337b26dc8f..0000000000000000000000000000000000000000 --- a/Generators/AcerMC_i/share/jobOptions.AcerMCHerwig.AtlasTauolaPhotos.py +++ /dev/null @@ -1,79 +0,0 @@ -############################################################### -# -# Job options file -# -#============================================================== -#-------------------------------------------------------------- -# General Application Configuration options -#-------------------------------------------------------------- - -include( "AthenaCommon/Atlas_Gen.UnixStandardJob.py" ) -include( "PartPropSvc/PartPropSvc.py" ) - -#-------------------------------------------------------------- -# Private Application Configuration options -#-------------------------------------------------------------- -theApp.Dlls += ["TruthExamples","Herwig_i","Tauola_i","Photos_i"] -theApp.TopAlg = ["Herwig","Tauola","Photos","PrintMC"] -theApp.ExtSvc += ["AtRndmGenSvc"] -# Set output level threshold (2=DEBUG, 3=INFO, 4=WARNING, 5=ERROR, 6=FATAL ) -MessageSvc.OutputLevel = 2 -#-------------------------------------------------------------- -# Event related parameters -#-------------------------------------------------------------- -# Number of events to be processed (default is 10) -theApp.EvtMax = 10 -#-------------------------------------------------------------- -# Algorithms Private Options -#-------------------------------------------------------------- -AtRndmGenSvc = Service( "AtRndmGenSvc" ) -AtRndmGenSvc.Seeds = ["HERWIG 330020611 841000366", "HERWIG_INIT 824021 3247532", - "TAUOLA 1048027510 345500367","TAUOLA_INIT 920021 3347532", - "PHOTOS 2045027510 245500367","PHOTOS_INIT 930021 3447532"] -# AtRndmGenSvc.ReadFromFile = true; -Herwig = Algorithm( "Herwig" ) -Herwig.HerwigCommand = [ "iproc acermc", - "acset12 0", - "rmass 5 4.8", - "rmass 6 175.0", - "modpdf 55", - "autpdf CTEQ ", - "taudec TAUOLA", - "maxpr 5"] -Tauola = Algorithm( "Tauola" ) -Tauola.TauolaCommand = [ "tauola polar 1", - "tauola radcor 1", - "tauola phox 0.01", - "tauola dmode 0", - "tauola jak1 0", - "tauola jak2 0"] -Photos = Algorithm( "Photos" ) -Photos.PhotosCommand = [ "photos pmode 1", - "photos xphcut 0.01", - "photos alpha -1.", - "photos interf 1", - "photos isec 1", - "photos itre 0", - "photos iexp 0", - "photos iftop 0"] - -#-- PrintMC -PrintMC = Algorithm( "PrintMC" ) -#event SVC key -PrintMC.McEventKey = "GEN_EVENT" -# do you want output at all? TRUE/FALSE -PrintMC.VerboseOutput = TRUE -# Event print style Vertex(traditional)/Barcode(barcode ordered) -PrintMC.PrintStyle = "Barcode" -# First and last event to print, if no last events => job end are printed -PrintMC.FirstEvent = 1 -PrintMC.LastEvent = 10 - -#--------------------------------------------------------------- -# Ntuple service output -#--------------------------------------------------------------- -#============================================================== -# -# End of job options file -# -############################################################### diff --git a/Generators/AcerMC_i/share/jobOptions.AcerMCHerwig.py b/Generators/AcerMC_i/share/jobOptions.AcerMCHerwig.py deleted file mode 100644 index 49677f3aaeddb8958e7495ac2f1523e09a7dd39b..0000000000000000000000000000000000000000 --- a/Generators/AcerMC_i/share/jobOptions.AcerMCHerwig.py +++ /dev/null @@ -1,54 +0,0 @@ -############################################################### -# -# Job options file -# -#============================================================== -#-------------------------------------------------------------- -# General Application Configuration options -#-------------------------------------------------------------- -include( "AthenaCommon/Atlas_Gen.UnixStandardJob.py" ) -include( "PartPropSvc/PartPropSvc.py" ) - -#-------------------------------------------------------------- -# Private Application Configuration options -#-------------------------------------------------------------- -theApp.Dlls += [ "Herwig_i","TruthExamples" ] -theApp.TopAlg = ["Herwig","PrintMC"] -theApp.ExtSvc += ["AtRndmGenSvc"] -# Set output level threshold (2=DEBUG, 3=INFO, 4=WARNING, 5=ERROR, 6=FATAL ) -MessageSvc.OutputLevel = 3 -#-------------------------------------------------------------- -# Event related parameters -#-------------------------------------------------------------- -# Number of events to be processed (default is 10) -theApp.EvtMax = 5 -#-------------------------------------------------------------- -# Algorithms Private Options -#-------------------------------------------------------------- -AtRndmGenSvc = Service( "AtRndmGenSvc" ) -AtRndmGenSvc.Seeds = ["HERWIG 330020611 841000366", "HERWIG_INIT 824021 3247532"] -Herwig = Algorithm( "Herwig" ) -Herwig.HerwigCommand = ["iproc acermc","acset12 0","rmass 5 4.8","rmass 6 175.0"] - - -#-- PrintMC -PrintMC = Algorithm( "PrintMC" ) -#event SVC key -PrintMC.McEventKey = "GEN_EVENT" -# do you want output at all? TRUE/FALSE -PrintMC.VerboseOutput = TRUE -# Event print style Vertex(traditional)/Barcode(barcode ordered) -PrintMC.PrintStyle = "Barcode" -# First and last event to print, if no last events => job end are printed -PrintMC.FirstEvent = 1 -PrintMC.LastEvent = 5 - - -#--------------------------------------------------------------- -# Ntuple service output -#--------------------------------------------------------------- -#============================================================== -# -# End of job options file -# -############################################################### diff --git a/Generators/AcerMC_i/share/jobOptions.AcerMCPythia.AtlasTauolaPhotos.py b/Generators/AcerMC_i/share/jobOptions.AcerMCPythia.AtlasTauolaPhotos.py deleted file mode 100644 index 47a0540fefc9d2159a4512c8b4784746f2704ca9..0000000000000000000000000000000000000000 --- a/Generators/AcerMC_i/share/jobOptions.AcerMCPythia.AtlasTauolaPhotos.py +++ /dev/null @@ -1,79 +0,0 @@ -############################################################### -# -# Job options file -# -#============================================================== -#-------------------------------------------------------------- -# General Application Configuration options -#-------------------------------------------------------------- - -include( "AthenaCommon/Atlas_Gen.UnixStandardJob.py" ) -include( "PartPropSvc/PartPropSvc.py" ) - -#-------------------------------------------------------------- -# Private Application Configuration options -#-------------------------------------------------------------- -theApp.Dlls += ["TruthExamples","Pythia_i","Tauola_i","Photos_i" ] -theApp.TopAlg = ["Pythia","Tauola","Photos","PrintMC"] -theApp.ExtSvc += ["AtRndmGenSvc"] -# Set output level threshold (2=DEBUG, 3=INFO, 4=WARNING, 5=ERROR, 6=FATAL ) -MessageSvc.OutputLevel = 2 -#-------------------------------------------------------------- -# Event related parameters -#-------------------------------------------------------------- -# Number of events to be processed (default is 10) -theApp.EvtMax = 10 -#-------------------------------------------------------------- -# Algorithms Private Options -#-------------------------------------------------------------- -AtRndmGenSvc = Service( "AtRndmGenSvc" ) -AtRndmGenSvc.Seeds = ["PYTHIA 4789899 989240512", "PYTHIA_INIT 820021 2347532", - "TAUOLA 1048027510 345500367","TAUOLA_INIT 920021 3347532", - "PHOTOS 2045027510 245500367","PHOTOS_INIT 930021 3447532"] -# AtRndmGenSvc.ReadFromFile = true; -Pythia = Algorithm( "Pythia" ) -Pythia.PythiaCommand = [ "pyinit user acermc", - "acermc acset12 0", - "pydat1 parj 90 1 20000.", - "pydat3 mdcy 15 1 0", - "pyinit pylistf 1", - "pyinit dumpr 1 5", - "pypars mstp 128 0"] -Tauola = Algorithm( "Tauola" ) -Tauola.TauolaCommand = [ "tauola polar 1", - "tauola radcor 1", - "tauola phox 0.01", - "tauola dmode 0", - "tauola jak1 0", - "tauola jak2 0"] -Photos = Algorithm( "Photos" ) -Photos.PhotosCommand = [ "photos pmode 1", - "photos xphcut 0.01", - "photos alpha -1.", - "photos interf 1", - "photos isec 1", - "photos itre 0", - "photos iexp 0", - "photos iftop 0"] - -#-- PrintMC -PrintMC = Algorithm( "PrintMC" ) -#event SVC key -PrintMC.McEventKey = "GEN_EVENT" -# do you want output at all? TRUE/FALSE -PrintMC.VerboseOutput = TRUE -# Event print style Vertex(traditional)/Barcode(barcode ordered) -PrintMC.PrintStyle = "Barcode" -# First and last event to print, if no last events => job end are printed -PrintMC.FirstEvent = 1 -PrintMC.LastEvent = 10 - - -#--------------------------------------------------------------- -# Ntuple service output -#--------------------------------------------------------------- -#============================================================== -# -# End of job options file -# -############################################################### diff --git a/Generators/AcerMC_i/share/jobOptions.AcerMCPythia.py b/Generators/AcerMC_i/share/jobOptions.AcerMCPythia.py deleted file mode 100644 index dc34e66f2bb5113520c83414c1f533d97d00c2d3..0000000000000000000000000000000000000000 --- a/Generators/AcerMC_i/share/jobOptions.AcerMCPythia.py +++ /dev/null @@ -1,56 +0,0 @@ -############################################################### -# -# Job options file -# -#============================================================== -#-------------------------------------------------------------- -# General Application Configuration options -#-------------------------------------------------------------- - -include( "AthenaCommon/Atlas_Gen.UnixStandardJob.py" ) -include( "PartPropSvc/PartPropSvc.py" ) - -#-------------------------------------------------------------- -# Private Application Configuration options -#-------------------------------------------------------------- -theApp.Dlls += [ "TruthExamples", "Pythia_i" ] -theApp.TopAlg = ["Pythia","PrintMC"] -theApp.ExtSvc += ["AtRndmGenSvc"] -# Set output level threshold (2=DEBUG, 3=INFO, 4=WARNING, 5=ERROR, 6=FATAL ) -MessageSvc.OutputLevel = 3 -#-------------------------------------------------------------- -# Event related parameters -#-------------------------------------------------------------- -# Number of events to be processed (default is 10) -theApp.EvtMax = 5 -#-------------------------------------------------------------- -# Algorithms Private Options -#-------------------------------------------------------------- -AtRndmGenSvc = Service( "AtRndmGenSvc" ) -AtRndmGenSvc.Seeds = ["PYTHIA 4789899 989240512", "PYTHIA_INIT 820021 2347532"] -# AtRndmGenSvc.ReadFromFile = true; -#Pythia.PythiaCommand = {"pyinit user acermc","acermc acset12 0","pyinit pylistf 1","pyinit dumpr 1 1"}; -# with MSTP(128)=0 -Pythia = Algorithm( "Pythia" ) -Pythia.PythiaCommand = ["pyinit user acermc","acermc acset12 0","pyinit pylistf 1","pyinit dumpr 1 1","pypars mstp 128 0"] - -#-- PrintMC -PrintMC = Algorithm( "PrintMC" ) -#event SVC key -PrintMC.McEventKey = "GEN_EVENT" -# do you want output at all? TRUE/FALSE -PrintMC.VerboseOutput = TRUE -# Event print style Vertex(traditional)/Barcode(barcode ordered) -PrintMC.PrintStyle = "Barcode" -# First and last event to print, if no last events => job end are printed -PrintMC.FirstEvent = 1 -PrintMC.LastEvent = 5 - -#--------------------------------------------------------------- -# Ntuple service output -#--------------------------------------------------------------- -#============================================================== -# -# End of job options file -# -############################################################### diff --git a/Generators/AcerMC_i/src/AcerMC_acset.cxx b/Generators/AcerMC_i/src/AcerMC_acset.cxx deleted file mode 100644 index 4c82044a68a3d52a84d075a758ffe7d02a8181d7..0000000000000000000000000000000000000000 --- a/Generators/AcerMC_i/src/AcerMC_acset.cxx +++ /dev/null @@ -1,26 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -//-------------------------------------------------------------------------- -// AcerMC acset common block access -// Borut Paul Kersevan (February 2003) -//------------------------------------------------------------------------ - -#include "AcerMC_i/AcerMC_acset.h" -// set pointer to zero at start -AcerMC_acset::ACERMC_ACSET* AcerMC_acset::s_acermc_acset =0; -// Constructor -AcerMC_acset::AcerMC_acset() -{ -} -// Destructor -AcerMC_acset::~AcerMC_acset() -{ -} -// access acset12 in common -int& AcerMC_acset::acset12() { - init(); - return s_acermc_acset->acset12; -} - diff --git a/Generators/AcerMC_i/src/AcerMC_acset12-hw.F b/Generators/AcerMC_i/src/AcerMC_acset12-hw.F deleted file mode 100644 index 419f2c2d283a89f367f10823fada6e9b126c081d..0000000000000000000000000000000000000000 --- a/Generators/AcerMC_i/src/AcerMC_acset12-hw.F +++ /dev/null @@ -1,265 +0,0 @@ - -c Switching routines that enables the choice of top pair decays -c for AcerMC 1.x generator as done in the fortran setup -c Adapted for Herwig 6.5 by Borut Paul Kersevan (February 2003) - SUBROUTINE ACERMC_ACSET12_HW(IAMOD) - -#include "HERWIG65.INC" -#include "GeneratorFortranCommon/heprup.inc" -#include "GeneratorFortranCommon/hepeup.inc" -#include "AcerMC_i/AcerMC_acset.inc" - - INTEGER IAMOD,IACPROC,ISEM,IDBOS,IWP,JJ - DOUBLE PRECISION VLBRAT_T,VLBRAT_W,VLBRAT,ACBRAT,RWP,BRTMP - LOGICAL NOIMP -C W/Z/H BR ARRAY FROM HERWIG - DOUBLE PRECISION BRMODE(12,3) - DATA BRMODE/ - & 0.321D0,0.321D0,0.000D0,0.017D0,0.017D0,0.108D0,0.108D0,0.108D0, - & 4*0.0D0,0.321D0,0.321D0,0.000D0,0.017D0,0.017D0,0.108D0,0.108D0, - & 0.108D0,4*0.0D0,0.154D0,0.120D0,0.154D0,0.120D0,0.152D0,0.000D0, - & 0.033D0,0.033D0,0.033D0,0.067D0,0.067D0,0.067D0/ - - DOUBLE PRECISION HWRGEN - EXTERNAL HWRGEN - - IACPROC=LPRUP(NPRUP)-600 - NOIMP=(IACPROC.EQ.1.OR.IACPROC.EQ.2.OR.IACPROC.EQ.4.OR. - # IACPROC.EQ.7.OR.IACPROC.EQ.8.OR.IACPROC.EQ.9.OR. - # IACPROC.EQ.10.OR.IACPROC.EQ.92.OR.IACPROC.EQ.93) ! ONLY RELEVANT CHANS - IF (.NOT.NOIMP) THEN - ACSET12=0 - RETURN - ENDIF - - ISEM=ACSET12 - - IF (IAMOD.EQ.-1) THEN ! INIT - -C 'SEMI-LEPTONIC' DECAYS FOR TOP PAIRS - BR - - IDBOS=198 ! W DECAY - - IF (ISEM.GE.1) THEN - VLBRAT_T=(1.D0)**2 ! FORCE ONLY T-B DECAYS BR=1 IN HERWIG - VLBRAT_W=0.D0 - DO JJ=1,5 ! HADRONIC W BR - VLBRAT_W=VLBRAT_W+BRMODE(JJ,IDBOS-197) - ENDDO - IF (ISEM.EQ.1) THEN ! ELECTRON BR - VLBRAT_W=VLBRAT_W*BRMODE(6,IDBOS-197) - ELSEIF (ISEM.EQ.2) THEN ! MUON BR - VLBRAT_W=VLBRAT_W*BRMODE(7,IDBOS-197) - ELSEIF (ISEM.EQ.3) THEN ! TAU BR - VLBRAT_W=VLBRAT_W*BRMODE(8,IDBOS-197) - ELSEIF (ISEM.EQ.4) THEN ! E+MU BR - VLBRAT_W=VLBRAT_W*(BRMODE(6,IDBOS-197)+BRMODE(7,IDBOS-197)) - ELSEIF (ISEM.EQ.5) THEN ! SL DECAY MODE FOR WTT -> W^(+/-) E/MU^(+/-) JJ BB - IF (IACPROC.NE.4) THEN - WRITE(*,*) - #' ----< STOPPED BY ACERMC >----' - WRITE(*,*) - #' ----< ACSET12=5 WORKS ONLY FOR ONLY FOR PROC=4 >----' - STOP - ENDIF - VLBRAT_W=0.5D0*VLBRAT_W* - # (BRMODE(6,IDBOS-197)+BRMODE(7,IDBOS-197)) - ENDIF - VLBRAT=VLBRAT_T*VLBRAT_W - ACBRAT=2.D0*VLBRAT ! SEMI-LEPTONICS ALLOW 2 OPTIONS 1-2+2-1 - WRITE(*,*) ' ' - WRITE(*,*) - #' ----< ACERMC 1.3 & HERWIG 6.5 >----' - WRITE(*,*) ' ' - WRITE(*,*) - #' --< BRANCHING MODE FOR TOP -> W -> ACTIVE >--' - WRITE(*,*) ' ' - WRITE(*,24) ISEM,ACBRAT - 24 FORMAT ( - #' THE ACERMC ACSET12 SWITCH IS SET TO ',I2/ - #' THE PROCESS CROSS-SECTION SHOULD BE '/ - #' MULTIPLIED BY THE BRANCHING RATIO =',D15.6/ - #' IF NOT ALREADY DONE AT GENERATION TIME'/) - - WRITE(*,*) - #' --> BRANCHING MODE FOR TOP -> W -> ACTIVE <--' - WRITE(*,*) ' ' - WRITE(*,*) - #' ----> ACERMC 1.3 & HERWIG 6.5 <----' - WRITE(*,*) ' ' - - ENDIF - - ELSEIF (IAMOD.EQ.0) THEN ! SWAP THE BR-S - -C 'SEMI-LEPTONIC' DECAYS FOR TOP PAIRS - SWITCH -C ALLOWED W+/- DECAY MODES - IF(ISEM.EQ.0) RETURN ! <---- BUGFIX THANKS TO BJARTE MOHN - -C FORCE ONLY T-B DECAYS - RWP=HWRGEN(9) - IF (ISEM.EQ.5) THEN ! SL DECAY MODE FOR WTT -> W^(+/-) E/MU^(+/-) JJ BB - IWP=-24*INT(SIGN(1,IDUP(6))) - IF (IWP.EQ.-24) RWP=1.D0 - IF (IWP.EQ.24) RWP=-1.D0 - ENDIF - - IF (RWP.GT.0.5D0) THEN - BRTMP=0.D0 - CALL ACMODK(6,BRTMP,100,12,-11,5,0,0) ! SWITCH OFF LEPTONIC DECAYS - CALL ACMODK(6,BRTMP,100,14,-13,5,0,0) - CALL ACMODK(6,BRTMP,100,16,-15,5,0,0) - BRTMP=0.5D0 - CALL ACMODK(6,BRTMP,100,2,-1,5,0,0) - CALL ACMODK(6,BRTMP,100,4,-3,5,0,0) - IF (ISEM.EQ.1) THEN - BRTMP=1.D0 - CALL ACMODK(-6,BRTMP,100,-12,11,-5,0,0) - ELSEIF (ISEM.EQ.2) THEN - BRTMP=1.D0 - CALL ACMODK(-6,BRTMP,100,-14,13,-5,0,0) - ELSEIF (ISEM.EQ.3) THEN - BRTMP=1.D0 - CALL ACMODK(-6,BRTMP,100,-16,15,-5,0,0) - ELSEIF (ISEM.EQ.4) THEN - BRTMP=0.D0 - CALL ACMODK(-6,BRTMP,100,-2,1,-5,0,0) - CALL ACMODK(-6,BRTMP,100,-4,3,-5,0,0) - CALL ACMODK(-6,BRTMP,100,-16,15,-5,0,0) - BRTMP=0.5D0 - CALL ACMODK(-6,BRTMP,100,-12,11,-5,0,0) - CALL ACMODK(-6,BRTMP,100,-14,13,-5,0,0) - ELSEIF (ISEM.EQ.5) THEN - BRTMP=0.D0 - CALL ACMODK(-6,BRTMP,100,-2,1,-5,0,0) - CALL ACMODK(-6,BRTMP,100,-4,3,-5,0,0) - CALL ACMODK(-6,BRTMP,100,-16,15,-5,0,0) - BRTMP=0.5D0 - CALL ACMODK(-6,BRTMP,100,-12,11,-5,0,0) - CALL ACMODK(-6,BRTMP,100,-14,13,-5,0,0) - ENDIF - ELSE - BRTMP=0.D0 - CALL ACMODK(-6,BRTMP,100,-12,11,-5,0,0) ! SWITCH OFF LEPTONIC DECAYS - CALL ACMODK(-6,BRTMP,100,-14,13,-5,0,0) - CALL ACMODK(-6,BRTMP,100,-16,15,-5,0,0) - BRTMP=0.5D0 - CALL ACMODK(-6,BRTMP,100,-2,1,-5,0,0) - CALL ACMODK(-6,BRTMP,100,-4,3,-5,0,0) - IF (ISEM.EQ.1) THEN - BRTMP=1.D0 - CALL ACMODK(6,BRTMP,100,12,-11,5,0,0) - ELSEIF (ISEM.EQ.2) THEN - BRTMP=1.D0 - CALL ACMODK(6,BRTMP,100,14,-13,5,0,0) - ELSEIF (ISEM.EQ.3) THEN - BRTMP=1.D0 - CALL ACMODK(6,BRTMP,100,16,-15,5,0,0) - ELSEIF (ISEM.EQ.4) THEN - BRTMP=0.D0 - CALL ACMODK(6,BRTMP,100,2,-1,5,0,0) - CALL ACMODK(6,BRTMP,100,4,-3,5,0,0) - CALL ACMODK(6,BRTMP,100,16,-15,5,0,0) - BRTMP=0.5D0 - CALL ACMODK(6,BRTMP,100,12,-11,5,0,0) - CALL ACMODK(6,BRTMP,100,14,-13,5,0,0) - ELSEIF (ISEM.EQ.5) THEN - BRTMP=0.D0 - CALL ACMODK(6,BRTMP,100,2,-1,5,0,0) - CALL ACMODK(6,BRTMP,100,4,-3,5,0,0) - CALL ACMODK(6,BRTMP,100,16,-15,5,0,0) - BRTMP=0.5D0 - CALL ACMODK(6,BRTMP,100,12,-11,5,0,0) - CALL ACMODK(6,BRTMP,100,14,-13,5,0,0) - ENDIF - ENDIF - - ENDIF ! IAMOD FLAG - - RETURN - END - -CC ----------------------------------------------------------- - SUBROUTINE ACMODK(IDKTMP,BRTMP,IMETMP, - & IATMP,IBTMP,ICTMP,IDTMP,IETMP) - -C-------------------------------------------------------------C -C C -C HERWIG INTERFACE - AN ANALOGUE TO HWMODK BUT DOES NOT C -C PROTEST AFTER REMOVAL/ADDITION OF BRANCHING MODES C -C SINCE THOSE ARE DONE OFTEN FOR SEMI-LEPTONIC TOP DECAYS C -C C -C-------------------------------------------------------------C - -#include "HERWIG65.INC" - DOUBLE PRECISION HWUPCM,BRTMP,EPS - INTEGER IDKTMP,IMETMP,IATMP,IBTMP,ICTMP,IDTMP,IETMP,IDKY,ITMP(5), - & L,I,J,K - LOGICAL MATCH(5) - CHARACTER*8 CDUM - EXTERNAL HWUPCM - PARAMETER (EPS=1.D-6) -C Convert to internal format - CALL HWUIDT(1,IDKTMP,IDKY,CDUM) - IF (IDKY.EQ.20) THEN - WRITE(*,10) IDKTMP - 10 FORMAT(1X,'ACMODK:Particle decaying,',I7,', not recognised') - RETURN - ENDIF - CALL HWUIDT(1,IATMP,ITMP(1),CDUM) - CALL HWUIDT(1,IBTMP,ITMP(2),CDUM) - CALL HWUIDT(1,ICTMP,ITMP(3),CDUM) - CALL HWUIDT(1,IDTMP,ITMP(4),CDUM) - CALL HWUIDT(1,IETMP,ITMP(5),CDUM) - -C First search to see if mode pre-exists - IF ((ITMP(2).GE.1.AND.ITMP(2).LE.13).OR. - & (ITMP(3).GE.1.AND.ITMP(3).LE.13)) THEN -C Partonic respect order - L=LSTRT(IDKY) - DO 30 K=1,NMODES(IDKY) - IF (ITMP(1).EQ.IDKPRD(1,L).AND. - & ITMP(2).EQ.IDKPRD(2,L).AND. - & ITMP(3).EQ.IDKPRD(3,L).AND. - & ITMP(4).EQ.IDKPRD(4,L).AND. - & ITMP(5).EQ.IDKPRD(5,L)) GOTO 90 - 30 L=LNEXT(L) - ELSE -C Allow for different order in matching - L=LSTRT(IDKY) - DO 70 I=1,NMODES(IDKY) - DO 40 J=1,5 - 40 MATCH(J)=.FALSE. - DO 60 J=1,5 - DO 50 K=1,5 - IF (.NOT.MATCH(K).AND.ITMP(K).EQ.IDKPRD(J,L)) THEN - MATCH(K)=.TRUE. - GOTO 60 - ENDIF - 50 CONTINUE - 60 CONTINUE - IF (MATCH(1).AND.MATCH(2).AND.MATCH(3).AND. - & MATCH(4).AND.MATCH(5)) GOTO 90 - 70 L=LNEXT(L) - ENDIF - - WRITE (*,*)'MODE NOT FOUND??' - -C A Pre-existing mode, line L, add/update ME code and BR, scaling all -C other branching fractions - 90 IF (IMETMP.GT.0) NME(L)=IMETMP -C--> HERE JUST UPDATE THE BRANCHINGS, DO NOT(!) REMOVE THE MODES - BRFRAC(L)=BRTMP - - IF (ABS(BRTMP-1.).LT.EPS) THEN - BRFRAC(L)=ONE - J=LSTRT(IDKY) ! SET OTHERS TO 0 - DO 100 I=1,NMODES(IDKY) - IF (J.NE.L) BRFRAC(J)=0.D0 - 100 J=LNEXT(J) - ENDIF - - IF (ABS(BRTMP).LT.EPS) BRFRAC(L)=0.D0 - - 999 RETURN - END diff --git a/Generators/AcerMC_i/src/AcerMC_acset12-py.F b/Generators/AcerMC_i/src/AcerMC_acset12-py.F deleted file mode 100644 index 5d78740100afa9d4d77dbb10069c4aa1666ac9a6..0000000000000000000000000000000000000000 --- a/Generators/AcerMC_i/src/AcerMC_acset12-py.F +++ /dev/null @@ -1,173 +0,0 @@ - -c Switching routine that enables the choice of top pair decays -c for AcerMC 1.x generator as done in the fortran setup -c Adapted for Pythia 6.2 by Borut Paul Kersevan (February 2003) - SUBROUTINE ACERMC_ACSET12_PY(IAMOD) - -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - -#include "GeneratorFortranCommon/heprup.inc" -#include "GeneratorFortranCommon/hepeup.inc" -#include "AcerMC_i/AcerMC_acset.inc" - - COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5) - - INTEGER IAMOD,IACPROC,ISEM,IWP,JJ - DOUBLE PRECISION VLBRAT_T,VLBRAT_W,VLBRAT,ACBRAT,RWP - LOGICAL NOIMP - - DOUBLE PRECISION PYR - EXTERNAL PYR - - IACPROC=LPRUP(NPRUP)-600 - NOIMP=(IACPROC.EQ.1.OR.IACPROC.EQ.2.OR.IACPROC.EQ.4.OR. - # IACPROC.EQ.7.OR.IACPROC.EQ.8.OR.IACPROC.EQ.9.OR. - # IACPROC.EQ.10.OR.IACPROC.EQ.92.OR.IACPROC.EQ.93) ! ONLY RELEVANT CHANS - IF (.NOT.NOIMP) THEN - ACSET12=0 - RETURN - ENDIF - - ISEM=ACSET12 - - IF (IAMOD.EQ.-1) THEN ! INIT - -C 'SEMI-LEPTONIC' DECAYS FOR TOP PAIRS - BR - - - IF (ISEM.GE.1) THEN - VLBRAT_T=BRAT(46)**2 ! FORCE ONLY T-B DECAYS BR=1 IN HERWIG - VLBRAT_W=0.D0 - DO JJ=190,200 ! HADRONIC W BR - VLBRAT_W=VLBRAT_W+BRAT(JJ) - ENDDO - IF (ISEM.EQ.1) THEN ! ELECTRON BR - VLBRAT_W=VLBRAT_W*BRAT(206) - ELSEIF (ISEM.EQ.2) THEN ! MUON BR - VLBRAT_W=VLBRAT_W*BRAT(207) - ELSEIF (ISEM.EQ.3) THEN ! TAU BR - VLBRAT_W=VLBRAT_W*BRAT(208) - ELSEIF (ISEM.EQ.4) THEN ! E+MU BR - VLBRAT_W=VLBRAT_W*(BRAT(206)+BRAT(207)) - ELSEIF (ISEM.EQ.5) THEN ! SL DECAY MODE FOR WTT -> W^(+/-) E/MU^(+/-) JJ BB - IF (IACPROC.NE.4) THEN - WRITE(*,*) - #' ----< STOPPED BY ACERMC >----' - WRITE(*,*) - #' ----< ACSET12=5 WORKS ONLY FOR ONLY FOR PROC=4 >----' - STOP - ENDIF - VLBRAT_W=0.5D0*VLBRAT_W*(BRAT(206)+BRAT(207)) - ENDIF - VLBRAT=VLBRAT_T*VLBRAT_W - ACBRAT=2.D0*VLBRAT ! SEMI-LEPTONICS ALLOW 2 OPTIONS 1-2+2-1 - WRITE(*,*) ' ' - WRITE(*,*) - #' ----< ACERMC 1.3 & PYTHIA 6.2 >----' - WRITE(*,*) ' ' - WRITE(*,*) - #' --< BRANCHING MODE FOR TOP -> W -> ACTIVE >--' - WRITE(*,*) ' ' - WRITE(*,24) ISEM,ACBRAT - 24 FORMAT ( - #' THE ACERMC ACSET12 SWITCH IS SET TO ',I2/ - #' THE PROCESS CROSS-SECTION SHOULD BE '/ - #' MULTIPLIED BY THE BRANCHING RATIO =',D15.6/ - #' IF NOT ALREADY DONE AT GENERATION TIME'/) - - WRITE(*,*) - #' --> BRANCHING MODE FOR TOP -> W -> ACTIVE <--' - WRITE(*,*) ' ' - WRITE(*,*) - #' ----> ACERMC 1.3 & PYTHIA 6.2 <----' - WRITE(*,*) ' ' - - ENDIF - - ELSEIF (IAMOD.EQ.0) THEN ! SWAP THE BR-S - -C 'SEMI-LEPTONIC' DECAYS FOR TOP PAIRS - SWITCH -C ALLOWED W+/- DECAY MODES - - IF(ISEM.EQ.0) RETURN ! <---- BUGFIX THANKS TO BJARTE MOHN -C FORCE ONLY T-B DECAYS - MDME(44,1)=0 - MDME(45,1)=0 - - RWP=PYR(9) - IF (ISEM.EQ.5) THEN ! SL DECAY MODE FOR WTT -> W^(+/-) E/MU^(+/-) JJ BB - IWP=-24*SIGN(1,IDUP(6)) - IF (IWP.EQ.-24) RWP=1.D0 - IF (IWP.EQ.24) RWP=-1.D0 - print *,'iwps',iwp,idup(6) - ENDIF - - IF (RWP.GT.0.5D0) THEN - MDME(190,1)=2 - MDME(191,1)=2 - MDME(192,1)=2 - MDME(194,1)=2 - MDME(195,1)=2 - MDME(196,1)=2 - MDME(198,1)=2 - MDME(199,1)=2 - MDME(200,1)=2 - IF (ISEM.EQ.1) THEN - MDME(206,1)=3 - MDME(207,1)=0 - MDME(208,1)=0 - ELSEIF (ISEM.EQ.2) THEN - MDME(206,1)=0 - MDME(207,1)=3 - MDME(208,1)=0 - ELSEIF (ISEM.EQ.3) THEN - MDME(206,1)=0 - MDME(207,1)=0 - MDME(208,1)=3 - ELSEIF (ISEM.EQ.4) THEN - MDME(206,1)=3 - MDME(207,1)=3 - MDME(208,1)=0 - ELSEIF (ISEM.EQ.5) THEN - MDME(206,1)=3 - MDME(207,1)=3 - MDME(208,1)=0 - ENDIF - ELSE - MDME(190,1)=3 - MDME(191,1)=3 - MDME(192,1)=3 - MDME(194,1)=3 - MDME(195,1)=3 - MDME(196,1)=3 - MDME(198,1)=3 - MDME(199,1)=3 - MDME(200,1)=3 - IF (ISEM.EQ.1) THEN - MDME(206,1)=2 - MDME(207,1)=0 - MDME(208,1)=0 - ELSEIF (ISEM.EQ.2) THEN - MDME(206,1)=0 - MDME(207,1)=2 - MDME(208,1)=0 - ELSEIF (ISEM.EQ.3) THEN - MDME(206,1)=0 - MDME(207,1)=0 - MDME(208,1)=2 - ELSEIF (ISEM.EQ.4) THEN - MDME(206,1)=2 - MDME(207,1)=2 - MDME(208,1)=0 - ELSEIF (ISEM.EQ.5) THEN - MDME(206,1)=2 - MDME(207,1)=2 - MDME(208,1)=0 - ENDIF - ENDIF - ENDIF ! IAMOD FLAG - - RETURN - END diff --git a/Generators/AcerMC_i/src/gacermc_acset.F b/Generators/AcerMC_i/src/gacermc_acset.F deleted file mode 100644 index a14ae3da656e70b5c092d786262132aefd5e8163..0000000000000000000000000000000000000000 --- a/Generators/AcerMC_i/src/gacermc_acset.F +++ /dev/null @@ -1,9 +0,0 @@ -C AcerMC acset common block access -c Borut Paul Kersevan (February 2003) - FVOIDP FUNCTION ACERMC_ACSET_ADDRESS() - IMPLICIT NONE -#include "AcerMC_i/AcerMC_acset.inc" - FVOIDP GETADDR - ACERMC_ACSET_ADDRESS = GETADDR(ACSET12) - RETURN - END diff --git a/Generators/AcerMC_i/src/initacermc.F b/Generators/AcerMC_i/src/initacermc.F deleted file mode 100644 index 900c5a8330f7f4994c4dec3f679ee170f7515552..0000000000000000000000000000000000000000 --- a/Generators/AcerMC_i/src/initacermc.F +++ /dev/null @@ -1,73 +0,0 @@ - SUBROUTINE INITACERMC -C-------------------------------------------------------------C -C ACERMC 3.x - PYTHIA 6.3 INTERFACE C -C Borut Paul Kersevan (January 2006) C -C-------------------------------------------------------------C - -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - -#include "GeneratorFortranCommon/heprup.inc" - - CHARACTER DUMM*200,EVTFIL*140 - COMMON /ACFIL/EVTFIL - -CC OPEN HEADER FILE ------------------------------------------ - - OPEN (21,FILE='inparmAcerMC.dat',STATUS='OLD',ERR=100) - READ(21,FMT='(A200)') DUMM ! TEXT - READ(21,FMT='(A200)') DUMM ! TEXT - READ(21,FMT='(A200)') DUMM ! TEXT - READ(21,FMT='(A200)') DUMM ! TEXT - READ(21,FMT='(A200)') DUMM ! TEXT - READ(21,FMT='(60x,6x,I4)') IDPROC ! TEXT - READ(21,FMT='(A200)') DUMM ! TEXT - READ(21,FMT='(A200)') DUMM ! TEXT - READ(21,FMT='(A200)') DUMM ! TEXT - READ(21,FMT='(30x,I6,I6)') IDBMUP(1),IDBMUP(2) ! BEAM CODE - READ(21,FMT='(30x,F12.2)') EBMUP(1) ! BEAM ENERGY - EBMUP(2)=EBMUP(1) - READ(21,FMT='(30x,I6,I6)')PDFGUP(1),PDFSUP(1) ! PDF SET - PDFGUP(2)=PDFGUP(1) - PDFSUP(2)=PDFSUP(1) - READ(21,FMT='(30x,A140)') EVTFIL ! EVENT FILE NAME - READ(21,FMT='(A200)') DUMM ! NO OF STORED EVENTS - TREATED AS DUMMY - READ(21,FMT='(30x,D15.6,5x,D15.6)') XSECUP(1),XERRUP(1) ! X-SEC INFO - CLOSE(21) - -C Fix pdf in HERWIG - IF (PDFSUP(1).GT.100) THEN - PDFGUP(1)=-1 - PDFGUP(2)=-1 - ENDIF - -C DECIDE ON WEIGHTING STRATEGY: UNWEIGHTED ON INPUT +/-1 WEIGHT - IDWTUP=-3 - -C PROCESS TAGS - NPRUP=1 - LPRUP(NPRUP)=600+IDPROC - XMAXUP(NPRUP)=1.D0 - -CC ----------------------------------------------------------- - - -CC OPEN EVENT FILE ------------------------------------------- - IUNIT=22 - OPEN(IUNIT,FILE=EVTFIL,STATUS='OLD',ERR=200) -CC ----------------------------------------------------------- - - RETURN - -C ERROR HANDLING - 100 WRITE (*,*) - # 'INITACERMC: inparmAcerMC.dat file could not be opened!' - WRITE (*,*)'Please link an *.inparm file to inparmAcerMC.dat!' - STOP -C ERROR HANDLING - 200 WRITE (*,*) 'INITCERMC: Missing event data file:', - # ' ',EVTFIL - STOP - - END diff --git a/Generators/AcerMC_i/src/useacermc.F b/Generators/AcerMC_i/src/useacermc.F deleted file mode 100644 index 425a898adb657dfd96b5f1161d74a6ce301feb60..0000000000000000000000000000000000000000 --- a/Generators/AcerMC_i/src/useacermc.F +++ /dev/null @@ -1,56 +0,0 @@ - SUBROUTINE USEACERMC -C-------------------------------------------------------------C -C ACERMC 3.x - PYTHIA 6.3 INTERFACE C -C Borut Paul Kersevan (January 2006) C -C-------------------------------------------------------------C -c -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - -#include "GeneratorFortranCommon/hepeup.inc" -#include "GeneratorFortranCommon/heprup.inc" - - CHARACTER EVTFIL*140 - COMMON /ACFIL/EVTFIL - -CC COMMUNICATE HERWIG STATUS - COMMON /EVTCON/ ISTG - -C UNWEIGHTED EVENTS - XWGTUP=1.D0 - - IDPROC=LPRUP(NPRUP)-600 - -CC READ EVENT FILE ------------------------------------------- - IUNIT=22 - READ (IUNIT,*,ERR=200,END=100) NUP - IF (IDPROC.EQ.17.OR.IDPROC.EQ.18 - & .OR.IDPROC.EQ.20.OR.IDPROC.EQ.103) THEN - READ(IUNIT,*) XWGTUP - ENDIF - READ (IUNIT,*,ERR=200,END=100) SCALUP,AQEDUP,AQCDUP - READ (IUNIT,*,ERR=200,END=100) (IDUP(I),ISTUP(I), - &MOTHUP(1,I),ICOLUP(1,I),MOTHUP(2,I),ICOLUP(2,I), - &(PUP(J,I),J=1,5),VTIMUP(I),SPINUP(I),I=1,NUP) -CC ----------------------------------------------------------- - - -C PROCESS ID FOR EVENT - IDPRUP=LPRUP(NPRUP) - - ISTG=0 - RETURN - -C RETURN WITH ZERO PARTICLES AT THE END OF THE RECORD - 100 NUP=0 - ISTG=1 - RETURN - -C ERROR HANDLING - 200 WRITE (*,*) 'USEACERMC: event data file:' - WRITE (*,*) ' ',EVTFIL - WRITE (*,*) 'could not be read !' - STOP - - END diff --git a/Generators/AlpGen_i/AlpGen_i/alpsho.inc b/Generators/AlpGen_i/AlpGen_i/alpsho.inc deleted file mode 100755 index b11e893ab7b4ce1f28a7d29c23e6600fafbd81b4..0000000000000000000000000000000000000000 --- a/Generators/AlpGen_i/AlpGen_i/alpsho.inc +++ /dev/null @@ -1,54 +0,0 @@ -c process code - integer ihrd - integer itopprc -c--event file data - integer Nunit,NunitOut,NunitIni -c character*100 filename,tmpstr - character*100 filename -c total number of input events - common/AHio/Nunit,NunitOut,NunitIni,filename -c inputs for the matching algorithm - integer iexc,npfst,nplst,nljets,njstart,njlast - $ ,ickkw - double precision etclus,rclus,etaclmax - common/AHopts/etclus,rclus,etaclmax,iexc,npfst - $ ,nplst,nljets,njstart,njlast,ickkw -c process and particles parameters - double precision mc,mb,mt,mw,mz,mh - double precision ebeam - integer ndns,ih1,ih2 - integer nw,nz,nh,nph - integer ihvy,ihvy2 -c pdf set type - character pdftyp*25 -c total number of partons - integer npart - common/AHppara/mc,mb,mt,mw,mz,mh, - & ebeam,ih1,ih2, - & ihrd,itopprc, - & nw,nz,nh,nph, - & ihvy,ihvy2, - & npart,ndns,pdftyp -c weight information - real *8 maxwgt,avgwgt,errwgt,totlum - integer unwev - common/AHwgts/maxwgt,avgwgt,errwgt,totlum,unwev -c general parameters - integer nparam - parameter (nparam=200) - integer parlen,partyp - character chpar*8,chpdes*70 - double precision parval - common/AHpars/parval(nparam),chpar(nparam),chpdes(nparam) - $ ,parlen(nparam),partyp(nparam) -c global event cuts - double precision ptjmin,ptjmax,etajmax,drjmin, - + ptbmin,ptbmax,etabmax,drbmin, - + ptcmin,ptcmax,etacmax,drcmin, - + ptphmin,etaphmax,drphjmin,drphmin,drphlmin, - + ptlmin,etalmax,drlmin,metmin,mllmin,mllmax - common/AHcuts/ptjmin,ptjmax,etajmax,drjmin, - + ptbmin,ptbmax,etabmax,drbmin, - + ptcmin,ptcmax,etacmax,drcmin, - + ptphmin,etaphmax,drphjmin,drphmin,drphlmin, - + ptlmin,etalmax,drlmin,metmin,mllmin,mllmax diff --git a/Generators/AlpGen_i/CMakeLists.txt b/Generators/AlpGen_i/CMakeLists.txt deleted file mode 100644 index 764a93f020e855467687b5a7936ecb88e8de0ade..0000000000000000000000000000000000000000 --- a/Generators/AlpGen_i/CMakeLists.txt +++ /dev/null @@ -1,28 +0,0 @@ -################################################################################ -# Package: AlpGen_i -################################################################################ - -# Declare the package name: -atlas_subdir( AlpGen_i ) - -# Declare the package's dependencies: -atlas_depends_on_subdirs( - PRIVATE - Generators/GeneratorFortranCommon ) - -# External dependencies: -find_package( Pythia6 ) -find_package( AlpGen COMPONENTS alpgen atoher ) -find_package( Tauola ) - -# Component(s) in the package: -atlas_add_library( AlpGen_i - AlpGen_i/*.inc src/*.F - PUBLIC_HEADERS AlpGen_i - INCLUDE_DIRS ${PYTHIA6_INCLUDE_DIRS} ${ALPGEN_INCLUDE_DIRS} - ${TAUOLA_INCLUDE_DIRS} - LINK_LIBRARIES ${PYTHIA6_LIBRARIES} ${ALPGEN_LIBRARIES} - ${TAUOLA_LIBRARIES} GeneratorFortranCommonLib ) - -# Install files from the package: -atlas_install_joboptions( share/*.py ) diff --git a/Generators/AlpGen_i/doc/Alpgen.pdf b/Generators/AlpGen_i/doc/Alpgen.pdf deleted file mode 100755 index 33f7378ac97c3064db65a8d40219845b290db298..0000000000000000000000000000000000000000 Binary files a/Generators/AlpGen_i/doc/Alpgen.pdf and /dev/null differ diff --git a/Generators/AlpGen_i/doc/Alpgen.tex b/Generators/AlpGen_i/doc/Alpgen.tex deleted file mode 100755 index 8b2259b35fa8eed960de08a875565b12bc00201b..0000000000000000000000000000000000000000 --- a/Generators/AlpGen_i/doc/Alpgen.tex +++ /dev/null @@ -1,113 +0,0 @@ -\documentclass[11pt]{article} -\newdimen\SaveHeight \SaveHeight=\textheight -\textwidth=6.5in -\textheight=8.9in -\textwidth=6.5in -\textheight=9.0in -\hoffset=-.5in -\voffset=-1in -\def\topfraction{1.} -\def\textfraction{0.} -\def\topfraction{1.} -\def\textfraction{0.} - -\def\jimmy{{\sc Jimmy}} -\def\herwig{{HERWIG}} -\def\pythia{{\sc Pythia}} -\def\alpgen{{AlpGen}} - - -\begin{document} -\title{\alpgen\_i: An interface between \alpgen\ and Athena\\ -Version in release 10.4.0 and later} -\author{ Ian Hinchliffe (I\_Hinchliffe@lbl.gov), Georgios Stavropoulos (George.Stavropoulos@cern.ch) and Jon Butterworth (J.Butterworth@ucl.ac.uk)} -%\today - -\maketitle - -\section{Introduction} - -\noindent -This package runs \alpgen\ from within Athena. See the examples in -\\ {\bf \alpgen\_i/share/jobOptions.AlpgenPythia.py } -and -\\ {\bf \alpgen\_i/share/jobOptions.AlpgenHerwig.py } -which show how to read Alpgen events, add parton showers and -hadronize them using \pythia\ or \herwig. Note that on ATLAS we use the -``new'' (i.e. \pythia 6.4) shower and this does not work with the \alpgen\ -parton shower matching, so \herwig\ should be used in general. - -\bigskip - -\noindent -Users must first run \alpgen\ in standalone mode and make a file of -events. An athena job then takes these events hadronizes them and -passes them down the Athena event chain. The events must be made with -a version of \alpgen\ that is compatible, recent versions that support -the Les Houches interface should be acceptable. The current release is -compatible with versions 2.13 to 2.11. It is recommended that you use -the latest compatible version of the standalone \alpgen. - -Within the {\tt GeneratorModules}, {\tt m\_ExternalProcess = 4} is used to -signify \alpgen\ to both the \herwig\ and \pythia\ interfaces. - -\bigskip - -\section{\alpgen\ and \pythia} - -\noindent -To hadronize {\bf \alpgen} generated events with \pythia, you need to link the file with the input parameters -and the one with the unweighted events produced by \alpgen\ to the files inparmAlpGen.dat and alpgen.unw\_events -respectively. Then you only need to run athena with the jobOptions file jobOptions.AlpgenPythia.py by typing -in the prompt \\ {\it athena jobOptions.AlpgenPythia.py} - - -\bigskip - -\section{\alpgen\ and \herwig} - -\noindent -To hadronize {\bf \alpgen} generated events with \herwig, you need to -link the file with the input parameters and the one with the -unweighted events produced by \alpgen\ to the files inparmAlpGen.dat -and alpgen.unw\_events respectively. Then you only need to run athena -with the jobOptions file jobOptions.AlpgenHerwig.py by typing in the -prompt \\ {\it athena jobOptions.AlpgenHerwig.py}\\ - -\medskip - -\noindent -The program flow in \herwig\ is a little complex, especially at the -end of a run. The interface Herwig.cxx (in Herwig\_i) calls HWHGUP (a -\herwig\ routine) which calls UPEVNT (modified by ATLAS to make sure -it calls the right routine in usealpgen.f, which is in -AlpGen\_i). When the end of a file is found, UPEVNT calls ALSFIN (in -atoher\_65.f in Herwig\_i), which then calls HWUGUP (\herwig\ -routine). ATLAS uses a modified version of HWUGUP which instead of -abruptly stopping the program (which is bad for Athena!) sets IERROR -and GENEV such that events generation is terminated more -gracefully. This still leads to some confusing apparent error messages -from Athena, but the \herwig\ and \alpgen\ output is at least -consistent. - -\medskip - -\noindent -To specify \alpgen\ running with \herwig\ you need to set the line\\ -{\tt job.Herwig.HerwigCommand = ["iproc alpgen"]} \\ -in your jobOptions file. It is also possible to specify Higgs decay information -for the events by adding a second argument to the {\tt iproc} parameter, -which will be interpreted as the ID value (last two digits of IPROC) controlling -the Higgs decay. e.g. \\ -{\tt job.Herwig.HerwigCommand = ["iproc alpgen 12"]}\\ -would force any Higgs particles present in your input events to decay to two photons. See the \herwig\ manual for more information. - - -\end{document} - - - - - - - diff --git a/Generators/AlpGen_i/doc/packagedoc.h b/Generators/AlpGen_i/doc/packagedoc.h deleted file mode 100644 index 79d5311a5db348e437d8d6659d842267e7a3e1f0..0000000000000000000000000000000000000000 --- a/Generators/AlpGen_i/doc/packagedoc.h +++ /dev/null @@ -1,80 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -/** -@page AlpGen_i_page AlpGen_i - -@author Ian Hinchliffe, Georgios Stavropoulos, Jon Butterworth and Judith Katzy - -@section AlpGen_i_An interface between AlpGen and Athena - -This package runs AlpGen from within Athena. - -LIke for the other Les Houche type generators, users must first run AlpGen in standalone mode and make a file of events. An athena job then takes these events -hadronizes them and passes them down the Athena event chain. See the examples in -AlpGen_i/share/jobOptions.AlpgenPythia.py -AlpGen_i/share/jobOptions.AlpgenHerwig.py - -which show how to read the AlpGen events, add parton showers and hadronize them using Pythia or Herwig. Note that in ATLAS we use the "new" (i.e. PYTHIA ^.4) shower and this does not work with the AlpGen parton shower matching, so HERWIG should be used in general. - -The events must be made with a version of AlpGen that is compatible with LesHouches interface, AlpGen version 2.13 and 2.12 are. It is recommended that you use the latest compatible version of standalone Alpgen. - -Within the GeneratorModuls, m_ExternalProcess=4 is used to signify AlpGen to both the HERWIG and Pythia interfaces. - -@section AlpGen_i_AlpGen and Pythia -To hadronize AlpGen generated events with Pythia, you need to link the file with the input parameters -and the one with the unweighted events produced by Alpgen to the files inparmAlpGen.dat and alpgen.unw_events -respectively. Then you only need to run athena with the jobOptions file jobOptions.AlpgenPythia.py by typing -in the prompt - -athena jobOptions.AlpgenPythia.py - - -@section AlpGen_i_Alpgen and Herwig - -To hadronize Alpgen generated events with Herwig, you need to -link the file with the input parameters and the one with the -unweighted events produced by Alpgen to the files inparmAlpGen.dat -and alpgen.unw_events respectively. Then you only need to run athena -with the jobOptions file jobOptions.AlpgenHerwig.py by typing in the -prompt - - athena jobOptions.AlpgenHerwig.py - - - - -The program flow in Herwig is a little complex, especially at the -end of a run. The interface Herwig.cxx (in Herwig_i) calls HWHGUP (a -Herwig routine) which calls UPEVNT (modified by ATLAS to make sure -it calls the right routine in usealpgen.f, which is in -AlpGen_i). When the end of a file is found, UPEVNT calls ALSFIN (in -atoher_65.f in Herwig_i), which then calls HWUGUP (Herwig -routine). ATLAS uses a modified version of HWUGUP which instead of -abruptly stopping the program (which is bad for Athena!) sets IERROR -and GENEV such that events generation is terminated more -gracefully. This still leads to some confusing apparent error messages -from Athena, but the Herwig and Alpgen output is at least -consistent. - -To specify Alpgen running with Herwig\ you need to set the line - - job.Herwig.HerwigCommand = ["iproc alpgen"] - -in your jobOptions file. It is also possible to specify Higgs decay information -for the events by adding a second argument to the iproc parameter, -which will be interpreted as the ID value (last two digits of IPROC) controlling -the Higgs decay. e.g. - - job.Herwig.HerwigCommand = ["iproc alpgen 12"] - -would force any Higgs particles present in your input events to decay to two photons. See the Herwig manual for more information. - - - -last update Feb.28, 2008 - - - -*/ diff --git a/Generators/AlpGen_i/share/alpgen.unw_events b/Generators/AlpGen_i/share/alpgen.unw_events deleted file mode 100755 index 1b4d6485120d3021414d5ee37a7ca6d0221e4fdb..0000000000000000000000000000000000000000 --- a/Generators/AlpGen_i/share/alpgen.unw_events +++ /dev/null @@ -1,1520 +0,0 @@ - 1 3 7 0.100000E+01 0.965398E+02 - -3 0 1 319.206 - 21 2 3 -100.063 - -5 0 1 -29.017 13.572 17.083 4.700 - 5 2 0 -69.874 54.016 -24.540 4.700 - -4 0 3 75.985 -19.338 65.437 0.000 - -11 0 0 -14.287 -16.493 127.563 0.001 - 12 0 0 37.193 -31.756 33.600 0.000 - 2 2 7 0.100000E+01 0.148058E+03 - 21 2 3 268.529 - -1 0 1 -599.438 - -5 0 1 67.748 49.481 65.099 4.700 - 5 2 0 -3.322 31.661 16.405 4.700 - -2 0 3 -162.716 -157.254 57.055 0.000 - -11 0 0 110.310 69.637 -382.036 0.001 - 12 0 0 -12.020 6.476 -87.432 0.000 - 3 1 7 0.100000E+01 0.104390E+03 - 2 3 0 794.914 - -1 0 1 -698.598 - 5 2 0 -398.279 122.004 386.323 4.700 - -5 0 1 484.609 -149.185 45.094 4.700 - 21 3 2 -21.703 43.099 15.234 0.000 - 12 0 0 -18.054 -44.160 -205.396 0.000 - -11 0 0 -46.574 28.242 -144.938 0.001 - 4 2 7 0.100000E+01 0.816653E+02 - 21 2 3 164.392 - -1 0 1 -310.293 - -5 0 1 -13.595 -23.441 -3.313 4.700 - 5 2 0 -46.022 123.914 76.689 4.700 - -4 0 3 46.449 -105.823 -100.208 0.000 - -11 0 0 -16.501 -26.711 -59.285 0.001 - 12 0 0 29.669 32.061 -59.785 0.000 - 5 2 7 0.100000E+01 0.922374E+02 - 21 3 2 120.674 - 3 1 0 -147.666 - 5 1 0 35.349 -49.499 9.924 4.700 - -5 0 2 -25.532 -5.790 -29.104 4.700 - 4 3 0 -41.399 22.992 -46.951 0.000 - 11 0 0 -16.127 -16.520 16.963 0.001 - -12 0 0 47.709 48.816 22.177 0.000 - 6 2 7 0.100000E+01 0.113982E+03 - 21 3 2 283.719 - -2 0 3 -247.205 - -5 0 2 169.513 -77.646 1.525 4.700 - 5 1 0 37.036 -18.706 40.049 4.700 - -1 0 1 -140.937 49.237 53.038 0.000 - -12 0 0 -17.947 -22.122 -5.653 0.000 - 11 0 0 -47.665 69.236 -52.445 0.001 - 7 3 7 0.100000E+01 0.115671E+03 - -2 0 3 77.526 - 21 2 1 -276.627 - -5 0 3 37.083 14.106 -26.894 4.700 - 5 2 0 6.712 46.621 -11.366 4.700 - -1 0 1 34.675 -33.246 11.991 0.000 - -12 0 0 16.568 -2.243 -20.006 0.000 - 11 0 0 -95.037 -25.239 -152.826 0.001 - 8 2 7 0.100000E+01 0.883417E+02 - 21 2 3 92.375 - -1 0 1 -158.905 - -5 0 1 39.799 1.160 25.385 4.700 - 5 2 0 -23.891 -10.529 19.384 4.700 - -2 0 3 7.470 37.486 -15.543 0.000 - -11 0 0 -38.593 -20.729 -13.656 0.001 - 12 0 0 15.216 -7.388 -82.099 0.000 - 9 1 7 0.100000E+01 0.845703E+02 - 1 1 0 186.890 - -2 0 3 -75.800 - 5 1 0 -16.901 -12.290 -0.930 4.700 - -5 0 2 -37.642 12.876 -17.576 4.700 - 21 2 3 29.021 -6.376 -11.392 0.000 - 11 0 0 15.855 30.964 133.122 0.001 - -12 0 0 9.667 -25.174 7.866 0.000 - 10 1 7 0.100000E+01 0.122254E+03 - 1 1 0 213.249 - -2 0 3 -76.475 - 5 1 0 -54.050 -41.102 47.661 4.700 - -5 0 2 -15.783 29.668 -5.047 4.700 - 21 2 3 -21.430 -0.803 6.621 0.000 - 11 0 0 100.456 10.770 52.959 0.001 - -12 0 0 -9.193 1.467 34.579 0.000 - 11 1 7 0.100000E+01 0.101409E+03 - 2 3 0 169.850 - -1 0 1 -67.086 - 5 3 0 -24.858 18.869 14.404 4.700 - -5 0 2 -14.525 -13.791 13.534 4.700 - 21 2 1 -20.711 9.252 -26.308 0.000 - 12 0 0 72.203 9.026 85.527 0.000 - -11 0 0 -12.109 -23.356 15.607 0.001 - 12 3 7 0.100000E+01 0.892605E+02 - 2 3 0 548.505 - 21 1 2 -59.429 - 5 3 0 -37.725 -15.977 12.876 4.700 - -5 0 2 4.085 -46.952 28.225 4.700 - 1 1 0 69.683 77.110 80.304 0.000 - 12 0 0 -16.145 -35.119 321.362 0.000 - -11 0 0 -19.899 20.937 46.309 0.001 - 13 1 7 0.100000E+01 0.953158E+02 - 1 1 0 441.666 - -2 0 3 -452.366 - 5 2 0 175.343 -97.657 -78.317 4.700 - -5 0 3 -61.899 189.518 -180.285 4.700 - 21 1 2 -99.084 -42.752 -36.601 0.000 - 11 0 0 14.395 -7.822 168.623 0.001 - -12 0 0 -28.754 -41.287 115.880 0.000 - 14 1 7 0.100000E+01 0.143408E+03 - 2 3 0 175.681 - -1 0 1 -250.391 - 5 2 0 -9.303 -72.246 -47.126 4.700 - -5 0 1 94.811 5.044 -80.853 4.700 - 21 3 2 -13.072 -26.881 26.741 0.000 - 12 0 0 -72.112 120.395 5.238 0.000 - -11 0 0 -0.325 -26.312 21.290 0.001 - 15 1 7 0.100000E+01 0.110990E+03 - 2 3 0 296.716 - -3 0 1 -177.773 - 5 3 0 -116.223 -33.840 19.734 4.700 - -5 0 2 66.053 14.454 -39.354 4.700 - 21 2 1 20.267 -51.021 -36.535 0.000 - 12 0 0 17.215 80.881 171.780 0.000 - -11 0 0 12.688 -10.473 3.317 0.001 - 16 1 7 0.100000E+01 0.954285E+02 - -2 0 3 306.948 - 1 1 0 -181.028 - -5 0 3 -48.987 107.146 136.626 4.700 - 5 2 0 52.548 -132.878 69.874 4.700 - 21 1 2 -3.121 -25.641 -4.340 0.000 - -12 0 0 15.505 -0.085 11.446 0.000 - 11 0 0 -15.945 51.459 -87.686 0.001 - 17 2 7 0.100000E+01 0.864245E+02 - 21 3 2 158.161 - 1 1 0 -195.965 - 5 1 0 35.967 -26.531 7.213 4.700 - -5 0 2 56.922 38.925 35.874 4.700 - 2 3 0 -113.575 -36.354 -83.871 0.000 - 11 0 0 32.135 -20.905 4.627 0.001 - -12 0 0 -11.449 44.865 -1.647 0.000 - 18 3 7 0.100000E+01 0.270397E+03 - 2 3 0 504.482 - 21 1 2 -245.782 - 5 3 0 13.981 -48.359 2.945 4.700 - -5 0 2 -18.634 -16.952 6.792 4.700 - 1 1 0 88.594 309.444 241.755 0.000 - 12 0 0 7.329 1.024 5.033 0.000 - -11 0 0 -91.270 -245.157 2.176 0.001 - 19 3 7 0.100000E+01 0.935948E+02 - -1 0 1 138.763 - 21 2 3 -121.801 - -5 0 1 -44.986 1.603 -37.401 4.700 - 5 2 0 7.478 -56.797 21.429 4.700 - -2 0 3 36.591 7.320 -8.068 0.000 - -11 0 0 15.331 16.954 59.345 0.001 - 12 0 0 -14.415 30.920 -18.343 0.000 - 20 2 7 0.100000E+01 0.124633E+03 - 21 2 1 146.172 - 3 1 0 -123.124 - 5 2 0 -0.367 -60.586 33.993 4.700 - -5 0 3 2.499 -35.555 -7.625 4.700 - 4 3 0 36.539 9.132 -5.033 0.000 - 11 0 0 -26.942 -8.723 -2.061 0.001 - -12 0 0 -11.730 95.732 3.774 0.000 - 21 2 7 0.100000E+01 0.935581E+02 - 21 2 1 203.148 - -2 0 3 -1277.295 - -5 0 3 -8.313 23.361 5.576 4.700 - 5 2 0 -84.268 89.141 141.060 4.700 - -1 0 1 45.760 -102.821 -126.079 0.000 - -12 0 0 29.398 -36.965 -347.748 0.000 - 11 0 0 17.423 27.285 -746.956 0.001 - 22 2 7 0.100000E+01 0.112728E+03 - 21 2 1 114.711 - -2 0 3 -736.608 - -5 0 3 19.209 42.096 10.726 4.700 - 5 2 0 77.491 -2.791 43.227 4.700 - -1 0 1 -39.282 14.949 -14.374 0.000 - -12 0 0 -23.181 -12.516 -485.077 0.000 - 11 0 0 -34.237 -41.739 -176.399 0.001 - 23 2 7 0.100000E+01 0.165315E+03 - 21 1 2 218.895 - -3 0 1 -183.905 - -5 0 2 -16.974 -16.575 12.833 4.700 - 5 3 0 2.216 -27.748 4.504 4.700 - -4 0 3 152.454 0.715 77.531 0.000 - -11 0 0 -119.252 12.219 -68.931 0.001 - 12 0 0 -18.445 31.388 9.053 0.000 - 24 2 7 0.100000E+01 0.133987E+03 - 21 2 3 114.557 - -1 0 1 -209.816 - -5 0 1 -15.612 -18.242 -25.974 4.700 - 5 2 0 35.975 -36.739 -57.307 4.700 - -2 0 3 -64.945 -42.476 3.671 0.000 - -11 0 0 62.620 78.159 -29.004 0.001 - 12 0 0 -18.038 19.298 13.355 0.000 - 25 1 7 0.100000E+01 0.943952E+02 - -1 0 1 87.281 - 2 3 0 -221.048 - -5 0 2 92.190 -8.804 -36.752 4.700 - 5 3 0 -16.767 29.027 -10.893 4.700 - 21 2 1 -28.722 -4.029 16.071 0.000 - -11 0 0 -9.762 16.455 6.748 0.001 - 12 0 0 -36.939 -32.650 -108.941 0.000 - 26 2 7 0.100000E+01 0.115490E+03 - 21 1 2 83.899 - 2 2 0 -371.787 - 5 3 0 -24.328 7.840 -8.160 4.700 - -5 0 3 3.673 35.673 -31.622 4.700 - 3 1 0 -44.000 8.357 47.145 0.000 - 12 0 0 -4.431 0.029 -119.017 0.000 - -11 0 0 69.087 -51.898 -176.234 0.001 - 27 3 7 0.100000E+01 0.811996E+02 - -4 0 3 166.400 - 21 2 1 -152.783 - -5 0 3 -33.450 -8.499 23.294 4.700 - 5 2 0 -26.564 77.311 -42.418 4.700 - -1 0 1 62.783 -57.927 -20.688 0.000 - -12 0 0 -30.977 -32.740 24.968 0.000 - 11 0 0 28.207 21.855 28.461 0.001 - 28 3 7 0.100000E+01 0.958028E+02 - -4 0 3 46.264 - 21 3 2 -329.156 - -5 0 2 5.254 36.571 -27.994 4.700 - 5 1 0 12.209 -50.153 -32.374 4.700 - -3 0 1 34.601 13.062 -17.515 0.000 - -12 0 0 -54.568 -27.063 -177.902 0.000 - 11 0 0 2.504 27.583 -27.106 0.001 - 29 3 7 0.100000E+01 0.844681E+02 - 1 1 0 381.503 - 21 3 2 -41.173 - 5 1 0 23.521 -27.090 -2.197 4.700 - -5 0 2 33.224 10.727 23.620 4.700 - 2 3 0 -33.485 5.110 38.678 0.000 - 11 0 0 -37.465 37.705 199.754 0.001 - -12 0 0 14.205 -26.451 80.475 0.000 - 30 3 7 0.100000E+01 0.824587E+02 - -3 0 1 498.353 - 21 2 3 -36.050 - -5 0 1 -47.339 31.137 26.941 4.700 - 5 2 0 2.262 -29.140 21.027 4.700 - -4 0 3 27.371 -6.324 25.577 0.000 - -11 0 0 28.159 -32.347 224.212 0.001 - 12 0 0 -10.453 36.674 164.547 0.000 - 31 2 7 0.100000E+01 0.175967E+03 - 21 3 2 124.368 - -2 0 3 -958.944 - -5 0 2 -3.303 85.894 46.795 4.700 - 5 1 0 -23.095 17.072 -21.108 4.700 - -1 0 1 103.885 33.022 -49.451 0.000 - -12 0 0 -51.082 -134.092 -745.877 0.000 - 11 0 0 -26.405 -1.896 -64.936 0.001 - 32 3 7 0.100000E+01 0.195568E+03 - -1 0 1 1141.512 - 21 1 2 -115.219 - -5 0 2 -16.568 -63.105 -50.898 4.700 - 5 3 0 -32.552 10.237 2.957 4.700 - -2 0 3 -113.312 -20.585 124.157 0.000 - -11 0 0 170.241 75.523 887.175 0.001 - 12 0 0 -7.809 -2.069 62.902 0.000 - 33 1 7 0.100000E+01 0.102747E+03 - -1 0 1 176.753 - 2 3 0 -81.643 - -5 0 1 6.733 19.905 -12.137 4.700 - 5 2 0 -19.671 -29.903 23.455 4.700 - 21 3 2 -42.537 -21.818 -13.486 0.000 - -11 0 0 64.182 12.971 100.497 0.001 - 12 0 0 -8.707 18.845 -3.219 0.000 - 34 2 7 0.100000E+01 0.131654E+03 - 21 1 2 450.295 - 2 3 0 -98.487 - 5 3 0 -32.364 16.297 -23.120 4.700 - -5 0 2 27.339 4.362 -22.500 4.700 - 1 1 0 -84.937 -73.312 131.642 0.000 - 12 0 0 32.589 64.487 130.570 0.000 - -11 0 0 57.373 -11.833 135.218 0.001 - 35 2 7 0.100000E+01 0.105244E+03 - 21 1 2 46.936 - -1 0 1 -215.908 - -5 0 2 18.528 -16.928 -12.054 4.700 - 5 3 0 1.119 -24.827 -20.756 4.700 - -2 0 3 13.718 -17.371 8.333 0.000 - -11 0 0 -5.436 71.809 -114.986 0.001 - 12 0 0 -27.929 -12.683 -29.509 0.000 - 36 3 7 0.100000E+01 0.100487E+03 - -1 0 1 1000.847 - 21 2 3 -119.621 - -5 0 1 -30.150 72.967 86.433 4.700 - 5 2 0 -66.775 39.044 25.066 4.700 - -2 0 3 147.787 -144.313 74.820 0.000 - -11 0 0 -56.616 6.315 247.525 0.001 - 12 0 0 5.754 25.986 447.382 0.000 - 37 2 7 0.100000E+01 0.139423E+03 - 21 1 2 61.839 - 2 3 0 -755.920 - 5 3 0 -16.205 -20.738 -12.550 4.700 - -5 0 2 -32.167 17.577 3.882 4.700 - 1 1 0 9.538 110.228 -99.214 0.000 - 12 0 0 -13.155 -78.397 -349.364 0.000 - -11 0 0 51.989 -28.670 -236.835 0.001 - 38 1 7 0.100000E+01 0.104739E+03 - 2 3 0 205.271 - -1 0 1 -403.725 - 5 3 0 -34.088 145.064 12.706 4.700 - -5 0 2 76.534 -98.274 22.810 4.700 - 21 2 1 -72.086 -106.994 -142.172 0.000 - 12 0 0 6.715 -20.872 -24.104 0.000 - -11 0 0 22.925 81.076 -67.694 0.001 - 39 1 7 0.100000E+01 0.815969E+02 - 1 1 0 70.793 - -2 0 3 -457.105 - 5 1 0 89.536 -17.821 -70.462 4.700 - -5 0 2 -91.359 4.474 -18.350 4.700 - 21 2 3 -10.173 20.199 -19.970 0.000 - 11 0 0 11.650 18.319 -18.137 0.001 - -12 0 0 0.346 -25.171 -259.394 0.000 - 40 2 7 0.100000E+01 0.100711E+03 - 21 2 1 185.035 - -4 0 3 -323.898 - -5 0 3 6.036 -134.801 59.218 4.700 - 5 2 0 -65.688 20.722 -67.805 4.700 - -3 0 1 10.368 78.771 21.573 0.000 - -12 0 0 11.602 48.957 -123.379 0.000 - 11 0 0 37.683 -13.649 -28.471 0.001 - 41 3 7 0.100000E+01 0.940315E+02 - 1 1 0 325.577 - 21 2 1 -118.558 - 5 2 0 -24.398 -16.488 -2.674 4.700 - -5 0 3 -13.466 -69.222 -46.591 4.700 - 2 3 0 69.700 48.816 40.657 0.000 - 11 0 0 -53.093 4.430 147.573 0.001 - -12 0 0 21.257 32.464 68.054 0.000 - 42 3 7 0.100000E+01 0.155622E+03 - 2 3 0 442.637 - 21 1 2 -335.935 - 5 3 0 -134.745 -66.927 -73.326 4.700 - -5 0 2 189.063 -114.959 -79.406 4.700 - 1 1 0 -82.833 51.740 37.235 0.000 - 12 0 0 27.629 126.844 229.358 0.000 - -11 0 0 0.887 3.301 -7.159 0.001 - 43 3 7 0.100000E+01 0.116712E+03 - -3 0 1 367.592 - 21 2 3 -141.492 - -5 0 1 40.738 -45.154 -30.511 4.700 - 5 2 0 -13.794 -83.452 -13.027 4.700 - -4 0 3 49.736 92.902 81.712 0.000 - -11 0 0 -16.302 48.072 118.936 0.001 - 12 0 0 -60.378 -12.369 68.991 0.000 - 44 2 7 0.100000E+01 0.227358E+03 - 21 1 2 94.145 - -1 0 1 -1843.196 - -5 0 2 39.149 5.635 12.554 4.700 - 5 3 0 14.360 -21.763 2.452 4.700 - -2 0 3 138.530 -75.227 -94.370 0.000 - -11 0 0 -167.573 73.216 -1130.027 0.001 - 12 0 0 -24.465 18.139 -539.659 0.000 - 45 2 7 0.100000E+01 0.227988E+03 - 21 3 2 127.804 - 1 1 0 -660.154 - 5 1 0 199.657 -5.650 -166.479 4.700 - -5 0 2 11.134 -20.818 -4.072 4.700 - 2 3 0 1.571 46.807 25.911 0.000 - 11 0 0 -21.636 -24.775 -95.307 0.001 - -12 0 0 -190.726 4.436 -292.403 0.000 - 46 3 7 0.100000E+01 0.102608E+03 - 2 3 0 443.261 - 21 2 3 -94.144 - 5 2 0 21.588 -56.333 4.225 4.700 - -5 0 1 39.596 -18.112 39.333 4.700 - 1 1 0 -99.670 125.239 102.346 0.000 - 12 0 0 -17.485 5.372 74.589 0.000 - -11 0 0 55.971 -56.166 128.624 0.001 - 47 2 7 0.100000E+01 0.921110E+02 - 21 3 2 128.723 - 1 1 0 -128.711 - 5 1 0 22.367 -19.614 2.279 4.700 - -5 0 2 34.352 -3.236 24.811 4.700 - 2 3 0 -55.792 67.754 3.177 0.000 - 11 0 0 -11.982 -35.020 -55.887 0.001 - -12 0 0 11.055 -9.884 25.633 0.000 - 48 2 7 0.100000E+01 0.103529E+03 - 21 2 3 108.158 - -1 0 1 -275.408 - -5 0 1 -69.477 7.783 0.924 4.700 - 5 2 0 -0.606 -76.350 6.498 4.700 - -4 0 3 13.361 36.416 -5.119 0.000 - -11 0 0 -15.852 -7.587 -42.288 0.001 - 12 0 0 72.575 39.738 -127.265 0.000 - 49 1 7 0.100000E+01 0.199787E+03 - 1 1 0 674.014 - -2 0 3 -127.680 - 5 1 0 23.492 -13.275 0.512 4.700 - -5 0 2 -39.902 168.227 61.969 4.700 - 21 2 3 45.965 25.531 -13.525 0.000 - 11 0 0 7.837 2.965 5.607 0.001 - -12 0 0 -37.391 -183.448 491.770 0.000 - 50 2 7 0.100000E+01 0.157088E+03 - 21 2 3 106.753 - 2 3 0 -290.743 - 5 2 0 43.519 -17.417 -13.156 4.700 - -5 0 1 55.819 -79.515 -91.963 4.700 - 1 1 0 -30.032 -18.852 7.276 0.000 - 12 0 0 -1.222 75.148 -28.005 0.000 - -11 0 0 -68.085 40.636 -58.143 0.001 - 51 3 7 0.100000E+01 0.108089E+03 - -1 0 1 89.187 - 21 2 3 -148.151 - -5 0 1 -25.932 -10.777 -17.859 4.700 - 5 2 0 -17.262 -47.242 14.082 4.700 - -2 0 3 -19.280 21.784 3.830 0.000 - -11 0 0 36.057 -21.440 -33.022 0.001 - 12 0 0 26.417 57.675 -25.997 0.000 - 52 1 7 0.100000E+01 0.814638E+02 - 1 1 0 129.260 - -2 0 3 -350.686 - 5 1 0 -7.687 -97.006 -19.782 4.700 - -5 0 2 13.563 76.003 32.869 4.700 - 21 2 3 -18.825 19.788 16.797 0.000 - 11 0 0 9.954 20.116 -14.225 0.001 - -12 0 0 2.995 -18.901 -237.085 0.000 - 53 2 7 0.100000E+01 0.130765E+03 - 21 1 2 257.849 - 4 3 0 -408.707 - 5 3 0 -35.563 -46.808 27.882 4.700 - -5 0 2 107.768 -57.307 86.290 4.700 - 3 1 0 -104.401 202.074 -122.239 0.000 - 12 0 0 0.256 -97.474 -118.415 0.000 - -11 0 0 31.939 -0.484 -24.376 0.001 - 54 2 7 0.100000E+01 0.103269E+03 - 21 2 3 408.082 - -3 0 1 -282.950 - -5 0 1 97.689 -136.578 134.793 4.700 - 5 2 0 81.477 144.984 23.979 4.700 - -4 0 3 -187.829 -72.610 -14.038 0.000 - -11 0 0 -34.897 19.774 1.085 0.001 - 12 0 0 43.559 44.431 -20.687 0.000 - 55 3 7 0.100000E+01 0.988447E+02 - 1 1 0 105.767 - 21 2 1 -203.603 - 5 2 0 4.558 -60.683 6.707 4.700 - -5 0 3 -50.965 -37.325 -0.623 4.700 - 2 3 0 16.366 49.012 -32.707 0.000 - 11 0 0 -15.742 5.588 -56.177 0.001 - -12 0 0 45.782 43.408 -15.036 0.000 - 56 3 7 0.100000E+01 0.166739E+03 - -4 0 3 137.788 - 21 2 1 -500.826 - -5 0 3 -14.052 14.361 -19.459 4.700 - 5 2 0 -6.759 98.661 -61.236 4.700 - -3 0 1 161.335 -152.868 -95.460 0.000 - -12 0 0 9.515 7.293 -2.919 0.000 - 11 0 0 -150.038 32.552 -183.965 0.001 - 57 1 7 0.100000E+01 0.164686E+03 - 1 1 0 111.780 - -2 0 3 -1369.851 - 5 2 0 57.751 151.988 -173.898 4.700 - -5 0 3 -172.723 -248.255 -315.104 4.700 - 21 1 2 25.141 -15.915 -12.206 0.000 - 11 0 0 78.153 39.141 -331.452 0.001 - -12 0 0 11.677 73.041 -425.411 0.000 - 58 2 7 0.100000E+01 0.138614E+03 - 21 1 2 243.568 - -1 0 1 -149.755 - -5 0 2 85.134 28.927 45.219 4.700 - 5 3 0 24.671 -27.929 5.057 4.700 - -2 0 3 -49.635 -96.530 -2.339 0.000 - -11 0 0 -35.027 29.122 -19.527 0.001 - 12 0 0 -25.143 66.409 65.403 0.000 - 59 2 7 0.100000E+01 0.996958E+02 - 21 3 2 73.750 - -2 0 3 -1727.810 - -5 0 2 -4.865 -103.024 -23.596 4.700 - 5 1 0 -16.096 126.653 -139.813 4.700 - -1 0 1 -25.621 12.455 -27.006 0.000 - -12 0 0 40.688 6.031 -1117.562 0.000 - 11 0 0 5.894 -42.116 -346.083 0.001 - 60 1 7 0.100000E+01 0.981673E+02 - 1 1 0 322.891 - -2 0 3 -62.595 - 5 1 0 33.518 17.331 28.693 4.700 - -5 0 2 3.446 31.013 8.051 4.700 - 21 2 3 16.787 -31.595 -21.734 0.000 - 11 0 0 -29.224 30.452 123.947 0.001 - -12 0 0 -24.526 -47.200 121.339 0.000 - 61 1 7 0.100000E+01 0.113016E+03 - -1 0 1 477.993 - 2 3 0 -82.300 - -5 0 1 -25.444 -10.071 -8.417 4.700 - 5 2 0 -18.762 24.693 -11.663 4.700 - 21 3 2 17.999 60.336 -3.975 0.000 - -11 0 0 21.376 -9.887 274.338 0.001 - 12 0 0 4.832 -65.071 145.410 0.000 - 62 2 7 0.100000E+01 0.858803E+02 - 21 2 1 530.162 - -2 0 3 -835.122 - -5 0 3 304.512 295.645 -36.484 4.700 - 5 2 0 179.364 6.777 6.459 4.700 - -1 0 1 -512.016 -313.209 -297.970 0.000 - -12 0 0 -5.830 30.242 36.808 0.000 - 11 0 0 33.970 -19.455 -13.774 0.001 - 63 2 7 0.100000E+01 0.279816E+03 - 21 3 2 130.090 - 1 1 0 -1266.203 - 5 3 0 -80.672 -277.385 -219.566 4.700 - -5 0 2 15.170 -17.624 10.002 4.700 - 2 1 0 80.214 27.403 -82.313 0.000 - 11 0 0 -48.109 144.269 -479.823 0.001 - -12 0 0 33.397 123.337 -364.412 0.000 - 64 1 7 0.100000E+01 0.948476E+02 - 1 1 0 108.115 - -2 0 3 -186.217 - 5 2 0 -30.761 -35.944 6.384 4.700 - -5 0 3 31.179 -17.463 28.661 4.700 - 21 1 2 -33.227 15.296 15.299 0.000 - 11 0 0 24.984 28.010 -6.555 0.001 - -12 0 0 7.825 10.100 -121.892 0.000 - 65 2 7 0.100000E+01 0.915102E+02 - 21 2 3 50.944 - -1 0 1 -196.000 - -5 0 1 -12.664 -32.686 -7.608 4.700 - 5 2 0 25.346 -20.464 -29.817 4.700 - -2 0 3 -30.408 13.241 -14.695 0.000 - -11 0 0 32.014 4.234 -3.186 0.001 - 12 0 0 -14.288 35.675 -89.750 0.000 - 66 3 7 0.100000E+01 0.166415E+03 - 2 3 0 196.683 - 21 2 3 -163.250 - 5 2 0 -22.115 1.168 -5.197 4.700 - -5 0 1 0.624 23.761 -10.209 4.700 - 1 1 0 23.425 120.753 71.241 0.000 - 12 0 0 -7.666 -154.215 -27.435 0.000 - -11 0 0 5.732 8.533 5.033 0.001 - 67 1 7 0.100000E+01 0.898431E+02 - 2 3 0 365.408 - -1 0 1 -85.774 - 5 3 0 -100.930 54.194 120.905 4.700 - -5 0 2 30.578 -24.074 24.812 4.700 - 21 2 1 37.159 -7.696 -32.628 0.000 - 12 0 0 38.634 -47.805 119.851 0.000 - -11 0 0 -5.442 25.381 46.694 0.001 - 68 3 7 0.100000E+01 0.820607E+02 - -2 0 3 237.122 - 21 2 1 -216.750 - -5 0 3 78.416 -44.911 -96.826 4.700 - 5 2 0 -7.741 35.350 34.542 4.700 - -1 0 1 -77.791 -5.139 -65.055 0.000 - -12 0 0 -21.763 32.211 119.140 0.000 - 11 0 0 28.880 -17.512 28.571 0.001 - 69 3 7 0.100000E+01 0.946751E+02 - 2 3 0 2411.586 - 21 1 2 -35.247 - 5 3 0 29.415 -3.844 10.256 4.700 - -5 0 2 46.686 37.222 47.887 4.700 - 1 1 0 -26.150 -32.332 38.321 0.000 - 12 0 0 2.369 -15.403 1509.755 0.000 - -11 0 0 -52.320 14.357 770.120 0.001 - 70 2 7 0.100000E+01 0.912135E+02 - 21 3 2 81.933 - 1 1 0 -202.321 - 5 1 0 80.041 -23.865 -46.340 4.700 - -5 0 2 -1.452 -20.732 -16.531 4.700 - 2 3 0 -47.413 14.919 -51.467 0.000 - 11 0 0 2.409 49.676 3.528 0.001 - -12 0 0 -33.584 -19.998 -9.578 0.000 - 71 3 7 0.100000E+01 0.849318E+02 - 1 1 0 3907.100 - 21 3 2 -46.353 - 5 1 0 -26.128 -16.030 2.242 4.700 - -5 0 2 14.664 -16.602 13.124 4.700 - 2 3 0 19.601 58.708 13.489 0.000 - 11 0 0 19.094 18.465 2081.553 0.001 - -12 0 0 -27.231 -44.542 1750.340 0.000 - 72 2 7 0.100000E+01 0.974684E+02 - 21 2 3 65.497 - -1 0 1 -1039.936 - -5 0 1 18.914 -20.108 26.925 4.700 - 5 2 0 6.108 -40.920 3.860 4.700 - -2 0 3 13.816 21.983 -15.581 0.000 - -11 0 0 -63.955 31.963 -765.535 0.001 - 12 0 0 25.118 7.082 -224.108 0.000 - 73 3 7 0.100000E+01 0.112808E+03 - 2 3 0 659.559 - 21 1 2 -366.917 - 5 3 0 -163.896 -113.756 107.042 4.700 - -5 0 2 -14.230 46.813 37.166 4.700 - 1 1 0 174.791 145.983 -241.211 0.000 - 12 0 0 -13.950 -53.285 358.512 0.000 - -11 0 0 17.284 -25.755 31.134 0.001 - 74 3 7 0.100000E+01 0.124890E+03 - -1 0 1 182.698 - 21 2 3 -448.383 - -5 0 1 35.759 -25.099 -10.392 4.700 - 5 2 0 38.728 198.690 -221.925 4.700 - -2 0 3 -127.355 -93.995 -21.534 0.000 - -11 0 0 7.643 -67.492 17.983 0.001 - 12 0 0 45.225 -12.103 -29.818 0.000 - 75 2 7 0.100000E+01 0.103572E+03 - 21 2 3 121.808 - -3 0 1 -425.486 - -5 0 1 -27.818 10.003 -24.931 4.700 - 5 2 0 23.622 93.414 -18.900 4.700 - -4 0 3 -52.539 -71.153 36.835 0.000 - -11 0 0 66.721 -49.216 -254.802 0.001 - 12 0 0 -9.985 16.952 -41.880 0.000 - 76 2 7 0.100000E+01 0.860850E+02 - 21 3 2 70.175 - 3 1 0 -117.070 - 5 1 0 19.415 7.918 -6.583 4.700 - -5 0 2 -24.578 -11.370 -18.077 4.700 - 4 3 0 11.657 -26.569 19.292 0.000 - 11 0 0 -19.719 -24.574 -13.984 0.001 - -12 0 0 13.224 54.594 -27.543 0.000 - 77 1 7 0.100000E+01 0.208068E+03 - 1 1 0 478.660 - -2 0 3 -481.422 - 5 1 0 290.541 187.594 244.665 4.700 - -5 0 2 -40.374 17.957 -37.865 4.700 - 21 2 3 -58.468 -214.314 -121.580 0.000 - 11 0 0 -76.417 41.533 -34.716 0.001 - -12 0 0 -115.282 -32.769 -53.266 0.000 - 78 2 7 0.100000E+01 0.109513E+03 - 21 2 1 58.882 - -2 0 3 -1326.637 - -5 0 3 44.960 -30.999 -15.148 4.700 - 5 2 0 28.131 6.296 3.640 4.700 - -1 0 1 -72.521 -49.631 -83.918 0.000 - -12 0 0 -0.965 52.844 -1118.458 0.000 - 11 0 0 0.395 21.490 -53.872 0.001 - 79 3 7 0.100000E+01 0.103699E+03 - 1 1 0 667.528 - 21 3 2 -112.058 - 5 1 0 -67.165 4.397 42.441 4.700 - -5 0 2 -25.458 -56.267 -15.369 4.700 - 2 3 0 67.121 -8.428 -25.675 0.000 - 11 0 0 4.174 75.414 356.819 0.001 - -12 0 0 21.328 -15.116 197.254 0.000 - 80 2 7 0.100000E+01 0.110295E+03 - 21 3 2 218.882 - 1 1 0 -115.791 - 5 1 0 -38.997 -108.810 37.934 4.700 - -5 0 2 41.655 24.829 1.559 4.700 - 2 3 0 -39.432 18.060 20.666 0.000 - 11 0 0 -5.053 50.782 -4.358 0.001 - -12 0 0 41.827 15.139 47.289 0.000 - 81 3 7 0.100000E+01 0.888904E+02 - 1 1 0 214.998 - 21 3 2 -120.370 - 5 1 0 -57.947 10.127 -2.326 4.700 - -5 0 2 -7.336 -21.295 22.780 4.700 - 2 3 0 96.196 -10.711 -34.826 0.000 - 11 0 0 24.319 20.561 24.819 0.001 - -12 0 0 -55.232 1.318 84.181 0.000 - 82 1 7 0.100000E+01 0.809852E+02 - 1 1 0 115.707 - -2 0 3 -123.495 - 5 1 0 55.002 1.210 45.110 4.700 - -5 0 2 -14.418 19.931 -2.338 4.700 - 21 2 3 -39.015 -30.572 -35.842 0.000 - 11 0 0 -39.638 -1.059 -0.637 0.001 - -12 0 0 38.069 10.490 -14.081 0.000 - 83 3 7 0.100000E+01 0.996239E+02 - -2 0 3 602.175 - 21 3 2 -181.500 - -5 0 2 24.526 17.013 1.403 4.700 - 5 1 0 53.578 96.367 -55.774 4.700 - -1 0 1 -85.664 -171.695 57.270 0.000 - -12 0 0 24.693 72.363 348.845 0.000 - 11 0 0 -17.133 -14.049 68.930 0.001 - 84 2 7 0.100000E+01 0.860880E+02 - 21 2 1 63.438 - -2 0 3 -138.107 - -5 0 3 -16.446 -17.291 4.682 4.700 - 5 2 0 24.676 10.383 -20.170 4.700 - -3 0 1 4.418 -21.091 19.134 0.000 - -12 0 0 -19.757 4.386 -85.947 0.000 - 11 0 0 7.110 23.614 7.633 0.001 - 85 2 7 0.100000E+01 0.965607E+02 - 21 2 3 343.980 - -1 0 1 -589.753 - -5 0 1 -139.795 -118.942 164.842 4.700 - 5 2 0 4.746 216.162 -8.119 4.700 - -2 0 3 84.077 -81.140 -101.475 0.000 - -11 0 0 61.349 -6.945 -293.791 0.001 - 12 0 0 -10.377 -9.136 -7.230 0.000 - 86 2 7 0.100000E+01 0.145615E+03 - 21 3 2 91.382 - -2 0 1 -1372.812 - -5 0 2 -4.630 133.848 -95.606 4.700 - 5 3 0 -64.919 -1.661 -14.052 4.700 - -1 0 1 -31.097 -64.311 -23.282 0.000 - -12 0 0 84.882 -45.675 -1077.494 0.000 - 11 0 0 15.764 -22.202 -70.995 0.001 - 87 3 7 0.100000E+01 0.106561E+03 - 2 3 0 512.761 - 21 1 2 -98.430 - 5 3 0 26.148 14.505 -0.917 4.700 - -5 0 2 -32.677 86.905 -38.147 4.700 - 1 1 0 14.965 -32.006 37.635 0.000 - 12 0 0 -38.370 -15.506 208.420 0.000 - -11 0 0 29.934 -53.898 207.339 0.001 - 88 1 7 0.100000E+01 0.114143E+03 - 2 3 0 276.936 - -1 0 1 -172.626 - 5 2 0 4.437 20.337 -11.684 4.700 - -5 0 1 -35.920 -115.523 -100.434 4.700 - 21 3 2 -12.875 27.409 11.395 0.000 - 12 0 0 40.285 57.708 211.520 0.000 - -11 0 0 4.073 10.070 -6.489 0.001 - 89 1 7 0.100000E+01 0.140531E+03 - -1 0 1 853.895 - 2 3 0 -93.767 - -5 0 1 26.345 20.700 16.129 4.700 - 5 2 0 -69.787 67.606 10.516 4.700 - 21 3 2 -33.411 -2.427 -24.510 0.000 - -11 0 0 54.373 -96.271 681.937 0.001 - 12 0 0 22.481 10.392 76.056 0.000 - 90 2 7 0.100000E+01 0.187029E+03 - 21 2 1 432.914 - -2 0 3 -373.011 - -5 0 3 81.233 28.410 -9.461 4.700 - 5 2 0 5.146 161.335 -11.698 4.700 - -1 0 1 24.661 -316.957 157.578 0.000 - -12 0 0 -93.246 131.216 -46.830 0.000 - 11 0 0 -17.793 -4.004 -29.686 0.001 - 91 3 7 0.100000E+01 0.966011E+02 - 3 1 0 404.759 - 21 3 2 -43.220 - 5 1 0 36.663 11.610 30.339 4.700 - -5 0 2 18.717 27.156 -8.098 4.700 - 4 3 0 -5.323 -19.825 14.375 0.000 - 11 0 0 -62.522 -35.483 290.392 0.001 - -12 0 0 12.464 16.543 34.531 0.000 - 92 2 7 0.100000E+01 0.835794E+02 - 21 2 1 151.759 - -4 0 3 -262.843 - -5 0 3 -78.582 -51.420 -47.056 4.700 - 5 2 0 -32.437 65.915 54.068 4.700 - -1 0 1 88.280 -13.384 -23.372 0.000 - -12 0 0 5.214 -39.613 -53.342 0.000 - 11 0 0 17.525 38.503 -41.382 0.001 - 93 3 7 0.100000E+01 0.110079E+03 - 2 3 0 711.943 - 21 1 2 -99.324 - 5 3 0 -107.300 22.842 45.842 4.700 - -5 0 2 -21.015 -23.090 4.814 4.700 - 1 1 0 190.059 -42.623 188.809 0.000 - 12 0 0 -47.344 59.364 190.018 0.000 - -11 0 0 -14.401 -16.493 183.136 0.001 - 94 3 7 0.100000E+01 0.909315E+02 - 2 3 0 217.502 - 21 1 2 -145.996 - 5 3 0 4.794 25.136 0.676 4.700 - -5 0 2 -63.284 31.366 -73.784 4.700 - 1 1 0 31.083 -88.909 63.978 0.000 - 12 0 0 32.663 49.676 27.995 0.000 - -11 0 0 -5.256 -17.270 52.640 0.001 - 95 3 7 0.100000E+01 0.958570E+02 - 2 3 0 81.013 - 21 1 2 -254.764 - 5 3 0 -65.702 21.064 -44.635 4.700 - -5 0 2 -24.369 -10.809 -27.996 4.700 - 1 1 0 81.232 41.158 -60.796 0.000 - 12 0 0 39.095 -44.000 -6.770 0.000 - -11 0 0 -30.255 -7.412 -33.555 0.001 - 96 1 7 0.100000E+01 0.115027E+03 - 2 3 0 255.399 - -1 0 1 -84.173 - 5 2 0 -12.322 -37.144 3.855 4.700 - -5 0 1 73.132 0.792 29.896 4.700 - 21 3 2 -36.835 -42.320 56.145 0.000 - 12 0 0 -9.755 88.270 86.042 0.000 - -11 0 0 -14.220 -9.598 -4.713 0.001 - 97 3 7 0.100000E+01 0.128737E+03 - 2 3 0 2655.228 - 21 1 2 -50.247 - 5 3 0 -11.062 -66.895 15.327 4.700 - -5 0 2 -47.913 -1.419 18.170 4.700 - 1 1 0 15.011 -22.092 31.291 0.000 - 12 0 0 -0.439 36.730 357.850 0.000 - -11 0 0 44.403 53.676 2182.343 0.001 - 98 3 7 0.100000E+01 0.347111E+03 - 2 3 0 824.009 - 21 1 2 -301.280 - 5 3 0 111.845 256.758 -6.181 4.700 - -5 0 2 -53.156 99.393 -68.663 4.700 - 1 1 0 4.969 -24.539 3.362 0.000 - 12 0 0 -45.815 -207.996 297.616 0.000 - -11 0 0 -17.843 -123.616 296.595 0.001 - 99 3 7 0.100000E+01 0.114266E+03 - -4 0 3 177.911 - 21 2 1 -89.567 - -5 0 3 -31.792 -20.244 5.048 4.700 - 5 2 0 -4.433 -49.037 -17.323 4.700 - -3 0 1 -20.671 11.382 -1.112 0.000 - -12 0 0 37.521 63.652 108.974 0.000 - 11 0 0 19.375 -5.753 -7.244 0.001 - 100 3 7 0.100000E+01 0.846583E+02 - 2 3 0 1086.319 - 21 1 2 -68.395 - 5 3 0 42.370 -3.854 22.189 4.700 - -5 0 2 18.867 -75.085 59.235 4.700 - 1 1 0 -55.195 53.184 7.733 0.000 - 12 0 0 14.458 12.935 828.523 0.000 - -11 0 0 -20.501 12.819 100.244 0.001 - 101 2 7 0.100000E+01 0.865308E+02 - 21 2 1 157.273 - -2 0 3 -160.513 - -5 0 3 20.276 14.559 -27.917 4.700 - 5 2 0 51.262 38.198 62.793 4.700 - -1 0 1 -40.725 -61.178 30.110 0.000 - -12 0 0 -47.137 -18.416 -22.428 0.000 - 11 0 0 16.324 26.837 -45.797 0.001 - 102 3 7 0.100000E+01 0.500844E+03 - -2 0 3 1297.608 - 21 2 1 -213.906 - -5 0 3 -32.365 -31.569 28.283 4.700 - 5 2 0 -0.056 -459.219 411.721 4.700 - -1 0 1 -39.625 1.722 36.198 0.000 - -12 0 0 28.122 34.946 54.511 0.000 - 11 0 0 43.924 454.121 552.990 0.001 - 103 3 7 0.100000E+01 0.132038E+03 - 1 1 0 1314.532 - 21 2 1 -106.561 - 5 2 0 21.664 -42.131 -37.309 4.700 - -5 0 3 2.426 -83.224 11.748 4.700 - 2 3 0 -70.919 31.687 64.436 0.000 - 11 0 0 49.556 98.666 1155.027 0.001 - -12 0 0 -2.727 -4.998 14.069 0.000 - 104 2 7 0.100000E+01 0.153559E+03 - 21 1 2 428.492 - 2 2 0 -699.631 - 5 3 0 86.265 324.175 131.243 4.700 - -5 0 3 10.078 80.762 -79.486 4.700 - 1 1 0 -141.840 -282.286 -22.114 0.000 - 12 0 0 -19.743 -16.603 -77.413 0.000 - -11 0 0 65.240 -106.048 -223.370 0.001 - 105 2 7 0.100000E+01 0.142003E+03 - 21 2 1 210.826 - 3 1 0 -98.200 - 5 3 0 10.295 18.629 7.790 4.700 - -5 0 3 -28.928 37.855 -17.096 4.700 - 4 2 0 -30.060 49.943 49.624 0.000 - 11 0 0 7.878 -42.057 70.236 0.001 - -12 0 0 40.816 -64.369 2.071 0.000 - 106 3 7 0.100000E+01 0.908686E+02 - 4 3 0 182.431 - 21 1 2 -71.271 - 5 3 0 -25.973 -54.953 31.563 4.700 - -5 0 2 -31.323 -14.022 17.860 4.700 - 3 1 0 35.854 32.504 29.867 0.000 - 12 0 0 25.458 50.140 43.280 0.000 - -11 0 0 -4.015 -13.670 -11.409 0.001 - 107 2 7 0.100000E+01 0.884737E+02 - 21 2 1 289.321 - -2 0 3 -180.205 - -5 0 3 -29.731 125.084 -78.594 4.700 - 5 2 0 -16.602 -130.565 124.721 4.700 - -1 0 1 16.822 27.605 7.325 0.000 - -12 0 0 21.369 -4.980 74.399 0.000 - 11 0 0 8.143 -17.144 -18.734 0.001 - 108 2 7 0.100000E+01 0.153879E+03 - 21 2 1 297.395 - -2 0 3 -441.849 - -5 0 3 164.102 7.019 94.389 4.700 - 5 2 0 2.898 -22.672 -0.254 4.700 - -1 0 1 -186.810 145.342 6.994 0.000 - -12 0 0 17.871 -129.058 -170.880 0.000 - 11 0 0 1.939 -0.631 -74.703 0.001 - 109 3 7 0.100000E+01 0.153127E+03 - 3 1 0 346.547 - 21 3 2 -271.588 - 5 1 0 46.531 28.486 13.133 4.700 - -5 0 2 34.342 10.616 36.956 4.700 - 4 3 0 -183.867 40.729 -175.777 0.000 - 11 0 0 45.861 -80.118 149.789 0.001 - -12 0 0 57.133 0.287 50.857 0.000 - 110 3 7 0.100000E+01 0.899412E+02 - 2 3 0 1555.068 - 21 1 2 -41.691 - 5 3 0 -9.148 -29.502 -2.766 4.700 - -5 0 2 32.259 -28.164 32.961 4.700 - 1 1 0 5.332 29.149 4.555 0.000 - 12 0 0 -12.708 14.150 1385.714 0.000 - -11 0 0 -15.735 14.366 92.914 0.001 - 111 3 7 0.100000E+01 0.936476E+02 - 2 3 0 545.873 - 21 2 3 -41.317 - 5 2 0 27.881 14.342 -11.616 4.700 - -5 0 1 21.635 -4.399 22.298 4.700 - 1 1 0 -9.865 -36.971 29.519 0.000 - 12 0 0 7.909 15.858 328.845 0.000 - -11 0 0 -47.560 11.169 135.510 0.001 - 112 1 7 0.100000E+01 0.108398E+03 - 2 2 0 121.420 - -1 0 1 -146.334 - 5 3 0 -61.619 22.855 33.316 4.700 - -5 0 3 8.836 -26.824 -13.926 4.700 - 21 2 1 -13.729 -25.339 23.836 0.000 - 12 0 0 -0.285 -4.740 13.220 0.000 - -11 0 0 66.798 34.048 -81.360 0.001 - 113 2 7 0.100000E+01 0.874642E+02 - 21 2 3 28.283 - -1 0 1 -576.885 - -5 0 1 -11.111 24.339 -26.101 4.700 - 5 2 0 -8.457 18.189 -2.223 4.700 - -2 0 3 18.681 -8.148 -0.966 0.000 - -11 0 0 -19.791 -53.931 -342.744 0.001 - 12 0 0 20.678 19.551 -176.568 0.000 - 114 2 7 0.100000E+01 0.866254E+02 - 21 2 3 61.077 - -1 0 1 -181.116 - -5 0 1 3.684 -25.844 -22.342 4.700 - 5 2 0 -37.290 15.209 -29.649 4.700 - -2 0 3 33.810 42.833 -31.944 0.000 - -11 0 0 7.276 -25.255 -61.392 0.001 - 12 0 0 -7.479 -6.943 25.288 0.000 - 115 2 7 0.100000E+01 0.844064E+02 - 21 1 2 71.671 - 2 3 0 -1286.390 - 5 3 0 16.244 46.873 -30.069 4.700 - -5 0 2 1.206 -46.311 32.995 4.700 - 1 1 0 -22.512 24.570 -13.888 0.000 - 12 0 0 -11.874 -27.024 -1148.177 0.000 - -11 0 0 16.935 1.892 -55.580 0.001 - 116 1 7 0.100000E+01 0.900411E+02 - 2 3 0 132.229 - -1 0 1 -71.109 - 5 3 0 11.135 -23.228 7.976 4.700 - -5 0 2 -35.664 27.251 21.206 4.700 - 21 2 1 -14.612 -14.423 -0.096 0.000 - 12 0 0 -12.757 -22.994 35.008 0.000 - -11 0 0 51.898 33.395 -2.975 0.001 - 117 1 7 0.100000E+01 0.887530E+02 - 2 3 0 209.177 - -1 0 1 -199.932 - 5 2 0 -1.589 63.898 -50.285 4.700 - -5 0 1 -62.516 2.406 -14.865 4.700 - 21 3 2 58.144 -103.376 114.655 0.000 - 12 0 0 -24.771 -14.828 -8.821 0.000 - -11 0 0 30.732 51.900 -31.439 0.001 - 118 1 7 0.100000E+01 0.984966E+02 - -1 0 1 214.587 - 2 3 0 -286.252 - -5 0 2 -93.483 -62.000 8.724 4.700 - 5 3 0 105.510 92.107 48.383 4.700 - 21 2 1 -57.645 3.855 20.127 0.000 - -11 0 0 48.809 12.800 -60.866 0.001 - 12 0 0 -3.192 -46.762 -88.034 0.000 - 119 3 7 0.100000E+01 0.106815E+03 - 4 3 0 648.415 - 21 1 2 -171.989 - 5 3 0 -5.579 44.450 -10.492 4.700 - -5 0 2 -93.140 25.229 -92.275 4.700 - 3 1 0 36.227 -101.882 92.566 0.000 - 12 0 0 62.402 52.626 316.079 0.000 - -11 0 0 0.089 -20.424 170.548 0.001 - 120 3 7 0.100000E+01 0.929786E+02 - -3 0 1 147.773 - 21 2 3 -84.477 - -5 0 1 -28.749 39.087 -23.293 4.700 - 5 2 0 21.155 -17.323 20.324 4.700 - -4 0 3 -30.428 5.295 32.289 0.000 - -11 0 0 26.984 -55.805 26.793 0.001 - 12 0 0 11.037 28.747 7.183 0.000 - 121 2 7 0.100000E+01 0.190813E+03 - 21 2 3 292.396 - -3 0 1 -331.641 - -5 0 1 -23.840 7.355 -0.465 4.700 - 5 2 0 27.418 136.833 -29.621 4.700 - -4 0 3 162.377 -95.182 122.305 0.000 - -11 0 0 -68.797 -4.546 -97.327 0.001 - 12 0 0 -97.158 -44.459 -34.137 0.000 - 122 1 7 0.100000E+01 0.100560E+03 - 2 3 0 159.769 - -1 0 1 -71.376 - 5 3 0 -37.900 1.290 5.996 4.700 - -5 0 2 19.754 27.543 35.147 4.700 - 21 2 1 -9.771 24.699 -8.211 0.000 - 12 0 0 -9.102 -62.034 41.283 0.000 - -11 0 0 37.018 8.502 14.176 0.001 - 123 3 7 0.100000E+01 0.857914E+02 - 1 1 0 436.984 - 21 2 1 -43.749 - 5 2 0 22.490 2.887 13.724 4.700 - -5 0 3 12.888 -44.492 33.479 4.700 - 2 3 0 -64.781 46.934 67.097 0.000 - 11 0 0 0.742 -22.413 17.344 0.001 - -12 0 0 28.662 17.084 261.590 0.000 - 124 3 7 0.100000E+01 0.999584E+02 - 1 1 0 134.370 - 21 2 1 -108.695 - 5 3 0 -24.051 18.590 14.186 4.700 - -5 0 3 21.488 3.044 18.685 4.700 - 2 2 0 54.180 7.693 -47.605 0.000 - 11 0 0 -72.963 -17.526 34.232 0.001 - -12 0 0 21.346 -11.801 6.178 0.000 - 125 3 7 0.100000E+01 0.960621E+02 - 1 1 0 151.594 - 21 3 2 -165.195 - 5 1 0 35.137 -3.077 -16.369 4.700 - -5 0 2 18.656 70.005 -84.696 4.700 - 2 3 0 -40.035 -16.218 17.556 0.000 - 11 0 0 -23.738 -70.536 57.184 0.001 - -12 0 0 9.980 19.827 12.725 0.000 - 126 1 7 0.100000E+01 0.833902E+02 - 1 1 0 180.290 - -4 0 3 -286.384 - 5 2 0 61.210 -59.860 -62.280 4.700 - -5 0 3 -73.724 123.369 -115.942 4.700 - 21 1 2 33.460 -56.584 0.373 0.000 - 11 0 0 -32.680 30.336 40.045 0.001 - -12 0 0 11.733 -37.261 31.710 0.000 - 127 2 7 0.100000E+01 0.835626E+02 - 21 3 2 42.486 - -2 0 3 -426.864 - -5 0 2 21.621 3.178 -11.760 4.700 - 5 1 0 -8.797 22.085 11.434 4.700 - -1 0 1 5.601 -38.530 -19.597 0.000 - -12 0 0 -27.904 15.699 -362.270 0.000 - 11 0 0 9.479 -2.432 -2.184 0.001 - 128 2 7 0.100000E+01 0.836814E+02 - 21 2 3 37.848 - -1 0 1 -1376.892 - -5 0 3 14.763 15.932 -7.820 4.700 - 5 2 0 -11.958 -20.804 2.903 4.700 - -2 0 1 -25.537 0.558 3.971 0.000 - -11 0 0 -12.563 -30.889 -602.880 0.001 - 12 0 0 35.295 35.204 -735.218 0.000 - 129 3 7 0.100000E+01 0.120038E+03 - 3 1 0 898.247 - 21 3 2 -104.489 - 5 1 0 25.426 -90.159 57.009 4.700 - -5 0 2 40.682 14.804 47.671 4.700 - 4 3 0 -37.828 159.867 40.562 0.000 - 11 0 0 14.385 -42.124 438.002 0.001 - -12 0 0 -42.664 -42.388 210.514 0.000 - 130 1 7 0.100000E+01 0.975697E+02 - 1 1 0 108.605 - -2 0 3 -146.437 - 5 2 0 -29.077 23.886 -43.033 4.700 - -5 0 3 -6.360 48.575 13.613 4.700 - 21 1 2 19.193 -19.652 29.618 0.000 - 11 0 0 45.392 -18.430 -36.563 0.001 - -12 0 0 -29.148 -34.378 -1.467 0.000 - 131 2 7 0.100000E+01 0.806905E+02 - 21 1 2 327.920 - -3 0 1 -188.557 - -5 0 2 118.274 43.469 129.968 4.700 - 5 3 0 28.988 19.826 0.576 4.700 - -4 0 3 -141.192 -65.920 -82.165 0.000 - -11 0 0 11.649 32.521 80.336 0.001 - 12 0 0 -17.719 -29.896 10.648 0.000 - 132 1 7 0.100000E+01 0.994768E+02 - -1 0 1 70.257 - 2 3 0 -164.705 - -5 0 2 36.978 -19.966 2.840 4.700 - 5 3 0 -14.562 -13.893 -16.963 4.700 - 21 2 1 -25.218 -24.627 2.843 0.000 - -11 0 0 6.731 46.156 -0.339 0.001 - 12 0 0 -3.930 12.329 -82.830 0.000 - 133 2 7 0.100000E+01 0.132419E+03 - 21 2 1 179.195 - 1 1 0 -320.163 - 5 3 0 -58.157 21.076 -14.792 4.700 - -5 0 3 -20.740 -48.464 11.969 4.700 - 2 2 0 110.173 -73.057 58.753 0.000 - 11 0 0 8.985 86.703 -148.764 0.001 - -12 0 0 -40.261 13.742 -48.132 0.000 - 134 2 7 0.100000E+01 0.101108E+03 - 21 3 2 171.091 - 3 1 0 -265.195 - 5 1 0 40.347 -96.464 -13.281 4.700 - -5 0 2 -45.614 -49.138 -24.675 4.700 - 4 3 0 -53.468 128.120 4.314 0.000 - 11 0 0 70.024 22.030 -72.496 0.001 - -12 0 0 -11.288 -4.547 12.034 0.000 - 135 3 7 0.100000E+01 0.125942E+03 - 2 3 0 641.190 - 21 2 3 -59.103 - 5 2 0 0.162 63.637 18.808 4.700 - -5 0 1 43.232 33.559 24.925 4.700 - 1 1 0 28.618 -32.325 38.671 0.000 - 12 0 0 -62.237 -1.424 231.059 0.000 - -11 0 0 -9.776 -63.447 268.624 0.001 - 136 1 7 0.100000E+01 0.941443E+02 - 2 3 0 134.018 - -1 0 1 -377.452 - 5 2 0 -52.649 113.760 -77.271 4.700 - -5 0 1 -42.694 -151.628 -132.035 4.700 - 21 3 2 47.146 29.323 -28.497 0.000 - 12 0 0 -9.715 9.510 26.587 0.000 - -11 0 0 57.912 -0.965 -32.217 0.001 - 137 1 7 0.100000E+01 0.893413E+02 - 3 1 0 97.188 - -4 0 3 -109.512 - 5 2 0 4.610 -27.802 -12.019 4.700 - -5 0 3 19.564 -13.586 24.430 4.700 - 21 1 2 -43.272 7.478 7.954 0.000 - 11 0 0 43.580 19.617 -45.077 0.001 - -12 0 0 -24.482 14.294 12.388 0.000 - 138 3 7 0.100000E+01 0.141181E+03 - 1 1 0 417.605 - 21 2 1 -229.651 - 5 2 0 -96.018 -63.752 -40.169 4.700 - -5 0 3 -122.091 -70.023 129.618 4.700 - 2 3 0 103.489 115.690 -10.484 0.000 - 11 0 0 123.032 22.060 112.527 0.001 - -12 0 0 -8.412 -3.975 -3.537 0.000 - 139 3 7 0.100000E+01 0.813022E+02 - 1 1 0 1287.126 - 21 2 1 -62.564 - 5 2 0 39.124 44.950 14.962 4.700 - -5 0 3 21.989 6.816 -15.374 4.700 - 2 3 0 -68.451 -42.332 85.056 0.000 - 11 0 0 32.297 -26.124 919.495 0.001 - -12 0 0 -24.960 16.690 220.424 0.000 - 140 2 7 0.100000E+01 0.121135E+03 - 21 2 1 168.646 - 1 1 0 -310.206 - 5 2 0 23.825 -71.679 30.110 4.700 - -5 0 3 -79.150 -35.044 49.229 4.700 - 2 3 0 4.081 32.020 12.624 0.000 - 11 0 0 71.009 65.476 -165.587 0.001 - -12 0 0 -19.765 9.226 -67.936 0.000 - 141 3 7 0.100000E+01 0.140771E+03 - 2 3 0 801.582 - 21 2 3 -160.936 - 5 2 0 -94.148 -99.600 -78.087 4.700 - -5 0 1 -23.894 -8.314 24.600 4.700 - 1 1 0 104.779 -6.861 62.935 0.000 - 12 0 0 17.278 86.379 589.719 0.000 - -11 0 0 -4.016 28.396 41.480 0.001 - 142 2 7 0.100000E+01 0.838942E+02 - 21 2 3 147.373 - -3 0 1 -543.559 - -5 0 1 20.778 38.706 -14.717 4.700 - 5 2 0 32.827 97.773 68.427 4.700 - -4 0 3 -34.058 -122.733 -104.695 0.000 - -11 0 0 -41.472 15.505 -244.935 0.001 - 12 0 0 21.924 -29.250 -100.266 0.000 - 143 3 7 0.100000E+01 0.927511E+02 - 2 1 0 614.163 - 21 2 3 -64.817 - 5 2 0 -63.956 -29.597 81.429 4.700 - -5 0 3 65.335 33.082 11.731 4.700 - 1 1 0 0.816 42.675 13.799 0.000 - 12 0 0 -36.050 -45.986 256.598 0.000 - -11 0 0 33.854 -0.174 185.788 0.001 - 144 3 7 0.100000E+01 0.818511E+02 - -3 0 1 272.546 - 21 2 3 -85.404 - -5 0 1 -9.451 32.456 19.800 4.700 - 5 2 0 5.398 38.103 -32.723 4.700 - -4 0 3 -5.720 -82.258 52.383 0.000 - -11 0 0 27.738 23.648 22.049 0.001 - 12 0 0 -17.965 -11.949 125.633 0.000 - 145 3 7 0.100000E+01 0.124388E+03 - 2 3 0 401.723 - 21 1 2 -342.077 - 5 3 0 -34.569 -16.526 35.463 4.700 - -5 0 2 173.104 125.815 -125.897 4.700 - 1 1 0 -163.712 -17.795 -79.020 0.000 - 12 0 0 34.592 -85.758 231.350 0.000 - -11 0 0 -9.415 -5.737 -2.249 0.001 - 146 1 7 0.100000E+01 0.121991E+03 - 1 1 0 193.287 - -2 0 3 -213.107 - 5 2 0 -54.532 -74.508 -82.550 4.700 - -5 0 3 55.752 -6.713 -30.582 4.700 - 21 1 2 -26.461 -6.969 -31.698 0.000 - 11 0 0 -12.740 -0.927 56.210 0.001 - -12 0 0 37.981 89.117 68.800 0.000 - 147 2 7 0.100000E+01 0.864016E+02 - 21 2 3 76.944 - -1 0 1 -1395.934 - -5 0 1 33.107 -57.051 -19.553 4.700 - 5 2 0 -30.867 6.135 14.185 4.700 - -2 0 3 -4.349 82.436 -38.616 0.000 - -11 0 0 -29.446 -43.307 -702.180 0.001 - 12 0 0 31.555 11.786 -572.825 0.000 - 148 3 7 0.100000E+01 0.109373E+03 - -1 0 1 300.542 - 21 1 2 -378.351 - -5 0 2 69.746 -188.516 -185.235 4.700 - 5 3 0 -72.758 49.619 27.676 4.700 - -2 0 3 -43.625 81.276 -78.402 0.000 - -11 0 0 47.363 19.142 140.839 0.001 - 12 0 0 -0.726 38.479 17.313 0.000 - 149 1 7 0.100000E+01 0.893763E+02 - 1 1 0 231.217 - -2 0 3 -76.671 - 5 2 0 -37.109 5.676 31.621 4.700 - -5 0 3 -43.175 49.169 39.971 4.700 - 21 1 2 67.179 -18.114 8.640 0.000 - 11 0 0 11.166 16.067 49.601 0.001 - -12 0 0 1.939 -52.798 24.713 0.000 - 150 2 7 0.100000E+01 0.221030E+03 - 21 2 3 227.830 - -1 0 1 -701.597 - -5 0 1 29.370 -13.072 -33.149 4.700 - 5 2 0 8.641 -47.129 -46.731 4.700 - -2 0 3 167.521 72.196 145.272 0.000 - -11 0 0 -127.480 0.364 -223.290 0.001 - 12 0 0 -78.052 -12.360 -315.870 0.000 - 151 1 7 0.100000E+01 0.106959E+03 - 1 1 0 58.357 - -2 0 3 -235.846 - 5 2 0 26.519 -12.205 -29.317 4.700 - -5 0 3 59.065 39.906 -50.277 4.700 - 21 1 2 -16.832 -12.014 -2.076 0.000 - 11 0 0 -33.232 33.389 -47.885 0.001 - -12 0 0 -35.521 -49.076 -47.933 0.000 - 152 1 7 0.100000E+01 0.823058E+02 - -1 0 1 99.105 - 2 3 0 -129.263 - -5 0 2 2.153 -39.855 -36.006 4.700 - 5 3 0 4.619 -23.559 18.441 4.700 - 21 2 1 8.840 55.458 13.684 0.000 - -11 0 0 -46.389 -4.972 -6.320 0.001 - 12 0 0 30.777 12.927 -19.956 0.000 - 153 1 7 0.100000E+01 0.135669E+03 - 1 1 0 186.134 - -2 0 3 -155.691 - 5 2 0 4.766 21.290 1.372 4.700 - -5 0 3 -68.701 99.240 -1.965 4.700 - 21 1 2 55.166 -11.619 -10.303 0.000 - 11 0 0 29.866 -59.132 54.407 0.001 - -12 0 0 -21.097 -49.780 -13.068 0.000 - 154 3 7 0.100000E+01 0.983863E+02 - 2 2 0 2692.894 - 21 1 2 -628.733 - 5 3 0 -490.441 44.006 -211.840 4.700 - -5 0 3 -145.568 172.802 201.254 4.700 - 3 1 0 650.118 -271.703 409.982 0.000 - 12 0 0 -48.434 36.010 1029.609 0.000 - -11 0 0 34.324 18.886 635.156 0.001 - 155 3 7 0.100000E+01 0.102405E+03 - 1 1 0 315.848 - 21 3 2 -241.328 - 5 1 0 2.882 32.462 -27.485 4.700 - -5 0 2 -72.645 157.930 -38.581 4.700 - 2 3 0 29.258 -141.618 -18.728 0.000 - 11 0 0 49.703 -57.109 160.906 0.001 - -12 0 0 -9.197 8.335 -1.593 0.000 - 156 3 7 0.100000E+01 0.926057E+02 - 1 1 0 67.933 - 21 3 2 -210.018 - 5 1 0 -20.235 -10.322 5.796 4.700 - -5 0 2 1.841 46.475 -8.158 4.700 - 2 3 0 57.668 -12.359 -62.368 0.000 - 11 0 0 -37.196 22.515 -22.588 0.001 - -12 0 0 -2.078 -46.310 -54.768 0.000 - 157 2 7 0.100000E+01 0.858939E+02 - 21 3 2 238.182 - 1 1 0 -179.977 - 5 1 0 56.044 80.267 60.356 4.700 - -5 0 2 3.380 -59.367 50.933 4.700 - 2 3 0 -54.611 8.889 52.743 0.000 - 11 0 0 4.976 -46.423 -116.935 0.001 - -12 0 0 -9.789 16.634 11.108 0.000 - 158 3 7 0.100000E+01 0.934682E+02 - 1 1 0 344.161 - 21 3 2 -44.549 - 5 1 0 50.676 -5.349 59.186 4.700 - -5 0 2 -24.118 -13.856 9.595 4.700 - 2 3 0 -0.051 -20.374 -9.556 0.000 - 11 0 0 -43.228 -7.451 123.992 0.001 - -12 0 0 16.721 47.030 116.395 0.000 - 159 3 7 0.100000E+01 0.864181E+02 - 1 1 0 180.633 - 21 3 2 -180.086 - 5 1 0 -11.163 -32.232 -17.645 4.700 - -5 0 2 -3.983 95.730 -102.750 4.700 - 2 3 0 -14.909 -53.619 26.365 0.000 - 11 0 0 2.727 1.561 -10.366 0.001 - -12 0 0 27.328 -11.440 104.943 0.000 - 160 3 7 0.100000E+01 0.862553E+02 - 2 3 0 65.980 - 21 2 3 -190.293 - 5 2 0 44.740 15.968 -45.425 4.700 - -5 0 1 -52.698 -17.616 -41.735 4.700 - 1 1 0 -8.016 28.437 -6.720 0.000 - 12 0 0 5.733 10.330 22.238 0.000 - -11 0 0 10.241 -37.119 -52.672 0.001 - 161 3 7 0.100000E+01 0.103251E+03 - -2 0 3 195.963 - 21 2 1 -239.600 - -5 0 3 -15.791 -47.802 -25.199 4.700 - 5 2 0 -150.120 9.259 -41.369 4.700 - -1 0 1 104.077 19.306 -23.384 0.000 - -12 0 0 54.656 -22.605 40.662 0.000 - 11 0 0 7.178 41.843 5.651 0.001 - 162 1 7 0.100000E+01 0.972305E+02 - -1 0 1 53.166 - 2 3 0 -256.255 - -5 0 1 7.191 23.782 13.367 4.700 - 5 2 0 -2.118 41.552 -15.869 4.700 - 21 3 2 -18.617 -12.389 -15.362 0.000 - -11 0 0 29.738 -29.005 -30.562 0.001 - 12 0 0 -16.194 -23.940 -154.663 0.000 - 163 3 7 0.100000E+01 0.876043E+02 - 3 1 0 196.357 - 21 2 1 -109.544 - 5 2 0 12.875 29.634 -11.717 4.700 - -5 0 3 17.008 -89.861 20.954 4.700 - 4 3 0 -11.095 30.998 -26.765 0.000 - 11 0 0 -48.860 23.975 73.341 0.001 - -12 0 0 30.073 5.254 31.001 0.000 - 164 2 7 0.100000E+01 0.818574E+02 - 21 3 2 94.583 - -2 0 3 -187.277 - -5 0 2 -25.984 54.094 36.279 4.700 - 5 1 0 -15.620 -22.537 -10.872 4.700 - -1 0 1 32.387 -19.372 -2.424 0.000 - -12 0 0 17.026 -32.368 -116.629 0.000 - 11 0 0 -7.810 20.183 0.951 0.001 - 165 2 7 0.100000E+01 0.867256E+02 - 21 3 2 187.702 - 1 1 0 -513.767 - 5 1 0 -62.776 22.744 -72.333 4.700 - -5 0 2 -112.422 -106.203 -57.185 4.700 - 2 3 0 207.275 88.481 -15.276 0.000 - 11 0 0 -49.807 -35.533 -158.958 0.001 - -12 0 0 17.730 30.510 -22.313 0.000 - 166 2 7 0.100000E+01 0.859189E+02 - 21 2 3 166.917 - -1 0 1 -96.271 - -5 0 1 -10.617 -27.425 -16.462 4.700 - 5 2 0 3.105 47.221 -31.789 4.700 - -2 0 3 34.957 -7.084 20.328 0.000 - -11 0 0 -50.387 -11.311 32.656 0.001 - 12 0 0 22.942 -1.402 65.912 0.000 - 167 2 7 0.100000E+01 0.859533E+02 - 21 2 1 76.740 - -2 0 3 -125.952 - -5 0 3 -21.402 12.014 0.637 4.700 - 5 2 0 -8.068 24.054 27.072 4.700 - -1 0 1 23.316 -6.355 4.776 0.000 - -12 0 0 -4.381 -29.501 -94.492 0.000 - 11 0 0 10.534 -0.212 12.794 0.001 - 168 1 7 0.100000E+01 0.879228E+02 - 2 3 0 54.949 - -1 0 1 -535.988 - 5 2 0 -3.756 21.620 -1.699 4.700 - -5 0 1 14.654 22.142 -22.025 4.700 - 21 3 2 23.985 -36.949 20.110 0.000 - 12 0 0 8.842 -27.604 -85.317 0.000 - -11 0 0 -43.724 20.790 -392.107 0.001 - 169 2 7 0.100000E+01 0.240036E+03 - 21 2 1 111.711 - -2 0 3 -660.377 - -5 0 3 37.453 6.792 -2.303 4.700 - 5 2 0 18.419 13.417 13.762 4.700 - -1 0 1 120.205 121.733 -133.702 0.000 - -12 0 0 -154.114 -102.164 -388.752 0.000 - 11 0 0 -21.962 -39.777 -37.671 0.001 - 170 3 7 0.100000E+01 0.931551E+02 - 1 1 0 1018.651 - 21 2 1 -62.964 - 5 2 0 13.355 -55.558 1.253 4.700 - -5 0 3 -43.470 -49.657 56.973 4.700 - 2 3 0 4.388 65.861 46.470 0.000 - 11 0 0 30.322 2.095 105.408 0.001 - -12 0 0 -4.595 37.259 745.583 0.000 - 171 2 7 0.100000E+01 0.170534E+03 - 21 2 1 140.795 - -2 0 3 -447.365 - -5 0 3 8.359 -22.671 -21.638 4.700 - 5 2 0 44.380 66.927 17.946 4.700 - -1 0 1 -49.530 106.091 9.806 0.000 - -12 0 0 -15.729 -154.812 -292.287 0.000 - 11 0 0 12.520 4.465 -20.398 0.001 - 172 3 7 0.100000E+01 0.122794E+03 - 2 3 0 472.115 - 21 2 3 -70.019 - 5 2 0 39.851 3.456 1.060 4.700 - -5 0 1 6.530 -21.070 7.721 4.700 - 1 1 0 -80.114 -68.834 56.655 0.000 - 12 0 0 42.043 73.585 331.230 0.000 - -11 0 0 -8.309 12.863 5.431 0.001 - 173 2 7 0.100000E+01 0.936447E+02 - 21 2 1 192.163 - -2 0 3 -1066.480 - -5 0 3 76.664 99.818 -61.965 4.700 - 5 2 0 52.230 68.997 41.260 4.700 - -1 0 1 -108.565 -212.276 -92.187 0.000 - -12 0 0 -47.840 32.725 -423.310 0.000 - 11 0 0 27.511 10.736 -338.116 0.001 - 174 3 7 0.100000E+01 0.834748E+02 - -1 0 1 354.852 - 21 2 3 -66.989 - -5 0 1 -18.573 -8.515 -9.963 4.700 - 5 2 0 8.822 -36.205 -22.130 4.700 - -2 0 3 -4.233 27.248 3.241 0.000 - -11 0 0 2.226 -28.469 186.808 0.001 - 12 0 0 11.757 45.941 129.908 0.000 - 175 1 7 0.100000E+01 0.903488E+02 - 1 1 0 79.812 - -2 0 3 -778.965 - 5 1 0 -47.702 -40.333 -56.313 4.700 - -5 0 2 40.199 38.836 38.451 4.700 - 21 2 3 32.831 -30.972 -42.497 0.000 - 11 0 0 -20.220 -5.265 -45.945 0.001 - -12 0 0 -5.109 37.732 -592.850 0.000 - 176 3 7 0.100000E+01 0.127992E+03 - 2 3 0 318.481 - 21 1 2 -183.689 - 5 3 0 45.476 -36.938 -48.790 4.700 - -5 0 2 73.801 32.739 -22.953 4.700 - 1 1 0 -38.545 62.484 -24.466 0.000 - 12 0 0 -96.315 -58.789 200.404 0.000 - -11 0 0 15.583 0.504 30.598 0.001 - 177 3 7 0.100000E+01 0.134236E+03 - -2 0 3 404.702 - 21 3 2 -90.742 - -5 0 2 50.792 10.429 -1.603 4.700 - 5 1 0 73.998 71.743 51.587 4.700 - -1 0 1 -56.918 1.169 47.046 0.000 - -12 0 0 -38.268 -53.173 51.287 0.000 - 11 0 0 -29.604 -30.167 165.644 0.001 - 178 3 7 0.100000E+01 0.154019E+03 - 2 3 0 679.057 - 21 1 2 -329.232 - 5 3 0 -196.693 199.226 -195.808 4.700 - -5 0 2 -4.641 -22.810 -2.797 4.700 - 1 1 0 73.986 -144.212 174.863 0.000 - 12 0 0 97.350 -19.718 350.820 0.000 - -11 0 0 29.998 -12.486 22.747 0.001 - 179 1 7 0.100000E+01 0.825499E+02 - -4 0 3 149.371 - 3 1 0 -97.726 - -5 0 3 -26.752 26.019 -1.797 4.700 - 5 2 0 -8.122 -58.207 8.332 4.700 - 21 1 2 51.425 23.626 15.998 0.000 - -12 0 0 14.858 -20.423 39.701 0.000 - 11 0 0 -31.410 28.985 -10.590 0.001 - 180 2 7 0.100000E+01 0.870903E+02 - 21 2 1 25.523 - -2 0 3 -1630.254 - -5 0 3 -34.567 30.883 -38.348 4.700 - 5 2 0 9.637 -21.293 -27.417 4.700 - -1 0 1 -6.814 -20.068 -3.787 0.000 - -12 0 0 12.102 31.051 -1331.585 0.000 - 11 0 0 19.642 -20.573 -203.593 0.001 - 181 3 7 0.100000E+01 0.168807E+03 - 2 3 0 513.649 - 21 1 2 -91.549 - 5 3 0 105.602 23.421 7.966 4.700 - -5 0 2 12.849 16.525 -7.574 4.700 - 1 1 0 29.072 -23.648 31.678 0.000 - 12 0 0 -135.225 -24.718 385.440 0.000 - -11 0 0 -12.297 8.419 4.590 0.001 - 182 3 7 0.100000E+01 0.260981E+03 - 2 3 0 1501.986 - 21 2 3 -347.702 - 5 2 0 90.940 80.125 -107.810 4.700 - -5 0 1 7.439 -100.230 -87.162 4.700 - 1 1 0 139.076 92.621 -12.826 0.000 - 12 0 0 -201.389 -88.700 1185.170 0.000 - -11 0 0 -36.067 16.183 176.912 0.001 - 183 2 7 0.100000E+01 0.984604E+02 - 21 3 2 136.269 - 3 1 0 -202.672 - 5 1 0 36.724 -81.056 54.918 4.700 - -5 0 2 24.366 6.116 24.090 4.700 - 4 3 0 -45.319 20.364 -21.702 0.000 - 11 0 0 6.715 50.665 -70.911 0.001 - -12 0 0 -22.485 3.911 -52.797 0.000 - 184 3 7 0.100000E+01 0.818684E+02 - -2 0 3 753.908 - 21 3 2 -198.078 - -5 0 2 316.548 -65.180 176.911 4.700 - 5 1 0 -27.539 -29.305 16.500 4.700 - -1 0 1 -276.248 102.994 192.669 0.000 - -12 0 0 32.683 -10.525 70.120 0.000 - 11 0 0 -45.443 2.017 99.630 0.001 - 185 2 7 0.100000E+01 0.853612E+02 - 21 3 2 89.003 - 1 1 0 -280.070 - 5 1 0 -17.239 -17.023 -4.587 4.700 - -5 0 2 -49.719 -17.529 25.944 4.700 - 2 3 0 54.691 60.414 -34.254 0.000 - 11 0 0 3.301 -2.237 -170.035 0.001 - -12 0 0 8.966 -23.624 -8.134 0.000 - 186 3 7 0.100000E+01 0.833363E+02 - -1 0 1 220.382 - 21 1 2 -87.167 - -5 0 2 -14.218 18.268 -7.577 4.700 - 5 3 0 -44.156 17.656 6.740 4.700 - -2 0 3 48.816 -16.268 -23.185 0.000 - -11 0 0 -15.274 -40.533 125.073 0.001 - 12 0 0 24.833 20.877 32.163 0.000 - 187 3 7 0.100000E+01 0.126884E+03 - 2 2 0 124.338 - 21 1 2 -184.748 - 5 3 0 41.358 -6.386 13.461 4.700 - -5 0 3 -11.449 92.724 13.086 4.700 - 1 1 0 -19.534 11.256 -17.350 0.000 - 12 0 0 10.536 -72.537 -9.953 0.000 - -11 0 0 -20.911 -25.058 -59.654 0.001 - 188 3 7 0.100000E+01 0.386122E+03 - 1 1 0 1147.309 - 21 3 2 -323.049 - 5 1 0 -28.406 -75.369 -54.492 4.700 - -5 0 2 147.886 -203.642 -75.662 4.700 - 2 3 0 -78.728 -96.438 64.494 0.000 - 11 0 0 -0.452 295.349 707.794 0.001 - -12 0 0 -40.299 80.101 182.127 0.000 - 189 2 7 0.100000E+01 0.104828E+03 - 21 1 2 81.849 - 2 3 0 -197.551 - 5 3 0 -18.443 76.118 5.647 4.700 - -5 0 2 12.727 -23.016 -22.972 4.700 - 1 1 0 -26.394 5.981 -2.556 0.000 - 12 0 0 12.353 -56.472 -102.180 0.000 - -11 0 0 19.757 -2.610 6.358 0.001 - 190 3 7 0.100000E+01 0.122787E+03 - -1 0 1 441.188 - 21 1 2 -131.450 - -5 0 2 -40.948 39.765 -53.308 4.700 - 5 3 0 -56.833 28.482 -3.186 4.700 - -2 0 3 4.995 -68.479 33.364 0.000 - -11 0 0 33.291 22.474 49.059 0.001 - 12 0 0 59.496 -22.242 283.808 0.000 diff --git a/Generators/AlpGen_i/share/inparmAlpGen.dat b/Generators/AlpGen_i/share/inparmAlpGen.dat deleted file mode 100755 index e28e229f1c8f2eb8fc2990f704c1992a75774388..0000000000000000000000000000000000000000 --- a/Generators/AlpGen_i/share/inparmAlpGen.dat +++ /dev/null @@ -1,48 +0,0 @@ - W b bbar + 1 jets - W-> ell nu - ======================================= - b mass: 4.7 - Generation cuts for the partonic event sample: - Light jets: - ptmin= 20. |etamax|= 1. dR(j-j),dR(Q-j)> 0.7 - b quarks: - ptmin= 20. |etamax|= 1. dR(QQ)> 0.7 - Leptons: - ptmin(lep)= 0. |etamax|= 10. Et(miss)> 0. dR(l-j)> 0. -************** run parameters - 1 ! hard process code - 0.000 4.700 174.300 80.419 91.188 120.000 ! mc,mb,mt,mw,mz,mh - 2 -1. ! ih2 - 3 7000. ! ebeam - 4 5. ! ndns - 5 1. ! iqopt - 6 1. ! qfac - 7 0. ! ickkw - 10 1. ! njets - 11 5. ! ihvy - 20 0. ! mc - 21 4.7 ! mb - 30 20. ! ptjmin - 31 20. ! ptbmin - 33 0. ! ptlmin - 34 0. ! metmin - 40 1. ! etajmax - 41 1. ! etabmax - 43 10. ! etalmax - 50 0.7 ! drjmin - 51 0.7 ! drbmin - 55 0. ! drlmin - 90 12345. ! iseed1 - 91 67890. ! iseed2 - 151 1. ! iwdecmod - 160 1. ! cluopt - 190 12345. ! iseed3 - 191 67890. ! iseed4 - 501 0. ! min ETCLUS used for parton-jet matching - 502 0. ! min RCLUS value for parton-jet matching - 503 6. ! max ETACLUS value for parton-jet matching - 504 0. ! 0 inclusive 1 exclusive - -************** end parameters - 0.38348200 0.01238310 ! Crosssection +- error (pb) - 190 495.460022 ! unwtd events, lum (pb-1) diff --git a/Generators/AlpGen_i/share/jobOptions.AlpgenHerwig.py b/Generators/AlpGen_i/share/jobOptions.AlpgenHerwig.py deleted file mode 100755 index 93ce449f7d8eb9e17a2a507299d1414ba191136f..0000000000000000000000000000000000000000 --- a/Generators/AlpGen_i/share/jobOptions.AlpgenHerwig.py +++ /dev/null @@ -1,54 +0,0 @@ -############################################################## -# -# Job options file -# -#============================================================== -#-------------------------------------------------------------- -# General Application Configuration options -#-------------------------------------------------------------- -import AthenaCommon.AtlasUnixGeneratorJob - -from AthenaCommon.AppMgr import theApp -from AthenaCommon.AppMgr import ServiceMgr - -# make sure we are loading the ParticleProperty service -from PartPropSvc.PartPropSvcConf import PartPropSvc -ServiceMgr += PartPropSvc() - -#-------------------------------------------------------------- -# Private Application Configuration options -#-------------------------------------------------------------- -# Set output level threshold (2=DEBUG, 3=INFO, 4=WARNING, 5=ERROR, 6=FATAL ) -ServiceMgr.MessageSvc.OutputLevel = DEBUG - -#-------------------------------------------------------------- -# Event related parameters -#-------------------------------------------------------------- -# Number of events to be processed (default is 10) -theApp.EvtMax = 5 -#-------------------------------------------------------------- -# Algorithms Private Options -#-------------------------------------------------------------- -from AthenaServices.AthenaServicesConf import AtRndmGenSvc -ServiceMgr += AtRndmGenSvc() -ServiceMgr.AtRndmGenSvc.Seeds = ["HERWIG 330020611 841000366", "HERWIG_INIT 824021 3247532"] -# AtRndmGenSvc.ReadFromFile = true; - -from AthenaCommon.AlgSequence import AlgSequence -job=AlgSequence() -from Herwig_i.Herwig_iConf import Herwig -job += Herwig() -job.Herwig.HerwigCommand = ["iproc alpgen 12","modpdf 10042", "autpdf HWLHAPDF", "msflag 1", "jmbug 0"] - -from TruthExamples.TruthExamplesConf import DumpMC -job += DumpMC() - -#--------------------------------------------------------------- -# Ntuple service output -#--------------------------------------------------------------- -#============================================================== -# -# End of job options file -# -############################################################### - diff --git a/Generators/AlpGen_i/share/jobOptions.AlpgenPythia.py b/Generators/AlpGen_i/share/jobOptions.AlpgenPythia.py deleted file mode 100755 index d9214b00877fcc0988ffce596af6e90ed87e6517..0000000000000000000000000000000000000000 --- a/Generators/AlpGen_i/share/jobOptions.AlpgenPythia.py +++ /dev/null @@ -1,55 +0,0 @@ -############################################################### -# -# Job options file -# -#============================================================== -#-------------------------------------------------------------- -# General Application Configuration options -#-------------------------------------------------------------- -import AthenaCommon.AtlasUnixGeneratorJob - -from AthenaCommon.AppMgr import theApp -from AthenaCommon.AppMgr import ServiceMgr - -# make sure we are loading the ParticleProperty service -from PartPropSvc.PartPropSvcConf import PartPropSvc -ServiceMgr += PartPropSvc() - -#-------------------------------------------------------------- -# Private Application Configuration options -#-------------------------------------------------------------- -# Set output level threshold (2=DEBUG, 3=INFO, 4=WARNING, 5=ERROR, 6=FATAL ) -ServiceMgr.MessageSvc.OutputLevel = INFO - -#-------------------------------------------------------------- -# Event related parameters -#-------------------------------------------------------------- -# Number of events to be processed (default is 10) -theApp.EvtMax = 5 -#-------------------------------------------------------------- -# Algorithms Private Options -#-------------------------------------------------------------- -from AthenaServices.AthenaServicesConf import AtRndmGenSvc -ServiceMgr += AtRndmGenSvc() -ServiceMgr.AtRndmGenSvc.Seeds = ["PYTHIA 4789899 989240512", "PYTHIA_INIT 820021 2347532"] -# AtRndmGenSvc.ReadFromFile = true; - - -from AthenaCommon.AlgSequence import AlgSequence -job=AlgSequence() -from Pythia_i.Pythia_iConf import Pythia -job += Pythia() -job.Pythia.PythiaCommand = ["pyinit user alpgen", "pyinit pylistf 1","pyinit dumpr 1 1"] - -from TruthExamples.TruthExamplesConf import DumpMC -job += DumpMC() - -#--------------------------------------------------------------- -# Ntuple service output -#--------------------------------------------------------------- -#============================================================== -# -# End of job options file -# -############################################################### - diff --git a/Generators/AlpGen_i/src/initalpgen.F b/Generators/AlpGen_i/src/initalpgen.F deleted file mode 100755 index 244adeaf8031ff1f6abd5e64bd87d2a902d97233..0000000000000000000000000000000000000000 --- a/Generators/AlpGen_i/src/initalpgen.F +++ /dev/null @@ -1,418 +0,0 @@ -C---------------------------------------------------------------------- - SUBROUTINE INITALPGEN -C---------------------------------------------------------------------- -C HERWIG/PYTHIA UNIVERSAL EVENT INITIALITION ROUTINE -C---------------------------------------------------------------------- - IMPLICIT NONE -#include "AlpGen_i/alpsho.inc" - CHARACTER *3 CSHO -C-- GUP Event common block -#include "GeneratorFortranCommon/hepeup.inc" -C-- GUP common block -#include "GeneratorFortranCommon/heprup.inc" -C CALSIM AND JET VARIABLES -C INTEGER NCY,NCPHI,NJMAX,JETNO,NCJET - INTEGER NCY,NCPHI - DOUBLE PRECISION YCMIN,YCMAX,PI,ET,DELPHI,CPHCAL,SPHCAL,DELY, - & CTHCAL,STHCAL -C & CTHCAL,STHCAL,PCJET,ETJET - PARAMETER (NCY=100) - PARAMETER (NCPHI=60,PI=3.141593D0) - COMMON/CALOR_M/DELY,DELPHI,ET(NCY,NCPHI), - $ CTHCAL(NCY),STHCAL(NCY),CPHCAL(NCPHI),SPHCAL(NCPHI),YCMIN - $ ,YCMAX -C - INTEGER IEND,INORAD - COMMON/SHVETO/IEND,INORAD(MAXNUP) -C LOCAL VARIABLES - CHARACTER*70 STDUMMY - INTEGER I,NTMP,IHEPMIN - DOUBLE PRECISION TMP - DOUBLE PRECISION PBEAM1,PBEAM2 -C USER ACCESS TO MATCHING PARAMETERS - INTEGER IUSRMAT - PARAMETER (IUSRMAT=1) -c -- oj (ver206 backword compatibility) - INTEGER IVER206 - DOUBLE PRECISION VETCLUS,VRCLUS - -C -c Open the file with the input parameters - FILENAME = 'inparmAlpGen.dat' - NUNITINI=71 - OPEN(UNIT=NUNITINI,FILE=FILENAME,STATUS='OLD',ERR=900) -c Open the file with the unweighted alpgen events - FILENAME = 'alpgen.unw_events' - NUNIT=72 - OPEN(UNIT=NUNIT,FILE=FILENAME,STATUS='OLD',ERR=901) -C WRITE(*,*) 'INPUT NAME OF FILE CONTAINING EVENTS' -C WRITE(*,*) '(FOR "file.unw" ENTER "file")' -C READ(*,*) FILENAME -C CALL STRCATH(FILENAME,'.unw',TMPSTR) -C call GETUNIT(NUNIT) -C OPEN(UNIT=NUNIT,FILE=TMPSTR,STATUS='OLD') -C CALL STRCATH(FILENAME,'_unw.par',TMPSTR) -C CALL GETUNIT(NUNITINI) -C OPEN(UNIT=NUNITINI,FILE=TMPSTR,STATUS='OLD') -C OPEN A LOG FILE -C CALL ALSHCD(CSHO) -C IF(CSHO.EQ.'HER') THEN -C CALL STRCATH(FILENAME,'.her-log',TMPSTR) -C ELSE -C CALL STRCATH(FILENAME,'.pyt-log',TMPSTR) -C ENDIF -C CALL GETUNIT(NUNITOUT) -C OPEN(UNIT=NUNITOUT,FILE=TMPSTR,STATUS='UNKNOWN') -C START READING FILE - DO I=1,10000 - READ(NUNITINI,'(A)') STDUMMY - IF(STDUMMY(1:4).EQ.'****') GOTO 10 - WRITE(*,*) STDUMMY -C WRITE(NUNITOUT,*) STDUMMY - ENDDO -C -C READ IN INPUT PARAMETERS - 10 READ(NUNITINI,*) IHRD -C -c IF(IHRD.EQ.12) THEN -c WRITE(*,*) 'HJET PROCESSES NOT AVAILABLE AS YET' -c STOP -c ENDIF - READ(NUNITINI,*) MC,MB,MT,MW,MZ,MH - IVER206 = 1 - DO I=1,1000 - READ(NUNITINI,*,ERR=20) NTMP,TMP - IF(NTMP.LE.200.AND.NTMP.GE.1) THEN - PARVAL(NTMP)=TMP - ENDIF -c-- BC - IF (NTMP.EQ.501) ETCLUS = TMP - IF (NTMP.EQ.502) RCLUS = TMP - IF (NTMP.EQ.503) ETACLMAX = TMP - IF (NTMP.EQ.504) THEN -c -- oj - IEXC = TMP - IVER206 = 0 - ENDIF - -c-- BC END - ENDDO - 20 CONTINUE - - IF (IVER206.EQ.1) THEN - WRITE(*,*) 'PARAMETERS USED AS V2.06 (=BACKWARD COMPATIBILITY)' - IEXC = ETACLMAX - ETACLMAX = PARVAL(40)+PARVAL(50) ! ETAJMAX+DRJMIN - ENDIF - - READ(NUNITINI,*) AVGWGT,ERRWGT - READ(NUNITINI,*) UNWEV,TOTLUM - CLOSE(NUNITINI) -C WRITE(NUNITOUT,*) " " -C WRITE(NUNITOUT,*) "INPUT CROSS SECTION (PB):",AVGWGT," +/-",ERRWGT -C WRITE(NUNITOUT,*) "NUMBER OF INPUT EVENTS:",UNWEV -C WRITE(NUNITOUT,*) "INTEGRATED LUMINOSITY:",TOTLUM -C WRITE PARAMETER VALUES - CALL AHSPAR - PBEAM1=DBLE(EBEAM) - PBEAM2=DBLE(EBEAM) - IH1=1 -C CONVERT PDF TYPES - CALL PDFCONVH(NDNS,NTMP,PDFTYP) -C DEFINE RANGE FOR PARTONS TO BE USED IN MATCHING - NLJETS=PARVAL(10) ! NJETS - DO I=1,MAXNUP - INORAD(I)=0 - ENDDO - CALL ALSHCD(CSHO) - IF(CSHO.EQ.'HER') THEN - NPFST=149 - NPLST=149 -C HERWIG: ALL SHOWERS ORIGINATE FROM IHEP=6 - IEND=6 -C HERWIG: HEPEVT EVENT RECORD FOR FINAL STATE STARTS AT 7=6+1 - IHEPMIN=6 - ELSE - NPFST=1 - NPLST=1 -C PYTHIA: ALL SHOWERS ORIGINATE FROM IHEP=O - IEND=0 -C PYTHIA: HEPEVT EVENT RECORD FOR FINAL STATE STARTS AT 1=0+1 - IHEPMIN=0 - IDPRUP=661 - ENDIF - IF(IHRD.LE.2) THEN -C NLJETS=NPART-6 - NJSTART=4 - NJLAST=155 -C DO NOT INCLUDE IN MATCHING RADIATION ORIGINATING FROM THE W - INORAD(IHEPMIN+2+NLJETS+1)=1 -C DO NOT INCLUDE IN MATCHING RADIATION ORIGINATING FROM HEAVY QUARK -C PAIR - INORAD(IHEPMIN+1)=1 - INORAD(IHEPMIN+2)=1 - ELSEIF(IHRD.LE.4) THEN -C NLJETS=NPART-4 - NJSTART=2 - NJLAST=155 -C DO NOT INCLUDE IN MATCHING RADIATION ORIGINATING FROM THE W - IF(CSHO.EQ.'HER'.AND.NLJETS.EQ.0) THEN -C ALLOW RADIATION FROM IHEPMIN+1 IN HERWIG WHEN NJET=0 - INORAD(IHEPMIN+NLJETS+1)=0 - ELSE - INORAD(IHEPMIN+NLJETS+1)=1 - ENDIF - ELSEIF(IHRD.EQ.5) THEN -C NLJETS=NPART-3*(NW+NZ)-NH-2 - NJSTART=2 - NJLAST=155 -C DO NOT INCLUDE IN MATCHING RADIATION ORIGINATING FROM THE W - IF(CSHO.EQ.'HER'.AND.NLJETS.EQ.0.AND.(NW+NZ+NH+NPH).EQ.1) THEN -C ALLOW RADIATION FROM IHEPMIN+1 IN HERWIG WHEN NJET=0 AND NW+NZ+NH -C +NPH=1 - INORAD(IHEPMIN+NLJETS+1)=0 - ELSE - DO I=1,NW+NZ+NH+NPH - INORAD(IHEPMIN+NLJETS+I)=1 - ENDDO - ENDIF - ELSEIF(IHRD.EQ.6) THEN -C DO NOT INCLUDE IN MATCHING RADIATION ORIGINATING FROM HEAVY QUARK -C PAIR -C NLJETS=NPART-8 (IHVY.EQ.6) NLJETS=NPART-4 (IHVY.LT.6) - INORAD(IHEPMIN+1)=1 - INORAD(IHEPMIN+2)=1 - NJSTART=4 - NJLAST=155 - ELSEIF(IHRD.EQ.9) THEN -C NLJETS=NPART-2 - NJSTART=2 - NJLAST=155 - ELSEIF(IHRD.EQ.10) THEN -C NLJETS=NPART-4 - NJSTART=3 - NJLAST=155 -C DO NOT INCLUDE IN MATCHING RADIATION ORIGINATING FROM THE W - INORAD(IHEPMIN+NLJETS+1+1)=1 -C DO NOT INCLUDE IN MATCHING RADIATION ORIGINATING FROM THE CHARM - INORAD(IHEPMIN+1)=1 - ELSEIF(IHRD.EQ.11) THEN -C NLJETS=NPART-2-NPH - NJSTART=2 - NJLAST=155 -C DO NOT INCLUDE IN MATCHING THE HARD PHOTONS - DO I=1,NPH - INORAD(IHEPMIN+NLJETS+I)=1 - ENDDO - ELSEIF(IHRD.EQ.12) THEN -C NLJETS=NPART-2-NH - NJSTART=2 - NJLAST=155 -C DO NOT INCLUDE IN MATCHING THE HIGGS DECAY PRODUCTS - IF(NLJETS+NH.GT.1) THEN - DO I=1,NH - INORAD(IHEPMIN+NLJETS+I)=1 - ENDDO - ELSE - IF(CSHO.EQ.'HER'.AND.NLJETS.EQ.0) THEN -C ALLOW RADIATION FROM IHEPMIN+1 IN HERWIG WHEN NJET=0 - INORAD(IHEPMIN+1)=0 - ELSE - INORAD(IHEPMIN+NLJETS+1)=1 - ENDIF - ENDIF - ELSEIF(IHRD.EQ.14) THEN -C NLJETS=NPART-4-NPH - NJSTART=2 - NJLAST=155 -C DO NOT INCLUDE IN MATCHING RADIATION ORIGINATING FROM THE W - IF(CSHO.EQ.'HER'.AND.NLJETS.EQ.0.AND.NPH.EQ.0) THEN -C ALLOW RADIATION FROM IHEPMIN+1 IN HERWIG WHEN NJET=0 - INORAD(IHEPMIN+NLJETS+1)=0 - ELSE - INORAD(IHEPMIN+NLJETS+1)=1 - ENDIF - ELSEIF(IHRD.EQ.15) THEN -C NLJETS=NPART-6-NPH - NJSTART=2 - NJLAST=155 -C DO NOT INCLUDE IN MATCHING RADIATION ORIGINATING FROM THE W - INORAD(IHEPMIN+2+NLJETS+NPH+1)=1 -C DO NOT INCLUDE IN MATCHING RADIATION ORIGINATING FROM HEAVY QUARK -C PAIR -C NOTICE THAT HERE THE LIGHT JETS PRECEDE THE QQ PAIR - INORAD(IHEPMIN+NLJETS+1)=1 - INORAD(IHEPMIN+NLJETS+2)=1 - ELSEIF(IHRD.EQ.16) THEN -C DO NOT INCLUDE IN MATCHING RADIATION ORIGINATING FROM HEAVY QUARK -C PAIR -C NLJETS=NPART-8 (IHVY.EQ.6) NLJETS=NPART-4 (IHVY.LT.6) - INORAD(IHEPMIN+1)=1 - INORAD(IHEPMIN+2)=1 - NJSTART=4 - NJLAST=155 -C DO NOT INCLUDE IN MATCHING THE HARD PHOTONS - DO I=1,NPH - INORAD(IHEPMIN+2+NLJETS+I)=1 - ENDDO - ENDIF -C -C INPUT JET MATCHING CRITERIA -C - IF(ICKKW.EQ.1) THEN - WRITE(*,*) ' ' - WRITE(*,*) 'based on interface of v2.11 ' - WRITE(*,*) 'INPUT 0 FOR INCLUSIVE JET SAMPLE, 1 FOR EXCLUSIVE' - WRITE(*,*) '(SELECT 0 FOR HIGHEST PARTON MULTIPLICITY SAMPLE)' - WRITE(*,*) '(SELECT 1 OTHERWISE)' - WRITE(*,*) 'IEXC = ',IEXC -Cbc READ(*,*) IEXC - IF(NLJETS.GT.0) THEN - WRITE(*,*) 'INPUT ET(CLUS), R(CLUS), ETACLMAX' -C --oj ETCLUS=MAX(PTJMIN+5,1.2*PTJMIN) -C --oj RCLUS=DRJMIN - VETCLUS=MAX(PTJMIN+5,1.2D0*PTJMIN) - VRCLUS=DRJMIN -C -- oj WRITE(*,*) '(SUGGESTED VALUES:',ETCLUS,RCLUS,ETAJMAX,')' - WRITE(*,*) '(SUGGESTED VALUES:',VETCLUS,VRCLUS,ETAJMAX,')' -Cbc READ(*,*) ETCLUS,RCLUS,ETACLMAX - ELSEIF(NLJETS.EQ.0) THEN - WRITE(*,*) 'INPUT ET(CLUS), R(CLUS), ETACLMAX' - WRITE(*,*) '(MUST MATCH VALUES USED IN PROCESSING', - + ' OF NJET>0 EVENTS; THESE DEFAULT TO:' - WRITE(*,*) - + 'ETCLUS=MAX(PTJMIN+5,1.2*PTJMIN) RCLUS=DRJMIN, ', - + ' ETACLMAX=ETAJMAX)' -Cbc READ(*,*) ETCLUS,RCLUS,ETACLMAX - ENDIF - WRITE(*,*) ' ' - WRITE(*,*) 'JET PARAMETERS FOR MATCHING:' - WRITE(*,*) 'ET>',ETCLUS,' ETACLUS<',ETACLMAX,' R=',RCLUS - WRITE(*,*) 'DR(PARTON-JET)<',1.5*RCLUS - ENDIF -C -C CALORIMETER ETA RANGE -C YCMAX=ETAJMAX+DRJMIN - YCMAX=ETACLMAX+RCLUS ! MLM August 24 - YCMIN=-YCMAX -C FROM NOW ON, PROCESS THE INFORMATION READ IN, TO COMPLETE SETTING -C UP THE GUP COMMON -C -C-- SET UP THE BEAMS -C-- ID'S OF BEAM PARTICLES - IF(IH1.EQ.1) THEN - IDBMUP(1) = 2212 - ELSEIF(IH1.EQ.-1) THEN - IDBMUP(1) =-2212 - ELSE - WRITE(*,*) 'BEAM 1 NOT PROPERLY INITIALISED, STOP' - STOP - ENDIF - IF(IH2.EQ.1) THEN - IDBMUP(2) = 2212 - ELSEIF(IH2.EQ.-1) THEN - IDBMUP(2) =-2212 - ELSE - WRITE(*,*) 'BEAM 2 NOT PROPERLY INITIALISED, STOP' - STOP - ENDIF - EBMUP(1) = ABS(PBEAM1) - EBMUP(2) = ABS(PBEAM2) -C-- PDF'S FOR THE BEAMS; WILL BE EVALUATED USING THE NDNS VARIABLE -C READ IN EARLIER - PDFGUP(1) = -1 - PDFGUP(2) = -1 - PDFSUP(1) = -1 - PDFSUP(2) = -1 -C-- WHAT DO DO WITH THE WEIGHTS(WE ARE GENERATING UNWEIGHTED EVENTS) - IDWTUP = 3 -C-- ONLY ONE PROCESS - NPRUP = 1 -C-- CROSS SECTION - XSECUP(1) = avgwgt -C-- ERROR ON THE CROSS SECTION - XERRUP(1) = errwgt -C-- MAXIMUM WEIGHT - XMAXUP(1) = avgwgt -C-- HERWIG/PYTHIA SPECIFIC PART - CALL ALSHIN(I) - LPRUP(1) = I - RETURN - - 900 WRITE (*,*) - & 'INITALPGEN: File inparmAlpGen.dat could not be opened' - 901 WRITE (*,*) - & 'INITALPGEN: File alpgen.unw_events could not be opened' - STOP - - END - -c------------------------------------------------------------------- - subroutine AHspar -c set list of parameters types and assign default values -c------------------------------------------------------------------- - implicit none -#include "AlpGen_i/alpsho.inc" -c - ih2=parval(2) - ebeam=parval(3) - ndns=parval(4) - ickkw=parval(7) - ihvy=parval(11) - ihvy2=parval(12) - nw=parval(13) - nz=parval(14) - nh=parval(15) - nph=parval(16) - ptjmin=parval(30) - ptbmin=parval(31) - ptcmin=parval(32) - ptlmin=parval(33) - metmin=parval(34) - ptphmin=parval(35) - etajmax=parval(40) - etabmax=parval(41) - etacmax=parval(42) - etalmax=parval(43) - etaphmax=parval(44) - drjmin=parval(50) - drbmin=parval(51) - drcmin=parval(52) - drlmin=parval(55) - drphjmin=parval(56) - drphlmin=parval(57) - drphmin=parval(58) - mllmin=parval(61) - mllmax=parval(62) - itopprc=parval(102) -c - end - -c------------------------------------------------------------------- - subroutine pdfconvH(nin,nout,type) -c------------------------------------------------------------------- -c converts ALPHA convention for PDF namings to hvqpdf conventions - implicit none - integer nin,nout - character*25 type - character*25 pdftyp(20,2) - data pdftyp/ -c cteq sets - $ 'CTEQ4M ','CTEQ4L ','CTEQ4HJ', - $ 'CTEQ5M ','CTEQ5L ','CTEQ5HJ', - $ 'CTEQ6M ','CTEQ6L ',12*' ', -C MRST SETS - $ 'MRST99 ', - $ 'MRST01; as=0.119','MRST01; as=0.117','MRST01; as=0.121' - $ ,'MRST01J; as=0.121','MRST02LO',14*' '/ - integer pdfmap(20,2) - data pdfmap/ - $ 81,83,88, 101,103, 104, 131,133, 12*0, - $ 111, 185,186,187,188,189, 14*0/ -c - nout=pdfmap(mod(nin ,100),1+nin /100) - type=pdftyp(mod(nin ,100),1+nin /100) - - end - - diff --git a/Generators/AlpGen_i/src/usealpgen.F b/Generators/AlpGen_i/src/usealpgen.F deleted file mode 100755 index 708d6e6d2a4c7468308f82137f82d82e3463c13c..0000000000000000000000000000000000000000 --- a/Generators/AlpGen_i/src/usealpgen.F +++ /dev/null @@ -1,705 +0,0 @@ - -C DECK ID>, UPEVNT. -C* CMZ :- -13/02/02 07.20.46 by Peter Richardson -C*-- Author : Michelangelo Mangano -C---------------------------------------------------------------------- - SUBROUTINE USEALPGEN -C---------------------------------------------------------------------- -c Puts Alpgen event into GUPI common block HEPEU -c---------------------------------------------------------------------- - implicit none -#include "AlpGen_i/alpsho.inc" -C-- GUP Event common block -#include "GeneratorFortranCommon/hepeup.inc" -C-- GUP Run common block -#include "GeneratorFortranCommon/heprup.inc" -c -c local variables -C INTEGER INIT -C DATA INIT/0/ -C CHARACTER *3 CSHO - INTEGER MAXPAR - PARAMETER (MAXPAR=100) - INTEGER NEV,IPROC,IFL(MAXPAR) - REAL SQ,SP(3,MAXPAR),SM(MAXPAR),SWGTRES - INTEGER I,IUP,IWCH,IST -C REAL *8 TMP,WGTRES - REAL *8 TMP -C LOCAL VARIABLES FOR TOP DECAYS - INTEGER IT,ITB,IW,IWDEC,IBUP,IWUP -C LOCAL VARIABLES TOP HIGGS DECAYS -C INTEGER IH -C LOCAL VARIABLES FOR GAUGE BOSON DECAYS - INTEGER IVSTART,IVEND,NVB -C - -C...======================================================= -C...HEPEVT Common block (05.16.2011, Soshi.Tsuno@cern.ch) - INTEGER NMXHEP - PARAMETER (NMXHEP=10000) - REAL*8 phep, vhep ! to be real*4/ *8 depending on host - INTEGER nevhep,nhep,isthep,idhep,jmohep, - $ jdahep - COMMON /hepevt/ - $ nevhep, ! serial number - $ nhep, ! number of particles - $ isthep(nmxhep), ! status code - $ idhep(nmxhep), ! particle ident KF - $ jmohep(2,nmxhep), ! parent particles - $ jdahep(2,nmxhep), ! childreen particles - $ phep(5,nmxhep), ! four-momentum, mass [GeV] - $ vhep(4,nmxhep) ! vertex [mm] - SAVE /hepevt/ - -C...random number - integer imode,itau1,itau2,itau3 - real*8 polz0 - real*8 pyr - external pyr - - real*8 plzapx - external plzapx -C...======================================================= - - - integer istg - common /evtcon/ istg - istg=0 -C -C UPDATE MAXIMUM NMBER OF ALLOWED ERRORS - CALL ALSHER(I) -C - IST=0 -C INPUT EVENT NUMBER, PROCESS TYPE, N PARTONS, SAMPLE'S AVERAGE -C WEIGHT AND QSCALE - READ(NUNIT,2,END=500,ERR=501) NEV,IPROC,NPART,SWGTRES,SQ - 2 FORMAT(I8,1X,I4,1X,I2,2(1X,E12.6)) -C FLAVOUR, COLOUR AND Z-MOMENTUM OF INCOMING PARTONS - READ(NUNIT,8) IFL(1),ICOLUP(1,1),ICOLUP(2,1),SP(3,1) - READ(NUNIT,8) IFL(2),ICOLUP(1,2),ICOLUP(2,2),SP(3,2) -C FLAVOUR, COLOUR, 3-MOMENTUM AND MASS OF OUTGOING PARTONS - DO I=3,NPART - READ(NUNIT,9) IFL(I),ICOLUP(1,I),ICOLUP(2,I),SP(1,I),SP(2,I) - $ ,SP(3,I),SM(I) - ENDDO - 8 FORMAT(I8,1X,2(I4,1X),F10.3) - 9 FORMAT(I8,1X,2(I4,1X),4(1X,F10.3)) -C -C START PROCESSING INPUT DATA -C -C SCALES AND WEIGHTS - SCALUP=DBLE(SQ) - IF(IDWTUP.EQ.3) THEN - XWGTUP=DBLE(SWGTRES) !AVGWGT - ELSE - WRITE(*,*) 'ONLY UNWEIGHTED EVENTS ACCEPTED AS INPUT, STOP' - STOP - ENDIF -c -c--- incoming lines - do 100 i=1,2 - iup=i - idup(iup)=ifl(i) - istup(iup)=-1 - mothup(1,iup)=0 - mothup(2,iup)=0 - pup(1,iup)=0. - pup(2,iup)=0. - pup(3,iup)=dble(Sp(3,iup)) - pup(4,iup)=abs(pup(3,iup)) - pup(5,iup)=0d0 - 100 continue -c--- outgoing lines - do 110 i=3,npart - iup=i - idup(iup)=ifl(i) - istup(iup)=1 - mothup(1,iup)=1 - mothup(2,iup)=2 - pup(1,iup)=dble(Sp(1,i)) - pup(2,iup)=dble(Sp(2,i)) - pup(3,iup)=dble(Sp(3,i)) - pup(5,iup)=dble(Sm(i)) - tmp=(pup(5,iup)**2+pup(1,iup)**2+pup(2,iup)**2+pup(3,iup)**2) - pup(4,iup)=sqrt(tmp) - 110 continue -c - nup=npart -c--- set up colour structure labels - Do iup=1,nup - if(icolup(1,iup).ne.0) icolup(1,iup)=icolup(1,iup)+500 - if(icolup(2,iup).ne.0) icolup(2,iup)=icolup(2,iup)+500 - Enddo -c -c -c and now consider assignements specific to individual hard -C processes -c -c--- W/Z/gamma b bbar + jets, or W/Z + jets - if (ihrd.le.4.or.ihrd.eq.10.OR.IHRD.EQ.14.OR.IHRD.EQ.15) then - iwch=0 - do iup=nup-1,nup - mothup(1,iup)=nup+1 - mothup(2,iup)=0 - if(ihrd.ne.2) iwch=iwch-mod(idup(iup),2) -c electron+nubar -> 11 + (-12) => -(1)+0 = -1 => W- -c positron+nu -> -11+ 12 => -(-1)+0 = -1 => W+ -c u dbar -> 2 -1 => 0 -(-1) = 1 => W+ -c c dbar -> 4 -1 => W+ -c etc. - enddo - iup=nup+1 - If (iwch.gt.0) then - idup(iup)=24 - Elseif (iwch.lt.0) then - idup(iup)=-24 - Else - idup(iup)=23 - Endif - istup(iup)=2 - mothup(1,iup)=1 - mothup(2,iup)=2 - tmp=pup(4,iup-2)+pup(4,iup-1) - pup(4,iup)=tmp - tmp=tmp**2 - do i=1,3 - pup(i,iup)=pup(i,iup-2)+pup(i,iup-1) - tmp=tmp-pup(i,iup)**2 - enddo - pup(5,iup)=sqrt(tmp) - nup=nup+1 - icolup(1,nup)=0 - icolup(2,nup)=0 -c--- nW + mZ + kH + jets - elseif (ihrd.eq.5) then -c find first gauge bosons - ivstart=0 - ivend=0 - do i=1,npart - if(abs(idup(i)).eq.24.or.idup(i).eq.23) then - istup(i)=2 - if(ivstart.eq.0) ivstart=i - ivend=i+1 - endif - enddo - nvb=ivend-ivstart -c decay products pointers, starting from the end - do i=1,nvb - mothup(1,npart-2*i+2)=ivend-i - mothup(1,npart-2*i+1)=ivend-i - mothup(2,npart-2*i+2)=0 - mothup(2,npart-2*i+1)=0 - enddo -c--- t tbar + jets -c t tb jets f fbar f fbar W+ b W- bbar - elseif ((ihrd.eq.6.or.ihrd.eq.16).and.abs(ifl(3)).eq.6) then -c reset top status codes - istup(3)=2 - istup(4)=2 - if(ifl(3).eq.6) then - it=3 - itb=4 - else - it=4 - itb=3 - endif -c reconstruct W's from decay products - do iw=1,2 - iwdec=nup-5+2*iw - iwup=nup+iw - ibup=iwup+2 - iwch=0 - do iup=iwdec,iwdec+1 - mothup(1,iup)=iwup - mothup(2,iup)=0 - iwch=iwch-mod(idup(iup),2) -c electron+nubar -> 11 + (-12) = -1 => W- -c d + ubar -> 1 + (-2) = -1 => W- -c positron+nu -> -11+ 12 = 1 => W+ -c u + dbar -> 2 + (-1) = 1 => W+ - enddo - If (iwch.gt.0) then - idup(iwup)=24 - idup(ibup)=5 - mothup(1,iwup)=it - mothup(2,iwup)=0 - mothup(1,ibup)=it - mothup(2,ibup)=0 - Elseif (iwch.lt.0) then - idup(iwup)=-24 - idup(ibup)=-5 - mothup(1,iwup)=itb - mothup(2,iwup)=0 - mothup(1,ibup)=itb - mothup(2,ibup)=0 - Endif - istup(iwup)=2 - istup(ibup)=1 -c reconstruct W momentum - tmp=pup(4,iwdec)+pup(4,iwdec+1) - pup(4,iwup)=tmp - tmp=tmp**2 - do i=1,3 - pup(i,iwup)=pup(i,iwdec)+pup(i,iwdec+1) - tmp=tmp-pup(i,iwup)**2 - enddo - pup(5,iwup)=sqrt(tmp) -c reconstruct b momentum - tmp=pup(4,mothup(1,iwup))-pup(4,iwup) - pup(4,ibup)=tmp - tmp=tmp**2 - do i=1,3 - pup(i,ibup)=pup(i,mothup(1,iwup))-pup(i,iwup) - tmp=tmp-pup(i,ibup)**2 - enddo - pup(5,ibup)=sqrt(tmp) - icolup(1,iwup)=0 - icolup(2,iwup)=0 - icolup(1,ibup)=icolup(1,mothup(1,iwup)) - icolup(2,ibup)=icolup(2,mothup(1,iwup)) - enddo -c stop - nup=nup+4 -c--- H t tbar + jets -c H t tb jets f fbar f fbar W+ b W- bbar - elseif (ihrd.eq.8.and.abs(ifl(4)).eq.6) then -c reset top status codes - istup(4)=2 - istup(5)=2 - if(ifl(4).eq.6) then - it=4 - itb=5 - else - it=5 - itb=4 - endif -c reconstruct W's from decay products - do iw=1,2 - iwdec=nup-5+2*iw - iwup=nup+iw - ibup=iwup+2 - iwch=0 - do iup=iwdec,iwdec+1 - mothup(1,iup)=iwup - mothup(2,iup)=0 - iwch=iwch-mod(idup(iup),2) -c electron+nubar -> 11 + (-12) = -1 => W- -c d + ubar -> 1 + (-2) = -1 => W- -c positron+nu -> -11+ 12 = 1 => W+ -c u + dbar -> 2 + (-1) = 1 => W+ - enddo - If (iwch.gt.0) then - idup(iwup)=24 - idup(ibup)=5 - mothup(1,iwup)=it - mothup(2,iwup)=0 - mothup(1,ibup)=it - mothup(2,ibup)=0 - elseif (iwch.lt.0) then - idup(iwup)=-24 - idup(ibup)=-5 - mothup(1,iwup)=itb - mothup(2,iwup)=0 - mothup(1,ibup)=itb - mothup(2,ibup)=0 - endif - istup(iwup)=2 - istup(ibup)=1 -c reconstruct W momentum - tmp=pup(4,iwdec)+pup(4,iwdec+1) - pup(4,iwup)=tmp - tmp=tmp**2 - do i=1,3 - pup(i,iwup)=pup(i,iwdec)+pup(i,iwdec+1) - tmp=tmp-pup(i,iwup)**2 - enddo - pup(5,iwup)=sqrt(tmp) -c reconstruct b momentum - tmp=pup(4,mothup(1,iwup))-pup(4,iwup) - pup(4,ibup)=tmp - tmp=tmp**2 - do i=1,3 - pup(i,ibup)=pup(i,mothup(1,iwup))-pup(i,iwup) - tmp=tmp-pup(i,ibup)**2 - enddo - pup(5,ibup)=sqrt(tmp) - icolup(1,iwup)=0 - icolup(2,iwup)=0 - icolup(1,ibup)=icolup(1,mothup(1,iwup)) - icolup(2,ibup)=icolup(2,mothup(1,iwup)) - enddo -c stop - nup=nup+4 -c--- SINGLE TOP -c Input: T -c output: jets t b w f fbar t b w f fbar - elseif (ihrd.eq.13) then - nw=1 - if(itopprc.ge.3) nw=2 -c assign mass to the incoming bottom quark, if required - DO I=1,2 - IF(ABS(IFL(I)).EQ.5) THEN - IUP=I - PUP(5,IUP)=mb - PUP(4,IUP)=SQRT(PUP(3,IUP)**2+PUP(5,IUP)**2) - ENDIF - ENDDO - istup(3)=2 - it=0 - itb=0 - if(ifl(3).eq.6) then - it=3 - elseif(ifl(3).eq.-6) then - itb=3 - else - write(*,*) 'wrong assumption about top position, stop' - stop - endif -c -c TOP DECAY -c reconstruct W's from decay products -c -c iwdec: 1st W decay product. - if(nw.eq.1) then - iwdec=nup-1 - elseif(nw.eq.2) then - iwdec=nup-3 - endif -c put W and b at the end - iwup=nup+1 - ibup=iwup+1 -c - iwch=0 - do iup=iwdec,iwdec+1 - mothup(1,iup)=iwup - mothup(2,iup)=0 - iwch=iwch-mod(idup(iup),2) -c electron+nubar -> 11 + (-12) = -1 => W- -c d + ubar -> 1 + (-2) = -1 => W- -c positron+nu -> -11+ 12 = 1 => W+ -c u + dbar -> 2 + (-1) = 1 => W+ - enddo - If (iwch.gt.0) then - idup(iwup)=24 - idup(ibup)=5 - mothup(1,iwup)=it - mothup(2,iwup)=0 - mothup(1,ibup)=it - mothup(2,ibup)=0 - Elseif (iwch.lt.0) then - idup(iwup)=-24 - idup(ibup)=-5 - mothup(1,iwup)=itb - mothup(2,iwup)=0 - mothup(1,ibup)=itb - mothup(2,ibup)=0 - Endif - istup(iwup)=2 - istup(ibup)=1 -c reconstruct W momentum - tmp=pup(4,iwdec)+pup(4,iwdec+1) - pup(4,iwup)=tmp - tmp=tmp**2 - do i=1,3 - pup(i,iwup)=pup(i,iwdec)+pup(i,iwdec+1) - tmp=tmp-pup(i,iwup)**2 - enddo - pup(5,iwup)=sqrt(tmp) -c reconstruct b momentum - tmp=pup(4,mothup(1,iwup))-pup(4,iwup) - pup(4,ibup)=tmp - tmp=tmp**2 - do i=1,3 - pup(i,ibup)=pup(i,mothup(1,iwup))-pup(i,iwup) - tmp=tmp-pup(i,ibup)**2 - enddo -c write(*,*) (pup(i,ibup),i=1,4),sqrt((tmp)) - pup(5,ibup)=sqrt(tmp) - icolup(1,iwup)=0 - icolup(2,iwup)=0 - icolup(1,ibup)=icolup(1,mothup(1,iwup)) - icolup(2,ibup)=icolup(2,mothup(1,iwup)) -c - nup=nup+2 - if(nw.eq.2) then -c -c W DECAY -c -c iwdec: 1st W decay product. - iwdec=nup-3 -c iwup: location of the W in the event record - iwup=nup-6 - iwch=0 - do iup=iwdec,iwdec+1 - mothup(1,iup)=iwup - mothup(2,iup)=0 - iwch=iwch-mod(idup(iup),2) -c electron+nubar -> 11 + (-12) = -1 => W- -c d + ubar -> 1 + (-2) = -1 => W- -c positron+nu -> -11+ 12 = 1 => W+ -c u + dbar -> 2 + (-1) = 1 => W+ - enddo - istup(iwup)=2 - icolup(1,iwup)=0 - icolup(2,iwup)=0 - endif - endif -c herwig debugging: -c call HWUPUP - - - -C...======================================================= -C...Fill spin information for tauola. -C...Specify the decal mode. -C...imode: 1:W, 2:WW, 4:Z, 5:WZ, 8:ZZ, 16:H, 17:WH, 20:ZH. - imode = 0 - itau1 = 0 - itau2 = 0 - itau3 = 0 - do i=1,nup - if (iabs(idup(i)).eq.24) then - imode = imode + 1 - else if (iabs(idup(i)).eq.23) then - imode = imode + 4 - else if (iabs(idup(i)).eq.25) then - imode = imode + 16 - endif - enddo - do i=1,nup - if(mothup(1,i).gt.0) then - if (imode.eq.1) then ! single W production - if (iabs(idup(i)).eq.15 - & .and.iabs(idup(mothup(1,i))).eq.24) then - itau1 = i - endif - else if (imode.eq.2) then ! WW production - if (idup(i).eq.-15.and.idup(mothup(1,i)).eq.24) then - itau1 = i - endif - if (idup(i).eq.15.and.idup(mothup(1,i)).eq.-24) then - itau2 = i - endif - else if (imode.eq.4) then ! single Z production - if (idup(i).eq.-15.and.idup(mothup(1,i)).eq.23) then - itau1 = i - itau3 = mothup(1,i) - endif - if (idup(i).eq.15.and.idup(mothup(1,i)).eq.23) then - itau2 = i - endif - else if (imode.eq.5) then ! WZ production (so far, only assign for W decay.) - if (iabs(idup(i)).eq.15 - & .and.iabs(idup(mothup(1,i))).eq.24)then - itau1 = i - endif - else if (imode.eq.8) then ! ZZ production (so far do nothing.) - else if (imode.eq.16) then ! single H production - if (idup(i).eq.-15.and.idup(mothup(1,i)).eq.25) then - itau1 = i - endif - if (idup(i).eq.15.and.idup(mothup(1,i)).eq.25) then - itau2 = i - endif - else if (imode.eq.17) then ! WH production - if (idup(i).eq.-15.and.idup(mothup(1,i)).eq.25) then - itau1 = i - endif - if (idup(i).eq.15.and.idup(mothup(1,i)).eq.25) then - itau2 = i - endif - if (iabs(idup(i)).eq.15.and - & .iabs(idup(mothup(1,i))).eq.24) then - itau3 = i - endif - else if (imode.eq.20) then ! ZH production (so far nothing for Z side.) - if (idup(i).eq.-15.and.idup(mothup(1,i)).eq.25) then - itau1 = i - endif - if (idup(i).eq.15.and.idup(mothup(1,i)).eq.25) then - itau2 = i - endif - endif - endif - enddo - - if (itau1.ne.0) then - spinup(itau1) = 0 - endif - if (itau2.ne.0) then - spinup(itau2) = 0 - endif - if (itau3.ne.0) then - spinup(itau3) = 0 - endif - -C...Assign spin information. - if (imode.eq.1) then ! single W production - if (itau1.ne.0) then - spinup(itau1) = -1.0d0 - endif - else if (imode.eq.2) then ! WW production - if (itau1.ne.0) then - spinup(itau1) = -1.0d0 - endif - if (itau2.ne.0) then - spinup(itau2) = -1.0d0 - endif - else if (imode.eq.4 - & .and. itau1.ne.0.and.itau2.ne.0.and.itau3.ne.0) then ! single Z production -C...Special case. Temporaly create the HEPEVT block. Later delete it. - nhep = 9 - isthep(4) = 121 - isthep(5) = 122 - isthep(6) = 120 - isthep(7) = 124 - isthep(8) = 1 - isthep(9) = 1 - idhep(4) = idup(1) - idhep(5) = idup(2) - idhep(6) = 0 - idhep(7) = idup(itau3) - idhep(8) = idup(itau1) - idhep(9) = idup(itau2) - jmohep(1,4) = 6 - jmohep(2,4) = 5 - jmohep(1,5) = 6 - jmohep(2,5) = 4 - jmohep(1,6) = 4 - jmohep(2,6) = 5 - jmohep(1,7) = 6 - jmohep(2,7) = 7 - jmohep(1,8) = 7 - jmohep(2,8) = 8 - jmohep(1,9) = 7 - jmohep(2,9) = 9 - jdahep(1,4) = 5 - jdahep(2,4) = 5 - jdahep(2,5) = 4 - jdahep(2,5) = 4 - jdahep(2,6) = 7 - jdahep(2,6) = 7 - jdahep(2,7) = 8 - jdahep(2,7) = 9 - jdahep(2,8) = 0 - jdahep(2,8) = 0 - jdahep(2,9) = 0 - jdahep(2,9) = 0 - do i=1,5 - phep(i,4) = pup(i,1) - phep(i,5) = pup(i,2) - phep(i,6) = pup(i,1)+pup(i,2) - phep(i,7) = pup(i,itau3) - phep(i,8) = pup(i,itau1) - phep(i,9) = pup(i,itau2) - enddo - phep(5,6) = sqrt((pup(4,1)+pup(4,2))**2 - $ -(pup(1,1)+pup(1,2))**2 - $ -(pup(2,1)+pup(2,2))**2 - $ -(pup(3,1)+pup(3,2))**2) - do i=1,4 - vhep(i,4) = 0.0d0 - vhep(i,5) = 0.0d0 - vhep(i,6) = 0.0d0 - vhep(i,7) = 0.0d0 - vhep(i,8) = 0.0d0 - vhep(i,9) = 0.0d0 - enddo - - polz0 = plzapx(1,7,8,9) - if (pyr(0).LT.polz0) THEN - spinup(itau1) = 1.0d0 - spinup(itau2) = 1.0d0 - else - spinup(itau1) = -1.0d0 - spinup(itau2) = -1.0d0 - endif -C...Delete temporal HEPEVT. - nhep = 3 - do i=4,9 - isthep(i) = 0 - idhep(i) = 0 - jmohep(1,i) = 0 - jmohep(2,i) = 0 - jdahep(1,i) = 0 - jdahep(2,i) = 0 - phep(1,i) = 0.0d0 - phep(2,i) = 0.0d0 - phep(3,i) = 0.0d0 - phep(4,i) = 0.0d0 - phep(5,i) = 0.0d0 - vhep(1,i) = 0.0d0 - vhep(2,i) = 0.0d0 - vhep(3,i) = 0.0d0 - vhep(4,i) = 0.0d0 - enddo - else if (imode.eq.5) then ! WZ production (so far, only assign for W decay.) - if (itau1.ne.0) then - spinup(itau1) = -1.0d0 - endif - else if (imode.eq.8) then ! ZZ production (so far do nothing.) - else if (imode.eq.16) then ! single H production - if (itau1.ne.0.and.itau2.ne.0) then - if (pyr(0).lt.0.5d0) then - spinup(itau1) = 1.0d0 - spinup(itau2) = -1.0d0 - else - spinup(itau1) = -1.0d0 - spinup(itau2) = 1.0d0 - endif - endif - else if (imode.eq.17) then ! WH production - if (itau1.ne.0.and.itau2.ne.0) then - if (pyr(0).lt.0.5d0) then - spinup(itau1) = 1.0d0 - spinup(itau2) = -1.0d0 - else - spinup(itau1) = -1.0d0 - spinup(itau2) = 1.0d0 - endif - endif - if (itau3.ne.0) then - spinup(itau3) = -1.0d0 - endif - else if (imode.eq.20) then ! ZH production (so far nothing for Z side.) - if (itau1.ne.0.and.itau2.ne.0) then - if (pyr(0).lt.0.5d0) then - spinup(itau1) = 1.0d0 - spinup(itau2) = -1.0d0 - else - spinup(itau1) = -1.0d0 - spinup(itau2) = 1.0d0 - endif - endif - endif - -C...Debug. -C write(*,*) "ST...Alpgen",imode,itau1,itau2,itau3 -C if (itau1.ne.0) then -C write(*,*) "ST...Alpgen after fill 1",idup(itau1),spinup(itau1) -C endif -C if (itau2.ne.0) then -C write(*,*) "ST...Alpgen after fill 2",idup(itau2),spinup(itau2) -C endif -C if (itau3.ne.0) then -C write(*,*) "ST...Alpgen after fill 3",idup(itau3),spinup(itau3) -C endif -C...======================================================= - - - - return -c -c -c end of file - 500 ist=1 -c error reading file - 501 if(ist.eq.0) ist=2 -C RESET CROSS-SECTION INFORMATION FOR END OF RUN AND FINALIZE - istg=ist - IF(IST.GT.0) THEN - CALL ALSFIN - ENDIF - close(Nunit) - close(NunitOut) - END diff --git a/Generators/AlpGen_i/src/vetoalpgen.F b/Generators/AlpGen_i/src/vetoalpgen.F deleted file mode 100755 index b3046873e36e0031838b704ad646a18d0425dd88..0000000000000000000000000000000000000000 --- a/Generators/AlpGen_i/src/vetoalpgen.F +++ /dev/null @@ -1,669 +0,0 @@ -*-- AUTHOR : MICHELANGELO MANGANO -C---------------------------------------------------------------------- - SUBROUTINE VETOALPGEN(IPVETO) -C---------------------------------------------------------------------- -C SUBROUTINE TO IMPLEMENT THE MLM JET MATCHING CRITERION -C---------------------------------------------------------------------- - IMPLICIT NONE - -C...GUP Event common block -#include "GeneratorFortranCommon/hepeup.inc" -C...HEPEVT commonblock. - INTEGER NMXHEP,NEVHEP,NHEP,ISTHEP,IDHEP,JMOHEP,JDAHEP - PARAMETER (NMXHEP=10000) - COMMON/HEPEVT/NEVHEP,NHEP,ISTHEP(NMXHEP),IDHEP(NMXHEP), - &JMOHEP(2,NMXHEP),JDAHEP(2,NMXHEP),PHEP(5,NMXHEP),VHEP(4,NMXHEP) - DOUBLE PRECISION PHEP,VHEP - SAVE /HEPEVT/ -#include "AlpGen_i/alpsho.inc" - INTEGER IPVETO -C CALSIM AND JET VARIABLES - INTEGER NCY,NCPHI,NJMAX,JETNO,NCJET - DOUBLE PRECISION YCMIN,YCMAX,PI,ET,DELPHI,CPHCAL,SPHCAL,DELY, - & CTHCAL,STHCAL,PCJET,ETJET - PARAMETER (NCY=100) - PARAMETER (NCPHI=60,PI=3.141593D0) - COMMON/CALOR_M/DELY,DELPHI,ET(NCY,NCPHI), - $ CTHCAL(NCY),STHCAL(NCY),CPHCAL(NCPHI),SPHCAL(NCPHI),YCMIN - $ ,YCMAX - PARAMETER (NJMAX=500) - COMMON/GETCOM_M/PCJET(4,NJMAX),ETJET(NJMAX),JETNO(NCY,NCPHI),NCJET -C - DOUBLE PRECISION PSERAP - INTEGER K(NJMAX),KP(NJMAX),KPJ(NJMAX) -C LOCAL VARIABLES - INTEGER I,J,IHEP,NMATCH,JRMIN - DOUBLE PRECISION ETAJET,PHIJET,DELR,DPHI,DELRMIN - DOUBLE PRECISION P(4,10),PT(10),ETA(10),PHI(10) -C HEAVY QUARK MATCHING - INTEGER IHVQ(10),NHVQ,NMJET,ID - DOUBLE PRECISION ETAHVQ(10),PHIHVQ(10) - INTEGER IEND,INORAD - COMMON/SHVETO/IEND,INORAD(MAXNUP) - -C DEBUGGING OPTIONS - INTEGER IDBG - PARAMETER (IDBG=0) - DOUBLE PRECISION PTPART,PTJETS,ETAPART,ETAJETS - INTEGER NMAX - COMMON/MTCHDBG/PTPART(10),PTJETS(10),ETAPART(10),ETAJETS(10),NMAX -C - DOUBLE PRECISION ETMIN,ETMAX - DOUBLE PRECISION TINY - PARAMETER (TINY=1D-3) -c INTEGER ICOUNT -c DATA ICOUNT/0/ -C - IPVETO=0 - IF(ICKKW.EQ.0) RETURN - IF(IHRD.EQ.7.OR.IHRD.EQ.8.OR.IHRD.EQ.13) THEN - WRITE(*,*) 'JET MATCHING FOR HARD PROCESS ',IHRD - $ ,' NOT IMPLEMENTED, STOP' - STOP - ENDIF - IF(NLJETS.EQ.0.AND.IEXC.EQ.0) RETURN -C CHECK FOR EVENT ERROR OR ZERO WGT - I=0 -C HERWIG/PYTHIA SPECIFIC - CALL ALSHER(I) - IF(I.EQ.1) RETURN -C -C INITIALIZE DEBUG IF NEEDED - IF(IDBG.EQ.1) THEN - WRITE(1,*) ' ' - WRITE(1,*) 'NEW EVENT ' - WRITE(1,*) 'PARTONS' - ENDIF - IF(IDBG.EQ.2) THEN - DO I=1,10 - PTPART(I)=0D0 - ETAPART(I)=0D0 - PTJETS(I)=0D0 - ETAJETS(I)=0D0 - ENDDO - NMAX=0 - ENDIF -C -C RECONSTRUCT PARTON-LEVEL EVENT -C START FROM THE PARTONIC SYSTEM - DO I=1,NLJETS - IHEP=I+NJSTART - DO J=1,4 - P(J,I)=PUP(J,IHEP) - ENDDO - PT(I)=SQRT(P(1,I)**2+P(2,I)**2) - ETA(I)=-LOG(TAN(0.5D0*ATAN2(PT(I)+TINY,P(3,I)))) - PHI(I)=ATAN2(P(2,I),P(1,I)) - IF(IDBG.EQ.1) THEN - WRITE(1,*) PT(I),ETA(I),PHI(I) - ENDIF - ENDDO - IF(NLJETS.GT.0) CALL ALPSOR(PT,NLJETS,KP,2) -C -C DISPLAY EVENT SEEN BY UPVETO: -C IF(IDBG.EQ.1) THEN -C DO I=1,NHEP -C WRITE(1,111) I,ISTHEP(I),IDHEP(I),JMOHEP(1,I),JMOHEP(2,I) -C $ ,PHEP(1,I),PHEP(2,I),PHEP(3,I) -C ENDDO -C 111 FORMAT(5(I4,1X),3(F12.5,1X)) -C ENDIF -C DISPLAY PYTHIA EVENT: -C CALL PYLIST(7) ! PYTHIA USER PROCESS EVENT DUMP -C CALL PYLIST(2) ! PYTHIA FULL EVENT DUMP -C CALL PYLIST(5) ! PYTHIA HEPEVT DUMP -C -C RECONSTRUCT SHOWERED JETS: - CALL CALINI_M - CALL CALDEL_M(NPFST,NPLST,NJLAST) - CALL GETJET_M(RCLUS,ETCLUS,ETACLMAX) - IF(NCJET.GT.0) CALL ALPSOR(ETJET,NCJET,K,2) - IF(IDBG.EQ.1) THEN - WRITE(1,*) 'JETS' - DO I=1,NCJET - J=K(NCJET+1-I) - ETAJET=PSERAP(PCJET(1,J)) - PHIJET=ATAN2(PCJET(2,J),PCJET(1,J)) - WRITE(1,*) ETJET(J),ETAJET,PHIJET - ENDDO - ENDIF -C ANALYSE ONLY EVENTS WITH AT LEAST NLJETS-RECONSTRUCTED JETS - IF(NCJET.LT.NLJETS) GOTO 999 -C ASSOCIATE PARTONS AND JETS, USING MIN(DELR) AS CRITERION - NMATCH=0 - DO I=1,NCJET - KPJ(I)=0 - ENDDO - DO I=1,NLJETS - DELRMIN=1D5 - DO 110 J=1,NCJET - IF(KPJ(J).NE.0) GO TO 110 - ETAJET=PSERAP(PCJET(1,J)) - PHIJET=ATAN2(PCJET(2,J),PCJET(1,J)) - DPHI=ABS(PHI(KP(NLJETS-I+1))-PHIJET) - IF(DPHI.GT.PI) DPHI=2.*PI-DPHI - DELR=SQRT((ETA(KP(NLJETS-I+1))-ETAJET)**2+(DPHI)**2) - IF(DELR.LT.DELRMIN) THEN - DELRMIN=DELR - JRMIN=J - ENDIF - 110 CONTINUE - ETMIN=1D10 - IF(DELRMIN.LT.1.5*RCLUS) THEN - NMATCH=NMATCH+1 - KPJ(JRMIN)=I - ETMIN=MIN(ETMIN,ETJET(JRMIN)) -C ASSOCIATE PARTONS AND MATCHED JETS: - IF(IDBG.EQ.2) THEN - PTPART(I)=PT(KP(NLJETS-I+1)) - ETAPART(I)=ETA(KP(NLJETS-I+1)) - PTJETS(I)=ETJET(JRMIN) - ETAJETS(I)=PSERAP(PCJET(1,JRMIN)) - NMAX=NCJET - ENDIF -C WRITE(*,*) 'PARTON-JET',I,' BEST MATCH:',K(NCJET+1-JRMIN) -C $ ,DELRMIN - ENDIF - ENDDO - IF(NMATCH.LT.NLJETS) GOTO 999 -C REJECT EVENTS WITH LARGER JET MULTIPLICITY FROM EXCLUSIVE SAMPLE - IF(NCJET.GT.NLJETS.AND.IEXC.EQ.1) GOTO 999 -C VETO EVENTS WHERE MATCHED JETS ARE SOFTER THAN NON-MATCHED ONES - IF(IEXC.NE.1) THEN - J=NCJET - DO I=1,NLJETS - IF(KPJ(K(J)).EQ.0) GOTO 999 - J=J-1 - ENDDO - ENDIF -C -C ADDITIONAL TREATMENT FOR HVQ EVENTS: -C VETO/ACCEPT JETS EMITTED BY HVQ'S - IF(IHRD.LE.2.OR.IHRD.EQ.6.OR.IHRD.EQ.10.OR.IHRD.EQ.15.OR.IHRD.EQ. - $ 16) THEN - CALL CALINI_M -C RECOSTRUCT POSSIBLE JETS FROM RADIATION OFF THE TOP QUARKS - CALL CALDEL_HVQ(NPFST,NPLST,NJLAST) - CALL GETJET_M(RCLUS,ETCLUS,ETACLMAX) -C IF NO EXTRA JET: ACCEPT EVENT - IF(NCJET.EQ.0) RETURN -C IF EXTRA JETS, REMOVE THOSE LYING WITHIN DRJMIN OF A B/C QUARK, TO -C ALLOW THE SHOWER TO GOVERN THE DEVELOPMENT OF A B/C JET. -C START BY FLAGGING VETOED Q AND QBAR OBJECTS: - NHVQ=0 - DO I=1,NHEP - ID=IDHEP(I) - IF(INORAD(I).EQ.1.AND.ABS(ID).LE.5.AND.ABS(ID) - $ .GE.4) THEN - NHVQ=NHVQ+1 - IHVQ(NHVQ)=I - ETAHVQ(NHVQ)=PSERAP(PHEP(1,I)) - PHIHVQ(NHVQ)=ATAN2(PHEP(2,I),PHEP(1,I)) - ENDIF - ENDDO - NMJET=NCJET - DO I=1,NCJET - ETAJET=PSERAP(PCJET(1,I)) - PHIJET=ATAN2(PCJET(2,I),PCJET(1,I)) - DO J=1,NHVQ - DPHI=ABS(PHIHVQ(J)-PHIJET) - IF(DPHI.GT.PI) DPHI=ABS(DPHI-2*PI) - DELR=SQRT(DPHI**2+(ETAJET-ETAHVQ(J))**2) - IF(DELR.LT.DRJMIN) THEN - NMJET=NMJET-1 - ETJET(I)=0D0 - ENDIF - ENDDO - ENDDO -C IF NO UNMATCHED JET: ACCEPT EVENT - IF(NMJET.EQ.0) RETURN -C IF JETS AND IEXC=1: REJECT EVENT - IF(IEXC.EQ.1) GOTO 999 -C IF JETS AND IEXC=0: CHECK THAT JETS ARE SOFTER THAN MATCHED ONES - ETMAX=0D0 - DO I=1,NCJET - ETMAX=MAX(ETMAX,ETJET(I)) - ENDDO - IF(ETMAX.GT.ETMIN) GOTO 999 - ENDIF - RETURN -C HERWIG/PYTHIA TERMINATION: - 999 CALL ALSHEN - IPVETO=1 - END - -C----------------------------------------------------------------------- -C----Calorimeter simulation obtained from Frank Paige 23 March 1988----- -C -C USE -C -C CALL CALINI -C CALL CALSIM -C -C THEN TO FIND JETS WITH A SIMPLIFIED VERSION OF THE UA1 JET -C ALGORITHM WITH JET RADIUS RJET AND MINIMUM SCALAR TRANSVERSE -C ENERGY EJCUT -C (RJET=1., EJCUT=5. FOR UA1) -C USE -C -C CALL GETJET(RJET,EJCUT) -C -C -C----------------------------------------------------------------------- -C -C ADDED BY MIKE SEYMOUR: PARTON-LEVEL CALORIMETER. ALL PARTONS -C ARE CONSIDERED TO BE HADRONS, SO IN FACT RESEM IS IGNORED -C -C CALL CALPAR -C -C HARD PARTICLE CALORIMETER. ONLY USES THOSE PARTICLES WHICH -C CAME FROM THE HARD PROCESS, AND NOT THE UNDERLYING EVENT -C -C CALL CALHAR -C -C----------------------------------------------------------------------- - - SUBROUTINE CALINI_M -C -C INITIALIZE CALORIMETER FOR CALSIM_M AND GETJET_M. NOTE THAT -C BECAUSE THE INITIALIZATION IS SEPARATE, CALSIM_M CAN BE -C CALLED MORE THAN ONCE TO SIMULATE PILEUP OF SEVERAL EVENTS. -C - IMPLICIT NONE - INTEGER NCY,NCPHI,NJMAX,IPHI,IY,JETNO,NCJET - DOUBLE PRECISION YCMIN,YCMAX,PI,ET,DELPHI,PHIX,CPHCAL,SPHCAL,DELY, - & YX,THX,CTHCAL,STHCAL,PCJET,ETJET - PARAMETER (NCY=100) - PARAMETER (NCPHI=60,PI=3.141593D0) - COMMON/CALOR_M/DELY,DELPHI,ET(NCY,NCPHI), - $CTHCAL(NCY),STHCAL(NCY),CPHCAL(NCPHI),SPHCAL(NCPHI),YCMIN,YCMAX - PARAMETER (NJMAX=500) - COMMON/GETCOM_M/PCJET(4,NJMAX),ETJET(NJMAX),JETNO(NCY,NCPHI),NCJET - LOGICAL FSTCAL - DATA FSTCAL/.TRUE./ -C -C INITIALIZE ET ARRAY. - DO 100 IPHI=1,NCPHI - DO 100 IY=1,NCY -100 ET(IY,IPHI)=0. -C - IF (FSTCAL) THEN -C CALCULATE TRIG. FUNCTIONS. - DELPHI=2.*PI/FLOAT(NCPHI) - DO 200 IPHI=1,NCPHI - PHIX=DELPHI*(IPHI-.5) - CPHCAL(IPHI)=COS(PHIX) - SPHCAL(IPHI)=SIN(PHIX) -200 CONTINUE - DELY=(YCMAX-YCMIN)/FLOAT(NCY) - DO 300 IY=1,NCY - YX=DELY*(IY-.5)+YCMIN - THX=2.*ATAN(EXP(-YX)) - CTHCAL(IY)=COS(THX) - STHCAL(IY)=SIN(THX) -300 CONTINUE - FSTCAL=.FALSE. - ENDIF - END -C - SUBROUTINE CALSIM_M -C -C SIMPLE CALORIMETER SIMULATION. ASSUME UNIFORM Y AND PHI -C BINS -C...HEPEVT commonblock. - INTEGER NMXHEP,NEVHEP,NHEP,ISTHEP,IDHEP,JMOHEP,JDAHEP - PARAMETER (NMXHEP=10000) - COMMON/HEPEVT/NEVHEP,NHEP,ISTHEP(NMXHEP),IDHEP(NMXHEP), - &JMOHEP(2,NMXHEP),JDAHEP(2,NMXHEP),PHEP(5,NMXHEP),VHEP(4,NMXHEP) - DOUBLE PRECISION PHEP,VHEP - SAVE /HEPEVT/ - INTEGER NCY,NCPHI,NJMAX,IHEP,ID,IY,IPHI,JETNO,NCJET - DOUBLE PRECISION YCMIN,YCMAX,PI,YIP,PSERAP, - & PHIIP,DELY,DELPHI,EIP,ET,STHCAL,CTHCAL,CPHCAL,SPHCAL, - & PCJET,ETJET - PARAMETER (NCY=100) - PARAMETER (NCPHI=60,PI=3.141593D0) - COMMON/CALOR_M/DELY,DELPHI,ET(NCY,NCPHI), - $CTHCAL(NCY),STHCAL(NCY),CPHCAL(NCPHI),SPHCAL(NCPHI),YCMIN,YCMAX - PARAMETER (NJMAX=500) - COMMON/GETCOM_M/PCJET(4,NJMAX),ETJET(NJMAX),JETNO(NCY,NCPHI),NCJET -C -C FILL CALORIMETER -C - DO 200 IHEP=1,NHEP - IF (ISTHEP(IHEP).EQ.1) THEN - YIP=PSERAP(PHEP(1,IHEP)) - IF(YIP.LT.YCMIN.OR.YIP.GT.YCMAX) GOTO 200 - ID=ABS(IDHEP(IHEP)) -C---EXCLUDE TOP QUARK, LEPTONS, PROMPT PHOTONS - IF ((ID.GE.11.AND.ID.LE.16).OR.ID.EQ.6.OR.ID.EQ.22) GOTO 200 -C - PHIIP=ATAN2(PHEP(2,IHEP),PHEP(1,IHEP)) - IF(PHIIP.LT.0.) PHIIP=PHIIP+2.*PI - IY=INT((YIP-YCMIN)/DELY)+1 - IPHI=INT(PHIIP/DELPHI)+1 - EIP=PHEP(4,IHEP) -C WEIGHT BY SIN(THETA) - ET(IY,IPHI)=ET(IY,IPHI)+EIP*STHCAL(IY) - ENDIF - 200 CONTINUE - 999 END - SUBROUTINE GETJET_M(RJET,EJCUT,ETAJCUT) -C -C SIMPLE JET-FINDING ALGORITHM (SIMILAR TO UA1). -C -C FIND HIGHEST REMAINING CELL > ETSTOP AND SUM SURROUNDING -C CELLS WITH-- -C DELTA(Y)**2+DELTA(PHI)**2<RJET**2 -C ET>ECCUT. -C KEEP JETS WITH ET>EJCUT AND ABS(ETA)<ETAJCUT -C THE UA1 PARAMETERS ARE RJET=1.0 AND EJCUT=5.0 -C - IMPLICIT NONE - INTEGER NCY,NCPHI,NJMAX,IPHI,IY,JETNO,J,K,NCJET,NPHI1,NPHI2,NY1, - & NY2,IPASS,IYMX,IPHIMX,ITLIS,IPHI1,IPHIX,IY1,IYX - DOUBLE PRECISION YCMIN,YCMAX,PI,ETJET,PCJET,RJET,DELPHI,DELY, - & ETMAX,ET,ETSTOP,RR,ECCUT,PX,STHCAL,CPHCAL,SPHCAL,CTHCAL,EJCUT - PARAMETER (NCY=100) - PARAMETER (NCPHI=60,PI=3.141593D0) - COMMON/CALOR_M/DELY,DELPHI,ET(NCY,NCPHI), - &CTHCAL(NCY),STHCAL(NCY),CPHCAL(NCPHI),SPHCAL(NCPHI),YCMIN,YCMAX - PARAMETER (NJMAX=500) - COMMON/GETCOM_M/PCJET(4,NJMAX),ETJET(NJMAX),JETNO(NCY,NCPHI),NCJET - DOUBLE PRECISION ETAJCUT,PSERAP -C -C PARAMETERS - DATA ECCUT/0.1D0/ - DATA ETSTOP/1.5D0/ - DATA ITLIS/6/ -C -C INITIALIZE -C - DO 100 IPHI=1,NCPHI - DO 100 IY=1,NCY -100 JETNO(IY,IPHI)=0 - DO 110 J=1,NJMAX - ETJET(J)=0. - DO 110 K=1,4 -110 PCJET(K,J)=0. - NCJET=0 - NPHI1=RJET/DELPHI - NPHI2=2*NPHI1+1 - NY1=RJET/DELY - NY2=2*NY1+1 - IPASS=0 -C -C FIND HIGHEST CELL REMAINING -C -1 ETMAX=0. - DO 200 IPHI=1,NCPHI - DO 210 IY=1,NCY - IF(ET(IY,IPHI).LT.ETMAX) GOTO 210 - IF(JETNO(IY,IPHI).NE.0) GOTO 210 - ETMAX=ET(IY,IPHI) - IYMX=IY - IPHIMX=IPHI -210 CONTINUE -200 CONTINUE - IF(ETMAX.LT.ETSTOP) RETURN -C -C SUM CELLS -C - IPASS=IPASS+1 - IF(IPASS.GT.NCY*NCPHI) THEN - WRITE(ITLIS,8888) IPASS -8888 FORMAT(//' ERROR IN GETJET_M...IPASS > ',I6) - RETURN - ENDIF - NCJET=NCJET+1 - IF(NCJET.GT.NJMAX) THEN - WRITE(ITLIS,9999) NCJET -9999 FORMAT(//' ERROR IN GETJET_M...NCJET > ',I5) - RETURN - ENDIF - DO 300 IPHI1=1,NPHI2 - IPHIX=IPHIMX-NPHI1-1+IPHI1 - IF(IPHIX.LE.0) IPHIX=IPHIX+NCPHI - IF(IPHIX.GT.NCPHI) IPHIX=IPHIX-NCPHI - DO 310 IY1=1,NY2 - IYX=IYMX-NY1-1+IY1 - IF(IYX.LE.0) GOTO 310 - IF(IYX.GT.NCY) GOTO 310 - IF(JETNO(IYX,IPHIX).NE.0) GOTO 310 - RR=(DELY*(IY1-NY1-1))**2+(DELPHI*(IPHI1-NPHI1-1))**2 - IF(RR.GT.RJET**2) GOTO 310 - IF(ET(IYX,IPHIX).LT.ECCUT) GOTO 310 - PX=ET(IYX,IPHIX)/STHCAL(IYX) -C ADD CELL TO JET - PCJET(1,NCJET)=PCJET(1,NCJET)+PX*STHCAL(IYX)*CPHCAL(IPHIX) - PCJET(2,NCJET)=PCJET(2,NCJET)+PX*STHCAL(IYX)*SPHCAL(IPHIX) - PCJET(3,NCJET)=PCJET(3,NCJET)+PX*CTHCAL(IYX) - PCJET(4,NCJET)=PCJET(4,NCJET)+PX - ETJET(NCJET)=ETJET(NCJET)+ET(IYX,IPHIX) - JETNO(IYX,IPHIX)=NCJET -310 CONTINUE -300 CONTINUE -C -C DISCARD JET IF ET < EJCUT. -C - IF(ETJET(NCJET).GT.EJCUT.AND.ABS(PSERAP(PCJET(1,NCJET))).LT - $ .ETAJCUT) GOTO 1 - ETJET(NCJET)=0. - DO 400 K=1,4 -400 PCJET(K,NCJET)=0. - NCJET=NCJET-1 - GOTO 1 - END -C----------------------------------------------------------------------- - SUBROUTINE CALDEL_M(ISTLO,ISTHI,ISTOP) -C LABEL ALL PARTICLES WITH STATUS BETWEEN ISTLO AND ISTHI (UNTIL A -C PARTICLE WITH STATUS ISTOP IS FOUND) AS FINAL-STATE, CALL CALSIM_M -C AND THEN PUT LABELS BACK TO NORMAL -C -C THIS VERSION LEAVES OUT PARTICLES THAT POINT BACK TO MOTHERS TO BE -C LEFT OUT OF MATCHING -C----------------------------------------------------------------------- - IMPLICIT NONE - INTEGER MAXNUP - PARAMETER(MAXNUP=500) - INTEGER IEND,INORAD - COMMON/SHVETO/IEND,INORAD(MAXNUP) -C...HEPEVT commonblock. - INTEGER NMXHEP,NEVHEP,NHEP,ISTHEP,IDHEP,JMOHEP,JDAHEP - PARAMETER (NMXHEP=10000) - COMMON/HEPEVT/NEVHEP,NHEP,ISTHEP(NMXHEP),IDHEP(NMXHEP), - &JMOHEP(2,NMXHEP),JDAHEP(2,NMXHEP),PHEP(5,NMXHEP),VHEP(4,NMXHEP) - DOUBLE PRECISION PHEP,VHEP - SAVE /HEPEVT/ - INTEGER ISTOLD(NMXHEP),IHEP,IST,ISTLO,ISTHI,ISTOP,IMO - LOGICAL FOUND -c write(3,*) 'new event',nevhep - FOUND=.FALSE. - DO 10 IHEP=1,NHEP - IST=ISTHEP(IHEP) - ISTOLD(IHEP)=IST - IF (IST.EQ.ISTOP) FOUND=.TRUE. - IF (IST.GE.ISTLO.AND.IST.LE.ISTHI.AND..NOT.FOUND) THEN -C FOUND A RADIATED PARTON, CHECK MOTHER - IMO=IHEP - 1 IMO=JMOHEP(1,IMO) - IF(IMO.EQ.IEND) THEN -C PARENTHOOD OK - IST=1 -c write(3,*) ihep,ist - GOTO 9 - ENDIF - IF(INORAD(IMO).EQ.1) THEN -C PARTON COMES FROM A VETOED MOTHER - IST=0 - GOTO 9 - ELSE -C CHECK GRANDMOTHER - GOTO 1 - ENDIF - ELSE - IST=0 - ENDIF - 9 ISTHEP(IHEP)=IST - 10 CONTINUE - CALL CALSIM_M - DO 20 IHEP=1,NHEP - ISTHEP(IHEP)=ISTOLD(IHEP) - 20 CONTINUE - END -C----------------------------------------------------------------------- - SUBROUTINE CALDEL_HVQ(ISTLO,ISTHI,ISTOP) -C LABEL ALL PARTICLES WITH STATUS BETWEEN ISTLO AND ISTHI (UNTIL A -C PARTICLE WITH STATUS ISTOP IS FOUND) AS FINAL-STATE, CALL CALSIM_M -C AND THEN PUT LABELS BACK TO NORMAL -C -C THIS VERSION KEEPS ONLY ALL IST=1 PARTICLES REJECTED BY CALDEL AS -C DAUGHTERS OF VETOED HEAVY-QUARK MOTHERS: JETS COMPLEMENTARY TO -C THOSE RECONSTRUCTED BY CALDEL -C----------------------------------------------------------------------- - IMPLICIT NONE - INTEGER MAXNUP - PARAMETER(MAXNUP=500) - INTEGER IEND,INORAD - COMMON/SHVETO/IEND,INORAD(MAXNUP) -C...HEPEVT commonblock. - INTEGER NMXHEP,NEVHEP,NHEP,ISTHEP,IDHEP,JMOHEP,JDAHEP - PARAMETER (NMXHEP=10000) - COMMON/HEPEVT/NEVHEP,NHEP,ISTHEP(NMXHEP),IDHEP(NMXHEP), - &JMOHEP(2,NMXHEP),JDAHEP(2,NMXHEP),PHEP(5,NMXHEP),VHEP(4,NMXHEP) - DOUBLE PRECISION PHEP,VHEP - SAVE /HEPEVT/ - INTEGER ISTOLD(NMXHEP),IHEP,IST,ISTLO,ISTHI,ISTOP,IMO - INTEGER IDMOTH,IDDAUG - LOGICAL FOUND - FOUND=.FALSE. -C TAG W-B FROM TOP DECAYS - DO IHEP=1,NHEP - IMO=JMOHEP(1,IHEP) - IDMOTH=ABS(IDHEP(IMO)) - IDDAUG=ABS(IDHEP(IHEP)) - IF(IDMOTH.EQ.6.AND.(IDDAUG.EQ.5.OR.IDDAUG.EQ.24)) INORAD(IHEP)=2 - ENDDO - DO 10 IHEP=1,NHEP - IST=ISTHEP(IHEP) - ISTOLD(IHEP)=IST - IF (IST.EQ.ISTOP) FOUND=.TRUE. - IF (IST.GE.ISTLO.AND.IST.LE.ISTHI.AND..NOT.FOUND) THEN -C FOUND A RADIATED PARTON, CHECK MOTHER - IMO=IHEP - 1 IMO=JMOHEP(1,IMO) - IF(IMO.EQ.IEND) THEN -C PARENTHOOD OK, VETO - IST=0 - GOTO 9 - ENDIF - IF(INORAD(IMO).EQ.1) THEN - IDMOTH=ABS(IDHEP(IMO)) - IDDAUG=ABS(IDHEP(IHEP)) -C VERIFY IT'S A HEAVY QUARK -- LEAVE OUT GAUGE BOSON DECAYS - IF(IDMOTH.GE.4.AND.IDMOTH.LE.6) THEN -C PARTON COMES FROM A VETOED MOTHER, KEEP UNLESS IT IS THE EVOLVED -C MOTHER - IF(IDMOTH.NE.IDDAUG) THEN - IST=1 - GOTO 9 - ELSE - IST=0 - ENDIF - ELSE -C NOT A HEAVY QUARK MOTHER, LEAVE OUT OF JET RECONSUTRCTION - IST=0 - ENDIF - ELSEIF(INORAD(IMO).EQ.2) THEN -C IT'S A TOP DECAY PRODUCT - IST=0 - ELSE -C GO CHECK GRANDMOTHER - GOTO 1 - ENDIF - ELSE - IST=0 - ENDIF - 9 ISTHEP(IHEP)=IST - 10 CONTINUE - CALL CALSIM_M - DO 20 IHEP=1,NHEP - ISTHEP(IHEP)=ISTOLD(IHEP) - 20 CONTINUE - END -C----------------------------------------------------------------------- - FUNCTION PSERAP(P) -C PSEUDO-RAPIDITY (-LOG TAN THETA/2) -C----------------------------------------------------------------------- - DOUBLE PRECISION PSERAP,P(3),PT,PL,TINY,THETA - PARAMETER (TINY=1D-3) - PT=SQRT(P(1)**2+P(2)**2)+TINY - PL=P(3) - THETA=ATAN2(PT,PL) - PSERAP=-LOG(TAN(0.5*THETA)) - END -C----------------------------------------------------------------------- -C----------------------------------------------------------------------- - SUBROUTINE ALPSOR(A,N,K,IOPT) -C----------------------------------------------------------------------- -C Sort A(N) into ascending order -C IOPT = 1 : return sorted A and index array K -C IOPT = 2 : return index array K only -C----------------------------------------------------------------------- - DOUBLE PRECISION A(N),B(5000) - INTEGER N,I,J,IOPT,K(N),IL(5000),IR(5000) - IF (N.GT.5000) then - write(*,*) 'Too many entries to sort in alpsrt, stop' - stop - endif - if(n.le.0) return - IL(1)=0 - IR(1)=0 - DO 10 I=2,N - IL(I)=0 - IR(I)=0 - J=1 - 2 IF(A(I).GT.A(J)) GOTO 5 - 3 IF(IL(J).EQ.0) GOTO 4 - J=IL(J) - GOTO 2 - 4 IR(I)=-J - IL(J)=I - GOTO 10 - 5 IF(IR(J).LE.0) GOTO 6 - J=IR(J) - GOTO 2 - 6 IR(I)=IR(J) - IR(J)=I - 10 CONTINUE - I=1 - J=1 - GOTO 8 - 20 J=IL(J) - 8 IF(IL(J).GT.0) GOTO 20 - 9 K(I)=J - B(I)=A(J) - I=I+1 - IF(IR(J)) 12,30,13 - 13 J=IR(J) - GOTO 8 - 12 J=-IR(J) - GOTO 9 - 30 IF(IOPT.EQ.2) RETURN - DO 31 I=1,N - 31 A(I)=B(I) - 999 END -C----------------------------------------------------------------------- - subroutine getunit(n) - implicit none - integer n,i - logical yes - do i=10,100 - inquire(unit=i,opened=yes) - if(.not.yes) goto 10 - enddo - write(*,*) 'no free units to write to available, stop' - stop - 10 n=i - end - diff --git a/Generators/CompHep_i/CMakeLists.txt b/Generators/CompHep_i/CMakeLists.txt deleted file mode 100644 index 2b89b9320ba2ddfb0e0cec5a02b32a089cc16ecf..0000000000000000000000000000000000000000 --- a/Generators/CompHep_i/CMakeLists.txt +++ /dev/null @@ -1,28 +0,0 @@ -################################################################################ -# Package: CompHep_i -################################################################################ - -# Declare the package name: -atlas_subdir( CompHep_i ) - -# Declare the package's dependencies: -atlas_depends_on_subdirs( PRIVATE - Generators/GeneratorFortranCommon ) - -# External dependencies: -find_package( Lhapdf ) -find_package( Pythia6 ) - -# tag allowUndefined was not recognized in automatic conversion in cmt2cmake - -# Component(s) in the package: -atlas_add_library( CompHep_i - src/*.F - NO_PUBLIC_HEADERS - INCLUDE_DIRS ${PYTHIA6_INCLUDE_DIRS} ${LHAPDF_INCLUDE_DIRS} - LINK_LIBRARIES ${PYTHIA6_LIBRARIES} ${LHAPDF_LIBRARIES} GeneratorFortranCommonLib ) - -# Install files from the package: -atlas_install_joboptions( share/*.py ) -atlas_install_runtime( share/Mixed.PEV share/inparmCompHep.dat ) - diff --git a/Generators/CompHep_i/doc/Comphep.pdf b/Generators/CompHep_i/doc/Comphep.pdf deleted file mode 100755 index 41c0b6f57ec278b6dde12971c5415f940c077ac9..0000000000000000000000000000000000000000 Binary files a/Generators/CompHep_i/doc/Comphep.pdf and /dev/null differ diff --git a/Generators/CompHep_i/doc/Comphep.tex b/Generators/CompHep_i/doc/Comphep.tex deleted file mode 100755 index d493cd584a92bb7f704dc7a4be024adc0432d9f1..0000000000000000000000000000000000000000 --- a/Generators/CompHep_i/doc/Comphep.tex +++ /dev/null @@ -1,48 +0,0 @@ -\documentclass[11pt]{article} -\newdimen\SaveHeight \SaveHeight=\textheight -\textwidth=6.5in -\textheight=8.9in -\textwidth=6.5in -\textheight=9.0in -\hoffset=-.5in -\voffset=-1in -\def\topfraction{1.} -\def\textfraction{0.} -\def\topfraction{1.} -\def\textfraction{0.} -\begin{document} -\title{Comphep\_i: An interface between Comphep and Athena} -\author{ Ian Hinchliffe (I\_Hinchliffe@lbl.gov) and Georgios Stavropoulos (George.Stavropoulos@cern.ch) } -%\today - -\maketitle - -This package runs Comphep from within Athena. \\See the example -in {\bf Comphep\_i/share/jobOptions.comphep.py } which shows how to -read Comphep events and hadronize them using Pythia. - -Users must first run -Comphep in standalone mode and make a file of events. An athena job -then takes these events hadronizes them and passes them down the -Athena event chain. The events must be made with a version of Comphep -that is compatible, recent versions that support the Les Houches -interface should be acceptable. CompHep version 4.4.3 is currently -interfaced. - -Modify the file inparmCompHep.dat that -you will find in your run area. You specify the name of your event -file here. No Athena recompilation is needed is needed to process the events. - -Comphep information can be found here - -http://theory.sinp.msu.ru/parser/parser.php?file=/phpcms/comphep - - -\end{document} - - - - - - - diff --git a/Generators/CompHep_i/doc/packagedoc.h b/Generators/CompHep_i/doc/packagedoc.h deleted file mode 100644 index 73bf2173b8797d10c51b08431e1e5bbdd5bef9b9..0000000000000000000000000000000000000000 --- a/Generators/CompHep_i/doc/packagedoc.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -/** - - <i>CompHep_i is an interface between CompHep generator and Athena. - -This package runs Comphep from within Athena. See the example -in Comphep_i/share/jobOptions.comphep.py which shows how to -read Comphep events and hadronize them using Pythia. - -Users must first run -Comphep in standalone mode and make a file of events. An athena job -then takes these events hadronizes them and passes them down the -Athena event chain. The events must be made with a version of Comphep -that is compatible, recent versions that support the Les Houches -interface should be acceptable. CompHep version 4.4.3 is currently -interfaced. - -Modify the file inparmCompHep.dat that -you will find in your run area. You specify the name of your event -file here. No Athena recompilation is needed is needed to process the events. - -Comphep information can be found here - -http://theory.sinp.msu.ru/parser/parser.php?file=/phpcms/comphep - -@author Ian Hinchliffe (I_Hinchliffe@lbl.gov) and Georgios Stavropoulos (George.Stavropoulos@cern.ch) - -put into doxygen by E. Lobodzinska (Jan. 2008) - -</i> - -@page CompHep_i_page - - - -*/ diff --git a/Generators/CompHep_i/share/Mixed.PEV b/Generators/CompHep_i/share/Mixed.PEV deleted file mode 100755 index d28f98f20236b78a8a43d18dfb82918cc9f8546e..0000000000000000000000000000000000000000 --- a/Generators/CompHep_i/share/Mixed.PEV +++ /dev/null @@ -1,32 +0,0 @@ -#PEVLIB_v.1.0 ============================================= -#CompHEP version 41.10 -#PROCESS G G -> t T -#Initial_state - SQRT(S) 1.400000E+04 - Rapidity(c.m.s) 0.000000E+00 - StrFun1: PDF:CTEQ5M(proton) - StrFun2: PDF:CTEQ5M(proton) -#MASSES 0.0000000000E+00 0.0000000000E+00 1.7500000000E+02 1.7500000000E+02 -#Cross_section(Width) 6.044792E+02 -#Number_of_events 10000 -#---------------------------------------------------------- -#CompHEP version 41.10 -#PROCESS u U -> t T -#Initial_state - SQRT(S) 1.400000E+04 - Rapidity(c.m.s) 0.000000E+00 - StrFun1: PDF:CTEQ5M(proton) - StrFun2: PDF:CTEQ5M(proton) -#MASSES 0.0000000000E+00 0.0000000000E+00 1.7500000000E+02 1.7500000000E+02 -#Cross_section(Width) 2.336740E+01 -#Number_of_events 10000 -#---------------------------------------------------------- -#Number_of_subprocesses = 2 -#Total_cross_section_(pb) = 6.278466E+02 -#Events_mixed_and_randomized = 5 -#Nproc ================== Events ========================== - 1 2.5862629735E+02 -3.8929624665E+02 -6.9213986440E+01 -9.5264879579E+01 -3.0735487854E+02 6.9213986440E+01 9.5264879579E+01 1.7668492924E+02 9.119E+01 (1 2)(2 3)(4 1) - 1 1.0460780946E+02 -4.2958755232E+02 -6.1766794891E+01 -8.5014699774E+01 -2.3454657455E+02 6.1766794891E+01 8.5014699774E+01 -9.0433168313E+01 9.119E+01 (1 2)(2 3)(4 1) - 1 2.7019408861E+01 -1.8288552277E+03 -3.3895191492E+01 -4.6652728760E+01 -3.8181298383E+02 3.3895191492E+01 4.6652728760E+01 -1.4200228350E+03 9.119E+01 (1 3)(2 1)(4 2) - 1 8.6431336736E+01 -4.0074144085E+02 -3.0812587106E+01 -4.2409887815E+01 -2.0368052790E+02 3.0812587106E+01 4.2409887815E+01 -1.1062957622E+02 9.119E+01 (1 3)(2 1)(4 2) - 1 1.9596119889E+02 -1.0717286282E+03 -1.6398457534E+02 -2.2570540473E+02 -8.7865508841E+02 1.6398457534E+02 2.2570540473E+02 2.8876591081E+00 9.119E+01 (1 2)(2 3)(4 1) diff --git a/Generators/CompHep_i/share/inparmCompHep.dat b/Generators/CompHep_i/share/inparmCompHep.dat deleted file mode 100755 index 0c68b35f7cb24322849c7e373225157725f72eef..0000000000000000000000000000000000000000 --- a/Generators/CompHep_i/share/inparmCompHep.dat +++ /dev/null @@ -1,6 +0,0 @@ -1) PATH/FileName for event file (PATH is optional) -Mixed-4.4.3.PEV -2) Process string (just for comment in PYTHIA output) -p,p -> X,X,X,X -3) Number of events to be generated by PYTHIA -100000 diff --git a/Generators/CompHep_i/share/jobOptions.comphep.py b/Generators/CompHep_i/share/jobOptions.comphep.py deleted file mode 100755 index f2ba942d541ad3fc7b324e675e5c202155947342..0000000000000000000000000000000000000000 --- a/Generators/CompHep_i/share/jobOptions.comphep.py +++ /dev/null @@ -1,52 +0,0 @@ -############################################################### -# -# Job options file -# -#============================================================== -#-------------------------------------------------------------- -# General Application Configuration options -#-------------------------------------------------------------- -import AthenaCommon.AtlasUnixGeneratorJob - -from AthenaCommon.AppMgr import theApp -from AthenaCommon.AppMgr import ServiceMgr - -# make sure we are loading the ParticleProperty service -from PartPropSvc.PartPropSvcConf import PartPropSvc -ServiceMgr += PartPropSvc() - -#-------------------------------------------------------------- -# Private Application Configuration options -#-------------------------------------------------------------- -# Set output level threshold (2=DEBUG, 3=INFO, 4=WARNING, 5=ERROR, 6=FATAL ) -ServiceMgr.MessageSvc.OutputLevel = INFO -#-------------------------------------------------------------- -# Event related parameters -#-------------------------------------------------------------- -# Number of events to be processed (default is 10) -theApp.EvtMax = 5 -#-------------------------------------------------------------- -# Algorithms Private Options -#-------------------------------------------------------------- -from AthenaCommon.AlgSequence import AlgSequence -job=AlgSequence() -from Pythia_i.Pythia_iConf import Pythia -job += Pythia() - -#job.Pythia.PythiaCommand = {"pysubs msel 13","pysubs ckin 3 18.","pypars mstp 43 2", -# "pyinit pylisti 12", -# "pyinit pylistf 1" -#}; -job.Pythia.PythiaCommand = ["pyinit user comphep", "pyinit pylistf 1","pyinit dumpr 1 1"] - -from TruthExamples.TruthExamplesConf import DumpMC -job += DumpMC() - -#--------------------------------------------------------------- -# Ntuple service output -#--------------------------------------------------------------- -#============================================================== -# -# End of job options file -# -############################################################### diff --git a/Generators/CompHep_i/src/comphepinter.F b/Generators/CompHep_i/src/comphepinter.F deleted file mode 100755 index ed21f17da7b4b2461b003c9bfbefe2514b94d163..0000000000000000000000000000000000000000 --- a/Generators/CompHep_i/src/comphepinter.F +++ /dev/null @@ -1,665 +0,0 @@ -************************************************************************* -* interface routines * -* for CompHEP 4.4.3 - PYTHIA 6.2 interface * -************************************************************************* -* 15.12.99 Ilyin V.A. * -* 24.12.99 Modified by A. Belyaev for PYTHIA 6.1 * -* 18.05.2000 Modified by A.Skachkova for CompHEP version N4 * -* 22.10.2000 SETWID is removed, V.A.Ilyin * -* 22.10.2000 Zero masses protected, V.A.Ilyin * -* 25.11.2001 updated to PYTHIA 6.2 by V.A.Ilyin * -* 27.03.2006 Modified for Version 4.4.3 by Vikas Bansal * -************************************************************************* - -***************************************** -*...write event (in PYJETS format) -***************************************** - SUBROUTINE EVOUT - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) - SAVE - - WRITE(6,*) N,((K(I,J),J=1,5),I=1,N),((P(I,J),J=1,5),I=1,N), - . ((V(I,J),J=1,5),I=1,N) - - RETURN - END - -************************************************** -*...read number of subprocesses -************************************************* - SUBROUTINE SUBNUM - IMPLICIT DOUBLE PRECISION(A-H, O-Z) -*...CompHEP-PYTHIA interface - CHARACTER XXXX*80,PROCESS*80,EVFILE*500, TotalProc*30 - COMMON /INPARM/ IS,NEVPY,PROCESS,EVFILE - COMMON/SUBPROC/NUP(100),KFP(100,20),SIGMAERR(100),IDPR(100), - . NCUT(100),NEV(100),XM(100,20,3),SIGMA(100),NPROC - - IS = 44 -1 READ(IS,FMT='(A80)') XXXX - IF (XXXX(1:15).EQ.'##total: Nproc=') THEN - READ(XXXX,*) TotalProc,TotalProc - READ(TotalProc,FMT='(6x,i4)') nProc - ELSE - GOTO 1 - ENDIF - REWIND IS - - RETURN - END - -***************************** -*...read header of the event file -************************************ - SUBROUTINE RHEADER - IMPLICIT DOUBLE PRECISION(A-H, O-Z) -*...PYTHIA common blocks - INTEGER PYCOMP - COMMON /PYPARS/ MSTP(200),PARP(200),MSTI(200),PARI(200) - COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) - INTEGER MAXPUP - PARAMETER (MAXPUP=100) - INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP - DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP - COMMON/HEPRUP/IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2), - &IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP),XMAXUP(MAXPUP), - &LPRUP(MAXPUP) -*...CompHEP-PYTHIA interface - CHARACTER PROCESS*80,EVFILE*500 - CHARACTER BEAM*16 - LOGICAL EOL - CHARACTER*100 EMPTYS - CHARACTER*100 SPROCESS,BEAM1,BEAM2,STRF1,STRF2,XXXX,EVENTS - COMMON /INPARM/ IS,NEVPY,PROCESS,EVFILE - COMMON/SUBPROC/NUP(100),KFP(100,20),SIGMAERR(100),IDPR(100), - . NCUT(100),NEV(100),XM(100,20,3),SIGMA(100),NPROC - COMMON/BEAMS/BENERGY(2),KFB(2),BMASS(2),BEAM(2) - SAVE - - READ(IS,FMT='(A80)') BEAM1 - READ(IS,FMT='(A80)') BEAM2 - READ(IS,FMT='(A80)') STRF1 - IF ( .NOT. EOL(STRF1)) READ(IS,FMT='(30x,A1)') XXXX - READ(IS,FMT='(A80)') STRF2 - IF ( .NOT. EOL(STRF2)) READ(IS,FMT='(30x,A1)') XXXX - -*...LOOP OVER NUMBER OF SUBPROCESSES - DO NPRC=1,NPROC - -*VB Read Sub Process - SPROCESS = EMPTYS(100) - READ(IS,FMT='(20x,A99)') SPROCESS - -*VB READ Cross section for a sub-process - j = 0 -*VB increasing j to near 'Xsection' - j = j + 1 -503 CONTINUE - j = j + 1 - IF (SPROCESS(j:j).eq.';' .OR. j.GT. 120) goto 603 - IF(SPROCESS(j:(j+7)).EQ.'CrosSec=') THEN -* READ(SPROCESS((j+8):),FMT='(G11.5)') SIGMA(NPRC) - READ(SPROCESS((j+8):),*) SIGMA(NPRC) - GOTO 603 - ENDIF - GOTO 503 -603 CONTINUE - -*VB READ Cross section Error for a sub-process - j = 0 -*VB increasing j to near 'XsectionErr' - j = j + 1 -513 CONTINUE - j = j + 1 - IF (SPROCESS(j:j).eq.';' .OR. j.GT. 120) goto 613 - IF(SPROCESS(j:(j+10)).EQ.'CrosSecErr=') THEN -* READ(SPROCESS((j+11):),FMT='(G11.5)') SIGMAERR(NPRC) - READ(SPROCESS((j+11):),*) SIGMAERR(NPRC) - GOTO 613 - ENDIF - GOTO 513 -613 CONTINUE - -*VB Reading second line of sub process only if it exists. -*VB It says master=3. It is fixed in comphep to this value. -*VB Its value being 3 corresponds to unweighted event as per Les Houches -*VB document hep-ph/0109068 - IF ( .NOT. EOL(SPROCESS)) READ(IS,FMT='(30x,A1)') XXXX - -*... which version of comphep. This is 4.4 compatible - READ(IS,FMT='(10x,A80)') XXXX - -*VB Read number of (unweighted) events in the input for a sub-process - READ(IS,FMT='(9x,A100)') EVENTS - j = 0 -702 CONTINUE - j = j + 1 - IF (EVENTS(j:j).eq.';' .OR. j.GT. 120) goto 802 - IF(EVENTS(j:(j+9)).EQ.'IDprocess=') THEN - READ(EVENTS((j+10):),*) IDPR(NPRC) - GOTO 802 - ENDIF - GOTO 702 -802 CONTINUE - -502 CONTINUE - j = j + 1 - IF (EVENTS(j:j).eq.';' .OR. j.GT. 120) goto 602 - IF(EVENTS(j:(j+1)).EQ.'N=') THEN - READ(EVENTS((j+2):),*) NEV(NPRC) - GOTO 602 - ENDIF - GOTO 502 -602 CONTINUE - -703 CONTINUE - j = j + 1 - IF (EVENTS(j:j).eq.';' .OR. j.GT. 120) goto 803 - IF(EVENTS(j:(j+4)).EQ.'CutN=') THEN - READ(EVENTS((j+5):),*) NCUT(NPRC) - GOTO 803 - ENDIF - GOTO 703 -803 CONTINUE - -*VB Reading second line of n_events only if it exists. -*VB It says origN. i.e. Events before mixing. - IF ( .NOT. EOL(EVENTS)) READ(IS,FMT='(30x,A1)') XXXX -*VB Read parton information of a sub-process - CALL R_PROC(NPRC,SPROCESS) - -*...read names of beams used in CompHEP and get their KF codes and masses - KFB1=KFB(1) - KFB2=KFB(2) - - BEAM(1) = EMPTYS(20) - CALL R_BEAM(BEAM1,STRF1,KFB(1),BEAM(1),BENERGY(1), BMASS(1) - &,PDFGUP(1), PDFSUP(1)) - BEAM(2) = EMPTYS(20) - CALL R_BEAM(BEAM2,STRF2,KFB(2),BEAM(2),BENERGY(2), BMASS(2) - &,PDFGUP(2), PDFSUP(2)) - CALL PYNAME(KFB(1),BEAM(1)) - CALL PYNAME(KFB(2),BEAM(2)) - -*...define beam momenta for PYTHIA 'USER" frame - CALL BEAMFR - -*...set out-particle masses in PYTHIA according to CompHEP events - DO 30 i=3,NUP(nprc) - IF(XM(nprc,i,1).gt.0.d0) PMAS(PYCOMP(KFP(nprc,i)),1)=XM(nprc,i,1) -30 CONTINUE - -*...end of loop over subprocess headers - ENDDO - - READ(IS,FMT='(1x,A1)') XXXX - READ(IS,FMT='(1x,A1)') XXXX - - RETURN - END - - -******************************* -* evaluate momenta of beams -******************************* - SUBROUTINE BEAMFR - IMPLICIT DOUBLE PRECISION(A-H, O-Z) -*...PYTHIA common blocks - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) -*...CompHEP-PYTHIA interface - CHARACTER BEAM*16 - DIMENSION PBCMS(2,5) - COMMON/SUBPROC/NUP(100),KFP(100,20),SIGMAERR(100),IDPR(100), - . NCUT(100),NEV(100),XM(100,20,3),SIGMA(100),NPROC - COMMON/BEAMS/BENERGY(2),KFB(2),BMASS(2),BEAM(2) - SAVE - -*...evaluate beams momenta in CMS - PBCMS(1,1) = 0 - PBCMS(1,2) = 0 - PBCMS(1,3) = sqrt(BENERGY(1)**2-BMASS(1)**2) - PBCMS(1,4) = BENERGY(1) - PBCMS(1,5) = BMASS(1) - PBCMS(2,1) = 0 - PBCMS(2,2) = 0 - PBCMS(2,3) = -sqrt(BENERGY(2)**2-BMASS(2)**2) - PBCMS(2,4) = BENERGY(2) - PBCMS(2,5) = BMASS(2) -*...evaluate beams momenta in the collison frame using Lorentz boost -*...given from the CompHEP session - - RPDTY = 0.0 - - P(1,1) = PBCMS(1,1) - P(1,2) = PBCMS(1,2) - P(1,3) = SINH(RPDTY)*PBCMS(1,4) + COSH(RPDTY)*PBCMS(1,3) - P(1,4) = COSH(RPDTY)*PBCMS(1,4) + SINH(RPDTY)*PBCMS(1,3) - P(1,5) = PBCMS(1,5) - P(2,1) = PBCMS(2,1) - P(2,2) = PBCMS(2,2) - P(2,3) = SINH(RPDTY)*PBCMS(2,4) + COSH(RPDTY)*PBCMS(2,3) - P(2,4) = COSH(RPDTY)*PBCMS(2,4) + SINH(RPDTY)*PBCMS(2,3) - P(2,5) = PBCMS(2,5) - - RETURN - END - -****************************** -* parsing the beam strings -****************************** - SUBROUTINE R_BEAM(COLL_BEAM,STRF,KFB,BEAM,BENERGY,BMASS,IPDFGUP - & ,IPDFSUP) - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - INTEGER MAXPUP - PARAMETER (MAXPUP=100) - INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP - DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP - COMMON/HEPRUP/IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2), - &IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP),XMAXUP(MAXPUP), - &LPRUP(MAXPUP) - CHARACTER BEAM*16,STRF*80,COLL_BEAM*80,SFUNC*5 - COMMON /QCDPAR/ QCDLF(6),NL - SAVE - - IS = 44 -*** error case - IF (COLL_BEAM.eq.'') THEN - write(*,*) 'Error in COLL_BEAM' - stop - ENDIF - -*** error case - IF (STRF.eq.'') THEN - write(*,*) 'Error in STRF' - stop - ENDIF - -*** default beam mass - BMASS = 0 - -*** default beam energy is that at LHC - BENERGY = 7000 - - i = 0 -*VB increasing i to 'energy' - i = i + 14 -500 CONTINUE - i = i + 1 - IF (COLL_BEAM(i:i).eq.';' .OR. i.GT. 47) goto 600 - IF(COLL_BEAM(i:(i+5)).EQ.'energy') THEN - READ(COLL_BEAM((i+7):),*) BENERGY - i = 34 - GOTO 500 - ENDIF - - IF(COLL_BEAM(i:(i+1)).EQ.'KF') THEN - READ(COLL_BEAM((i+3):),*) KFB - i = 37 - GOTO 500 - ENDIF - - IF(COLL_BEAM(i:(i+3)).EQ.'name') THEN - READ(COLL_BEAM((i+5):),*) BEAM - i = 47 -*VB Check if beam name is of single alphabet - IF (BEAM(2:2).ne."'") THEN - IF (BEAM.eq.'pr') THEN - BEAM ='proton' - BMASS = 0.938 - ENDIF - IF (BEAM.eq.'an') THEN - BEAM ='anti-proton' - BMASS= 0.938 - ENDIF - IF (BEAM.eq.'el') THEN - BEAM ='electron' - BMASS= 0.000511 - ENDIF - IF (BEAM.eq.'La') THEN - BEAM ='gamma' - BMASS= 0. - ENDIF - GOTO 499 - ELSE - beam = beam(1:1) - GOTO 499 - ENDIF - ENDIF - GOTO 500 - -600 CONTINUE - -*VB If you are reaching here then wrong beam - GOTO 998 - -499 CONTINUE - -*VB------Now parsing Structure function - - i = 0 -*VB increasing i to 'strfun name' - i = i + 20 -510 CONTINUE - i = i + 1 - IF (STRF(i:i).eq.';' .OR. i.GT. 100) goto 610 - IF(STRF(i:(i+3)).EQ.'name') THEN - READ(STRF((i+5):),*) SFUNC - IF (SFUNC .eq. 'OFF') THEN - write(*,*) 'STRFUN is OFF. It is not required by Pythia' - GOTO 599 - ENDIF - i = i + 5 - GOTO 510 - ENDIF - - IF(STRF(i:(i+4)).EQ.'PDFid') THEN - READ(STRF((i+6):),*) IPDFSUP - i = i + 4 - GOTO 510 - ENDIF - - IF(STRF(i:(i+4)).EQ.'PDFgr') THEN - READ(STRF((i+6):),*) IPDFGUP - GOTO 599 - ENDIF - GOTO 510 - -610 CONTINUE - -*VB----problem with strfun - goto 999 - -599 CONTINUE - - RETURN - -998 WRITE(*,*) 'Unknown BEAM' - RETURN - -999 WRITE(*,*) 'Unknown STRF' - RETURN - END - - -********************************* -* parsing the subprocess string -********************************* - SUBROUTINE R_PROC(NPRC,PROCESS) - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - COMMON/SUBPROC/NUP(100),KFP(100,20),SIGMAERR(100),IDPR(100), - . NCUT(100),NEV(100),XM(100,20,3),SIGMA(100),NPROC - COMMON /QCDPAR/ QCDLF(6),NL - CHARACTER*80 PROCESS, PARTON, PARTON_MASS, XXXX,QCDINFO - CHARACTER*3 PNAME(1:8) - CHARACTER*6 PNAME_TMP(1:8) - LOGICAL EOL - SAVE - - IS = 44 - -*VB Number of particles in a subprocess - NUP(NPRC) = 0 - - j = 0 -*VB increasing j to near 'NPartons' - j = j + 40 -501 CONTINUE - j = j + 1 - IF (PROCESS(j:j).eq.';') goto 601 - IF(PROCESS(j:(j+6)).EQ.'Nparton') THEN - READ(PROCESS((j+8):),*) NUP(NPRC) - GOTO 601 - ENDIF - GOTO 501 -601 CONTINUE - - IF (NUP(NPRC).GT.10) THEN - WRITE(*,*) 'Error: more than 10 partons in final state' - STOP - ENDIF - - IF(NUP(NPRC).EQ.0) THEN - WRITE(*,*) 'No process found in event file. Stopping' - STOP - ENDIF - - DO K = 1, NCUT(NPRC) - READ(IS,FMT='(22x,A80)') XXXX - ENDDO - -*VB Number of input particles - NIN = 0 - DO K = 1, NUP(NPRC) - - READ(IS,FMT='(22x,A80)') PARTON - READ(IS,FMT='(9x,A80)') PARTON_MASS - -*VB get parton IN status - j = 0 -514 CONTINUE - j = j + 1 - IF (PARTON(j:j).eq.';' .OR. j.GT. 70) goto 614 - IF(PARTON(j:(j+2)).EQ.'in=') THEN - READ(PARTON((j+3):),*) NIN_READ - IF (NIN_READ .ge. NIN ) NIN = NIN_READ - GOTO 614 - ENDIF - GOTO 514 -614 CONTINUE - - -*VB get parton KF code - j = 0 -504 CONTINUE - j = j + 1 - IF (PARTON(j:j).eq.';' .OR. j.GT. 70) goto 604 - IF(PARTON(j:(j+2)).EQ.'KF=') THEN - READ(PARTON((j+3):),*) KFP(NPRC, K) - GOTO 604 - ENDIF - GOTO 504 -604 CONTINUE - -*VB get parton name - j = 0 -505 CONTINUE - j = j + 1 - IF (PARTON(j:j).eq.';' .OR. j.GT. 30) goto 605 - IF(PARTON(j:(j+3)).EQ.'name') THEN - READ(PARTON((j+5):),*) PNAME_TMP(K) - GOTO 605 - ENDIF - GOTO 505 -605 CONTINUE - - DO 551 I=2,6 - IF(PNAME_TMP(K)(I:I) .eq. "'") L = I -551 CONTINUE - PNAME(K) = PNAME_TMP(K)(2:(L-1)) -*VB The following line is now(gfortran) sufficient - PNAME(K) = PNAME_TMP(K) - - -*VB The following is only for exceptional events from COMPHEP. -*VB In newer version it is taken care by COMPHEP -*VB If KF from comphep is 0, then find it in this file - IF (KFP(NPRC,K).eq.0) THEN - KFP(NPRC,K) = KFPART(PNAME(K)) - IF(KFP(NPRC,K).eq.0) THEN - write(*,*) 'Unknown for PYTHIA particle name: ', - & PNAME(K) - stop - ENDIF - ENDIF - -*VB get parton_mass - j = 0 -506 CONTINUE - j = j + 1 - IF (PARTON_MASS(j:j).eq.';' .OR. j.GT. 10) goto 606 - IF(PARTON_MASS(j:(j+3)).EQ.'mass') THEN - READ(PARTON_MASS((j+5):),*) XM(NPRC,K,1) - GOTO 606 - ENDIF - GOTO 506 -606 CONTINUE - - ENDDO - - IF((NUP(NPRC)-NIN).le.0) THEN - WRITE(*,*) 'No OUT particles in the process. Stopping' - STOP - ENDIF - - IF(NIN.eq.1) THEN - WRITE(*,*) 'No decay process allowed. Stopping' - STOP - ENDIF - - IF(NIN.eq.0) THEN - WRITE(*,*) 'No input particle in the process. Stopping' - STOP - ENDIF - - READ(IS,FMT='(20x,A80)') QCDINFO - i=0 -511 CONTINUE - i = i + 1 - IF (QCDINFO(i:i).eq.';' .OR. i.GT. 75) goto 611 - IF(QCDINFO(i:(i+2)).EQ.'NL=') THEN - READ(QCDINFO((i+3):),*) NL - i = 10 - GOTO 511 - ENDIF - - IF(QCDINFO(i:(i+9)).EQ.'QCDLambda=') THEN - READ(QCDINFO((i+10):),*) QCDLF(5) - GOTO 611 - ENDIF - GOTO 511 - - -*VB READ FORMAT LINES -611 READ(IS,FMT='(20x,A80)') XXXX -556 IF ( .NOT. EOL(XXXX)) THEN - READ(IS,FMT='(20x,A80)') XXXX - GOTO 556 - ENDIF - - RETURN - END - - -*###################################################### -* Some service routines -*###################################################### - -******************** -* make empty string -******************** - FUNCTION EMPTYS(N) - CHARACTER*(*) EMPTYS - SAVE - - DO 15 k=1,N - EMPTYS(k:k)=' ' -15 CONTINUE - RETURN - END - - -******************** -* Check End of Line -******************** - LOGICAL FUNCTION EOL(INPUT_LINE) - CHARACTER*(*) INPUT_LINE - INTEGER K - SAVE - - EOL = .FALSE. - DO 16 K=1,LEN(INPUT_LINE) - IF (INPUT_LINE(K:K).eq.';') EOL = .TRUE. -16 CONTINUE - RETURN - END - -******************************* -* delete blanks in string -******************************* - FUNCTION CMPRS(STR) - CHARACTER*500 STR,XSTR,CMPRS - CHARACTER*500 EMPTYS - SAVE - - j=1 - XSTR = EMPTYS(500) - DO 10 i=1,80 - IF(STR(i:i).ne.' ') THEN - XSTR(j:j)=STR(i:i) - j=j+1 - ENDIF -10 CONTINUE - CMPRS = XSTR - RETURN - END -***************************************** -*...initialization procedure for input data -* 25.11.2001 V.Ilyin -***************************************** - SUBROUTINE RINPAR - COMMON /INPARM/ IS,NEVPY,PROCESS,EVFILE - CHARACTER XXX*500,PROCESS*80,EVFILE*500,CMPRS*500 - SAVE - - OPEN(22,FILE='inparmCompHep.dat',STATUS='UNKNOWN') - READ(22,FMT='(A500)') XXX - READ(22,FMT='(A500)') XXX - - EVFILE = CMPRS(XXX) - - READ(22,FMT='(A500)') XXX - READ(22,FMT='(A500)') XXX - - PROCESS = CMPRS(XXX) - -c READ(22,FMT='(i2)') IS - IS = 44 ! channel to read event file -*... input channel for unweighted events - OPEN(IS,FILE=EVFILE,STATUS='UNKNOWN') - - READ(22,FMT='(A500)') XXX - READ(22,FMT='(i10)') NEVPY - CLOSE(22) - - RETURN - END - -************************************************************************* -* KFPART routine * -* for CompHEP 41.10 - PYTHIA 6.2 interface * -************************************************************************* -* 25.11.2001 Ilyin V.A. * -************************************************************************* -*VB In version 4.4.3 kfpart is part of COMPHEP -* This can be still kept here to add quick functionality in case of new particles which will have to be added here. - - INTEGER FUNCTION kfpart(pname) - CHARACTER*3 pname - - IF (pname.eq.'e1 ') THEN - kfpart=11 - ELSEIF (pname.eq.'e4 ') THEN - kfpart=17 - ELSEIF (pname.eq.'ex ') THEN ! e*- - kfpart=4000011 - ELSEIF (pname.eq.'EX ') THEN ! - kfpart=-4000011 - ELSE - kfpart=0 - ENDIF - - RETURN - END - - diff --git a/Generators/CompHep_i/src/initcomphep.F b/Generators/CompHep_i/src/initcomphep.F deleted file mode 100755 index 253b232afeac56eb4ef9ee0f7646d5a6d888f746..0000000000000000000000000000000000000000 --- a/Generators/CompHep_i/src/initcomphep.F +++ /dev/null @@ -1,60 +0,0 @@ - SUBROUTINE INITCOMPHEP -c interface to external pythia processes using Les Houches accord -c hep-ph/0109068 - -c Adapted for pythia 6.203 -c Ian Hinchliffe (may 2002) -c Based on code by -c************************************************************************* -c* UPINIT routine * -c* for CompHEP 4.4.3 - PYTHIA 6.2 interface * -c************************************************************************* -c* 25.11.2001 Ilyin V.A. * -c* 27.03.2006 Modified for version 4.4.3 by Vikas Bansal * -c -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - -C...User process initialization commonblock. -#include "GeneratorFortranCommon/heprup.inc" -*...CompHEP-PYTHIA interface - CHARACTER BEAM*16 -* COMMON/BEAMS/SQRTS,RPDTY,KFB(2),BMASS(2),BEAM(2) - COMMON/BEAMS/BENERGY(2),KFB(2),BMASS(2),BEAM(2) - COMMON/SUBPROC/NUP(100),KFP(100,20),SIGMAERR(100),IDPR(100), - . NCUT(100),NEV(100),XM(100,20,3),SIGMA(100),NPROC - RPDTY = 0d0 - SQRTS = BENERGY(1) + BENERGY(2) - -*...PDG codes for beams - IDBMUP(1)=KFB(1) - IDBMUP(2)=KFB(2) -*...energies of beams (in PYTHI beams are massless !) - EBMUP(1) = SQRTS/2d0*(COSH(RPDTY)+SINH(RPDTY)) - EBMUP(2) = SQRTS/2d0*(COSH(RPDTY)-SINH(RPDTY)) -*...PDFLIB group and set of the parton distributions -*** already done -*...events weighting - IDWTUP = 3 !unweighted input -*...number of subprocesses in input - NPRUP = nproc -*...cross section for each subprocess - DO 100 i=1,NPRUP - XSECUP(i) = SIGMA(i) -100 CONTINUE -*...statistcal error on the cross sections - DO 110 i=1,NPRUP - XERRUP(i) = SIGMAERR(i) -110 CONTINUE -*...maximum event weight - DO 120 i=1,NPRUP - XMAXUP(i) = 1.d0 -120 CONTINUE -*...unique integer identifier for each subprocess - DO 130 i=1,NPRUP - LPRUP(i) = IDPR(i) -130 CONTINUE - - RETURN - END diff --git a/Generators/CompHep_i/src/usecomphep.F b/Generators/CompHep_i/src/usecomphep.F deleted file mode 100755 index d5cbeca6c957065b3a493f780f49378d32c1e6aa..0000000000000000000000000000000000000000 --- a/Generators/CompHep_i/src/usecomphep.F +++ /dev/null @@ -1,440 +0,0 @@ - SUBROUTINE USECOMPHEP -c routine for Les Houches interface to external pythiA routines -c adapted from base pythia code. -c Ian Hinchliffe (May 2002) -c -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) -C from -************************************************************************* -* UPEVNT routine * -* for CompHEP 4.4.3 - PYTHIA 6.2 interface * -************************************************************************* -* 25.11.2001 Ilyin V.A. * -* 27.03.2006 Modified for version 4.4.3 by Vikas Bansal * -************************************************************************* - -#include "GeneratorFortranCommon/hepeup.inc" -#include "GeneratorFortranCommon/heprup.inc" -*...CompHEP-PYTHIA interface - COMMON/SUBPROC/NNUP(100),KFP(100,20),SIGMAERR(100),IDPR(100), - . NCUT(100),NEV(100),XM(100,20,3),SIGMA(100),NPROC - COMMON/BEAMS/BENERGY(2),KFB(2),BMASS(2),BEAM(2) - CHARACTER BEAM*16 - character chain*60, K1*1, K2*1, XN*2,COLON*1 - COMMON/CCHAIN/ICC(100,2,20) - COMMON/ISMEAR/ISMEAR - COMMON /INPARM/ IS,NEVPY,PROCESS,EVFILE - CHARACTER EVFILE*500,PROCESS*80,LINE*500 - REAL*8 PP(20,4) - COMMON /QCDPAR/ QCDLF(6),NNL - COMMON/RANDM0/IDUM - -* A. Belyaev, tau-leptons treatment * - INTEGER ITAU(10) - common/UTAU/KFUSER - SAVE /UTAU/ - -*...read current event - PP(1,1)=0d0 - PP(1,2)=0d0 - PP(2,1)=0d0 - PP(2,2)=0d0 - READ(IS,FMT='(A500)',END=1000,ERR=1000) LINE - DO M = 1,6 - READ(LINE(M:M),FMT='(A1)' ) COLON - IF ( COLON .eq. ':' ) K = M - 1 - ENDDO - READ(LINE(1:K),FMT='(I6)') NPRC - Num=3*(NNUP(NPRC)-2)+2 - CALL ITOCHR(XN,NUM) - LINE = LINE((K+1):500) - READ(LINE,FMT='('//XN//'(1x,G17.10),1x,G10.3,1x,A)' - .,END=1000, - .ERR=1000) PP(1,3),PP(2,3),((PP(N,J),J=1,3),N=3,NNUP(NPRC)), - .QUP,chain - - DO 101 M = 1,60 - READ(chain(M:M),FMT='(A1)' ) COLON - IF ( COLON .eq. ':' ) K = M - 1 -101 CONTINUE - chain = chain(1:K) - - pi=dacos(-1d0) - -*...the number of particle entries in the current event - NUP = NNUP(NPRC) -*...the identity of the current subprocess - IDPRUP = LPRUP(NPRC) -*...the event weight - XWGTUP = 1.d0 -*...scale Q of the event (factorization scale) - SCALUP = QUP -*...the QED coupling used - AQEDUP = -1 ! not QED process -*...the QCD coupling used for this event (ME) -*VB Now calculating as per LHAPDF - AQCDUP = ALPHASPDF(SCALUP,QCDLF(5),NNL) ! the same as factorization scale -*...particle identity code - NTAU=0 - DO i=1,NUP - IDUP(i) = KFP(nprc,i) - IF(abs(IDUP(i)).eq.15.or.abs(IDUP(i)).eq.16) THEN - NTAU=NTAU+1 - ITAU(NTAU)=i - IF(abs(IDUP(i)).eq.15.and. - & (abs(KFUSER).eq.24.or.abs(KFUSER).eq.37)) - & KFUSER=KFUSER*SIGN(1,-IDUP(i)) - NTAUPAIR=(NTAU-1)/2+1 - IDUP(NUP+NTAUPAIR)=KFUSER - ENDIF - ENDDO -*...status code of particle - ISTUP(1) = -1 - ISTUP(2) = -1 - DO i=3,NUP+NTAU - ISTUP(i) = 1 - IF(i.gt.NUP)ISTUP(i) = 2 - ENDDO -*...position of first and last mother of particle - MOTHUP(1,1) = 0 - MOTHUP(2,1) = 0 - MOTHUP(1,2) = 0 - MOTHUP(2,2) = 0 - DO i=3,NUP - MOTHUP(1,i) = 1 - MOTHUP(2,i) = 2 - ENDDO -*...the particle momenta - DO NN=1,NUP - PUP(1,NN)=PP(NN,1) - PUP(2,NN)=PP(NN,2) - PUP(3,NN)=PP(NN,3) - PUP(4,NN)=SQRT(PP(NN,1)**2+PP(NN,2)**2+PP(NN,3)**2 - . +XM(nprc,NN,1)**2) - PUP(5,NN)=XM(nprc,NN,1) - ENDDO - DO NT=1,NTAUPAIR - NN=NUP+NT - PUP(1,NN)=PP(ITAU(2*NT-1) ,1)+PP(ITAU(2*NT),1) - PUP(2,NN)=PP(ITAU(2*NT-1) ,2)+PP(ITAU(2*NT),2) - PUP(3,NN)=(PP(ITAU(2*NT-1),3)+PP(ITAU(2*NT),3)) - PUP(4,NN)=PUP(4,ITAU(2*NT-1))+PUP(4,ITAU(2*NT)) - PUP(5,NN)= - & sqrt(PUP(4,NN)**2-PUP(1,NN)**2-PUP(2,NN)**2-PUP(3,NN)**2) - ENDDO -*...invariant lifetime - DO i=1,NUP+NTAUPAIR - VTIMUP(i) = 0.d0 - ENDDO -*...spin information - DO i=1,NUP+NTAUPAIR - SPINUP(i) = 9 - ENDDO - -*...Breit-Wigner smearing of masses for unstable particles in OUT state if yes - CALL SMEARMASS -*...set color flows - DO I=1,30 - IF (CHAIN(I:I+1).EQ.') ') LENGTH=I - ENDDO - ITAG = 500 - DO I=1,NUP - ICOLUP(1,i) = 0 - ICOLUP(2,i) = 0 - ENDDO - DO I=1,LENGTH,5 - K1=CHAIN(I+1:I+1) - N1=NUMBER(K1) - K2=CHAIN(I+3:I+3) - N2=NUMBER(K2) - IF (N1.le.2) THEN - ICOLUP(1,N1) = ITAG - ELSE - ICOLUP(2,N1) = ITAG - ENDIF - IF (N2.le.2) THEN - ICOLUP(2,N2) = ITAG - ELSE - ICOLUP(1,N2) = ITAG - ENDIF - ITAG = ITAG+1 - ENDDO - -* now we are insert intermediate resonanse(s) after 1,2 particles:************ - - DO I1=NTAUPAIR,1,-1 - INDX=NUP+I1 - - IDTMP =IDUP( INDX) - ISTTMP =ISTUP(INDX) - ICOL1TMP=ICOLUP(1,INDX) - ICOL2TMP=ICOLUP(2,INDX) - P1TMP= PUP(1,INDX) - P2TMP= PUP(2,INDX) - P3TMP= PUP(3,INDX) - P4TMP= PUP(4,INDX) - P5TMP= PUP(5,INDX) - - DO I2=NUP+I1-1,3,-1 - IDUP(I2+1)=IDUP(I2) - ISTUP(I2+1) =ISTUP(I2) - ICOLUP(1,I2+1) =ICOLUP(1,I2) - ICOLUP(2,I2+1) =ICOLUP(2,I2) - DO J1=1,5 - PUP(J1,I2+1) =PUP(J1,I2) - ENDDO - ENDDO - IDUP(3) =IDTMP - ISTUP(3) =ISTTMP - ICOLUP(1,3) =ICOLTMP1 - ICOLUP(2,3) =ICOLTMP2 - PUP(1,3) =P1TMP - PUP(2,3) =P2TMP - PUP(3,3) =P3TMP - PUP(4,3) =P4TMP - PUP(5,3) =P5TMP - ENDDO -**************************************************************** - NUP=NUP+NTAUPAIR - - NTAU=0 - DO i=3,NUP - MOTHUP(1,i)=0 - MOTHUP(2,i)=0 - IF(abs(IDUP(I)).eq.15.or.abs(IDUP(I)).eq.16) THEN - NTAU=NTAU+1 - NTAUPAIR=(NTAU-1)/2+1 - MOTHUP(1,i)=3+NTAUPAIR-1 - MOTHUP(2,i)=0 - ENDIF - ENDDO - - RETURN - -*...EOF or error in reading events from CompHEP output -1000 NUP = 0 - - RETURN - END - - - FUNCTION NUMBER(PARTON) - CHARACTER PARTON*1 - IF (PARTON.EQ.'1') THEN - NUMBER=1 - ELSEIF(PARTON.EQ.'2') THEN - NUMBER=2 - ELSEIF(PARTON.EQ.'3') THEN - NUMBER=3 - ELSEIF(PARTON.EQ.'4') THEN - NUMBER=4 - ELSEIF(PARTON.EQ.'5') THEN - NUMBER=5 - ELSEIF(PARTON.EQ.'6') THEN - NUMBER=6 - ELSEIF(PARTON.EQ.'7') THEN - NUMBER=7 - ELSEIF(PARTON.EQ.'8') THEN - NUMBER=8 - ELSEIF(PARTON.EQ.'9') THEN - NUMBER=9 - ELSE - NUMBER=10 - ENDIF - END - -******************************************************* -* FUNCTION * -* Conversion of integer number into character string * -******************************************************* -* Input: ICHR - output string, * -* JJ - integer number under the conversion; * -* Output: ITOCHR - the character string, * -* declare ICHR at least as * -* CHARACTER*LENINT(JJ) * -******************************************************* - SUBROUTINE ITOCHR(ICHR,JJ) - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - CHARACTER ICHR*(*) - CHARACTER XFMT*10,XCC - - ICHR=' ' - WRITE(XCC,FMT='(I1)') LENINT(JJ) - XFMT='(I'//XCC//')' - WRITE(ICHR,FMT=XFMT,err=1) JJ - - goto 9000 -1 write(*,*) 'Error in ITOCHR.' - read(*,*) - -9000 RETURN - END - -******************************************** -* FUNCTION * -* Length of the integer number * -******************************************** - INTEGER FUNCTION LENINT(JJ) - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - KK=1 -10 CONTINUE - IF (JJ .LT. 10**KK) THEN - LLL=KK - GOTO 20 - ENDIF - KK=KK+1 - GOTO 10 - -20 LENINT=LLL - - - RETURN - END - -************************************************************************* -* Routine to smear the resonance mass according to Breit-Wigner * -* CompHEP 4.4.3 - PYTHIA 6.2 interface * -************************************************************************* -* 15.12.99 A. Belyaev, V.Ilyin * -* 06.11.2000 some corrections (XM -> PMAS), V.Ilyin * -* 25.11.2001 update to Pythia 6.2 by V.Ilyin * -* 28.03.2002 corrected ABS(IDUP(I))-->pycomp(IDUP(I)) A.Belyaev * -* 20.12.2005 cosmetic changes by R.Mehdiyev * -* 27.03.2006 compatability change by V. Bansal * -************************************************************************* - SUBROUTINE SMEARMASS - -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) -#include "GeneratorFortranCommon/hepeup.inc" -#include "GeneratorFortranCommon/heprup.inc" - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) - INTEGER PYCOMP -*...CompHEP-PYTHIA interface - COMMON/SUBPROC/NNUP(100),KFP(100,20),SIGMAERR(100),IDPR(100), - . NCUT(100),NEV(100),XM(100,20,3),SIGMA(100),NPROC - SAVE /SUBPROC/ - - REAL*8 PX,PX1(20,5),PX2(20,5),PX3(20,5),PXX(20,5) - -*...some values in lab frame - PLAB=PUP(3,1)+PUP(3,2) - ELAB=PUP(4,1)+PUP(4,2) - SHAT=(ELAB-PLAB)*(ELAB+PLAB) - -*...loop over the particles in final state - DO I=3,NUP - -*...if unstable particle then smeare its mass - - IF(PMAS(pycomp(IDUP(I)),2).gt.0.) THEN - -*...transfer out-momenta to REAL*8 - DO 100 j=1,NUP - DO 100 k=1,5 - 100 PX1(j,k)=PUP(k,j) - -*...invariant mass of the cluster recoiled the Ith particle - IF(NUP.EQ.4) THEN ! 2->2 case - IF(I.eq.3) PM2=PX1(4,5) - IF(I.eq.4) PM2=PX1(3,5) - ELSE - PX = sqrt(PX1(I,1)**2+PX1(I,2)**2+(PLAB-PX1(I,3))**2) - PM2=(ELAB-PX1(I,4)-PX)*(ELAB-PX1(I,4)+PX) - IF(PM2.lt.0.) PM2=abs(PM2) - PM2=sqrt(PM2) - ENDIF - -*...boost of all momenta to partonic CMS - GAMMA = 1.d0/(sqrt(ELAB-PLAB)*sqrt(ELAB+PLAB)) - DO j=1,NUP - PX2(j,1)=PX1(j,1) - PX2(j,2)=PX1(j,2) - PX2(j,3) = GAMMA*(-(PLAB*PX1(j,4))+ELAB*PX1(j,3)) - PX2(j,4) = GAMMA*( ELAB*PX1(j,4)-PLAB*PX1(j,3)) - PX2(j,5)=PX1(j,5) - ENDDO - -*...defs for Breit-Wigner measure - PMAV = PX2(I,5) - WIDTH = PMAS(pycomp(IDUP(I)),2) - WBAND = PMAS(pycomp(IDUP(I)),3) - PMUP = WBAND+PMAV - PMDN =-WBAND+PMAV - ATL=ATAN((PMDN**2-PMAV**2)/(PMAV*WIDTH)) - ATU=ATAN((PMUP**2-PMAV**2)/(PMAV*WIDTH)) - -*...BW smearing of the mass of Ith particle - 555 PM1=sqrt(PMAV**2+PMAV*WIDTH*TAN(ATL+PYR(0)*(ATU-ATL))) - PX3(I,5)=PM1 ! new mass of Ith particle - -*...new energy of the Ith particle in partonic CMS - E1N = (PM1**2-PM2**2 + SHAT)/2.d0/SQRT(SHAT) - IF(E1N.le.PM1) goto 555 !check masses - PX3(I,4)=E1N -*...old and new energy of the recoiled cluster in partonic CMS - E2 = sqrt(SHAT)-PX2(I,4) - E2N = sqrt(SHAT)-E1N - IF(E2N.le.PM2) goto 555 !check masses - -*...old space momenta of the Ith particle and recoiled cluster in partonic CMS - PMOD=sqrt(PX2(I,1)**2+ PX2(I,2)**2+PX2(I,3)**2) -*...new space momenta of the Ith particle and recoiled cluster in partonic CMS - PMODN=sqrt(E1N-PM1)*sqrt(E1N+PM1) -*...new space components of the Ith momentum in partonic CMS via rescaling - DO k=1,3 - PXX(I,k)=PX2(I,k)/PMOD - PX3(I,k)=PXX(I,k)*PMODN - ENDDO - -*...new momentum of the recoiled particle in 2->2 case - IF(NUP.eq.4) THEN - IF(I.eq.3) I2=4 - IF(I.eq.4) I2=3 - PX3(I2,1)=-PX3(I,1) - PX3(I2,2)=-PX3(I,2) - PX3(I2,3)=-PX3(I,3) - PX3(I2,4)= E2N - PX3(I2,5)= PM2 - GOTO 333 - ENDIF - -*...new momenta for other out particles (neq Ith) - GAMMA = 1.d0/sqrt((E2-PMOD)*(E2N+PMODN)) - & *1.d0/sqrt((E2+PMOD)*(E2N-PMODN)) - DO j=3,NUP - IF(j.ne.I) then - PJL=-(PX2(j,1)*PXX(I,1)+PX2(j,2)*PXX(I,2)+PX2(j,3)*PXX(I,3)) - PJLN=GAMMA*((-(E2N*PMOD-E2*PMODN))*PX2(j,4) - & +(E2*E2N-PMOD*PMODN)*PJL) - PX3(j,4)=GAMMA*((E2*E2N-PMOD*PMODN)*PX2(j,4) - & -(E2N*PMOD-E2*PMODN)*PJL) - PX3(j,1)=PX2(j,1)-(PJLN-PJL)*PXX(I,1) - PX3(j,2)=PX2(j,2)-(PJLN-PJL)*PXX(I,2) - PX3(j,3)=PX2(j,3)-(PJLN-PJL)*PXX(I,3) - PX3(j,5)=PX2(j,5) - ENDIF - ENDDO - - 333 CONTINUE -*...boost from partonic CMS to the lab frame - GAMMA = 1.d0/(sqrt(ELAB-PLAB)*sqrt(ELAB+PLAB)) - DO j=3,NUP - PUP(1,j)=PX3(j,1) - PUP(2,j)=PX3(j,2) - PUP(3,j) = GAMMA*(PLAB*PX3(j,4)+ELAB*PX3(j,3)) - PUP(4,j) = GAMMA*(ELAB*PX3(j,4)+PLAB*PX3(j,3)) - PUP(5,j)=PX3(j,5) - ENDDO - - ENDIF ! IF(PMAS(pycomp(IDUP(I)),2).gt.0.) - ENDDO ! DO I=3,NUP - - RETURN - END diff --git a/Generators/EmbeddedTrackGenerator/CMakeLists.txt b/Generators/EmbeddedTrackGenerator/CMakeLists.txt deleted file mode 100644 index 277fbb9206247730ab4519ef9aad5848078cb64d..0000000000000000000000000000000000000000 --- a/Generators/EmbeddedTrackGenerator/CMakeLists.txt +++ /dev/null @@ -1,32 +0,0 @@ -################################################################################ -# Package: EmbeddedTrackGenerator -################################################################################ - -# Declare the package name: -atlas_subdir( EmbeddedTrackGenerator ) - -# Declare the package's dependencies: -atlas_depends_on_subdirs( PUBLIC - Control/PileUpTools - GaudiKernel - Generators/GeneratorModules - PRIVATE - Event/EventInfo - Reconstruction/Jet/JetEvent - Tracking/TrkEvent/VxVertex ) - -# External dependencies: -find_package( CLHEP ) -find_package( HepPDT ) - -# Component(s) in the package: -atlas_add_component( EmbeddedTrackGenerator - src/*.cxx - src/components/*.cxx - INCLUDE_DIRS ${HEPPDT_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS} - LINK_LIBRARIES ${HEPPDT_LIBRARIES} ${CLHEP_LIBRARIES} PileUpToolsLib GaudiKernel GeneratorModulesLib EventInfo JetEvent VxVertex ) - -# Install files from the package: -atlas_install_headers( EmbeddedTrackGenerator ) -atlas_install_joboptions( share/*.py ) - diff --git a/Generators/EmbeddedTrackGenerator/EmbeddedTrackGenerator/EmbeddedGeneratorCommon.h b/Generators/EmbeddedTrackGenerator/EmbeddedTrackGenerator/EmbeddedGeneratorCommon.h deleted file mode 100644 index 7917b558872ca89625fbceb39c7131346e1f3647..0000000000000000000000000000000000000000 --- a/Generators/EmbeddedTrackGenerator/EmbeddedTrackGenerator/EmbeddedGeneratorCommon.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef EMBEDDEDGENERATORCOMMON_H -#define EMBEDDEDGENERATORCOMMON_H - -#include "GeneratorModules/GenModule.h" -#include "PileUpTools/PileUpStream.h" - -class IEvtSelector; - - -/// Common code for generators that need reconstructed event data inputs. -/// -/// @author Andrei Gaponenko <andrei.gaponenko@cern.ch>, 2006-2008 -class EmbeddedGeneratorCommon : public GenModule { -public: - - EmbeddedGeneratorCommon(const std::string& name, ISvcLocator* pSvcLocator); - virtual ~EmbeddedGeneratorCommon() {} - - /// This method is called by GenModule. - /// Calls embeddedGenInitialize(). - virtual StatusCode genInitialize(); - - /// Initialization of the child class. - virtual StatusCode embeddedGenInitialize() = 0; - - /// This method is called by GenModule. - /// It preloads the input data event and calls - /// fillEmbeddedEvent(). - virtual StatusCode fillEvt(HepMC::GenEvent* evt); - - /// Actual generation happens here. - virtual StatusCode embeddedFillEvt(HepMC::GenEvent *evt) = 0; - -protected: - - PileUpStream m_pileUpStream; - ServiceHandle<IEvtSelector> m_pileUpSelector; - -}; - -#endif /* EMBEDDEDGENERATORCOMMON_H*/ diff --git a/Generators/EmbeddedTrackGenerator/EmbeddedTrackGenerator/EmbeddedTrackGenerator.h b/Generators/EmbeddedTrackGenerator/EmbeddedTrackGenerator/EmbeddedTrackGenerator.h deleted file mode 100644 index afdd43f162a16f0ec4e8958f13dda3b008fd97b8..0000000000000000000000000000000000000000 --- a/Generators/EmbeddedTrackGenerator/EmbeddedTrackGenerator/EmbeddedTrackGenerator.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef EMBEDDEDTRACKGENERATOR_H -#define EMBEDDEDTRACKGENERATOR_H - -#include "EmbeddedTrackGenerator/EmbeddedGeneratorCommon.h" -#include "EmbeddedTrackGenerator/GenPDG_Property.h" - -/// EmbeddedTrackGenerator generates particles "embedded" in -/// reconstructed jets. The jets are taken from an AOD file. -/// -/// @author Andrei Gaponenko <andrei.gaponenko@cern.ch>, 2006-2008 -/// - -class EmbeddedTrackGenerator : public EmbeddedGeneratorCommon, - private GenPDG_Property -{ -public: - - EmbeddedTrackGenerator(const std::string& name, ISvcLocator* pSvcLocator); - virtual StatusCode embeddedGenInitialize(); - virtual StatusCode embeddedFillEvt(HepMC::GenEvent* evt); - -private: - - /// @name Settable properties - //@{ - - /// StoreGate key for the jet collection - std::string m_jetName; - - /// Maximum number of particles in an event. The actual number will be min(m_numberOfParticles, num_jets) - unsigned int m_maxParticles; - - /// Momentum of generated particles - double m_ptot; - - /// deltaR between the jet axis and the corresponding particle. - /// Particle direction is sampled from a flat 2D distribution in (eta,phi). - double m_dR_max; - - /// maximum displacement of generated particle vertex from the origin of its respective jet - flat 3D distribution. - double m_displacementMax; - - //@} - -}; - -#endif /* EMBEDDEDTRACKGENERATOR_H*/ diff --git a/Generators/EmbeddedTrackGenerator/EmbeddedTrackGenerator/GenPDG_Property.h b/Generators/EmbeddedTrackGenerator/EmbeddedTrackGenerator/GenPDG_Property.h deleted file mode 100644 index ffe94e92200198d90630c78b58aa6dcef3a79e95..0000000000000000000000000000000000000000 --- a/Generators/EmbeddedTrackGenerator/EmbeddedTrackGenerator/GenPDG_Property.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef GENPDG_PROPERTY_H -#define GENPDG_PROPERTY_H - -#include "GaudiKernel/StatusCode.h" -#include "GaudiKernel/Algorithm.h" - -#include <utility> - -namespace HepPDT { class ParticleDataTable; } -namespace CLHEP { class HepRandomEngine; } - -/// An "admixture" class handling particle type configuration. -/// -/// @author Andrei Gaponenko <andrei.gaponenko@cern.ch>, 2008 -/// - -class GenPDG_Property { -public: - template<class ParentAlg> GenPDG_Property(ParentAlg *); - - StatusCode initialize(const HepPDT::ParticleDataTable*); - - /// returns (PDG ID, mass) pair - typedef std::pair<int,double> ParticleDescription; - ParticleDescription getParticle(CLHEP::HepRandomEngine* ) const; - - -private: - - Algorithm* m_parent; - - /// PDG ID, or absolute value of it, of generated particles. See also m_generateAntiParticles. - int m_pdg_id; - - /// False means use exactly the given PDG ID, true means generate both - /// particles and antiparticles. - bool m_generateAntiParticles; - - //---------------------------------------------------------------- - /// cached value - double m_mass; - -}; - - -//-------------------------------------------------------------------------- - - -template<class ParentAlg> -GenPDG_Property::GenPDG_Property(ParentAlg *parent) - : m_parent(parent) -{ - parent->declareProperty("pdg_id", m_pdg_id = 13); - parent->declareProperty("generateAntiParticles", m_generateAntiParticles = true); -} - -#endif /*GENPDG_PROPERTY_H*/ diff --git a/Generators/EmbeddedTrackGenerator/EmbeddedTrackGenerator/VertexedTrackGenerator.h b/Generators/EmbeddedTrackGenerator/EmbeddedTrackGenerator/VertexedTrackGenerator.h deleted file mode 100644 index b0f530bbfeb5532f45e02ac7e9c54a24c754f989..0000000000000000000000000000000000000000 --- a/Generators/EmbeddedTrackGenerator/EmbeddedTrackGenerator/VertexedTrackGenerator.h +++ /dev/null @@ -1,69 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef VERTEXEDTRACKGENERATOR_H -#define VERTEXEDTRACKGENERATOR_H - -#include "EmbeddedTrackGenerator/EmbeddedGeneratorCommon.h" -#include "EmbeddedTrackGenerator/GenPDG_Property.h" - -/** -@class VertexedTrackGenerator - -VertexedTrackGenerator generates particles originating at a reconstructed vertex position, -which is taken from an AOD file. - -@author Andrei Gaponenko <andrei.gaponenko@cern.ch>, 2006-2008 - -*/ - -class VertexedTrackGenerator; - -class VertexedTrackGenerator: public EmbeddedGeneratorCommon, - private GenPDG_Property -{ -public: - - VertexedTrackGenerator(const std::string& name, ISvcLocator* pSvcLocator); - virtual StatusCode embeddedGenInitialize(); - virtual StatusCode embeddedFillEvt(HepMC::GenEvent* evt); - -private: - - /// @name Settable properties - //@{ - - /// StoreGate key for the vertex collection - std::string m_vertexCollectionName; - - /// Number of particles to throw for each reconstructed vertex. - unsigned int m_particlesPerVertex; - - /// Maximum number of vertexes to use in an event. - unsigned int m_maxVertexes; - - /// Momentum of generated particles is flat between m_ptMin and m_ptMax. - /// Set m_ptMin==m_ptMax to get a specific pt value. - double m_ptMin; - double m_ptMax; - - /// Pseudorapidity of generated particles is flat between m_etaMin and m_etaMax. - /// Set m_etaMin==m_etaMax to get a specific eta value. - double m_etaMin; - double m_etaMax; - - /// Azimuthal angle of generated particles is flat between m_phiMin - /// and m_phiMax. Set m_phiMin==m_phiMax to get a specific eta - /// value. The default range is (-pi, pi). (The proper thing would - /// be e.g. [-pi,pi) but we use HepRandomEngine that always excludes - /// endpoints of a range...) - double m_phiMin; - double m_phiMax; - - //@} - -}; - - -#endif /* VERTEXEDTRACKGENERATOR_H*/ diff --git a/Generators/EmbeddedTrackGenerator/doc/packagedoc.h b/Generators/EmbeddedTrackGenerator/doc/packagedoc.h deleted file mode 100644 index 07cac51173a5c438a7aa601b89fd1a1746187948..0000000000000000000000000000000000000000 --- a/Generators/EmbeddedTrackGenerator/doc/packagedoc.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -/** -@page EmbeddedTrackGenerator_page EmbeddedTrackGenerator - -@author Andrei Gaponenko <andrei.gaponenko@cern.ch> - -EmbeddedTrackGenerator package provides provides generators that -produce single particles using reconstructed quantities from real data -events as the reference. The generated events are intented to be -passed through GEANT simulation and overlayed with the original data -events. - -The generators use a standard ATLAS POOL file (for example an AOD -file) for input event data. - -For more details see individual generator pages of -EmbeddedTrackGenerator and VertexedTrackGenerator. - - - -*/ diff --git a/Generators/EmbeddedTrackGenerator/share/EmbeddedGeneratorCommon.py b/Generators/EmbeddedTrackGenerator/share/EmbeddedGeneratorCommon.py deleted file mode 100644 index fd306098f9d7a82ab8555ee75111fb1396a840d4..0000000000000000000000000000000000000000 --- a/Generators/EmbeddedTrackGenerator/share/EmbeddedGeneratorCommon.py +++ /dev/null @@ -1,64 +0,0 @@ -# Code shared among different embedded generator job options. -# -# Author: Andrei Gaponenko - -import AthenaCommon.AtlasUnixGeneratorJob - -from AthenaCommon.AppMgr import theApp -theApp.EvtMax = EvtMax - -from AthenaCommon.AppMgr import ServiceMgr -ServiceMgr.EventSelector.RunNumber = RunNumber -ServiceMgr.EventSelector.FirstEvent = FirstEvent - -import AthenaPoolCnvSvc.AthenaPool - -from PartPropSvc.PartPropSvcConf import * - -#================================================================ -# Add an extra EventSelector to read in real data events - -from EventSelectorAthenaPool.EventSelectorAthenaPoolConf import EventSelectorAthenaPool -InputDataEventSelector = EventSelectorAthenaPool("InputDataEventSelector") -InputDataEventSelector.InputCollections = InputCollections -InputDataEventSelector.SkipEvents = 0; - -ServiceMgr += InputDataEventSelector - -#----------------------------------------------------------------= -# And a separate event store for the custom selector -from StoreGate.StoreGateConf import StoreGateSvc -sg2 = StoreGateSvc("InputData_Event_SG") -#sg2.Dump = True -#sg2.OutputLevel = VERBOSE - -#================================================================ -# Output - -from OutputStreamAthenaPool.CreateOutputStreams import createOutputStream -outStream = createOutputStream( "EmbeddedGeneratorOut" ) -outStream.Store = ServiceMgr.StoreGateSvc -outStream.OutputFile = OutputFile -outStream.ItemList += [ "McEventCollection#*" ] - -#================================================================ -from AthenaCommon.AlgSequence import AlgSequence -topSeq = AlgSequence() - -from TruthExamples.TruthExamplesConf import PrintMC -topSeq += PrintMC() -topSeq.PrintMC.FirstEvent = FirstEvent -topSeq.PrintMC.LastEvent = FirstEvent+10 - -#================================================================ -# Set log level threshold (2=DEBUG, 3=INFO, 4=WARNING, 5=ERROR, 6=FATAL ) -#-------------------------------------------------------------- -# ServiceMgr.MessageSvc.infoLimit = 100000 -ServiceMgr.MessageSvc.Format = "% F%50W%S%7W%R%T %0W%M" -ServiceMgr.MessageSvc.OutputLevel = INFO - -#============================================================== -print "At the end of the jO script: algorithms =\n", topSeq -print "\nAt the end of the jO script: services =\n", ServiceMgr -#============================================================== -# EOF diff --git a/Generators/EmbeddedTrackGenerator/share/jobOptions_embeddedTrackGeneration.py b/Generators/EmbeddedTrackGenerator/share/jobOptions_embeddedTrackGeneration.py deleted file mode 100644 index f4c02a1a219894bd4c18832ea2f7b20ff8ce14ea..0000000000000000000000000000000000000000 --- a/Generators/EmbeddedTrackGenerator/share/jobOptions_embeddedTrackGeneration.py +++ /dev/null @@ -1,52 +0,0 @@ -# EmbeddedTrackGenerator generates particles "embedded" in reconstructed jets. -# The jets are taken from an AOD file. -# -# One can use something like -# -# athena -c "EvtMax=5; OutputFile='test.pool.root'" EmbeddedTrackGenerator/jobOptions_embeddedTrackGeneration.py -# -# to set a few things that usually change often. -# -# Author: Andrei Gaponenko - -from AthenaCommon.SystemOfUnits import MeV,GeV - -from EmbeddedTrackGenerator.EmbeddedTrackGeneratorConf import * -embeddedGenerator = EmbeddedTrackGenerator() -#embeddedGenerator.OutputLevel = VERBOSE -#embeddedGenerator.RandomSeed = 9687 -#embeddedGenerator.pdg_id = 13 -#vertexedGenerator.generateAntiParticles = True -#embeddedGenerator.ptot = 10.*GeV -#embeddedGenerator.dR_max = 0.5 - - -if 'InputCollections' not in dir(): - InputCollections = [ "rfio:/castor/cern.ch/grid/atlas/tier0/atlasmcdisk/valid1/AOD/valid1.005011.J2_pythia_jetjet.recon.AOD.e322_s412_r421_tid022153/AOD.022153._00001.pool.root.1" ] - -# EvtMax+SkipEvents should not exceed the number of events in InputCollections. -if 'EvtMax' not in dir(): - EvtMax = 15 - -# The number of events from the data input file to skip -if 'SkipEvents' not in dir(): - SkipEvents = 0 - -# The number to assign to the first generated event -if 'FirstEvent' not in dir(): - FirstEvent = 1000 - -if 'RunNumber' not in dir(): - RunNumber = 6 - -if 'OutputFile' not in dir(): - OutputFile = "EmbeddedTracks.pool.root" - -#============================================================== -from AthenaCommon.AlgSequence import AlgSequence -topSeq = AlgSequence() -topSeq += embeddedGenerator - -include ("EmbeddedTrackGenerator/EmbeddedGeneratorCommon.py") - -# EOF diff --git a/Generators/EmbeddedTrackGenerator/share/jobOptions_vertexedTrackGeneration.py b/Generators/EmbeddedTrackGenerator/share/jobOptions_vertexedTrackGeneration.py deleted file mode 100644 index e24bbd4b50c4aec858cfbed39e4c0ce6f84de361..0000000000000000000000000000000000000000 --- a/Generators/EmbeddedTrackGenerator/share/jobOptions_vertexedTrackGeneration.py +++ /dev/null @@ -1,51 +0,0 @@ -# VertexedTrackGenerator generates particles originating at reconstructed vertex(es) position(s). -# The input vertexes are taken from an AOD file. -# -# One can use something like -# -# athena -c "EvtMax=5; OutputFile='test.pool.root'" EmbeddedTrackGenerator/jobOptions_vertexedTrackGeneration.py -# -# to set a few things that usually change often. -# -# Author: Andrei Gaponenko - -from AthenaCommon.SystemOfUnits import MeV,GeV - -from EmbeddedTrackGenerator.EmbeddedTrackGeneratorConf import VertexedTrackGenerator -vertexedGenerator = VertexedTrackGenerator() -#vertexedGenerator.OutputLevel = VERBOSE -#vertexedGenerator.RandomSeed = 9688 -#vertexedGenerator.pdg_id = 13 -#vertexedGenerator.generateAntiParticles = True -#vertexedGenerator.ptMin = 500*MeV -#vertexedGenerator.ptMax = 15*GeV - -if 'InputCollections' not in dir(): - InputCollections = [ "rfio:/castor/cern.ch/user/a/andr/ovl/valid1.005001.pythia_minbias.recon.AOD.e322_s412_r421_tid022144/AOD.022144._00001.pool.root.1" ] - -# EvtMax+SkipEvents should not exceed the number of events in InputCollections. -if 'EvtMax' not in dir(): - EvtMax = 15 - -# The number of events from the data input file to skip -if 'SkipEvents' not in dir(): - SkipEvents = 0 - -# The number to assign to the first generated event -if 'FirstEvent' not in dir(): - FirstEvent = 1000 - -if 'RunNumber' not in dir(): - RunNumber = 5 - -if 'OutputFile' not in dir(): - OutputFile = "VertexedTracks.pool.root" - -#============================================================== -from AthenaCommon.AlgSequence import AlgSequence -topSeq = AlgSequence() -topSeq += vertexedGenerator - -include ("EmbeddedTrackGenerator/EmbeddedGeneratorCommon.py") - -# EOF diff --git a/Generators/EmbeddedTrackGenerator/src/EmbeddedGeneratorCommon.cxx b/Generators/EmbeddedTrackGenerator/src/EmbeddedGeneratorCommon.cxx deleted file mode 100644 index 37a57fc28b680a8defcc8feb0554e85b6cd4aed8..0000000000000000000000000000000000000000 --- a/Generators/EmbeddedTrackGenerator/src/EmbeddedGeneratorCommon.cxx +++ /dev/null @@ -1,80 +0,0 @@ -/* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration -*/ - -// Common code for generators that need reconstructed event data inputs. -// -// Andrei Gaponenko <andrei.gaponenko@cern.ch>, 2006-2008 - -#include "EmbeddedTrackGenerator/EmbeddedGeneratorCommon.h" - -#include "GaudiKernel/IEvtSelector.h" -#include "EventInfo/EventInfo.h" -#include "EventInfo/EventID.h" - - -//-------------------------------------------------------------------------- - - -EmbeddedGeneratorCommon::EmbeddedGeneratorCommon(const std::string& name, ISvcLocator* pSvcLocator) - : GenModule(name, pSvcLocator), - m_pileUpSelector("InputDataEventSelector", name) -{ - // -} - - -//-------------------------------------------------------------------------- - - -StatusCode EmbeddedGeneratorCommon::genInitialize() { - - evtStore()->setProxyProviderSvc(0); - - if (m_pileUpSelector.retrieve() != StatusCode::SUCCESS) { - ATH_MSG_FATAL("genInitialize(): could not get eventSelector!"); - return StatusCode::FAILURE; - } - ATH_MSG_INFO("genInitialize(): got InputDataEventSelector!"); - - m_pileUpStream = PileUpStream("InputData_Event", serviceLocator(), &*m_pileUpSelector); - - bool READNEXTEVENT(false); - if (!m_pileUpStream.setupStore(READNEXTEVENT)) { - ATH_MSG_ERROR("Cannot setup m_pileUpStream store "); - return StatusCode::FAILURE; - } - - return embeddedGenInitialize(); -} - - -//--------------------------------------------------------------------------- - - -StatusCode EmbeddedGeneratorCommon::fillEvt(HepMC::GenEvent* genEvt) { - if (! m_pileUpStream.nextEventPre() ) { - ATH_MSG_FATAL("Could not load next data event. Not enough events on input?"); - return StatusCode::FAILURE; - } - - const EventInfo* pInputEvent(0); - m_pileUpStream.store().retrieve(pInputEvent).ignore(); - if (pInputEvent) { - ATH_MSG_DEBUG("Event from file: " << *pInputEvent->event_ID()); - } else { - ATH_MSG_DEBUG("Could not get EventInfo of the input event."); - } - - const EventInfo* pOutputEvent(0); - evtStore()->retrieve(pOutputEvent).ignore(); - if (pOutputEvent) { - ATH_MSG_DEBUG("New event: "<< *pOutputEvent->event_ID()); - } else { - ATH_MSG_DEBUG("Could not get EventInfo of the event being generated."); - return StatusCode::FAILURE; - } - - genEvt->set_event_number(pOutputEvent->event_ID()->event_number()); - return embeddedFillEvt(genEvt); -} diff --git a/Generators/EmbeddedTrackGenerator/src/EmbeddedTrackGenerator.cxx b/Generators/EmbeddedTrackGenerator/src/EmbeddedTrackGenerator.cxx deleted file mode 100644 index 18101353b2b4264b021f35b2975eeeb1bf135a6e..0000000000000000000000000000000000000000 --- a/Generators/EmbeddedTrackGenerator/src/EmbeddedTrackGenerator.cxx +++ /dev/null @@ -1,129 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// EmbeddedTrackGenerator generates particles "embedded" in reconstructed jets. -// The jets are taken from an AOD file. -// -// Andrei Gaponenko <andrei.gaponenko@cern.ch>, 2006-2008 -// - -#include "EmbeddedTrackGenerator/EmbeddedTrackGenerator.h" - -#include "CLHEP/Vector/LorentzVector.h" -#include "CLHEP/Vector/ThreeVector.h" - -#include "CLHEP/Units/SystemOfUnits.h" - -#include "HepPDT/ParticleData.hh" -#include "HepPDT/ParticleDataTable.hh" - -#include "JetEvent/JetCollection.h" -#include "JetEvent/Jet.h" - -#include "VxVertex/RecVertex.h" - -#include <cmath> -#include <cstdio> - -#include "GaudiKernel/IEvtSelector.h" -#include "EventInfo/EventInfo.h" -#include "EventInfo/EventID.h" - - -//-------------------------------------------------------------------------- - - -EmbeddedTrackGenerator::EmbeddedTrackGenerator(const std::string& name, ISvcLocator* pSvcLocator) - : EmbeddedGeneratorCommon(name,pSvcLocator), - GenPDG_Property(this) -{ - declareProperty("jetCollectionName", m_jetName = "Cone4H1TowerJets"); - declareProperty("maxParticles", m_maxParticles = 1); - declareProperty("ptot", m_ptot = 10.*CLHEP::GeV); - declareProperty("dR_max", m_dR_max = 0.4); - declareProperty("displacement_max", m_displacementMax = 0.); -} - - -//-------------------------------------------------------------------------- - - -StatusCode EmbeddedTrackGenerator::embeddedGenInitialize() { - return GenPDG_Property::initialize(&particleTable()); -} - - -//--------------------------------------------------------------------------- - - -StatusCode EmbeddedTrackGenerator::embeddedFillEvt(HepMC::GenEvent* a_event) { - const JetCollection* jets(0); - if (! (m_pileUpStream.store().retrieve(jets, m_jetName).isSuccess()) ) { - ATH_MSG_ERROR("Could not get jet container"); - return StatusCode::FAILURE; - } - ATH_MSG_DEBUG("Got " << jets->size() << " jets"); - - unsigned num_generated = 0; - for (JetCollection::const_iterator i=jets->begin(); - (i!=jets->end()) && (num_generated < m_maxParticles); - ++i, ++num_generated) { - - const Jet *jet = *i; - if (jet) { - const Trk::RecVertex *v = jet->origin(); - ATH_MSG_VERBOSE("jet: "<< (jet->hlv()) << (v ? ", YES origin " : ", NO origin ") ); - if (v) { - ParticleDescription desc = getParticle(&randomEngine()); - - // Generate vertex smearing offsets - // CLHEP::Hep3Vector dr; - Amg::Vector3D dr; - do { - double rnd[3]; - randomEngine().flatArray(3, rnd); - for(unsigned i = 0; i < 3; ++i) { - dr[i] = 2*m_displacementMax*(rnd[i]-0.5); - } - } while( std::pow(m_displacementMax,2) < dr.mag2() ); //m_displacementMax==0 is safe here - Amg::Vector3D drv; - drv=dr+v->position(); - HepMC::GenVertex* vertex(new HepMC::GenVertex(CLHEP::HepLorentzVector(drv(0),drv(1),drv(2), 0.) )); - - // Smear the direction. - double eta0 = jet->eta(); - double phi0 = jet->phi(); - - double eta, phi; - do { - double rnd[2]; - randomEngine().flatArray(2, rnd); - eta = eta0 + m_dR_max * 2 * (rnd[0]-0.5); - phi = phi0 + m_dR_max * 2 * (rnd[1]-0.5); - } while( std::pow(m_dR_max, 2) < std::pow(eta-eta0, 2) + std::pow(phi-phi0, 2) ); - - double energy = std::sqrt(std::pow(m_ptot,2) + std::pow(desc.second,2)); - - CLHEP::HepLorentzVector momentum; - momentum.setREtaPhi(m_ptot, eta, phi); - momentum.setE(energy); - ATH_MSG_DEBUG("momentum = " << momentum); - - HepMC::GenParticle* particle = new HepMC::GenParticle(momentum, desc.first, 1); - - a_event->add_vertex(vertex); - vertex->add_particle_out(particle); - } - else { - ATH_MSG_WARNING("No origin info for the jet, skipping."); - } - - } - else { - ATH_MSG_WARNING("Invalid entry in the jet container!"); - } - } // end loop over jets - - return StatusCode::SUCCESS; -} diff --git a/Generators/EmbeddedTrackGenerator/src/GenPDG_Property.cxx b/Generators/EmbeddedTrackGenerator/src/GenPDG_Property.cxx deleted file mode 100644 index 91044065445f9f5e9ee5a6fb3b3e3209909d67ad..0000000000000000000000000000000000000000 --- a/Generators/EmbeddedTrackGenerator/src/GenPDG_Property.cxx +++ /dev/null @@ -1,41 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// Andrei Gaponenko <andrei.gaponenko@cern.ch>, 2008 - -#include "EmbeddedTrackGenerator/GenPDG_Property.h" -#include "CLHEP/Random/RandomEngine.h" - -#include "HepPDT/ParticleData.hh" -#include "HepPDT/ParticleDataTable.hh" - -#include <cmath> - - -//================================================================ - - -StatusCode GenPDG_Property::initialize(const HepPDT::ParticleDataTable* particleTable) { - MsgStream log(m_parent->msgSvc(), m_parent->name() ); - const HepPDT::ParticleData* particle_data = particleTable->particle(HepPDT::ParticleID(std::abs( m_pdg_id ))); - if (!particle_data) { - log << MSG::FATAL << "GenPDG_Property::initialize(): can't get data for particle with pdg_id=" << std::abs(m_pdg_id) << endmsg; - return StatusCode::FAILURE; - } - - m_mass = particle_data->mass().value(); - log << MSG::DEBUG << "GenPDG_Property::initialize(): got mass=" << m_mass << " for pdg_id=" << m_pdg_id << endmsg; - - return StatusCode::SUCCESS; -} - - -//================================================================ - - -GenPDG_Property::ParticleDescription -GenPDG_Property::getParticle(CLHEP::HepRandomEngine* rndEng) const { - int id = m_generateAntiParticles && (rndEng->flat() < 0.5) ? -m_pdg_id : m_pdg_id; - return std::make_pair(id, m_mass); -} diff --git a/Generators/EmbeddedTrackGenerator/src/VertexedTrackGenerator.cxx b/Generators/EmbeddedTrackGenerator/src/VertexedTrackGenerator.cxx deleted file mode 100644 index 2fa99c0360faaebb67257d46927e15efe0b52cd0..0000000000000000000000000000000000000000 --- a/Generators/EmbeddedTrackGenerator/src/VertexedTrackGenerator.cxx +++ /dev/null @@ -1,114 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// VertexedTrackGenerator generates particles "vertexed" in reconstructed jets. -// The jets are taken from an AOD file. -// -// Andrei Gaponenko <andrei.gaponenko@cern.ch>, 2006-2008 -// - -#include "EmbeddedTrackGenerator/VertexedTrackGenerator.h" - -#include "CLHEP/Vector/LorentzVector.h" -#include "CLHEP/Vector/ThreeVector.h" -#include "CLHEP/Units/SystemOfUnits.h" - -#include "HepPDT/ParticleData.hh" -#include "HepPDT/ParticleDataTable.hh" - -#include "VxVertex/RecVertex.h" -#include "VxVertex/VxCandidate.h" -#include "VxVertex/VxContainer.h" - -#include <cmath> -#include <cstdio> - -#include "GaudiKernel/IEvtSelector.h" -#include "EventInfo/EventInfo.h" -#include "EventInfo/EventID.h" - - -//-------------------------------------------------------------------------- - - -VertexedTrackGenerator::VertexedTrackGenerator(const std::string& name, ISvcLocator* pSvcLocator) - : EmbeddedGeneratorCommon(name,pSvcLocator), - GenPDG_Property(this) -{ - declareProperty("vertexCollectionName", m_vertexCollectionName = "VxPrimaryCandidate"); - declareProperty("particlesPerVertex", m_particlesPerVertex = 1); - declareProperty("maxVertexes", m_maxVertexes = 1); - - declareProperty("ptMin", m_ptMin = 10.*CLHEP::GeV); - declareProperty("ptMax", m_ptMax = 10.*CLHEP::GeV); - - declareProperty("etaMin", m_etaMin = -3.); - declareProperty("etaMax", m_etaMax = +3.); - - declareProperty("phiMin", m_phiMin = -M_PI); - declareProperty("phiMax", m_phiMax = +M_PI); -} - - -//-------------------------------------------------------------------------- - - -StatusCode VertexedTrackGenerator::embeddedGenInitialize() { - return GenPDG_Property::initialize(&particleTable()); -} - - -//--------------------------------------------------------------------------- - - -StatusCode VertexedTrackGenerator::embeddedFillEvt(HepMC::GenEvent* a_event) { - const VxContainer* vertexes(0); - if (! (m_pileUpStream.store().retrieve(vertexes, m_vertexCollectionName).isSuccess()) ) { - ATH_MSG_ERROR("Could not get jet container"); - return StatusCode::FAILURE; - } - ATH_MSG_DEBUG("Got " << vertexes->size() << " vertices"); - - for (unsigned ivertex = 0; ivertex < std::min(static_cast<size_t>(m_maxVertexes), vertexes->size()); ++ivertex) { - // CLHEP::Hep3Vector pos = vertexes->at(ivertex)->recVertex().position(); - Eigen::Vector3d pos = vertexes->at(ivertex)->recVertex().position(); - ATH_MSG_VERBOSE("ivertex = " << ivertex << ", pos = " << pos); - // HepMC::GenVertex* vertex(new HepMC::GenVertex(CLHEP::HepLorentzVector(pos, 0.))); - HepMC::GenVertex* vertex(new HepMC::GenVertex(CLHEP::HepLorentzVector(pos(0),pos(1),pos(2), 0.))); - - - ParticleDescription desc = getParticle(&randomEngine()); - ATH_MSG_VERBOSE("PDG ID = " << desc.first << ", mass = " << desc.second); - - double rnd[3]; - randomEngine().flatArray(3, rnd); - - double pt = m_ptMin + rnd[0] * (m_ptMax - m_ptMin); - double eta = m_etaMin + rnd[1] * (m_etaMax - m_etaMin); - double phi = m_phiMin + rnd[2] * (m_phiMax - m_phiMin); - - ATH_MSG_VERBOSE("pt = " << pt << ", eta = " << eta << ", phi = " << phi); - - // CLHEP's setRhoPhiEta() computes pz = pt/tan(theta) that may be - // problematic at eta=0. We'll use a safer way that does not rely - // on FPE settings, to allow division by infinity. - double theta(2 * atan ( exp (-eta) )); - - double ptot2 = std::pow(pt,2) * (1. + std::pow(cos(theta)/sin(theta), 2) ); - - double energy = std::sqrt(ptot2 + std::pow(desc.second,2)); - - CLHEP::HepLorentzVector momentum; - momentum.setREtaPhi(sqrt(ptot2), eta, phi); - momentum.setE(energy); - ATH_MSG_VERBOSE("Momentum = " << momentum); - - HepMC::GenParticle* particle = new HepMC::GenParticle(momentum, desc.first, 1); - a_event->add_vertex(vertex); - vertex->add_particle_out(particle); - - } // end loop over vertexes - - return StatusCode::SUCCESS; -} diff --git a/Generators/EmbeddedTrackGenerator/src/components/EmbeddedTrackGenerator_entries.cxx b/Generators/EmbeddedTrackGenerator/src/components/EmbeddedTrackGenerator_entries.cxx deleted file mode 100644 index 767d8a768760d1ce041df014bdb08db2a2ed12bd..0000000000000000000000000000000000000000 --- a/Generators/EmbeddedTrackGenerator/src/components/EmbeddedTrackGenerator_entries.cxx +++ /dev/null @@ -1,7 +0,0 @@ -#include "EmbeddedTrackGenerator/EmbeddedTrackGenerator.h" -#include "EmbeddedTrackGenerator/VertexedTrackGenerator.h" - -DECLARE_COMPONENT( EmbeddedTrackGenerator ) -DECLARE_COMPONENT( VertexedTrackGenerator ) - - diff --git a/Generators/ExoGraviton_i/CMakeLists.txt b/Generators/ExoGraviton_i/CMakeLists.txt deleted file mode 100644 index 9badaa6792809b54065b526d24c3f5f8d22202a7..0000000000000000000000000000000000000000 --- a/Generators/ExoGraviton_i/CMakeLists.txt +++ /dev/null @@ -1,23 +0,0 @@ -################################################################################ -# Package: ExoGraviton_i -################################################################################ - -# Declare the package name: -atlas_subdir( ExoGraviton_i ) - -# External dependencies: -find_package( Pythia6 ) - -# tag allowUndefined was not recognized in automatic conversion in cmt2cmake - -# Component(s) in the package: -atlas_add_library( ExoGraviton_i - src/*.cxx - src/*.F - PUBLIC_HEADERS ExoGraviton_i - PRIVATE_INCLUDE_DIRS ${PYTHIA6_INCLUDE_DIRS} - PRIVATE_LINK_LIBRARIES ${PYTHIA6_LIBRARIES} ) - -# Install files from the package: -atlas_install_joboptions( share/*.py ) - diff --git a/Generators/ExoGraviton_i/ExoGraviton_i/ExoGraviton.h b/Generators/ExoGraviton_i/ExoGraviton_i/ExoGraviton.h deleted file mode 100644 index c244956969a0ec337adb80d10454ae124ba9f5a4..0000000000000000000000000000000000000000 --- a/Generators/ExoGraviton_i/ExoGraviton_i/ExoGraviton.h +++ /dev/null @@ -1,19 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// ExoGraviton.h -// -// Reyhaneh Rezvani <reyhaneh.rezvani@cern.ch> 13-03-2009 -// -//a set of c++ functions that act as an interface between -//Athenas C++ Pythia and ExoGraviton -//(a FORTRAN program for simulation of "Real Graviton Emission") - -#ifndef EXOGRAVITON_H -#define EXOGRAVITON_H - -extern void WriteGravParam(int,int,double); -extern "C" void readgravparamint_(int*,int*); -extern "C" void readgravparamdbl_(int*,double*); -#endif diff --git a/Generators/ExoGraviton_i/doc/ReadMe b/Generators/ExoGraviton_i/doc/ReadMe deleted file mode 100644 index e44bf621e335b95e157bd64dea6ecc7c77cf5c7d..0000000000000000000000000000000000000000 --- a/Generators/ExoGraviton_i/doc/ReadMe +++ /dev/null @@ -1,2 +0,0 @@ -For more information, please see: ATL-COM-PHYS-2011-336 -[http://cdsweb.cern.ch/record/1340984] diff --git a/Generators/ExoGraviton_i/share/jobOptions.pythiaExo.py b/Generators/ExoGraviton_i/share/jobOptions.pythiaExo.py deleted file mode 100755 index 3e8443e670d6218a5d1890f9b15d40e5a92e8341..0000000000000000000000000000000000000000 --- a/Generators/ExoGraviton_i/share/jobOptions.pythiaExo.py +++ /dev/null @@ -1,86 +0,0 @@ -############################################################### -# -# Job options file -# -#============================================================== -#-------------------------------------------------------------- -# General Application Configuration options -#-------------------------------------------------------------- -from AthenaCommon.Logging import logging -evgenLog = logging.getLogger('csc_evgen') - -# special setup for event generation -include( "AthenaCommon/Atlas_Gen.UnixStandardJob.py" ) - -from AthenaCommon.AppMgr import ServiceMgr -ServiceMgr.MessageSvc.OutputLevel = INFO - -# Number of events to be processed (default is 10) -theApp.EvtMax = 10 - -from AthenaServices.AthenaServicesConf import AtRndmGenSvc -ServiceMgr += AtRndmGenSvc() -ServiceMgr.AtRndmGenSvc.Seeds = ["PYTHIA 4789899 989240512","PYTHIA_INIT 820021 2347532"] - -from AthenaCommon.AlgSequence import AlgSequence -job=AlgSequence() -from Pythia_i.Pythia_iConf import Pythia -job +=Pythia() - -#-------------------------------------------------------------- -# Algorithms Private Options -#-------------------------------------------------------------- -job.Pythia.PythiaCommand = ["pyinit user exograviton"] - - -#Graviton parameters to be specified by the user: -# 1:number of extra dimensions -# 2:Process number(1110:qqbar->gG/ 1111:qg->qG/ 1112:gg->gG) -# 3:Total Centre of Mass Energy in GeV. -# 4:D-dimensional Planck scale, MD ,in GeV. -# 5:PtCut of the jet in the final state, in GeV. -# 6:Maximum Mass of the Graviton,in GeV. -# 7:Maximum value for cross-section(in pb). -# 8:CutOff mode (treatment of the effective theory when s_hat > MD^2). - -# The default values are : "grav 1 2","grav 2 1111", "grav 3 7000","grav 4 3500","grav 5 350","grav 6 3500","grav 7 2.5E+1", "grav 8 0 " . -# Note that Process number 1111 is the most dominant sub-process in a p-p collider: qg->qG . -# It is recommanded to set GravMaxMass = MD. Above this value, the low-energy effective field theory is not trustable. -# If the maximum x-section you set is lower than a generated event, Pythia will update this value(See Pythia Manual for further information). -# Different Cutoff Modes implemented : -# 0 : all events are kept. -# 1 : events with s_hat < MD^2 are given the usual weight (equal to the corresponding differential cross-section), and events with s_hat > MD^2 are given a weight equal to "differential x-section * (MD^4/s_hat^2)" -# 2 : only events with s_hat < MD^2 are kept, and the rest are given a weight of zero. - -job.Pythia.PythiaCommand += ["grav 1 2","grav 2 1111", - "grav 3 7000","grav 4 3500", - "grav 5 350","grav 6 3500", - "grav 7 2.5E+1", "grav 8 0"] - -job.Pythia.PythiaCommand += ["pyinit pylistf 1","pyinit dumpr 0 3", - "pystat 1"] - -#---------------------------------------------------------------- -from TruthExamples.TruthExamplesConf import DumpMC -#job += DumpMC() - - -#--------------------------------------------------------------- -# Ntuple service output -#--------------------------------------------------------------- - -from AthenaPoolCnvSvc.WriteAthenaPool import AthenaPoolOutputStream -#from AthenaServices.AthenaServicesConf import AthenaOutputStream -from PoolSvc.PoolSvcConf import PoolSvc -from AthenaPoolCnvSvc.AthenaPoolCnvSvcConf import AthenaPoolCnvSvc - -Stream1 = AthenaPoolOutputStream( "StreamEVGEN" ) -Stream1.ItemList += [ "EventInfo#*", - "McEventCollection#*" ] -Stream1.OutputFile = "Pythia_Graviton.pool.root" -#============================================================== -# -# End of job options file -# -############################################################### - diff --git a/Generators/ExoGraviton_i/src/ExoGraviton.cxx b/Generators/ExoGraviton_i/src/ExoGraviton.cxx deleted file mode 100644 index 63c1f4319475c5fcf3df94b3e7a8e1b19786b7e9..0000000000000000000000000000000000000000 --- a/Generators/ExoGraviton_i/src/ExoGraviton.cxx +++ /dev/null @@ -1,174 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// ExoGraviton.cxx -// -// Reyhaneh Rezvani <reyhaneh.rezvani@cern.ch> 13-03-2009 -// -// a set of c++ functions that act as an interface between -// Athena C++ Pythia and ExoGraviton, -// (a FORTRAN program for simulation of "Real Graviton Emission") - -#ifndef EXOGRAVITON_I -#define EXOGRAVITON_I - -#include <cstdlib> -#include <cstdio> - -#include "ExoGraviton_i/ExoGraviton.h" - - -int WriteGravParamInit=0; - -struct ExoGravitonParams -{ - int ndim; - int iproc; - int icutoff; - double ECM; - double AMD; - double PTCUT; - double GravMaxMass; - double SIGMAX; -}; - -struct ExoGravitonParams p; - - -// This function should be called from c++ : -extern void WriteGravParam( int index, int iparameter, double dparameter) -{ - - - // Write default values into ExoGravitonParams when function is run for the first time: - if(WriteGravParamInit < 1) - { - WriteGravParamInit = 10; - p.ndim = 2; //1 - p.iproc = 1111; //2 - p.ECM = 7000; //3 - p.AMD = 3500; //4 - p.PTCUT = 350; //5 - p.GravMaxMass = 3500; //6 - p.SIGMAX = 2.5E+1; //7 - p.icutoff = 0; //8 - } - - if (index == 1) - { - p.ndim = iparameter; - } - else if (index == 2 ) - { - p.iproc = iparameter; - } - else if (index == 3) - { - p.ECM = dparameter; - } - else if (index == 4) - { - p.AMD = dparameter; - } - else if (index == 5) - { - p.PTCUT = dparameter; - } - else if (index == 6) - { - p.GravMaxMass = dparameter; - } - else if (index == 7) - { - p.SIGMAX = dparameter; - } - else if (index == 8) - { - p.icutoff = iparameter; - } -} - - -// This function should be called from FORTRAN code and is used to read parameters -// stored by the WriteGravParam function: -extern "C" void readgravparamint_(int* index, int* parameter) -{ - - // Write default values into ExoGravitonParams when function is run for the first time: - if(WriteGravParamInit < 1) - { - WriteGravParamInit = 10; - p.ndim = 2; //1 - p.iproc = 1111; //2 - p.ECM = 7000; //3 - p.AMD = 3500; //4 - p.PTCUT = 350; //5 - p.GravMaxMass = 3500; //6 - p.SIGMAX = 2.5E+1; //7 - p.icutoff = 0; //8 - } - - - if(*index == 1) - { - *parameter = p.ndim; - } - else if(*index == 2) - { - *parameter = p.iproc; - } - else if(*index == 8) - { - *parameter = p.icutoff; - } - //else - //log << MSG:: INFO << " ExoGraviton Interface -> Incorrect type cast for ExoGraviton variable OR Incorrect index\n" << endmsg; - -} - - - -extern "C" void readgravparamdbl_(int* index, double* parameter) -{ - - - - // Write default values into ExoGravitonParams when function is run for the first time: - if(WriteGravParamInit < 1) - { - WriteGravParamInit = 10; - p.ndim = 2; //1 - p.iproc = 1111; //2 - p.ECM = 7000; //3 - p.AMD = 3500; //4 - p.PTCUT = 350; //5 - p.GravMaxMass = 3500; //6 - p.SIGMAX = 2.5E+1; //7 - p.icutoff = 0; //8 - } - - if(*index == 3) - { - *parameter = (double)(p.ECM); - } - else if(*index == 4) - { - *parameter = (double)(p.AMD); - } - else if(*index == 5) - { - *parameter = (double)(p.PTCUT); - } - else if(*index == 6) - { - *parameter = (double)(p.GravMaxMass); - } - else if(*index == 7) - { - *parameter = (double)(p.SIGMAX); - } - -} - -#endif diff --git a/Generators/ExoGraviton_i/src/initgrav.F b/Generators/ExoGraviton_i/src/initgrav.F deleted file mode 100755 index 81df6f06e71348b4f56c5f46c3aa3dd4ed8fb48c..0000000000000000000000000000000000000000 --- a/Generators/ExoGraviton_i/src/initgrav.F +++ /dev/null @@ -1,120 +0,0 @@ - - - SUBROUTINE INITGRAV - -C Authors: Pierre-Hugues Beauchemin<pierre-hugues.beauchemin@cern.ch> -C Georges Azuelos<georges.azuelos@umontreal.ca> - -C Initialization of USER process -C ------------------------------ - - -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - - COMMON/PYDAT4/CHAF(500,2) - CHARACTER CHAF*16 - -C...User process initialization common block. - INTEGER MAXPUP,INDEX - PARAMETER (MAXPUP=100) - INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP - DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP - COMMON/HEPRUP/IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2), - &IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP),XMAXUP(MAXPUP), - &LPRUP(MAXPUP) - SAVE /HEPRUP/ - -C.. User - COMMON/USER/SIGMAX, ECM, sigev2, sqrshat - common /user2/sigtot, ebeam, amgravmin, amgravmax, - + ptcut, shatmin, xmin, shatmax, tmin, tmax, - + phspv, amd, coupl, ccoupl, g, g5, ndim, ntot, - + iproc, igrav, iq, icutoff - save /user2/ - dimension xp1(-25:25),xp2(-25:25), sigi(-5:5,-5:5) - COMMON /USER3/ PT2, Q2, shat, that, uhat, sig0, wgt1, wgt2, - + conv, xp1, xp2, sigi, amgrav, amgrav2, costhe, - + F1, F2, F3 - - -C....Pythia common block - needed for setting PDF's; see below. - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) - SAVE /PYPARS/ - -C.. Initial parameters - NDIM = 2 - IPROC = 1111 - SIGMAX = 2.5E+1 - AMGRAVMIN = 0. - AMGRAVMAX = 3500. - PTCUT = 300. - ECM = 7000. - AMD = 3500. - ICUTOFF = 0 - - -C...Set incoming beams: LHC. - IDBMUP(1)=2212 - IDBMUP(2)=2212 - EBMUP(1)=5000D0 - EBMUP(2)=5000D0 - - index=1 - CALL readgravparamint(index,NDIM) - - index=2 - CALL readgravparamint(index,IPROC) - - index=3 - CALL readgravparamdbl(index,ECM) - EBMUP(1) = ECM/2. - EBMUP(2) = ECM/2. - - index=4 - CALL readgravparamdbl(index,AMD) - - index=5 - CALL readgravparamdbl(index,PTCUT) - - index=6 - CALL readgravparamdbl(index,AMGRAVMAX) - - index=7 - CALL readgravparamdbl(index,SIGMAX) - - index=8 - CALL readgravparamint(index,ICUTOFF) - - - write(6,*) ' >>> INITGrav: ' - write(6,*) ' NDIM, IPROC, AMGRAVMAX, PTCUT, AMD, CutOff = ', - & NDIM, IPROC, AMGRAVMAX, PTCUT, AMD, ICUTOFF - - - -C...Decide on weighting strategy: weighted on input, cross section unknown. - IDWTUP=1 -C...Decide on weighting strategy: weighted on input, cross section known. -c IDWTUP=2 - -C...Number of different external processes. - NPRUP=1 - -C...Set up Graviton -C ====================== -C.. cross section unknown [XSECUP:cross section for each external process,in pb] - XSECUP(1) = 0. -C.. stat. error in cross section for each external process,in pb (Statistical Error) - XERRUP(1) = 0. -C.. max. value of cross section (pb) - XMAXUP(1) = SIGMAX -C.. process ID - LPRUP(1)=IPROC - - - RETURN - - END Subroutine - diff --git a/Generators/ExoGraviton_i/src/usegrav.F b/Generators/ExoGraviton_i/src/usegrav.F deleted file mode 100755 index f3b1211e1bc19782b0273f2820ec5d02bc25d8c9..0000000000000000000000000000000000000000 --- a/Generators/ExoGraviton_i/src/usegrav.F +++ /dev/null @@ -1,829 +0,0 @@ - Subroutine USEGRAV - -C Authors: Pierre-Hugues Beauchemin<pierre-hugues.beauchemin@cern.ch> -C Georges Azuelos<georges.azuelos@umontreal.ca> -C - - -C Compute graviton production cross section and generate events -C -------------------------------------------------------------- - -C Note: processes = parton + parton -> jet + Graviton, according to eq. (64-66) of hep-ph/9811291 - - - -C...Double precision and integer declarations. - - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - -c INTEGER PYK,PYCHGE,PYCOMP -C...PYTHIA Commonblocks. - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) - COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5) - COMMON/PYDAT4/CHAF(500,2) - CHARACTER CHAF*16 - COMMON/PYDATR/MRPY(6),RRPY(100) - COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200) - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) - COMMON/PYINT1/MINT(400),VINT(400) - COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2) - COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000) - COMMON/PYINT4/MWID(500),WIDS(500,5) - COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3) - COMMON/PYINT6/PROC(0:500) - CHARACTER PROC*28 - COMMON/PYINT7/SIGT(0:6,0:6,0:5) - COMMON/PYMSSM/IMSS(0:99),RMSS(0:99) - COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2), - &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2) - COMMON/PYMSRV/RVLAM(3,3,3), RVLAMP(3,3,3), RVLAMB(3,3,3) - COMMON/PYBINS/IHIST(4),INDX(1000),BIN(20000) - SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYDAT4/,/PYDATR/,/PYSUBS/, - &/PYPARS/,/PYINT1/,/PYINT2/,/PYINT3/,/PYINT4/,/PYINT5/, - &/PYINT6/,/PYINT7/,/PYMSSM/,/PYSSMT/,/PYMSRV/,/PYBINS/ - -C...User process event common block. - INTEGER MAXNUP - PARAMETER (MAXNUP=500) - INTEGER NUP,IDPRUP,IDUP,ISTUP,MOTHUP,ICOLUP -c DOUBLE PRECISION XWGTUPALUP,AQEDUP,AQCDUP,PUP,VTIMUP,SPINUP - DOUBLE PRECISION AQEDUP,AQCDUP,PUP,VTIMUP,SPINUP - COMMON/HEPEUP/NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP,IDUP(MAXNUP), - &ISTUP(MAXNUP),MOTHUP(2,MAXNUP),ICOLUP(2,MAXNUP),PUP(5,MAXNUP), - &VTIMUP(MAXNUP),SPINUP(MAXNUP) - SAVE /HEPEUP/ - -C.. user - COMMON/USER/SIGMAX, ECM, sigev2, sqrshat - common /user2/sigtot, ebeam, amgravmin, amgravmax, - + ptcut, shatmin, xmin, shatmax, tmin, tmax, - + phspv, amd, coupl, ccoupl, g, g5, ndim, ntot, - + iproc, igrav, iq, icutoff - save /user2/ - dimension xp1(-25:25),xp2(-25:25), sigi(-5:5,-5:5) - COMMON /USER3/ PT2, Q2, shat, that, uhat, sig0, wgt1, wgt2, - + conv, xp1, xp2, sigi, amgrav, amgrav2, costhe, - + F1, F2, F3 - -C.. conversion factor GeV**(-2) --> pb ( = hbarc **2) - logical ifirst - DATA CONV/0.389D9/, IFIRST/.true./ - -C.. first pass? ==> xtraD parameters - if(ifirst)then - ifirst=.false. - Ebeam=ECM/2. - - -C Note: sqrt(shat) is min, when p = pTcut - sqrshatmin=ptcut+sqrt(ptcut**2+amgravmin**2) - shatmin = max(sqrshatmin**2,AMGRAVmin**2) - Xmin=shatmin/ECM**2 - shatmax=ECM**2 - -C..... phase space volume x1-x2 space - PHSPV=LOG(XMIN)**2/2. - end if - sigev=0. - sigev2=sigev - -C.. sample ln(x1), ln(x2) = fraction of quark momentum in proton - 20 X1=XMIN**PYR(0) - X2=XMIN**PYR(0) - SHAT=X1*X2*ECM**2 - sqrshat=sqrt(shat) - if(shat.lt.shatmin)go to 20 - -C.. sample M**2 -C Note: exclude M1**2 < M**2 - am1 = shat-2*ptcut*sqrshat - ammin2=amgravmin**2 - if(am1.lt.ammin2)then - wgt1=0. - go to 200 - end if - ammax2=min(am1,amgravmax**2) -C the above definition of ammax,ensures the allowed kinematics. - AMGRAV2=ammin2+(ammax2-ammin2)*PYR(0) -C this gives the KK mode,a mass between ammin & ammax. - AMGRAV=sqrt(AMGRAV2) - wgt1=ammax2-ammin2 - -C.. sample t_hat and compute weight - t1=shat-amgrav2 - determ = t1**2-4.*shat*ptcut**2 - if(determ.lt.0.)then - write(6,*) ' >>>>> determ < 0 : determ =', determ - go to 20 - end if - determ=dsqrt(determ) - th1 = (-t1-determ)/2. - th2 = (-t1+determ)/2. - that = th1 * (th2/th1)**pyr(0) - wgt2 = (-that) * log(th1/th2) - -C shat + that + uhat = M^2 - UHAT=-SHAT-THAT+AMGRAV**2 - -C...Subsystem scattering angle in parton cm, defined neglecting quark mass. - costhe=(that-uhat)/(that+uhat) - SINTHE=SQRT(MAX(0D0,1D0-COSTHE**2)) - phi=2*paru(1)*PYR(0) - - PT2=THAT*UHAT/SHAT - Q2=amgrav**2/2+PT2 - -C... Parton distributions (multiplied by x) of the protons - CALL PYPDFU(2212,X1,Q2,XP1) - CALL PYPDFU(2212,X2,Q2,XP2) - - - -C.--------------------------<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< -C.. Get cross sections and generate events -C -C Note: three processes: qqbar->gG, qg->qG, gg->gG -C.--------------------------<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< - - if(iproc.eq.1110)then - call qqbar_gGrav - else if(iproc.eq.1111)then - call qg_qGrav - else if(iproc.eq.1112)then - call gg_gGrav - else - write(6,*) ' **** no process **** ' - stop - end if - -C.. particle momenta, after boosting to lab system - pup(1,1)=0. - pup(2,1)=0. - pup(4,1)=x1*ECM/2.d0 - pup(5,1)=pmas(iabs(idup(1)),1) - pup(3,1)=dsqrt(pup(4,1)**2-pup(5,1)**2) - - pup(1,2)=0. - pup(2,2)=0. - pup(4,2)=x2*ECM/2.d0 - pup(5,2)=pmas(iabs(idup(2)),1) - pup(3,2)=-dsqrt(pup(4,2)**2-pup(5,2)**2) - -C.. particle igrav = Graviton; iq = parton( quark or gluon ) -C.....velocity of qq c.m. system -C......... gamma = E(qq)/M(qq) - gamma=(x1+x2)*ECM/(2.d0*sqrshat) - beta=dsqrt(1.d0-1.d0/gamma**2) - if(x1.lt.x2)beta=-beta - -C..... in cm of qq system, energy and momentum of Grav is: - if(igrav.eq.4)costhe=-costhe - e3cm=(shat+amgrav2)/(2.*sqrshat) - p3cm=dsqrt(e3cm**2-amgrav2) - p3tcm=p3cm*sinthe - p3zcm=p3cm*costhe - pup(3,igrav)=gamma*(p3zcm+beta*e3cm) - pup(1,igrav)=p3tcm*cos(phi) - pup(2,igrav)=p3tcm*sin(phi) - pup(5,igrav)=amgrav - pup(4,igrav)=dsqrt( - + (pup(1,igrav)**2+pup(2,igrav)**2+pup(3,igrav)**2 - + + pup(5,igrav)**2) ) - e3lab=gamma*(e3cm+beta*p3zcm) - -C.. particle iq = light quark or gluon -c print*, "iq ",iq -c print*,'idup(iq)',idup(iq) - e4cm=(shat-amgrav**2)/(2.*sqrshat) - pup(1,iq)=-pup(1,igrav) - pup(2,iq)=-pup(2,igrav) - pup(3,iq)=gamma*(-p3zcm+beta*e4cm) -c write(6,*) 'PtJet:', dsqrt( pup(1,igrav)**2 + pup(2,igrav)**2 ) - pup(5,iq)=pmas(iabs(idup(iq)),1) - pup(4,iq)=dsqrt( - + (pup(1,iq)**2+pup(2,iq)**2+pup(3,iq)**2+pup(5,iq)**2)) - e4lab=gamma*(e4cm-beta*p3zcm) - -C.. lifetime and spin - do i=1,4 - VTIMUP(i) = 0. - SPINUP(I) = 0. - end do - - - -C.. Get weight - - ntot = ntot+1 - sigtot=sigtot+sigev2 - return - 200 SIGEV=0. - xwgtup=sigev - sigev2=sigev - sigtot=sigtot+sigev - ntot=ntot+1 - - - RETURN - end subroutine - -C ======================================================== - - - - subroutine qqbar_gGrav -C================================================== -C process 1110: q + qbar -> Grav g -C -C Note: Compute cross section and define color flow -C================================================== - - IMPLICIT DOUBLE PRECISION(A-H,O-Z) - -C...User process event common block. - INTEGER MAXPUP - PARAMETER (MAXPUP=100) - INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP - COMMON/HEPRUP/IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2), - &IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP),XMAXUP(MAXPUP), - &LPRUP(MAXPUP) - SAVE /HEPRUP/ - - INTEGER MAXNUP - PARAMETER (MAXNUP=500) - INTEGER NUP,IDPRUP,IDUP,ISTUP,MOTHUP,ICOLUP - DOUBLE PRECISION XWGTUP,SCALUP,AQEDUP,AQCDUP,PUP,VTIMUP,SPINUP - COMMON/HEPEUP/NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP,IDUP(MAXNUP), - &ISTUP(MAXNUP),MOTHUP(2,MAXNUP),ICOLUP(2,MAXNUP),PUP(5,MAXNUP), - &VTIMUP(MAXNUP),SPINUP(MAXNUP) - SAVE /HEPEUP/ - -C.. user - COMMON/USER/SIGMAX, ECM, sigev2, sqrshat - common /user2/sigtot, ebeam, amgravmin, amgravmax, - + ptcut, shatmin, xmin, shatmax, tmin, tmax, - + phspv, amd, coupl, ccoupl, g, g5, ndim, ntot, - + iproc, igrav, iq, icutoff - save /user2/ - dimension xp1(-25:25),xp2(-25:25), sigi(-5:5,-5:5) - COMMON /USER3/ PT2, Q2, shat, that, uhat, sig0, wgt1, wgt2, - + conv, xp1, xp2, sigi, amgrav, amgrav2, costhe, - + F1, F2, F3 - - - data pi/3.141592654/ -c , twopi/6.2832/ - -C process 1110: q + g -> Grav g - IDPRUP = 1110 - -C.. alpha(em) and alpha_s -c AEM=PYALEM(Q2) - ALPS=PYALPS(Q2) - - - -C.. calculate sig0 - -C compute the unit sphere surface in n extra-d: - - if (ndim.eq.1) then - omega=2. - else if (ndim.eq.2) then - omega=2.*pi - else if (ndim.eq.3) then - omega=4.*pi - else if (ndim.eq.4) then - omega=2.*pi**2 - else if (ndim.eq.5) then - omega=(8.*pi**2)/3. - else if (ndim.eq.6) then - omega=pi**3 - else if (ndim.ge.7) then - omega=0. - end if - -C Constants -C {see eq.60 & 64} - - const1 = alps/(36.*shat) - const2 = amgrav2**((float(ndim)-2.)/2.)/2. -C ( dm^2 is considered instead of dm. ) - const3 = omega - const4 = 1/(amd**(ndim+2)) - - -C Compute the function F1(x,y) - - x=that/shat - y=(amgrav**2)/shat - - term1 = 1/(x*(y-1-x)) - term2 = (-4)*x*(1+x)*(1+2*x+2*x**2) - term3 = y*(1+6*x+18*x**2+16*x**3) - term4 = (-6)*(y**2)*x*(1+2*x) - term5 = (y**3)*(1+4*x) - - F1= (term2+term3+term4+term5)*term1 - F2=0. - F3=0. - - -C differential cross section(see eq.60) - - sig0=const1*const2*const3*const4*F1 - -C.--------------------------<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< - - - sigev=0. - sigi(0,0)=0. - do i1=1,5 - i2=-i1 - sigi(i1,i2)=sig0*xp1(i1)*xp2(i2) - sigi(i2,i1)=sig0*xp1(i2)*xp2(i1) - sigev=sigev+sigi(i1,i2)+sigi(i2,i1) - end do - - sigtp=0. - random=pyr(0) - do i1=-5,5 - i2=-i1 - sigtp=sigtp+sigi(i1,i2) - if((sigtp/sigev).gt.random)then - ia=i1 - ib=i2 - go to 30 - end if - end do - 30 continue - sigev=sigev * wgt1 * wgt2 * conv * phspv - sigev2=sigev - -C weight, in pb! - if (icutoff.eq.0) then - XWGTUP = sigev - else if (icutoff.eq.1 .AND. shat.le.aMD**2) then - XWGTUP = sigev - else if (icutoff.eq.1 .AND. shat.gt.aMD**2) then - XWGTUP = sigev * (aMD**4/shat**2) - else if (icutoff.eq.2 .AND. shat.le.aMD**2) then - XWGTUP = sigev - else if (icutoff.eq.2 .AND. shat.gt.aMD**2) then - XWGTUP = 0 - end if - - -C.. fill event - NUP=4 - SCALUP=q2 - AQEDUP=-1. - AQCDUP=-1. - - -C.. particle ID's - igrav=3 - iq=4 - IDUP(1)=ia - IDUP(2)=ib - IDUP(3)=39 - IDUP(4)=21 - -C.. status codes ( -1:an incoming particle of the hard scattering process, -C 1:an outgoing final state particle) - ISTUP(1)=-1 - ISTUP(2)=-1 - ISTUP(3)=1 - ISTUP(4)=1 - - -C.. MOTHUP(1,i),MOTHUP(2,i):positions of first and last mother of particle i. - do i=3,4 - MOTHUP(1,i)=i-2 - MOTHUP(2,i)=0 - end do - -C.. colour tags( ICOLUP(1,i):the colour of particle i -C ICOLUP(2,i):the colour of anti-particle i) - - if(ia .gt.0)then - ICOLUP(1,1)=101 - ICOLUP(2,1)=0 - ICOLUP(1,2)=0 - ICOLUP(2,2)=102 - else - ICOLUP(1,1)=0 - ICOLUP(2,1)=102 - ICOLUP(1,2)=101 - ICOLUP(2,2)=0 - end if - ICOLUP(1,4)=101 - ICOLUP(2,4)=102 - - - return - end subroutine - -C ======================================================== - - subroutine qg_qGrav -C================================================== -C process 1111: q + g -> Grav q -C -C Note: Compute cross section and define color flow -C================================================== - - IMPLICIT DOUBLE PRECISION(A-H,O-Z) -C...User process event common block. - INTEGER MAXPUP - PARAMETER (MAXPUP=100) - INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP - COMMON/HEPRUP/IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2), - &IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP),XMAXUP(MAXPUP), - &LPRUP(MAXPUP) - SAVE /HEPRUP/ - - INTEGER MAXNUP - PARAMETER (MAXNUP=500) - INTEGER NUP,IDPRUP,IDUP,ISTUP,MOTHUP,ICOLUP - DOUBLE PRECISION XWGTUP,SCALUP,AQEDUP,AQCDUP,PUP,VTIMUP,SPINUP - COMMON/HEPEUP/NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP,IDUP(MAXNUP), - &ISTUP(MAXNUP),MOTHUP(2,MAXNUP),ICOLUP(2,MAXNUP),PUP(5,MAXNUP), - &VTIMUP(MAXNUP),SPINUP(MAXNUP) - SAVE /HEPEUP/ - -C.. user - COMMON/USER/SIGMAX, ECM, sigev2, sqrshat - common /user2/sigtot, ebeam, amgravmin, amgravmax, - + ptcut, shatmin, xmin, shatmax, tmin, tmax, - + phspv, amd, coupl, ccoupl, g, g5, ndim, ntot, - + iproc, igrav, iq, icutoff - save /user2/ - dimension xp1(-25:25),xp2(-25:25), sigi(-5:5,-5:5) - COMMON /USER3/ PT2, Q2, shat, that, uhat, sig0, wgt1, wgt2, - + conv, xp1, xp2, sigi, amgrav, amgrav2, costhe, - + F1, F2, F3 - - - - data pi/3.141592654/ -c , twopi/6.2832/ - -C process 1111: q + g -> Grav q - IDPRUP = 1111 - -C.. alpha(em) and alpha_s -c AEM=PYALEM(Q2) - ALPS=PYALPS(Q2) - - -C.. calculate sig0 - -C compute the unit sphere surface in n extra-d: - - if (ndim.eq.1) then - omega=2. - else if (ndim.eq.2) then - omega=2.*pi - else if (ndim.eq.3) then - omega=4.*pi - else if (ndim.eq.4) then - omega=2.*pi**2 - else if (ndim.eq.5) then - omega=(8.*pi**2)/3. - else if (ndim.eq.6) then - omega=pi**3 - else if (ndim.ge.7) then - omega=0. - end if - -C Constants - - const1 = alps/(96.*shat) - const2 = amgrav2**((float(ndim)-2.)/2.)/2. - const3 = omega - const4 = 1/(amd**(ndim+2)) - - -C Compute the function F2(x,y) - - x=that/shat - y=(amgrav**2)/shat - - term1 = 1/(x*(y-1-x)) - term2 = (-4)*x*(1+x**2) - term3 = y*(1+x)*(1+8*x+x**2) - term4 = (-3)*(y**2)*(1+4*x+x**2) - term5 = 4*(y**3)*(1+x) - term6 = (-2)*(y**4) - - F2 = (term2+term3+term4+term5+term6)*term1 - F1=0. - F3=0. - -C differential cross section(eq 60): - - sig0=const1*const2*const3*const4*F2 - -C.--------------------------<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< - - -C.. different cases of quark-gluon scattering - sigev=0. - sigi(0,0)=0. - do i1=-5,5 - if(i1.ne.0)then - i2=21 - sigi(i1,0)=sig0*xp1(i1)*xp2(i2) - sigi(0,i1)=sig0*xp1(i2)*xp2(i1) - sigev=sigev+sigi(i1,0)+sigi(0,i1) - end if - end do - - sigtp=0. - random=pyr(0) - do i1=-5,5 - if(i1.ne.0)then - i2=21 - sigtp=sigtp+sigi(i1,0) - if((sigtp/sigev).gt.random)then - ia=i1 - ib=i2 - go to 30 - end if - sigtp=sigtp+sigi(0,i1) - if((sigtp/sigev).gt.random)then - ia=i2 - ib=i1 - go to 30 - end if - end if - end do - 30 continue - - sigev=sigev * wgt1 * wgt2 * conv * phspv - sigev2=sigev - -C weight, in pb! - - if (icutoff.eq.0) then - XWGTUP = sigev - else if (icutoff.eq.1 .AND. shat.le.aMD**2) then - XWGTUP = sigev - else if (icutoff.eq.1 .AND. shat.gt.aMD**2) then - XWGTUP = sigev * (aMD**4/shat**2) - else if (icutoff.eq.2 .AND. shat.le.aMD**2) then - XWGTUP = sigev - else if (icutoff.eq.2 .AND. shat.gt.aMD**2) then - XWGTUP = 0 - end if - - -C.. fill event - NUP=4 - SCALUP=q2 - AQEDUP=-1. - AQCDUP=-1. - -C.. particle ID's -c Note: here, "that" is (p_q - p_G)**2, so put -c quark in position 1 and G in position 3 -c OR quark in position 2 and G in position 4 - - IDUP(1)=ia - IDUP(2)=ib - if(ia.eq.21)then - igrav=4 - iq=3 - else - igrav=3 - iq=4 - end if - IDUP(igrav)=39 - IDUP(iq)=min(ia,ib) - -C.. status codes - ISTUP(1)=-1 - ISTUP(2)=-1 - ISTUP(3)=1 - ISTUP(4)=1 - -C.. positions of first and last mother - do i=3,4 - MOTHUP(1,i)=0 - MOTHUP(2,i)=0 - end do - -C.. colour tags - do i=1,4 - icolup(1,i)=0 - icolup(2,i)=0 - end do - if(ia.eq.21)then - icolup(1,1)=101 - icolup(2,1)=102 - if(ib.gt.0)then - icolup(1,2)=102 - icolup(2,2)=0 - icolup(1,iq)=101 - icolup(2,iq)=0 - else - icolup(1,2)=0 - icolup(2,2)=101 - icolup(1,iq)=0 - icolup(2,iq)=102 - end if - else - icolup(1,2)=101 - icolup(2,2)=102 - if(ia.gt.0)then - icolup(1,1)=102 - icolup(2,1)=0 - icolup(1,iq)=101 - icolup(2,iq)=0 - else - icolup(1,1)=0 - icolup(2,1)=101 - icolup(1,iq)=0 - icolup(2,iq)=102 - end if - end if - return - end subroutine - - -C ======================================================== - - - subroutine gg_gGrav - -C================================================== -C process 1112: g + g -> Grav g -C -C Note: Compute cross section and define color flow -C================================================== - - IMPLICIT DOUBLE PRECISION(A-H,O-Z) -C...User process event common block. - INTEGER MAXPUP - PARAMETER (MAXPUP=100) - INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP - COMMON/HEPRUP/IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2), - &IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP),XMAXUP(MAXPUP), - &LPRUP(MAXPUP) - SAVE /HEPRUP/ - - INTEGER MAXNUP - PARAMETER (MAXNUP=500) - INTEGER NUP,IDPRUP,IDUP,ISTUP,MOTHUP,ICOLUP - DOUBLE PRECISION XWGTUP,SCALUP,AQEDUP,AQCDUP,PUP,VTIMUP,SPINUP - COMMON/HEPEUP/NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP,IDUP(MAXNUP), - &ISTUP(MAXNUP),MOTHUP(2,MAXNUP),ICOLUP(2,MAXNUP),PUP(5,MAXNUP), - &VTIMUP(MAXNUP),SPINUP(MAXNUP) - SAVE /HEPEUP/ - -C.. user - COMMON/USER/SIGMAX, ECM, sigev2, sqrshat - common /user2/sigtot, ebeam, amgravmin, amgravmax, - + ptcut, shatmin, xmin, shatmax, tmin, tmax, - + phspv, amd, coupl, ccoupl, g, g5, ndim, ntot, - + iproc, igrav, iq, icutoff - save /user2/ - dimension xp1(-25:25),xp2(-25:25), sigi(-5:5,-5:5) - COMMON /USER3/ PT2, Q2, shat, that, uhat, sig0, wgt1, wgt2, - + conv, xp1, xp2, sigi, amgrav, amgrav2, costhe, - + F1, F2, F3 - - - - data pi/3.141592654/ -c , twopi/6.2832/ - -C process 1112: g + g -> Grav g - IDPRUP = 1112 - -C.. alpha(em) and alpha_s -C AEM=PYALEM(Q2) - ALPS=PYALPS(Q2) - - -C.. calculate sig0 - -C compute the unit sphere surface in n extra-d: - - if (ndim.eq.1) then - omega=2. - else if (ndim.eq.2) then - omega=2.*pi - else if (ndim.eq.3) then - omega=4.*pi - else if (ndim.eq.4) then - omega=2.*pi**2 - else if (ndim.eq.5) then - omega=(8.*pi**2)/3. - else if (ndim.eq.6) then - omega=pi**3 - else if (ndim.ge.7) then - omega=0. - end if - -C Constants - - const1 = 3*alps/(16.*shat) - const2 = amgrav2**((float(ndim)-2.)/2.)/2. - const3 = omega - const4 = 1/(amd**(ndim+2)) - - -C Compute the function F3(x,y) (see eq.92) - - x=that/shat - y=(amgrav**2)/shat - - - term1 = 1/(x*(y-1-x)) - - term2 = 1+2*x+3*x**2+2*x**3+x**4 - term3 = (-2)*y*(1+x**3) - term4 = 3*(y**2)*(1+x**2) - term5 = (-2)*(y**3)*(1+x) - term6 = y**4 - - F3= (term2+term3+term4+term5+term6)*term1 - F1=0. - F2=0. - -c write(6,*) F1, F2, F3 - - -C differential cross section - - sig0=const1*const2*const3*const4*F3 - -C.--------------------------<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< - - -C.. different cases of parton-antiparton scattering - sigev=0. - sigi(0,0)=0. - i1=21 - i2=21 - sigev=sig0*xp1(i1)*xp2(i2) - - ia=i1 - ib=i2 - sigev=sigev * wgt1 * wgt2 * conv * phspv - sigev2=sigev - -C weight, in pb! - - if (icutoff.eq.0) then - XWGTUP = sigev - else if (icutoff.eq.1 .AND. shat.le.aMD**2) then - XWGTUP = sigev - else if (icutoff.eq.1 .AND. shat.gt.aMD**2) then - XWGTUP = sigev * (aMD**4/shat**2) - else if (icutoff.eq.2 .AND. shat.le.aMD**2) then - XWGTUP = sigev - else if (icutoff.eq.2 .AND. shat.gt.aMD**2) then - XWGTUP = 0 - end if - - -C.. fill event - NUP=4 - SCALUP=q2 - AQEDUP=-1. - AQCDUP=-1. - -C.. particle ID's - igrav=3 - iq=4 - IDUP(1)=ia - IDUP(2)=ib - IDUP(3)=39 - IDUP(4)=21 - -C.. status codes - ISTUP(1)=-1 - ISTUP(2)=-1 - ISTUP(3)=1 - ISTUP(4)=1 - -C.. positions of first and last mother - do i=3,4 - MOTHUP(1,i)=i-2 - MOTHUP(2,i)=0 - end do - -C.. colour tags - icolup(1,1)=101 - icolup(2,1)=102 - icolup(1,2)=102 - icolup(2,2)=103 - icolup(1,4)=101 - icolup(2,4)=103 - return - end subroutine diff --git a/Generators/GravADD_i/CMakeLists.txt b/Generators/GravADD_i/CMakeLists.txt deleted file mode 100644 index c2593fb8e823e6067b154cc2437b515992fc4d94..0000000000000000000000000000000000000000 --- a/Generators/GravADD_i/CMakeLists.txt +++ /dev/null @@ -1,27 +0,0 @@ -################################################################################ -# Package: GravADD_i -################################################################################ - -# Declare the package name: -atlas_subdir( GravADD_i ) - -# External dependencies: -find_package( GSL ) -find_package( Lhapdf ) -find_package( Pythia6 ) - -# tag allowUndefined was not recognized in automatic conversion in cmt2cmake - -# Component(s) in the package: -atlas_add_library( GravADD_i - src/*.cxx - src/*.F - PUBLIC_HEADERS GravADD_i - INCLUDE_DIRS ${GSL_INCLUDE_DIRS} - PRIVATE_INCLUDE_DIRS ${PYTHIA6_INCLUDE_DIRS} ${LHAPDF_INCLUDE_DIRS} - LINK_LIBRARIES ${GSL_LIBRARIES} - PRIVATE_LINK_LIBRARIES ${PYTHIA6_LIBRARIES} ${LHAPDF_LIBRARIES} ) - -# Install files from the package: -atlas_install_joboptions( share/*.py ) - diff --git a/Generators/GravADD_i/GravADD_i/GravADD.h b/Generators/GravADD_i/GravADD_i/GravADD.h deleted file mode 100644 index ed69e21bb9aeff097539ef125b1370e1be97e8e6..0000000000000000000000000000000000000000 --- a/Generators/GravADD_i/GravADD_i/GravADD.h +++ /dev/null @@ -1,17 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -//a set of c++ functions that act as an interface between -//Athenas C++ Pythia and GravADD -//(a FORTRAN program for simulation of gravitational scattering and black hole formation in large extra dimensions) - -#ifndef GRAVADD_H -#define GRAVADD_H -extern void writegravaddparam(int,int,double); -extern "C" void readGravADDparamint_(int*,int*); -extern "C" void readGravADDparamdbl_(int*,double*); - -#endif - - diff --git a/Generators/GravADD_i/GravADD_i/charybdis1001.inc b/Generators/GravADD_i/GravADD_i/charybdis1001.inc deleted file mode 100644 index b53ba7e7331f8ebb82b702db221c2cfa7c16df3a..0000000000000000000000000000000000000000 --- a/Generators/GravADD_i/GravADD_i/charybdis1001.inc +++ /dev/null @@ -1,18 +0,0 @@ -C--include file for Black Hole generator - IMPLICIT NONE -C--common block for the probabilities of SM particles - DOUBLE PRECISION PQUARK,PLEPT,PNEUT,PGLUON,PGAMMA,PWBOSN, - & PZBOSN,PHIGGS,PFERM(3),PBOSON(5) - COMMON /BHPROB/PQUARK,PLEPT,PNEUT,PGLUON,PGAMMA,PWBOSN, - & PZBOSN,PHIGGS,PFERM,PBOSON -C--common block for the main parameters - INTEGER MSSDEF,NBODY,IPRINT,MSSDEC - DOUBLE PRECISION MPLNCK,MINMSS,MAXMSS,INTMPL - LOGICAL TIMVAR,GTSCA,GRYBDY,KINCUT - COMMON /BHPARM/MPLNCK,MINMSS,MAXMSS,INTMPL,MSSDEF,NBODY,IPRINT, - & MSSDEC,TIMVAR,GTSCA,GRYBDY,KINCUT -C--common block for decay of the black hole - DOUBLE PRECISION RHFACT,BHMASS,GENPOW,FACTOR - INTEGER TOTDIM - COMMON /BLACKH/ RHFACT,BHMASS,GENPOW,FACTOR,TOTDIM - SAVE /BLACKH/,/BHPARM/,/BHPROB/ \ No newline at end of file diff --git a/Generators/GravADD_i/GravADD_i/gammafn.h b/Generators/GravADD_i/GravADD_i/gammafn.h deleted file mode 100644 index f2ca8722c0bd63a2edac718e8b83f41e655119c2..0000000000000000000000000000000000000000 --- a/Generators/GravADD_i/GravADD_i/gammafn.h +++ /dev/null @@ -1,14 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef GAMMAFN_H -#define GAMMAFN_H -//#include <gsl_sf.h> -#include <gsl/gsl_sf.h> -extern "C" { - double gammafn_(double * x); - float fgammafn_(float * x); - double igamma_(double * a, double * x); -} -#endif diff --git a/Generators/GravADD_i/doc/Doxyfile b/Generators/GravADD_i/doc/Doxyfile deleted file mode 100644 index 292d0afd680712ea19829636189fd5f92f9fef36..0000000000000000000000000000000000000000 --- a/Generators/GravADD_i/doc/Doxyfile +++ /dev/null @@ -1,231 +0,0 @@ -# Doxyfile 1.5.3 - -#--------------------------------------------------------------------------- -#Project related configuration options -#--------------------------------------------------------------------------- -DOXYFILE_ENCODING = UTF-8 -PROJECT_NAME = GravADD_i -PROJECT_NUMBER = GravADD_i-00-00-02 -OUTPUT_DIRECTORY = /afs/cern.ch/user/b/boelaert/testarea/15.6.1/InstallArea/doc/GravADD_i -CREATE_SUBDIRS = NO -OUTPUT_LANGUAGE = English -BRIEF_MEMBER_DESC = YES -REPEAT_BRIEF = YES -ABBREVIATE_BRIEF = -ALWAYS_DETAILED_SEC = NO -INLINE_INHERITED_MEMB = YES -FULL_PATH_NAMES = YES -STRIP_FROM_PATH = -STRIP_FROM_INC_PATH = -SHORT_NAMES = NO -JAVADOC_AUTOBRIEF = YES -QT_AUTOBRIEF = YES -MULTILINE_CPP_IS_BRIEF = NO -DETAILS_AT_TOP = NO -INHERIT_DOCS = YES -SEPARATE_MEMBER_PAGES = NO -TAB_SIZE = 8 -ALIASES = -OPTIMIZE_OUTPUT_FOR_C = NO -OPTIMIZE_OUTPUT_JAVA = NO -BUILTIN_STL_SUPPORT = NO -CPP_CLI_SUPPORT = NO -DISTRIBUTE_GROUP_DOC = NO -SUBGROUPING = YES -#--------------------------------------------------------------------------- -#Build related configuration options -#--------------------------------------------------------------------------- -EXTRACT_ALL = YES -EXTRACT_PRIVATE = YES -EXTRACT_STATIC = YES -EXTRACT_LOCAL_CLASSES = YES -EXTRACT_LOCAL_METHODS = NO -EXTRACT_ANON_NSPACES = NO -HIDE_UNDOC_MEMBERS = NO -HIDE_UNDOC_CLASSES = NO -HIDE_FRIEND_COMPOUNDS = NO -HIDE_IN_BODY_DOCS = NO -INTERNAL_DOCS = NO -CASE_SENSE_NAMES = YES -HIDE_SCOPE_NAMES = NO -SHOW_INCLUDE_FILES = YES -INLINE_INFO = YES -SORT_MEMBER_DOCS = NO -SORT_BRIEF_DOCS = NO -SORT_BY_SCOPE_NAME = NO -GENERATE_TODOLIST = YES -GENERATE_TESTLIST = YES -GENERATE_BUGLIST = YES -GENERATE_DEPRECATEDLIST= YES -ENABLED_SECTIONS = -MAX_INITIALIZER_LINES = 30 -SHOW_USED_FILES = YES -SHOW_DIRECTORIES = YES -FILE_VERSION_FILTER = -#--------------------------------------------------------------------------- -#configuration options related to warning and progress messages -#--------------------------------------------------------------------------- -QUIET = NO -WARNINGS = YES -WARN_IF_UNDOCUMENTED = YES -WARN_IF_DOC_ERROR = YES -WARN_NO_PARAMDOC = NO -WARN_FORMAT = "$file:$line: $text " -WARN_LOGFILE = -#--------------------------------------------------------------------------- -#configuration options related to the input files -#--------------------------------------------------------------------------- -INPUT = ../src ../GravADD_i ../doc ../share -INPUT_ENCODING = UTF-8 -FILE_PATTERNS = *.cxx *.h *.py *.mk *.icc -RECURSIVE = YES -EXCLUDE = -EXCLUDE_SYMLINKS = NO -EXCLUDE_PATTERNS = -EXCLUDE_SYMBOLS = -EXAMPLE_PATH = ../doc ../cmt ../share -EXAMPLE_PATTERNS = *.cxx *.html requirements *.py -EXAMPLE_RECURSIVE = YES -IMAGE_PATH = -INPUT_FILTER = -FILTER_PATTERNS = -FILTER_SOURCE_FILES = NO -#--------------------------------------------------------------------------- -#configuration options related to source browsing -#--------------------------------------------------------------------------- -SOURCE_BROWSER = YES -INLINE_SOURCES = YES -STRIP_CODE_COMMENTS = YES -REFERENCED_BY_RELATION = NO -REFERENCES_RELATION = NO -REFERENCES_LINK_SOURCE = YES -USE_HTAGS = NO -VERBATIM_HEADERS = NO -#--------------------------------------------------------------------------- -#configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- -ALPHABETICAL_INDEX = NO -COLS_IN_ALPHA_INDEX = 5 -IGNORE_PREFIX = -#--------------------------------------------------------------------------- -#configuration options related to the HTML output -#--------------------------------------------------------------------------- -GENERATE_HTML = YES -HTML_OUTPUT = html -HTML_FILE_EXTENSION = .html -HTML_HEADER = -HTML_FOOTER = -HTML_STYLESHEET = -HTML_ALIGN_MEMBERS = YES -GENERATE_HTMLHELP = NO -HTML_DYNAMIC_SECTIONS = NO -CHM_FILE = -HHC_LOCATION = -GENERATE_CHI = NO -BINARY_TOC = NO -TOC_EXPAND = NO -DISABLE_INDEX = NO -ENUM_VALUES_PER_LINE = 4 -GENERATE_TREEVIEW = NO -TREEVIEW_WIDTH = 250 -#--------------------------------------------------------------------------- -#configuration options related to the LaTeX output -#--------------------------------------------------------------------------- -GENERATE_LATEX = NO -LATEX_OUTPUT = latex -LATEX_CMD_NAME = latex -MAKEINDEX_CMD_NAME = makeindex -COMPACT_LATEX = NO -PAPER_TYPE = a4wide -EXTRA_PACKAGES = -LATEX_HEADER = -PDF_HYPERLINKS = NO -USE_PDFLATEX = NO -LATEX_BATCHMODE = YES -LATEX_HIDE_INDICES = NO -#--------------------------------------------------------------------------- -#configuration options related to the RTF output -#--------------------------------------------------------------------------- -GENERATE_RTF = NO -RTF_OUTPUT = rtf -COMPACT_RTF = NO -RTF_HYPERLINKS = NO -RTF_STYLESHEET_FILE = -RTF_EXTENSIONS_FILE = -#--------------------------------------------------------------------------- -#configuration options related to the man page output -#--------------------------------------------------------------------------- -GENERATE_MAN = NO -MAN_OUTPUT = man -MAN_EXTENSION = .3 -MAN_LINKS = NO -#--------------------------------------------------------------------------- -#configuration options related to the XML output -#--------------------------------------------------------------------------- -GENERATE_XML = NO -XML_OUTPUT = xml -XML_SCHEMA = -XML_DTD = -XML_PROGRAMLISTING = YES -#--------------------------------------------------------------------------- -#configuration options for the AutoGen Definitions output -#--------------------------------------------------------------------------- -GENERATE_AUTOGEN_DEF = NO -#--------------------------------------------------------------------------- -#configuration options related to the Perl module output -#--------------------------------------------------------------------------- -GENERATE_PERLMOD = NO -PERLMOD_LATEX = NO -PERLMOD_PRETTY = YES -PERLMOD_MAKEVAR_PREFIX = -#--------------------------------------------------------------------------- -#Configuration options related to the preprocessor -#--------------------------------------------------------------------------- -ENABLE_PREPROCESSING = YES -MACRO_EXPANSION = NO -EXPAND_ONLY_PREDEF = NO -SEARCH_INCLUDES = YES -INCLUDE_PATH = -INCLUDE_FILE_PATTERNS = -PREDEFINED = -EXPAND_AS_DEFINED = -SKIP_FUNCTION_MACROS = YES -#--------------------------------------------------------------------------- -#Configuration::additions related to external references -#--------------------------------------------------------------------------- -TAGFILES = -GENERATE_TAGFILE = /afs/cern.ch/user/b/boelaert/testarea/15.6.1/InstallArea/doc/GravADD_i.tag -ALLEXTERNALS = NO -EXTERNAL_GROUPS = YES -PERL_PATH = /usr/bin/perl -#--------------------------------------------------------------------------- -#Configuration options related to the dot tool -#--------------------------------------------------------------------------- -CLASS_DIAGRAMS = YES -MSCGEN_PATH = -HIDE_UNDOC_RELATIONS = YES -HAVE_DOT = YES -CLASS_GRAPH = YES -COLLABORATION_GRAPH = YES -GROUP_GRAPHS = YES -UML_LOOK = YES -TEMPLATE_RELATIONS = YES -INCLUDE_GRAPH = YES -INCLUDED_BY_GRAPH = YES -CALL_GRAPH = NO -CALLER_GRAPH = NO -GRAPHICAL_HIERARCHY = YES -DIRECTORY_GRAPH = YES -DOT_IMAGE_FORMAT = gif -DOT_PATH = -DOTFILE_DIRS = -DOT_GRAPH_MAX_NODES = 50 -MAX_DOT_GRAPH_DEPTH = 0 -DOT_TRANSPARENT = NO -DOT_MULTI_TARGETS = NO -GENERATE_LEGEND = YES -DOT_CLEANUP = YES -#--------------------------------------------------------------------------- -#Configuration::additions related to the search engine -#--------------------------------------------------------------------------- -SEARCHENGINE = YES diff --git a/Generators/GravADD_i/doc/packagedoc.h b/Generators/GravADD_i/doc/packagedoc.h deleted file mode 100644 index 246c0accf63984112feff99127553d7e38843ea8..0000000000000000000000000000000000000000 --- a/Generators/GravADD_i/doc/packagedoc.h +++ /dev/null @@ -1,88 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -/** -@page GravADD_i_page GravADD_i -@author Nele Boelaert (at_cern.ch) - -@section GravADD_i_introductionGravADD_i Introduction - -GravADD is a generator for gravitational scattering (GS) and black hole (BH) production in large extra dimensions. It has been implemented in the ATLAS software framework and has become available from release 15.6 onwards. - -References: -- More info about the physics: hep-ph/0608210 -- An internal note about the implementation: ATL-PHYS-INT-2010-012 -- The twiki GravADDForAtlas: https://twiki.cern.ch/twiki/bin/view/AtlasProtected/GravADDForAtlas - -The physics model used is the ADD model (hep-ph/9803315, hep-ph/9807344), but with the extra requirement that the 4-dimensional membrane has a finite width, which is motivated by physical arguments. The width of the membrane is parameterised by a parameter Ms, which has the dimension of mass; 1/Ms is a measure of the width (see the references listed above for more info). - -GravADD generates three different types of events: QCD, gravitational scattering (GS) and black hole (BH) events. The generator assigns a flag, gravev, to indicate if the event is a QCD (gravev=0), a GS (gravev=1) or a BH (gravev=2) event. In the Athena implementation, this flag is stored in the StoreGate's weight container, allowing the user to retrieve this information afterwards in the analysis stage. - -In a GS event, quantized Kaluza-Klein (KK) modes occur as intermediate states and, in order to calculate the scattering amplitude, the sum of all modes has to be made. But due to the finite width of the membrane, KK states with a mass above Ms are effectively cut off. So only KK states with a mass below Ms are included in the propagator. - -In hadron collisions, BHs are expected to form when the interacting partons come closer than twice the Schwarzschild radius. This sets a minimum on the BH mass. Another limit on the black hole mass comes from the existence of the finite width of the membrane, because, in the approximation of a narrow width, the membrane cannot be more extended than the black hole itself, meaning that the Schwarzschild radius should not be smaller than 1/Ms - -The BH generation is done with the Charybdis generator. The current version of Charybdis is 1.003, but an upgrade to Charybdis 2 is foreseen (soon). There is the possibility to switch of BH production in GravADD. - - -@section GravADD_i_paramsGravADD_i Parameters - -- MP = the fundamental Planck Scale defined as in (hep-ph/0608210). This is the default definition in GravADD, but the user can change via the jobOption to the definition used by the Particle Data Group. -- Ms = Kaluza Klein mass cutoff (1/Ms = measure of the width of the membrane) -- n = number of extra dimensions, with (n+4) the total number of dimensions. -- Meff = the effective Planck Scale which is used for the calculation of the gravitational scattering amplitude, which is a function of MP, Ms and n. - -Orthogonal set of parameters: Meff, Ms/MP (relative KK mass cutoff) and total number of dimensions. - - -@section GravADD_i_implementationGravADD_i Implementation in Athena - -The code is split over two separate packages, namely Generators/PythiaExo_i and Generators/GravADD_i. - -The GS part is implemented in PYTHIA 6.4 by actual changes in the code. A PythiaGS library was created for this purpose in the Generators/PythiaExo_i package. Basically, the event weight for a non BH event is reweighted with a factor sigma(QCD+GS)/sigma(QCD) in order to take into account GS. In order to be able to access the high-pT phase space, PythiaGS uses a modified version of the PYEVWT(WTXS) routine, and runs by default with the option mstp(142) =1. - -The BH generator is connected to PythiaGS as an external process using the UPINIT and UPEVNT routines that come with PYTHIA, and are called after initialisation with PYINIT USER. - -The QCD processes are selected in the normal way, using the MSUB array in PYTHIA. - -The package Generators/GravADD_i has been created to contain the code for the BH production and for reading in the parameters. - - -@section GravADD_i_ExampleGravADD_i Example JobOption - -jobOption file to initialize ("pyinit user GRAVADD") and set model parameters (a list with all options will be given later on) - -- from PythiaExo_i.PythiaGS_iConf import PythiaGS -- job +=PythiaGS() -- job.PythiaGS.PythiaCommand =["pyinit user GRAVADD","gravADD 1 8"] - -Warning: GravADD only generates weighted events, so you should always fill your analysis histograms with pari(10), which is stored in the weight container. - - -@section GravADD_i_ModelparamsGravADD_i JobOption Parameters - -Model parameters are set in the JobOption file, GravADD_i contains code to read them in - -Use: "gravADD <index> <value>" - -All complete list of all parameters: index, name, type, default, description: -- 1, TOTDIM, int, 10, total number of dimensions: (n+4) -- 2, CMEN, double, 7000., center of mass energy in GeV -- 3, MSPRAT, double, 1., Ms/MP -- 4, MEFF, double, 1000., Meff -- 5, PLDEF, int, 1, Planck mass definition, 1: as defined in hep-ph/0608210; 2: as defined by the Particle Data Group -- 6, GSONLY, int, 0, 0: GS and BH; 1: only GS but no BH - - - -@section GravADD_i_TipsGravADD_i Tips for analysis - -Note that since GravADD generates weighted events, the user should always fill analysis histograms with the event weight pari(10), which is stored as third entry in the event weight container. At the end of the event loop, the histograms need to be divided by the bin width and the sum of weights of all events, and multiplied with the total integrated cross section, in order to convert the results to nb/(dimension of the horizontal axis). The total integrated cross section of event samples generated in Athena, is stored as MetaData in the file. - -The flag gravev that GravADD uses to distinguish the three types of events (QCD, GS and BH) is stored as 4th entry in the event weight container. - - - - -*/ diff --git a/Generators/GravADD_i/share/jobOptions.GravADD.bin6.set8.py b/Generators/GravADD_i/share/jobOptions.GravADD.bin6.set8.py deleted file mode 100755 index 41558d385a5ab795b4d23e5da071c59ffb724941..0000000000000000000000000000000000000000 --- a/Generators/GravADD_i/share/jobOptions.GravADD.bin6.set8.py +++ /dev/null @@ -1,85 +0,0 @@ -############################################################### -# -# JOB OPTIONS FILE. THIS FILE IS TO DEMONSTRATE HOW THE USER CAN -# CHANGE THE PYTHIAGS and GravADD PARAMETERS. IT DOES NOT NECESARILY COMPLY TO -# THE ATLAS DEFAULTS FOR PHYSICS EVENT GENERATION. -#============================================================== -#-------------------------------------------------------------- -# Private Application Configuration option -from AthenaCommon.AppMgr import ServiceMgr -ServiceMgr.MessageSvc.OutputLevel = FATAL - -#-------------------------------------------------------------- -# Event related parameters -#-------------------------------------------------------------- -# Number of events to be processed (default is 10) -theApp.EvtMax = 100 -#-------------------------------------------------------------- -# Algorithms Private Options -#-------------------------------------------------------------- -from AthenaServices.AthenaServicesConf import AtRndmGenSvc -ServiceMgr += AtRndmGenSvc() -ServiceMgr.AtRndmGenSvc.Seeds = ["PYTHIA 4789899 989240512", -"PYTHIA_INIT 820021 2347532"] -# ServiceManager.AtRndmGenSvc.ReadFromFile = true; - -from AthenaCommon.AlgSequence import AlgSequence -job=AlgSequence() -from PythiaExo_i.PythiaGS_iConf import PythiaGS -job +=PythiaGS() -job.PythiaGS.PythiaCommand =[ - "pydat1 mstu 21 1", - "pysubs ckin 3 350.", - "gravADD 2 10000.", - "gravADD 4 1000.", - "gravADD 3 1.508", - "gravADD 5 2", # PDG definition of Mpl, MP = 1 TeV <=> MD = 2.652 TeV - "gravADD 6 1", # Only GS, no BHs - "pyinit win 10000", - "pyinit user GRAVADD", - "pypars mstp 52 2", # proton external PDF library - "pypars mstp 54 2", # proton external PDF library - "pypars mstp 56 2", # proton external PDF library - "pypars mstp 51 20650", # MRST2007lomod (LO* for MC)) - "pypars mstp 53 20650", # MRST2007lomod (LO* for MC)) - "pypars mstp 55 20650", # MRST2007lomod (LO* for MC)) - "pydat2 pmas 6 1 172.5", # PDG2007 TOP mass - "pydat2 pmas 24 1 80.403", # PDG2007 W mass - "pydat2 pmas 24 2 2.141", # PDG2007 W width - "pydat2 pmas 23 1 91.1876", # PDG2007 Z0 mass - "pydat2 pmas 23 2 2.4952", # PDG2007 Z0 width - "pypars mstp 81 21", # MI new model - "pypars mstp 82 4", # MI - "pypars mstp 70 0", # regularization scheme for ISR - "pypars mstp 72 1", # maximum scale for radiation off FSR dipoles - "pypars mstp 90 0", # strategy to compensate the prim kt - "pypars parp 78 0.3", # parameter controlling the amount of colour reconnection in FS - "pypars parp 80 0.1", - "pypars parp 82 2.3", # regularization scale pt0 for spectrum MI - "pypars parp 83 0.8", # parameters of the assumed matter overlap between the two colliding hadrons. - "pypars parp 84 0.7", - "pypars mstp 88 1" , # account for an assumed dominance of valence quarks at low transverse momentum scales - "pypars parp 90 0.25", - "pydat1 parj 81 0.29", - "pypars mstp 95 6", - "pydat1 mstj 11 4", - "pydat1 mstj 22 2", - "pydat1 parj 41 0.3", - "pydat1 parj 42 0.58", - "pydat1 parj 46 0.75", - "pypars mstp 84 1", - "pypars mstp 85 1", - "pypars mstp 86 2", - "pypars mstp 87 4", - "pypars mstp 89 1", - "pypars parp 89 1800" - ] - - -#from TruthExamples.TruthExamplesConf import DumpMC -#job += DumpMC() - -# -# End of job options file -# -############################################################### diff --git a/Generators/GravADD_i/src/GravADD.cxx b/Generators/GravADD_i/src/GravADD.cxx deleted file mode 100644 index 29c505114edd84ca8961d55d521f3aa4b08a4c7b..0000000000000000000000000000000000000000 --- a/Generators/GravADD_i/src/GravADD.cxx +++ /dev/null @@ -1,143 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// a set of c++ functions that act as an interface between -// Athena C++ PythiaExo and GravADD, - -#ifndef GRAVADD_I -#define GRAVADD_I - -#include <cstdlib> -#include <cstdio> -#include <stdlib.h> -#include <iostream> -#include "GravADD_i/GravADD.h" - - -int WriteGravParamInit=0; - -struct GravADDParams -{ - int TOTDIM; // 4 + n dimensions - double CMEN; // center of mass energy - double MSPRAT; // MS / MP - double MEFF; - int PLDEF; - int GSONLY; - -}; - -struct GravADDParams p; - - -// This function should be called from c++ : -extern void writegravaddparam( int index, int iparameter, double dparameter) -{ - - - // Write default values into GravParams when function is run for the first time: - if(WriteGravParamInit < 1) - { - WriteGravParamInit = 5; - p.TOTDIM = 10; //1, total number of dimensions - p.CMEN =7000.0 ; //2, Center of Mass Energy - p.MSPRAT = 1.0; //3, Ms/Mp - p.MEFF = 1000.0; //4, Effective mass - p.PLDEF = 1; //5, 1: Planck mass defined in hep-ph/0608210, 2: Planck mass defined in PDG - p.GSONLY = 0; //5, 1: only GS (no BH), 0: BH+GS - } - - if (index == 1) - { - p.TOTDIM = iparameter; - } - else if (index == 2 ) - { - p.CMEN = dparameter; - } - else if (index == 3) - { - p.MSPRAT = dparameter; - } - else if (index == 4) - { - p.MEFF = dparameter; - } - else if (index == 5) - { - p.PLDEF = iparameter; - } - else if (index == 6) - { - p.GSONLY = iparameter; - } - - -} - - -// This function should be called from FORTRAN code and is used to read parameters -// stored by the WriteGravADDParam function: -extern "C" void readgravaddparamint_(int* index, int* parameter) -{ - - // Write default values into GravParams when function is run for the first time: - if(WriteGravParamInit < 1) - { - WriteGravParamInit = 6; - p.TOTDIM = 10; //1 - p.CMEN =7000.0 ; //2 - p.MSPRAT = 1.0; //3 - p.MEFF = 1000.0; //4 - p.PLDEF = 1; // 5 - p.GSONLY = 0; - } - - if(*index == 1) - { - *parameter = p.TOTDIM; - } - if(*index == 5) - { - *parameter = p.PLDEF; - } - - if(*index == 6) - { - *parameter = p.GSONLY; - } - -} - -extern "C" void readgravaddparamdbl_(int* index, double* parameter) -{ - - // Write default values into GravParams when function is run for the first time: - if(WriteGravParamInit < 1) - { - WriteGravParamInit = 6; - p.TOTDIM = 10; //1 - p.CMEN =7000.0 ; //2 - p.MSPRAT = 1.0; //3 - p.MEFF = 1000.0; //4 - p.PLDEF = 1; // 5 - p.GSONLY = 0; // 6 - } - - if(*index == 2) - { - *parameter = (double)(p.CMEN); - } - else if(*index == 3) - { - *parameter = (double)(p.MSPRAT); - } - else if(*index == 4) - { - *parameter = (double)(p.MEFF); - } - -} - -#endif diff --git a/Generators/GravADD_i/src/gammafn.cxx b/Generators/GravADD_i/src/gammafn.cxx deleted file mode 100644 index 576c5e1f05ec09c4e897a2ee28f7812a310c2428..0000000000000000000000000000000000000000 --- a/Generators/GravADD_i/src/gammafn.cxx +++ /dev/null @@ -1,36 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#include "GravADD_i/gammafn.h" -#include <math.h> -#include <gsl/gsl_sf.h> - - -//#include <include/gsl/gsl_sf.h> - - -double gammafn_(double * x) { - return tgamma(*x); - -} - -float fgammafn_(float * x) { - return tgammaf(*x); - -} - -double igamma_(double * a, double * x) { - //return 0.01; -/* Non-normalized Incomplete Gamma Function - * - * Gamma(a,x) := Integral[ t^(a-1) e^(-t), {t,x,Infinity} ] - * - * x >= 0.0 - * Gamma(a, 0) := Gamma(a) - * - * exceptions: GSL_EDOM - */ - return gsl_sf_gamma_inc(*a, *x); - //return (ROOT::Math::inc_gamma_c(*a, *x))*(ROOT::Math::tgamma(*a) ); -} diff --git a/Generators/GravADD_i/src/initGravADD.F b/Generators/GravADD_i/src/initGravADD.F deleted file mode 100644 index ce4551f57b186c271db018b0e55b9d2bc8b6dd39..0000000000000000000000000000000000000000 --- a/Generators/GravADD_i/src/initGravADD.F +++ /dev/null @@ -1,285 +0,0 @@ -C************************************************************************* -C INITGRAVADD is called by UPINIT from upinit_py.F in Pythia_i -C This indirection allows for a -C joboption configurable process. See example jobOptions in share. -C - - SUBROUTINE INITGRAVADD - -C Initialization of USER process -C ------------------------------ - - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) -C INTEGER PYK,PYCHGE,PYCOMP - -C...Commonblocks. - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) - COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5) - COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200) - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) -C...To be used with CHARYBDIS - INTEGER MSSDEF,NBODY,IPRINT,MSSDEC - DOUBLE PRECISION MPLNCK,MINMSS,MAXMSS,INTMPL - LOGICAL TIMVAR,GTSCA,GRYBDY,KINCUT - COMMON /BHPARM/MPLNCK,MINMSS,MAXMSS,INTMPL,MSSDEF,NBODY,IPRINT, - & MSSDEC,TIMVAR,GTSCA,GRYBDY,KINCUT - DOUBLE PRECISION RHFACT,BHMASS,GENPOW,FACTOR - INTEGER TOTDIM, GSONLY - COMMON /BLACKH/ RHFACT,BHMASS,GENPOW,FACTOR,TOTDIM - -C...KKMASS to be used for KK-mass maximum integration, and MSAT as Atwoods Ms, Mp/Ms=PFACTOR, -C...GRAVEV is a flag to see if it was a gravitationally mediated event - DOUBLE PRECISION KKMASS,MSAT,PFACTOR,MS - INTEGER GRAVEV - COMMON/MASSES/KKMASS,MSAT,PFACTOR,MS,GRAVEV -C...Parameters used during the run, to be printed in the data files, therefore needed by WRIPAR - DOUBLE PRECISION UBMUL,WTPA -C... For chosing clustering algorithm -C character CLALG*6 - COMMON/RUNPAR/UBMUL,WTPA - SAVE /RUNPAR/,/MASSES/,/BLACKH/,/BHPARM/ -C...use CTEQ5L -C MSTP(51)=7 - - -C...By default we should have KK-QCD interference -C NOINT=0 -C...To improve statistics for small scales we can generate only grav and no QCD -C NOQCD=0 - -C... Default weight parameter -C WTPA=1.0D0 -C... The Upper integration Bound over KK-modes is UBMUL*MSAT - UBMUL=1.0D0 -C... Set default extra condition on hardness of hardest jet -C... when looking for particles in rapidity region between jets - KKMASS=-1.0D0 - -C... Measure the sum ET outside cones instead of Nch - ISUMET=0 - -C... If not zero, only look at gravitational scatterings from this region. - GRAVSEL=0 - -C... Number of random numbers to throw away for each event. - IRAND=1 - - CMEN = 7000d0 - index=2 - CALL readGravADDparamdbl(index,CMEN) - - -C...Set CHARYBDIS parameters - CALL SETCHA(CMEN) - if(MS.le.0) MS=MPLNCK - -C...Translation factor between our Mp and MsAtwood in hep-ph/9911231 (Atwood) -C...Mp/MsAtwood=PFACTOR - PFACTOR=2.0D0**((5.0D0-TOTDIM)/(-2.0D0+TOTDIM))* - $ 3.14159**((4.0D0-TOTDIM)/(-4.0D0+2.0D0*TOTDIM))* - $ Gammafn(dble(1/2.0D0*(-4.0D0+TOTDIM)))** - $ ((1.0D0/(2.0D0-TOTDIM))) - - -C...Atwoods mass MSAT and the Upper integration Bound of KK-modes -C...Changed default cutoff to MPLNCK - MSAT=MPLNCK/PFACTOR - if(KKMASS.le.0) KKMASS=MPLNCK*UBMUL - - - GSONLY= 0 - index=6 - CALL readGravADDparamint(index,GSONLY) - - - if (GSONLY.eq.0) then - CALL INITCHARYBDIS - endif - - write(*,*) 'initGravADD params: ',CMEN,' ',MPLNCK,' ',MS - - RETURN - - - END Subroutine - -C************************************************************* -C...SETCHA -C...Routine to set charybdis parameters - - SUBROUTINE SETCHA(CMEN) - IMPLICIT DOUBLE PRECISION(A-H, O-Z) -C...Commonblocks. - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) -C...To be used with CHARYBDIS - - DOUBLE PRECISION CMEN - INTEGER MAXPUP - PARAMETER(MAXPUP=100,PI=3.141593D0) - INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP - DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP - COMMON /HEPRUP/ IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2), - & IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP), - & XMAXUP(MAXPUP),LPRUP(MAXPUP) - INTEGER MSSDEF,NBODY,IPRINT,MSSDEC - DOUBLE PRECISION MPLNCK,MINMSS,MAXMSS,INTMPL,Gammafn - LOGICAL TIMVAR,GTSCA,GRYBDY,KINCUT - COMMON /BHPARM/MPLNCK,MINMSS,MAXMSS,INTMPL,MSSDEF,NBODY,IPRINT, - & MSSDEC,TIMVAR,GTSCA,GRYBDY,KINCUT - DOUBLE PRECISION RHFACT,BHMASS,GENPOW,FACTOR - INTEGER TOTDIM, PLDEF - COMMON /BLACKH/ RHFACT,BHMASS,GENPOW,FACTOR,TOTDIM -C...KKMASS to be used for KK-mass maximum integration, and MSAT as Atwoods Ms, Mp/Ms=PFACTOR, -C...GRAVEV is a flag to see if it was a gravitationally mediated event - DOUBLE PRECISION KKMASS,MSAT,PFACTOR,MS - INTEGER GRAVEV - COMMON/MASSES/KKMASS,MSAT,PFACTOR,MS,GRAVEV - DOUBLE PRECISION MEFF,MSPRAT -c CHARACTER*20 PDFIN - SAVE /HEPRUP/ - SAVE /MASSES/,/BLACKH/,/BHPARM/ - - -C...Set default value for paremeters - -C...Set beam paramters -C write(*,*) 'CMEN: ',CMEN - EBMUP(1) = CMEN/2.0D0 - EBMUP(2) = CMEN/2.0D0 - - IDBMUP(1)=2212 - IDBMUP(2)=2212 - IF ( CMEN.LT.5000.0D0 ) then - IDBMUP(1)=-2212 - IDBMUP(2)=2212 - endif - -c call get_string (npara,param,value," pdlabel ",PDFIN,'cteq6l1') -c WRITE(LNHOUT,*) 'Trying LHAPDF/PDFlib for PDF ',PDFIN -c PDFIN='cteq6l1' -c call get_lhapdf(PDFIN,MPDF) -c -c IF(MPDF.NE.-1)THEN -c PDFGUP(1)=MPDF/10000 -c PDFSUP(1)=MOD(MPDF,10000) -c PDFGUP(2)=PDFGUP(1) -c PDFSUP(2)=PDFSUP(1) -c ELSE -c WRITE(*,*) 'Error: PDF ',PDFIN,' not found. Quitting.' -c STOP -c ENDIF -c MSTP(52)=2 -c MSTP(51)=MPDF - - -C... The effective mass scale for gravitational interactions. If larger -C... than zero this will be used together with MSPRAT to calculate -C... MPLNCK and MS. - MEFF=-1.0D0 - MSPRAT=2.0D0 -C... Our cut-off scale (We want to change Ms after running -C... SETCHA (such that MPLNCK is set) only if it was not set -C.. while reading parmeters - MS=-1.0D0 - -C... IF MSBHCUT is set, MINMSS will also be influenced by MS - MSBHCUT=0 - -C--MSSDEF=1 means M_GT, MSSDEF=2 means M_DL and MSSDEF=3 means M_D - MPLNCK=1000.0D0 - MSSDEF=2 -C--Set number of dimensions (number of EXTRA dimensions is n=D-4) -C--TOTDIM can be in the range 6-11 - TOTDIM=6 - -C--Set mass window for black holes produced -c MINMSS=5000.0D0 -C...MAXMASS is set in UPINIT since EBMUP(1)+EBMUP(2) are not defined here - MAXMSS=EBMUP(1)+EBMUP(2) -C--Use Giddings+Thomas momentum scale for calling pdfs? -C--(See page 12 of hep-ph/0106219) - GTSCA=.TRUE. -C--Set NBODY decay of BH remnant - NBODY can be in range 2-5. - NBODY=2 -C--Turn time variation of BH Hawking temperature in decay on or off - TIMVAR=.TRUE. -C--Set which decay products are to be used: -C--MSSDEC=1 gives no heavy particles -C--MSSDEC=2 gives t, W and Z as well -C--MSSDEC=3 gives t, W, Z and Higgs as well - MSSDEC=3 -C--Turn grey-body factors on/off - GRYBDY=.TRUE. -C--Turn kinematic cut-off of decay on (rather than M=MPLANCK cut-off) - KINCUT=.TRUE. - - - TOTDIM = 10 - index=1 - CALL readGravADDparamint(index,TOTDIM) - - MEFF = 1000d0 - index=4 - CALL readGravADDparamdbl(index,MEFF) - - MSPRAT = 1d0 - index=3 - CALL readGravADDparamdbl(index,MSPRAT) - -C... GravADD is internally working with Planck mass definition from hep-ph/0608210 -C... If the users sets Planck mass definition to PDG choice, then also Ms/Mp is PDG -C... Convert Ms/Mp to original definition - NE=TOTDIM-4 - PLDEF = 1 - index=5 - CALL readGravADDparamint(index,PLDEF) - if (PLDEF.eq.2) then - FAC = (2.0d0**((NE-3.0d0)/(NE+2.0d0))) - $ *(PI**((NE-1.0d0)/(NE+2.0d0))) - MSPRAT = MSPRAT*FAC - endif - - MSBHCUT=1 - FACTOR=1.0D0 - - - if ( MEFF.GT.0.0D0 ) then - FAC=0.5D0*(((NE-2.0d0)*2.0D0**NE)*(PI**(NE/2.0d0-1.0d0))* - $ (MSPRAT**(2.0d0-NE)))**0.25d0 - MPLNCK=MEFF/FAC - MS=MPLNCK*MSPRAT - endif - IF ( MS.LT.0.0D0 ) MS=MPLNCK*MSPRAT - - - - write(*,*) 'in SETCHA: ',TOTDIM,' ',MEFF,' ',MSPRAT - - -C... When MPLNCK and TOTDIM are known set the mimimal mass -C...Number of extra dimensions - MINMSS=MPLNCK*2.0D0**((ne + 1.0D0)/(ne + 2.0D0)) - & *(1/(sqrt(3.14159))* - & (8.0D0*Gammafn(dble((ne+3.0D0)/2.0D0))/(ne + 2.0D0)) - & **(1.0D0/(ne + 1.0D0)))**(-((ne + 1.0D0)/(ne + 2.0D0))) - - IF ( FACTOR.LT.0.0D0 ) THEN - FACTOR=-FACTOR - ELSE - MINMSS=MAX(MPLNCK, - $ MINMSS/(SQRT(FACTOR)**((ne + 1.0D0)/(ne + 2.0D0)))) - ENDIF - - if ( MSBHCUT.EQ.1 ) THEN - MINMSS=MAX(MINMSS,(MPLNCK**(2+NE))*(MS**(-NE-1))*(2.0d0+NE)* - $ (PI**((NE+1)/2.0D0))/ - $ (16.0d0*GAMMAFN(0.5d0*(3.0d0+NE)))) - endif - MINMSS=MIN(MINMSS,MAXMSS) - GENPOW=1.0D0 - - RETURN - END diff --git a/Generators/GravADD_i/src/useGravADD.F b/Generators/GravADD_i/src/useGravADD.F deleted file mode 100644 index 9974f447b307fc76c82509e2e6bcf60309c0a23c..0000000000000000000000000000000000000000 --- a/Generators/GravADD_i/src/useGravADD.F +++ /dev/null @@ -1,2353 +0,0 @@ -#define PYTHIA - -C CDECK ID>, UPINIT. -C *CMZ :- -17/07/03 18.11.30 by Peter Richardson -C *-- Author : Chris Harris and Peter Richardson -C---------------------------------------------------------------------- - SUBROUTINE INITCHARYBDIS -C---------------------------------------------------------------------- -C Les Houches initialisation routine -C---------------------------------------------------------------------- - INCLUDE 'GravADD_i/charybdis1001.inc' -C--Les Houches run common block - INTEGER MAXPUP - PARAMETER(MAXPUP=100) - INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP - DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP - COMMON /HEPRUP/ IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2), - & IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP), - & XMAXUP(MAXPUP),LPRUP(MAXPUP) - -C--event common block - INTEGER MAXNUP - PARAMETER (MAXNUP=500) - INTEGER NUP,IDPRUP,IDUP,ISTUP,MOTHUP,ICOLUP - DOUBLE PRECISION XWGTUP,SCALUP,AQEDUP,AQCDUP,PUP,VTIMUP,SPINUP - COMMON/HEPEUP/NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP, - & IDUP(MAXNUP),ISTUP(MAXNUP),MOTHUP(2,MAXNUP), - & ICOLUP(2,MAXNUP),PUP(5,MAXNUP),VTIMUP(MAXNUP), - & SPINUP(MAXNUP) - SAVE /HEPRUP/,/HEPEUP/ -C...Pythia switches - DOUBLE PRECISION PARP,PARI - INTEGER MSTP,MSTI - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) - -C--local variables - INTEGER NSEARCH,I - DOUBLE PRECISION WGTSUM,WGTSQ,SPNZRO,SPNHLF,SPNONE,PTOTAL - DOUBLE PRECISION PPROBS(6,3) - DATA PPROBS /1.0d0, 1.0d0, 1.0d0, 1.0d0, 1.0d0, 1.0d0, - & 0.773d0, 0.776d0, 0.761d0, 0.743d0, 0.726d0, 0.711d0, - & 0.688d0, 0.827d0, 0.909d0, 0.959d0, 0.990d0, 1.011d0/ -C--beam particles and energies (only proton=2212 and antiproton=-2212) -c IDBMUP(1) = 2212 -c IDBMUP(2) = 2212 -c EBMUP(1) = 7000.0D0 -c EBMUP(2) = 7000.0D0 -c EBMUP(1) = 20000.0D0 -c EBMUP(2) = 20000.0D0 - - -C--Set MPLNCK and define what is meant by it: -C--MSSDEF=1 means M_GT, MSSDEF=2 means M_DL and MSSDEF=3 means M_D -C if( MPLNCK.eq.0.0D0) MPLNCK=1000.0D0 -ccc MPLNCK=5000.0D0 -C if(MSSDEF.eq.0) MSSDEF=2 -ccc MSSDEF=2 -C--Set number of dimensions (number of EXTRA dimensions is n=D-4) -C--TOTDIM can be in the range 6-11 -C if(TOTDIM.eq.0) TOTDIM=6 -ccc TOTDIM=6 -C--Use Giddings+Thomas momentum scale for calling pdfs? -C--(See page 12 of hep-ph/0106219) -ccc GTSCA=.TRUE. -C--Set mass window for black holes produced -C if(MINMSS.eq.0.0D0) MINMSS=5000.0D0 -ccc MINMSS=5000.0D0 -C...MAXMSS default value is set here since it depends on EBMUP(1)+EBMUP(2) - if(MAXMSS.eq.0.0D0) MAXMSS=EBMUP(1)+EBMUP(2) -ccc MAXMSS=EBMUP(1)+EBMUP(2) -C--Set NBODY decay of BH remnant - NBODY can be in range 2-5. -C if(NBODY.eq.0) NBODY=2 -ccc NBODY=2 -C--Turn time variation of BH Hawking temperature in decay on or off -ccc TIMVAR=.TRUE. -C--Set which decay products are to be used: -C--MSSDEC=1 gives no heavy particles -C--MSSDEC=2 gives t, W and Z as well -C--MSSDEC=3 gives t, W, Z and Higgs as well -C if(MSSDEC.eq.0) MSSDEC=3 -ccc MSSDEC=3 -C--Turn grey-body factors on/off -ccc GRYBDY=.TRUE. -C--Turn kinematic cut-off of decay on (rather than M=MPLANCK cut-off) -ccc KINCUT=.FALSE. -C--print out option (0=no printout, 1 =errors only, 2=errors+info) - IPRINT = 1 -C--parameters for the initial maximum weight search - NSEARCH=10000 -C--pdf's for the beams (use the generator default) -C--MUST BE THE SAME FOR BOTH BEAMS - PDFGUP(1) = -1 - PDFGUP(2) = -1 - PDFSUP(1) = -1 - PDFSUP(2) = -1 -C-------------------------------------------------------------------- -C END OF USER VARIABLES DON'T TOUCH ANYTHING BELOW HERE -C-------------------------------------------------------------------- -C--probabilities for particles of different spin (arbitrary normalisation) - IF (GRYBDY) THEN - SPNZRO = PPROBS(TOTDIM-5,1) - SPNHLF = PPROBS(TOTDIM-5,2) - SPNONE = PPROBS(TOTDIM-5,3) - ELSE - SPNZRO = 1d0 - SPNHLF = 0.750d0 - SPNONE = 1d0 - ENDIF -C--calculation of probability of emission for different particle types -C--only light SM particles - IF (MSSDEC.EQ.1) THEN - PTOTAL = (78.0d0*SPNHLF)+(18.0d0*SPNONE) - PQUARK = (60.0d0*SPNHLF)/PTOTAL - PLEPT = (12.0d0*SPNHLF)/PTOTAL - PNEUT = (6.0d0*SPNHLF)/PTOTAL - PGLUON = (16.0d0*SPNONE)/PTOTAL - PGAMMA = (2.0d0*SPNONE)/PTOTAL - PWBOSN = 0.0D0 - PZBOSN = 0.0D0 - PHIGGS = 0.0D0 -C--light SM partcles + top W/Z - ELSEIF (MSSDEC.EQ.2) THEN - PTOTAL = (3.0d0*SPNZRO)+(90.0d0*SPNHLF)+(24.0d0*SPNONE) - PQUARK = (72.0d0*SPNHLF)/PTOTAL - PLEPT = (12.0d0*SPNHLF)/PTOTAL - PNEUT = (6.0d0*SPNHLF)/PTOTAL - PGLUON = (16.0d0*SPNONE)/PTOTAL - PGAMMA = (2.0d0*SPNONE)/PTOTAL - PZBOSN = (SPNZRO+(2.0d0*SPNONE))/PTOTAL - PWBOSN = 2.0d0*PZBOSN - PHIGGS = 0.0D0 -C--light SM particles +top W/Z and Higgs - ELSE - PTOTAL = (4.0d0*SPNZRO)+(90.0d0*SPNHLF)+(24.0d0*SPNONE) - PQUARK = (72.0d0*SPNHLF)/PTOTAL - PLEPT = (12.0d0*SPNHLF)/PTOTAL - PNEUT = (6.0d0*SPNHLF)/PTOTAL - PGLUON = (16.0d0*SPNONE)/PTOTAL - PGAMMA = (2.0d0*SPNONE)/PTOTAL - PZBOSN = (SPNZRO+(2.0d0*SPNONE))/PTOTAL - PWBOSN = 2.0d0*PZBOSN - PHIGGS = SPNZRO/PTOTAL - ENDIF -C--what do do with the weights(here are generating weighted events) - IDWTUP = 1 -C--only one process - NPRUP = 1 -C--communication code - LPRUP(1) = 1 -C--calculate the maximum weight - WGTSUM = 0.0D0 - WGTSQ = 0.0D0 - XMAXUP(1) = 0.0D0 - DO I=1,NSEARCH - CALL CHEVNT(.FALSE.) - WGTSUM = WGTSUM+XWGTUP - WGTSQ = WGTSQ+XWGTUP**2 - XMAXUP(1) = MAX(XMAXUP(1),XWGTUP) - ENDDO - IF(MSTP(121).EQ.1) XMAXUP(1)=PARP(121)*XMAXUP(1) - WGTSUM = WGTSUM/DBLE(NSEARCH) - WGTSQ = MAX(WGTSQ/DBLE(NSEARCH)-WGTSUM**2,0.0D0) - WGTSQ = SQRT(WGTSQ/ DBLE(NSEARCH)) -C--cross section - XSECUP(1) = wgtsum -C--error on the cross section - XERRUP(1) = wgtsq - - END -CDECK ID>, UPEVNT. -*CMZ :- -17/07/03 18.11.30 by Peter Richardson -*-- Author : Chris Harris and Peter Richardson -C---------------------------------------------------------------------- - SUBROUTINE USEGRAVADD -C---------------------------------------------------------------------- -C Les Houches event routine -C---------------------------------------------------------------------- - IMPLICIT NONE -C write(*,*) 'in useGravADD' - CALL CHEVNT(.TRUE.) - END -CDECK ID>, CHDFIV. -*CMZ :- -17/07/03 18.11.30 by Peter Richardson -*-- Author : Ian Knowles -C----------------------------------------------------------------------- - SUBROUTINE CHDFIV(P0,P1,P2,P3,P4,P5,*) -C----------------------------------------------------------------------- -C Generates 5-body decay 0->1+2+3+4+5 using pure phase space -C (extracted from HERWIG) -C----------------------------------------------------------------------- - IMPLICIT NONE - DOUBLE PRECISION CHRGEN,P0(5),P1(5),P2(5),P3(5),P4(5),P5(5),B,C, - & AA,BB,CC,DD,EE,FF,TT,S1,RS1,GG,S2,RS2,HH,S3,PP,QQ,RR,SS,P1CM, - & P2345(5),P2CM,P345(5),P3CM,P45(5),P4CM - DOUBLE PRECISION TWO - PARAMETER (TWO=2.D0) - EXTERNAL CHRGEN - B=P0(5)-P1(5) - C=P2(5)+P3(5)+P4(5)+P5(5) - IF (B.LT.C) RETURN 1 - AA=(P0(5)+P1(5))**2 - BB=B**2 - CC=C**2 - DD=(P3(5)+P4(5)+P5(5))**2 - EE=(P4(5)+P5(5))**2 - FF=(P4(5)-P5(5))**2 - TT=(B-C)*P0(5)**11/729 -C Select squared masses S1, S2 and S3 of 2345, 345 and 45 subsystems - 10 S1=BB+CHRGEN(1)*(CC-BB) - RS1=SQRT(S1) - GG=(RS1-P2(5))**2 - S2=DD+CHRGEN(2)*(GG-DD) - RS2=SQRT(S2) - HH=(RS2-P3(5))**2 - S3=EE+CHRGEN(3)*(HH-EE) - PP=(AA-S1)*(BB-S1) - QQ=((RS1+P2(5))**2-S2)*(GG-S2)/S1 - RR=((RS2+P3(5))**2-S3)*(HH-S3)/S2 - SS=(S3-EE)*(S3-FF)/S3 - IF (PP*QQ*RR*SS*((GG-DD)*(HH-EE))**2.LT.TT*S1*S2*S3*CHRGEN(4)**2) - & GOTO 10 -C Do two body decays: 0-->1+2345, 2345-->2+345, 345-->3+45 and 45-->4+5 - P1CM=SQRT(PP/4)/P0(5) - P2345(5)=RS1 - P2CM=SQRT(QQ/4) - P345(5)=RS2 - P3CM=SQRT(RR/4) - P45(5)=SQRT(S3) - P4CM=SQRT(SS/4) - CALL CHDTWO(P0 ,P1,P2345,P1CM,TWO,.TRUE.) - CALL CHDTWO(P2345,P2,P345 ,P2CM,TWO,.TRUE.) - CALL CHDTWO(P345 ,P3,P45 ,P3CM,TWO,.TRUE.) - CALL CHDTWO(P45 ,P4,P5 ,P4CM,TWO,.TRUE.) - END -CDECK ID>, CHDFOR. -*CMZ :- -17/07/03 18.11.30 by Peter Richardson -*-- Author : Ian Knowles -C----------------------------------------------------------------------- - SUBROUTINE CHDFOR(P0,P1,P2,P3,P4,*) -C----------------------------------------------------------------------- -C Generates 4-body decay 0->1+2+3+4 using pure phase space -C (extracted from HERWIG) -C----------------------------------------------------------------------- - IMPLICIT NONE - DOUBLE PRECISION CHRGEN,P0(5),P1(5),P2(5),P3(5),P4(5),B,C,AA,BB, - & CC,DD,EE,TT,S1,RS1,FF,S2,PP,QQ,RR,P1CM,P234(5),P2CM,P34(5),P3CM - DOUBLE PRECISION TWO - PARAMETER (TWO=2.D0) - EXTERNAL CHRGEN - B=P0(5)-P1(5) - C=P2(5)+P3(5)+P4(5) - IF (B.LT.C) RETURN 1 - AA=(P0(5)+P1(5))**2 - BB=B**2 - CC=C**2 - DD=(P3(5)+P4(5))**2 - EE=(P3(5)-P4(5))**2 - TT=(B-C)*P0(5)**7/16 -C Select squared masses S1 and S2 of 234 and 34 subsystems - 10 S1=BB+CHRGEN(1)*(CC-BB) - RS1=SQRT(S1) - FF=(RS1-P2(5))**2 - S2=DD+CHRGEN(2)*(FF-DD) - PP=(AA-S1)*(BB-S1) - QQ=((RS1+P2(5))**2-S2)*(FF-S2)/S1 - RR=(S2-DD)*(S2-EE)/S2 - IF (PP*QQ*RR*(FF-DD)**2.LT.TT*S1*S2*CHRGEN(3)**2) GOTO 10 -C Do two body decays: 0-->1+234, 234-->2+34 and 34-->3+4 - P1CM=SQRT(PP/4)/P0(5) - P234(5)=RS1 - P2CM=SQRT(QQ/4) - P34(5)=SQRT(S2) - P3CM=SQRT(RR/4) - CALL CHDTWO(P0 ,P1,P234,P1CM,TWO,.TRUE.) - CALL CHDTWO(P234,P2,P34 ,P2CM,TWO,.TRUE.) - CALL CHDTWO(P34 ,P3,P4 ,P3CM,TWO,.TRUE.) - END -CDECK ID>, CHDTHR. -*CMZ :- -17/07/03 18.11.30 by Peter Richardson -*-- Author : Bryan Webber -C----------------------------------------------------------------------- - SUBROUTINE CHDTHR(P0,P1,P2,P3,*) -C----------------------------------------------------------------------- -C GENERATES THREE-BODY DECAY 0->1+2+3 DISTRIBUTED -C ACCORDING TO PHASE SPACE * WEIGHT -C (extracted from HERWIG) -C----------------------------------------------------------------------- - IMPLICIT NONE - DOUBLE PRECISION CHRGEN,CHRUNI,A,B,C,D,AA,BB,CC,DD,EE,FF,PP,QQ,WW, - & RR,PCM1,PC23,P0(5),P1(5),P2(5),P3(5),P23(5),TWO,ONE - EXTERNAL CHRGEN,CHRUNI - PARAMETER (ONE=1.0D0,TWO=2.D0) - A=P0(5)+P1(5) - B=P0(5)-P1(5) - C=P2(5)+P3(5) - IF (B.LT.C) RETURN 1 - D=ABS(P2(5)-P3(5)) - AA=A*A - BB=B*B - CC=C*C - DD=D*D - EE=(B-C)*(A-D) - A=0.5D0*(AA+BB) - B=0.5D0*(CC+DD) - C=4.0D0/(A-B)**2 -C -C CHOOSE MASS OF SUBSYSTEM 23 WITH PRESCRIBED DISTRIBUTION -C - 10 FF=CHRUNI(0,BB,CC) - PP=(AA-FF)*(BB-FF) - QQ=(CC-FF)*(DD-FF) - WW=ONE - RR=EE*FF*CHRGEN(0) - IF (PP*QQ*WW.LT.RR*RR) GOTO 10 -C -C FF IS MASS SQUARED OF SUBSYSTEM 23. -C -C DO 2-BODY DECAYS 0->1+23, 23->2+3 -C - P23(5)=SQRT(FF) - PCM1=SQRT(PP)*0.5D0/P0(5) - PC23=SQRT(QQ)*0.5D0/P23(5) - CALL CHDTWO(P0,P1,P23,PCM1,TWO,.TRUE.) - CALL CHDTWO(P23,P2,P3,PC23,TWO,.TRUE.) - END -CDECK ID>, CHDTWO. -*CMZ :- -17/07/03 18.11.30 by Peter Richardson -*-- Author : Bryan Webber & Mike Seymour -C----------------------------------------------------------------------- - SUBROUTINE CHDTWO(P0,P1,P2,PCM,COSTH,ZAXIS) -C----------------------------------------------------------------------- -C GENERATES DECAY 0 -> 1+2 -C -C PCM IS CM MOMENTUM -C -C COSTH = COS THETA IN P0 REST FRAME (>1 FOR ISOTROPIC) -C IF ZAXIS=.TRUE., COS THETA IS MEASURED FROM THE ZAXIS -C IF .FALSE., IT IS MEASURED FROM P0'S DIRECTION -C (extracted from HERWIG) -C----------------------------------------------------------------------- - IMPLICIT NONE - DOUBLE PRECISION CHRUNI,ONE,ZERO,PCM,COSTH,C,S,P0(5),P1(5),P2(5), - & PP(5),R(9) - LOGICAL ZAXIS - EXTERNAL CHRUNI - PARAMETER (ZERO=0.D0, ONE=1.D0) -C--CHOOSE C.M. ANGLES - C=COSTH - IF (C.GT.ONE) C=CHRUNI(0,-ONE,ONE) - S=SQRT(ONE-C*C) - CALL CHRAZM(PCM*S,PP(1),PP(2)) -C--PP IS MOMENTUM OF 2 IN C.M. - PP(3)=-(PCM*C) - PP(4)=SQRT(P2(5)**2+PCM**2) - PP(5)=P2(5) -C--ROTATE IF NECESSARY - IF (COSTH.LE.ONE.AND..NOT.ZAXIS) THEN - CALL CHUROT(P0,ONE,ZERO,R) - CALL CHUROB(R,PP,PP) - ENDIF -C--BOOST FROM C.M. TO LAB FRAME - CALL CHULOB(P0,PP,P2) - CALL CHVDIF(4,P0,P2,P1) - END -CDECK ID>, CHEVNT. -*CMZ :- -17/07/03 18.11.30 by Peter Richardson -*-- Author : Chris Harris -C---------------------------------------------------------------------- - SUBROUTINE CHEVNT(GENEVT) -C---------------------------------------------------------------------- -C Black Hole Production and Decay -C---------------------------------------------------------------------- - INCLUDE 'GravADD_i/charybdis1001.inc' -C--Les Houches run common block - INTEGER MAXPUP - PARAMETER(MAXPUP=100) - INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP - DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP - COMMON /HEPRUP/ IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2), - & IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP), - & XMAXUP(MAXPUP),LPRUP(MAXPUP) -C--event common block - INTEGER MAXNUP - PARAMETER (MAXNUP=500) - INTEGER NUP,IDPRUP,IDUP,ISTUP,MOTHUP,ICOLUP - DOUBLE PRECISION XWGTUP,SCALUP,AQEDUP,AQCDUP,PUP,VTIMUP,SPINUP - COMMON/HEPEUP/NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP, - & IDUP(MAXNUP),ISTUP(MAXNUP),MOTHUP(2,MAXNUP), - & ICOLUP(2,MAXNUP),PUP(5,MAXNUP),VTIMUP(MAXNUP), - & SPINUP(MAXNUP) - SAVE /HEPRUP/,/HEPEUP/ -C...Pythia switches - DOUBLE PRECISION PARP,PARI - INTEGER MSTP,MSTI - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) - -C--Local Variables - DOUBLE PRECISION ECMS,ONE,TWO,PIFAC,THREE,ZERO, - & CHRGEN,RPOW,A0,A1,EMJ,FACT,QSQ,HCS,prob, - & FACTR,RCS,BHPOW,DISF1,DISF2,OMEGAD,DL2GT, - & RHORSQ,PLPOW,MPFACT,PA(5),PB(5),PC(5),PCM,CHUPCM,PCMF(5), - & XXMIN,XLMIN,EMSCA,XX(2),DISF(13,2),GEV2PB,CHFMAS - INTEGER STAT,IBARYN,IQRK(MAXPUP),IGLU(MAXPUP),IQBR(MAXPUP),MTRY, - & NQRK,NGLU,NQBR,JQRK,JGLU,JQBR,J,ISTART,CHST,iline,FSTAT(5), - & IP,IQ,PT,I,BHCHRG,IDN(2),NTRY,NHTRY,SAVCHR,SAVBRN,ID(5), - & MHTRY,LTRY,LHTRY,CHFCHG,SPIN,FSPIN(5) - LOGICAL GENEVT,CHRLOG,FIRST - EXTERNAL CHFMAS,CHRGEN,CHUPCM,CHRLOG,CHFCHG - PARAMETER(ONE=1.0D0,TWO=2.0D0,THREE=3.0D0,ZERO=0.0D0,NHTRY=200) - PARAMETER(MHTRY=20,LHTRY=200,GEV2PB=389379.D3) - SAVE HCS,BHPOW,PLPOW,RPOW,A0,A1,FACT,MPFACT - DATA FIRST/.TRUE./ - PIFAC = ACOS(-ONE) - IF(FIRST) THEN -C--Convert MPLNCK to M_GT if above value is M_DL - IF (MSSDEF.EQ.2) THEN - DL2GT=(TWO**(TOTDIM-6)*PIFAC**(TOTDIM-5))**(1/(TOTDIM-TWO)) - INTMPL=DL2GT*MPLNCK -C--Convert MPLNCK to M_GT if above value is M_D - ELSEIF (MSSDEF.EQ.3) THEN - INTMPL=MPLNCK*TWO**(1/(TOTDIM-TWO)) - ELSE - INTMPL=MPLNCK - ENDIF -C--Calculate other parameters - PLPOW=TWO/(TOTDIM-THREE) - BHPOW=PLPOW-GENPOW - RPOW=1/BHPOW - A0=MINMSS**BHPOW - A1=(MAXMSS**BHPOW-A0) - IF (TOTDIM.EQ.11) THEN - OMEGAD=(PIFAC**5)/12 - ELSEIF (TOTDIM.EQ.10) THEN - OMEGAD=(32*PIFAC**4)/105 - ELSEIF (TOTDIM.EQ.9) THEN - OMEGAD=(PIFAC**4)/3 - ELSEIF (TOTDIM.EQ.8) THEN - OMEGAD=(16*PIFAC**3)/15 - ELSEIF (TOTDIM.EQ.7) THEN - OMEGAD=PIFAC**3 - ELSEIF(TOTDIM.EQ.6) THEN - OMEGAD=(8*PIFAC**2)/3 - ELSEIF(TOTDIM.EQ.5) THEN - OMEGAD=2*PIFAC**2 - ENDIF - MPFACT=INTMPL**(TOTDIM-2) - RHFACT=(4*(2*PIFAC)**(TOTDIM-4))/((TOTDIM-2)*OMEGAD*MPFACT) - FIRST = .FALSE. - ENDIF - IF ( MINMSS.GE.MAXMSS ) THEN - XWGTUP=0.0D0 - RETURN - ENDIF -C--Select a mass for the produced black hole - ECMS = 2.0D0*SQRT(EBMUP(1)*EBMUP(2)) - EMSCA=(A0+A1*CHRGEN(1))**RPOW - BHMASS=EMSCA - QSQ=EMSCA**2 - EMJ=EMSCA**(1-BHPOW)/BHPOW*A1 -C--Calculate (r_h)**2 and initial T_H - RHORSQ=(RHFACT*EMSCA)**PLPOW -C--Select initial momentum fractions - XXMIN=QSQ/ECMS**2 - XLMIN=LOG(XXMIN) - FACT=-(GEV2PB*PIFAC*RHORSQ*EMJ*XLMIN*TWO/EMSCA) -C--Change momentum scale for calling pdfs (see comment above) - IF (GTSCA) EMSCA=1/SQRT(RHORSQ*FACTOR) - SCALUP = EMSCA - CALL CHPDF(XXMIN,XLMIN,EMSCA,XX,DISF) - HCS=ZERO - DISF1=ZERO - DISF2=ZERO - DO 30 IP=1,13 - DISF1=DISF1+DISF(IP,1) - 30 DISF2=DISF2+DISF(IP,2) - FACTR=FACT*DISF1*DISF2 - HCS=FACTR - XWGTUP = HCS - IF ( MSTP(142).EQ.1 ) THEN -C PARP(200)=(BHMASS**4)/(5000.0**4) -C FACT=FACT*PARP(200) -C PARP(200)=1.0D0 - if (DISF1*DISF2.ne.0d0) PARP(200)=0.05D0/(DISF1*DISF2) -C write(*,*) 'in charybdis, parp(200): ', PARP(200) - XWGTUP=XWGTUP*PARP(200) - ENDIF - IF(.NOT.GENEVT) RETURN - RCS=HCS*CHRGEN(0) - HCS = 0.0D0 - DO 20 IP=1,13 - DO 10 IQ=1,13 - FACTR=FACT*DISF(IP,1)*DISF(IQ,2) - HCS=HCS+FACTR - IF (HCS.GT.RCS) GOTO 99 - 10 CONTINUE - 20 CONTINUE -C--Generate event - 99 IDN(1)=IP - IDN(2)=IQ -C--put the incoming particles in the Les Houches common block - NUP = 2 - DO I=1,2 - IF(IDN(I).GT.6.AND.IDN(I).LE.12) THEN - IDN(I) = -MOD(IDN(I)-1,6)-1 - ELSEIF(IDN(I).EQ.13) THEN - IDN(I) = 21 - ENDIF - IDUP(I) = IDN(I) - PUP(1,I) = 0.0D0 - PUP(2,I) = 0.0D0 - PUP(3,I) = XX(I)*EBMUP(I) - PUP(4,I) = XX(I)*EBMUP(I) - ISTUP(I) = -1 - ENDDO - PUP(3,2) = -PUP(3,2) - CALL CHVSUM(4,PUP(1,1),PUP(1,2),PCMF) - CALL CHUMAS(PCMF) -C--Calculate BH charge (actually 3*charge) - BHCHRG=CHFCHG(IDN(1))+CHFCHG(IDN(2)) -C--Black Hole decay - MTRY = 0 - CHST = BHCHRG - 35 MTRY = MTRY+1 - BHCHRG = CHST - NUP = 2 - CALL CHVEQU(5,PCMF,PA) - 40 NUP = NUP+1 -C--Check that BH mass > MPLNCK if not using KINCUT - IF ((.NOT.KINCUT).AND.(PA(5).LT.MPLNCK)) GOTO 55 -C--Set BHMASS to correct value (necessary in time varying case) - IF (TIMVAR) BHMASS=PA(5) -C--Select the decay product - LTRY=0 - 45 IF (MSSDEC.EQ.1) THEN - CALL CHHBH1(PT,STAT,SPIN,BHCHRG) - ELSEIF (MSSDEC.EQ.2) THEN - CALL CHHBH2(PT,STAT,SPIN,BHCHRG) - ELSE - CALL CHHBH3(PT,STAT,SPIN,BHCHRG) - ENDIF -C--Obtain energy of emitted parton - CALL CHUBHS(PC(4),STAT,SPIN) - PC(5)=CHFMAS(PT) -C--Check energy > mass for selected parton - IF (PC(4).LT.PC(5)) THEN - BHCHRG=BHCHRG+CHFCHG(PT) - IF(IPRINT.EQ.2) WRITE (*,*) 'Not enough energy' - GOTO 45 - ENDIF -C--Check that emission is kinematically allowed - IF (PC(4).GT.(PA(5)**2+PC(5)**2)/(TWO*PA(5))) THEN - IF (KINCUT.OR.LTRY.GT.LHTRY) THEN - GOTO 50 - ELSE - LTRY=LTRY+1 - BHCHRG=BHCHRG+CHFCHG(PT) - GOTO 45 - ENDIF - ENDIF -C--Use 2-body phase space decay - PB(5)=SQRT(PA(5)**2+PC(5)**2-TWO*PA(5)*PC(4)) -C--Calculate centre of mass momentum for decay - PCM=SQRT(PC(4)**2-PC(5)**2) -C--PA is BH 5-momentum before, PB after decay - CALL CHDTWO(PA,PB,PC,PCM,TWO,.TRUE.) -C--Add emitted particle to event record - CALL CHVEQU(5,PC,PUP(1,NUP)) - IDUP(NUP)=PT - ISTUP(NUP) = 1 - MOTHUP(1,NUP) = 1 - MOTHUP(2,NUP) = 2 -C--Change BH 5-momentum back to PA - CALL CHVEQU(5,PB,PA) - GOTO 40 - 50 BHCHRG=BHCHRG+CHFCHG(PT) - 55 NUP = NUP-1 -C--Calculate the baryon number violation -C--Find the baryon number of the inital state - IBARYN = 0 - DO I=1,2 - IF(ABS(IDUP(I)).LE.6) IBARYN = IBARYN-SIGN(1,IDUP(I)) - ENDDO -C--and the final state - DO I=3,NUP - IF(ABS(IDUP(I)).LE.6) IBARYN = IBARYN+SIGN(1,IDUP(I)) - ENDDO -C--Try to balance this out - NTRY = 0 - SAVCHR = BHCHRG - SAVBRN = IBARYN - 60 NTRY = NTRY+1 - PCM = PA(5) - DO I=1,NBODY - IF (MSSDEC.EQ.1) THEN - CALL CHHBH1(ID(I),FSTAT(I),FSPIN(I),BHCHRG) - ELSEIF (MSSDEC.EQ.2) THEN - CALL CHHBH2(ID(I),FSTAT(I),FSPIN(I),BHCHRG) - ELSE - CALL CHHBH3(ID(I),FSTAT(I),FSPIN(I),BHCHRG) - ENDIF - IF(ABS(ID(I)).LE.6) THEN - IBARYN = IBARYN+SIGN(1,ID(I)) - ENDIF - PCM = PCM-CHFMAS(ID(I)) - ENDDO - IF(((IBARYN.NE.0.OR.BHCHRG.NE.0).OR. - & PCM.LT.0.0D0).AND.NTRY.LE.NHTRY) THEN - BHCHRG = SAVCHR - IBARYN = SAVBRN - GOTO 60 - ENDIF -C--Go back if needed - IF(NTRY.GT.NHTRY) THEN - IF(MTRY.LE.MHTRY) THEN - IF(IPRINT.EQ.2) THEN - WRITE (*,*) 'Attempt',MTRY,' failed.' - WRITE (*,*) 'Starting whole decay again' - ENDIF - GOTO 35 - ELSE - IF(IPRINT.GT.1) - & PRINT *,'WARNING TOO MANY TRIES NEEDED' - XWGTUP = 0.0D0 - RETURN - ENDIF - ENDIF -C--Perform the NBODY decay of the remnant - DO I=1,NBODY - PUP(5,NUP+I) = CHFMAS(ID(I)) - ISTUP(NUP+I) = 1 - IDUP(NUP+I) = ID(I) - MOTHUP(1,NUP+I) = 1 - MOTHUP(2,NUP+I) = 2 - ENDDO -C--check if decay is allowed - IF (NBODY.EQ.2) THEN - PCM = CHUPCM(PA(5),PUP(5,NUP+1),PUP(5,NUP+2)) - CALL CHDTWO(PA,PUP(1,NUP+1),PUP(1,NUP+2),PCM,TWO,.TRUE.) - ELSEIF (NBODY.EQ.3) THEN - CALL CHDTHR(PA,PUP(1,NUP+1),PUP(1,NUP+2),PUP(1,NUP+3),*100) - ELSEIF (NBODY.EQ.4) THEN - CALL CHDFOR(PA,PUP(1,NUP+1),PUP(1,NUP+2),PUP(1,NUP+3), - & PUP(1,NUP+4),*100) - ELSEIF (NBODY.EQ.5) THEN - CALL CHDFIV(PA,PUP(1,NUP+1),PUP(1,NUP+2),PUP(1,NUP+3), - & PUP(1,NUP+4),PUP(1,NUP+5),*100) - ENDIF - GOTO 110 - 100 IF(IPRINT.GE.1) - & PRINT *,'FAILED TO PERFORM ',NBODY,' DECAY OF REMNENT' - GOTO 35 - 110 NUP = NUP+NBODY -C--Now sort out the colour connections -C--First the initial state - NQRK = 0 - NGLU = 0 - NQBR = 0 - DO I=1,2 - IF(IDUP(I).GT.0.AND.IDUP(I).LE.6) THEN - NQBR = NQBR+1 - IQBR(NQBR) = I - ELSEIF(IDUP(I).LT.0.AND.IDUP(I).GE.-6) THEN - NQRK = NQRK+1 - IQRK(NQRK) = I - ELSEIF(IDUP(I).EQ.21) THEN - NGLU = NGLU+1 - IGLU(NGLU) = I - ENDIF - ENDDO -C--Then the final state - DO I=3,NUP - IF(IDUP(I).GT.0.AND.IDUP(I).LE.6) THEN - NQRK = NQRK+1 - IQRK(NQRK) = I - ELSEIF(IDUP(I).LT.0.AND.IDUP(I).GE.-6) THEN - NQBR = NQBR+1 - IQBR(NQBR) = I - ELSEIF(IDUP(I).EQ.21) THEN - NGLU = NGLU+1 - IGLU(NGLU) = I - ENDIF - ENDDO -C--zero the colour connections - DO I=1,NUP - DO J=1,2 - ICOLUP(J,I) = 0 - ENDDO - ENDDO -C--Now make the colour connections - JGLU = 0 - JQBR = 0 - JQRK = 0 - IF(NQRK.GT.0) THEN - I = IQRK(1) - JQRK = 1 - J = 1 - ELSEIF(NGLU.GT.0) THEN - I = IGLU(1) - JGLU = 1 - J = 2 - ELSE - GOTO 200 - ENDIF - ISTART = I - ILINE = 500 -C--Find an antiquark or gluon to pair this with - 150 IF(J.EQ.1.OR.J.EQ.2) THEN - IF(JQBR.EQ.NQBR.and.JGLU.EQ.NGLU) THEN - GOTO 250 - ELSE - PROB = DBLE(NQBR-JQBR)/DBLE(NQBR+NGLU-JQBR-JGLU) -C--Pair with an antiquark - IF(CHRLOG(PROB)) THEN - IF(JQBR.NE.NQBR) THEN - IF(NGLU.NE.JGLU.and.NQBR-JQBR.EQ.1) GOTO 150 - JQBR = JQBR+1 - IF(I.LE.2) THEN - ICOLUP(2,I ) = ILINE - ELSE - ICOLUP(1,I ) = ILINE - ENDIF - IF(IQBR(JQBR).LE.2) THEN - ICOLUP(1,IQBR(JQBR)) = ILINE - ELSE - ICOLUP(2,IQBR(JQBR)) = ILINE - ENDIF - ILINE = ILINE+1 - I = IQBR(JQBR) - J = 3 - GOTO 150 - ELSE - GOTO 250 - ENDIF -C--Pair with a gluon - ELSE - IF(JGLU.NE.NGLU) THEN - JGLU = JGLU+1 - IF(I.LE.2) THEN - ICOLUP(2,I ) = ILINE - ELSE - ICOLUP(1,I ) = ILINE - ENDIF - IF(IGLU(JGLU).LE.2) THEN - ICOLUP(1,IGLU(JGLU)) = ILINE - ELSE - ICOLUP(2,IGLU(JGLU)) = ILINE - ENDIF - ILINE = ILINE+1 - I = IGLU(JGLU) - J = 2 - GOTO 150 - ELSE - GOTO 250 - ENDIF - ENDIF - ENDIF -C--Find a quark to pair this with - ELSEIF(J.EQ.3) THEN - IF(JQRK.NE.NQRK) THEN - JQRK = JQRK+1 - IF(I.LE.2) THEN - ICOLUP(2,I ) = ILINE - ELSE - ICOLUP(1,I ) = ILINE - ENDIF - IF(IQRK(JQRK).LE.2) THEN - ICOLUP(1,IQRK(JQRK)) = ILINE - ELSE - ICOLUP(2,IQRK(JQRK)) = ILINE - ENDIF - ILINE = ILINE+1 - I = IQRK(JQRK) - J = 1 - GOTO 150 - ELSE - GOTO 250 - ENDIF - ENDIF - 250 IF(I.LE.2) THEN - ICOLUP(2,I) = ILINE - ELSE - ICOLUP(1,I) = ILINE - ENDIF - IF(ISTART.LE.2) THEN - ICOLUP(1,ISTART) = ILINE - ELSE - ICOLUP(2,ISTART) = ILINE - ENDIF -C--zero the flavours - 200 DO I=1,NUP - IF(IDUP(I).GT.0.AND.IDUP(I).LE.6) THEN - ICOLUP(2,I) = 0 - ELSEIF(IDUP(I).GE.-6.AND.IDUP(I).lt.0) THEN - ICOLUP(1,I) = 0 - ELSEIF(IDUP(I).NE.21) THEN - ICOLUP(1,I) = 0 - ICOLUP(2,I) = 0 - ENDIF - ENDDO - END -CDECK ID>, CHFCHG. -*CMZ :- -17/07/03 18.11.30 by Peter Richardson -*-- Author : Peter Richardson -C---------------------------------------------------------------------- - FUNCTION CHFCHG(ID) -C---------------------------------------------------------------------- -C Function to return the charge of a SM particle input is PDG code -C---------------------------------------------------------------------- - IMPLICIT NONE - INTEGER CHFCHG,ID - IF(ABS(ID).LE.6) THEN - IF(MOD(ID,2).EQ.0) THEN - CHFCHG = 2 - ELSE - CHFCHG = -1 - ENDIF - ELSEIF(ABS(ID).GE.11.AND.ABS(ID).LE.16) THEN - IF(MOD(ID,2).EQ.0) THEN - CHFCHG = 0 - ELSE - CHFCHG = -3 - ENDIF - ELSEIF((ID.GE.21.AND.ID.LE.23).OR.ID.EQ.25) THEN - CHFCHG = 0 - ELSEIF(ABS(ID).EQ.24) THEN - CHFCHG = 3 - ELSE - print *,'CHFCHG WARNING UNKNOWN PARTICLE',ID - STOP - ENDIF - IF(ID.LT.0) CHFCHG = -CHFCHG - END -CDECK ID>, CHFMAS. -*CMZ :- -17/07/03 18.11.30 by Peter Richardson -*-- Author : Peter Richardson -C---------------------------------------------------------------------- - FUNCTION CHFMAS(ID) -C---------------------------------------------------------------------- -C Function to return the mass of a SM particle input is PDG code -C This is generator dependent -C---------------------------------------------------------------------- -C--get the masses from the HERWIG common block -#if !defined(PYTHIA) - INCLUDE 'GravADD_i/HERWIG64.INC' - INTEGER ID - DOUBLE PRECISION CHFMAS - IF(ABS(ID).LE.6) THEN - CHFMAS = RMASS(ABS(ID)) - ELSEIF(ABS(ID).GE.11.AND.ABS(ID).LE.16) THEN - CHFMAS = RMASS(110+ABS(ID)) - ELSEIF(ID.EQ.21) THEN - CHFMAS = RMASS(13) - ELSEIF(ID.EQ.22) THEN - CHFMAS = 0.0D0 - ELSEIF(ID.EQ.23) THEN - CHFMAS = RMASS(200) - ELSEIF(ABS(ID).EQ.24) THEN - CHFMAS = RMASS(198) - ELSEIF(ID.EQ.25) THEN - CHFMAS = RMASS(201) - ELSE - PRINT *,'CHFMAS WARNING UNKNOWN PARTICLE',ID - STOP - ENDIF -#endif -C--get the masses from the PYTHIA common block -#if defined(PYTHIA) - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) - INTEGER PYCOMP,ID - DOUBLE PRECISION CHFMAS - EXTERNAL PYCOMP - CHFMAS = PMAS(PYCOMP(ID),1) -#endif - END -CDECK ID>, CHHBH1. -*CMZ :- -17/07/03 18.11.30 by Peter Richardson -*-- Author : Chris Harris -C--------------------------------------------------------------------- - SUBROUTINE CHHBH1(PT,STAT,SPIN,BHCHRG) -C--------------------------------------------------------------------- -C Subroutine to select the type of the next particle -C--------------------------------------------------------------------- - INCLUDE 'GravADD_i/charybdis1001.inc' - INTEGER PT,STAT,SPIN,BHCHRG,CHFCHG,I - DOUBLE PRECISION PTYPE,CHRGEN,EPS - LOGICAL FIRST - DATA FIRST/.TRUE./ - EXTERNAL CHRGEN,CHFCHG - PARAMETER(EPS=1.0D-6) -C--initialisation on first call - IF(FIRST) THEN - PFERM (1) = PQUARK - PFERM (2) = PFERM(1)+PLEPT - PFERM (3) = PFERM(2)+PNEUT - PBOSON(1) = PFERM(3)+PGLUON - PBOSON(2) = PBOSON(1)+PGAMMA -C--check the sum - IF(ABS(PBOSON(2)-1.0D0).GT.EPS) THEN - IF(IPRINT.GE.1) THEN - print *,'WARNING PROBABILITIES DO NOT SUM TO ONE' - print *,'RENORMALISING' - ENDIF - DO I=1,3 - PFERM(I) = PFERM(I)/PBOSON(2) - ENDDO - PBOSON(1) = PBOSON(1)/PBOSON(2) - PQUARK = PQUARK/PBOSON(2) - PLEPT = PLEPT /PBOSON(2) - PNEUT = PNEUT /PBOSON(2) - PGLUON = PGLUON/PBOSON(2) - PGAMMA = PGAMMA/PBOSON(2) - PBOSON(2) = 1.0D0 - ENDIF - FIRST = .FALSE. - ENDIF -C--Assume decay product is a fermion - STAT=-1 - SPIN=1 -C--Choose decay product - PTYPE=CHRGEN(2) -C--Change STAT to 1 and SPIN to 2 if we have a boson instead - IF (PTYPE.GE.PFERM(3)) THEN - STAT=1 - SPIN=2 - ENDIF -C--Choose particle type - IF (PTYPE.LT.PFERM(1)) THEN -C--Quarks - PT=1+INT(5*PTYPE/PFERM(1)) -C--Ensure BH charge remains close to 0, and antiparticles half time - IF (((CHFCHG(PT)*BHCHRG).LT.0).OR. - & ((BHCHRG.EQ.0).AND.(CHRGEN(4).LT.0.5D0))) THEN - PT=-PT - ENDIF - ELSEIF (PTYPE.LT.PFERM(2)) THEN -C--Leptons - PT=11+2*INT(3*(PTYPE-PFERM(1))/PLEPT) -C--Ensure BH charge remains close to 0, and antiparticles half time - IF (((CHFCHG(PT)*BHCHRG).LT.0).OR. - & ((BHCHRG.EQ.0).AND.(CHRGEN(4).LT.0.5D0))) THEN - PT=-PT - ENDIF - ELSEIF (PTYPE.LT.PFERM(3)) THEN -C--Neutrinos - PT=12+2*INT(3*(PTYPE-PFERM(2))/PNEUT) - IF(CHRGEN(4).LT.0.5D0) PT = -PT - ELSEIF (PTYPE.LT.PBOSON(1)) THEN -C--Gluons - PT=21 - ELSE -C--Photons - PT=22 - ENDIF -C--Calculate new charge of BH - BHCHRG=BHCHRG-CHFCHG(PT) - END -CDECK ID>, CHHBH2. -*CMZ :- -17/07/03 18.11.30 by Peter Richardson -*-- Author : Chris Harris -C--------------------------------------------------------------------- - SUBROUTINE CHHBH2(PT,STAT,SPIN,BHCHRG) -C--------------------------------------------------------------------- -C Subroutine to select the type of the next particle -C--------------------------------------------------------------------- - INCLUDE 'GravADD_i/charybdis1001.inc' - INTEGER PT,STAT,SPIN,BHCHRG,CHFCHG,I - DOUBLE PRECISION PTYPE,CHRGEN,EPS - LOGICAL FIRST - DATA FIRST/.TRUE./ - EXTERNAL CHRGEN,CHFCHG - PARAMETER(EPS=1.0D-6) -C--initialisation on first call - IF(FIRST) THEN - PFERM (1) = PQUARK - PFERM (2) = PFERM(1)+PLEPT - PFERM (3) = PFERM(2)+PNEUT - PBOSON(1) = PFERM(3)+PGLUON - PBOSON(2) = PBOSON(1)+PWBOSN - PBOSON(3) = PBOSON(2)+PZBOSN - PBOSON(4) = PBOSON(3)+PGAMMA -C--check the sum - IF(ABS(PBOSON(4)-1.0D0).GT.EPS) THEN - IF(IPRINT.GE.1) THEN - print *,'WARNING PROBABILITIES DO NOT SUM TO ONE' - print *,'RENORMALISING' - ENDIF - DO I=1,3 - PFERM(I) = PFERM(I)/PBOSON(4) - PBOSON(I) = PBOSON(I)/PBOSON(4) - ENDDO - PQUARK = PQUARK/PBOSON(4) - PLEPT = PLEPT /PBOSON(4) - PNEUT = PNEUT /PBOSON(4) - PGLUON = PGLUON/PBOSON(4) - PGAMMA = PGAMMA/PBOSON(4) - PZBOSN = PZBOSN/PBOSON(4) - PWBOSN = PWBOSN/PBOSON(4) - PBOSON(4) = 1.0D0 - ENDIF - FIRST = .FALSE. - ENDIF -C--Assume decay product is a fermion - STAT=-1 - SPIN=1 -C--Choose decay product - PTYPE=CHRGEN(2) -C--Change STAT to 1 and SPIN to 2 if we have a boson instead except for one -C--degree of freedom of massive gauge bosons - IF (PTYPE.GE.PFERM(3)) THEN - STAT=1 - SPIN=2 - IF ((PTYPE.GE.PBOSON(1)).AND.(PTYPE.LT.PBOSON(3))) THEN - IF (3*CHRGEN(3).LT.1.0d0) SPIN=0 - ENDIF - ENDIF -C--Choose particle type - IF (PTYPE.LT.PFERM(1)) THEN -C--Quarks - PT=1+INT(6*PTYPE/PFERM(1)) -C--Ensure BH charge remains close to 0, and antiparticles half time - IF (((CHFCHG(PT)*BHCHRG).LT.0).OR. - & ((BHCHRG.EQ.0).AND.(CHRGEN(4).LT.0.5D0))) THEN - PT=-PT - ENDIF - ELSEIF (PTYPE.LT.PFERM(2)) THEN -C--Leptons - PT=11+2*INT(3*(PTYPE-PFERM(1))/PLEPT) -C--Ensure BH charge remains close to 0, and antiparticles half time - IF (((CHFCHG(PT)*BHCHRG).LT.0).OR. - & ((BHCHRG.EQ.0).AND.(CHRGEN(4).LT.0.5D0))) THEN - PT=-PT - ENDIF - ELSEIF (PTYPE.LT.PFERM(3)) THEN -C--Neutrinos - PT=12+2*INT(3*(PTYPE-PFERM(2))/PNEUT) - IF(CHRGEN(4).LT.0.5D0) PT = -PT - ELSEIF (PTYPE.LT.PBOSON(1)) THEN -C--Gluons - PT=21 - ELSEIF (PTYPE.LT.PBOSON(2)) THEN -C--W+/W- - PT=24 -C--Ensure BH charge remains close to 0, and antiparticles half time - IF (((CHFCHG(PT)*BHCHRG).LT.0).OR. - & ((BHCHRG.EQ.0).AND.(CHRGEN(4).LT.0.5D0))) THEN - PT=-PT - ENDIF - ELSEIF (PTYPE.LT.PBOSON(3)) THEN -C--Z0 - PT=23 - ELSE -C--Photons - PT=22 - ENDIF -C--Calculate new charge of BH - BHCHRG=BHCHRG-CHFCHG(PT) - END -CDECK ID>, CHHBH3. -*CMZ :- -17/07/03 18.11.30 by Peter Richardson -*-- Author : Chris Harris -C--------------------------------------------------------------------- - SUBROUTINE CHHBH3(PT,STAT,SPIN,BHCHRG) -C--------------------------------------------------------------------- -C Subroutine to select the type of the next particle -C--------------------------------------------------------------------- - INCLUDE 'GravADD_i/charybdis1001.inc' - INTEGER PT,STAT,SPIN,BHCHRG,CHFCHG,I - DOUBLE PRECISION PTYPE,CHRGEN,EPS - LOGICAL FIRST - DATA FIRST/.TRUE./ - EXTERNAL CHRGEN,CHFCHG - PARAMETER(EPS=1.0D-6) -C--initialisation on first call - IF(FIRST) THEN - PFERM (1) = PQUARK - PFERM (2) = PFERM(1)+PLEPT - PFERM (3) = PFERM(2)+PNEUT - PBOSON(1) = PFERM(3)+PGLUON - PBOSON(2) = PBOSON(1)+PWBOSN - PBOSON(3) = PBOSON(2)+PZBOSN - PBOSON(4) = PBOSON(3)+PHIGGS - PBOSON(5) = PBOSON(4)+PGAMMA -C--check the sum - IF(ABS(PBOSON(5)-1.0D0).GT.EPS) THEN - IF(IPRINT.GE.1) THEN - print *,'WARNING PROBABILITIES DO NOT SUM TO ONE' - print *,'RENORMALISING' - ENDIF - DO I=1,3 - PFERM(I) = PFERM(I)/PBOSON(5) - PBOSON(I) = PBOSON(I)/PBOSON(5) - ENDDO - PBOSON(4) = PBOSON(4)/PBOSON(5) - PQUARK = PQUARK/PBOSON(5) - PLEPT = PLEPT /PBOSON(5) - PNEUT = PNEUT /PBOSON(5) - PGLUON = PGLUON/PBOSON(5) - PGAMMA = PGAMMA/PBOSON(5) - PZBOSN = PZBOSN/PBOSON(5) - PWBOSN = PWBOSN/PBOSON(5) - PHIGGS = PHIGGS/PBOSON(5) - PBOSON(5) = 1.0D0 - ENDIF - FIRST = .FALSE. - ENDIF -C--Assume decay product is a fermion - STAT=-1 - SPIN=1 -C--Choose decay product - PTYPE=CHRGEN(2) -C--Change STAT to 1 and SPIN to 2 if we have a boson instead except for one -C--degree of freedom of massive gauge bosons - IF (PTYPE.GE.PFERM(3)) THEN - STAT=1 - SPIN=2 - IF ((PTYPE.GE.PBOSON(1)).AND.(PTYPE.LT.PBOSON(3))) THEN - IF (3*CHRGEN(3).LT.1.0d0) SPIN=0 - ENDIF - ENDIF -C--Choose particle type - IF (PTYPE.LT.PFERM(1)) THEN -C--Quarks - PT=1+INT(6*PTYPE/PFERM(1)) -C--Ensure BH charge remains close to 0, and antiparticles half time - IF (((CHFCHG(PT)*BHCHRG).LT.0).OR. - & ((BHCHRG.EQ.0).AND.(CHRGEN(4).LT.0.5D0))) THEN - PT=-PT - ENDIF - ELSEIF (PTYPE.LT.PFERM(2)) THEN -C--Leptons - PT=11+2*INT(3*(PTYPE-PFERM(1))/PLEPT) -C--Ensure BH charge remains close to 0, and antiparticles half time - IF (((CHFCHG(PT)*BHCHRG).LT.0).OR. - & ((BHCHRG.EQ.0).AND.(CHRGEN(4).LT.0.5D0))) THEN - PT=-PT - ENDIF - ELSEIF (PTYPE.LT.PFERM(3)) THEN -C--Neutrinos - PT=12+2*INT(3*(PTYPE-PFERM(2))/PNEUT) - IF(CHRGEN(4).LT.0.5D0) PT = -PT - ELSEIF (PTYPE.LT.PBOSON(1)) THEN -C--Gluons - PT=21 - ELSEIF (PTYPE.LT.PBOSON(2)) THEN -C--W+/W- - PT=24 -C--Ensure BH charge remains close to 0, and antiparticles half time - IF (((CHFCHG(PT)*BHCHRG).LT.0).OR. - & ((BHCHRG.EQ.0).AND.(CHRGEN(4).LT.0.5D0))) THEN - PT=-PT - ENDIF - ELSEIF (PTYPE.LT.PBOSON(3)) THEN -C--Z0 - PT=23 - ELSEIF (PTYPE.LT.PBOSON(4)) THEN -C--Higgs - PT=25 - SPIN=0 - ELSE -C--Photons - PT=22 - ENDIF -C--Calculate new charge of BH - BHCHRG=BHCHRG-CHFCHG(PT) - END -CDECK ID>, CHPDF. -*CMZ :- -17/07/03 18.11.30 by Peter Richardson -*-- Author : Peter Richardson -C---------------------------------------------------------------------- - SUBROUTINE CHPDF(XXMINB,XLMINB,EMSCAB,XXB,DISFB) -C---------------------------------------------------------------------- -C Subroutine to calculate the pdfs -C generator dependent -C---------------------------------------------------------------------- -#if !defined(PYTHIA) - INCLUDE 'GravADD_i/HERWIG64.INC' - DOUBLE PRECISION EMSCAB,XXB(2),DISFB(13,2),XXMINB,XLMINB, - & CHRUNI,UPV,DNV,USEA,DSEA,STR,CHM,BTM,TOP,GLU - INTEGER IDB(2),I,J - CHARACTER *8 DUMMY - DOUBLE PRECISION VALUE(20) - CHARACTER*20 PARM(20) - LOGICAL FIRST - EXTERNAL CHRUNI - DATA VALUE/20*0D0/,PARM/20*' '/ - DATA FIRST/.TRUE./ -C--Les Houches run common block - INTEGER MAXPUP - PARAMETER(MAXPUP=100) - INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP - DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP - COMMON /HEPRUP/ IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2), - & IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP), - & XMAXUP(MAXPUP),LPRUP(MAXPUP) -C--use generator internal pdfs - IF(PDFGUP(1).LT.0) THEN -C---SET UP INITIAL STATE - CALL HWUIDT(1,IDBMUP(1),IDB(1),DUMMY) - PART1=DUMMY - CALL HWUIDT(1,IDBMUP(2),IDB(2),DUMMY) - PART2=DUMMY - IPART1 = IDB(1) - IPART2 = IDB(2) - NHEP=1 - ISTHEP(NHEP)=101 - PHEP(1,NHEP)=0.0D0 - PHEP(2,NHEP)=0.0D0 - PHEP(3,NHEP)=EBMUP(1) - PHEP(4,NHEP)=EBMUP(1) - PHEP(5,NHEP)=RMASS(IDB(1)) - JMOHEP(1,NHEP)=0 - JMOHEP(2,NHEP)=0 - JDAHEP(1,NHEP)=0 - JDAHEP(2,NHEP)=0 - IDHW(NHEP)=IPART1 - IDHEP(NHEP)=IDPDG(IDB(1)) - NHEP=NHEP+1 - ISTHEP(NHEP)=102 - PHEP(1,NHEP)=0.0D0 - PHEP(2,NHEP)=0.0D0 - PHEP(3,NHEP)=-EBMUP(2) - PHEP(4,NHEP)=EBMUP(2) - PHEP(5,NHEP)=RMASS(IDB(2)) - JMOHEP(1,NHEP)=0 - JMOHEP(2,NHEP)=0 - JDAHEP(1,NHEP)=0 - JDAHEP(2,NHEP)=0 - IDHW(NHEP)=IPART2 - IDHEP(NHEP)=IDPDG(IPART2) -C---NEXT ENTRY IS OVERALL CM FRAME - NHEP=NHEP+1 - IDHW(NHEP)=14 - IDHEP(NHEP)=0 - ISTHEP(NHEP)=103 - JMOHEP(1,NHEP)=NHEP-2 - JMOHEP(2,NHEP)=NHEP-1 - JDAHEP(1,NHEP)=0 - JDAHEP(2,NHEP)=0 - CALL CHVSUM(4,PHEP(1,NHEP-1),PHEP(1,NHEP-2),PHEP(1,NHEP)) - CALL CHUMAS(PHEP(1,NHEP)) - XLMIN = XLMINB - EMSCA = EMSCAB - XXMIN = XXMINB - CALL HWSGEN(.TRUE.) - DO I=1,2 - XXB(I) = XX(I) - DO J=1,13 - DISFB(J,I) = DISF(J,I) - ENDDO - ENDDO - ELSE -C--initialisation - IF(FIRST) THEN - IF(PDFGUP(1).NE.PDFGUP(2).OR.PDFSUP(1).NE.PDFSUP(2)) THEN - print *,'MUST HAVE SAME PDF FOR BOTH BEAMS' - STOP - ENDIF - PARM(1)='NPTYPE' - VALUE(1)=1 - PARM(2)='NGROUP' - VALUE(2)=PDFGUP(1) - PARM(3)='NSET' - VALUE(3)=PDFSUP(1) - CALL PDFSET(PARM,VALUE) - FIRST = .FALSE. - ENDIF - XXB(1)=EXP(CHRUNI(0,0.0D0,XLMINB)) - XXB(2)=XXMINB/XXB(1) - DO I=1,2 - CALL STRUCTM(XXB(I),EMSCAB, - & UPV,DNV,USEA,DSEA,STR,CHM,BTM,TOP,GLU) - DISFB( 3,I) = STR - DISFB( 4,I) = CHM - DISFB( 5,I) = BTM - DISFB( 6,I) = TOP - DISFB( 9,I) = STR - DISFB(10,I) = CHM - DISFB(11,I) = BTM - DISFB(12,I) = TOP - DISFB(13,I) = GLU - IF(IDBMUP(I).GT.0) THEN - DISFB(1,I) = DNV+DSEA - DISFB(2,I) = UPV+USEA - DISFB(7,I) = DSEA - DISFB(8,I) = USEA - ELSE - DISFB(1,I) = DSEA - DISFB(2,I) = USEA - DISFB(7,I) = DNV+DSEA - DISFB(8,I) = UPV+USEA - ENDIF - ENDDO - ENDIF -#endif -#if defined(PYTHIA) - IMPLICIT NONE -C--Les Houches run common block - INTEGER MAXPUP - PARAMETER(MAXPUP=100) - INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP - DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP - COMMON /HEPRUP/ IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2), - & IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP), - & XMAXUP(MAXPUP),LPRUP(MAXPUP) - SAVE /HEPRUP/ -C DOUBLE PRECISION EMSCAB,XXB(2),DISFB(13,2),I,J,XXMINB, -C & XLMINB,CHRUNI,XPQ(-25:25),Q2,UPV,DNV,USEA,DSEA,STR,CHM,BTM, -C & TOP,GLU - DOUBLE PRECISION EMSCAB,XXB(2),DISFB(13,2),XXMINB, - & XLMINB,CHRUNI,XPQ(-25:25),Q2,UPV,DNV,USEA,DSEA,STR,CHM,BTM, - & TOP,GLU - INTEGER I - EXTERNAL CHRUNI - DOUBLE PRECISION VALUE(20) - CHARACTER*20 PARM(20) - LOGICAL FIRST - DATA VALUE/20*0D0/,PARM/20*' '/ - DATA FIRST/.TRUE./ - IF(PDFGUP(1).LT.0) THEN - XXB(1)=EXP(CHRUNI(0,0.0D0,XLMINB)) - XXB(2)=XXMINB/XXB(1) - Q2 = EMSCAB**2 - CALL PYPDFU(IDBMUP(1),XXB(1),Q2,XPQ) - DO I=1,6 - DISFB(I,1) = XPQ(I) - DISFB(I+6,1) = XPQ(-I) - ENDDO - DISFB(13,1) = XPQ(21) - CALL PYPDFU(IDBMUP(2),XXB(2),Q2,XPQ) - DO I=1,6 - DISFB(I,2) = XPQ(I) - DISFB(I+6,2) = XPQ(-I) - ENDDO - DISFB(13,2) = XPQ(21) - ELSE -C--initialisation - IF(FIRST) THEN - IF(PDFGUP(1).NE.PDFGUP(2).OR.PDFSUP(1).NE.PDFSUP(2)) THEN - print *,'MUST HAVE SAME PDF FOR BOTH BEAMS' - STOP - ENDIF - PARM(1)='NPTYPE' - VALUE(1)=1 - PARM(2)='NGROUP' - VALUE(2)=PDFGUP(1) - PARM(3)='NSET' - VALUE(3)=PDFSUP(1) - CALL PDFSET(PARM,VALUE) - FIRST = .FALSE. - ENDIF - XXB(1)=EXP(CHRUNI(0,0.0D0,XLMINB)) - XXB(2)=XXMINB/XXB(1) - DO I=1,2 - CALL STRUCTM(XXB(I),EMSCAB, - & UPV,DNV,USEA,DSEA,STR,CHM,BTM,TOP,GLU) - DISFB( 3,I) = STR - DISFB( 4,I) = CHM - DISFB( 5,I) = BTM - DISFB( 6,I) = TOP - DISFB( 9,I) = STR - DISFB(10,I) = CHM - DISFB(11,I) = BTM - DISFB(12,I) = TOP - DISFB(13,I) = GLU - IF(IDBMUP(I).GT.0) THEN - DISFB(1,I) = DNV+DSEA - DISFB(2,I) = UPV+USEA - DISFB(7,I) = DSEA - DISFB(8,I) = USEA - ELSE - DISFB(1,I) = DSEA - DISFB(2,I) = USEA - DISFB(7,I) = DNV+DSEA - DISFB(8,I) = UPV+USEA - ENDIF - ENDDO - ENDIF -#endif - END -CDECK ID>, CHRAZM. -*CMZ :- -17/07/03 18.11.30 by Peter Richardson -*-- Author : Bryan Webber -C----------------------------------------------------------------------- - SUBROUTINE CHRAZM(PT,PX,PY) -C----------------------------------------------------------------------- -C RANDOMLY ROTATED 2-VECTOR (PX,PY) OF LENGTH PT -C (taken from HERWIG) -C----------------------------------------------------------------------- - IMPLICIT NONE - DOUBLE PRECISION CHRGEN,PT,PX,PY,C,S,CS,QT,ONE,ZERO - PARAMETER(ONE=1.0D0, ZERO=0.0D0) - EXTERNAL CHRGEN - 10 C=2.0D0*CHRGEN(1)-1.0D0 - S=2.0D0*CHRGEN(2)-1.0D0 - CS=C*C+S*S - IF (CS.GT.ONE .OR. CS.EQ.ZERO) GOTO 10 - QT=PT/CS - PX=(C*C-S*S)*QT - PY=2.0D0*C*S*QT - END -CDECK ID>, CHRGEN. -*CMZ :- -17/07/03 18.11.30 by Peter Richardson -*-- Author : Peter Richardson -C----------------------------------------------------------------------- - FUNCTION CHRGEN(I) -C----------------------------------------------------------------------- -C random number generator (just calls HERWIG or PYTHIA one) -C----------------------------------------------------------------------- - IMPLICIT NONE - DOUBLE PRECISION CHRGEN - INTEGER I -C--use HERWIG random number generator -#if !defined(PYTHIA) - DOUBLE PRECISION HWRGEN - EXTERNAL HWRGEN - CHRGEN = HWRGEN(I) -#endif -C--use the PYTHIA one -#if defined(PYTHIA) - DOUBLE PRECISION PYR - EXTERNAL PYR - CHRGEN = PYR(I) -#endif - END -CDECK ID>, CHRLOG. -*CMZ :- -17/07/03 18.11.30 by Peter Richardson -*-- Author : Bryan Webber -C----------------------------------------------------------------------- - FUNCTION CHRLOG(A) -C----------------------------------------------------------------------- -C Returns .TRUE. with probability A -C (taken from HERWIG) -C----------------------------------------------------------------------- - IMPLICIT NONE - DOUBLE PRECISION CHRGEN,A,R - LOGICAL CHRLOG - EXTERNAL CHRGEN - CHRLOG=.TRUE. - R=CHRGEN(0) - IF(R.GT.A) CHRLOG=.FALSE. - END -CDECK ID>, CHRUNI. -*CMZ :- -17/07/03 18.11.30 by Peter Richardson -*-- Author : Bryan Webber -C----------------------------------------------------------------------- - FUNCTION CHRUNI(I,A,B) -C----------------------------------------------------------------------- -C Uniform random random number in range [A,B] -C (taken from HERWIG) -C----------------------------------------------------------------------- - DOUBLE PRECISION CHRUNI,CHRGEN,A,B,RN - INTEGER I - EXTERNAL CHRGEN - RN=CHRGEN(I) - CHRUNI=A+RN*(B-A) - END -CDECK ID>, CHUBHS. -*CMZ :- -17/07/03 18.11.30 by Peter Richardson -*-- Author : Chris Harris -C--------------------------------------------------------------------- - SUBROUTINE CHUBHS(ENERGY,STAT,SPIN) -C--------------------------------------------------------------------- -C Calculates energy spectrum for a black hole of given radius -C--------------------------------------------------------------------- - INCLUDE 'GravADD_i/charybdis1001.inc' - DOUBLE PRECISION ENERGY,SPCMAX,SPCVAL,RADHOR,HWKTMP,ETRAT - DOUBLE PRECISION MXARRY(6,3),CHRGEN,CHRUNI,CHUTAB - DOUBLE PRECISION FLUX(200,6,3),ETVALS(200,6) - INTEGER NARRAY(6),STAT,SPIN,POINTS,I - EXTERNAL CHRGEN,CHRUNI,CHUTAB - DOUBLE PRECISION ONE,TWO,THREE,ZERO,PIFAC,HALF - PARAMETER(ONE=1.0D0,TWO=2.0D0,THREE=3.0D0,ZERO=0.0D0,HALF=0.5D0) - DATA NARRAY /151,121,131,141,119,151/ - DATA MXARRY /0.021d0,0.032d0,0.045d0,0.061d0,0.081d0,0.11d0, - & 0.017d0,0.026d0,0.036d0,0.045d0,0.056d0,0.068d0, - & 0.017d0,0.033d0,0.053d0,0.076d0,0.11d0,0.13d0/ - DATA (ETVALS(I,1),I=1,151) /0.00837758, 0.0837758, 0.167552, - &0.251327, 0.335103, 0.418879, 0.502655, 0.586431, 0.670206, - &0.753982, 0.837758, 0.921534, 1.00531, 1.08909, 1.17286, - &1.25664, 1.34041, 1.42419, 1.50796, 1.59174, 1.67552, - &1.75929, 1.84307, 1.92684, 2.01062, 2.0944, 2.17817, - &2.26195, 2.34572, 2.4295, 2.51327, 2.59705, 2.68083, - &2.7646, 2.84838, 2.93215, 3.01593, 3.0997, 3.18348, - &3.26726, 3.35103, 3.43481, 3.51858, 3.60236, 3.68614, - &3.76991, 3.85369, 3.93746, 4.02124, 4.10501, 4.18879, - &4.27257, 4.35634, 4.44012, 4.52389, 4.60767, 4.69145, - &4.77522, 4.859, 4.94277, 5.02655, 5.11032, 5.1941, - &5.27788, 5.36165, 5.44543, 5.5292, 5.61298, 5.69675, - &5.78053, 5.86431, 5.94808, 6.03186, 6.11563, 6.19941, - &6.28319, 6.36696, 6.45074, 6.53451, 6.61829, 6.70206, - &6.78584, 6.86962, 6.95339, 7.03717, 7.12094, 7.20472, - &7.28849, 7.37227, 7.45605, 7.53982, 7.6236, 7.70737, - &7.79115, 7.87493, 7.9587, 8.04248, 8.12625, 8.21003, - &8.2938, 8.37758, 8.46136, 8.54513, 8.62891, 8.71268, - &8.79646, 8.88024, 8.96401, 9.04779, 9.13156, 9.21534, - &9.29911, 9.38289, 9.46667, 9.55044, 9.63422, 9.71799, - &9.80177, 9.88554, 9.96932, 10.0531, 10.1369, 10.2206, - &10.3044, 10.3882, 10.472, 10.5558, 10.6395, 10.7233, - &10.8071, 10.8909, 10.9746, 11.0584, 11.1422, 11.226, - &11.3097, 11.3935, 11.4773, 11.5611, 11.6448, 11.7286, - &11.8124, 11.8962, 11.9799, 12.0637, 12.1475, 12.2313, - &12.315, 12.3988, 12.4826, 12.5664/ - DATA (FLUX(I,1,1),I=1,151) /0.000302416, 0.00291566, 0.00558027, - &0.00800197, 0.0101859, 0.0121371, 0.0138614, 0.015365, 0.0166554, - &0.0177408, 0.0186311, 0.0193371, 0.0198712, 0.0202464, 0.0204769, - &0.0205776, 0.0205633, 0.0204495, 0.0202512, 0.0199826, 0.0196575, - &0.0192887, 0.0188876, 0.0184644, 0.018028, 0.017586, 0.0171441, - &0.0167072, 0.0162784, 0.0158598, 0.0154524, 0.0150562, 0.0146703, - &0.0142933, 0.0139233, 0.0135581, 0.0131954, 0.0128329, 0.0124687, - &0.012101, 0.0117287, 0.0113511, 0.0109679, 0.0105796, 0.010187, - &0.0097913, 0.00939432, 0.00899787, 0.00860399, 0.00821478, - &0.00783223, 0.00745829, 0.00709462, 0.00674274, 0.00640377, - &0.00607866, 0.005768, 0.00547213, 0.00519109, 0.00492474, - &0.00467268, 0.00443436, 0.0042091, 0.0039961, 0.00379453, - &0.0036035, 0.00342213, 0.00324959, 0.00308509, 0.00292792, - &0.00277747, 0.00263322, 0.00249476, 0.00236175, 0.00223397, - &0.00211127, 0.00199352, 0.0018807, 0.00177276, 0.00166969, - &0.0015715, 0.00147816, 0.00138963, 0.00130586, 0.00122677, - &0.00115224, 0.00108214, 0.00101631, 0.000954559, 0.000896698, - &0.000842512, 0.000791779, 0.000744269, 0.000699762, 0.000658029, - &0.000618861, 0.000582052, 0.000547413, 0.000514771, 0.000483972, - &0.000454876, 0.000427365, 0.000401333, 0.000376696, 0.000353375, - &0.000332, 0.000310443, 0.00029073, 0.000272125, 0.000254591, - &0.000238088, 0.000222578, 0.000208022, 0.000194382, 0.000181617, - &0.000169684, 0.0001588, 0.000148148, 0.000138454, 0.0001295, - &0.000121, 0.000113152, 0.000105834, 9.90067e-05, 9.26315e-05, - &8.66729e-05, 8.10985e-05, 7.5878e-05, 7.0984e-05, 6.63922e-05, - &6.20809e-05, 5.80306e-05, 5.42246e-05, 5.06479e-05, 4.72874e-05, - &4.41314e-05, 4.11692e-05, 3.83912e-05, 3.57884e-05, 3.33521e-05, - &3.10742e-05, 2.89466e-05, 2.69615e-05, 2.51111e-05, 2.33879e-05, - &2.17842e-05, 2.02926e-05, 1.8906e-05, 1.76171e-05, 1.64192e-05, - &1.52e-05/ - DATA (FLUX(I,1,2),I=1,151) /9.9924e-07, 9.62357e-05, 0.000370872, - &0.000803897, 0.00137345, 0.0020564, 0.00283305, 0.00368963, - &0.00461454, 0.00559229, 0.00660209, 0.00762302, 0.00864035, - &0.00964574, 0.0106307, 0.0115808, 0.0124765, 0.0133006, 0.014044, - &0.0147037, 0.0152769, 0.0157563, 0.0161325, 0.0164003, 0.0165624, - &0.0166267, 0.0166009, 0.0164899, 0.0162981, 0.0160326, 0.0157045, - &0.0153266, 0.0149102, 0.0144638, 0.0139948, 0.0135109, 0.0130204, - &0.0125304, 0.0120465, 0.0115724, 0.0111114, 0.0106658, 0.0102376, - &0.00982739, 0.00943497, 0.00905983, 0.00870158, 0.00835955, - &0.0080324, 0.00771795, 0.00741412, 0.00711948, 0.00683327, - &0.00655479, 0.00628292, 0.0060163, 0.00575402, 0.00549595, - &0.00524262, 0.00499461, 0.00475223, 0.00451558, 0.00428494, - &0.00406101, 0.00384461, 0.00363646, 0.00343697, 0.00324628, - &0.00306453, 0.00289183, 0.00272826, 0.00257377, 0.00242813, - &0.00229105, 0.00216213, 0.00204095, 0.00192704, 0.00181987, - &0.00171899, 0.00162396, 0.00153434, 0.00144968, 0.0013695, - &0.00129338, 0.00122102, 0.0011522, 0.00108673, 0.0010244, - &0.000964981, 0.000908321, 0.00085433, 0.000802968, 0.000754197, - &0.000707961, 0.000664175, 0.000622759, 0.000583662, 0.000546835, - &0.000512222, 0.00047975, 0.000449325, 0.000420846, 0.00039421, - &0.000369318, 0.000346067, 0.000324354, 0.000304076, 0.000285131, - &0.000267413, 0.000250822, 0.000235264, 0.000220659, 0.000206942, - &0.000194046, 0.000181911, 0.000170475, 0.00015969, 0.000149516, - &0.000139925, 0.00013089, 0.000122383, 0.000114375, 0.000106842, - &9.97618e-05, 9.31189e-05, 8.68953e-05, 8.10729e-05, 7.56304e-05, - &7.05476e-05, 6.5805e-05, 6.13842e-05, 5.72669e-05, 5.3435e-05, - &4.98696e-05, 4.65523e-05, 4.34649e-05, 4.05893e-05, 3.79096e-05, - &3.54108e-05, 3.30793e-05, 3.09023e-05, 2.88673e-05, 2.69624e-05, - &2.51775e-05, 2.35042e-05, 2.19355e-05, 2.04652e-05, 1.90868e-05, - &1.77945e-05, 1.6583e-05, 1.54479e-05/ - DATA (FLUX(I,1,3),I=1,151) /2.36467e-09, 2.27485e-06, 1.74831e-05, - &5.67478e-05, 0.000129498, 0.00024372, 0.000406154, 0.000622444, - &0.000897231, 0.00123422, 0.00163621, 0.00210503, 0.00264154, - &0.00324549, 0.00391542, 0.00464852, 0.00544043, 0.00628508, - &0.00717462, 0.00809913, 0.00904674, 0.0100036, 0.010954, - &0.0118809, 0.0127664, 0.0135921, 0.0143404, 0.014995, 0.015542, - &0.0159706, 0.0162738, 0.0164486, 0.0164966, 0.0164228, 0.016236, - &0.0159478, 0.0155716, 0.015122, 0.0146141, 0.0140622, 0.0134802, - &0.0128807, 0.0122745, 0.011671, 0.011078, 0.0105017, 0.00994673, - &0.00941661, 0.00891352, 0.00843877, 0.00799277, 0.00757527, - &0.00718537, 0.00682182, 0.00648292, 0.00616677, 0.00587134, - &0.00559445, 0.00533398, 0.00508784, 0.0048541, 0.00463095, - &0.00441687, 0.00421054, 0.00401094, 0.00381727, 0.00362905, - &0.00344597, 0.00326794, 0.003095, 0.00292736, 0.00276523, - &0.0026089, 0.00245866, 0.00231475, 0.0021774, 0.00204674, - &0.00192284, 0.00180574, 0.00169536, 0.00159159, 0.00149424, - &0.0014031, 0.00131786, 0.00123824, 0.00116391, 0.00109451, - &0.00102969, 0.000969093, 0.000912375, 0.000859198, 0.000809247, - &0.000762232, 0.00071789, 0.000675986, 0.000636318, 0.000598712, - &0.000563024, 0.000529139, 0.000496956, 0.000466402, 0.000437415, - &0.000409939, 0.000383934, 0.000359358, 0.000336172, 0.000314336, - &0.00029381, 0.000274549, 0.000256505, 0.000239628, 0.000223864, - &0.000209157, 0.000195449, 0.00018268, 0.000170793, 0.000159724, - &0.000149417, 0.000139815, 0.000130862, 0.000122505, 0.000114698, - &0.000107393, 0.000100551, 9.41333e-05, 8.81074e-05, 8.24435e-05, - &7.7117e-05, 7.21049e-05, 6.73879e-05, 6.29497e-05, 5.87753e-05, - &5.48516e-05, 5.11669e-05, 4.77097e-05, 4.44701e-05, 4.14379e-05, - &3.86033e-05, 3.59566e-05, 3.34882e-05, 3.11885e-05, 2.9048e-05, - &2.70572e-05, 2.52068e-05, 2.34873e-05, 2.189e-05, 2.0406e-05, - &1.90271e-05, 1.7745e-05, 1.65523e-05, 1.54419e-05/ - DATA (ETVALS(I,2),I=1,121) /0.00628319, 0.0628319, 0.125664, - &0.188496, 0.251327, 0.314159, 0.376991, 0.439823, 0.502655, - &0.565487, 0.628319, 0.69115, 0.753982, 0.816814, 0.879646, - &0.942478, 1.00531, 1.06814, 1.13097, 1.19381, 1.25664, - &1.31947, 1.3823, 1.44513, 1.50796, 1.5708, 1.63363, - &1.69646, 1.75929, 1.82212, 1.88496, 1.94779, 2.01062, - &2.07345, 2.13628, 2.19911, 2.26195, 2.32478, 2.38761, - &2.45044, 2.51327, 2.57611, 2.63894, 2.70177, 2.7646, - &2.82743, 2.89027, 2.9531, 3.01593, 3.07876, 3.14159, - &3.20442, 3.26726, 3.33009, 3.39292, 3.45575, 3.51858, - &3.58142, 3.64425, 3.70708, 3.76991, 3.83274, 3.89557, - &3.95841, 4.02124, 4.08407, 4.1469, 4.20973, 4.27257, - &4.3354, 4.39823, 4.46106, 4.52389, 4.58673, 4.64956, - &4.71239, 4.77522, 4.83805, 4.90088, 4.96372, 5.02655, - &5.08938, 5.15221, 5.21504, 5.27788, 5.34071, 5.40354, - &5.46637, 5.5292, 5.59203, 5.65487, 5.7177, 5.78053, - &5.84336, 5.90619, 5.96903, 6.03186, 6.09469, 6.15752, - &6.22035, 6.28319, 6.59734, 6.9115, 7.22566, 7.53982, - &7.85398, 8.16814, 8.4823, 8.79646, 9.11062, 9.42478, - &9.73894, 10.0531, 10.3673, 10.6814, 10.9956, 11.3097, - &11.6239, 11.9381, 12.2522, 12.5664/ - DATA (FLUX(I,2,1),I=1,121) /0.000404009, 0.00392351, 0.00758112, - &0.0109642, 0.0140671, 0.0168871, 0.019425, 0.0216845, 0.0236723, - &0.0253982, 0.0268742, 0.0281145, 0.0291353, 0.0299539, 0.0305884, - &0.0310576, 0.0313803, 0.0315749, 0.0316592, 0.0316499, 0.0315629, - &0.0314126, 0.0312118, 0.0309721, 0.0307032, 0.0304133, 0.0301092, - &0.0297962, 0.0294781, 0.0291573, 0.0288354, 0.0285125, 0.0281883, - &0.0278615, 0.0275302, 0.0271924, 0.0268457, 0.0264877, 0.0261159, - &0.0257285, 0.0253236, 0.0249, 0.0244569, 0.0239942, 0.0235121, - &0.0230115, 0.0224938, 0.0219609, 0.0214148, 0.0208582, 0.0202936, - &0.0197239, 0.019152, 0.0185805, 0.0180121, 0.0174493, 0.0168942, - &0.0163489, 0.0158149, 0.0152936, 0.0147861, 0.014293, 0.0138149, - &0.0133518, 0.0129037, 0.0124703, 0.0120513, 0.0116459, 0.0112534, - &0.0108733, 0.0105045, 0.0101465, 0.00979838, 0.00945948, - &0.0091292, 0.00880703, 0.0084925, 0.00818535, 0.0078853, - &0.00759225, 0.00730615, 0.00702705, 0.006755, 0.00649014, - &0.00623262, 0.00598259, 0.00574022, 0.00550565, 0.00527895, - &0.00506023, 0.00484951, 0.00464678, 0.00445198, 0.00426498, - &0.00408567, 0.00391383, 0.00374925, 0.00359166, 0.00344078, - &0.00329631, 0.00315796, 0.0025469, 0.00204557, 0.00163075, - &0.0012906, 0.00101732, 0.000801626, 0.000632102, 0.00049774, - &0.000390215, 0.000304261, 0.000236379, 0.000183518, 0.000142612, - &0.000110818, 8.5892e-05, 6.62998e-05, 5.10081e-05, 3.92052e-05, - &3.01586e-05, 2.32131e-05/ - DATA (FLUX(I,2,2),I=1,121) /1.26e-06, 0.000122431, 0.000476022, - &0.00104, 0.00178939, 0.00269598, 0.003735, 0.00488878, 0.00614213, - &0.00747465, 0.0088588, 0.0102671, 0.0116812, 0.0130912, 0.0144878, - &0.0158537, 0.0171651, 0.018402, 0.0195553, 0.0206245, 0.0216077, - &0.0224957, 0.0232756, 0.0239401, 0.0244915, 0.0249384, 0.0252869, - &0.0255375, 0.0256892, 0.0257458, 0.0257172, 0.0256153, 0.0254495, - &0.0252251, 0.0249472, 0.0246228, 0.0242616, 0.0238724, 0.0234616, - &0.0230335, 0.0225927, 0.0221441, 0.0216922, 0.0212403, 0.0207899, - &0.0203422, 0.0198992, 0.0194625, 0.0190324, 0.0186078, 0.0181871, - &0.0177698, 0.0173567, 0.016948, 0.0165423, 0.0161373, 0.0157316, - &0.0153252, 0.0149193, 0.0145143, 0.0141098, 0.0137047, 0.0132989, - &0.0128937, 0.0124907, 0.0120913, 0.011696, 0.0113049, 0.0109185, - &0.0105384, 0.0101659, 0.00980213, 0.00944741, 0.00910205, - &0.00876643, 0.00844109, 0.00812641, 0.00782259, 0.00752948, - &0.007247, 0.00697494, 0.00671296, 0.0064607, 0.0062176, - &0.00598332, 0.00575754, 0.00553982, 0.00532963, 0.00512633, - &0.00492941, 0.00473864, 0.00455387, 0.00437493, 0.00420146, - &0.00403308, 0.00386959, 0.00371103, 0.00355747, 0.00340894, - &0.00326531, 0.00312645, 0.0025038, 0.00199701, 0.00159259, - &0.00127038, 0.0010106, 0.000799155, 0.000627867, 0.000491358, - &0.000384293, 0.000300776, 0.000235218, 0.000183312, 0.000142194, - &0.000109933, 8.49344e-05, 6.56842e-05, 5.08066e-05, 3.92136e-05, - &3.01523e-05, 2.31118e-05/ - DATA (FLUX(I,2,3),I=1,121) /3.71013e-09, 3.60137e-06, 2.79421e-05, - &9.15076e-05, 0.000210575, 0.000399441, 0.000670605, 0.0010349, - &0.00150158, 0.00207833, 0.00277124, 0.00358477, 0.00452156, - &0.00558228, 0.00676548, 0.00806727, 0.00948115, 0.0109977, - &0.0126046, 0.0142862, 0.0160239, 0.017796, 0.0195783, 0.0213443, - &0.0230663, 0.024716, 0.0262659, 0.02769, 0.0289652, 0.0300722, - &0.0309962, 0.0317278, 0.0322628, 0.0326024, 0.0327526, 0.0327237, - &0.0325297, 0.0321871, 0.0317142, 0.03113, 0.0304537, 0.0297042, - &0.028899, 0.0280543, 0.027185, 0.0263039, 0.0254221, 0.0245488, - &0.0236917, 0.0228568, 0.0220487, 0.0212707, 0.0205247, 0.0198119, - &0.0191324, 0.0184857, 0.0178703, 0.0172848, 0.016727, 0.0161945, - &0.0156848, 0.0151952, 0.0147233, 0.0142665, 0.0138225, 0.0133894, - &0.0129653, 0.0125488, 0.0121387, 0.0117343, 0.0113352, 0.010941, - &0.010552, 0.0101684, 0.00979058, 0.00941927, 0.0090551, - &0.00869877, 0.00835099, 0.00801245, 0.0076837, 0.00736531, - &0.00705769, 0.00676116, 0.00647592, 0.00620205, 0.00593957, - &0.00568833, 0.00544816, 0.00521873, 0.00499969, 0.00479062, - &0.00459105, 0.0044005, 0.00421842, 0.00404429, 0.00387761, - &0.00371786, 0.00356457, 0.00341728, 0.00327558, 0.00263989, - &0.00210751, 0.00166763, 0.00131391, 0.00103573, 0.000818073, - &0.000645765, 0.000507411, 0.000396169, 0.000307892, 0.000239034, - &0.000185837, 0.000144605, 0.000112303, 8.68411e-05, 6.68717e-05, - &5.14003e-05, 3.95356e-05, 3.04482e-05, 2.3439e-05/ - DATA (ETVALS(I,3),I=1,131) /0.00502655, 0.0502655, 0.100531, - &0.150796, 0.201062, 0.251327, 0.301593, 0.351858, 0.402124, - &0.452389, 0.502655, 0.55292, 0.603186, 0.653451, 0.703717, - &0.753982, 0.804248, 0.854513, 0.904779, 0.955044, 1.00531, - &1.05558, 1.10584, 1.15611, 1.20637, 1.25664, 1.3069, - &1.35717, 1.40743, 1.4577, 1.50796, 1.55823, 1.6085, - &1.65876, 1.70903, 1.75929, 1.80956, 1.85982, 1.91009, - &1.96035, 2.01062, 2.06088, 2.11115, 2.16142, 2.21168, - &2.26195, 2.31221, 2.36248, 2.41274, 2.46301, 2.51327, - &2.56354, 2.61381, 2.66407, 2.71434, 2.7646, 2.81487, - &2.86513, 2.9154, 2.96566, 3.01593, 3.06619, 3.11646, - &3.16673, 3.21699, 3.26726, 3.31752, 3.36779, 3.41805, - &3.46832, 3.51858, 3.56885, 3.61911, 3.66938, 3.71965, - &3.76991, 3.82018, 3.87044, 3.92071, 3.97097, 4.02124, - &4.0715, 4.12177, 4.17204, 4.2223, 4.27257, 4.32283, - &4.3731, 4.42336, 4.47363, 4.52389, 4.57416, 4.62442, - &4.67469, 4.72496, 4.77522, 4.82549, 4.87575, 4.92602, - &4.97628, 5.02655, 5.27788, 5.5292, 5.78053, 6.03186, - &6.28319, 6.53451, 6.78584, 7.03717, 7.28849, 7.53982, - &7.79115, 8.04248, 8.2938, 8.54513, 8.79646, 9.04779, - &9.29911, 9.55044, 9.80177, 10.0531, 10.3044, 10.5558, - &10.8071, 11.0584, 11.3097, 11.5611, 11.8124, 12.0637, - &12.315, 12.5664/ - DATA (FLUX(I,3,1),I=1,131) /0.000505327, 0.0049346, 0.00959093, - &0.0139491, 0.0179937, 0.0217143, 0.0251057, 0.0281676, 0.0309046, - &0.0333259, 0.0354444, 0.0372764, 0.038841, 0.0401591, 0.0412527, - &0.0421447, 0.0428579, 0.0434145, 0.0438363, 0.0441431, 0.044354, - &0.0444859, 0.0445537, 0.0445708, 0.0445487, 0.0444965, 0.0444215, - &0.04433, 0.0442256, 0.0441111, 0.0439875, 0.0438552, 0.0437129, - &0.043559, 0.043391, 0.0432061, 0.0430015, 0.042774, 0.0425203, - &0.0422381, 0.0419248, 0.0415786, 0.0411982, 0.0407828, 0.0403324, - &0.0398476, 0.0393294, 0.0387796, 0.0382003, 0.0375943, 0.0369644, - &0.0363139, 0.0356461, 0.0349645, 0.0342726, 0.0335736, 0.0328707, - &0.0321668, 0.0314647, 0.0307669, 0.0300755, 0.0293922, 0.0287185, - &0.0280556, 0.0274042, 0.0267649, 0.026138, 0.0255234, 0.024921, - &0.0243305, 0.0237512, 0.0231829, 0.0226246, 0.0220758, 0.0215358, - &0.021004, 0.0204799, 0.019963, 0.0194529, 0.0189494, 0.0184521, - &0.0179612, 0.0174766, 0.0169985, 0.0165271, 0.0160627, 0.0156055, - &0.0151559, 0.0147145, 0.0142814, 0.013857, 0.0134419, 0.0130361, - &0.0126401, 0.012254, 0.0118779, 0.011512, 0.0111562, 0.0108106, - &0.010475, 0.0101493, 0.00866104, 0.00737802, 0.00626206, - &0.00528708, 0.00444089, 0.00371704, 0.00310645, 0.00259473, - &0.00216484, 0.00180149, 0.00149375, 0.00123447, 0.00101818, - &0.000839256, 0.00069163, 0.000569436, 0.000467843, 0.000383349, - &0.000313423, 0.000255983, 0.000209043, 0.00017069, 0.000139245, - &0.000113386, 9.21391e-05, 7.47678e-05, 6.06441e-05, 4.91935e-05, - &3.98982e-05, 3.23278e-05/ - DATA (FLUX(I,3,2),I=1,131) /1.44805e-06, 0.000141467, 0.00055311, - &0.00121462, 0.00209962, 0.00317696, 0.00441866, 0.00580455, - &0.00731715, 0.00893248, 0.0106181, 0.0123416, 0.0140814, 0.015827, - &0.0175681, 0.0192849, 0.0209504, 0.0225421, 0.024051, 0.0254782, - &0.0268224, 0.0280734, 0.0292158, 0.0302412, 0.0311526, 0.03196, - &0.032669, 0.0332779, 0.0337827, 0.0341856, 0.0344962, 0.0347265, - &0.0348843, 0.0349723, 0.0349925, 0.0349516, 0.0348587, 0.0347233, - &0.0345502, 0.0343425, 0.0341041, 0.0338403, 0.033557, 0.0332574, - &0.0329433, 0.0326158, 0.0322779, 0.0319328, 0.0315816, 0.0312234, - &0.0308568, 0.0304819, 0.0301012, 0.0297154, 0.0293238, 0.0289232, - &0.0285119, 0.0280904, 0.027661, 0.0272247, 0.0267802, 0.0263253, - &0.0258593, 0.0253843, 0.0249027, 0.0244162, 0.0239244, 0.0234269, - &0.0229242, 0.0224188, 0.0219133, 0.0214091, 0.0209067, 0.0204063, - &0.0199091, 0.0194168, 0.0189307, 0.0184522, 0.0179811, 0.017518, - &0.0170634, 0.0166178, 0.0161817, 0.0157549, 0.0153376, 0.0149296, - &0.0145312, 0.0141418, 0.0137611, 0.0133886, 0.013024, 0.0126676, - &0.012319, 0.0119777, 0.011643, 0.0113145, 0.0109922, 0.0106765, - &0.0103672, 0.010064, 0.00976629, 0.00836625, 0.00711991, - &0.00603413, 0.00510372, 0.00431049, 0.00363159, 0.00304777, - &0.00254654, 0.00212009, 0.0017616, 0.00146279, 0.00121399, - &0.0010058, 0.000830862, 0.00068412, 0.000561979, 0.000461173, - &0.000378353, 0.000310252, 0.000254053, 0.000207585, 0.000169256, - &0.000137826, 0.000112199, 9.13435e-05, 7.43267e-05, 6.03912e-05, - &4.89718e-05, 3.96479e-05, 3.20759e-05/ - DATA (FLUX(I,3,3),I=1,131) /5.0498e-09, 4.92905e-06, 3.84715e-05, - &0.000126715, 0.00029321, 0.000559154, 0.000943548, 0.00146328, - &0.00213315, 0.00296582, 0.00397172, 0.00515891, 0.00653277, - &0.00809581, 0.00984729, 0.0117829, 0.0138944, 0.0161692, - &0.0185905, 0.0211371, 0.0237826, 0.0264973, 0.0292472, 0.0319957, - &0.0347041, 0.0373332, 0.0398443, 0.0422007, 0.0443696, 0.0463222, - &0.0480361, 0.0494951, 0.0506894, 0.0516166, 0.05228, 0.0526887, - &0.0528572, 0.0528034, 0.0525478, 0.0521132, 0.0515233, 0.0508015, - &0.0499707, 0.0490532, 0.0480688, 0.0470364, 0.0459726, 0.0448917, - &0.0438063, 0.0427271, 0.0416623, 0.0406194, 0.0396032, 0.0386175, - &0.0376649, 0.0367467, 0.035863, 0.0350132, 0.0341959, 0.0334092, - &0.0326506, 0.0319176, 0.0312069, 0.0305158, 0.0298411, 0.0291798, - &0.0285297, 0.0278879, 0.0272524, 0.0266217, 0.0259942, 0.0253692, - &0.024746, 0.0241244, 0.0235045, 0.022887, 0.0222723, 0.0216615, - &0.0210554, 0.0204554, 0.0198626, 0.019278, 0.018703, 0.0181386, - &0.0175858, 0.0170454, 0.0165183, 0.0160049, 0.0155058, 0.0150213, - &0.0145514, 0.0140963, 0.0136557, 0.0132296, 0.0128175, 0.012419, - &0.0120336, 0.0116609, 0.0113001, 0.0109506, 0.010612, 0.00905965, - &0.0077, 0.00650119, 0.00545587, 0.00456275, 0.00381295, - &0.00318752, 0.00266297, 0.00221879, 0.00184112, 0.00152188, - &0.00125524, 0.00103485, 0.000853342, 0.000703293, 0.000578464, - &0.000474399, 0.000388042, 0.000316975, 0.000258894, 0.000211499, - &0.000172685, 0.000140756, 0.000114472, 9.29277e-05, 7.53814e-05, - &6.11556e-05, 4.96218e-05, 4.02384e-05, 3.258e-05/ - DATA (ETVALS(I,4),I=1,141) /0.00418879, 0.0418879, 0.0837758, - &0.125664, 0.167552, 0.20944, 0.251327, 0.293215, 0.335103, - &0.376991, 0.418879, 0.460767, 0.502655, 0.544543, 0.586431, - &0.628319, 0.670206, 0.712094, 0.753982, 0.79587, 0.837758, - &0.879646, 0.921534, 0.963422, 1.00531, 1.0472, 1.08909, - &1.13097, 1.17286, 1.21475, 1.25664, 1.29852, 1.34041, - &1.3823, 1.42419, 1.46608, 1.50796, 1.54985, 1.59174, - &1.63363, 1.67552, 1.7174, 1.75929, 1.80118, 1.84307, - &1.88496, 1.92684, 1.96873, 2.01062, 2.05251, 2.0944, - &2.13628, 2.17817, 2.22006, 2.26195, 2.30383, 2.34572, - &2.38761, 2.4295, 2.47139, 2.51327, 2.55516, 2.59705, - &2.63894, 2.68083, 2.72271, 2.7646, 2.80649, 2.84838, - &2.89027, 2.93215, 2.97404, 3.01593, 3.05782, 3.0997, - &3.14159, 3.18348, 3.22537, 3.26726, 3.30914, 3.35103, - &3.39292, 3.43481, 3.4767, 3.51858, 3.56047, 3.60236, - &3.64425, 3.68614, 3.72802, 3.76991, 3.8118, 3.85369, - &3.89557, 3.93746, 3.97935, 4.02124, 4.06313, 4.10501, - &4.1469, 4.18879, 4.39823, 4.60767, 4.81711, 5.02655, - &5.23599, 5.44543, 5.65487, 5.86431, 6.07375, 6.28319, - &6.49262, 6.70206, 6.9115, 7.12094, 7.33038, 7.53982, - &7.74926, 7.9587, 8.16814, 8.37758, 8.58702, 8.79646, - &9.0059, 9.21534, 9.42478, 9.63422, 9.84366, 10.0531, - &10.2625, 10.472, 10.6814, 10.8909, 11.1003, 11.3097, - &11.5192, 11.7286, 11.9381, 12.1475, 12.3569, 12.5664/ - DATA (FLUX(I,4,1),I=1,141) /0.000606647, 0.00594603, 0.0116033, - &0.016942, 0.0219381, 0.0265737, 0.0308375, 0.0347254, 0.0382389, - &0.0413862, 0.0441804, 0.0466395, 0.0487846, 0.0506398, 0.0522308, - &0.0535844, 0.0547275, 0.0556864, 0.0564866, 0.057152, 0.0577045, - &0.0581642, 0.0585486, 0.0588735, 0.0591516, 0.0593938, 0.0596084, - &0.0598017, 0.0599782, 0.0601405, 0.0602892, 0.0604241, 0.0605434, - &0.0606449, 0.0607249, 0.0607799, 0.0608058, 0.0607984, 0.0607539, - &0.0606688, 0.0605397, 0.060364, 0.0601398, 0.0598657, 0.0595413, - &0.0591669, 0.0587431, 0.0582717, 0.057755, 0.0571957, 0.0565971, - &0.0559623, 0.0552955, 0.0546007, 0.0538817, 0.0531424, 0.052387, - &0.0516188, 0.0508418, 0.0500589, 0.049273, 0.0484868, 0.0477025, - &0.0469218, 0.0461463, 0.0453773, 0.0446153, 0.0438612, 0.0431151, - &0.0423769, 0.0416466, 0.040924, 0.0402085, 0.0394994, 0.0387965, - &0.0380988, 0.0374063, 0.0367179, 0.0360334, 0.0353527, 0.0346753, - &0.0340011, 0.0333301, 0.0326625, 0.0319982, 0.031338, 0.030682, - &0.0300307, 0.0293846, 0.0287446, 0.0281108, 0.0274843, 0.0268655, - &0.0262549, 0.0256533, 0.0250609, 0.0244783, 0.023906, 0.0233442, - &0.0227931, 0.0222527, 0.0197156, 0.0174381, 0.0153863, 0.0135276, - &0.0118437, 0.0103304, 0.00898649, 0.00780568, 0.00677302, - &0.00586881, 0.00507424, 0.00437536, 0.00376301, 0.00323036, - &0.0027702, 0.00237405, 0.00203276, 0.00173797, 0.00148308, - &0.00126318, 0.00107444, 0.000913232, 0.000775886, 0.000658809, - &0.0005588, 0.000473283, 0.000400276, 0.000338187, 0.000285581, - &0.000241095, 0.000203455, 0.000171549, 0.00014448, 0.000121544, - &0.000102169, 8.58513e-05, 7.21281e-05, 6.058e-05, 5.0847e-05, - &4.2637e-05/ - DATA (FLUX(I,4,2),I=1,141) /1.58875e-06, 0.000155777, 0.000611358, - &0.00134723, 0.0023364, 0.00354585, 0.00494547, 0.00651345, - &0.00823075, 0.0100709, 0.0119976, 0.013975, 0.0159792, 0.0179987, - &0.0200228, 0.02203, 0.0239905, 0.0258797, 0.027689, 0.0294203, - &0.0310734, 0.0326368, 0.0340936, 0.0354346, 0.0366637, 0.0377918, - &0.0388251, 0.0397602, 0.0405913, 0.0413194, 0.0419549, 0.04251, - &0.0429916, 0.0434002, 0.0437363, 0.0440055, 0.0442177, 0.0443814, - &0.0445006, 0.0445768, 0.0446126, 0.0446138, 0.0445866, 0.0445339, - &0.0444561, 0.0443542, 0.0442311, 0.0440908, 0.043935, 0.0437623, - &0.0435705, 0.0433601, 0.043134, 0.0428947, 0.0426409, 0.0423686, - &0.0420758, 0.0417632, 0.0414342, 0.0410905, 0.0407298, 0.0403491, - &0.0399471, 0.0395261, 0.0390897, 0.0386397, 0.0381749, 0.0376934, - &0.0371956, 0.0366852, 0.0361651, 0.0356373, 0.0351016, 0.0345574, - &0.0340063, 0.033451, 0.0328941, 0.0323369, 0.0317793, 0.0312216, - &0.0306655, 0.0301121, 0.0295629, 0.029018, 0.0284776, 0.0279423, - &0.0274126, 0.026889, 0.0263711, 0.025859, 0.0253526, 0.0248524, - &0.0243586, 0.0238707, 0.0233881, 0.0229102, 0.0224376, 0.0219708, - &0.0215097, 0.0210537, 0.0206023, 0.01842, 0.0163737, 0.014485, - &0.0127713, 0.0112347, 0.00986244, 0.00863503, 0.00753484, - &0.00655095, 0.0056776, 0.00491003, 0.00424072, 0.00365878, - &0.00315218, 0.00271025, 0.00232498, 0.00199046, 0.00170169, - &0.00145362, 0.00124088, 0.00105822, 0.00090105, 0.000765812, - &0.000649816, 0.000550817, 0.000466651, 0.000395186, 0.00033444, - &0.000282732, 0.00023872, 0.000201334, 0.000169683, 0.000142962, - &0.000120422, 0.000101383, 8.52738e-05, 7.16414e-05, 6.01294e-05, - &5.04382e-05, 4.22984e-05/ - DATA (FLUX(I,4,3),I=1,141) /6.3726e-09, 6.24338e-06, 4.89273e-05, - &0.000161789, 0.000375805, 0.000719346, 0.00121828, 0.001896, - &0.00277341, 0.00386878, 0.00519756, 0.00677209, 0.00860124, - &0.01069, 0.0130391, 0.0156443, 0.0184961, 0.0215794, 0.024873, - &0.0283496, 0.0319762, 0.0357137, 0.0395186, 0.0433433, 0.0471377, - &0.0508503, 0.0544308, 0.0578313, 0.0610079, 0.0639223, 0.0665436, - &0.0688485, 0.0708218, 0.0724567, 0.0737543, 0.0747229, 0.0753767, - &0.0757352, 0.0758217, 0.0756625, 0.075285, 0.0747175, 0.0739879, - &0.0731235, 0.0721494, 0.0710899, 0.069966, 0.0687977, 0.0676016, - &0.0663924, 0.0651828, 0.0639829, 0.0628008, 0.0616432, 0.0605145, - &0.0594179, 0.0583553, 0.0573268, 0.0563321, 0.0553697, 0.0544376, - &0.0535328, 0.0526524, 0.0517929, 0.0509508, 0.0501227, 0.0493051, - &0.0484947, 0.0476888, 0.0468848, 0.0460805, 0.0452743, 0.0444649, - &0.0436515, 0.042834, 0.042012, 0.0411865, 0.0403581, 0.0395277, - &0.0386968, 0.0378669, 0.0370395, 0.0362164, 0.035399, 0.0345891, - &0.0337884, 0.0329982, 0.0322198, 0.0314545, 0.0307031, 0.0299666, - &0.0292456, 0.0285406, 0.0278519, 0.0271795, 0.0265236, 0.0258838, - &0.0252599, 0.0246516, 0.0240583, 0.0234793, 0.0207791, 0.0183468, - &0.0161285, 0.0141068, 0.0122877, 0.0106782, 0.00927219, - &0.00804831, 0.00697838, 0.00603684, 0.00520644, 0.00447737, - &0.00384297, 0.0032956, 0.00282521, 0.00242045, 0.00207078, - &0.00176801, 0.00150635, 0.00128146, 0.00108933, 0.000925749, - &0.000786426, 0.00066745, 0.000565638, 0.000478595, 0.000404457, - &0.000341594, 0.000288443, 0.000243503, 0.000205427, 0.000173112, - &0.000145696, 0.000122502, 0.000102951, 8.65082e-05, 7.26804e-05, - &6.10319e-05, 5.12045e-05, 4.29157e-05/ - DATA (ETVALS(I,5),I=1,119) /0.00359039, 0.0359039, 0.0718078, - &0.107712, 0.143616, 0.17952, 0.215423, 0.251327, 0.287231, - &0.323135, 0.359039, 0.394943, 0.430847, 0.466751, 0.502655, - &0.538559, 0.574463, 0.610367, 0.64627, 0.682174, 0.718078, - &0.753982, 0.789886, 0.82579, 0.861694, 0.897598, 0.933502, - &0.969406, 1.00531, 1.04121, 1.07712, 1.11302, 1.14893, - &1.18483, 1.22073, 1.25664, 1.29254, 1.32844, 1.36435, - &1.40025, 1.43616, 1.47206, 1.50796, 1.54387, 1.57977, - &1.61568, 1.65158, 1.68748, 1.72339, 1.75929, 1.7952, - &1.8311, 1.867, 1.90291, 1.93881, 1.97472, 2.01062, - &2.04652, 2.08243, 2.11833, 2.15423, 2.33375, 2.51327, - &2.69279, 2.87231, 3.05183, 3.23135, 3.41087, 3.59039, - &3.76991, 3.94943, 4.12895, 4.30847, 4.48799, 4.66751, - &4.84703, 5.02655, 5.20607, 5.38559, 5.56511, 5.74463, - &5.92415, 6.10367, 6.28319, 6.4627, 6.64222, 6.82174, - &7.00126, 7.18078, 7.3603, 7.53982, 7.71934, 7.89886, - &8.07838, 8.2579, 8.43742, 8.61694, 8.79646, 8.97598, - &9.1555, 9.33502, 9.51454, 9.69406, 9.87358, 10.0531, - &10.2326, 10.4121, 10.5917, 10.7712, 10.9507, 11.1302, - &11.3097, 11.4893, 11.6688, 11.8483, 12.0278, 12.2073, - &12.3869, 12.5664/ - DATA (FLUX(I,5,1),I=1,119) /0.000707742, 0.00696306, 0.013622, - &0.0199438, 0.0258963, 0.0314543, 0.0366008, 0.0413272, 0.0456326, - &0.0495235, 0.0530132, 0.0561204, 0.0588688, 0.061285, 0.0633984, - &0.0652395, 0.0668391, 0.0682279, 0.0694351, 0.0704883, 0.0714134, - &0.0722334, 0.0729684, 0.0736363, 0.0742525, 0.0748286, 0.0753746, - &0.0758971, 0.0764006, 0.0768889, 0.0773613, 0.0778171, 0.0782538, - &0.0786693, 0.0790574, 0.0794139, 0.0797338, 0.0800119, 0.0802432, - &0.0804228, 0.0805463, 0.0806106, 0.0806132, 0.0805515, 0.0804249, - &0.080233, 0.0799768, 0.0796578, 0.0792777, 0.0788402, 0.0783479, - &0.0778052, 0.0772162, 0.0765849, 0.0759168, 0.0752153, 0.074486, - &0.0737326, 0.0729594, 0.07217, 0.0713688, 0.0672747, 0.0631895, - &0.0591664, 0.0551559, 0.0511155, 0.0470694, 0.0431013, 0.0393084, - &0.0357573, 0.0324669, 0.0294194, 0.0266, 0.0239432, 0.0215, - &0.0192369, 0.0171849, 0.0153311, 0.0136605, 0.012153, 0.0107899, - &0.00955817, 0.00844947, 0.00745744, 0.00657441, 0.0057905, - &0.00509428, 0.00447488, 0.00392336, 0.00345015, 0.00301986, - &0.00264098, 0.00230825, 0.00201616, 0.00175951, 0.00153379, - &0.00133545, 0.00116159, 0.00100965, 0.000877169, 0.000761744, - &0.000661112, 0.000573298, 0.000496682, 0.000429944, 0.000371949, - &0.000321654, 0.000278075, 0.000240297, 0.000207523, 0.000179083, - &0.000154432, 0.000133102, 0.000114682, 9.87872e-05, 8.5069e-05, - &7.3221e-05, 6.29832e-05, 5.41427e-05/ - DATA (FLUX(I,5,2),I=1,119) /1.69752e-06, 0.000166876, 0.000656692, - &0.00145079, 0.0025219, 0.00383575, 0.00536073, 0.0070739, - &0.00895512, 0.010976, 0.0130975, 0.0152809, 0.0175005, 0.0197445, - &0.0220015, 0.0242486, 0.0264539, 0.0285917, 0.030653, 0.0326409, - &0.0345556, 0.036385, 0.038111, 0.0397236, 0.0412279, 0.0426358, - &0.0439534, 0.0451766, 0.0462981, 0.0473188, 0.0482497, 0.0491032, - &0.0498854, 0.0505955, 0.0512329, 0.0518027, 0.0523152, 0.0527787, - &0.053196, 0.053567, 0.053894, 0.0541827, 0.0544391, 0.0546662, - &0.0548626, 0.0550287, 0.0551678, 0.0552839, 0.0553792, 0.0554513, - &0.0554971, 0.0555166, 0.0555143, 0.0554926, 0.0554502, 0.0553821, - &0.0552856, 0.055162, 0.0550154, 0.0548479, 0.0546569, 0.0532957, - &0.051347, 0.0489391, 0.0462389, 0.0434023, 0.0405365, 0.0376939, - &0.0348892, 0.0321298, 0.0294357, 0.026842, 0.0243855, 0.022091, - &0.0199665, 0.0180056, 0.0161949, 0.0145232, 0.0129848, 0.0115789, - &0.0103044, 0.00915607, 0.00812422, 0.00719702, 0.00636366, - &0.00561573, 0.00494694, 0.0043518, 0.00382449, 0.00335844, - &0.0029466, 0.00258226, 0.00225987, 0.00197508, 0.0017243, - &0.00150417, 0.00131132, 0.00114241, 0.000994366, 0.000864575, - &0.000750893, 0.000651563, 0.00056502, 0.000489769, 0.000424368, - &0.00036749, 0.000318001, 0.000274961, 0.000237584, 0.000205188, - &0.000177153, 0.000152904, 0.000131918, 0.000113742, 9.79971e-05, - &8.43751e-05, 7.26128e-05, 6.24714e-05, 5.3733e-05/ - DATA (FLUX(I,5,3),I=1,119) /7.67881e-09, 7.54357e-06, 5.92886e-05, - &0.000196611, 0.00045797, 0.000879024, 0.0014927, 0.00232918, - &0.00341578, 0.00477676, 0.00643302, 0.00840168, 0.0106956, - &0.0133228, 0.0162858, 0.0195811, 0.0231985, 0.0271202, 0.0313215, - &0.0357694, 0.0404231, 0.0452356, 0.0501528, 0.0551159, 0.0600627, - &0.06493, 0.0696545, 0.0741767, 0.0784408, 0.082399, 0.086011, - &0.0892462, 0.0920832, 0.0945115, 0.0965297, 0.0981441, 0.0993701, - &0.100229, 0.100746, 0.10095, 0.100875, 0.100552, 0.100014, - &0.0992936, 0.0984218, 0.097427, 0.0963357, 0.0951719, 0.093957, - &0.0927098, 0.0914464, 0.0901803, 0.0889224, 0.0876818, 0.0864652, - &0.0852772, 0.0841213, 0.0829988, 0.08191, 0.0808538, 0.0798285, - &0.0750509, 0.0705011, 0.0657913, 0.0608118, 0.0557087, 0.0507283, - &0.0460694, 0.0418151, 0.0379423, 0.0343766, 0.0310499, 0.0279327, - &0.025033, 0.0223728, 0.0199657, 0.0178044, 0.0158648, 0.0141164, - &0.0125338, 0.0111013, 0.00981121, 0.00865793, 0.00763366, - &0.00672658, 0.00592251, 0.00520797, 0.00457206, 0.00400705, - &0.00350824, 0.0030683, 0.00268218, 0.00234346, 0.00204591, - &0.00178415, 0.00155392, 0.0013519, 0.00117523, 0.00102119, - &0.000887018, 0.000770095, 0.000668061, 0.000578992, 0.000501331, - &0.000433784, 0.000375185, 0.000324413, 0.000280419, 0.000242259, - &0.000209136, 0.000180402, 0.00015552, 0.000134018, 0.000115463, - &9.9454e-05, 8.56321e-05, 7.36885e-05, 6.33696e-05, 5.44653e-05/ - DATA (ETVALS(I,6),I=1,151) /0.00314159, 0.0314159, 0.0628319, - &0.0942478, 0.125664, 0.15708, 0.188496, 0.219911, 0.251327, - &0.282743, 0.314159, 0.345575, 0.376991, 0.408407, 0.439823, - &0.471239, 0.502655, 0.534071, 0.565487, 0.596903, 0.628319, - &0.659734, 0.69115, 0.722566, 0.753982, 0.785398, 0.816814, - &0.84823, 0.879646, 0.911062, 0.942478, 0.973894, 1.00531, - &1.03673, 1.06814, 1.09956, 1.13097, 1.16239, 1.19381, - &1.22522, 1.25664, 1.28805, 1.31947, 1.35088, 1.3823, - &1.41372, 1.44513, 1.47655, 1.50796, 1.53938, 1.5708, - &1.60221, 1.63363, 1.66504, 1.69646, 1.72788, 1.75929, - &1.79071, 1.82212, 1.85354, 1.88496, 1.91637, 1.94779, - &1.9792, 2.01062, 2.04204, 2.07345, 2.10487, 2.13628, - &2.1677, 2.19911, 2.23053, 2.26195, 2.29336, 2.32478, - &2.35619, 2.38761, 2.41903, 2.45044, 2.48186, 2.51327, - &2.54469, 2.57611, 2.60752, 2.63894, 2.67035, 2.70177, - &2.73319, 2.7646, 2.79602, 2.82743, 2.85885, 2.89027, - &2.92168, 2.9531, 2.98451, 3.01593, 3.04734, 3.07876, - &3.11018, 3.14159, 3.29867, 3.45575, 3.61283, 3.76991, - &3.92699, 4.08407, 4.24115, 4.39823, 4.55531, 4.71239, - &4.86947, 5.02655, 5.18363, 5.34071, 5.49779, 5.65487, - &5.81195, 5.96903, 6.12611, 6.28319, 6.44026, 6.59734, - &6.75442, 6.9115, 7.06858, 7.22566, 7.38274, 7.53982, - &7.6969, 7.85398, 8.01106, 8.16814, 8.32522, 8.4823, - &8.63938, 8.79646, 8.95354, 9.11062, 9.2677, 9.42478, - &9.73894, 10.0531, 10.3673, 10.6814, 10.9956, 11.3097, - &11.6239, 11.9381, 12.2522, 12.5664/ - DATA (FLUX(I,6,1),I=1,151) /0.000809285, 0.0079693, 0.0156311, - &0.022938, 0.0298497, 0.0363344, 0.0423699, 0.0479426, 0.0530494, - &0.0576952, 0.0618929, 0.0656626, 0.0690295, 0.0720232, 0.0746762, - &0.0770231, 0.0790985, 0.0809368, 0.0825719, 0.0840346, 0.0853549, - &0.0865583, 0.0876687, 0.088706, 0.0896874, 0.0906267, 0.0915347, - &0.0924189, 0.0932841, 0.0941337, 0.0949672, 0.0957836, 0.0965798, - &0.0973506, 0.0980911, 0.0987955, 0.099457, 0.100069, 0.100626, - &0.10112, 0.101549, 0.101906, 0.102188, 0.102393, 0.102519, - &0.102566, 0.102533, 0.102423, 0.102238, 0.101979, 0.101652, - &0.101261, 0.100809, 0.100302, 0.0997452, 0.0991436, 0.0985024, - &0.0978265, 0.0971203, 0.0963888, 0.0956363, 0.094866, 0.0940814, - &0.0932857, 0.092481, 0.0916692, 0.090853, 0.0900324, 0.0892086, - &0.0883826, 0.087554, 0.0867231, 0.0858899, 0.0850532, 0.0842132, - &0.0833692, 0.0825207, 0.0816667, 0.080807, 0.0799407, 0.079068, - &0.0781883, 0.0773019, 0.0764082, 0.0755076, 0.0746006, 0.0736877, - &0.0727694, 0.0718463, 0.0709193, 0.0699895, 0.0690574, 0.068124, - &0.0671912, 0.0662592, 0.065329, 0.0644021, 0.0634791, 0.0625611, - &0.061649, 0.060743, 0.0563301, 0.0521382, 0.0481676, 0.0443965, - &0.0408061, 0.037396, 0.03418, 0.0311759, 0.0283927, 0.0258257, - &0.0234595, 0.0212756, 0.0192593, 0.0174016, 0.0156973, 0.014142, - &0.0127284, 0.0114458, 0.0102822, 0.00922554, 0.00826637, - &0.00739746, 0.00661279, 0.00590658, 0.00527226, 0.00470284, - &0.0041915, 0.00373215, 0.00331982, 0.00295038, 0.0026202, - &0.00232572, 0.00206331, 0.00182949, 0.00162103, 0.0014352, - &0.00126972, 0.00112262, 0.000992099, 0.000876413, 0.000683056, - &0.000531116, 0.000412083, 0.000319294, 0.000247034, 0.000190749, - &0.000147057, 0.00011326, 8.71096e-05, 6.6887e-05/ - DATA (FLUX(I,6,2),I=1,151) /1.78396e-06, 0.000175716, 0.000692887, - &0.00153366, 0.0026707, 0.00406879, 0.00569523, 0.00752629, - &0.00954095, 0.0117094, 0.0139905, 0.0163431, 0.0187403, 0.0211698, - &0.02362, 0.0260668, 0.0284768, 0.030823, 0.0330963, 0.035301, - &0.0374375, 0.0394932, 0.0414492, 0.043295, 0.0450364, 0.0466863, - &0.0482513, 0.0497262, 0.051103, 0.0523826, 0.053576, 0.0546968, - &0.0557502, 0.0567343, 0.0576477, 0.0584957, 0.0592887, 0.0600346, - &0.0607356, 0.0613902, 0.0620003, 0.0625719, 0.0631111, 0.0636198, - &0.0640962, 0.0645394, 0.0649529, 0.0653413, 0.0657063, 0.0660451, - &0.0663531, 0.0666306, 0.0668822, 0.0671113, 0.0673159, 0.0674904, - &0.0676309, 0.0677389, 0.0678196, 0.0678756, 0.0679033, 0.0678972, - &0.0678551, 0.0677799, 0.0676778, 0.0675501, 0.0673939, 0.0672048, - &0.066983, 0.066733, 0.0664597, 0.0661647, 0.0658456, 0.0655, - &0.0651299, 0.0647396, 0.064333, 0.0639106, 0.0634715, 0.0630148, - &0.062543, 0.0620595, 0.0615657, 0.0610623, 0.0605486, 0.0600253, - &0.0594937, 0.0589563, 0.0584128, 0.057863, 0.0573069, 0.0567457, - &0.0561806, 0.0556118, 0.0550388, 0.0544604, 0.053878, 0.0532926, - &0.0527051, 0.0521146, 0.0515202, 0.0485068, 0.0454498, 0.0423943, - &0.0393923, 0.036488, 0.0337105, 0.0310715, 0.0285714, 0.0262057, - &0.0239722, 0.0218738, 0.0199158, 0.018101, 0.0164264, 0.0148842, - &0.0134648, 0.0121592, 0.0109605, 0.00986385, 0.00886488, - &0.00795832, 0.00713765, 0.00639526, 0.0057237, 0.00511655, - &0.00456864, 0.00407545, 0.00363267, 0.00323588, 0.0028806, - &0.00256244, 0.00227744, 0.00202224, 0.00179408, 0.00159053, - &0.00140929, 0.00124804, 0.00110459, 0.000976957, 0.000863437, - &0.000673092, 0.000523742, 0.000406926, 0.000315524, 0.000244201, - &0.000188768, 0.000145714, 0.000112263, 8.63566e-05, 6.6358e-05/ - DATA (FLUX(I,6,3),I=1,151) /8.97104e-09, 8.83026e-06, 6.95537e-05, - &0.000231151, 0.000539569, 0.00103781, 0.00176596, 0.00276113, - &0.00405724, 0.0056848, 0.00767043, 0.0100363, 0.0127997, 0.015972, - &0.019558, 0.0235552, 0.0279528, 0.0327314, 0.0378621, 0.0433069, - &0.049018, 0.0549392, 0.0610064, 0.0671499, 0.0732951, 0.0793657, - &0.0852866, 0.0909847, 0.0963937, 0.101454, 0.106117, 0.110344, - &0.114107, 0.117392, 0.120194, 0.122518, 0.124381, 0.125804, - &0.126815, 0.127449, 0.127742, 0.127729, 0.12745, 0.126942, - &0.12624, 0.125378, 0.124389, 0.123299, 0.122136, 0.120921, - &0.119676, 0.118415, 0.117153, 0.115902, 0.114669, 0.113462, - &0.112286, 0.111142, 0.110031, 0.108953, 0.107906, 0.106888, - &0.105894, 0.104921, 0.103964, 0.103018, 0.102079, 0.101142, - &0.100203, 0.0992566, 0.0983002, 0.0973301, 0.0963441, 0.0953403, - &0.094317, 0.0932737, 0.0922101, 0.0911269, 0.0900243, 0.0889043, - &0.0877678, 0.0866176, 0.0854555, 0.0842843, 0.0831059, 0.0819233, - &0.0807391, 0.0795555, 0.0783748, 0.0771996, 0.0760317, 0.0748732, - &0.0737254, 0.0725897, 0.0714675, 0.0703598, 0.0692667, 0.0681891, - &0.0671271, 0.0660808, 0.0650502, 0.0601166, 0.0554934, 0.0511039, - &0.0469081, 0.0429128, 0.0391519, 0.0356579, 0.0324431, 0.0294951, - &0.026786, 0.0242869, 0.0219771, 0.0198474, 0.0178946, 0.0161153, - &0.0145015, 0.0130401, 0.0117155, 0.0105126, 0.00942002, - &0.00842961, 0.00753512, 0.00673031, 0.00600798, 0.00536004, - &0.00477832, 0.00425563, 0.00378616, 0.00336528, 0.00298896, - &0.00265334, 0.00235437, 0.00208804, 0.00185062, 0.0016389, - &0.00145026, 0.00128246, 0.00113351, 0.00100149, 0.000884528, - &0.000688981, 0.000535337, 0.00041517, 0.000321595, 0.000248695, - &0.000191937, 0.000147936, 0.000113911, 8.75761e-05, 6.72234e-05/ - save radhor - PIFAC = ACOS(-ONE) -C Spectrum - RADHOR = (RHFACT*BHMASS)**(ONE/(TOTDIM-THREE)) - HWKTMP = (TOTDIM-THREE)/(4.0D0*PIFAC*RADHOR) - IF(GRYBDY) THEN - SPCMAX=MXARRY(TOTDIM-5,SPIN+1) - ELSE - IF (STAT.EQ.-1) THEN - SPCMAX=HALF*HWKTMP**2 - ELSE - SPCMAX=(TWO/THREE)*HWKTMP**2 - ENDIF - ENDIF - POINTS=NARRAY(TOTDIM-5) -C MC for energy - 10 ETRAT=CHRUNI(0,ZERO,ETVALS(POINTS,TOTDIM-5)) - ENERGY=HWKTMP*ETRAT - IF (GRYBDY) THEN - SPCVAL=CHUTAB(FLUX(1,TOTDIM-5,SPIN+1),ETVALS(1,TOTDIM-5), - & POINTS,ETRAT,4) - ELSE - SPCVAL=(ENERGY**2)/(EXP(ETRAT)-STAT) - ENDIF - IF (SPCVAL.LT.SPCMAX*CHRGEN(1)) GOTO 10 -c if ( energy*radhor.lt.1.0d0 ) goto 10 - END -CDECK ID>, CHULB4. -*CMZ :- -17/07/03 18.11.30 by Peter Richardson -*-- Author : Adapted by Bryan Webber -C----------------------------------------------------------------------- - SUBROUTINE CHULB4(PS,PI,PF) -C----------------------------------------------------------------------- -C TRANSFORMS PI (GIVEN IN REST FRAME OF PS) INTO PF (IN LAB) -C N.B. P(1,2,3,4) = (PX,PY,PZ,E); PS(5)=M -C (taken from HERWIG) -C----------------------------------------------------------------------- - IMPLICIT NONE - DOUBLE PRECISION PF4,FN,PS(5),PI(4),PF(4) - IF (PS(4).EQ.PS(5)) THEN - PF(1)= PI(1) - PF(2)= PI(2) - PF(3)= PI(3) - PF(4)= PI(4) - ELSE - PF4 = (PI(1)*PS(1)+PI(2)*PS(2) - & +PI(3)*PS(3)+PI(4)*PS(4))/PS(5) - FN = (PF4+PI(4)) / (PS(4)+PS(5)) - PF(1)= PI(1) + FN*PS(1) - PF(2)= PI(2) + FN*PS(2) - PF(3)= PI(3) + FN*PS(3) - PF(4)= PF4 - END IF - END -CDECK ID>, CHULOB. -*CMZ :- -17/07/03 18.11.30 by Peter Richardson -*-- Author : Adapted by Bryan Webber -C----------------------------------------------------------------------- - SUBROUTINE CHULOB(PS,PI,PF) -C----------------------------------------------------------------------- -C TRANSFORMS PI (GIVEN IN REST FRAME OF PS) INTO PF (IN LAB) -C N.B. P(1,2,3,4,5) = (PX,PY,PZ,E,M) -C (taken from HERWIG) -C----------------------------------------------------------------------- - IMPLICIT NONE - DOUBLE PRECISION PS(5),PI(5),PF(5) - CALL CHULB4(PS,PI,PF) - PF(5)= PI(5) - END -CDECK ID>, CHUMAS. -*CMZ :- -17/07/03 18.11.30 by Peter Richardson -*-- Author : Bryan Webber -C----------------------------------------------------------------------- - SUBROUTINE CHUMAS(P) -C----------------------------------------------------------------------- -C PUTS INVARIANT MASS IN 5TH COMPONENT OF VECTOR -C (NEGATIVE SIGN IF SPACELIKE) (extracted from HERWIG) -C----------------------------------------------------------------------- - IMPLICIT NONE - DOUBLE PRECISION CHUSQR,P(5) - EXTERNAL CHUSQR - P(5)=CHUSQR((P(4)+P(3))*(P(4)-P(3))-P(1)**2-P(2)**2) - END -CDECK ID>, CHUPCM. -*CMZ :- -17/07/03 18.11.30 by Peter Richardson -*-- Author : Bryan Webber -C----------------------------------------------------------------------- - FUNCTION CHUPCM(EM0,EM1,EM2) -C----------------------------------------------------------------------- -C C.M. MOMENTUM FOR DECAY MASSES EM0 -> EM1 + EM2 -C SET TO -1 BELOW THRESHOLD (extracted from HERWIG) -C----------------------------------------------------------------------- - IMPLICIT NONE - DOUBLE PRECISION CHUPCM,EM0,EM1,EM2,EMS,EMD - EMS=ABS(EM1+EM2) - EMD=ABS(EM1-EM2) - IF (EM0.LT.EMS.OR.EM0.LT.EMD) THEN - CHUPCM=-1.0D0 - ELSEIF (EM0.EQ.EMS.OR.EM0.EQ.EMD) THEN - CHUPCM=0.0D0 - ELSE - CHUPCM=SQRT((EM0+EMD)*(EM0-EMD)* - & (EM0+EMS)*(EM0-EMS))*0.5D0/EM0 - ENDIF - END -CDECK ID>, CHUROB. -*CMZ :- -17/07/03 18.11.30 by Peter Richardson -*-- Author : Bryan Webber -C----------------------------------------------------------------------- - SUBROUTINE CHUROB(R,P,Q) -C----------------------------------------------------------------------- -C ROTATES VECTORS BY INVERSE OF ROTATION MATRIX R -C (taken from HERWIG) -C----------------------------------------------------------------------- - IMPLICIT NONE - DOUBLE PRECISION S1,S2,S3,R(3,3),P(3),Q(3) - S1=P(1)*R(1,1)+P(2)*R(2,1)+P(3)*R(3,1) - S2=P(1)*R(1,2)+P(2)*R(2,2)+P(3)*R(3,2) - S3=P(1)*R(1,3)+P(2)*R(2,3)+P(3)*R(3,3) - Q(1)=S1 - Q(2)=S2 - Q(3)=S3 - END -CDECK ID>, CHUROT. -*CMZ :- -17/07/03 18.11.30 by Peter Richardson -*-- Author : Bryan Webber -C----------------------------------------------------------------------- - SUBROUTINE CHUROT(P,CP,SP,R) -C----------------------------------------------------------------------- -C R IS ROTATION MATRIX TO GET FROM VECTOR P TO Z AXIS, FOLLOWED BY -C A ROTATION BY PSI ABOUT Z AXIS, WHERE CP = COS-PSI, SP = SIN-PSI -C (extracted from HERWIG) -C----------------------------------------------------------------------- - IMPLICIT NONE - DOUBLE PRECISION WN,CP,SP,PTCUT,PP,PT,CT,ST,CF,SF,P(3),R(3,3) - DATA WN,PTCUT/1.D0,1.D-20/ - PT=P(1)**2+P(2)**2 - PP=P(3)**2+PT - IF (PT.LE.PP*PTCUT) THEN - CT=SIGN(WN,P(3)) - ST=0.0D0 - CF=1.0D0 - SF=0.0D0 - ELSE - PP=SQRT(PP) - PT=SQRT(PT) - CT=P(3)/PP - ST=PT/PP - CF=P(1)/PT - SF=P(2)/PT - END IF - R(1,1)= CP*CF*CT+SP*SF - R(1,2)= CP*SF*CT-SP*CF - R(1,3)=-(CP*ST) - R(2,1)=-(CP*SF+SP*CF*CT) - R(2,2)= CP*CF+SP*SF*CT - R(2,3)=-(SP*ST) - R(3,1)= CF*ST - R(3,2)= SF*ST - R(3,3)= CT - END -CDECK ID>, CHUSQR. -*CMZ :- -17/07/03 18.11.30 by Peter Richardson -*-- Author : Bryan Webber -C----------------------------------------------------------------------- - FUNCTION CHUSQR(X) -C----------------------------------------------------------------------- -C SQUARE ROOT WITH SIGN RETENTION (extracted from HERWIG) -C----------------------------------------------------------------------- - IMPLICIT NONE - DOUBLE PRECISION CHUSQR,X - CHUSQR=SIGN(SQRT(ABS(X)),X) - END -CDECK ID>, CHUTAB. -*CMZ :- -17/07/03 18.11.30 by Peter Richardson -*-- Author : Adapted by Bryan Webber -C----------------------------------------------------------------------- - FUNCTION CHUTAB(F,A,NN,X,MM) -C----------------------------------------------------------------------- -C MODIFIED CERN INTERPOLATION ROUTINE DIVDIF -C----------------------------------------------------------------------- - IMPLICIT NONE - INTEGER NN,MM,MMAX,N,M,MPLUS,IX,IY,MID,NPTS,IP,I,J,L,ISUB - DOUBLE PRECISION CHUTAB,SUM,X,F(NN),A(NN),T(20),D(20) - LOGICAL EXTRA - DATA MMAX/10/ - N=NN - M=MIN(MM,MMAX,N-1) - MPLUS=M+1 - IX=0 - IY=N+1 - IF (A(1).GT.A(N)) GOTO 4 - 1 MID=(IX+IY)/2 - IF (X.GE.A(MID)) GOTO 2 - IY=MID - GOTO 3 - 2 IX=MID - 3 IF (IY-IX.GT.1) GOTO 1 - GOTO 7 - 4 MID=(IX+IY)/2 - IF (X.LE.A(MID)) GOTO 5 - IY=MID - GOTO 6 - 5 IX=MID - 6 IF (IY-IX.GT.1) GOTO 4 - 7 NPTS=M+2-MOD(M,2) - IP=0 - L=0 - GOTO 9 - 8 L=-L - IF (L.GE.0) L=L+1 - 9 ISUB=IX+L - IF ((1.LE.ISUB).AND.(ISUB.LE.N)) GOTO 10 - NPTS=MPLUS - GOTO 11 - 10 IP=IP+1 - T(IP)=A(ISUB) - D(IP)=F(ISUB) - 11 IF (IP.LT.NPTS) GOTO 8 - EXTRA=NPTS.NE.MPLUS - DO 14 L=1,M - IF (.NOT.EXTRA) GOTO 12 - ISUB=MPLUS-L - D(M+2)=(D(M+2)-D(M))/(T(M+2)-T(ISUB)) - 12 I=MPLUS - DO 13 J=L,M - ISUB=I-L - D(I)=(D(I)-D(I-1))/(T(I)-T(ISUB)) - I=I-1 - 13 CONTINUE - 14 CONTINUE - SUM=D(MPLUS) - IF (EXTRA) SUM=0.5D0*(SUM+D(M+2)) - J=M - DO 15 L=1,M - SUM=D(J)+(X-T(J))*SUM - J=J-1 - 15 CONTINUE - CHUTAB=SUM - END -CDECK ID>, CHVDIF. -*CMZ :- -17/07/03 18.11.30 by Peter Richardson -*-- Author : Bryan Webber -C----------------------------------------------------------------------- - SUBROUTINE CHVDIF(N,P,Q,R) -C----------------------------------------------------------------------- -C VECTOR DIFFERENCE (extracted from HERWIG) -C----------------------------------------------------------------------- - DOUBLE PRECISION P(N),Q(N),R(N) - INTEGER N,I - DO 10 I=1,N - 10 R(I)=P(I)-Q(I) - END -CDECK ID>, CHVEQU. -*CMZ :- -17/07/03 18.11.30 by Peter Richardson -*-- Author : Bryan Webber -C----------------------------------------------------------------------- - SUBROUTINE CHVEQU(N,P,Q) -C----------------------------------------------------------------------- -C VECTOR EQUALITY (extracted from HERWIG) -C----------------------------------------------------------------------- - DOUBLE PRECISION P(N),Q(N) - INTEGER N,I - DO 10 I=1,N - 10 Q(I)=P(I) - END -CDECK ID>, CHVSUM. -*CMZ :- -17/07/03 18.11.30 by Peter Richardson -*-- Author : Bryan Webber -C----------------------------------------------------------------------- - SUBROUTINE CHVSUM(N,P,Q,R) -C----------------------------------------------------------------------- -C VECTOR SUM (extracted from HERWIG) -C----------------------------------------------------------------------- - DOUBLE PRECISION P(N),Q(N),R(N) - DO 10 I=1,N - 10 R(I)=P(I)+Q(I) - END diff --git a/Generators/Herwig_i/CMakeLists.txt b/Generators/Herwig_i/CMakeLists.txt deleted file mode 100644 index 11f7c951c2d6930ff49463de41088375864c0af2..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/CMakeLists.txt +++ /dev/null @@ -1,76 +0,0 @@ -################################################################################ -# Package: Herwig_i -################################################################################ - -# Declare the package name: -atlas_subdir( Herwig_i ) - -# Declare the package's dependencies: -atlas_depends_on_subdirs( - PUBLIC - Generators/AcerMC_i - Generators/GeneratorModules - Generators/Tauola_i - PRIVATE - Control/AthenaKernel - GaudiKernel - Generators/AlpGen_i - Generators/Charybdis_i - Generators/GeneratorFortranCommon - Generators/GeneratorUtils - Generators/Lhef_i - Generators/MadGraph_i - Generators/McAtNlo_i - Generators/TruthUtils - Generators/MadCUP_i - Generators/Horace_i ) - -# External dependencies: -find_package( CLHEP ) -find_package( HepMC COMPONENTS HepMC HepMCfio ) -find_package( Herwig ) -find_package( Jimmy ) -find_package( Lhapdf ) - -# Remove the --as-needed linker flags: -atlas_disable_as_needed() - -# Component(s) in the package: -atlas_add_library( Herwig_iLib - Herwig_i/*.h Herwig_i/*.icc - src/Herwig.cxx src/Address*.cxx src/InitHerwigCommonBlocks_65.cxx - src/Lhefinfo.cxx src/wgtacp.cxx src/upevnt_hw.F - src/upinit_hw.F src/upveto_hw.F src/atoher_65.F - src/hwpdfinfo.F src/HerwigInterface_65.F src/herwig_common_block_address_65.F - src/glhefinfo.F src/gwgtacp.F src/hwgpdg.F src/hwtpdg.F src/hwrgen.F - src/gatlastaula_decres_hw.F src/hwhepc.F src/extproc.F src/topdec.F - src/charybdfix.F src/HerwigDummies/circ*.F src/HerwigDummies/decadd.F - src/HerwigDummies/eudini.F src/HerwigDummies/fragmt.F - src/HerwigDummies/hvhbvi.F src/HerwigDummies/ieupdg.F - src/HerwigDummies/ipdgeu.F src/HerwigDummies/qqinit.F - src/HerwigDummies/hwhvvj.F src/HerwigDummies/hwupro.F - src/HerwigDummies/pytime.F src/HerwigDummies/hwirpv.F - src/HerwigDummies/timel.F src/HerwigModified/hwugup.f - src/HerwigModified/hwhsnm.f src/HerwigModified/hwdtau.f - PUBLIC_HEADERS Herwig_i - INCLUDE_DIRS ${HERWIG_INCLUDE_DIRS} ${JIMMY_INCLUDE_DIRS} - ${LHAPDF_INCLUDE_DIRS} - PRIVATE_INCLUDE_DIRS ${CLHEP_INCLUDE_DIRS} ${HEPMC_INCLUDE_DIRS} - PRIVATE_DEFINITIONS ${CLHEP_DEFINITIONS} -DHWVERSION="${HERWIG_VERSION}" - LINK_LIBRARIES ${HERWIG_LIBRARIES} ${JIMMY_LIBRARIES} ${LHAPDF_LIBRARIES} - AcerMC_i GeneratorModulesLib Tauola_iLib GeneratorFortranCommonLib - PRIVATE_LINK_LIBRARIES ${CLHEP_LIBRARIES} ${HEPMC_LIBRARIES} AthenaKernel - GaudiKernel AlpGen_i Charybdis_i Lhef_i MadGraph_i McAtNlo_i TruthUtils - MadCUP_i Horace_i ) - -atlas_add_component( Herwig_i - src/components/*.cxx - LINK_LIBRARIES GaudiKernel Herwig_iLib ) - -atlas_add_component( HerwigRpv_i - src/HerwigModified/rpv/*.f - src/componentsRpv/*.cxx - LINK_LIBRARIES GaudiKernel Herwig_iLib ) - -# Install files from the package: -atlas_install_joboptions( share/*.py ) diff --git a/Generators/Herwig_i/Herwig_i/Dpemc.h b/Generators/Herwig_i/Herwig_i/Dpemc.h deleted file mode 100644 index 0f9b77dc7b570aadbd61eda67cf633b265179547..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/Herwig_i/Dpemc.h +++ /dev/null @@ -1,253 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - - -#ifndef GENERATORMODULESDPEMC_H -#define GENERATORMODULESDPEMC_H -#include "GeneratorModules/GenModule.h" -#include "AcerMC_i/AcerMC_acset.h" -#include "Tauola_i/Atlas_HEPEVT.h" - -using std::string; -typedef std::vector<std::string> CommandVector; -/** -@class Dpemc -@brief interface to DPEMC Monte Carlo - -This code is used to get a DPEMC Monte Carlo event. - - * genInitialize() is used to read parameters - - * callGenerator() makes the event - - * genFinalize() writes log files etc - - * fillEvt(GeneratorEvent* evt) passes the event to HepMC - -The output will be stored in the transient event store so it can be passed to the simulation. - -@author - * Georgios Stavropoulos January 2003 : Migrate to Herwig 6.5 - - * Ian Hinchliffe Sept 2000: Modeled after the CDF code by Marge Shapiro, Elena Bucciol, and j ly - - * Borut Paul Kersevan February 2003: added access to lesatlas common (not part of herwig but needed for external procees - - * Vojtech Juranek modified Herwig interface for Dpemc - - * Judith Katzy Jan 2008 added doxygen docu - -*/ -class Dpemc - :public GenModule -{ -public: - Dpemc(const std::string& name, ISvcLocator* pSvcLocator); - virtual ~Dpemc(); - virtual StatusCode genInitialize(); - virtual StatusCode callGenerator(); - virtual StatusCode genFinalize(); - virtual StatusCode fillEvt(GenEvent* evt); - void Localpar2Her(); - void Her2Localpar(); - // accessor for external processes - AcerMC_acset& acermc_acset(); - -private: - // data members corresponding to Herwig variables - - int m_process; // QCD process generated - int m_maxer_Parm; // - int m_randomseed1_Parm; // - int m_randomseed2_Parm; // -//cjl <float>m_lambdaQCD_Parm; // to calculate alphas - double m_lambdaQCD_Parm; // to calculate alphas - // string m_decayTable_Parm; // parm for the file name - // that has the decay table - // int m_scaleChoiceParm; // choice of qcd scale - // 1=pt/2, 2=pt, 3=2pt - - // commands of Menu 01 - - string m_Beamtype1_Parm;// initialize beam particle 1 - double m_Energy1_Parm;//initialize beam energy 1 - string m_Beamtype2_Parm;// initialize beam particle 2 - double m_Energy2_Parm;//initialize beam energy 2 - - - // commands of Menu 02 - v6.1 no read/write - - int m_sudord_Parm ; //Sudakov order - - // commands of Menu 03 - - string m_autpdf; - int m_modpdf; - - double m_pltcut_Parm; - // commands of Menu 04 - -//cjl double m_rapiditiesm_Parm;// select rapidity limits min - double m_ptm_Parm;// select transverse momentum limits min - double m_invarmassm_Parm;// select invariant mass limits min - double m_rapiditiesM_Parm;// select rapidity limits max - double m_ptM_Parm;// select transverse momentum limits max - double m_invarmassM_Parm;// select invariant mass limits max - double m_thrust_Parm;// select thrust - double m_ptpow_Parm;// select ET power - double m_empow_Parm;// select M power - double m_q2pow_Parm;// select Q**2 power - double m_qlim_Parm;// select upper limits in scale - double m_q2dilsm_Parm;// set Q**2 limits min - double m_q2dilsM_Parm;// set Q**2 limits max - int m_bgshat_Parm;// scaling switch - - // commands of Menu 05 - - int m_azsoft_Parm;//azimuthal correlation soft gluon - double m_prsof_Parm; - int m_azspin_Parm;//azimuthal correlation spin - double m_qspac_Parm;//lower limit for spacelike evolution - int m_ispac_Parm;//controls exact meaning of qspac - int m_nospac_Parm;//can turn off ISR - double m_vqcut_Parm;//quark virtuality cutoff - double m_vgcut_Parm;//gluon virtuality cutoff - double m_vpcut_Parm;//photon virtuality cutoff - // double m_gluonmass_Parm;//gluon virtual mass cutoff - double m_intrinsicpt_Parm;// intrinsic pt incoming hadrons - - // commands of Menu 06 - - double m_clmax_Parm;//mass cluster mass parameter - double m_clpow_Parm;// mass dependence of cluster hadronization - double m_psplt1_Parm;// mass dist in cluster splitting, non-b - double m_psplt2_Parm;// mass dist in cluster splitting, b - int m_cldir1_Parm;// direction memory, cluster splitting, non-b - int m_cldir2_Parm;// direction memory, cluster splitting, b - double m_clsmr1_Parm;// alignment, cluster splitting, non-b - double m_clsmr2_Parm;// alignment, cluster splitting, b - double m_qdiqk_Parm; //scale at which gluon can be split into diquarks - double m_pdiqk_Parm; //probability of diquark splitting per unit log scale - double m_decwt_Parm; // a priori weights for decuplet baryons for cluster decays - double m_pwt_Parm; // a priori weights for quarks and diquarks - - // commands of Menu 07 - - double m_pmbn1_Parm;// soft int. param for multiplicity - double m_pmbn2_Parm;// soft int. param for multiplicity - double m_pmbn3_Parm;// soft int. param for multiplicity - double m_pmbk1_Parm;// soft int. param for negative binomial - double m_pmbk2_Parm;// soft int. param for negative binomial - double m_pmbm1_Parm;// soft int. param for cluster mass - double m_pmbm2_Parm;// soft int. param for cluster mass - double m_pmbp1_Parm;// soft int. param for cluster pt - double m_pmbp2_Parm;// soft int. param for cluster pt - double m_pmbp3_Parm;// soft int. param for cluster pt - double m_ensof_Parm;//multy. enhancement for underlyng soft event - - // commands of Menu 08 - - int m_pizstable_Parm; //whether pizero is stable (non-decaying) - - // commands of Menu 09 - - int m_eventweight_Parm; //control event weights - double m_maxweight_Parm; //set max weight - double m_effmin_Parm; //min. acceptable eff to generate evts - bool m_noshower_Parm; //turn off parton shower - changed to bool ((IH) - bool m_nohadroniz_Parm; //turn off hadronization -- changed to bool (IH) - double m_tlout_Parm; //time (sec) needed to terminate gracefully - - // commands of Menu 10 - - int m_colors_Parm;// number of colors - int m_flavors_Parm;// number of flavors - double m_weiangle_Parm;// sin**2 of Weimberg angle - double m_cabangle_Parm;// sin**2 of Cabibbo angle - double m_wwidth_Parm;// Width of W boson - double m_zwidth_Parm;//Width of Z boson - double m_hwidth_Parm;//Width of Higgs boson - - // commands of Menu 11 - - double m_down_Parm;// Set down quark mass - double m_up_Parm;// Set up quark mass - double m_strange_Parm;// Set strange quark mass - double m_charm_Parm;// Set charm quark mass - double m_bottom_Parm;// Set bottom quark mass - double m_top_Parm;// Set top quark mass - double m_gluonmass_Parm;// Set gluon mass - double m_W_Parm;// Set W+/- mass - double m_Z0_Parm;// Set Z0 mass - double m_higgs_Parm;// Set Higgs mass - int m_modBos_Parm[9]; // SB: Set decay modes for Weak bosons - - // commands of Menu 12 - - string m_read_Filesusy; //parm for the susy file name - - // commands of Menu 13 - - int m_zprime_Parm;// Whether to use Z-prime particle - double m_ZP_Parm;// Mass of Z-prime particle - double m_zpwidth_Parm;// Width of Z-prime particle - - // commands of Menu 14 - - int m_iprint_Parm;// Herwig print level control - int m_maxpr_Parm;// Dump of Herwig events - int m_prvtx_Parm;// Whether to have vtx print in dump - int m_prndef_Parm;// print ASCII to screen/log file - int m_prntex_Parm;// print LATEX to *.tex files - int m_prnweb_Parm;// print html to *.html - int m_nprfmt_Parm;// controls print sig. figs - short or long - - // - - // graviton stuff - double m_grvlam_Parm; - double m_emgrv_Parm; - double m_gamgrv_Parm; - - // susy parameters - - - // tauola switch - - string m_taudec_Parm; - int m_syspin_Parm;// Herwig syspin control - int m_spcopt_Parm; - - // Top decays switch - int m_itopd; - - // Commands to setup herwig from jobOptions - CommandVector m_herwigCommandVector; - - - std::vector<long int> m_seeds; - - //added for Dpemc - string m_typepr_Parm; - string m_typint_Parm; - int m_nstru_Parm; - int m_ifit_Parm; - double m_xpqnrm_Parm[13]; - double m_gapspr_Parm; - double m_prospr_Parm; - double m_cdffac_Parm; - -protected: - // external proces - int m_ExternalProcess; - AcerMC_acset m_acermc_acset; - - // I/O to HEPEVT - void store_Atlas_HEPEVT(void); - - static Atlas_HEPEVT* atlas_HEPEVT; - -}; - -#endif diff --git a/Generators/Herwig_i/Herwig_i/Herwig.h b/Generators/Herwig_i/Herwig_i/Herwig.h deleted file mode 100644 index 123bfef3250582ae675d28648ae328459200ad7f..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/Herwig_i/Herwig.h +++ /dev/null @@ -1,128 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef GENERATORMODULESHERWIG_H -#define GENERATORMODULESHERWIG_H - -#include "GeneratorModules/GenModule.h" -#include "AcerMC_i/AcerMC_acset.h" -#include "Tauola_i/Atlas_HEPEVT.h" - -/** -@class Herwig -@brief Main interface class to Herwig - - -Allows the user to generate Herwig events and store the result in the Transient Store. - -genInitialize() is used to read parameters - -callGenerator() makes the event - -genFinalize() writes log files etc - -fillEvt(GeneratorEvent* evt) passes the event to HepMC - -The output will be stored in the transient event store so it can be passed to the simulation. - - -@author - - Georgios Stavropoulos January 2003 : Migrate to Herwig 6.5 - - Ian Hinchliffe Sept 2000 Modeled after the CDF code by Marge Shapiro, Elena Bucciol - - Borut Paul Kersevan (February 2003) added access to lesatlas common (not part of - Herwig but needed for external process) - - AcerMC 1.x interface added by Borut Paul Kersevan (February 2003) - - TAUOLA/PHOTOS interface added by Borut Paul Kersevan (October 2003) - - Jon Butterworth Merged with Jimmy.h (Feb 2007) - - Judith Katzy added doxygen docu (Jan 2008) - - Andy Buckley: conversion to AthAlgorithm (December 2009) - -*/ - -class Herwig : public GenModule { -public: - - /// @name Construction / destruction - //@{ - Herwig(const std::string& name, ISvcLocator* pSvcLocator); - virtual ~Herwig(); - //@} - - /// @name Generation loop - //@{ - virtual StatusCode genInitialize(); - virtual StatusCode callGenerator(); - virtual StatusCode genFinalize(); - virtual StatusCode fillEvt(HepMC::GenEvent* evt); - //@} - - void Localpar2Her(); - void Her2Localpar(); - - void updateStatusCode( HepMC::GenEvent *evt ); - - /// Accessor for external processes - AcerMC_acset& acermc_acset(); - - /// Local name for a list of config strings - typedef std::vector<std::string> CommandVector; - - -private: - - /// Turn off parton shower - bool m_noshower_Parm; - - /// Turn off hadronization - bool m_nohadroniz_Parm; - - /// Param for the SUSY file name - std::string m_read_Filesusy; - - /// Top decays switch - int m_itopd; - - /// Version 6510 variable to prevent infinite looping - int m_ndetry; - - /// Commands to set up Herwig from job options - CommandVector m_herwigCommandVector; - - // multiply x-section by a num. factor - // add both in the MetaData print-out - double m_Default_xsscale, m_xsscale; - - // print out manually set x-section from the MetaData - double m_Default_SetCrossSection, m_SetCrossSection; - - /// RNG seeds - std::vector<long int> m_seeds; - - /// Update status code of hadrons - bool m_updateHadronStatCode; - -protected: - - /// @name External process - //@{ - int m_ExternalProcess; - AcerMC_acset m_acermc_acset; - //@} - - /// I/O to HEPEVT - void store_Atlas_HEPEVT(); - - static Atlas_HEPEVT* s_atlas_HEPEVT; - -}; - -#endif diff --git a/Generators/Herwig_i/Herwig_i/HerwigRpv.h b/Generators/Herwig_i/Herwig_i/HerwigRpv.h deleted file mode 100644 index acffa6305221f627ca9c061c9660c91900318d86..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/Herwig_i/HerwigRpv.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef GENERATORMODULESHERWIGRPV_H -#define GENERATORMODULESHERWIGRPV_H -#include "GeneratorModules/GenModule.h" -#include "AcerMC_i/AcerMC_acset.h" -#include "Tauola_i/Atlas_HEPEVT.h" -#include "Herwig_i/Herwig.h" - -using std::string; -typedef std::vector<std::string> CommandVector; - -/** -@class HerwigRpv -@brief main interface class wrapper to Herwig - - -Allows the user to generate Herwig events with RPV mod and store the result in the Transient Store. - -genInitialize() is used to read parameters - -callGenerator() makes the event - -genFinalize() writes log files etc - -fillEvt(GeneratorEvent* evt) passes the event to HepMC - -*/ - -class HerwigRpv - :public Herwig -{ -public: - inline HerwigRpv(const std::string& name, ISvcLocator* pSvcLocator): Herwig(name, pSvcLocator){}; -}; - -#endif diff --git a/Generators/Herwig_i/Herwig_i/Lhefinfo.h b/Generators/Herwig_i/Herwig_i/Lhefinfo.h deleted file mode 100644 index 978e3b3c4f204ee4f58664a550579257efaa760b..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/Herwig_i/Lhefinfo.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - - -#ifndef LHEFINFO_h -#define LHEFINFO_h - -extern "C" { - void* lhefinfo_address_(); -} - -/** -@class Lhefinfo.hh - -@brief Class definition for Lhefinfo common block. - -@author Sebastian Piec -*/ - -class Lhefinfo { -public: - Lhefinfo(); - ~Lhefinfo(); - - inline void init(); // inlined for speed of access (small function) - - int& id1(); - int& id2(); - double& x1(); - double& x2(); - double& scalePdf(); - double& xPdf1(); - double& xPdf2(); - -private: - struct LHEFINFO; - friend struct LHEFINFO; - - struct LHEFINFO - { - int id1, id2; - double x1, x2; - double scalePdf, xPdf1, xPdf2; - }; - - static LHEFINFO* s_lhefinfo; -}; - -#include "Herwig_i/Lhefinfo.icc" - -#endif - diff --git a/Generators/Herwig_i/Herwig_i/Lhefinfo.icc b/Generators/Herwig_i/Herwig_i/Lhefinfo.icc deleted file mode 100644 index 5ebfb4da4009b44541ed93824e0c11ea216f06fc..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/Herwig_i/Lhefinfo.icc +++ /dev/null @@ -1,14 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// Inline implementations for Lhefinfo - -// initialise pointer -void Lhefinfo::init() -{ - if ( !s_lhefinfo ) { - s_lhefinfo = static_cast< LHEFINFO* >( lhefinfo_address_() ); - } -} - diff --git a/Generators/Herwig_i/Herwig_i/config.h b/Generators/Herwig_i/Herwig_i/config.h deleted file mode 100644 index 6c89ad44f4b6af7b56de95200cbfb52e6ffa9cc2..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/Herwig_i/config.h +++ /dev/null @@ -1,6 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -/* Herwig_i/config.h. Generated automatically by configure. */ -/* GeneratorModules/config.h.in. Generated automatically from configure.in by autoheader. */ diff --git a/Generators/Herwig_i/Herwig_i/config.h.in b/Generators/Herwig_i/Herwig_i/config.h.in deleted file mode 100644 index b29742ce5dc6c4433dbc5fb48caaa6bf242c5b4c..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/Herwig_i/config.h.in +++ /dev/null @@ -1 +0,0 @@ -/* GeneratorModules/config.h.in. Generated automatically from configure.in by autoheader. */ diff --git a/Generators/Herwig_i/Herwig_i/dpemc6505.h b/Generators/Herwig_i/Herwig_i/dpemc6505.h deleted file mode 100644 index f3a465998ee25bf0625909fbb295fdf7872b1b37..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/Herwig_i/dpemc6505.h +++ /dev/null @@ -1,30 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef __DPEMC65_HH__ -#define __DPEMC65_HH__ -/* Common Block Declarations */ -#include <complex> - -//modifications for Dpemc -using std::string; - -struct Prtype_t { - char typepr[3]; - char typint[3]; -}; -extern Prtype_t* gPrtype; - -struct Xsect_t { - double gapspr, prospr, cdffac; -}; -extern Xsect_t* gXsect; - -struct Pdfnrm_t { - double xpqnrm[13]; -}; -extern Pdfnrm_t* gPdfnrm; - - -#endif diff --git a/Generators/Herwig_i/Herwig_i/herwig61.h b/Generators/Herwig_i/Herwig_i/herwig61.h deleted file mode 100644 index 25f2b44704ebe2709dbe3e84df566d7c6f437d8b..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/Herwig_i/herwig61.h +++ /dev/null @@ -1,218 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef __HERWIG61_HH__ -#define __HERWIG61_HH__ - -/* Common Block Declarations */ - -struct Hwbeam_t { - int ipart1, ipart2; -} ; - -extern Hwbeam_t* gHwbeam; - -struct Hwbmch_t { - char part1[8], part2[8]; -} ; - -extern Hwbmch_t* gHwbmch; - -struct Hwproc_t { - double ebeam1, ebeam2, pbeam1, pbeam2; - int iproc, maxev; -} ; -extern Hwproc_t* gHwproc; - -struct Hwpram_t { - double afch[32], alphem, b1lim, betaf, btclm, cafac, - cffac, clmax, clpow, clsmr[2], cspeed, ensof, etamix, f0mix, f1mix, - f2mix, gamh, gamw, gamz, gamzp, gev2nb, h1mix, pdiqk, pgsmx, - pgspl[4], phimix, pifac, prsof, psplt[2], ptrms, pxrms, qcdl3, qcdl5, - qcdlam, qdiqk, qfch[16], qg, qspac, qv, scabi, swein, tmtop, - vfch[32], vckm[9], - vgcut, vqcut, vpcut, zbinm, - effmin, omhmix, et2mix, ph3mix, gcutme; - int ioprem, iprint, ispac, lrsud, lwsud, modpdf[2], nbtry, ncolo, - nctry, ndtry, netry, nflav, ngspl, nstru, nstry, nzbin, - iop4jt[2], nprfmt; - int azsoft, azspin; - int cldir[2]; - int hardme, nospac, prndec, prvtx, softme, zprime; - int prndef, prntex, prnweb; -} ; -extern Hwpram_t* gHwpram ; - -struct Hwprch_t { - char autpdf[2][20], bdecay[4]; -} ; - -extern Hwprch_t* gHwprch ; - -struct Hwpart_t { - int nevpar, npar, istpar[500], idpar[500], jmopar[1000], - jdapar[1000]; - double ppar[2500], vpar[2000]; -} ; -extern Hwpart_t* gHwpart ; - -struct Hwparp_t { - double decpar[1000], phipar[1000], rhopar[1000]; - int tmpar[500]; -} ; -extern Hwparp_t* gHwparp ; - -struct Hwbosc_t { - double alpfac, brhig[12], enhanc[12], gammax, rhohep[12000]; - int iophig, modbos[5]; -} ; - -extern Hwbosc_t* gHwbosc ; - -struct Hwparc_t { - int jcopar[2000]; -} ; -extern Hwparc_t* gHwparc ; - -struct Hwbrch_t { - double anomsc[4], hardst, ptint[6], xfact; - int inhad, jnhad, nspac[7], islent; - int breit, frost, usecmf; -} ; - -extern Hwbrch_t* gHwbrch ; - -struct Hwevnt_t { - double avwgt, evwgt, gamwt, tlout, wbigst, wgtmax, wgtsum, wsqsum; - int idhw[4000], ierror, istat, lwevt, maxer, maxpr; - int nowgt; - int nrn[2], numer, numeru, nwgts; - int gensof; -} ; - -extern Hwevnt_t* gHwevnt ; - -struct Hwhard_t { - double asfixd, clq[42], coss, costh, ctmax, disf[26], - emlst, emmax, emmin, empow, emsca, epoln[3], - gcoef[7], gpoln, omega0, phomas, ppoln[3], ptmax, ptmin, ptpow, - q2max, q2min, q2pow, q2wwmn, q2wwmx, qlim, sins, thmax, y4jt, tmnisr, - tqwt, xx[2], xlmin, xxmin, ybmax, ybmin, yjmax, yjmin, ywwmax, - ywwmin, whmin, zjmax, zmxisr; - int iaphig, ibrn[2], ibsh, ico[10], idcmf, idn[10], iflmax, iflmin, - ihpro, ipro, mapq[6], maxfl; - int bgshat, colisr, fstevt, fstwgt, genev, hvfcen, tpol, durham; -} ; - -extern Hwhard_t* gHwhard ; - -struct Hwprop_t { - double rltim[501], rmass[501], rspin[501]; - int ichrg[501], idpdg[501], iflav[501], nres; - int vtocdk[501], vtordk[501]; - int qorqqb[501], qborqq[501]; -} ; - -extern Hwprop_t* gHwprop ; - -struct Hwunam_t { - char rname[4008]; /* 8*501 */ - char txname[37074]; /* 2*37*501 */ -} ; - -extern Hwunam_t* gHwunam ; - -struct Hwupdt_t{ - double brfrac[4000], cmmom[4000], dkltm[500]; - int idk[4000], idkprd[20000], lnext[4000], - lstrt[500], ndkys, nme[4000], nmodes[500], nprods[4000]; - int dkpset, rstab[501]; -} ; - -extern Hwupdt_t* gHwupdt ; - -struct Hwuwts_t{ - double repwt[100], sngwt, decwt, qwt[3], - pwt[12], swtef[500]; -} ; - -extern Hwuwts_t* gHwuwts ; - -struct Hwuclu_t{ - double cldkwt[4000], cthrpw[144], preco, - resn[144], rmin[144]; - int locn[144], ncldk[4000], nreco; - int clreco; -} ; - -extern Hwuclu_t* gHwuclu ; - -struct Hwdist_t { - double exag, gev2mm, hbar, pltcut, vmin2, vtxpip[4], xmix[2], xmrct[2] - , ymix[2], ymrct[2]; - int iopdkl; - int maxdkl, mixing, pipsmr; -} ; - -extern Hwdist_t* gHwdist ; - -struct Hwqdks_t{ - double vtxqdk[80]; - int imqdk[20], locq[20], nqdk; -} ; - -extern Hwqdks_t* gHwqdks ; - -struct Hwusud_t{ - double accur, qev[6144], sud[6144]; - int inter, nqev, nsud, sudord; -} ; - -extern Hwusud_t* gHwusud ; - -// v 6.1 -struct Hwsusy_t { - double tanb, alphah, cosbpa, sinbpa, cosbma, sinbma, cosa, sina, - cosb, sinb, cotb, zmixss[16], zmxnss[16], zsgnss[4], - lfch[16], rfch[16], slfch[64], srfch[64], wmxuss[4], - wmxvss[4], wsgnss[2], qmixss[24], lmixss[24], - thetat, thetab, thetal, atss, abss, alss, muss, factss, - ghwwss[3], ghzzss[3], ghddss[4], ghuuss[4], ghwhss[3], - ghsqss[96], xlmnss, rmmnss, imssm, senhnc[24], ssparity; - int susyin; -} ; - -extern Hwsusy_t* gHwsusy ; - -struct Hwrpar_t { - double lamda1[27], lamda2[27], lamda3[27]; - int hrdcol[10]; - int rparty, colupd; -} ; - -extern Hwrpar_t* gHwrpar ; - -struct Hwminb_t { - double pmbn1, pmbn2, pmbn3, pmbk1, pmbk2, pmbm1, pmbm2, - pmbp1, pmbp2, pmbp3; -} ; - -extern Hwminb_t* gHwminb ; - -struct Hwclus_t { - double ppcl[2500]; - int idcl[500], ncl; -} ; - -extern Hwclus_t* gHwclus ; - - // end v6.1 adds - -struct Hwumsc_t { - int lhwout; -} ; - -extern Hwumsc_t* gHwumsc; - -#endif diff --git a/Generators/Herwig_i/Herwig_i/herwig6301.h b/Generators/Herwig_i/Herwig_i/herwig6301.h deleted file mode 100644 index 1b1600e1789987c031c81691f7db481b17f380ce..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/Herwig_i/herwig6301.h +++ /dev/null @@ -1,256 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef __HERWIG63_HH__ -#define __HERWIG63_HH__ - -/* Common Block Declarations */ - -struct Hwbeam_t { - int ipart1, ipart2; -} ; - -extern Hwbeam_t* gHwbeam; - -struct Hwbmch_t { - char part1[8], part2[8]; -} ; - -extern Hwbmch_t* gHwbmch; - -struct Hwproc_t { - double ebeam1, ebeam2, pbeam1, pbeam2; - int iproc, maxev; -} ; -extern Hwproc_t* gHwproc; - -struct Hwpram_t { - double afch[32], alphem, b1lim, betaf, btclm, cafac, - cffac, clmax, clpow, clsmr[2], cspeed, ensof, etamix, f0mix, f1mix, - f2mix, gamh, gamw, gamz, gamzp, gev2nb, h1mix, pdiqk, pgsmx, - pgspl[4], phimix, pifac, prsof, psplt[2], ptrms, pxrms, qcdl3, qcdl5, - qcdlam, qdiqk, qfch[16], qg, qspac, qv, scabi, swein, tmtop, - vfch[32], vckm[9], - vgcut, vqcut, vpcut, zbinm, - effmin, omhmix, et2mix, ph3mix, gcutme; - int ioprem, iprint, ispac, lrsud, lwsud, modpdf[2], nbtry, ncolo, - nctry, ndtry, netry, nflav, ngspl, nstru, nstry, nzbin, - iop4jt[2], nprfmt; - int azsoft, azspin; - int cldir[2]; - int hardme, nospac, prndec, prvtx, softme, zprime; - int prndef, prntex, prnweb; -} ; -extern Hwpram_t* gHwpram ; - -struct Hwprch_t { - char autpdf[2][20], bdecay[4]; -} ; - -extern Hwprch_t* gHwprch ; - -struct Hwpart_t { - int nevpar, npar, istpar[500], idpar[500], jmopar[1000], - jdapar[1000]; - double ppar[2500], vpar[2000]; -} ; -extern Hwpart_t* gHwpart ; - -struct Hwparp_t { - double decpar[1000], phipar[1000], rhopar[1000]; - int tmpar[500]; -} ; -extern Hwparp_t* gHwparp ; - -struct Hwbosc_t { - double alpfac, brhig[12], enhanc[12], gammax, rhohep[12000]; - int iophig, modbos[5]; -} ; - -extern Hwbosc_t* gHwbosc ; - -struct Hwparc_t { - int jcopar[2000]; -} ; -extern Hwparc_t* gHwparc ; - -struct Hwbrch_t { - double anomsc[4], hardst, ptint[6], xfact; - int inhad, jnhad, nspac[7], islent; - int breit, frost, usecmf; -} ; - -extern Hwbrch_t* gHwbrch ; - -struct Hwevnt_t { - double avwgt, evwgt, gamwt, tlout, wbigst, wgtmax, wgtsum, wsqsum; - int idhw[4000], ierror, istat, lwevt, maxer, maxpr; - int nowgt; - int nrn[2], numer, numeru, nwgts; - int gensof; -} ; - -extern Hwevnt_t* gHwevnt ; - -struct Hwhard_t { - double asfixd, clq[42], coss, costh, ctmax, disf[26], - emlst, emmax, emmin, empow, emsca, epoln[3], - gcoef[7], gpoln, omega0, phomas, ppoln[3], ptmax, ptmin, ptpow, - q2max, q2min, q2pow, q2wwmn, q2wwmx, qlim, sins, thmax, y4jt, tmnisr, - tqwt, xx[2], xlmin, xxmin, ybmax, ybmin, yjmax, yjmin, ywwmax, - ywwmin, whmin, zjmax, zmxisr; - int iaphig, ibrn[2], ibsh, ico[10], idcmf, idn[10], iflmax, iflmin, - ihpro, ipro, mapq[6], maxfl; - int bgshat, colisr, fstevt, fstwgt, genev, hvfcen, tpol, durham; -} ; - -extern Hwhard_t* gHwhard ; - -struct Hwprop_t { - double rltim[501], rmass[501], rspin[501]; - int ichrg[501], idpdg[501], iflav[501], nres; - int vtocdk[501], vtordk[501]; - int qorqqb[501], qborqq[501]; -} ; - -extern Hwprop_t* gHwprop ; - -struct Hwunam_t { - char rname[4008]; /* 8*501 */ - char txname[37074]; /* 2*37*501 */ -} ; - -extern Hwunam_t* gHwunam ; - -struct Hwupdt_t{ - double brfrac[4000], cmmom[4000], dkltm[500]; - int idk[4000], idkprd[20000], lnext[4000], - lstrt[500], ndkys, nme[4000], nmodes[500], nprods[4000]; - int dkpset, rstab[501]; -} ; - -extern Hwupdt_t* gHwupdt ; - -struct Hwuwts_t{ - double repwt[100], sngwt, decwt, qwt[3], - pwt[12], swtef[500]; -} ; - -extern Hwuwts_t* gHwuwts ; - -struct Hwuclu_t{ - double cldkwt[4000], cthrpw[144], preco, - resn[144], rmin[144]; - int locn[144], ncldk[4000], nreco; - int clreco; -} ; - -extern Hwuclu_t* gHwuclu ; - -struct Hwdist_t { - double exag, gev2mm, hbar, pltcut, vmin2, vtxpip[4], xmix[2], xmrct[2] - , ymix[2], ymrct[2]; - int iopdkl; - int maxdkl, mixing, pipsmr; -} ; - -extern Hwdist_t* gHwdist ; - -struct Hwqdks_t{ - double vtxqdk[80]; - int imqdk[20], locq[20], nqdk; -} ; - -extern Hwqdks_t* gHwqdks ; - -struct Hwusud_t{ - double accur, qev[6144], sud[6144]; - int inter, nqev, nsud, sudord; -} ; - -extern Hwusud_t* gHwusud ; - -// v 6.1 -struct Hwsusy_t { - double tanb, alphah, cosbpa, sinbpa, cosbma, sinbma, cosa, sina, - cosb, sinb, cotb, zmixss[16], zmxnss[16], zsgnss[4], - lfch[16], rfch[16], slfch[64], srfch[64], wmxuss[4], - wmxvss[4], wsgnss[2], qmixss[24], lmixss[24], - thetat, thetab, thetal, atss, abss, alss, muss, factss, - ghwwss[3], ghzzss[3], ghddss[4], ghuuss[4], ghwhss[3], - ghsqss[96], xlmnss, rmmnss, dmssm, senhnc[24], ssparity; - int susyin; -} ; - -extern Hwsusy_t* gHwsusy ; - -struct Hwrpar_t { - double lamda1[27], lamda2[27], lamda3[27]; - int hrdcol[10]; - int rparty, colupd; -} ; - -extern Hwrpar_t* gHwrpar ; - -struct Hwminb_t { - double pmbn1, pmbn2, pmbn3, pmbk1, pmbk2, pmbm1, pmbm2, - pmbp1, pmbp2, pmbp3; -} ; - -extern Hwminb_t* gHwminb ; - -struct Hwclus_t { - double ppcl[2500]; - int idcl[500], ncl; -} ; - -extern Hwclus_t* gHwclus ; - - // end v6.1 adds - -struct Hwgrav_t { - double grvlam, emgrv, gamgrv; -} ; - -extern Hwgrav_t* gHwgrav ; - -struct Hw6202_t { - double vipwid[3], dxrcyl, dxzmax, dxrsph; - int wzrfr, fix4jt; - int imssm, ihiggs, parity, lrsusy; -} ; - -extern Hw6202_t* gHw6202 ; - -//end v 6202 adds - -// begin v 6301 adds -struct Hw6300_t { - doublereal mjjmin, chnprb[20]; - integer iopstp, iopsh; - logical optm, chon[20]; -} ; - -extern Hw6300_t* gHw6300 ; - -struct Hwfmrs_t { - doublereal fmrs[44688] /* was [3][8][49][38] */; -} ; - -extern Hwfmrs_t* gHwfmrs ; - -struct Hwcirc_t { - integer circop, circac, circvr, circrv, circch; -} ; - -extern Hwcirc_t* gHwcirc ; -//end v6301 adds - -struct Hwumsc_t { - int lhwout; -} ; - -extern Hwumsc_t* gHwumsc; - -#endif diff --git a/Generators/Herwig_i/Herwig_i/herwig64.h b/Generators/Herwig_i/Herwig_i/herwig64.h deleted file mode 100644 index 50b21322c5db7911b88c0df9af53ee99efa30261..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/Herwig_i/herwig64.h +++ /dev/null @@ -1,332 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef __HERWIG64_HH__ -#define __HERWIG64_HH__ - -/* Common Block Declarations */ -#include <complex> -struct Hwbeam_t { - int ipart1, ipart2; -} ; - -extern Hwbeam_t* gHwbeam; - -struct Hwbmch_t { - char part1[8], part2[8]; -} ; - -extern Hwbmch_t* gHwbmch; - -struct Hwproc_t { - double ebeam1, ebeam2, pbeam1, pbeam2; - int iproc, maxev; -} ; -extern Hwproc_t* gHwproc; - -struct Hwpram_t { - double afch[32], alphem, b1lim, betaf, btclm, cafac, - cffac, clmax, clpow, clsmr[2], cspeed, ensof, etamix, f0mix, f1mix, - f2mix, gamh, gamw, gamz, gamzp, gev2nb, h1mix, pdiqk, pgsmx, - pgspl[4], phimix, pifac, prsof, psplt[2], ptrms, pxrms, qcdl3, qcdl5, - qcdlam, qdiqk, qfch[16], qg, qspac, qv, scabi, swein, tmtop, - vfch[32], vckm[9], - vgcut, vqcut, vpcut, zbinm, - effmin, omhmix, et2mix, ph3mix, gcutme; - int ioprem, iprint, ispac, lrsud, lwsud, modpdf[2], nbtry, ncolo, - nctry, ndtry, netry, nflav, ngspl, nstru, nstry, nzbin, - iop4jt[2], nprfmt; - int azsoft, azspin; - int cldir[2]; - int hardme, nospac, prndec, prvtx, softme, zprime; - int prndef, prntex, prnweb; -} ; -extern Hwpram_t* gHwpram ; - -struct Hwprch_t { - char autpdf[2][20], bdecay[4]; -} ; - -extern Hwprch_t* gHwprch ; - -struct Hwpart_t { - int nevpar, npar, istpar[500], idpar[500], jmopar[1000], - jdapar[1000]; - double ppar[2500], vpar[2000]; -} ; -extern Hwpart_t* gHwpart ; - -struct Hwparp_t { - double decpar[1000], phipar[1000], rhopar[1000]; - int tmpar[500]; -} ; -extern Hwparp_t* gHwparp ; - -struct Hwbosc_t { - double alpfac, brhig[12], enhanc[12], gammax, rhohep[12000]; - int iophig, modbos[5]; -} ; - -extern Hwbosc_t* gHwbosc ; - -struct Hwparc_t { - int jcopar[2000]; -} ; -extern Hwparc_t* gHwparc ; - -struct Hwbrch_t { - double anomsc[4], hardst, ptint[6], xfact; - int inhad, jnhad, nspac[7], islent; - int breit, frost, usecmf; -} ; - -extern Hwbrch_t* gHwbrch ; - -struct Hwevnt_t { - double avwgt, evwgt, gamwt, tlout, wbigst, wgtmax, wgtsum, wsqsum; - int idhw[4000], ierror, istat, lwevt, maxer, maxpr; - int nowgt; - int nrn[2], numer, numeru, nwgts; - int gensof; -} ; - -extern Hwevnt_t* gHwevnt ; - -struct Hwhard_t { - double asfixd, clq[42], coss, costh, ctmax, disf[26], - emlst, emmax, emmin, empow, emsca, epoln[3], - gcoef[7], gpoln, omega0, phomas, ppoln[3], ptmax, ptmin, ptpow, - q2max, q2min, q2pow, q2wwmn, q2wwmx, qlim, sins, thmax, y4jt, tmnisr, - tqwt, xx[2], xlmin, xxmin, ybmax, ybmin, yjmax, yjmin, ywwmax, - ywwmin, whmin, zjmax, zmxisr; - int iaphig, ibrn[2], ibsh, ico[10], idcmf, idn[10], iflmax, iflmin, - ihpro, ipro, mapq[6], maxfl; - int bgshat, colisr, fstevt, fstwgt, genev, hvfcen, tpol, durham; -} ; - -extern Hwhard_t* gHwhard ; - -struct Hwprop_t { - double rltim[501], rmass[501], rspin[501]; - int ichrg[501], idpdg[501], iflav[501], nres; - int vtocdk[501], vtordk[501]; - int qorqqb[501], qborqq[501]; -} ; - -extern Hwprop_t* gHwprop ; - -struct Hwunam_t { - char rname[4008]; /* 8*501 */ - char txname[37074]; /* 2*37*501 */ -} ; - -extern Hwunam_t* gHwunam ; - -struct Hwupdt_t{ - double brfrac[4000], cmmom[4000], dkltm[500]; - int idk[4000], idkprd[20000], lnext[4000], - lstrt[500], ndkys, nme[4000], nmodes[500], nprods[4000]; - int dkpset, rstab[501]; -} ; - -extern Hwupdt_t* gHwupdt ; - -struct Hwuwts_t{ - double repwt[100], sngwt, decwt, qwt[3], - pwt[12], swtef[500]; -} ; - -extern Hwuwts_t* gHwuwts ; - -struct Hwuclu_t{ - double cldkwt[4000], cthrpw[144], preco, - resn[144], rmin[144]; - int locn[144], ncldk[4000], nreco; - int clreco; -} ; - -extern Hwuclu_t* gHwuclu ; - -struct Hwdist_t { - double exag, gev2mm, hbar, pltcut, vmin2, vtxpip[4], xmix[2], xmrct[2] - , ymix[2], ymrct[2]; - int iopdkl; - int maxdkl, mixing, pipsmr; -} ; - -extern Hwdist_t* gHwdist ; - -struct Hwqdks_t{ - double vtxqdk[80]; - int imqdk[20], locq[20], nqdk; -} ; - -extern Hwqdks_t* gHwqdks ; - -struct Hwusud_t{ - double accur, qev[6144], sud[6144]; - int inter, nqev, nsud, sudord; -} ; - -extern Hwusud_t* gHwusud ; - -// v 6.1 -struct Hwsusy_t { - double tanb, alphah, cosbpa, sinbpa, cosbma, sinbma, cosa, sina, - cosb, sinb, cotb, zmixss[16], zmxnss[16], zsgnss[4], - lfch[16], rfch[16], slfch[64], srfch[64], wmxuss[4], - wmxvss[4], wsgnss[2], qmixss[24], lmixss[24], - thetat, thetab, thetal, atss, abss, alss, muss, factss, - ghwwss[3], ghzzss[3], ghddss[4], ghuuss[4], ghwhss[3], - ghsqss[96], xlmnss, rmmnss, dmssm, senhnc[24], ssparity; - int susyin; -} ; - -extern Hwsusy_t* gHwsusy ; - -struct Hwrpar_t { - double lamda1[27], lamda2[27], lamda3[27]; - int hrdcol[10]; - int rparty, colupd; -} ; - -extern Hwrpar_t* gHwrpar ; - -struct Hwminb_t { - double pmbn1, pmbn2, pmbn3, pmbk1, pmbk2, pmbm1, pmbm2, - pmbp1, pmbp2, pmbp3; -} ; - -extern Hwminb_t* gHwminb ; - -struct Hwclus_t { - double ppcl[2500]; - int idcl[500], ncl; -} ; - -extern Hwclus_t* gHwclus ; - - // end v6.1 adds - -struct Hwgrav_t { - double grvlam, emgrv, gamgrv; -} ; - -extern Hwgrav_t* gHwgrav ; - -struct Hw6202_t { - double vipwid[3], dxrcyl, dxzmax, dxrsph; - int wzrfr, fix4jt; - int imssm, ihiggs, parity, lrsusy; -} ; - -extern Hw6202_t* gHw6202 ; - -//end v 6202 adds - -// v 6203 - -struct Hw6203_t { - double abwgt, abwsum, avabw; - int nnegwt, nnegev; - int negwts; -} ; - -extern Hw6203_t* gHw6203; - -// begin v 6301 adds - -struct Hw6300_t { - double mjjmin, chnprb[20]; - int iopstp, iopsh; - int optm, chon[20]; -} ; - -extern Hw6300_t* gHw6300 ; - -struct Hwpmrs_t { - double fmrs[44688] /* was [3][8][49][38] */; -} ; - -extern Hwpmrs_t* gHwpmrs ; - -struct Hwcirc_t { - int circop, circac, circvr, circrv, circch; -} ; - -extern Hwcirc_t* gHwcirc ; - - - -//end v6301 adds - -// v6.400 - - -struct Hwdspb_t { - double abmode[100] /* was [2][50] */, bbmode[1200] /* was [2][12] - [50] */, pbmode[600] /* was [12][50] */, wtbmax[600] /* was [12][50] */; - int idbprt[50], ibdrtp[50], ibmode[50], nbmode; -}; - -extern Hwdspb_t* gHwdspb ; - - -struct Hwdsp2_t { - double a2mode[1000] /* was [2][500] */, p2mode[500], wt2max[500]; - int id2prt[500], i2drtp[500], n2mode; -}; - -extern Hwdsp2_t* gHwdsp2 ; - -struct Hwdsp3_t { - double a3mode[8000] /* was [2][8][500] */, b3mode[8000] /* was [2][8][500] */, p3mode[500], wt3max[500], spn3cf[4500] /* was [3][3][500] */; - int id3prt[500], i3mode[4000] /* was [8][500] */, i3drtp[4000] /* was [8][500] */, n3mode, ndi3by[500], n3ncfl[500], i3drcf[4000] /* was [8][500] */; -}; - -extern Hwdsp3_t* gHwdsp3 ; - -struct Hwdsp4_t { - double a4mode[96] /* was [2][12][4] */, b4mode[96] /* was [2][12][4] */, p4mode[576] /* was [12][12][4] */, wt4max[576] /* was [12][12][4] */; - int id4prt[4], i4mode[8] /* was [2][4] */, n4mode; -}; - -extern Hwdsp4_t* gHwdsp4 ; - -struct Hwdspn_t { - int ndecsy, nsearch, lrdec, lwdec; - int syspin, threeb, fourb; - char taudec[6]; -}; -extern Hwdspn_t* gHwdspn ; - -struct Hwspin_t { - complex<double> mespn[2400] /* was [2][2][2][2][3][50] */, rhospn[200] /* was [2][2][50] */; - double spncfc[450] /* was [3][3][50] */; - int idspn[50], jmospn[50], jdaspn[100] /* was [2][50] */, nspn, isnhep[4000], nsntry; - int decspn[50]; - int ncfl[50], spcopt; -}; -extern Hwspin_t* gHwspin; - -struct Hwstau_t { - int jak1, jak2, itdkrc, ifphot; -}; - -extern Hwstau_t* gHwstau; -//end v6400 adds - - - - - -struct Hwumsc_t { - int lhwout; -} ; - -extern Hwumsc_t* gHwumsc; - - - -#endif diff --git a/Generators/Herwig_i/Herwig_i/herwig6400.h b/Generators/Herwig_i/Herwig_i/herwig6400.h deleted file mode 100644 index ede9e9130f0c83d393a0535d73bb40c8d5c31f46..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/Herwig_i/herwig6400.h +++ /dev/null @@ -1,332 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef __HERWIG64_HH__ -#define __HERWIG64_HH__ - -/* Common Block Declarations */ -#include <complex> -struct Hwbeam_t { - int ipart1, ipart2; -} ; - -extern Hwbeam_t* gHwbeam; - -struct Hwbmch_t { - char part1[8], part2[8]; -} ; - -extern Hwbmch_t* gHwbmch; - -struct Hwproc_t { - double ebeam1, ebeam2, pbeam1, pbeam2; - int iproc, maxev; -} ; -extern Hwproc_t* gHwproc; - -struct Hwpram_t { - double afch[32], alphem, b1lim, betaf, btclm, cafac, - cffac, clmax, clpow, clsmr[2], cspeed, ensof, etamix, f0mix, f1mix, - f2mix, gamh, gamw, gamz, gamzp, gev2nb, h1mix, pdiqk, pgsmx, - pgspl[4], phimix, pifac, prsof, psplt[2], ptrms, pxrms, qcdl3, qcdl5, - qcdlam, qdiqk, qfch[16], qg, qspac, qv, scabi, swein, tmtop, - vfch[32], vckm[9], - vgcut, vqcut, vpcut, zbinm, - effmin, omhmix, et2mix, ph3mix, gcutme; - int ioprem, iprint, ispac, lrsud, lwsud, modpdf[2], nbtry, ncolo, - nctry, ndtry, netry, nflav, ngspl, nstru, nstry, nzbin, - iop4jt[2], nprfmt; - int azsoft, azspin; - int cldir[2]; - int hardme, nospac, prndec, prvtx, softme, zprime; - int prndef, prntex, prnweb; -} ; -extern Hwpram_t* gHwpram ; - -struct Hwprch_t { - char autpdf[2][20], bdecay[4]; -} ; - -extern Hwprch_t* gHwprch ; - -struct Hwpart_t { - int nevpar, npar, istpar[500], idpar[500], jmopar[1000], - jdapar[1000]; - double ppar[2500], vpar[2000]; -} ; -extern Hwpart_t* gHwpart ; - -struct Hwparp_t { - double decpar[1000], phipar[1000], rhopar[1000]; - int tmpar[500]; -} ; -extern Hwparp_t* gHwparp ; - -struct Hwbosc_t { - double alpfac, brhig[12], enhanc[12], gammax, rhohep[12000]; - int iophig, modbos[5]; -} ; - -extern Hwbosc_t* gHwbosc ; - -struct Hwparc_t { - int jcopar[2000]; -} ; -extern Hwparc_t* gHwparc ; - -struct Hwbrch_t { - double anomsc[4], hardst, ptint[6], xfact; - int inhad, jnhad, nspac[7], islent; - int breit, frost, usecmf; -} ; - -extern Hwbrch_t* gHwbrch ; - -struct Hwevnt_t { - double avwgt, evwgt, gamwt, tlout, wbigst, wgtmax, wgtsum, wsqsum; - int idhw[4000], ierror, istat, lwevt, maxer, maxpr; - int nowgt; - int nrn[2], numer, numeru, nwgts; - int gensof; -} ; - -extern Hwevnt_t* gHwevnt ; - -struct Hwhard_t { - double asfixd, clq[42], coss, costh, ctmax, disf[26], - emlst, emmax, emmin, empow, emsca, epoln[3], - gcoef[7], gpoln, omega0, phomas, ppoln[3], ptmax, ptmin, ptpow, - q2max, q2min, q2pow, q2wwmn, q2wwmx, qlim, sins, thmax, y4jt, tmnisr, - tqwt, xx[2], xlmin, xxmin, ybmax, ybmin, yjmax, yjmin, ywwmax, - ywwmin, whmin, zjmax, zmxisr; - int iaphig, ibrn[2], ibsh, ico[10], idcmf, idn[10], iflmax, iflmin, - ihpro, ipro, mapq[6], maxfl; - int bgshat, colisr, fstevt, fstwgt, genev, hvfcen, tpol, durham; -} ; - -extern Hwhard_t* gHwhard ; - -struct Hwprop_t { - double rltim[501], rmass[501], rspin[501]; - int ichrg[501], idpdg[501], iflav[501], nres; - int vtocdk[501], vtordk[501]; - int qorqqb[501], qborqq[501]; -} ; - -extern Hwprop_t* gHwprop ; - -struct Hwunam_t { - char rname[4008]; /* 8*501 */ - char txname[37074]; /* 2*37*501 */ -} ; - -extern Hwunam_t* gHwunam ; - -struct Hwupdt_t{ - double brfrac[4000], cmmom[4000], dkltm[500]; - int idk[4000], idkprd[20000], lnext[4000], - lstrt[500], ndkys, nme[4000], nmodes[500], nprods[4000]; - int dkpset, rstab[501]; -} ; - -extern Hwupdt_t* gHwupdt ; - -struct Hwuwts_t{ - double repwt[100], sngwt, decwt, qwt[3], - pwt[12], swtef[500]; -} ; - -extern Hwuwts_t* gHwuwts ; - -struct Hwuclu_t{ - double cldkwt[4000], cthrpw[144], preco, - resn[144], rmin[144]; - int locn[144], ncldk[4000], nreco; - int clreco; -} ; - -extern Hwuclu_t* gHwuclu ; - -struct Hwdist_t { - double exag, gev2mm, hbar, pltcut, vmin2, vtxpip[4], xmix[2], xmrct[2] - , ymix[2], ymrct[2]; - int iopdkl; - int maxdkl, mixing, pipsmr; -} ; - -extern Hwdist_t* gHwdist ; - -struct Hwqdks_t{ - double vtxqdk[80]; - int imqdk[20], locq[20], nqdk; -} ; - -extern Hwqdks_t* gHwqdks ; - -struct Hwusud_t{ - double accur, qev[6144], sud[6144]; - int inter, nqev, nsud, sudord; -} ; - -extern Hwusud_t* gHwusud ; - -// v 6.1 -struct Hwsusy_t { - double tanb, alphah, cosbpa, sinbpa, cosbma, sinbma, cosa, sina, - cosb, sinb, cotb, zmixss[16], zmxnss[16], zsgnss[4], - lfch[16], rfch[16], slfch[64], srfch[64], wmxuss[4], - wmxvss[4], wsgnss[2], qmixss[24], lmixss[24], - thetat, thetab, thetal, atss, abss, alss, muss, factss, - ghwwss[3], ghzzss[3], ghddss[4], ghuuss[4], ghwhss[3], - ghsqss[96], xlmnss, rmmnss, dmssm, senhnc[24], ssparity; - int susyin; -} ; - -extern Hwsusy_t* gHwsusy ; - -struct Hwrpar_t { - double lamda1[27], lamda2[27], lamda3[27]; - int hrdcol[10]; - int rparty, colupd; -} ; - -extern Hwrpar_t* gHwrpar ; - -struct Hwminb_t { - double pmbn1, pmbn2, pmbn3, pmbk1, pmbk2, pmbm1, pmbm2, - pmbp1, pmbp2, pmbp3; -} ; - -extern Hwminb_t* gHwminb ; - -struct Hwclus_t { - double ppcl[2500]; - int idcl[500], ncl; -} ; - -extern Hwclus_t* gHwclus ; - - // end v6.1 adds - -struct Hwgrav_t { - double grvlam, emgrv, gamgrv; -} ; - -extern Hwgrav_t* gHwgrav ; - -struct Hw6202_t { - double vipwid[3], dxrcyl, dxzmax, dxrsph; - int wzrfr, fix4jt; - int imssm, ihiggs, parity, lrsusy; -} ; - -extern Hw6202_t* gHw6202 ; - -//end v 6202 adds - -// v 6203 - -struct Hw6203_t { - double abwgt, abwsum, avabw; - int nnegwt, nnegev; - bool negwts; -} ; - -extern Hw6203_t* gHw6203; - -// begin v 6301 adds - -struct Hw6300_t { - double mjjmin, chnprb[20]; - int iopstp, iopsh; - bool optm, chon[20]; -} ; - -extern Hw6300_t* gHw6300 ; - -struct Hwpmrs_t { - double fmrs[44688] /* was [3][8][49][38] */; -} ; - -extern Hwpmrs_t* gHwpmrs ; - -struct Hwcirc_t { - int circop, circac, circvr, circrv, circch; -} ; - -extern Hwcirc_t* gHwcirc ; - - - -//end v6301 adds - -// v6.400 - - -struct Hwdspb_t { - double abmode[100] /* was [2][50] */, bbmode[1200] /* was [2][12] - [50] */, pbmode[600] /* was [12][50] */, wtbmax[600] /* was [12][50] */; - int idbprt[50], ibdrtp[50], ibmode[50], nbmode; -}; - -extern Hwdspb_t* gHwdspb ; - - -struct Hwdsp2_t { - double a2mode[1000] /* was [2][500] */, p2mode[500], wt2max[500]; - int id2prt[500], i2drtp[500], n2mode; -}; - -extern Hwdsp2_t* gHwdsp2 ; - -struct Hwdsp3_t { - double a3mode[8000] /* was [2][8][500] */, b3mode[8000] /* was [2][8][500] */, p3mode[500], wt3max[500], spn3cf[4500] /* was [3][3][500] */; - int id3prt[500], i3mode[4000] /* was [8][500] */, i3drtp[4000] /* was [8][500] */, n3mode, ndi3by[500], n3ncfl[500], i3drcf[4000] /* was [8][500] */; -}; - -extern Hwdsp3_t* gHwdsp3 ; - -struct Hwdsp4_t { - double a4mode[96] /* was [2][12][4] */, b4mode[96] /* was [2][12][4] */, p4mode[576] /* was [12][12][4] */, wt4max[576] /* was [12][12][4] */; - int id4prt[4], i4mode[8] /* was [2][4] */, n4mode; -}; - -extern Hwdsp4_t* gHwdsp4 ; - -struct Hwdspn_t { - int ndecsy, nsearch, lrdec, lwdec; - bool syspin, threeb, fourb; - char taudec[6]; -}; -extern Hwdspn_t* gHwdspn ; - -struct Hwspin_t { - complex<double> mespn[2400] /* was [2][2][2][2][3][50] */, rhospn[200] /* was [2][2][50] */; - double spncfc[450] /* was [3][3][50] */; - int idspn[50], jmospn[50], jdaspn[100] /* was [2][50] */, nspn, isnhep[4000], nsntry; - bool decspn[50]; - int ncfl[50], spcopt; -}; -extern Hwspin_t* gHwspin; - -struct Hwstau_t { - int jak1, jak2, itdkrc, ifphot; -}; - -extern Hwstau_t* gHwstau; -//end v6400 adds - - - - - -struct Hwumsc_t { - int lhwout; -} ; - -extern Hwumsc_t* gHwumsc; - - - -#endif diff --git a/Generators/Herwig_i/Herwig_i/herwig6400.inc b/Generators/Herwig_i/Herwig_i/herwig6400.inc deleted file mode 100644 index a128e27b83b96014c7bfe1b5bb99f535c2718105..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/Herwig_i/herwig6400.inc +++ /dev/null @@ -1,329 +0,0 @@ -C ****COMMON BLOCK FILE FOR HERWIG VERSION 6.4**** -C -C ALTERATIONS: Layout completely overhauled for 5.9 -C -C -C New common blocks added for version 6.1: -C HWCLUS,HWSUSY,HWRPAR,HWMINB -C -C New variables added for version 6.1: -C OMHMIX,ET2MIX,PH3MIX,IOP4JT,NPRFMT, -C PRNDEF,PRNTEX,PRNWEB,EFFMIN,GCUTME, -C IOP4JT,NPRFMT see HWPRAM -C Y4JT,DURHAM see HWHARD -C QORQQB,QBORQQ see HWPROP -C NRECO see HWUCLU -C TXNAME see HWUNAM -C PPCL,NCL,IDCL see HWCLUS -C TANB,ALPHAH,COSBPA,SINBPA,COSBMA, -C SINBMA,COSA,SINA,COSB,SINB,COTB, -C ZMIXSS,ZMXNSS,ZSGNSS,LFCH,RFCH, -C SLFCH,SRFCH,WMXUSS,WMXVSS,WSGNSS, -C QMIXSS,LMIXSS,THETAT,THETAB,THETAL, -C ATSS,ABSS,ALSS,MUSS,FACTSS,GHWWSS, -C GHZZSS,GHDDSS,GHUUSS,GHWHSS,GHSQSS, -C XLMNSS,RMMNSS,DMSSM,SENHNC, -C SSPARITY,SUSYIN see HWSUSY -C LAMDA1,LAMDA2,LAMDA3,HRDCOL,RPARTY, -C COLUPD see HWRPAR -C PMBN1,PMBN2,PMBN3,PMBK1,PMBK2, -C PMBM1,PMBM2,PMBP1,PMBP2,PMBP3 see HWMINB -C -C New parameters added for version 6.1: -C NMXCL -C -C Parameter NMXRES raised to 500 -C -C Scalar variables changed to arrays of size 2: -C CLSMR,PSPLT,CLDIR see HWPRAM -C -C NEW for HERWIG6.200 -C -C New common blocks added for version 6.2: -C HWGRAV see HWHGRV -C -C NEW for HERWIG6.202 -C -C New common block added for version 6.202: -C HW6202 -C which contains all other new variables, parameters and -C control flags introduced since version 6.1, so that -C other common blocks become identical to version 6.1 -C -C New parameters added for version 6.2: -C VIPWID,DXRCYL,DXZMAX,DXRSPH,LRSUSY see HWIGIN -C GRVLAM,EMGRV,GAMGRV see HWHGRV -C -C New control flags added for version 6.2: -C WZRFR see HWBJCO -C FIX4JT see HWIGIN -C IMSSM,IHIGGS see HWUINC -C -C New variable added for version 6.2: -C PARITY see HWUINC -C -C Version 6.203: -C -C NMXHEP raised to 4000 for LHC studies -C -C - IMPLICIT NONE - DOUBLE PRECISION ZERO,ONE,TWO,THREE,FOUR,HALF - PARAMETER (ZERO =0.D0, ONE =1.D0, TWO =2.D0, - & THREE=3.D0, FOUR=4.D0, HALF=0.5D0) -C - DOUBLE PRECISION - & ACCUR,AFCH,ALPFAC,ALPHEM,ANOMSC,ASFIXD,AVWGT,B1LIM,BETAF,BRFRAC, - & BRHIG,BTCLM,CAFAC,CFFAC,CLDKWT,CLMAX,CLPOW,CLQ,CLSMR,CMMOM,COSS, - & COSTH,CSPEED,CTHRPW,CTMAX,DECPAR,DECWT,DISF,DKLTM,EBEAM1,EBEAM2, - & EMLST,EMMAX,EMMIN,EMPOW,EMSCA,ENHANC,ENSOF,EPOLN,ETAMIX,EVWGT, - & EXAG,F0MIX,F1MIX,F2MIX,GAMH,GAMMAX,GAMW,GAMWT,GAMZ,GAMZP,GCOEF, - & GEV2NB,GEV2MM,GPOLN,H1MIX,HBAR,HARDST,OMEGA0,PBEAM1,PBEAM2,PDIQK, - & PGSMX,PGSPL,PHEP,PHIMIX,PHIPAR,PHOMAS,PIFAC,PLTCUT,PPAR,PPOLN, - & PRECO,PRSOF,PSPLT,PTINT,PTMAX,PTMIN,PTPOW,PTRMS,PXRMS,PWT,Q2MAX, - & Q2MIN,Q2POW,Q2WWMN,Q2WWMX,QCDL3,QCDL5,QCDLAM,QDIQK,QEV,QFCH,QG, - & QLIM,QSPAC,QV,QWT,REPWT,RESN,RHOHEP,RHOPAR,RLTIM,RMASS,RMIN, - & RSPIN,SCABI,SINS,SNGWT,SWEIN,SWTEF,SUD,THMAX,TLOUT,TMTOP,TMNISR, - & TQWT,VCKM,VFCH,VGCUT,VHEP,VMIN2,VPAR,VPCUT,VQCUT,VTXPIP,VTXQDK, - & WBIGST,WGTMAX,WGTSUM,WHMIN,WSQSUM,XFACT,XLMIN,XMIX,XMRCT,XX, - & XXMIN,YBMAX,YBMIN,YJMAX,YJMIN,YMIX,YMRCT,YWWMAX,YWWMIN,ZBINM, - & ZJMAX,ZMXISR,Y4JT,EFFMIN,PPCL, - & TANB,ALPHAH,COSBPA,SINBPA,COSBMA,SINBMA,COSA,SINA,COSB,SINB,COTB, - & ZMIXSS,ZMXNSS,ZSGNSS,LFCH,RFCH,SLFCH,SRFCH, WMXUSS,WMXVSS,WSGNSS, - & QMIXSS,LMIXSS,THETAT,THETAB,THETAL,ATSS,ABSS,ALSS,MUSS,FACTSS, - & GHWWSS,GHZZSS,GHDDSS,GHUUSS,GHWHSS,GHSQSS, - & XLMNSS,RMMNSS,DMSSM,SENHNC,SSPARITY,LAMDA1,LAMDA2,LAMDA3, - & PMBN1,PMBN2,PMBN3,PMBK1,PMBK2,PMBM1,PMBM2,PMBP1,PMBP2,PMBP3, - & OMHMIX,ET2MIX,PH3MIX,GCUTME -C - INTEGER - & CLDIR,IAPHIG,IBRN,IBSH,ICHRG,ICO,IDCMF,IDHEP,IDHW,IDK,IDKPRD,IDN, - & IDPAR,IDPDG,IERROR,IFLAV,IFLMAX,IFLMIN,IHPRO,IMQDK,INHAD,INTER, - & IOPDKL,IOPHIG,IOPREM,IPART1,IPART2,IPRINT,IPRO,IPROC,ISLENT, - & ISPAC,ISTAT,ISTHEP,ISTPAR,JCOPAR,JDAHEP,JDAPAR,JMOHEP,JMOPAR, - & JNHAD,LNEXT,LOCN,LOCQ,LRSUD,LSTRT,LWEVT,LWSUD,MAPQ,MAXER,MAXEV, - & MAXFL,MAXPR,MODBOS,MODMAX,MODPDF,NBTRY,NCLDK,NCOLO,NCTRY,NDKYS, - & NDTRY,NETRY,NEVHEP,NEVPAR,NFLAV,NGSPL,NHEP,NME,NMODES,NMXCDK, - & NMXDKS,NMXHEP,NMXJET,NMXMOD,NMXPAR,NMXQDK,NMXRES,NMXSUD,NPAR, - & NPRODS,NQDK,NQEV,NRES,NRN,NSPAC,NSTRU,NSTRY,NSUD,NUMER,NUMERU, - & NWGTS,NZBIN,SUDORD,IOP4JT,HRDCOL,NMXCL,NCL,IDCL,NPRFMT,NRECO -C - LOGICAL - & AZSOFT,AZSPIN,BGSHAT,BREIT,CLRECO,COLISR,DKPSET,FROST,FSTEVT, - & FSTWGT,GENEV,GENSOF,HARDME,HVFCEN,MAXDKL,MIXING,NOSPAC,NOWGT, - & PRNDEC,PIPSMR,PRVTX,RSTAB,SOFTME,TMPAR,TPOL,USECMF,VTOCDK,VTORDK, - & ZPRIME,RPARTY,COLUPD,PRNDEF,PRNTEX,PRNWEB,DURHAM,SUSYIN, - & QORQQB,QBORQQ -C - CHARACTER*4 - & BDECAY - CHARACTER*8 - & PART1,PART2,RNAME - CHARACTER*20 - & AUTPDF - CHARACTER*37 - & TXNAME -C -C New standard event common - PARAMETER (NMXHEP=4000) - COMMON/HEPEVT/NEVHEP,NHEP,ISTHEP(NMXHEP),IDHEP(NMXHEP), - & JMOHEP(2,NMXHEP),JDAHEP(2,NMXHEP),PHEP(5,NMXHEP),VHEP(4,NMXHEP) -C -C Beams, process and number of events - COMMON/HWBEAM/IPART1,IPART2 - COMMON/HWBMCH/PART1,PART2 - COMMON/HWPROC/EBEAM1,EBEAM2,PBEAM1,PBEAM2,IPROC,MAXEV -C -C Basic parameters (and quantities derived from them) - COMMON/HWPRAM/AFCH(16,2),ALPHEM,B1LIM,BETAF,BTCLM,CAFAC,CFFAC, - & CLMAX,CLPOW,CLSMR(2),CSPEED,ENSOF,ETAMIX,F0MIX,F1MIX,F2MIX,GAMH, - & GAMW,GAMZ,GAMZP,GEV2NB,H1MIX,PDIQK,PGSMX,PGSPL(4),PHIMIX,PIFAC, - & PRSOF,PSPLT(2),PTRMS,PXRMS,QCDL3,QCDL5,QCDLAM,QDIQK,QFCH(16),QG, - & QSPAC,QV,SCABI,SWEIN,TMTOP,VFCH(16,2),VCKM(3,3),VGCUT,VQCUT, - & VPCUT,ZBINM,EFFMIN,OMHMIX,ET2MIX,PH3MIX,GCUTME, - & IOPREM,IPRINT,ISPAC,LRSUD,LWSUD,MODPDF(2),NBTRY,NCOLO,NCTRY, - & NDTRY,NETRY,NFLAV,NGSPL,NSTRU,NSTRY,NZBIN,IOP4JT(2),NPRFMT, - & AZSOFT,AZSPIN,CLDIR(2),HARDME,NOSPAC,PRNDEC,PRVTX,SOFTME,ZPRIME, - & PRNDEF,PRNTEX,PRNWEB -C - COMMON/HWPRCH/AUTPDF(2),BDECAY -C -C Parton shower common (same format as /HEPEVT/) - PARAMETER (NMXPAR=500) - COMMON/HWPART/NEVPAR,NPAR,ISTPAR(NMXPAR),IDPAR(NMXPAR), - & JMOPAR(2,NMXPAR),JDAPAR(2,NMXPAR),PPAR(5,NMXPAR),VPAR(4,NMXPAR) -C -C Parton polarization common - COMMON/HWPARP/DECPAR(2,NMXPAR),PHIPAR(2,NMXPAR),RHOPAR(2,NMXPAR), - & TMPAR(NMXPAR) -C -C Electroweak boson common - PARAMETER (MODMAX=5) - COMMON/HWBOSC/ALPFAC,BRHIG(12),ENHANC(12),GAMMAX,RHOHEP(3,NMXHEP), - & IOPHIG,MODBOS(MODMAX) -C -C Parton colour common - COMMON/HWPARC/JCOPAR(4,NMXPAR) -C -C other HERWIG branching, event and hard subprocess common blocks - COMMON/HWBRCH/ANOMSC(2,2),HARDST,PTINT(3,2),XFACT,INHAD,JNHAD, - & NSPAC(7),ISLENT,BREIT,FROST,USECMF -C - COMMON/HWEVNT/AVWGT,EVWGT,GAMWT,TLOUT,WBIGST,WGTMAX,WGTSUM,WSQSUM, - & IDHW(NMXHEP),IERROR,ISTAT,LWEVT,MAXER,MAXPR,NOWGT,NRN(2),NUMER, - & NUMERU,NWGTS,GENSOF -C - COMMON/HWHARD/ASFIXD,CLQ(7,6),COSS,COSTH,CTMAX,DISF(13,2),EMLST, - & EMMAX,EMMIN,EMPOW,EMSCA,EPOLN(3),GCOEF(7),GPOLN,OMEGA0,PHOMAS, - & PPOLN(3),PTMAX,PTMIN,PTPOW,Q2MAX,Q2MIN,Q2POW,Q2WWMN,Q2WWMX,QLIM, - & SINS,THMAX,Y4JT,TMNISR,TQWT,XX(2),XLMIN,XXMIN,YBMAX,YBMIN,YJMAX, - & YJMIN,YWWMAX,YWWMIN,WHMIN,ZJMAX,ZMXISR,IAPHIG,IBRN(2),IBSH, - & ICO(10),IDCMF,IDN(10),IFLMAX,IFLMIN,IHPRO,IPRO,MAPQ(6),MAXFL, - & BGSHAT,COLISR,FSTEVT,FSTWGT,GENEV,HVFCEN,TPOL,DURHAM -C -C Arrays for particle properties (NMXRES = max no of particles defined) - PARAMETER(NMXRES=500) - COMMON/HWPROP/RLTIM(0:NMXRES),RMASS(0:NMXRES),RSPIN(0:NMXRES), - & ICHRG(0:NMXRES),IDPDG(0:NMXRES),IFLAV(0:NMXRES),NRES, - & VTOCDK(0:NMXRES),VTORDK(0:NMXRES), - & QORQQB(0:NMXRES),QBORQQ(0:NMXRES) -C - COMMON/HWUNAM/RNAME(0:NMXRES),TXNAME(2,0:NMXRES) -C -C Arrays for particle decays (NMXDKS = max total no of decays, -C NMXMOD = max no of modes for a particle) - PARAMETER(NMXDKS=4000,NMXMOD=200) - COMMON/HWUPDT/BRFRAC(NMXDKS),CMMOM(NMXDKS),DKLTM(NMXRES), - & IDK(NMXDKS),IDKPRD(5,NMXDKS),LNEXT(NMXDKS),LSTRT(NMXRES),NDKYS, - & NME(NMXDKS),NMODES(NMXRES),NPRODS(NMXDKS),DKPSET,RSTAB(0:NMXRES) -C -C Weights used in cluster decays - COMMON/HWUWTS/REPWT(0:3,0:4,0:4),SNGWT,DECWT,QWT(3),PWT(12), - & SWTEF(NMXRES) -C -C Parameters for cluster decays (NMXCDK = max total no of cluster -C decay channels) - PARAMETER(NMXCDK=4000) - COMMON/HWUCLU/CLDKWT(NMXCDK),CTHRPW(12,12),PRECO,RESN(12,12), - & RMIN(12,12),LOCN(12,12),NCLDK(NMXCDK),NRECO,CLRECO -C -C Variables controling mixing and vertex information - COMMON/HWDIST/EXAG,GEV2MM,HBAR,PLTCUT,VMIN2,VTXPIP(4),XMIX(2), - & XMRCT(2),YMIX(2),YMRCT(2),IOPDKL,MAXDKL,MIXING,PIPSMR -C -C Arrays for temporarily storing heavy-b,c-hadrons decaying partonicaly -C (NMXQDK = max no such decays in an event) - PARAMETER (NMXQDK=20) - COMMON/HWQDKS/VTXQDK(4,NMXQDK),IMQDK(NMXQDK),LOCQ(NMXQDK),NQDK -C -C Parameters for Sudakov form factors -C (NMXSUD= max no of entries in lookup table) - PARAMETER (NMXSUD=1024) - COMMON/HWUSUD/ACCUR,QEV(NMXSUD,6),SUD(NMXSUD,6),INTER,NQEV,NSUD, - & SUDORD -C - PARAMETER (NMXJET=200) -C -C SUSY parameters - COMMON/HWSUSY/ - & TANB,ALPHAH,COSBPA,SINBPA,COSBMA,SINBMA,COSA,SINA,COSB,SINB,COTB, - & ZMIXSS(4,4),ZMXNSS(4,4),ZSGNSS(4), LFCH(16),RFCH(16), - & SLFCH(16,4),SRFCH(16,4), WMXUSS(2,2),WMXVSS(2,2), WSGNSS(2), - & QMIXSS(6,2,2),LMIXSS(6,2,2), - & THETAT,THETAB,THETAL,ATSS,ABSS,ALSS,MUSS,FACTSS, - & GHWWSS(3),GHZZSS(3),GHDDSS(4),GHUUSS(4),GHWHSS(3), - & GHSQSS(4,6,2,2),XLMNSS,RMMNSS,DMSSM,SENHNC(24),SSPARITY,SUSYIN -C -C R-Parity violating parameters and colours - COMMON /HWRPAR/ LAMDA1(3,3,3),LAMDA2(3,3,3), - & LAMDA3(3,3,3),HRDCOL(2,5),RPARTY,COLUPD -C -C Parameters for minimum bias/soft underlying event - COMMON/HWMINB/ - & PMBN1,PMBN2,PMBN3,PMBK1,PMBK2,PMBM1,PMBM2,PMBP1,PMBP2,PMBP3 -C -C Cluster common used by soft event routines - PARAMETER (NMXCL=500) - COMMON/HWCLUS/PPCL(5,NMXCL),IDCL(NMXCL),NCL -C -C Parameters for resonant graviton production - DOUBLE PRECISION GRVLAM,EMGRV,GAMGRV - COMMON/HWGRAV/GRVLAM,EMGRV,GAMGRV -C -C Other new parameters for version 6.2 - DOUBLE PRECISION VIPWID,DXRCYL,DXZMAX,DXRSPH - LOGICAL WZRFR,FIX4JT - INTEGER IMSSM,IHIGGS,PARITY,LRSUSY - COMMON/HW6202/VIPWID(3),DXRCYL,DXZMAX,DXRSPH,WZRFR,FIX4JT, - & IMSSM,IHIGGS,PARITY,LRSUSY -C -C New parameters for version 6.203 - DOUBLE PRECISION ABWGT,ABWSUM,AVABW - INTEGER NNEGWT,NNEGEV - LOGICAL NEGWTS - COMMON/HW6203/ABWGT,ABWSUM,AVABW,NNEGWT,NNEGEV,NEGWTS -C -C New parameters for version 6.3 - INTEGER IMAXCH,IMAXOP - PARAMETER (IMAXCH=20,IMAXOP=40) - DOUBLE PRECISION MJJMIN,CHNPRB(IMAXCH) - INTEGER IOPSTP,IOPSH - LOGICAL OPTM,CHON(IMAXCH) - COMMON/HW6300/MJJMIN,CHNPRB,IOPSTP,IOPSH,OPTM,CHON -C New PDF's for version 6.3 - INTEGER NXMRS,NQMRS,NPMRS - PARAMETER(NXMRS=49,NQMRS=37,NPMRS=8) - DOUBLE PRECISION FMRS(3,NPMRS,NXMRS,NQMRS+1) - COMMON /HWPMRS/FMRS -C Circe interface for version 6.3 - INTEGER CIRCOP,CIRCAC,CIRCVR,CIRCRV,CIRCCH - COMMON /HWCIRC/CIRCOP,CIRCAC,CIRCVR,CIRCRV,CIRCCH -C New parameters and commons for spin correlations -C--constants for the arrays - INTEGER NMXSPN,NCFMAX - PARAMETER(NMXSPN=50,NCFMAX=3) - INTEGER NMODE2,NMODE3,NDIAGR,NMODEB,NMODE4 - PARAMETER(NMODE2=500,NMODE3=500,NDIAGR=8,NMODEB=50,NMODE4=4) -C--common block for X --> X gauge boson - DOUBLE PRECISION ABMODE(2,NMODEB),BBMODE(2,12,NMODEB), - & PBMODE(12,NMODEB),WTBMAX(12,NMODEB) - INTEGER IDBPRT(NMODEB),IBMODE(NMODEB),IBDRTP(NMODEB),NBMODE - COMMON /HWDSPB/ABMODE,BBMODE,PBMODE,WTBMAX,IDBPRT,IBDRTP,IBMODE, - & NBMODE -C--common block for two body decays - DOUBLE PRECISION A2MODE(2,NMODE2),P2MODE(NMODE2),WT2MAX(NMODE2) - INTEGER ID2PRT(NMODE2),I2DRTP(NMODE2),N2MODE - COMMON /HWDSP2/A2MODE,P2MODE,WT2MAX,ID2PRT,I2DRTP,N2MODE -C--common block for three body decays - DOUBLE PRECISION A3MODE(2,NDIAGR,NMODE3),B3MODE(2,NDIAGR,NMODE3), - & P3MODE(NMODE3),WT3MAX(NMODE3),SPN3CF(NCFMAX,NCFMAX,NMODE3) - INTEGER ID3PRT(NMODE3),I3MODE(NDIAGR,NMODE3), - & I3DRTP(NDIAGR,NMODE3),N3MODE,NDI3BY(NMODE3),N3NCFL(NMODE3), - & I3DRCF(NDIAGR,NMODE3) - COMMON /HWDSP3/A3MODE,B3MODE,P3MODE,WT3MAX,SPN3CF,ID3PRT,I3MODE, - & I3DRTP,N3MODE,NDI3BY,N3NCFL,I3DRCF -C--common block for four body decays - DOUBLE PRECISION A4MODE(2,12,NMODE4),B4MODE(2,12,NMODE4), - & P4MODE(12,12,NMODE4),WT4MAX(12,12,NMODE4) - INTEGER ID4PRT(NMODE4),I4MODE(2,NMODE4),N4MODE - COMMON /HWDSP4/A4MODE,B4MODE,P4MODE,WT4MAX,ID4PRT,I4MODE,N4MODE -C--common block for spin correlations in event - INTEGER NDECSY,NSEARCH,LRDEC,LWDEC - LOGICAL SYSPIN,THREEB,FOURB - CHARACTER *6 TAUDEC - COMMON /HWDSPN/NDECSY,NSEARCH,LRDEC,LWDEC,SYSPIN,THREEB, - & FOURB,TAUDEC - - INTEGER IDSPN(NMXSPN),JMOSPN(NMXSPN),JDASPN(2,NMXSPN),NSPN, - & ISNHEP(NMXHEP),NSNTRY,NCFL(NMXSPN),SPCOPT - DOUBLE COMPLEX MESPN(2,2,2,2,NCFMAX,NMXSPN),RHOSPN(2,2,NMXSPN) - DOUBLE PRECISION SPNCFC(NCFMAX,NCFMAX,NMXSPN) - LOGICAL DECSPN(NMXSPN) - COMMON /HWSPIN/MESPN,RHOSPN,SPNCFC,IDSPN,JMOSPN,JDASPN, - & NSPN,ISNHEP,NSNTRY,DECSPN,NCFL,SPCOPT - INTEGER JAK1,JAK2,ITDKRC,IFPHOT - COMMON /HWSTAU/ JAK1,JAK2,ITDKRC,IFPHOT - -C---OUTPUT UNIT NUMBER - COMMON/HWUMSC/LHWOUT - INTEGER LHWOUT diff --git a/Generators/Herwig_i/Herwig_i/herwig6500.h b/Generators/Herwig_i/Herwig_i/herwig6500.h deleted file mode 100644 index 571904e1ee80651453c6622a5785728e166f9e76..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/Herwig_i/herwig6500.h +++ /dev/null @@ -1,347 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef __HERWIG65_HH__ -#define __HERWIG65_HH__ - -/* Common Block Declarations */ -#include <complex> -struct Hwbeam_t { - int ipart1, ipart2; -} ; - -extern Hwbeam_t* gHwbeam; - -struct Hwbmch_t { - char part1[8], part2[8]; -} ; - -extern Hwbmch_t* gHwbmch; - -struct Hwproc_t { - double ebeam1, ebeam2, pbeam1, pbeam2; - int iproc, maxev; -} ; -extern Hwproc_t* gHwproc; - -struct Hwpram_t { - double afch[32], alphem, b1lim, betaf, btclm, cafac, - cffac, clmax, clpow, clsmr[2], cspeed, ensof, etamix, f0mix, f1mix, - f2mix, gamh, gamw, gamz, gamzp, gev2nb, h1mix, pdiqk, pgsmx, - pgspl[4], phimix, pifac, prsof, psplt[2], ptrms, pxrms, qcdl3, qcdl5, - qcdlam, qdiqk, qfch[16], qg, qspac, qv, scabi, swein, tmtop, - vfch[32], vckm[9], - vgcut, vqcut, vpcut, zbinm, - effmin, omhmix, et2mix, ph3mix, gcutme; - int ioprem, iprint, ispac, lrsud, lwsud, modpdf[2], nbtry, ncolo, - nctry, ndtry, netry, nflav, ngspl, nstru, nstry, nzbin, - iop4jt[2], nprfmt; - int azsoft, azspin; - int cldir[2]; - int hardme, nospac, prndec, prvtx, softme, zprime; - int prndef, prntex, prnweb; -} ; -extern Hwpram_t* gHwpram ; - -struct Hwprch_t { - char autpdf[2][20], bdecay[4]; -} ; - -extern Hwprch_t* gHwprch ; - -struct Hwpart_t { - int nevpar, npar, istpar[500], idpar[500], jmopar[1000], - jdapar[1000]; - double ppar[2500], vpar[2000]; -} ; -extern Hwpart_t* gHwpart ; - -struct Hwparp_t { - double decpar[1000], phipar[1000], rhopar[1000]; - int tmpar[500]; -} ; -extern Hwparp_t* gHwparp ; - -struct Hwbosc_t { - double alpfac, brhig[12], enhanc[12], gammax, rhohep[12000]; -// int iophig, modbos[5]; - int iophig, modbos[8]; -} ; - -extern Hwbosc_t* gHwbosc ; - -struct Hwparc_t { - int jcopar[2000]; -} ; -extern Hwparc_t* gHwparc ; - -struct Hwbrch_t { - double anomsc[4], hardst, ptint[6], xfact; - int inhad, jnhad, nspac[7], islent; - int breit, frost, usecmf; -} ; - -extern Hwbrch_t* gHwbrch ; - -struct Hwevnt_t { - double avwgt, evwgt, gamwt, tlout, wbigst, wgtmax, wgtsum, wsqsum; - int idhw[4000], ierror, istat, lwevt, maxer, maxpr; - int nowgt; - int nrn[2], numer, numeru, nwgts; - int gensof; -} ; - -extern Hwevnt_t* gHwevnt ; - -struct Hwhard_t { - double asfixd, clq[42], coss, costh, ctmax, disf[26], - emlst, emmax, emmin, empow, emsca, epoln[3], - gcoef[7], gpoln, omega0, phomas, ppoln[3], ptmax, ptmin, ptpow, - q2max, q2min, q2pow, q2wwmn, q2wwmx, qlim, sins, thmax, y4jt, tmnisr, - tqwt, xx[2], xlmin, xxmin, ybmax, ybmin, yjmax, yjmin, ywwmax, - ywwmin, whmin, zjmax, zmxisr; - int iaphig, ibrn[2], ibsh, ico[10], idcmf, idn[10], iflmax, iflmin, - ihpro, ipro, mapq[6], maxfl; - int bgshat, colisr, fstevt, fstwgt, genev, hvfcen, tpol, durham; -} ; - -extern Hwhard_t* gHwhard ; - -struct Hwprop_t { - double rltim[501], rmass[501], rspin[501]; - int ichrg[501], idpdg[501], iflav[501], nres; - int vtocdk[501], vtordk[501]; - int qorqqb[501], qborqq[501]; -} ; - -extern Hwprop_t* gHwprop ; - -struct Hwunam_t { - char rname[4008]; /* 8*501 */ - char txname[37074]; /* 2*37*501 */ -} ; - -extern Hwunam_t* gHwunam ; - -struct Hwupdt_t{ - double brfrac[4000], cmmom[4000], dkltm[500]; - int idk[4000], idkprd[20000], lnext[4000], - lstrt[500], ndkys, nme[4000], nmodes[500], nprods[4000]; - int dkpset, rstab[501]; -} ; - -extern Hwupdt_t* gHwupdt ; - -struct Hwuwts_t{ - double repwt[100], sngwt, decwt, qwt[3], - pwt[12], swtef[500]; -} ; - -extern Hwuwts_t* gHwuwts ; - -struct Hwuclu_t{ - double cldkwt[4000], cthrpw[144], preco, - resn[144], rmin[144]; - int locn[144], ncldk[4000], nreco; - int clreco; -} ; - -extern Hwuclu_t* gHwuclu ; - -struct Hwdist_t { - double exag, gev2mm, hbar, pltcut, vmin2, vtxpip[5], xmix[2], xmrct[2] - , ymix[2], ymrct[2]; - int iopdkl; - int maxdkl, mixing, pipsmr; -} ; - -extern Hwdist_t* gHwdist ; - -struct Hwqdks_t{ - double vtxqdk[80]; - int imqdk[20], locq[20], nqdk; -} ; - -extern Hwqdks_t* gHwqdks ; - -struct Hwusud_t{ - double accur, qev[6144], sud[6144]; - int inter, nqev, nsud, sudord; -} ; - -extern Hwusud_t* gHwusud ; - -// v 6.1 -struct Hwsusy_t { - double tanb, alphah, cosbpa, sinbpa, cosbma, sinbma, cosa, sina, - cosb, sinb, cotb, zmixss[16], zmxnss[16], zsgnss[4], - lfch[16], rfch[16], slfch[64], srfch[64], wmxuss[4], - wmxvss[4], wsgnss[2], qmixss[24], lmixss[24], - thetat, thetab, thetal, atss, abss, alss, muss, factss, - ghwwss[3], ghzzss[3], ghddss[4], ghuuss[4], ghwhss[3], - ghsqss[96], xlmnss, rmmnss, dmssm, senhnc[24], ssparity; - int susyin; -} ; - -extern Hwsusy_t* gHwsusy ; - -struct Hwrpar_t { - double lamda1[27], lamda2[27], lamda3[27]; - int hrdcol[10]; - int rparty, colupd; -} ; - -extern Hwrpar_t* gHwrpar ; - -struct Hwminb_t { - double pmbn1, pmbn2, pmbn3, pmbk1, pmbk2, pmbm1, pmbm2, - pmbp1, pmbp2, pmbp3; -} ; - -extern Hwminb_t* gHwminb ; - -struct Hwclus_t { - double ppcl[2500]; - int idcl[500], ncl; -} ; - -extern Hwclus_t* gHwclus ; - - // end v6.1 adds - -struct Hwgrav_t { - double grvlam, emgrv, gamgrv; -} ; - -extern Hwgrav_t* gHwgrav ; - -struct Hw6202_t { - double vipwid[3], dxrcyl, dxzmax, dxrsph; - int wzrfr, fix4jt; - int imssm, ihiggs, parity, lrsusy; -} ; - -extern Hw6202_t* gHw6202 ; - -//end v 6202 adds - -// v 6203 - -struct Hw6203_t { - double abwgt, abwsum, avabw; - int nnegwt, nnegev; - int negwts; -} ; - -extern Hw6203_t* gHw6203; - -// begin v 6301 adds - -struct Hw6300_t { - double mjjmin, chnprb[20]; - int iopstp, iopsh; - int optm, chon[20]; -} ; - -extern Hw6300_t* gHw6300 ; - -struct Hwpmrs_t { - double fmrs[44688] /* was [3][8][49][38] */; -} ; - -extern Hwpmrs_t* gHwpmrs ; - -struct Hwcirc_t { - int circop, circac, circvr, circrv, circch; -} ; - -extern Hwcirc_t* gHwcirc ; - - - -//end v6301 adds - -// v6.400 - - -struct Hwdspb_t { - double abmode[100] /* was [2][50] */, bbmode[1200] /* was [2][12] - [50] */, pbmode[600] /* was [12][50] */, wtbmax[600] /* was [12][50] */; - int idbprt[50], ibdrtp[50], ibmode[50], nbmode; -}; - -extern Hwdspb_t* gHwdspb ; - - -struct Hwdsp2_t { - double a2mode[1000] /* was [2][500] */, p2mode[500], wt2max[500]; - int id2prt[500], i2drtp[500], n2mode; -}; - -extern Hwdsp2_t* gHwdsp2 ; - -struct Hwdsp3_t { - double a3mode[8000] /* was [2][8][500] */, b3mode[8000] /* was [2][8][500] */, p3mode[500], wt3max[500], spn3cf[4500] /* was [3][3][500] */; - int id3prt[500], i3mode[4000] /* was [8][500] */, i3drtp[4000] /* was [8][500] */, n3mode, ndi3by[500], n3ncfl[500], i3drcf[4000] /* was [8][500] */; -}; - -extern Hwdsp3_t* gHwdsp3 ; - -struct Hwdsp4_t { - double a4mode[96] /* was [2][12][4] */, b4mode[96] /* was [2][12][4] */, p4mode[576] /* was [12][12][4] */, wt4max[576] /* was [12][12][4] */; - int id4prt[4], i4mode[8] /* was [2][4] */, n4mode; -}; - -extern Hwdsp4_t* gHwdsp4 ; - -struct Hwdspn_t { - int ndecsy, nsearch, lrdec, lwdec; - int syspin, threeb, fourb; - char taudec[6]; -}; -extern Hwdspn_t* gHwdspn ; - -struct Hwspin_t { - std::complex<double> mespn[2400] /* was [2][2][2][2][3][50] */, rhospn[200] /* was [2][2][50] */; - double spncfc[450] /* was [3][3][50] */; - int idspn[50], jmospn[50], jdaspn[100] /* was [2][50] */, nspn, isnhep[4000], nsntry; - int decspn[50]; - int ncfl[50], spcopt; -}; -extern Hwspin_t* gHwspin; - -struct Hwstau_t { - int jak1, jak2, itdkrc, ifphot; -}; - -extern Hwstau_t* gHwstau; -//end v6400 adds - - -// v6500 - -struct Hwgupr_t { - double lhwgt[100], lhwgts[100], lhmxsm, lhxsct[100], lhxerr[100], lhxmax[100]; - int lhiwgt[100], ityplh, lhnevt[100]; - int lhsoft, lhglsf; -}; -extern Hwgupr_t* gHwgupr; - -struct Hw6500_t { - int prespl; -}; -extern Hw6500_t* gHw6500; - -//end v6500 adds - - -struct Hwumsc_t { - int lhwout; -} ; - -extern Hwumsc_t* gHwumsc; - - - -#endif diff --git a/Generators/Herwig_i/Herwig_i/herwig6504.h b/Generators/Herwig_i/Herwig_i/herwig6504.h deleted file mode 100644 index 15b8692db2eb57223b0da18d713c18097c4febcd..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/Herwig_i/herwig6504.h +++ /dev/null @@ -1,364 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef __HERWIG65_HH__ -#define __HERWIG65_HH__ - -/* Common Block Declarations */ -#include <complex> -struct Hwbeam_t { - int ipart1, ipart2; -} ; - -extern Hwbeam_t* gHwbeam; - -struct Hwbmch_t { - char part1[8], part2[8]; -} ; - -extern Hwbmch_t* gHwbmch; - -struct Hwproc_t { - double ebeam1, ebeam2, pbeam1, pbeam2; - int iproc, maxev; -} ; -extern Hwproc_t* gHwproc; - -struct Hwpram_t { - double afch[32], alphem, b1lim, betaf, btclm, cafac, - cffac, clmax, clpow, clsmr[2], cspeed, ensof, etamix, f0mix, f1mix, - f2mix, gamh, gamw, gamz, gamzp, gev2nb, h1mix, pdiqk, pgsmx, - pgspl[4], phimix, pifac, prsof, psplt[2], ptrms, pxrms, qcdl3, qcdl5, - qcdlam, qdiqk, qfch[16], qg, qspac, qv, scabi, swein, tmtop, - vfch[32], vckm[9], - vgcut, vqcut, vpcut, zbinm, - effmin, omhmix, et2mix, ph3mix, gcutme; - int ioprem, iprint, ispac, lrsud, lwsud, modpdf[2], nbtry, ncolo, - nctry, ndtry, netry, nflav, ngspl, nstru, nstry, nzbin, - iop4jt[2], nprfmt; - int azsoft, azspin; - int cldir[2]; - int hardme, nospac, prndec, prvtx, softme, zprime; - int prndef, prntex, prnweb; -} ; -extern Hwpram_t* gHwpram ; - -struct Hwprch_t { - char autpdf[2][20], bdecay[4]; -} ; - -extern Hwprch_t* gHwprch ; - -struct Hwpart_t { - int nevpar, npar, istpar[500], idpar[500], jmopar[1000], - jdapar[1000]; - double ppar[2500], vpar[2000]; -} ; -extern Hwpart_t* gHwpart ; - -struct Hwparp_t { - double decpar[1000], phipar[1000], rhopar[1000]; - int tmpar[500]; -} ; -extern Hwparp_t* gHwparp ; - -struct Hwbosc_t { - double alpfac, brhig[12], enhanc[12], gammax, rhohep[12000]; -// int iophig, modbos[5]; - int iophig, modbos[9]; -} ; - -extern Hwbosc_t* gHwbosc ; - -struct Hwparc_t { - int jcopar[2000]; -} ; -extern Hwparc_t* gHwparc ; - -struct Hwbrch_t { - double anomsc[4], hardst, ptint[6], xfact; - int inhad, jnhad, nspac[7], islent; - int breit, frost, usecmf; -} ; - -extern Hwbrch_t* gHwbrch ; - -struct Hwevnt_t { - double avwgt, evwgt, gamwt, tlout, wbigst, wgtmax, wgtsum, wsqsum; - int idhw[4000], ierror, istat, lwevt, maxer, maxpr; - int nowgt; - int nrn[2], numer, numeru, nwgts; - int gensof; -} ; - -extern Hwevnt_t* gHwevnt ; - -struct Hwhard_t { - double asfixd, clq[42], coss, costh, ctmax, disf[26], - emlst, emmax, emmin, empow, emsca, epoln[3], - gcoef[7], gpoln, omega0, phomas, ppoln[3], ptmax, ptmin, ptpow, - q2max, q2min, q2pow, q2wwmn, q2wwmx, qlim, sins, thmax, y4jt, tmnisr, - tqwt, xx[2], xlmin, xxmin, ybmax, ybmin, yjmax, yjmin, ywwmax, - ywwmin, whmin, zjmax, zmxisr; - int iaphig, ibrn[2], ibsh, ico[10], idcmf, idn[10], iflmax, iflmin, - ihpro, ipro, mapq[6], maxfl; - int bgshat, colisr, fstevt, fstwgt, genev, hvfcen, tpol, durham; -} ; - -extern Hwhard_t* gHwhard ; - -struct Hwprop_t { - double rltim[501], rmass[501], rspin[501]; - int ichrg[501], idpdg[501], iflav[501], nres; - int vtocdk[501], vtordk[501]; - int qorqqb[501], qborqq[501]; -} ; - -extern Hwprop_t* gHwprop ; - -struct Hwunam_t { - char rname[4008]; /* 8*501 */ - char txname[37074]; /* 2*37*501 */ -} ; - -extern Hwunam_t* gHwunam ; - -struct Hwupdt_t{ - double brfrac[4000], cmmom[4000], dkltm[500]; - int idk[4000], idkprd[20000], lnext[4000], - lstrt[500], ndkys, nme[4000], nmodes[500], nprods[4000]; - int dkpset, rstab[501]; -} ; - -extern Hwupdt_t* gHwupdt ; - -struct Hwuwts_t{ - double repwt[100], sngwt, decwt, qwt[3], - pwt[12], swtef[500]; -} ; - -extern Hwuwts_t* gHwuwts ; - -struct Hwuclu_t{ - double cldkwt[4000], cthrpw[144], preco, - resn[144], rmin[144]; - int locn[144], ncldk[4000], nreco; - int clreco; -} ; - -extern Hwuclu_t* gHwuclu ; - -struct Hwdist_t { - double exag, gev2mm, hbar, pltcut, vmin2, vtxpip[5], xmix[2], xmrct[2] - , ymix[2], ymrct[2]; - int iopdkl; - int maxdkl, mixing, pipsmr; -} ; - -extern Hwdist_t* gHwdist ; - -struct Hwqdks_t{ - double vtxqdk[80]; - int imqdk[20], locq[20], nqdk; -} ; - -extern Hwqdks_t* gHwqdks ; - -struct Hwusud_t{ - double accur, qev[6144], sud[6144]; - int inter, nqev, nsud, sudord; -} ; - -extern Hwusud_t* gHwusud ; - -// v 6.1 -struct Hwsusy_t { - double tanb, alphah, cosbpa, sinbpa, cosbma, sinbma, cosa, sina, - cosb, sinb, cotb, zmixss[16], zmxnss[16], zsgnss[4], - lfch[16], rfch[16], slfch[64], srfch[64], wmxuss[4], - wmxvss[4], wsgnss[2], qmixss[24], lmixss[24], - thetat, thetab, thetal, atss, abss, alss, muss, factss, - ghwwss[3], ghzzss[3], ghddss[4], ghuuss[4], ghwhss[3], - ghsqss[96], xlmnss, rmmnss, dmssm, senhnc[24], ssparity; - int susyin; -} ; - -extern Hwsusy_t* gHwsusy ; - -struct Hwrpar_t { - double lamda1[27], lamda2[27], lamda3[27]; - int hrdcol[10]; - int rparty, colupd; -} ; - -extern Hwrpar_t* gHwrpar ; - -struct Hwminb_t { - double pmbn1, pmbn2, pmbn3, pmbk1, pmbk2, pmbm1, pmbm2, - pmbp1, pmbp2, pmbp3; -} ; - -extern Hwminb_t* gHwminb ; - -struct Hwclus_t { - double ppcl[2500]; - int idcl[500], ncl; -} ; - -extern Hwclus_t* gHwclus ; - - // end v6.1 adds - -struct Hwgrav_t { - double grvlam, emgrv, gamgrv; -} ; - -extern Hwgrav_t* gHwgrav ; - -struct Hw6202_t { - double vipwid[3], dxrcyl, dxzmax, dxrsph; - int wzrfr, fix4jt; - int imssm, ihiggs, parity, lrsusy; -} ; - -extern Hw6202_t* gHw6202 ; - -//end v 6202 adds - -// v 6203 - -struct Hw6203_t { - double abwgt, abwsum, avabw; - int nnegwt, nnegev; - int negwts; -} ; - -extern Hw6203_t* gHw6203; - -// begin v 6301 adds - -struct Hw6300_t { - double mjjmin, chnprb[20]; - int iopstp, iopsh; - int optm, chon[20]; -} ; - -extern Hw6300_t* gHw6300 ; - -struct Hwpmrs_t { - double fmrs[44688] /* was [3][8][49][38] */; -} ; - -extern Hwpmrs_t* gHwpmrs ; - -struct Hwcirc_t { - int circop, circac, circvr, circrv, circch; -} ; - -extern Hwcirc_t* gHwcirc ; - - - -//end v6301 adds - -// v6.400 - - -struct Hwdspb_t { - double abmode[100] /* was [2][50] */, bbmode[1200] /* was [2][12] - [50] */, pbmode[600] /* was [12][50] */, wtbmax[600] /* was [12][50] */; - int idbprt[50], ibdrtp[50], ibmode[50], nbmode; -}; - -extern Hwdspb_t* gHwdspb ; - - -struct Hwdsp2_t { - double a2mode[1000] /* was [2][500] */, p2mode[500], wt2max[500]; - int id2prt[500], i2drtp[500], n2mode; -}; - -extern Hwdsp2_t* gHwdsp2 ; - -struct Hwdsp3_t { - double a3mode[8000] /* was [2][8][500] */, b3mode[8000] /* was [2][8][500] */, p3mode[500], wt3max[500], spn3cf[4500] /* was [3][3][500] */; - int id3prt[500], i3mode[4000] /* was [8][500] */, i3drtp[4000] /* was [8][500] */, n3mode, ndi3by[500], n3ncfl[500], i3drcf[4000] /* was [8][500] */; -}; - -extern Hwdsp3_t* gHwdsp3 ; - -struct Hwdsp4_t { - double a4mode[96] /* was [2][12][4] */, b4mode[96] /* was [2][12][4] */, p4mode[576] /* was [12][12][4] */, wt4max[576] /* was [12][12][4] */; - int id4prt[4], i4mode[8] /* was [2][4] */, n4mode; -}; - -extern Hwdsp4_t* gHwdsp4 ; - -struct Hwdspn_t { - int ndecsy, nsearch, lrdec, lwdec; - int syspin, threeb, fourb; - char taudec[6]; -}; -extern Hwdspn_t* gHwdspn ; - -struct Hwspin_t { - std::complex<double> mespn[2400] /* was [2][2][2][2][3][50] */, rhospn[200] /* was [2][2][50] */; - double spncfc[450] /* was [3][3][50] */; - int idspn[50], jmospn[50], jdaspn[100] /* was [2][50] */, nspn, isnhep[4000], nsntry; - int decspn[50]; - int ncfl[50], spcopt; -}; -extern Hwspin_t* gHwspin; - -struct Hwstau_t { - int jak1, jak2, itdkrc, ifphot; -}; - -extern Hwstau_t* gHwstau; -//end v6400 adds - - -// v6500 - -struct Hwgupr_t { - double lhwgt[100], lhwgts[100], lhmxsm, lhxsct[100], lhxerr[100], lhxmax[100]; - int lhiwgt[100], ityplh, lhnevt[100]; - int lhsoft, lhglsf; -}; -extern Hwgupr_t* gHwgupr; - -struct Hw6500_t { - int prespl; -}; -extern Hw6500_t* gHw6500; - -//end v6500 adds - -// v6504 - -struct Hw6504_t { - int itoprd; -}; -extern Hw6504_t* gHw6504; - -//end v6504 adds - -// Jimmy common blocks - -struct Jmflag_t { - int jmp1, jmp2, jmbug, mscat, fn_type, msflag; -}; -extern Jmflag_t* gJmflag; - -// end Jimmy common blocks - -// struct Hwumsc_t { -// int lhwout; -// } ; - -// extern Hwumsc_t* gHwumsc; - - - -#endif diff --git a/Generators/Herwig_i/Herwig_i/herwig6505.h b/Generators/Herwig_i/Herwig_i/herwig6505.h deleted file mode 100644 index d26dd382dccfcbee5e02a1158e463d1f9da135a6..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/Herwig_i/herwig6505.h +++ /dev/null @@ -1,373 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef __HERWIG65_HH__ -#define __HERWIG65_HH__ - -/* Common Block Declarations */ -#include <complex> - -const int m_nmxhep = 10000; - -struct Hwbeam_t { - int ipart1, ipart2; -} ; - -extern Hwbeam_t* gHwbeam; - -struct Hwbmch_t { - char part1[8], part2[8]; -} ; - -extern Hwbmch_t* gHwbmch; - -struct Hwproc_t { - double ebeam1, ebeam2, pbeam1, pbeam2; - int iproc, maxev; -} ; -extern Hwproc_t* gHwproc; - -struct Hwpram_t { - double afch[32], alphem, b1lim, betaf, btclm, cafac, - cffac, clmax, clpow, clsmr[2], cspeed, ensof, etamix, f0mix, f1mix, - f2mix, gamh, gamw, gamz, gamzp, gev2nb, h1mix, pdiqk, pgsmx, - pgspl[4], phimix, pifac, prsof, psplt[2], ptrms, pxrms, qcdl3, qcdl5, - qcdlam, qdiqk, qfch[16], qg, qspac, qv, scabi, swein, tmtop, - vfch[32], vckm[9], - vgcut, vqcut, vpcut, zbinm, - effmin, omhmix, et2mix, ph3mix, gcutme; - int ioprem, iprint, ispac, lrsud, lwsud, modpdf[2], nbtry, ncolo, - nctry, ndtry, netry, nflav, ngspl, nstru, nstry, nzbin, - iop4jt[2], nprfmt; - int azsoft, azspin; - int cldir[2]; - int hardme, nospac, prndec, prvtx, softme, zprime; - int prndef, prntex, prnweb; -} ; -extern Hwpram_t* gHwpram ; - -struct Hwprch_t { - char autpdf[2][20], bdecay[4]; -} ; - -extern Hwprch_t* gHwprch ; - -struct Hwpart_t { - int nevpar, npar, istpar[500], idpar[500], jmopar[1000], - jdapar[1000]; - double ppar[2500], vpar[2000]; -} ; -extern Hwpart_t* gHwpart ; - -struct Hwparp_t { - double decpar[1000], phipar[1000], rhopar[1000]; - int tmpar[500]; -} ; -extern Hwparp_t* gHwparp ; - -struct Hwbosc_t { - // rhohep = 3*NMXHEP -// double alpfac, brhig[12], enhanc[12], gammax, rhohep[30000]; - double alpfac, brhig[12], enhanc[12], gammax, rhohep[3*m_nmxhep]; - int iophig, modbos[50]; -} ; - -extern Hwbosc_t* gHwbosc ; - -struct Hwparc_t { - int jcopar[2000]; -} ; -extern Hwparc_t* gHwparc ; - -struct Hwbrch_t { - double anomsc[4], hardst, ptint[6], xfact; - int inhad, jnhad, nspac[7], islent; - int breit, frost, usecmf; -} ; - -extern Hwbrch_t* gHwbrch ; - -struct Hwevnt_t { - // idhw = NMXHEP - double avwgt, evwgt, gamwt, tlout, wbigst, wgtmax, wgtsum, wsqsum; -// int idhw[10000], ierror, istat, lwevt, maxer, maxpr; - int idhw[m_nmxhep], ierror, istat, lwevt, maxer, maxpr; - int nowgt; - int nrn[2], numer, numeru, nwgts; - int gensof; -} ; - -extern Hwevnt_t* gHwevnt ; - -struct Hwhard_t { - double asfixd, clq[42], coss, costh, ctmax, disf[26], - emlst, emmax, emmin, empow, emsca, epoln[3], - gcoef[7], gpoln, omega0, phomas, ppoln[3], ptmax, ptmin, ptpow, - q2max, q2min, q2pow, q2wwmn, q2wwmx, qlim, sins, thmax, y4jt, tmnisr, - tqwt, xx[2], xlmin, xxmin, ybmax, ybmin, yjmax, yjmin, ywwmax, - ywwmin, whmin, zjmax, zmxisr; - int iaphig, ibrn[2], ibsh, ico[10], idcmf, idn[10], iflmax, iflmin, - ihpro, ipro, mapq[6], maxfl; - int bgshat, colisr, fstevt, fstwgt, genev, hvfcen, tpol, durham; -} ; - -extern Hwhard_t* gHwhard ; - -struct Hwprop_t { - double rltim[501], rmass[501], rspin[501]; - int ichrg[501], idpdg[501], iflav[501], nres; - int vtocdk[501], vtordk[501]; - int qorqqb[501], qborqq[501]; -} ; - -extern Hwprop_t* gHwprop ; - -struct Hwunam_t { - char rname[4008]; /* 8*501 */ - char txname[37074]; /* 2*37*501 */ -} ; - -extern Hwunam_t* gHwunam ; - -struct Hwupdt_t{ - double brfrac[4000], cmmom[4000], dkltm[500]; - int idk[4000], idkprd[20000], lnext[4000], - lstrt[500], ndkys, nme[4000], nmodes[500], nprods[4000]; - int dkpset, rstab[501]; -} ; - -extern Hwupdt_t* gHwupdt ; - -struct Hwuwts_t{ - double repwt[100], sngwt, decwt, qwt[3], - pwt[12], swtef[500]; -} ; - -extern Hwuwts_t* gHwuwts ; - -struct Hwuclu_t{ - double cldkwt[4000], cthrpw[144], preco, - resn[144], rmin[144]; - int locn[144], ncldk[4000], nreco; - int clreco; -} ; - -extern Hwuclu_t* gHwuclu ; - -struct Hwdist_t { - double exag, gev2mm, hbar, pltcut, vmin2, vtxpip[5], xmix[2], xmrct[2] - , ymix[2], ymrct[2]; - int iopdkl; - int maxdkl, mixing, pipsmr; -} ; - -extern Hwdist_t* gHwdist ; - -struct Hwqdks_t{ - double vtxqdk[80]; - int imqdk[20], locq[20], nqdk; -} ; - -extern Hwqdks_t* gHwqdks ; - -struct Hwusud_t{ - double accur, qev[6144], sud[6144]; - int inter, nqev, nsud, sudord; -} ; - -extern Hwusud_t* gHwusud ; - -// v 6.1 -struct Hwsusy_t { - double tanb, alphah, cosbpa, sinbpa, cosbma, sinbma, cosa, sina, - cosb, sinb, cotb, zmixss[16], zmxnss[16], zsgnss[4], - lfch[16], rfch[16], slfch[64], srfch[64], wmxuss[4], - wmxvss[4], wsgnss[2], qmixss[24], lmixss[24], - thetat, thetab, thetal, atss, abss, alss, muss, factss, - ghwwss[3], ghzzss[3], ghddss[4], ghuuss[4], ghwhss[3], - ghsqss[96], xlmnss, rmmnss, dmssm, senhnc[24], ssparity; - int susyin; -} ; - -extern Hwsusy_t* gHwsusy ; - -struct Hwrpar_t { - double lamda1[27], lamda2[27], lamda3[27]; - int hrdcol[10]; - int rparty, colupd; -} ; - -extern Hwrpar_t* gHwrpar ; - -struct Hwminb_t { - double pmbn1, pmbn2, pmbn3, pmbk1, pmbk2, pmbm1, pmbm2, - pmbp1, pmbp2, pmbp3; -} ; - -extern Hwminb_t* gHwminb ; - -struct Hwclus_t { - double ppcl[2500]; - int idcl[500], ncl; -} ; - -extern Hwclus_t* gHwclus ; - - // end v6.1 adds - -struct Hwgrav_t { - double grvlam, emgrv, gamgrv; -} ; - -extern Hwgrav_t* gHwgrav ; - -struct Hw6202_t { - double vipwid[3], dxrcyl, dxzmax, dxrsph; - int wzrfr, fix4jt; - int imssm, ihiggs, parity, lrsusy; -} ; - -extern Hw6202_t* gHw6202 ; - -//end v 6202 adds - -// v 6203 - -struct Hw6203_t { - double abwgt, abwsum, avabw; - int nnegwt, nnegev; - int negwts; -} ; - -extern Hw6203_t* gHw6203; - -// begin v 6301 adds - -struct Hw6300_t { - double mjjmin, chnprb[20]; - int iopstp, iopsh; - int optm, chon[20]; -} ; - -extern Hw6300_t* gHw6300 ; - -struct Hwpmrs_t { - double fmrs[44688] /* was [3][8][49][38] */; -} ; - -extern Hwpmrs_t* gHwpmrs ; - -struct Hwcirc_t { - int circop, circac, circvr, circrv, circch; -} ; - -extern Hwcirc_t* gHwcirc ; - - - -//end v6301 adds - -// v6.400 - - -struct Hwdspb_t { - double abmode[100] /* was [2][50] */, bbmode[1200] /* was [2][12] - [50] */, pbmode[600] /* was [12][50] */, wtbmax[600] /* was [12][50] */; - int idbprt[50], ibdrtp[50], ibmode[50], nbmode; -}; - -extern Hwdspb_t* gHwdspb ; - - -struct Hwdsp2_t { - double a2mode[1000] /* was [2][500] */, p2mode[500], wt2max[500]; - int id2prt[500], i2drtp[500], n2mode; -}; - -extern Hwdsp2_t* gHwdsp2 ; - -struct Hwdsp3_t { - double a3mode[8000] /* was [2][8][500] */, b3mode[8000] /* was [2][8][500] */, p3mode[500], wt3max[500], spn3cf[4500] /* was [3][3][500] */; - int id3prt[500], i3mode[4000] /* was [8][500] */, i3drtp[4000] /* was [8][500] */, n3mode, ndi3by[500], n3ncfl[500], i3drcf[4000] /* was [8][500] */; -}; - -extern Hwdsp3_t* gHwdsp3 ; - -struct Hwdsp4_t { - double a4mode[96] /* was [2][12][4] */, b4mode[96] /* was [2][12][4] */, p4mode[576] /* was [12][12][4] */, wt4max[576] /* was [12][12][4] */; - int id4prt[4], i4mode[8] /* was [2][4] */, n4mode; -}; - -extern Hwdsp4_t* gHwdsp4 ; - -struct Hwdspn_t { - int ndecsy, nsearch, lrdec, lwdec; - int syspin, threeb, fourb; - char taudec[6]; -}; -extern Hwdspn_t* gHwdspn ; - -struct Hwspin_t { - // isnhep = NMXHEP - std::complex<double> mespn[2400] /* was [2][2][2][2][3][50] */, rhospn[200] /* was [2][2][50] */; - double spncfc[450] /* was [3][3][50] */; -// int idspn[50], jmospn[50], jdaspn[100] /* was [2][50] */, nspn, isnhep[10000], nsntry; - int idspn[50], jmospn[50], jdaspn[100] /* was [2][50] */, nspn, isnhep[m_nmxhep], nsntry; - int decspn[50]; - int ncfl[50], spcopt; -}; -extern Hwspin_t* gHwspin; - -struct Hwstau_t { - int jak1, jak2, itdkrc, ifphot; -}; - -extern Hwstau_t* gHwstau; -//end v6400 adds - - -// v6500 - -struct Hwgupr_t { - double lhwgt[100], lhwgts[100], lhmxsm, lhxsct[100], lhxerr[100], lhxmax[100]; - int lhiwgt[100], ityplh, lhnevt[100]; - int lhsoft, lhglsf; -}; -extern Hwgupr_t* gHwgupr; - -struct Hw6500_t { - int prespl; -}; -extern Hw6500_t* gHw6500; - -//end v6500 adds - -// v6504 - -struct Hw6504_t { - int itoprd; -}; -extern Hw6504_t* gHw6504; - -//end v6504 adds - -// Jimmy common blocks - -struct Jmparm_t { - double ptjim, ygamma, jmzmin, jmrad[264], phad, jmu2, jmv2, jmarry[17][106], nlost, totscat; - int anomoff, jcmvar, jmueo, jmptyp[117], jmbug, fn_type, msflag, maxmstry; -}; -extern Jmparm_t* gJmparm; - -// end Jimmy common blocks - -// struct Hwumsc_t { -// int lhwout; -// } ; - -// extern Hwumsc_t* gHwumsc; - - - -#endif diff --git a/Generators/Herwig_i/Herwig_i/herwig6510.h b/Generators/Herwig_i/Herwig_i/herwig6510.h deleted file mode 100644 index ce0e4a82900ea707d688d94d6e89e651c2829faf..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/Herwig_i/herwig6510.h +++ /dev/null @@ -1,399 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef __HERWIG65_HH__ -#define __HERWIG65_HH__ - -/* Common Block Declarations */ -#include <complex> - -const int m_nmxhep = 10000; - -struct Hwbeam_t { - int ipart1, ipart2; -} ; - -extern Hwbeam_t* gHwbeam; - -struct Hwbmch_t { - char part1[8], part2[8]; -} ; - -extern Hwbmch_t* gHwbmch; - -struct Hwproc_t { - double ebeam1, ebeam2, pbeam1, pbeam2; - int iproc, maxev; -} ; -extern Hwproc_t* gHwproc; - -struct Hwpram_t { - double afch[32], alphem, b1lim, betaf, btclm, cafac, - cffac, clmax, clpow, clsmr[2], cspeed, ensof, etamix, f0mix, f1mix, - f2mix, gamh, gamw, gamz, gamzp, gev2nb, h1mix, pdiqk, pgsmx, - pgspl[4], phimix, pifac, prsof, psplt[2], ptrms, pxrms, qcdl3, qcdl5, - qcdlam, qdiqk, qfch[16], qg, qspac, qv, scabi, swein, tmtop, - vfch[32], vckm[9], - vgcut, vqcut, vpcut, zbinm, - effmin, omhmix, et2mix, ph3mix, gcutme; - int ioprem, iprint, ispac, lrsud, lwsud, modpdf[2], nbtry, ncolo, - nctry, ndtry, netry, nflav, ngspl, nstru, nstry, nzbin, - iop4jt[2], nprfmt; - int azsoft, azspin; - int cldir[2]; - int hardme, nospac, prndec, prvtx, softme, zprime; - int prndef, prntex, prnweb; -} ; -extern Hwpram_t* gHwpram ; - -struct Hwprch_t { - char autpdf[2][20], bdecay[4]; -} ; - -extern Hwprch_t* gHwprch ; - -struct Hwpart_t { - int nevpar, npar, istpar[500], idpar[500], jmopar[1000], - jdapar[1000]; - double ppar[2500], vpar[2000]; -} ; -extern Hwpart_t* gHwpart ; - -struct Hwparp_t { - double decpar[1000], phipar[1000], rhopar[1000]; - int tmpar[500]; -} ; -extern Hwparp_t* gHwparp ; - -struct Hwbosc_t { - // rhohep = 3*NMXHEP -// double alpfac, brhig[12], enhanc[12], gammax, rhohep[30000]; - double alpfac, brhig[12], enhanc[12], gammax, rhohep[3*m_nmxhep]; - int iophig, modbos[50]; -} ; - -extern Hwbosc_t* gHwbosc ; - -struct Hwparc_t { - int jcopar[2000]; -} ; -extern Hwparc_t* gHwparc ; - -struct Hwbrch_t { - double anomsc[4], hardst, ptint[6], xfact; - int inhad, jnhad, nspac[7], islent; - int breit, frost, usecmf; -} ; - -extern Hwbrch_t* gHwbrch ; - -struct Hwevnt_t { - // idhw = NMXHEP - double avwgt, evwgt, gamwt, tlout, wbigst, wgtmax, wgtsum, wsqsum; -// int idhw[10000], ierror, istat, lwevt, maxer, maxpr; - int idhw[m_nmxhep], ierror, istat, lwevt, maxer, maxpr; - int nowgt; - int nrn[2], numer, numeru, nwgts; - int gensof; -} ; - -extern Hwevnt_t* gHwevnt ; - -struct Hwhard_t { - double asfixd, clq[42], coss, costh, ctmax, disf[26], - emlst, emmax, emmin, empow, emsca, epoln[3], - gcoef[7], gpoln, omega0, phomas, ppoln[3], ptmax, ptmin, ptpow, - q2max, q2min, q2pow, q2wwmn, q2wwmx, qlim, sins, thmax, y4jt, tmnisr, - tqwt, xx[2], xlmin, xxmin, ybmax, ybmin, yjmax, yjmin, ywwmax, - ywwmin, whmin, zjmax, zmxisr; - int iaphig, ibrn[2], ibsh, ico[10], idcmf, idn[10], iflmax, iflmin, - ihpro, ipro, mapq[6], maxfl; - int bgshat, colisr, fstevt, fstwgt, genev, hvfcen, tpol, durham; -} ; - -extern Hwhard_t* gHwhard ; - -struct Hwprop_t { - double rltim[501], rmass[501], rspin[501]; - int ichrg[501], idpdg[501], iflav[501], nres; - int vtocdk[501], vtordk[501]; - int qorqqb[501], qborqq[501]; -} ; - -extern Hwprop_t* gHwprop ; - -struct Hwunam_t { - char rname[4008]; /* 8*501 */ - char txname[37074]; /* 2*37*501 */ -} ; - -extern Hwunam_t* gHwunam ; - -struct Hwupdt_t{ - double brfrac[4000], cmmom[4000], dkltm[500]; - int idk[4000], idkprd[20000], lnext[4000], - lstrt[500], ndkys, nme[4000], nmodes[500], nprods[4000]; - int dkpset, rstab[501]; -} ; - -extern Hwupdt_t* gHwupdt ; - -struct Hwuwts_t{ - double repwt[100], sngwt, decwt, qwt[3], - pwt[12], swtef[500]; -} ; - -extern Hwuwts_t* gHwuwts ; - -struct Hwuclu_t{ - double cldkwt[4000], cthrpw[144], preco, - resn[144], rmin[144]; - int locn[144], ncldk[4000], nreco; - int clreco; -} ; - -extern Hwuclu_t* gHwuclu ; - -struct Hwdist_t { - double exag, gev2mm, hbar, pltcut, vmin2, vtxpip[5], xmix[2], xmrct[2] - , ymix[2], ymrct[2]; - int iopdkl; - int maxdkl, mixing, pipsmr; -} ; - -extern Hwdist_t* gHwdist ; - -struct Hwqdks_t{ - double vtxqdk[80]; - int imqdk[20], locq[20], nqdk; -} ; - -extern Hwqdks_t* gHwqdks ; - -struct Hwusud_t{ - double accur, qev[6144], sud[6144]; - int inter, nqev, nsud, sudord; -} ; - -extern Hwusud_t* gHwusud ; - -// v 6.1 -struct Hwsusy_t { - double tanb, alphah, cosbpa, sinbpa, cosbma, sinbma, cosa, sina, - cosb, sinb, cotb, zmixss[16], zmxnss[16], zsgnss[4], - lfch[16], rfch[16], slfch[64], srfch[64], wmxuss[4], - wmxvss[4], wsgnss[2], qmixss[24], lmixss[24], - thetat, thetab, thetal, atss, abss, alss, muss, factss, - ghwwss[3], ghzzss[3], ghddss[4], ghuuss[4], ghwhss[3], - ghsqss[96], xlmnss, rmmnss, dmssm, senhnc[24], ssparity; - int susyin; -} ; - -extern Hwsusy_t* gHwsusy ; - -struct Hwrpar_t { - double lamda1[27], lamda2[27], lamda3[27]; - int hrdcol[10]; - int rparty, colupd; -} ; - -extern Hwrpar_t* gHwrpar ; - -struct Hwminb_t { - double pmbn1, pmbn2, pmbn3, pmbk1, pmbk2, pmbm1, pmbm2, - pmbp1, pmbp2, pmbp3; -} ; - -extern Hwminb_t* gHwminb ; - -struct Hwclus_t { - double ppcl[2500]; - int idcl[500], ncl; -} ; - -extern Hwclus_t* gHwclus ; - - // end v6.1 adds - -struct Hwgrav_t { - double grvlam, emgrv, gamgrv; -} ; - -extern Hwgrav_t* gHwgrav ; - -struct Hw6202_t { - double vipwid[3], dxrcyl, dxzmax, dxrsph; - int wzrfr, fix4jt; - int imssm, ihiggs, parity, lrsusy; -} ; - -extern Hw6202_t* gHw6202 ; - -//end v 6202 adds - -// v 6203 - -struct Hw6203_t { - double abwgt, abwsum, avabw; - int nnegwt, nnegev; - int negwts; -} ; - -extern Hw6203_t* gHw6203; - -// begin v 6301 adds - -struct Hw6300_t { - double mjjmin, chnprb[20]; - int iopstp, iopsh; - int optm, chon[20]; -} ; - -extern Hw6300_t* gHw6300 ; - -struct Hwpmrs_t { - double fmrs[44688] /* was [3][8][49][38] */; -} ; - -extern Hwpmrs_t* gHwpmrs ; - -struct Hwcirc_t { - int circop, circac, circvr, circrv, circch; -} ; - -extern Hwcirc_t* gHwcirc ; - - - -//end v6301 adds - -// v6.400 - - -struct Hwdspb_t { - double abmode[100] /* was [2][50] */, bbmode[1200] /* was [2][12] - [50] */, pbmode[600] /* was [12][50] */, wtbmax[600] /* was [12][50] */; - int idbprt[50], ibdrtp[50], ibmode[50], nbmode; -}; - -extern Hwdspb_t* gHwdspb ; - - -struct Hwdsp2_t { - double a2mode[1000] /* was [2][500] */, p2mode[500], wt2max[500]; - int id2prt[500], i2drtp[500], n2mode; -}; - -extern Hwdsp2_t* gHwdsp2 ; - -struct Hwdsp3_t { - double a3mode[8000] /* was [2][8][500] */, b3mode[8000] /* was [2][8][500] */, p3mode[500], wt3max[500], spn3cf[4500] /* was [3][3][500] */; - int id3prt[500], i3mode[4000] /* was [8][500] */, i3drtp[4000] /* was [8][500] */, n3mode, ndi3by[500], n3ncfl[500], i3drcf[4000] /* was [8][500] */; -}; - -extern Hwdsp3_t* gHwdsp3 ; - -struct Hwdsp4_t { - double a4mode[96] /* was [2][12][4] */, b4mode[96] /* was [2][12][4] */, p4mode[576] /* was [12][12][4] */, wt4max[576] /* was [12][12][4] */; - int id4prt[4], i4mode[8] /* was [2][4] */, n4mode; -}; - -extern Hwdsp4_t* gHwdsp4 ; - -struct Hwdspn_t { - int ndecsy, nsearch, lrdec, lwdec; - int syspin, threeb, fourb; - char taudec[6]; -}; -extern Hwdspn_t* gHwdspn ; - -struct Hwspin_t { - // isnhep = NMXHEP - std::complex<double> mespn[2400] /* was [2][2][2][2][3][50] */, rhospn[200] /* was [2][2][50] */; - double spncfc[450] /* was [3][3][50] */; -// int idspn[50], jmospn[50], jdaspn[100] /* was [2][50] */, nspn, isnhep[10000], nsntry; - int idspn[50], jmospn[50], jdaspn[100] /* was [2][50] */, nspn, isnhep[m_nmxhep], nsntry; - int decspn[50]; - int ncfl[50], spcopt; -}; -extern Hwspin_t* gHwspin; - -struct Hwstau_t { - int jak1, jak2, itdkrc, ifphot; -}; - -extern Hwstau_t* gHwstau; -//end v6400 adds - - -// v6500 - -struct Hwgupr_t { - double lhwgt[100], lhwgts[100], lhmxsm, lhxsct[100], lhxerr[100], lhxmax[100]; - int lhiwgt[100], ityplh, lhnevt[100]; - int lhsoft, lhglsf; -}; -extern Hwgupr_t* gHwgupr; - -struct Hw6500_t { - int prespl; -}; -extern Hw6500_t* gHw6500; - -//end v6500 adds - -// v6504 - -struct Hw6504_t { - int itoprd; -}; -extern Hw6504_t* gHw6504; - -//end v6504 adds - -// v6506 - -struct Hw6506_t { - double pdfx0, pdfpow; -}; -extern Hw6506_t* gHw6506; - -//end v6506 adds - -// v6506 - -struct Hw6510_t { - int nedtry; -}; -extern Hw6510_t* gHw6510; - -//end v6510 adds - -// Jimmy common blocks - -struct Jmparm_t { - double ptjim, ygamma, jmzmin, jmrad[264], phad, jmu2, jmv2, jmarry[17][106], nlost, totscat; - int anomoff, jcmvar, jmueo, jmptyp[117], jmbug, fn_type, msflag, maxmstry; -}; -extern Jmparm_t* gJmparm; - -// end Jimmy common blocks - -// common for PDF information -struct Hrwpdf_t { - double x1, x2, q; - int id1, id2, idpdf1, idpdf2; -}; -extern Hrwpdf_t* gHrwpdf; - - -// struct Hwumsc_t { -// int lhwout; -// } ; - -// extern Hwumsc_t* gHwumsc; - - - -#endif diff --git a/Generators/Herwig_i/Herwig_i/herwig6520.h b/Generators/Herwig_i/Herwig_i/herwig6520.h deleted file mode 100644 index d11abb9b8f659333b10f37ffd5b176b1465df1f7..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/Herwig_i/herwig6520.h +++ /dev/null @@ -1,409 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef HERWIG_I_HERWIG6520_H -#define HERWIG_I_HERWIG6520_H - -/* Common Block Declarations */ -#include <complex> - -const int nmxhep = 10000; - -struct Hwbeam_t { - int ipart1, ipart2; -} ; - -extern Hwbeam_t* gHwbeam; - -struct Hwbmch_t { - char part1[8], part2[8]; -} ; - -extern Hwbmch_t* gHwbmch; - -struct Hwproc_t { - double ebeam1, ebeam2, pbeam1, pbeam2; - int iproc, maxev; -} ; -extern Hwproc_t* gHwproc; - -struct Hwpram_t { - double afch[32], alphem, b1lim, betaf, btclm, cafac, - cffac, clmax, clpow, clsmr[2], cspeed, ensof, etamix, f0mix, f1mix, - f2mix, gamh, gamw, gamz, gamzp, gev2nb, h1mix, pdiqk, pgsmx, - pgspl[4], phimix, pifac, prsof, psplt[2], ptrms, pxrms, qcdl3, qcdl5, - qcdlam, qdiqk, qfch[16], qg, qspac, qv, scabi, swein, tmtop, - vfch[32], vckm[9], - vgcut, vqcut, vpcut, zbinm, - effmin, omhmix, et2mix, ph3mix, gcutme; - int ioprem, iprint, ispac, lrsud, lwsud, modpdf[2], nbtry, ncolo, - nctry, ndtry, netry, nflav, ngspl, nstru, nstry, nzbin, - iop4jt[2], nprfmt; - int azsoft, azspin; - int cldir[2]; - int hardme, nospac, prndec, prvtx, softme, zprime; - int prndef, prntex, prnweb; -} ; -extern Hwpram_t* gHwpram ; - -struct Hwprch_t { - char autpdf[2][20], bdecay[4]; -} ; - -extern Hwprch_t* gHwprch ; - -struct Hwpart_t { - int nevpar, npar, istpar[500], idpar[500], jmopar[1000], - jdapar[1000]; - double ppar[2500], vpar[2000]; -} ; -extern Hwpart_t* gHwpart ; - -struct Hwparp_t { - double decpar[1000], phipar[1000], rhopar[1000]; - int tmpar[500]; -} ; -extern Hwparp_t* gHwparp ; - -struct Hwbosc_t { - // rhohep = 3*NMXHEP -// double alpfac, brhig[12], enhanc[12], gammax, rhohep[30000]; - double alpfac, brhig[12], enhanc[12], gammax, rhohep[3*nmxhep]; - int iophig, modbos[50]; -} ; - -extern Hwbosc_t* gHwbosc ; - -struct Hwparc_t { - int jcopar[2000]; -} ; -extern Hwparc_t* gHwparc ; - -struct Hwbrch_t { - double anomsc[4], hardst, ptint[6], xfact; - int inhad, jnhad, nspac[7], islent; - int breit, frost, usecmf; -} ; - -extern Hwbrch_t* gHwbrch ; - -struct Hwevnt_t { - // idhw = NMXHEP - double avwgt, evwgt, gamwt, tlout, wbigst, wgtmax, wgtsum, wsqsum; -// int idhw[10000], ierror, istat, lwevt, maxer, maxpr; - int idhw[nmxhep], ierror, istat, lwevt, maxer, maxpr; - int nowgt; - int nrn[2], numer, numeru, nwgts; - int gensof; -} ; - -extern Hwevnt_t* gHwevnt ; - -struct Hwhard_t { - double asfixd, clq[42], coss, costh, ctmax, disf[26], - emlst, emmax, emmin, empow, emsca, epoln[3], - gcoef[7], gpoln, omega0, phomas, ppoln[3], ptmax, ptmin, ptpow, - q2max, q2min, q2pow, q2wwmn, q2wwmx, qlim, sins, thmax, y4jt, tmnisr, - tqwt, xx[2], xlmin, xxmin, ybmax, ybmin, yjmax, yjmin, ywwmax, - ywwmin, whmin, zjmax, zmxisr; - int iaphig, ibrn[2], ibsh, ico[10], idcmf, idn[10], iflmax, iflmin, - ihpro, ipro, mapq[6], maxfl; - int bgshat, colisr, fstevt, fstwgt, genev, hvfcen, tpol, durham; -} ; - -extern Hwhard_t* gHwhard ; - -struct Hwprop_t { - double rltim[501], rmass[501], rspin[501]; - int ichrg[501], idpdg[501], iflav[501], nres; - int vtocdk[501], vtordk[501]; - int qorqqb[501], qborqq[501]; -} ; - -extern Hwprop_t* gHwprop ; - -struct Hwunam_t { - char rname[4008]; /* 8*501 */ - char txname[37074]; /* 2*37*501 */ -} ; - -extern Hwunam_t* gHwunam ; - -struct Hwupdt_t{ - double brfrac[4000], cmmom[4000], dkltm[500]; - int idk[4000], idkprd[20000], lnext[4000], - lstrt[500], ndkys, nme[4000], nmodes[500], nprods[4000]; - int dkpset, rstab[501]; -} ; - -extern Hwupdt_t* gHwupdt ; - -struct Hwuwts_t{ - double repwt[100], sngwt, decwt, qwt[3], - pwt[12], swtef[500]; -} ; - -extern Hwuwts_t* gHwuwts ; - -struct Hwuclu_t{ - double cldkwt[4000], cthrpw[144], preco, - resn[144], rmin[144]; - int locn[144], ncldk[4000], nreco; - int clreco; -} ; - -extern Hwuclu_t* gHwuclu ; - -struct Hwdist_t { - double exag, gev2mm, hbar, pltcut, vmin2, vtxpip[5], xmix[2], xmrct[2] - , ymix[2], ymrct[2]; - int iopdkl; - int maxdkl, mixing, pipsmr; -} ; - -extern Hwdist_t* gHwdist ; - -struct Hwqdks_t{ - double vtxqdk[80]; - int imqdk[20], locq[20], nqdk; -} ; - -extern Hwqdks_t* gHwqdks ; - -struct Hwusud_t{ - double accur, qev[6144], sud[6144]; - int inter, nqev, nsud, sudord; -} ; - -extern Hwusud_t* gHwusud ; - -// v 6.1 -struct Hwsusy_t { - double tanb, alphah, cosbpa, sinbpa, cosbma, sinbma, cosa, sina, - cosb, sinb, cotb, zmixss[16], zmxnss[16], zsgnss[4], - lfch[16], rfch[16], slfch[64], srfch[64], wmxuss[4], - wmxvss[4], wsgnss[2], qmixss[24], lmixss[24], - thetat, thetab, thetal, atss, abss, alss, muss, factss, - ghwwss[3], ghzzss[3], ghddss[4], ghuuss[4], ghwhss[3], - ghsqss[96], xlmnss, rmmnss, dmssm, senhnc[24], ssparity; - int susyin; -} ; - -extern Hwsusy_t* gHwsusy ; - -struct Hwrpar_t { - double lamda1[27], lamda2[27], lamda3[27]; - int hrdcol[10]; - int rparty, colupd; -} ; - -extern Hwrpar_t* gHwrpar ; - -struct Hwminb_t { - double pmbn1, pmbn2, pmbn3, pmbk1, pmbk2, pmbm1, pmbm2, - pmbp1, pmbp2, pmbp3; -} ; - -extern Hwminb_t* gHwminb ; - -struct Hwclus_t { - double ppcl[2500]; - int idcl[500], ncl; -} ; - -extern Hwclus_t* gHwclus ; - - // end v6.1 adds - -struct Hwgrav_t { - double grvlam, emgrv, gamgrv; -} ; - -extern Hwgrav_t* gHwgrav ; - -struct Hw6202_t { - double vipwid[3], dxrcyl, dxzmax, dxrsph; - int wzrfr, fix4jt; - int imssm, ihiggs, parity, lrsusy; -} ; - -extern Hw6202_t* gHw6202 ; - -//end v 6202 adds - -// v 6203 - -struct Hw6203_t { - double abwgt, abwsum, avabw; - int nnegwt, nnegev; - int negwts; -} ; - -extern Hw6203_t* gHw6203; - -// begin v 6301 adds - -struct Hw6300_t { - double mjjmin, chnprb[20]; - int iopstp, iopsh; - int optm, chon[20]; -} ; - -extern Hw6300_t* gHw6300 ; - -struct Hwpmrs_t { - double fmrs[44688] /* was [3][8][49][38] */; -} ; - -extern Hwpmrs_t* gHwpmrs ; - -struct Hwcirc_t { - int circop, circac, circvr, circrv, circch; -} ; - -extern Hwcirc_t* gHwcirc ; - - - -//end v6301 adds - -// v6.400 - - -struct Hwdspb_t { - double abmode[100] /* was [2][50] */, bbmode[1200] /* was [2][12] - [50] */, pbmode[600] /* was [12][50] */, wtbmax[600] /* was [12][50] */; - int idbprt[50], ibdrtp[50], ibmode[50], nbmode; -}; - -extern Hwdspb_t* gHwdspb ; - - -struct Hwdsp2_t { - double a2mode[1000] /* was [2][500] */, p2mode[500], wt2max[500]; - int id2prt[500], i2drtp[500], n2mode; -}; - -extern Hwdsp2_t* gHwdsp2 ; - -struct Hwdsp3_t { - double a3mode[8000] /* was [2][8][500] */, b3mode[8000] /* was [2][8][500] */, p3mode[500], wt3max[500], spn3cf[4500] /* was [3][3][500] */; - int id3prt[500], i3mode[4000] /* was [8][500] */, i3drtp[4000] /* was [8][500] */, n3mode, ndi3by[500], n3ncfl[500], i3drcf[4000] /* was [8][500] */; -}; - -extern Hwdsp3_t* gHwdsp3 ; - -struct Hwdsp4_t { - double a4mode[96] /* was [2][12][4] */, b4mode[96] /* was [2][12][4] */, p4mode[576] /* was [12][12][4] */, wt4max[576] /* was [12][12][4] */; - int id4prt[4], i4mode[8] /* was [2][4] */, n4mode; -}; - -extern Hwdsp4_t* gHwdsp4 ; - -struct Hwdspn_t { - int ndecsy, nsearch, lrdec, lwdec; - int syspin, threeb, fourb; - char taudec[6]; -}; -extern Hwdspn_t* gHwdspn ; - -struct Hwspin_t { - // isnhep = NMXHEP - std::complex<double> mespn[2400] /* was [2][2][2][2][3][50] */, rhospn[200] /* was [2][2][50] */; - double spncfc[450] /* was [3][3][50] */; -// int idspn[50], jmospn[50], jdaspn[100] /* was [2][50] */, nspn, isnhep[10000], nsntry; - int idspn[50], jmospn[50], jdaspn[100] /* was [2][50] */, nspn, isnhep[nmxhep], nsntry; - int decspn[50]; - int ncfl[50], spcopt; -}; -extern Hwspin_t* gHwspin; - -struct Hwstau_t { - int jak1, jak2, itdkrc, ifphot; -}; - -extern Hwstau_t* gHwstau; -//end v6400 adds - - -// v6500 - -struct Hwgupr_t { - double lhwgt[100], lhwgts[100], lhmxsm, lhxsct[100], lhxerr[100], lhxmax[100]; - int lhiwgt[100], ityplh, lhnevt[100]; - int lhsoft, lhglsf; -}; -extern Hwgupr_t* gHwgupr; - -struct Hw6500_t { - int prespl; -}; -extern Hw6500_t* gHw6500; - -//end v6500 adds - -// v6504 - -struct Hw6504_t { - int itoprd; -}; -extern Hw6504_t* gHw6504; - -//end v6504 adds - -// v6506 - -struct Hw6506_t { - double pdfx0, pdfpow; -}; -extern Hw6506_t* gHw6506; - -//end v6506 adds - -// v6510 - -struct Hw6510_t { - int ndetry; -}; -extern Hw6510_t* gHw6510; - -//end v6510 adds - -// v6520 - -struct Hw6520_t { - double dqxtra; - int trunsh, ptveto; -}; -extern Hw6520_t* gHw6520; - -//end v6520 adds - -// Jimmy common blocks - -struct Jmparm_t { - double ptjim, ygamma, jmzmin, jmrad[264], phad, jmu2, jmv2, jmarry[17][106], nlost, totscat; - int anomoff, jcmvar, jmueo, jmptyp[117], jmbug, fn_type, msflag, maxmstry; -}; -extern Jmparm_t* gJmparm; - -// end Jimmy common blocks - -// common for PDF information -struct Hrwpdf_t { - double x1, x2, q; - int id1, id2, idpdf1, idpdf2; -}; -extern Hrwpdf_t* gHrwpdf; - - -// struct Hwumsc_t { -// int lhwout; -// } ; - -// extern Hwumsc_t* gHwumsc; - - - -#endif diff --git a/Generators/Herwig_i/Herwig_i/wgtacp.h b/Generators/Herwig_i/Herwig_i/wgtacp.h deleted file mode 100644 index c3fc89f46947bcbed76692a8275f089547f19873..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/Herwig_i/wgtacp.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef WGTACP_h -#define WGTACP_h -#include <vector> - -extern "C" { - void* wgtacp_address_(); -} - -/** -@class Wgtacp.hh - -@brief Class definition for Wgtacp common block. - -@author Jan Kotanski -*/ - -class Wgtacp { -public: - Wgtacp(); - ~Wgtacp(); - - inline void init(); // inlined for speed of access (small function) - - inline double wgtacp(int i); - inline int userwgts(); - -private: - struct WGTACP; - friend struct WGTACP; - - enum { - WgtacpSize = 28 - }; - - struct WGTACP - { - double wgtacp[WgtacpSize]; - int userwgts; - }; - - static WGTACP* s_wgtacp; -}; - -#include "Herwig_i/wgtacp.icc" - -#endif - diff --git a/Generators/Herwig_i/Herwig_i/wgtacp.icc b/Generators/Herwig_i/Herwig_i/wgtacp.icc deleted file mode 100644 index 2300e59960f16a7a7de79771284ddc5a439abce8..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/Herwig_i/wgtacp.icc +++ /dev/null @@ -1,23 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// Inline implementations for Wgtacp - -// initialise pointer -void Wgtacp::init(){ - if ( !s_wgtacp ) { - s_wgtacp = static_cast< WGTACP* >( wgtacp_address_() ); - } -} - -double Wgtacp::wgtacp(int i){ - init(); - return s_wgtacp->wgtacp[i]; -} - -int Wgtacp::userwgts(){ - init(); - return s_wgtacp->userwgts; -} - diff --git a/Generators/Herwig_i/doc/Dpemc_i.pdf b/Generators/Herwig_i/doc/Dpemc_i.pdf deleted file mode 100644 index 97a58f1852fd0e6db3f41dd76442706ea6d7f640..0000000000000000000000000000000000000000 Binary files a/Generators/Herwig_i/doc/Dpemc_i.pdf and /dev/null differ diff --git a/Generators/Herwig_i/doc/Dpemc_i.tex b/Generators/Herwig_i/doc/Dpemc_i.tex deleted file mode 100644 index 6e2edc26d9496deea42fc1fea0afc908e785f37d..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/doc/Dpemc_i.tex +++ /dev/null @@ -1,48 +0,0 @@ -\documentclass[11pt]{article} -\newdimen\SaveHeight \SaveHeight=\textheight -\textwidth=6.5in -\textheight=8.9in -\textwidth=6.5in -\textheight=9.0in -\hoffset=-.5in -\voffset=-1in -\def\topfraction{1.} -\def\textfraction{0.} -\def\topfraction{1.} -\def\textfraction{0.} - -\begin{document} -\title{Dpemc\_i: An interface between Dpemc and Athena} -\author{ Vojtech Juranek (Vojtech.Juranek@cern.ch)} -\date{March, 2006} - -\maketitle - -This package runs Dpemc from within Athena, puts the events into the -transient store in HepMC format. -As Dpemc is an extension to Heriwg, the user should read documentation of Herwig\_i interface. - -The module is activated from the jobOptions service. See the example in {\bf Generators/Herwig\_i/share/jobOptions.dpemc.py }. -The following is needed if you wish to run Dpemc -\begin{verbatim} -theApp.DLLs += [ "Dpemc\_i" ] -theApp.TopAlg = ["Dpemc"] -\end{verbatim} -The parameters are passed via the following line in the jobOptions.py -file. -\begin{verbatim} -Dpemc.DpemcCommand = ["variable index value"] -\end{verbatim} -In addition to Herwig variables there are several variables, which can be changed. -The list of Dpemc variables that can be changed is as follows: -{\bf -typepr, -typint, -gapspr, -prospr, -cdffac, -nstru -}. -For more details see http://boonekam.home.cern.ch/boonekam/dpemc.htm . - -\end{document} diff --git a/Generators/Herwig_i/doc/Herwig.pdf b/Generators/Herwig_i/doc/Herwig.pdf deleted file mode 100644 index 0534d625c138303809e9b028afa28962166d25d6..0000000000000000000000000000000000000000 Binary files a/Generators/Herwig_i/doc/Herwig.pdf and /dev/null differ diff --git a/Generators/Herwig_i/doc/Herwig.tex b/Generators/Herwig_i/doc/Herwig.tex deleted file mode 100644 index 8fa3d4cc85b529dd7cd993cccfe310f47748c5ce..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/doc/Herwig.tex +++ /dev/null @@ -1,186 +0,0 @@ -\documentclass[11pt]{article} -\newdimen\SaveHeight \SaveHeight=\textheight -\textwidth=6.5in -\textheight=8.9in -\textwidth=6.5in -\textheight=9.0in -\hoffset=-.5in -\voffset=-1in -\def\topfraction{1.} -\def\textfraction{0.} -\def\topfraction{1.} -\def\textfraction{0.} -\begin{document} -\title{Herwig\_i: An interface between HERWIG/JIMMY and Athena} -\author{ -Ian Hinchliffe (I\_Hinchliffe@lbl.gov), \\ -Georgios Stavropoulos (George.Stavropoulos@cern.ch) \\ -Jon Butterworth (J.Butterworth@ucl.ac.uk)} -%\today - -\maketitle - -\noindent -This package runs HERWIG, with optional underlying event simulation -from JIMMY, from within Athena, puts the events into the transient -store in HepMC format. See the GeneratorModules documentation for -general information. The note refers only to HERWIG specific -material. The External/Herwig package is used to set up the paths to -the HERWIG library. The current HERWIG version is 6.510, and the -current JIMMY version is 4.31. - -Note that all parameters passed to HERWIG are in the units specified -in the HERWIG manual. In particular, energies and masses are in GeV, -not the standard atlas units of MeV. - -The module is activated from the jobOptions service. See the example in -\begin{verbatim} -Generators/Herwig\_i/share/jobOptions.herwig.py -\end{verbatim} -which leaves JIMMY turned off, and -\begin{verbatim} -Generators/Herwig\_i/share/jobOptions.jimmy.py -\end{verbatim} -for an example to run with it on. Note that it is recommended to turn -JIMMY on and leave the internal HERWIG soft underlying event turned -off, if you want to get a more realistic underlying event. - -The HERWIG parameters are set from the job options service. -The following is needed if you wish to run HERWIG -\begin{verbatim} -theApp.DLLs += [ "Herwig_i" ] -theApp.TopAlg = ["Herwig"] -\end{verbatim} -The parameters are passed via the following line in the jobOptions.py -file. -\begin{verbatim} -Herwig.HerwigCommand = ["variable index value"] -\end{verbatim} -Here {\bf variable} is a valid HERWIG variable. Consult the HERWIG -documentation for the variable names and what they do. If the {\bf - variable} is an array, {\bf index} specifies the entry to be -changed. {\bf value} is the value of the variable. For example -\begin{verbatim} -Herwig.HerwigCommand = ["iproc 1499","modpdf 10042", "autpdf HWLHAPDF"] -\end{verbatim} -produces $W$ bosons using the CTEQ structure functions. {\bf note that -all variable names are lower case, parameter values are case sensitive -(CTEQ in this example).} -\begin{verbatim} -Herwig.HerwigCommand = ["iproc 2150","modpdf 10042", "autpdf HWLHAPD -", "ptmin 100.", "ptmax 200.", "emmin 80.", "emmax 100."] -AtRndmGenSvc.Seeds = ["HERWIG 390020611 821000366", "HERWIG_INIT -820021 2347532"] -\end{verbatim} -produces $Z+jet$ events and resets the random number seeds. Note that -the random number seeds are set by the Athena random number service. -All variables that are marked as settable by users in the HERWIG -Manual can be changed. Please report any bugs. - -\medskip - -\subsection*{Note on using JIMMY for the underyling event} - -\noindent -JIMMY is developed as a plug-and-play add-on of HERWIG. It is turned -on by setting the variable {\tt msflag = 1}. The following, JIMMY -specific, variables may also be set: jmbug, ptjim, and jmueo which are -documented on the external JIMMY package documentation page: - -{\tt http://projects.hepforge.org/jimmy/ }. - -\subsection*{Note regarding SUSY} - -\noindent -For simulation of a SUSY process, ISAWIG must first be run to generate -an intput file. ISAWIG is a standalone program \cite{isawig}. -The name of this file is then passed with - -\begin{verbatim} -Herwig.HerwigCommand=["susyfile myfile"] -\end{verbatim} -where myfile is the name of your input file. - -\subsection*{Interface to TAUOLA and PHOTOS} - -\noindent -HERWIG is interfaced to TAUOLA and PHOTOS in a different way than the -other Generator Modules (Pythia, etc). To activate TAUOLA and PHOTOS -in HERWIG you simply need to add in you jobOptions file -\begin{verbatim} -Herwig.HerwigCommand += ["taudec TAUOLA"] -\end{verbatim} -For more information on how HERWIG works with TAUOLA, please refer to -the HERWIG manual. - -\subsection*{Random Numbers} - -\noindent -Herwig\_i/Herwig.cxx is using the AtRndmGenSvc Athena Service to -provide to HERWIG (via the hwrgen function, found in -Herwig\_i/src/hwrgen.F) the necessary random numbers. This service is -using the RanecuEngine of CLHEP, and is based on the ``stream'' logic, -each stream being able to provide an idependent sequence of random -numbers. Herwig.cxx is using two streams: HERWIG\_INIT and HERWIG. The -first stream is used to provide random numbers for the initialization -phase of HERWIG and the second one for the event generation. The user -can set the initial seeds of each stream via the following option in -the jobOption file. - -\begin{verbatim} -AtRndmGenSvc.Seeds = [``HERWIG_INIT 2345533 9922199'', ``HERWIG 5498921 659091''] -\end{verbatim} - - - -The above sets the seeds of the HERWIG\_INIT stream to 2345533 and -9922199 and of the HERWIG one to 5498921 and 659091. If the user will -not set the seeds of a stream then the AtRndmGenSvc will use default -values. - -The seeds of the Random number service are saved for each event in -the HepMC Event record and they are printed on screen by DumpMC. In -this way an event can be reproduced easily. The user has to rerun the -job by simply seting the seeds of the HERWIG stream (the seeds of the -HERWIG\_INIT stream should stay the same) to the seeds of that event. - -Additionaly the AtRndmGenSvc is dumping into a file (AtRndmGenSvc.out) -the seeds of all the streams at the end of the job. This file can be -read back by the service if the user set the option -{\tt AtRndmGenSvc.ReadFromFile = true;} -(default = false). In this case the file -AtRndmGenSvc.out is read and the streams saved in this file are -created with seeds as in this file. The name of the file to be read -can be set by the user via the option -{\tt AtRndmGenSvc.FileToRead = MyFileName;} -The above file should also be written out when a job crashes. -The above options are contained in -{\tt Herwig\_i/share/jobOptions.herwig.py}. - -\subsection*{Note on hadronizing parton level generated events from Les Houches Type generators} - -This is supported by Herwig, as explained in Chapter 9.1 of the 6.5 Herwig -manual). External procesess usually read a file containting events. -At present several externals are available, AcerMC, Alpgen, McAtNlo, -MadCUP, MadGraph, GR@PPA, and Charybdis. To find out how to run these -external processes please refer to the documentation of these generators. - -\subsection*{Note on LHAPDF structure functions} - -\noindent -In the case you want to run HERWIG with the LHAPDF structure functions -you need to set the autpdf variable to HWLHAPDF and the modpdf one to -the LHAPDF set/member index (see the documentation of the -Generators/Lhapdf\_i package for the LHAPDF set/member index -settings). - -\begin{thebibliography}{99} - \bibitem{isawig}http://www-thphys.physics.ox.ac.uk/users/PeterRichardson/HERWIG/isawig.html -\end{thebibliography} - -\end{document} - - - - - diff --git a/Generators/Herwig_i/doc/Jimmy.pdf b/Generators/Herwig_i/doc/Jimmy.pdf deleted file mode 100644 index e1955fcf48851f2b4244b1e4b8448500b7b6a2f2..0000000000000000000000000000000000000000 Binary files a/Generators/Herwig_i/doc/Jimmy.pdf and /dev/null differ diff --git a/Generators/Herwig_i/doc/packagedoc.h b/Generators/Herwig_i/doc/packagedoc.h deleted file mode 100644 index c057ed32f73dd621d84f9426c2bd0889e4916cef..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/doc/packagedoc.h +++ /dev/null @@ -1,32 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -/** - - <i> - -The herwig interface documentation is in pdf format, have a look at - -https://svnweb.cern.ch/trac/atlasoff/browser/Generators/Herwig_i/trunk/doc/Herwig.pdf - -This package also contains the interface to run the Dpemc generator, an extension to Herwig. Have a look at Herwig_i/share/jobOptions.dpemc.py for an example. The Dpemc variables that can be changed include typepr, typint, gapspr, prospr, cdffac, nstru. For more details see http://boonekam.home.cern.ch/boonekam/dpemc.htm - -This package also contains an interface between Jimmy and Athena. It puts the events into the transient store in HepMC format. Jimmy is developed as a plug-and-play add-on of Herwig. Ther user of the ATLAS Jimmy interface should read the documentation of the Herwig_i interface to understand how to set the herwig parameters, by replacing the word Herwig with the word Jimmy in Herwig_i's documentation. The Jimmy_i interface provides in addition the possibility to set the following, Jimmy specific, variables: msflag, jmbug, ptjim, and jmueo which are documented on the external Jimmy package documentation page in http://hepforge.cedar.ac.uk/jimmy . There is an example jobOptions file, see Generators/Herwig_i/share/jobOptions.jimmy.py - -</i> -@author - -Judith Katzy (Jan 2008) -updated E.M.Lobodzinska (Jun 2009) - -Vojtech Juranek for Dpemc - -Georgios Stavropoulos for Jimmy - -@page Herwig_i_page - - - - -*/ diff --git a/Generators/Herwig_i/share/JimmyZee.rtt.py b/Generators/Herwig_i/share/JimmyZee.rtt.py deleted file mode 100644 index 6c24f1af94542b989554a08bbc32c35ee4958bdb..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/share/JimmyZee.rtt.py +++ /dev/null @@ -1,78 +0,0 @@ -############################################################### -# -# Job options file -# -#============================================================== -# Private Application Configuration option -from AthenaCommon.AppMgr import ServiceMgr -ServiceMgr.MessageSvc.OutputLevel = DEBUG - -#-------------------------------------------------------------- -# Event related parameters -#-------------------------------------------------------------- -# Number of events to be processed (default is 10) -theApp.EvtMax = 5 -#-------------------------------------------------------------- -# Algorithms Private Options -#-------------------------------------------------------------- -from AthenaServices.AthenaServicesConf import AtRndmGenSvc -ServiceMgr += AtRndmGenSvc() -ServiceMgr.AtRndmGenSvc.Seeds = ["JIMMY 390020611 821000366", "JIMMY_INIT 820021 2347532"] - -from AthenaCommon.AlgSequence import AlgSequence -job=AlgSequence() -from Herwig_i.Herwig_iConf import Herwig -job +=Herwig() -job.Herwig.HerwigCommand = [ "iproc 11351", - "modpdf 10042", - "autpdf HWLHAPDF", - "emmin 60.", - "msflag 1", - "jmbug 0", - "jmueo 1", - "ptjim 4.91", - "jmrad 73 1.8", - "pltcut 0.0000000000333", - "ptmin 10.", - "prsof 0", - "rmass 198 80.425", - "rmass 199 80.425", - "rmass 200 91.19", - "gamw 2.124", - "gamz 2.495", - "taudec TAUOLA", - "clpow 1.20"] - -from Tauola_i.Tauola_iConf import Tauola -job +=Tauola() -job.Tauola.TauolaCommand = [ "tauola polar 1", - "tauola radcor 1", - "tauola phox 0.01", - "tauola dmode 0", - "tauola jak1 0", - "tauola jak2 0"] - -from Photos_i.Photos_iConf import Photos -job +=Photos() -job.Photos.PhotosCommand = [ "photos pmode 1", - "photos xphcut 0.01", - "photos alpha -1.", - "photos interf 1", - "photos isec 1", - "photos itre 0", - "photos iexp 1", - "photos iftop 0"] - -from GeneratorFilters.GeneratorFiltersConf import LeptonFilter -job +=LeptonFilter() -job.LeptonFilter.Ptcut = 10000. -job.LeptonFilter.Etacut = 2.7 - -from TruthExamples.TruthExamplesConf import DumpMC -job += DumpMC() - -#============================================================== -# -# End of job options file -# -############################################################### diff --git a/Generators/Herwig_i/share/jobOptions.dpemc.py b/Generators/Herwig_i/share/jobOptions.dpemc.py deleted file mode 100644 index 4da9cdb414f14e0cd34a99269b196730da236415..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/share/jobOptions.dpemc.py +++ /dev/null @@ -1,36 +0,0 @@ -############################################################### -# -# Job options file -# -#============================================================== -#-------------------------------------------------------------- -# General Application Configuration options -#-------------------------------------------------------------- -include( "AthenaCommon/Atlas_Gen.UnixStandardJob.py") -include( "PartPropSvc/PartPropSvc.py" ) -#-------------------------------------------------------------- -# Private Application Configuration options -#-------------------------------------------------------------- -theApp.ExtSvc += ["AtRndmGenSvc"] -# Set output level threshold (2=DEBUG, 3=INFO, 4=WARNING, 5=ERROR, 6=FATAL ) -MessageSvc = Service( "MessageSvc" ) -MessageSvc.OutputLevel = 3 -#-------------------------------------------------------------- -# Event related parameters -#-------------------------------------------------------------- -theApp.EvtMax = 10 -# Generator fragment - the following 2 lines are needed to invoke Dpemc: - -theApp.Dlls += [ "Dpemc_i","TruthExamples"] -theApp.TopAlg = ["Dpemc","DumpMC"] - -AtRndmGenSvc = Service( "AtRndmGenSvc" ) -AtRndmGenSvc.Seeds = ["DPEMC 390020611 821000366", "DPEMC_INIT 820021 2347532"] -Dpemc = Algorithm( "Dpemc" ) -# parameters are passed via the following line: -Dpemc.DpemcCommand = ["typepr EXC","typint QCD","iproc 9905","gapspr 0.03","prospr 0.9","cdffac 3.8","nstru 11","ifit 2"] -# -# -# End of job options file -# -############################################################### diff --git a/Generators/Herwig_i/share/jobOptions.herwig.filter.histogram.py b/Generators/Herwig_i/share/jobOptions.herwig.filter.histogram.py deleted file mode 100644 index 804f45f411b571b917c5f5e4842f0d7e4b2d65ba..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/share/jobOptions.herwig.filter.histogram.py +++ /dev/null @@ -1,61 +0,0 @@ -############################################################### -# -# Job options file -# -#============================================================== -#-------------------------------------------------------------- -# General Application Configuration options -#-------------------------------------------------------------- -import AthenaCommon.AtlasUnixGeneratorJob - -from AthenaCommon.AppMgr import theApp -from AthenaCommon.AppMgr import ServiceMgr - -# make sure we are loading the ParticleProperty service -from PartPropSvc.PartPropSvcConf import PartPropSvc -ServiceMgr += PartPropSvc() - -#-------------------------------------------------------------- -# Private Application Configuration options -#-------------------------------------------------------------- -from AthenaCommon.AlgSequence import AlgSequence -job=AlgSequence() - -from Herwig_i.Herwig_iConf import Herwig -from TruthExamples.TruthExamplesConf import HistSample -from GeneratorFilters.GeneratorFiltersConf import ZtoLeptonFilter -from GaudiAlg.GaudiAlgConf import Sequencer - -theApp.HistogramPersistency = "HBOOK" -job += Sequencer("Generator") -job.Generator.Members = ["Herwig", "ZtoLeptonFilter", "HistSample"] -# this single should do the same -#job += Sequencer("Generator",Members=["Herwig", "ZtoLeptonFilter", "HistSample"]) - -from GaudiSvc.GaudiSvcConf import HistogramPersistencySvc -ServiceMgr += HistogramPersistencySvc() -ServiceMgr.HistogramPersistencySvc.OutputFile = "herwig.hbook" -ServiceMgr.NTupleSvc.Output = [ "FILE1 DATAFILE='herwigtuple1.hbook' TYP='HBOOK' OPT='NEW'" ] - -# Set output level threshold (2=DEBUG, 3=INFO, 4=WARNING, 5=ERROR, 6=FATAL ) -ServiceMgr.MessageSvc.OutputLevel = FATAL -#-------------------------------------------------------------- -# Event related parameters -#-------------------------------------------------------------- -# Number of events to be processed (default is 10) -theApp.EvtMax = 11000 - -#-------------------------------------------------------------- -# Algorithms Private Options -#-------------------------------------------------------------- -job += Herwig() -job.Herwig.HerwigCommand = ["iproc 2150", "modpdf 10042", "autpdf HWLHAPDF", "ptmin 100.", "ptmax 200.", "emmin 80.", "emmax 100.", "msflag 0"] - -#--------------------------------------------------------------- -# Ntuple service output -#--------------------------------------------------------------- -#============================================================== -# -# End of job options file -# -############################################################### diff --git a/Generators/Herwig_i/share/jobOptions.herwig.py b/Generators/Herwig_i/share/jobOptions.herwig.py deleted file mode 100644 index 67066e6c0f447a5cb9077e257670ff9fe8f38c5d..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/share/jobOptions.herwig.py +++ /dev/null @@ -1,36 +0,0 @@ -############################################################### -# -# Job options file -# -#============================================================== -#-------------------------------------------------------------- -# Private Application Configuration option -from AthenaCommon.AppMgr import ServiceMgr -ServiceMgr.MessageSvc.OutputLevel = DEBUG - -#-------------------------------------------------------------- -# Event related parameters -#-------------------------------------------------------------- -# Number of events to be processed (default is 10) -theApp.EvtMax = 5 -#-------------------------------------------------------------- -# Algorithms Private Options -#-------------------------------------------------------------- -from AthenaServices.AthenaServicesConf import AtRndmGenSvc -ServiceMgr += AtRndmGenSvc() -ServiceMgr.AtRndmGenSvc.Seeds = ["HERWIG 390020611 821000366", "HERWIG_INIT 820021 2347532"] - -from AthenaCommon.AlgSequence import AlgSequence -job=AlgSequence() -from Herwig_i.Herwig_iConf import Herwig -job +=Herwig() -job.Herwig.HerwigCommand = ["iproc 1500","beam2type P","beam1type P", "beam1energy 7000", "modpdf 10042", "autpdf HWLHAPDF", "msflag 0", "tlout -10000000."] - -from TruthExamples.TruthExamplesConf import DumpMC -job += DumpMC() - -#============================================================== -# -# End of job options file -# -############################################################### diff --git a/Generators/Herwig_i/share/jobOptions.herwigrpv.py b/Generators/Herwig_i/share/jobOptions.herwigrpv.py deleted file mode 100644 index 937013ec7d1e014a44ac147d3ce77a4ba9f2c410..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/share/jobOptions.herwigrpv.py +++ /dev/null @@ -1,36 +0,0 @@ -############################################################### -# -# Job options file -# -#============================================================== -#-------------------------------------------------------------- -# Private Application Configuration option -from AthenaCommon.AppMgr import ServiceMgr -ServiceMgr.MessageSvc.OutputLevel = DEBUG - -#-------------------------------------------------------------- -# Event related parameters -#-------------------------------------------------------------- -# Number of events to be processed (default is 10) -theApp.EvtMax = 5 -#-------------------------------------------------------------- -# Algorithms Private Options -#-------------------------------------------------------------- -from AthenaServices.AthenaServicesConf import AtRndmGenSvc -ServiceMgr += AtRndmGenSvc() -ServiceMgr.AtRndmGenSvc.Seeds = ["HERWIG 390020611 821000366", "HERWIG_INIT 820021 2347532"] - -from AthenaCommon.AlgSequence import AlgSequence -job=AlgSequence() -from Herwig_i.HerwigRpv_iConf import HerwigRpv -job +=HerwigRpv() -job.HerwigRpv.HerwigCommand = ["iproc 11500","modpdf 10042", "autpdf HWLHAPDF", "msflag 1", "jmbug 0", "ptmin 10.", "iprint 2"] - -#from TruthExamples.TruthExamplesConf import DumpMC -#job += DumpMC() - -#============================================================== -# -# End of job options file -# -############################################################### diff --git a/Generators/Herwig_i/share/jobOptions.jimmy.py b/Generators/Herwig_i/share/jobOptions.jimmy.py deleted file mode 100644 index bd777d2f8f1c6bf93888d0cc6c5ef9c9cb00b335..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/share/jobOptions.jimmy.py +++ /dev/null @@ -1,38 +0,0 @@ -############################################################### -# -# Job options file -# -#============================================================== -#-------------------------------------------------------------- -# Private Application Configuration option -from AthenaCommon.AppMgr import ServiceMgr -ServiceMgr.MessageSvc.OutputLevel = DEBUG - -#-------------------------------------------------------------- -# Event related parameters -#-------------------------------------------------------------- -# Number of events to be processed (default is 10) -theApp.EvtMax = 5 -#-------------------------------------------------------------- -# Algorithms Private Options -#-------------------------------------------------------------- -from AthenaServices.AthenaServicesConf import AtRndmGenSvc -ServiceMgr += AtRndmGenSvc() -ServiceMgr.AtRndmGenSvc.Seeds = ["HERWIG 390020611 821000366", "HERWIG_INIT 820021 2347532"] - -from AthenaCommon.AlgSequence import AlgSequence -job=AlgSequence() -from Herwig_i.Herwig_iConf import Herwig -job +=Herwig() -job.Herwig.HerwigCommand = ["iproc 11500","modpdf 10042", "autpdf HWLHAPDF", "msflag 1", "jmbug 0", "ptmin 10."] - -job.Herwig.UpdateHadronStatCode = True - -from TruthExamples.TruthExamplesConf import DumpMC -job += DumpMC() - -#============================================================== -# -# End of job options file -# -############################################################### diff --git a/Generators/Herwig_i/src/Address.cxx b/Generators/Herwig_i/src/Address.cxx deleted file mode 100644 index 6116a0a7d8ad0724807841e850d41e7227884026..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/src/Address.cxx +++ /dev/null @@ -1,14 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// Sept 09 1997 P.Murat (CDF) -// this routine is supposed to be called from FORTRAN, it returns an -// address of its parameter -// revision history: -// ----------------- -//------------------------------------------------------------------------------ -extern "C" void* address_(void* var) { - return var; -} - diff --git a/Generators/Herwig_i/src/Address_c.cxx b/Generators/Herwig_i/src/Address_c.cxx deleted file mode 100644 index 826baf504a82b53c370e035d64bc7bac94500eb6..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/src/Address_c.cxx +++ /dev/null @@ -1,14 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// Sept 09 1997 P.Murat (CDF) -// this routine is supposed to be called from FORTRAN, it returns an -// address of its parameter -// revision history: -// ----------------- -//------------------------------------------------------------------------------ -extern "C" void* adressc_(void* var) { - return var; -} - diff --git a/Generators/Herwig_i/src/Address_cx.cxx b/Generators/Herwig_i/src/Address_cx.cxx deleted file mode 100644 index 94465cb62d098ed3beae62be54efd90b05122cc2..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/src/Address_cx.cxx +++ /dev/null @@ -1,15 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// Sept 09 1997 P.Murat (CDF) -// this routine is supposed to be called from FORTRAN, it returns an -// address of its parameter -// revision history: -//new version for complex -- Ian Hinchliffe -// ----------------- -//------------------------------------------------------------------------------ -extern "C" void* adrescx_(void* var) { - return var; -} - diff --git a/Generators/Herwig_i/src/Address_f.cxx b/Generators/Herwig_i/src/Address_f.cxx deleted file mode 100644 index 6b5bacc8bf1587ce342322ec14fe57a73e9303a3..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/src/Address_f.cxx +++ /dev/null @@ -1,14 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// Sept 09 1997 P.Murat (CDF) -// this routine is supposed to be called from FORTRAN, it returns an -// address of its parameter -// revision history: -// ----------------- -//------------------------------------------------------------------------------ -extern "C" void* adressf_(void* var) { - return var; -} - diff --git a/Generators/Herwig_i/src/Address_i.cxx b/Generators/Herwig_i/src/Address_i.cxx deleted file mode 100644 index fa7a9f1489eeb05052535c4607b30fe5537b448c..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/src/Address_i.cxx +++ /dev/null @@ -1,14 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// Sept 09 1997 P.Murat (CDF) -// this routine is supposed to be called from FORTRAN, it returns an -// address of its parameter -// revision history: -// ----------------- -//------------------------------------------------------------------------------ -extern "C" void* adressi_(void* var) { - return var; -} - diff --git a/Generators/Herwig_i/src/Address_lg.cxx b/Generators/Herwig_i/src/Address_lg.cxx deleted file mode 100644 index d5712c57c8e911e87bb38500b8880aa9ae74c9f1..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/src/Address_lg.cxx +++ /dev/null @@ -1,13 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// this routine is supposed to be called from FORTRAN, it returns an -// address of its parameter -// revision history: -// ----------------- -//------------------------------------------------------------------------------ -extern "C" void* adreslg_(void* var) { - return var; -} - diff --git a/Generators/Herwig_i/src/Herwig.cxx b/Generators/Herwig_i/src/Herwig.cxx deleted file mode 100644 index 1006ae3f0798def2bac56e7065a2194ad54322c5..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/src/Herwig.cxx +++ /dev/null @@ -1,951 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// ------------------------------------------------------------- -// File:Herwig.cxx -// Generators/Herwig.cxx Description: Allows the user -// to generate Herwig events and store the result in the -// Transient Store. -// -// AuthorList: -// Ian Hinchliffe: Initial Code October : 2000 -// Modeled after the CDF code by Marge Shapriro and Jeremy Lys -// Modified for Version 6.4 Jan 2002-- Ian Hinchliffe -// AcerMC 1.x interface added by Borut Paul Kersevan (February 2003) -// TAUOLA/PHOTOS interface added by Borut Paul Kersevan (October 2003) -// Jimmy merged in by Jon Butterworth (Feb 2007) -// Removed lots, but not all, of the irrelevant CDF stuff (JMB, Nov 2008) - -#include "Herwig_i/Herwig.h" -#include "TruthUtils/GeneratorName.h" -#include "GeneratorUtils/StringParse.h" - -#include "AthenaKernel/IAtRndmGenSvc.h" -#include "CLHEP/Random/RandFlat.h" - -#include "Herwig_i/herwig6520.h" -#include "Charybdis_i/CharybdisInterface.h" - -#include "HepMC/IO_HERWIG.h" -#include "HepMC/HEPEVT_Wrapper.h" - -#include "Herwig_i/Lhefinfo.h" -#include "Herwig_i/wgtacp.h" - -#include <cstdlib> - -using std::string; - - -#define evtcon evtcon_ -extern struct EvtconStruct { - int istg; -} evtcon; - - -// AtRndmGenSvc setup -namespace { - static IAtRndmGenSvc* p_AtRndmGenSvc; - static string herwig_stream = "HERWIG_INIT"; -} -// Provide Fortran-accessible RNG engines -extern "C" double atl_hwrgen_( int* /*idummy*/ ) -{ - CLHEP::HepRandomEngine* engine = p_AtRndmGenSvc->GetEngine(herwig_stream); - return CLHEP::RandFlat::shoot(engine); -} -extern "C" double atl_phoran_( int* /*idummy*/ ) -{ - CLHEP::HepRandomEngine* engine = p_AtRndmGenSvc->GetEngine("PHOTOS"); - return CLHEP::RandFlat::shoot(engine); -} -extern "C" float atl_ranmar_() -{ - CLHEP::HepRandomEngine* engine = p_AtRndmGenSvc->GetEngine("TAUOLA"); - return (float) CLHEP::RandFlat::shoot(engine); -} - - -// Declare C++-visible common block init function wrapper -void InitHerwigCommonBlocks(); - - -extern "C" { - - // In Herwig_i - void herwiginterface_(int* itopd); - void cdfreadsusy_(const char* ,int * , int); - - // Structure functions in Herwig - void hwsfun_(const double *, const double *, const int *, const int *, const double *, const int *); - - // In Herwig - // SUSY - void hwissp_(int *syunit); - - // Added for RPV 4-body decays (Sebastian Fleischmann/JMB) - void hwirpv_(); - // NB: if the RPV code is not linked, a dummy version is called. - - void hwuinc_(); - // void hwusta(int *tstab); - // void hwabeg_(); - void hweini_(); - void hwuine_(); - void hwupro_(); - void hwepro_(); - void hwbgen_(); - void hwdhob_(); - void hwcfor_(); - void hwcdec_(); - void hwdhad_(); - void hwdhvy_(); - void hwmevt_(); - void hwufne_(); - void hwefin_(); - void hwanal_(int *ihwcod); - void hwmsct_(int *abort); - void hwgpdg_(int *mconv); - void extproc_(int*); - - void upveto_(int*); - - void jminit_(); - void jmefin_(); - - // Charybdis fix - void charybdfix_(); - - // PDF information - void hwpdfinfo_(); - - // Alpgen termination - void alsfin_(); - -} - - -//////////////////////////////////////////////////////// - - -Atlas_HEPEVT* Herwig::s_atlas_HEPEVT = new Atlas_HEPEVT(); - - -//-------------------------------------------------------------------------- - - -Herwig::Herwig(const std::string& name, ISvcLocator* pSvcLocator) - : GenModule(name, pSvcLocator) -{ - // printing-out manually set x-section for the MetaData - m_Default_SetCrossSection=-1.0; - m_Default_xsscale=-99999; - //properties - declareProperty("HerwigCommand", m_herwigCommandVector); - declareProperty("CrossSectionScaleFactor", m_xsscale=m_Default_xsscale); - declareProperty("SetCrossSection",m_SetCrossSection=m_Default_SetCrossSection); - declareProperty("UpdateHadronStatCode", m_updateHadronStatCode=true); - - m_noshower_Parm = false; - m_nohadroniz_Parm = false; - m_itopd = 0; - m_ndetry = 0; - m_ExternalProcess = 0; -} - - -//-------------------------------------------------------------------------- - - -Herwig::~Herwig() { } - - -//------------------------------------------------------------- - - -AcerMC_acset& Herwig::acermc_acset() { - return m_acermc_acset; -} - - -//--------------------------------------------------------------------------- - - -// Initialise the listing output, parameter and decay data input streams -StatusCode Herwig::genInitialize() { - ATH_MSG_INFO("HERWIG INITIALISING.\n"); - - // Set up RNG service - /// @todo Use ServiceHandle + property method - static const bool CREATEIFNOTTHERE(true); - StatusCode RndmStatus = service("AtRndmGenSvc", p_AtRndmGenSvc, CREATEIFNOTTHERE); - if (!RndmStatus.isSuccess() || 0 == p_AtRndmGenSvc) { - ATH_MSG_ERROR("Could not initialize Random Number Service"); - return RndmStatus; - } - - // Default behaviour is to shower and hadronize - m_noshower_Parm = false; - m_nohadroniz_Parm = false; - - // Map Herwig common blocks to global C structures - HepMC::HEPEVT_Wrapper::set_sizeof_int(sizeof(int)); - HepMC::HEPEVT_Wrapper::set_sizeof_real(8); - HepMC::HEPEVT_Wrapper::set_max_number_entries(10000); - InitHerwigCommonBlocks(); - - // Default the top decay, beams and beam energies - gHwproc->pbeam1 = 7000.; // beam energies - gHwproc->pbeam2 = 7000.; // beam energies - m_itopd = 0; - memcpy(gHwbmch->part1, "P ", 8); - memcpy(gHwbmch->part2, "P ", 8); - // ALL other settings should be given after the call to hwigin (in herwiginterface) - - // Special loop over the input parameters to load iproc, beam type and beam energy - // before the call to herwiginterface_() - /// @todo Use a more normal loop! - CommandVector::const_iterator ic = m_herwigCommandVector.begin(); - do { - StringParse mystring(*ic); - string myvar = mystring.piece(1); - int myint1 = mystring.intpiece(2); - double myfl1 = mystring.numpiece(2); - string myvar2 = mystring.piece(2); - myvar2.resize(7, ' '); - if(myvar=="iproc") { - gHwproc->iproc = myint1; - } - else if(myvar=="beam1energy") { - gHwproc->pbeam1 = myfl1; - } - else if(myvar=="beam2energy") { - gHwproc->pbeam2 = myfl1; - } - else if(myvar=="topdec") { - m_itopd = myint1; - } - else if(myvar=="beam1type") { - strncpy(gHwbmch->part1,myvar2.c_str(),7); - } - else if(myvar=="beam2type") { - strncpy(gHwbmch->part2,myvar2.c_str(),7); - } - ic++; - } while (ic != m_herwigCommandVector.end()); - - - // Call Fortran routine to initialize Herwig common block - herwiginterface_(&m_itopd); - - // Set timeout and maximum number of errors to sensibe defaults - gHwevnt->maxer = 10000000; - gHwevnt->tlout = -10000000.0; - - m_ExternalProcess = 0; - - // No hardcoded defaults here!! - // - // Anything different from generator default should - // be set in job options. - - // Now read in all the parameter changes from the user - for (size_t i = 0; i < m_herwigCommandVector.size(); i++) { - ATH_MSG_INFO("Command is '" << m_herwigCommandVector[i] << "'"); - StringParse mystring(m_herwigCommandVector[i]); - string myvar = mystring.piece(1); - string myvar1 = mystring.piece(2); - int myint1 = mystring.intpiece(2); - int myint2 = mystring.intpiece(3); - double myfl1 = mystring.numpiece(2); - double myfl2 = mystring.numpiece(3); - if (myvar== "beam1type" || myvar== "beam2type" || - myvar== "beam1energy" || myvar== "beam2energy") { - // Beam types and energy already done. - } - // Process number for external processes set here. - else if (myvar=="iproc") { - if (myvar1 == "charybdis") { - gHwproc->iproc = -200; - m_ExternalProcess = CHARYBDIS; - } else if (myvar1 == "acermc") { - gHwproc->iproc = -600; - m_ExternalProcess = ACERMC; - } else if(myvar1 == "alpgen") { - gHwproc->iproc = -1400; - m_ExternalProcess = ALPGEN; - if (myint2 > 0) { - gHwproc->iproc -= myint2; - } - } else if (myvar1 == "madgraph") { - gHwproc->iproc = -950; - m_ExternalProcess = MADGRAPH; - } else if (myvar1 == "madcup") { - gHwproc->iproc = -800; - m_ExternalProcess = MADCUP; - } else if (myvar1 == "lhaext") { - gHwproc->iproc = -900; - m_ExternalProcess = LHAEXT; - } else if (myvar1 == "mcatnlo") { - gHwproc->iproc = -700; - m_ExternalProcess = MCATNLO; - } else if (myvar1 == "lhef") { - gHwproc->iproc = -100; - m_ExternalProcess = LHEF; - } else if (myvar1 == "horace") { - gHwproc->iproc = -300; - m_ExternalProcess = HORACE; - } else { - gHwproc->iproc=myint1; - } - extproc_(&m_ExternalProcess); - } - // AcerMC tt~ decay mode switching - else if (myvar=="acset12") { - if (gHwproc->iproc == -600) { - this->acermc_acset().acset12() = myint1; - ATH_MSG_INFO("mamy incjalizacje acera" << myint1); - } - } - - // ------- HWHARD common block - // Kinematic limits - else if (myvar == "ptmin") { gHwhard->ptmin = myfl1; } - else if (myvar == "ptmax") { gHwhard->ptmax = myfl1; } - else if (myvar == "emmin") { gHwhard->emmin = myfl1; } - else if (myvar == "emmax") { gHwhard->emmax = myfl1; } - else if (myvar == "q2min") { gHwhard->q2min = myfl1; } - else if (myvar == "ptpow") { gHwhard->ptpow = myfl1;} - - // ------- HWDIST common block - else if (myvar == "pltcut") { gHwdist->pltcut = myfl1; } - else if (myvar == "mixing") { gHwdist->mixing = myint1; } - - // ------- HWPRAM common block - else if (myvar == "ispac") { - gHwpram->ispac = myint1; - } else if (myvar == "qspac") { - gHwpram->qspac = myfl1; - } - else if (myvar=="azsoft") { - gHwpram->azsoft = (myvar1 != "false"); - ATH_MSG_INFO(" " << myvar << " is set to " << (gHwpram->azsoft ? "true" : "false")); - } - else if (myvar == "azspin") { - gHwpram->azspin = (myvar1 != "false"); - ATH_MSG_INFO(" " << myvar << " is set to " << (gHwpram->azspin ? "true" : "false")); - } - else if (myvar == "nospac") { - gHwpram->nospac = (myvar1 != "false"); - ATH_MSG_INFO(" " << myvar << " is set to " << (gHwpram->nospac ? "true" : "false")); - } - else if (myvar == "hardme") { - gHwpram->hardme = (myvar1 != "false"); - ATH_MSG_INFO(" " << myvar << " is set to " << (gHwpram->hardme ? "true" : "false")); - } - else if (myvar == "softme") { - gHwpram->softme = (myvar1 != "false"); - ATH_MSG_INFO(" " << myvar << " is set to " << (gHwpram->softme ? "true" : "false")); - } - - // weak parameters and widths - else if (myvar == "ncolo") { gHwpram->ncolo = myint1; } - else if (myvar == "nflav") { gHwpram->nflav = myint1; } - else if (myvar == "swein") { gHwpram->swein = myfl1; } - else if (myvar == "scabi") { gHwpram->scabi = myfl1; } - - // print options - else if (myvar == "prvtx") { gHwpram->prvtx = myint1; } - else if (myvar == "prndef"){ gHwpram->prndef = myint1; } - else if (myvar == "prntex"){ gHwpram->prntex = myint1; } - else if (myvar == "prnweb"){ gHwpram->prnweb = myint1; } - else if (myvar == "nprfmt"){ gHwpram->nprfmt = myint1; } - else if (myvar == "iprint"){ gHwpram->iprint = myint1; } - - // Widths - else if (myvar == "gamh") { gHwpram->gamh = myfl1; } - else if (myvar == "gamw") { gHwpram->gamw = myfl1; } - else if (myvar == "gamz") { gHwpram->gamz = myfl1; } - else if (myvar == "gamzp") { gHwpram->gamzp = myfl1; } // Z' - else if (myvar == "zprime") { - gHwpram->zprime = (myvar1 != "false"); - ATH_MSG_INFO(" " << myvar << " is set to " << (gHwpram->zprime ? "true" : "false")); - } - - else if (myvar == "effmin") { - gHwpram->effmin = myfl1; - } - else if (myvar == "psplt") { - gHwpram->psplt[0] = myfl1; - gHwpram->psplt[1] = myfl2; - } - else if (myvar == "cldir") { - gHwpram->cldir[0] = myint1; - gHwpram->cldir[1] = myint2; - } - else if (myvar == "clsmr") { - gHwpram->clsmr[0] = myfl1; - gHwpram->clsmr[1] = myfl2; - } - else if (myvar == "ensof") { gHwpram->ensof = myfl1;} - else if (myvar == "qcdlam"){ gHwpram->qcdlam = myfl1;} - else if (myvar == "clpow") { gHwpram->clpow = myfl1;} - else if (myvar == "prsof") { gHwpram->prsof = myfl1;} - else if (myvar == "ptrms") { gHwpram->ptrms = myfl1;} - else if (myvar == "vgcut") { gHwpram->vgcut = myfl1;} - else if (myvar == "vqcut") { gHwpram->vqcut = myfl1;} - else if (myvar == "vpcut") { gHwpram->vpcut = myfl1;} - // Allow user to set different PDF for each beam (this might be needed for - // non-LHC runs or photoproduction) - else if (myvar == "modpdf1") { gHwpram->modpdf[0] = myint1; } - else if (myvar == "modpdf2") { gHwpram->modpdf[1] = myint1; } - // If beam id not specified, assume both are the same PDF. - else if (myvar == "modpdf") { - gHwpram->modpdf[0] = myint1; - gHwpram->modpdf[1] = myint1; - } - - // HWPRCH common block - // allow user to use PDFs from different libraries for each beam - else if (myvar == "autpdf1") { - string autlocal = myvar1; - int nch = (autlocal.size()<20) ? autlocal.size() : 19; - for (int i=0; i<20; i++) { - if(i < nch) { - gHwprch->autpdf[0][i] = autlocal.data()[i]; - } else { - gHwprch->autpdf[0][i] = ' '; - } - } - } - else if (myvar == "autpdf2") { - string autlocal = myvar1; - int nch = (autlocal.size()<20) ? autlocal.size() : 19; - for (int i=0; i<20; i++) { - if(i < nch) { - gHwprch->autpdf[1][i] = autlocal.data()[i]; - } else { - gHwprch->autpdf[1][i] = ' '; - } - } - } - else if (myvar == "autpdf") { - string autlocal = myvar1; - int nch = (autlocal.size()<20) ? autlocal.size() : 19; - for (int i=0; i<20; i++) { - if(i < nch) { - gHwprch->autpdf[0][i] = autlocal.data()[i]; - gHwprch->autpdf[1][i] = autlocal.data()[i]; - } else { - gHwprch->autpdf[0][i] = ' '; - gHwprch->autpdf[1][i] = ' '; - } - } - } - - // output control and random numbers - else if (myvar == "maxer") { gHwevnt->maxer = myint1; } - else if (myvar == "maxpr") { gHwevnt->maxpr = myint1; } - - else if (myvar == "nrn") { - if (myint1 == 1) { - gHwevnt->nrn[0] = myint2; - } else if (myint1 == 2) { - gHwevnt->nrn[1] = myint2; - } - } - else if (myvar == "nowgt") { - /// @todo Why handled differently from other '=false' cases? - //if (myvar1 == "false") { gHwevnt->nowgt = false; } - gHwevnt->nowgt = (myvar1 != "false"); - ATH_MSG_INFO(" " << myvar << " is set to " << (gHwevnt->nowgt ? "true" : "false")); - } - else if (myvar == "wgtmax") { gHwevnt->wgtmax = myfl1; } - else if (myvar == "tlout") { gHwevnt->tlout = myfl1; } - - // Particle masses - else if (myvar == "rmass") { - if (myint1 > 0 && myint1 < 501) { - gHwprop->rmass[myint1] = myfl2; - } - } - - // Particle stability - else if (myvar == "rstab") { - if (myint1 > 0 && myint1 < 501) { - gHwupdt->rstab[myint1] = myint2; - } - } - - // Boson decay modes - else if (myvar == "modbos") { - if(myint1 > 0 && myint1 < 10) { - gHwbosc->modbos[myint1-1] = myint2; - } - } - - // SUSY filename - else if (myvar == "susyfile") { - m_read_Filesusy = myvar1; - } - - // Graviton stuff - else if (myvar == "grvlam") { gHwgrav->grvlam = myfl1; } - else if (myvar == "emgrv") { gHwgrav ->emgrv = myfl1; } - else if (myvar == "gamgrv") { gHwgrav->gamgrv = myfl1; } - - // version 6.506 stuff - else if (myvar == "pdfx0") { gHw6506->pdfx0 = myfl1; } - else if (myvar == "pdfpow") { gHw6506->pdfpow = myfl1; } - - // version 6.510 stuff - else if (myvar == "ndetry") { m_ndetry = myint1; } - - // version 6.520 stuff - else if (myvar == "trunsh") { - gHw6520->trunsh = (myvar1 != "false"); - //ATH_MSG_INFO(" " << myvar << " is set to " << (gHw6520->trunsh ? "true" : "false")); - } - - // Tauola switch - else if (myvar == "taudec") { - int nch = (myvar1.size() < 7) ? myvar1.size() : 6; - for (int i = 0; i < 6; i++) { - if(i < nch) { - gHwdspn->taudec[i] = myvar1.data()[i]; - } - } - } - - // Spin correlations menu - else if (myvar=="syspin") { gHwdspn->syspin = myint1; } - else if (myvar=="spcopt") { gHwspin->spcopt = myint1; } - - // Jimmy common blocks - else if (myvar == "msflag") { gJmparm->msflag = myint1; } - else if (myvar == "jmbug") { gJmparm->jmbug = myint1; } - else if (myvar == "ptjim") { gJmparm->ptjim = (double) myfl1; } - else if (myvar == "jmueo") { gJmparm->jmueo=myint1;} - else if (myvar == "jmrad") { - if (myint1 > 0 && myint1 < 264) { - gJmparm->jmrad[myint1-1] = myfl2; - } else { - ATH_MSG_ERROR("JMRAD ARRAY HAS ONLY 264 elements [1 to 264]"); - } - } - - // Charybdis parameters - added by nick brett - 04-02-05 - else if (myvar == "charyb") { ::WriteCharybdisParam(myint1, myint2, (double)myfl2); } - - // Colour singlet exchange parameters - added by James Monk 25.Apr.2008 - else if (myvar == "asfixd") { gHwhard->asfixd = myfl1; } - else if (myvar == "omega0") { gHwhard->omega0 = myfl1; } - else { - if (myvar != "topdec") { - ATH_MSG_WARNING("ERROR in HERWIG PARAMETERS: " << myvar << " is not a known variable name. " - << "It could be a typo on your part or a mistake in the Herwig_i code. " - << "NB. Not all variables are changeable"); - } - } - } - - // Save the HERWIG_INIT stream seeds.... - CLHEP::HepRandomEngine* engine = p_AtRndmGenSvc->GetEngine(herwig_stream); - const long* sip = engine->getSeeds(); - long int si1 = sip[0]; - long int si2 = sip[1]; - - // Special settings for Alpgen - if (m_ExternalProcess == ALPGEN) gHwevnt->maxpr = 4; - - // Special settings for SUSY - if ((gHwproc->iproc >= 3000 && gHwproc->iproc < 5000) || - (gHwproc->iproc >= 13000 && gHwproc->iproc < 15000)) { - int syunit = 66; - const string& fileName = m_read_Filesusy; - cdfreadsusy_(fileName.c_str(),&syunit,fileName.size()); - hwissp_(&syunit); - } - - // Added for RPV 4-body decays (Sebastian Fleischmann/JMB) - // NB: if the RPV code is not linked, a dummy version is called. - hwirpv_(); - ATH_MSG_INFO("mamy dalej"); - - hwuinc_(); // calculate herwig constants - ATH_MSG_INFO("mamy dalej stale"); - hweini_(); // initialise herwig event. - ATH_MSG_INFO("mamy incjalizacje zd. herwiga"); - jminit_(); // initialise jimmy event. - ATH_MSG_INFO("mamy incjalizacje jimmy"); - - // ... and set them back to the stream for proper save - p_AtRndmGenSvc->CreateStream(si1, si2, herwig_stream); - herwig_stream = "HERWIG"; - - return StatusCode::SUCCESS; -} - - -//--------------------------------------------------------------------------- - - -StatusCode Herwig::callGenerator() { - ATH_MSG_DEBUG("HERWIG generating"); - - bool goodev = false; - int abort = 1; - - // Save the random number seeds in the event - CLHEP::HepRandomEngine* engine = p_AtRndmGenSvc->GetEngine(herwig_stream); - const long* s = engine->getSeeds(); - m_seeds.clear(); - m_seeds.push_back(s[0]); - m_seeds.push_back(s[1]); - - while (!goodev && abort == 1) { - hwuine_(); // initialize event - if (m_ExternalProcess == ALPGEN) { - ATH_MSG_DEBUG("HERWIG/ALPGEN"); - hwepro_(); - // Store info for PDFInfo - hwpdfinfo_(); - - // Matching-driven veto - int ipveto = 0; - upveto_(&ipveto); - if (ipveto != 0) { - gHwevnt->ierror = -1; - ATH_MSG_INFO("EVENT KILLED BY UPVETO. EXECUTION CONTINUES"); - } - - if (evtcon.istg <= 0) { - hwbgen_(); // Generate parton cascade - // Do Jimmy underlying event if required. - abort = 0; - if (gJmparm->msflag == 1) { - hwmsct_(&abort); - } - if (abort == 0) { - hwdhob_(); // Do heavy quark decays - hwcfor_(); // Do cluster formation - hwcdec_(); // Do cluster decays - hwdhad_(); // Do unstable particle decays - hwdhvy_(); // Do heavy flavor decays - hwmevt_(); // Add soft underlying event - } - } - } else { - hwepro_(); // Generate hard process - // Store info for PDFInfo - hwpdfinfo_(); - - if (gHwproc->iproc == -200 ) { - charybdfix_(); //reset hard cms code to BH=40 - } - if (evtcon.istg <= 0) { - abort = 0; - if (!m_noshower_Parm) { - hwbgen_(); // Generate parton cascade - if (gJmparm->msflag == 1) { - hwmsct_(&abort); - } - if (abort == 0) { - hwdhob_(); // Do heavy quark decays - if (!m_nohadroniz_Parm) { - hwcfor_(); // Do cluster formation - hwcdec_(); // Do cluster decays - hwdhad_(); // Do unstable particle decays - hwdhvy_(); // Do heavy flavor decays - hwmevt_(); // Add soft underlying event - } - } - } - } - } - - // User event analysis if wanted - if (evtcon.istg > 0) { - std::cout << "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" << "\n" - << "!! " << generator_name(m_ExternalProcess) << " TERMINATES NORMALLY: NO MORE EVENTS IN FILE !!!" << "\n" - << "!! PLEASE IGNORE ANY ATHENA ERROR MESSAGES LIKE !!" << "\n" - << "!! AthenaEventLoopMgr ERROR Terminating event processing loop due to errors !!" << "\n" - << "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" << std::endl; - return StatusCode::FAILURE; - } - - if (abort == 0) { - hwufne_(); // Finish event - int ihwcod = 1; - hwanal_(&ihwcod); - if (gHwevnt->ierror == 0) { - goodev = true; - } else { //modified by T.Sasaki - goodev = false; - abort = 1; //for loop again - } - } - - } - - ATH_MSG_DEBUG("HERWIG generating done."); - return StatusCode::SUCCESS; -} - - -//--------------------------------------------------------------------------- - - -StatusCode Herwig::genFinalize() { - ATH_MSG_INFO("HERWIG ending."); - - // Don't call this again for AlpGen - if (m_ExternalProcess != ALPGEN) { - ATH_MSG_DEBUG("Call HWEFIN and HWAEND at endRun"); - hwefin_(); - } else { - if (evtcon.istg <= 0) { - alsfin_(); // when finished gracefully - } - } - if (gJmparm->msflag == 1) { - jmefin_(); - } - - // User terminal calculations if wanted - if (m_SetCrossSection==m_Default_SetCrossSection) - { - //always print out generator's version - std::cout << "MetaData: generator = Herwig " << HWVERSION << std::endl; - //always print out the non-scaled x-section - std::cout << "MetaData: cross-section (nb)= " << gHwevnt->avwgt << std::endl; - - //print out additional MetaData fields if cross-section scaling is requested - if (m_xsscale != m_Default_xsscale) - { - std::cout << "MetaData: cross-section*CrossSectionScaleFactor (nb)= " << gHwevnt->avwgt * m_xsscale << std::endl; - std::cout << "MetaData: CrossSectionScaleFactor = " << m_xsscale << std::endl; - } - } - else - { - std::cout << "Printing cross-section passed by SetCrossSection in JO: "<< std::endl; - std::cout << "MetaData: cross-section (nb)= " << m_SetCrossSection << std::endl; - } - - - // hwaend_(); - - return StatusCode::SUCCESS; -} - - -//--------------------------------------------------------------------------- - - -StatusCode Herwig::fillEvt(HepMC::GenEvent* evt) { - ATH_MSG_DEBUG("HERWIG Atlas_HEPEVT filling."); - store_Atlas_HEPEVT(); - - ATH_MSG_DEBUG("HERWIG filling."); - // Fill event into HepMC and transient store - HepMC::IO_HERWIG hepio; - hepio.fill_next_event(evt); - int pr_id = HERWIG + m_ExternalProcess + gHwproc->iproc; - if (gHwproc->iproc < 0) pr_id = HERWIG + m_ExternalProcess; - string taustring; - taustring.assign(gHwdspn->taudec,6); - if (taustring == "TAUOLA") pr_id += TAUOLA_PHOTOS; - evt->set_signal_process_id(pr_id); - evt->set_random_states(m_seeds); - - // Set beam particle status = 4 - if (evt->valid_beam_particles()) { - evt->beam_particles().first->set_status(4); - evt->beam_particles().second->set_status(4); - } else { - ATH_MSG_WARNING("NO VALID BEAM PARTICLES"); - } - - // Set PDF info - const int id1 = gHrwpdf->id1; - const int id2 = gHrwpdf->id2; - const double x1 = gHrwpdf->x1; - const double x2 = gHrwpdf->x2; - const double q = gHrwpdf->q; - // PDF id(s) - const int idPdf1 = gHrwpdf->idpdf1; - const int idPdf2 = gHrwpdf->idpdf2; - // Store x*Pdf(id,x,Q) in PdfInfo structure instead of Pdf ID(s) - - size_t idx1; - size_t idx2; - - - if(id1==21) - idx1=12; - else if(id1 >= 1 && id1 <= 6) - idx1=id1-1; - else if(id1 <= -1 && id1 >= -6) - idx1=5-id1; - else - idx1=100; - - if(id2==21) - idx2=25; - else if(id2 >= 1 && id2 <= 6) - idx2=id2+12; - else if(id2 <= -1 && id2 >= -6) - idx2=18-id2; - else - idx2=100; - - double xpdf1 = -999., - xpdf2 = -999.; - - int ld1=1; - int ld2=2; - int idh1=gHwevnt->idhw[ ld1-1 ]; - int idh2=gHwevnt->idhw[ ld2-1 ]; - int nset=0; - double disf[26]; - - if ( idx1 > 25 || idx2 > 25 ) { - ATH_MSG_WARNING( "PDF index out of range!" ); - } else { - - hwsfun_(&x1, &q, &idh1, &nset, &(disf[0]), &ld1); - hwsfun_(&x2, &q, &idh2, &nset, &(disf[13]), &ld2); - - xpdf1 = disf[ idx1 ]; - xpdf2 = disf[ idx2 ]; - } - - - if ( m_ExternalProcess == LHEF ) { - // for external (lhe) generators read pdf information from LHEFINFO common block (filled by Lhef_i) - Lhefinfo linfo; - - ATH_MSG_DEBUG("lhefinfo, id1: " << linfo.id1()); - ATH_MSG_DEBUG("lhefinfo, id2: " << linfo.id2()); - ATH_MSG_DEBUG("lhefinfo, x1: " << linfo.x1()); - ATH_MSG_DEBUG("lhefinfo, x2: " << linfo.x2()); - ATH_MSG_DEBUG("lhefinfo, scale: " << linfo.scalePdf()); - ATH_MSG_DEBUG("lhefinfo, xpdf1: " << linfo.xPdf1()); - ATH_MSG_DEBUG("lhefinfo, xpdf2: " << linfo.xPdf2()); - - HepMC::PdfInfo tmp_pdi( linfo.id1(), linfo.id2(), linfo.x1(), linfo.x2(), - linfo.scalePdf(), linfo.xPdf1(), linfo.xPdf2() ); - evt->set_pdf_info(tmp_pdi); - - } else { - HepMC::PdfInfo tmp_pdi( id1, id2, x1, x2, q, xpdf1, xpdf2, idPdf1, idPdf2 ); - evt->set_pdf_info( tmp_pdi ); - } - - ATH_MSG_DEBUG("pdfinfo: " - << evt->pdf_info()->id1() << ", " - << evt->pdf_info()->id2() << ", " - << evt->pdf_info()->x1() << ", " - << evt->pdf_info()->x2() << ", " - << evt->pdf_info()->scalePDF() << ", " - << evt->pdf_info()->pdf1() << ", " - << evt->pdf_info()->pdf2() << ", " - << evt->pdf_info()->pdf_id1() << ", " - << evt->pdf_info()->pdf_id2() ); - - // Set weights to +/-1 if we a generating unweighted events. - //(consider better way to deal with theMCATNLO case in future...) - if (gHwevnt->nowgt || m_ExternalProcess == MCATNLO){ - if (gHwevnt->evwgt < 0.) evt->weights().push_back(-1.); - else if (gHwevnt->evwgt > 0.) evt->weights().push_back(1.); - else if (gHwevnt->evwgt == 0.) ATH_MSG_WARNING("EVENT WEIGHT = 0 !!!!!!"); - } else { - evt->weights().push_back(gHwevnt->evwgt); - } - // Set user weights for WZ McAtNlo processes - if(m_ExternalProcess == MCATNLO){ - Wgtacp uwgts; - - if(uwgts.userwgts() != 0){ - // check if we have WW or WZ process (WZ only 10 weights .ne. -999, WW 28) - - //for(int i=0; i<uwgts.nElements(); i++){ - for(int i=0; i<uwgts.userwgts(); i++){ - evt->weights().push_back(uwgts.wgtacp(i)); -// std::cout << "wgh, wgtacp[" << i << "] = " << uwgts.wgtacp(i) << std::endl; - } - } - - ATH_MSG_DEBUG("McAtNlo userweghts: " << uwgts.userwgts()); - - // HepMC::WeightContainer tst_wgt; - // for(unsigned int i=0; i<evt->weights().size(); i++){ - // tst_wgt = evt->weights(); - // std::cout << "evt, weights[" << i << "] = " << tst_wgt[i] << std::endl; - // } - } - - if ( m_updateHadronStatCode ) { - ATH_MSG_INFO( "Hadron update" ); - updateStatusCode( evt ); - } - - // Convert cm->mm and GeV->MeV - //cmTomm(evt); - GeVToMeV(evt); - - return StatusCode::SUCCESS; -} - -void Herwig::updateStatusCode( HepMC::GenEvent *evt ) -{ - // loop over particles in event (put it to a filter? TODO) - for ( HepMC::GenEvent::particle_iterator p = evt->particles_begin(); p != evt->particles_end(); ++p ) { - HepPDT::ParticleID pid( (*p)->pdg_id() ); - - if ( pid.isHadron() ) { - HepMC::GenVertex *endVertex = (*p)->end_vertex(); - - int statusCode = (*p)->status(); - if ( endVertex && statusCode != 1 && statusCode != 4 ) { - - bool sameHadronFound = false; - for ( HepMC::GenVertex::particle_iterator child = endVertex->particles_begin( HepMC::family ); - child != endVertex->particles_end( HepMC::family ); ++child ) { - - if ( *child != *p ) { // remove current hadron from the list of children - if ( (*child)->pdg_id() == (*p)->pdg_id() ) { - sameHadronFound = true; - break; - } - } - } - - if ( !sameHadronFound ) { - (*p)->set_status( 2 ); - } - } // else - doesn't have end_vertex (status code=1) - } - } - -} - -void Herwig::store_Atlas_HEPEVT() { - ATH_MSG_DEBUG("atlas_HEPEVT params: " - << "nhep=" << s_atlas_HEPEVT->nhep() << ", " - << "isthep(10)=" << s_atlas_HEPEVT->isthep(10) << ", " - << "idhep(10)=" << s_atlas_HEPEVT->idhep(10) << ", " - << "jmohep(1,10)=" << s_atlas_HEPEVT->jmohep(1,10) << ", " - << "jdahep(2,10)=" << s_atlas_HEPEVT->jdahep(2,10)); - /// @todo Ugly... and a memory leak? - s_atlas_HEPEVT->fill(); - Atlas_HEPEVT* ahep = new Atlas_HEPEVT(); - *(ahep) = *(s_atlas_HEPEVT); - string keyid = "Herwig"; - StatusCode sc = evtStore()->record(ahep, keyid); - if (!sc.isSuccess()) { - ATH_MSG_WARNING("Could not record Atlas_HEPEVT"); - } -} diff --git a/Generators/Herwig_i/src/HerwigDummies/circee.F b/Generators/Herwig_i/src/HerwigDummies/circee.F deleted file mode 100644 index 30d3a851530ae04850d6eab7219f685f36bf5d02..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/src/HerwigDummies/circee.F +++ /dev/null @@ -1,63 +0,0 @@ -C----------------------------------------------------------------------- -C H E R W I G -C -C a Monte Carlo event generator for simulating -C +---------------------------------------------------+ -C | Hadron Emission Reactions With Interfering Gluons | -C +---------------------------------------------------+ -C I.G. Knowles(*), G. Marchesini(+), M.H. Seymour($) and B.R. Webber(#) -C----------------------------------------------------------------------- -C with Minimal Supersymmetric Standard Model Matrix Elements by -C S. Moretti(&,X) and K. Odagiri(^) -C----------------------------------------------------------------------- -C R parity violating Supersymmetric Decays and Matrix Elements by -C P. Richardson(#) -C----------------------------------------------------------------------- -C matrix element corrections to top decay and Drell-Yan type processes -C by G. Corcella(") -C----------------------------------------------------------------------- -C Deep Inelastic Scattering and Heavy Flavour Electroproduction by -C G. Abbiendi(@) and L. Stanco(%) -C----------------------------------------------------------------------- -C and Jet Photoproduction in Lepton-Hadron Collisions by J. Chyla(~) -C----------------------------------------------------------------------- -C(*) Department of Physics & Astronomy, University of Edinburgh -C(+) Dipartimento di Fisica, Universita di Milano-Bicocca -C($) Department of Physics & Astronomy, University of Manchester -C(#) Cavendish Laboratory, Cambridge -C(&) Theory Division, CERN -C(X) Institute of Particle Physics Phenomenology, University of Durham -C(^) Theory Group, KEK -C(") Max Planck Institute, Munich -C(@) Dipartimento di Fisica, Universita di Bologna -C(%) Dipartimento di Fisica, Universita di Padova -C(~) Institute of Physics, Prague -C----------------------------------------------------------------------- -C Version 6.504 - 12 August 2003 -C----------------------------------------------------------------------- -C Main references: -C -C G.Corcella, I.G.Knowles, G.Marchesini, S.Moretti, K.Odagiri, -C P.Richardson, M.H.Seymour and B.R.Webber, JHEP 0101 (2001) 010 -C -C G.Marchesini, B.R.Webber, G.Abbiendi, I.G.Knowles, M.H.Seymour, -C and L.Stanco, Computer Physics Communications 67 (1992) 465. -C----------------------------------------------------------------------- -C Please see the official HERWIG information page: -C http://hepwww.rl.ac.uk/theory/seymour/herwig/ -C----------------------------------------------------------------------- -CDECK ID>, CIRCEE. -*CMZ :- -03/07/01 17.07.47 by Bryan Webber -*-- Author : Bryan Webber -C----------------------------------------------------------------------- - FUNCTION CIRCEE (X1, X2) -C----------------------------------------------------------------------- -C DUMMY FUNCTION: DELETE AND SET CIRCOP NON-ZERO -C IN MAIN PROGRAM IF YOU USE CIRCE BEAM SPECTRUM PACKAGE -C----------------------------------------------------------------------- - DOUBLE PRECISION CIRCEE, X1, X2 - WRITE (6,10) - 10 FORMAT(/10X,'CIRCEE CALLED BUT NOT LINKED') - CIRCEE = 0.0D0 - STOP - END diff --git a/Generators/Herwig_i/src/HerwigDummies/circes.F b/Generators/Herwig_i/src/HerwigDummies/circes.F deleted file mode 100644 index 7ad929d803d2d37408a340da665448d789a8486a..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/src/HerwigDummies/circes.F +++ /dev/null @@ -1,15 +0,0 @@ -CDECK ID>, CIRCES. -*CMZ :- -03/07/01 17.07.47 by Bryan Webber -*-- Author : Bryan Webber -C----------------------------------------------------------------------- - SUBROUTINE CIRCES (XX1M, XX2M, XROOTS, XACC, XVER, XREV, XCHAT) -C----------------------------------------------------------------------- -C DUMMY SUBROUTINE: DELETE AND SET CIRCOP NON-ZERO -C IN MAIN PROGRAM IF YOU USE CIRCE BEAM SPECTRUM PACKAGE -C----------------------------------------------------------------------- - DOUBLE PRECISION XX1M, XX2M, XROOTS - INTEGER XACC, XVER, XREV, XCHAT - WRITE (6,10) - 10 FORMAT(/10X,'CIRCES CALLED BUT NOT LINKED') - STOP - END diff --git a/Generators/Herwig_i/src/HerwigDummies/circgg.F b/Generators/Herwig_i/src/HerwigDummies/circgg.F deleted file mode 100644 index dc73889ef13d29c5ea86a49dd6e7aece46c0513f..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/src/HerwigDummies/circgg.F +++ /dev/null @@ -1,15 +0,0 @@ -CDECK ID>, CIRCGG. -*CMZ :- -03/07/01 17.07.47 by Bryan Webber -*-- Author : Bryan Webber -C----------------------------------------------------------------------- - FUNCTION CIRCGG (X1, X2) -C----------------------------------------------------------------------- -C DUMMY FUNCTION: DELETE AND SET CIRCOP NON-ZERO -C IN MAIN PROGRAM IF YOU USE CIRCE BEAM SPECTRUM PACKAGE -C----------------------------------------------------------------------- - DOUBLE PRECISION CIRCGG, X1, X2 - WRITE (6,10) - 10 FORMAT(/10X,'CIRCGG CALLED BUT NOT LINKED') - CIRCGG = 0.0D0 - STOP - END diff --git a/Generators/Herwig_i/src/HerwigDummies/decadd.F b/Generators/Herwig_i/src/HerwigDummies/decadd.F deleted file mode 100644 index 6bd768bef50e6c26d40008ac7727e9da3152afa6..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/src/HerwigDummies/decadd.F +++ /dev/null @@ -1,14 +0,0 @@ -CDECK ID>, DECADD. -*CMZ :- -28/01/92 12.34.44 by Mike Seymour -*-- Author : Luca Stanco -C----------------------------------------------------------------------- - SUBROUTINE DECADD(LOGI) -C----------------------------------------------------------------------- -C DUMMY SUBROUTINE: DELETE AND SET BDECAY='CLEO' -C IN MAIN PROGRAM IF YOU USE CLEO DECAY PACKAGE -C----------------------------------------------------------------------- - LOGICAL LOGI - WRITE (6,10) - 10 FORMAT(/10X,'DECADD CALLED BUT NOT LINKED') - STOP - END diff --git a/Generators/Herwig_i/src/HerwigDummies/eudini.F b/Generators/Herwig_i/src/HerwigDummies/eudini.F deleted file mode 100644 index b34fb3fe170fd52773054ad4262ae82edf17d3b1..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/src/HerwigDummies/eudini.F +++ /dev/null @@ -1,13 +0,0 @@ -CDECK ID>, EUDINI. -*CMZ :- -28/01/92 12.34.44 by Mike Seymour -*-- Author : Luca Stanco -C----------------------------------------------------------------------- - SUBROUTINE EUDINI -C----------------------------------------------------------------------- -C DUMMY SUBROUTINE: DELETE AND SET BDECAY='EURO' -C IN MAIN PROGRAM IF YOU USE EURODEC DECAY PACKAGE -C----------------------------------------------------------------------- - WRITE (6,10) - 10 FORMAT(/10X,'EUDINI CALLED BUT NOT LINKED') - STOP - END diff --git a/Generators/Herwig_i/src/HerwigDummies/fragmt.F b/Generators/Herwig_i/src/HerwigDummies/fragmt.F deleted file mode 100644 index 87f3777bb9e465d8dc436e63612ae8ac4fc7a507..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/src/HerwigDummies/fragmt.F +++ /dev/null @@ -1,14 +0,0 @@ -CDECK ID>, FRAGMT. -*CMZ :- -28/01/92 12.34.44 by Mike Seymour -*-- Author : Luca Stanco -C----------------------------------------------------------------------- - SUBROUTINE FRAGMT(I,J,K) -C----------------------------------------------------------------------- -C DUMMY SUBROUTINE: DELETE AND SET BDECAY='EURO' -C IN MAIN PROGRAM IF YOU USE EURODEC DECAY PACKAGE -C----------------------------------------------------------------------- - INTEGER I,J,K - WRITE (6,10) - 10 FORMAT(/10X,'FRAGMT CALLED BUT NOT LINKED') - STOP - END diff --git a/Generators/Herwig_i/src/HerwigDummies/hvhbvi.F b/Generators/Herwig_i/src/HerwigDummies/hvhbvi.F deleted file mode 100644 index 71d2c4a2e1201472e2dfeca70a72349bcd1c9ec9..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/src/HerwigDummies/hvhbvi.F +++ /dev/null @@ -1,12 +0,0 @@ -CDECK ID>, HVHBVI. -*CMZ :- -28/01/92 12.34.44 by Mike Seymour -*-- Author : Mike Seymour -C----------------------------------------------------------------------- - SUBROUTINE HVHBVI -C----------------------------------------------------------------------- -C DUMMY ROUTINE: DELETE IF YOU LINK TO BARYON NUMBER VIOLATN PACKAGE -C----------------------------------------------------------------------- - WRITE (6,10) - 10 FORMAT(/10X,'HERBVI CALLED BUT NOT LINKED') - STOP - END diff --git a/Generators/Herwig_i/src/HerwigDummies/hwhvvj.F b/Generators/Herwig_i/src/HerwigDummies/hwhvvj.F deleted file mode 100644 index 507608f66aeff05810dd2435ef0e72659bb4d421..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/src/HerwigDummies/hwhvvj.F +++ /dev/null @@ -1,11 +0,0 @@ -CDECK ID>, HWHVVJ. -*CMZ :- -11/05/01 09.19.45 by Bryan Webber -*-- Author : Bryan Webber -C----------------------------------------------------------------------- - SUBROUTINE HWHVVJ -C----------------------------------------------------------------------- -C VV + 1 JET PRODUCTION, WHERE VV=WW,ZZ,WZ FOR IPROC=2850,2860,2870 -C----------------------------------------------------------------------- - PRINT *,' VV + 1 JET CALLED BUT NOT YET IMPLEMENTED' - CALL HWWARN('HWHVVJ',500) - END diff --git a/Generators/Herwig_i/src/HerwigDummies/hwirpv.F b/Generators/Herwig_i/src/HerwigDummies/hwirpv.F deleted file mode 100644 index c78b110b647a08eb20e381de92a1bee7d880d1e7..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/src/HerwigDummies/hwirpv.F +++ /dev/null @@ -1,9 +0,0 @@ - -C---------------------------------------------------------------------- - SUBROUTINE HWIRPV -C---------------------------------------------------------------------- -C THIS IS A DUMMY SUBROUTINE WHICH IS CALLED FROM THE INTERFACE -C WHEN RPV DECAYS ARE NOT BEING USED IN HERWIG (I.E. USUALLY!) -C Jon Butterworth, Sebastian Fleischmann -C---------------------------------------------------------------------- - END diff --git a/Generators/Herwig_i/src/HerwigDummies/hwugup.F b/Generators/Herwig_i/src/HerwigDummies/hwugup.F deleted file mode 100644 index e2c14cdb5cb537ccb9c6a46070802d60fadb4b85..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/src/HerwigDummies/hwugup.F +++ /dev/null @@ -1,4 +0,0 @@ - SUBROUTINE HWUGUP - - RETURN - END diff --git a/Generators/Herwig_i/src/HerwigDummies/hwupro.F b/Generators/Herwig_i/src/HerwigDummies/hwupro.F deleted file mode 100644 index de71a17d4cbc60e9ad95b01fffc2cf7262fb9a2b..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/src/HerwigDummies/hwupro.F +++ /dev/null @@ -1,5 +0,0 @@ - SUBROUTINE HWUPRO - - - RETURN - END diff --git a/Generators/Herwig_i/src/HerwigDummies/ieupdg.F b/Generators/Herwig_i/src/HerwigDummies/ieupdg.F deleted file mode 100644 index 0f940e0fbba16bdd064a71dd2bef7ba1dca75ba3..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/src/HerwigDummies/ieupdg.F +++ /dev/null @@ -1,15 +0,0 @@ -CDECK ID>, IEUPDG. -*CMZ :- -28/01/92 12.34.44 by Mike Seymour -*-- Author : Luca Stanco -C----------------------------------------------------------------------- - FUNCTION IEUPDG(I) -C----------------------------------------------------------------------- -C DUMMY SUBROUTINE: DELETE AND SET BDECAY='EURO' -C IN MAIN PROGRAM IF YOU USE EURODEC DECAY PACKAGE -C----------------------------------------------------------------------- - INTEGER IEUPDG,I - WRITE (6,10) - 10 FORMAT(/10X,'IEUPDG CALLED BUT NOT LINKED') - IEUPDG=0 - STOP - END diff --git a/Generators/Herwig_i/src/HerwigDummies/ipdgeu.F b/Generators/Herwig_i/src/HerwigDummies/ipdgeu.F deleted file mode 100644 index 4b65abad3e466408479420b4d418a13bf77f6607..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/src/HerwigDummies/ipdgeu.F +++ /dev/null @@ -1,15 +0,0 @@ -CDECK ID>, IPDGEU. -*CMZ :- -28/01/92 12.34.44 by Mike Seymour -*-- Author : Luca Stanco -C----------------------------------------------------------------------- - FUNCTION IPDGEU(I) -C----------------------------------------------------------------------- -C DUMMY SUBROUTINE: DELETE AND SET BDECAY='EURO' -C IN MAIN PROGRAM IF YOU USE EURODEC DECAY PACKAGE -C----------------------------------------------------------------------- - INTEGER IPDGEU,I - WRITE (6,10) - 10 FORMAT(/10X,'IPDGEU CALLED BUT NOT LINKED') - IPDGEU=0 - STOP - END diff --git a/Generators/Herwig_i/src/HerwigDummies/pytime.F b/Generators/Herwig_i/src/HerwigDummies/pytime.F deleted file mode 100644 index 673070669c330bcae63cc9de303849d68bf3a605..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/src/HerwigDummies/pytime.F +++ /dev/null @@ -1,76 +0,0 @@ - -C********************************************************************* - -C...PYTIME -C...Finds current date and time. -C...Since this task is not standardized in Fortran 77, the routine -C...is dummy, to be replaced by the user. Examples are given for -C...the Fortran 90 routine and DEC Fortran 77, and what to do if -C...you do not have access to suitable routines. - - SUBROUTINE PYTIME(IDATI) - -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) -c INTEGER PYK,PYCHGE,PYCOMP -c CHARACTER*8 ATIME -C...Local array. - INTEGER IDATI(6),IDTEMP(3) - -C...Example 0: if you do not have suitable routines. - DO 100 J=1,6 - IDATI(J)=0 - 100 CONTINUE - -C...Example 1: Fortran 90 routine. -C INTEGER IVAL(8) -C CALL DATE_AND_TIME(VALUES=IVAL) -C IDATI(1)=IVAL(1) -C IDATI(2)=IVAL(2) -C IDATI(3)=IVAL(3) -C IDATI(4)=IVAL(5) -C IDATI(5)=IVAL(6) -C IDATI(6)=IVAL(7) - -C...Example 2: DEC Fortran 77. AIX. -C CALL IDATE(IMON,IDAY,IYEAR) -C IDATI(1)=IYEAR -C IDATI(2)=IMON -C IDATI(3)=IDAY -C CALL ITIME(IHOUR,IMIN,ISEC) -C IDATI(4)=IHOUR -C IDATI(5)=IMIN -C IDATI(6)=ISEC - -C...Example 3: DEC Fortran, IRIX, IRIX64. -C CALL IDATE(IMON,IDAY,IYEAR) -C IDATI(1)=IYEAR -C IDATI(2)=IMON -C IDATI(3)=IDAY -C CALL TIME(ATIME) -C IHOUR=0 -C IMIN=0 -C ISEC=0 -C READ(ATIME(1:2),'(I2)') IHOUR -C READ(ATIME(4:5),'(I2)') IMIN -C READ(ATIME(7:8),'(I2)') ISEC -C IDATI(4)=IHOUR -C IDATI(5)=IMIN -C IDATI(6)=ISEC - -C...Example 4: GNU LINUX libU77, SunOS. - CALL IDATE(IDTEMP) - IDATI(1)=IDTEMP(3) - IDATI(2)=IDTEMP(2) - IDATI(3)=IDTEMP(1) - CALL ITIME(IDTEMP) - IDATI(4)=IDTEMP(1) - IDATI(5)=IDTEMP(2) - IDATI(6)=IDTEMP(3) - -C...Common code to ensure right century. - IDATI(1)=2000+MOD(IDATI(1),100) - - RETURN - END diff --git a/Generators/Herwig_i/src/HerwigDummies/qqinit.F b/Generators/Herwig_i/src/HerwigDummies/qqinit.F deleted file mode 100644 index e6f7d5844fa46d6178ba8608cf8d9700fd13a10e..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/src/HerwigDummies/qqinit.F +++ /dev/null @@ -1,14 +0,0 @@ -CDECK ID>, QQINIT. -*CMZ :- -28/01/92 12.34.44 by Mike Seymour -*-- Author : Luca Stanco -C----------------------------------------------------------------------- - SUBROUTINE QQINIT(QQLERR) -C----------------------------------------------------------------------- -C DUMMY SUBROUTINE: DELETE AND SET BDECAY='CLEO' -C IN MAIN PROGRAM IF YOU USE CLEO DECAY PACKAGE -C----------------------------------------------------------------------- - LOGICAL QQLERR - WRITE (6,10) - 10 FORMAT(/10X,'QQINIT CALLED BUT NOT LINKED') - STOP - END diff --git a/Generators/Herwig_i/src/HerwigDummies/timel.F b/Generators/Herwig_i/src/HerwigDummies/timel.F deleted file mode 100644 index 568e4005898c144796baf036f493233e90a1bf04..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/src/HerwigDummies/timel.F +++ /dev/null @@ -1,5 +0,0 @@ - SUBROUTINE TIMEL (T) - - T = 9999. - RETURN - END diff --git a/Generators/Herwig_i/src/HerwigInterface_65.F b/Generators/Herwig_i/src/HerwigInterface_65.F deleted file mode 100644 index a348aa3da4ce15b472c01e11a87dd61befedf1c7..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/src/HerwigInterface_65.F +++ /dev/null @@ -1,106 +0,0 @@ -c - subroutine herwiginterface(itopd) -c---------------------------------------------------------------------- -c program initialization -c---------------------------------------------------------------------- -c -c HERWIG common blocks (`external` loads in block data) -c----------------------------------------------------------------------- -#include "HERWIG65.INC" -#include "jimmy.inc" - EXTERNAL HWUDAT -c----------------------------------------------------------------------- -c local variables -c----------------------------------------------------------------------- - INTEGER ITOPD - EXTERNAL HWHSCT - -c------------------------------------------------------------------------------ -c set defaults -c------------------------------------------------------------------------------ - - CALL HWIGIN ! set HERWIG defaults - -C(BPK)->CHARYBDIS 1.003 FIX -C---DEFINE BLACK HOLE - NRES=NRES+1 - RNAME(NRES)='BlacHole' - IDPDG(NRES)=40 - - IF (ITOPD.GT.0) CALL TOPDEC - - CALL JIMMIN - -c Don't write out the sudaov tables by default - LWSUD = 0 - - RETURN - END - -C -C The following two dummy routines are needed by Herwig... - - Subroutine Hvcbvi -#include "HERWIG65.INC" - - Write(6,10) - 10 Format(/10x,'HVCBVI called but not linked') - end - - - Subroutine Hwaend - end - -c - Subroutine cdfreadsusy(filnam,iunit) - character*(*) filnam -c integer status -c integer sigtlu, sifrlu - integer iunit -c----------------------------------------------------------------------- -c open the SUSY particle properties file -c----------------------------------------------------------------------- - -c status = sigtlu(iunit) - write(*,*) ' ' - write (*,6660) - 6660 format (' SUSY filename is ') - write (*,*) filnam - write (*,6664) iunit - 6664 format (' and unit number is ',i6) -C - open(unit=iunit,file=filnam,status='old',err=101 - & ,FORM='FORMATTED',ACCESS='SEQUENTIAL') - goto 102 -c----------------------------------------------------------------------- -c error: can't open SUSY file -c----------------------------------------------------------------------- -101 continue - write(*,*) ' ' - write(*,*) ' ********************************************* ' - write(*,*) ' ' - write(*,*) - $ ' Error in opening SUSY file for READING' - write(*,*) - $ ' Program will abort.' - write(*,*) ' ' - write(*,*) ' ********************************************* ' - write(*,*) ' ' -102 continue - end -c -c----------------------------------------------------------------------- -c dummy hwanal, called from HerwigModule.cxx, can be useful - subroutine hwanal(ihwcod) -c input ihwcod = 1, set to zero if want this event skipped -#include "HERWIG65.INC" - integer ihwcod -c -c -c skip if ierror ne 0 - if(ierror.ne.0) return -c -cc do whatever here -cc if want to skip this event, say ihwcod = 0 -c - end diff --git a/Generators/Herwig_i/src/HerwigModified/hwdtau.f b/Generators/Herwig_i/src/HerwigModified/hwdtau.f deleted file mode 100644 index b7868c22cb7e3e200f325cbcda69b89b0ed0a21c..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/src/HerwigModified/hwdtau.f +++ /dev/null @@ -1,256 +0,0 @@ -CDECK ID>, HWDTAU. -*CMZ :- -17/10/01 09:42:21 by Peter Richardson -*-- Author : Peter Richardson -C -C Modified by Borut Kersevan to adjust for Atlas specific architecture: -C initialization (IOPT=-1) and finalizing (IOPT=2) are done in Tauola_i -C -C Oct.3, 2008: Vladimir Savinov (V.S.) and Reza Yoosoofmiya (R.Y.) fixed two problems: -C 1) on Feb.21, 2008 IFPHOT=0 statement was accidentally deleted -C from this source code - but default value for this variable is set to 1 in -C HERWIG's src/hwsteer/hwigin.F, as the result, src/hwsteer/hwuinc.f reinitializes -C PHOTOS with defaults different from ATLAS's defaults which results in less -C FSR at Photos_i/PHOTOS level at a later time. The mistakenly deleted line is put back in. -C 2) Introduced a few lines of code to force decays of pi0s produced in tau decays. -C Notice that we allow HERWIG to decay taus but FSR will be generated in Photos_i's calls to PHOTOS -C -C----------------------------------------------------------------------- - SUBROUTINE HWDTAU(IOPT,IHEP,POL) -C----------------------------------------------------------------------- -C HERWIG-TAUOLA interface to perform tau decays using TAUOLA rather -C than HERWIG -C IOPT =-1 initialises -C IOPT = 1 performs decay -C IOPT = 2 write outs final TAUOLA information -C----------------------------------------------------------------------- - INCLUDE 'HERWIG65.INC' - -C Les Houches accord common block hep-ph/0109068 -C...User process event commonblock. -c Ian Hinchliffe (May 2002) - INTEGER MAXNUP - PARAMETER (MAXNUP=500) - INTEGER NUP,IDPRUP,IDUP,ISTUP,MOTHUP,ICOLUP - DOUBLE PRECISION XWGTUP,SCALUP,AQEDUP,AQCDUP,PUP,VTIMUP,SPINUP - COMMON/HEPEUP/NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP,IDUP(MAXNUP), - &ISTUP(MAXNUP),MOTHUP(2,MAXNUP),ICOLUP(2,MAXNUP),PUP(5,MAXNUP), - &VTIMUP(MAXNUP),SPINUP(MAXNUP) - SAVE /HEPEUP/ - INTEGER IMOTAU - -C Les Houches accord common block -C Ian Hinchliffe (May 2002) -C this one added for atlas use - INTEGER ATLASCHOICE - COMMON/LESATLAS/ATLASCHOICE - SAVE /LESATLAS/ - -C Generator Names include -C while adding a new generator change in GeneratorName.h is needed -C too -c E.M. L.12.12.2008 -c this one added for atlas use - INTEGER ALPGEN,MCATNLO,LHAEXT - PARAMETER (ALPGEN=400000,MCATNLO=900000,LHAEXT=800000) - - INTEGER IOPT,IHEP,ID,ITAU,I,IMO,NHEPPO - DOUBLE PRECISION POL - REAL POL1(4) - CHARACTER *8 DUMMY -C--common block for PHOTOS -C(JMB) LOGICAL QEDRAD -C(JMB) COMMON /PHOQED/ QEDRAD(NMXHEP) -C--common blocks for TAUOLA - INTEGER NP1,NP2 - COMMON /TAUPOS/ NP1, NP2 - DOUBLE PRECISION Q1(4),Q2(4),P1(4),P2(4),P3(4),P4(4) - COMMON / MOMDEC / Q1,Q2,P1,P2,P3,P4 -C(JMB)--> - DOUBLE PRECISION DIST(4),VERTX(4) -C(JMB)--< - -C(BPK)--> - -C TAUOLA PARAMETER COMMON - INTEGER IFPOL,IFRADCOR,IFDMOD,IFJAK1,IFJAK2 - REAL FFPHX - COMMON /FFTAU/IFPOL,IFRADCOR,IFDMOD,IFJAK1,IFJAK2,FFPHX - -C(BPK)--< - -C--->>> V.S. and R.Y. Oct.3, 2008 - IFPHOT = 0 -C---<<< V.S. and R.Y. Oct.3, 2008 - - -C--initialisation - IF(IOPT.EQ.-1) THEN -C--initialise TAUOLA -C(BPK) Done elsewere in Atlas s/w -C CALL INIETC(JAK1,JAK2,ITDKRC,IFPHOT) -C CALL INIMAS -C CALL INIPHX(0.01d0) -C CALL INITDK - -C--generate a decay - ELSEIF(IOPT.EQ.1) THEN - -C(BPK)--> - IF (IFDMOD.EQ.1) THEN ! LEP-LEP - CALL TAUBRS(1) - ELSEIF (IFDMOD.EQ.2) THEN ! HAD-HAD - CALL TAUBRS(2) - ELSEIF (IFDMOD.EQ.3) THEN ! LEP-HAD - PRINT *, - # 'HWDTAU: LEP-HAD MODE NOT POSSIBLE IN INTERNAL HERWIG PROCESSES' - STOP - ELSEIF (IFDMOD.EQ.4) THEN ! TAU->PI NU - CALL TAUBRS(4) - ELSE ! INCLUSIVE DECAY - CALL TAUBRS(0) - ENDIF -C(BPK)--< - - ISTHEP(IHEP)=195 - ID = IDHW(IHEP) - IMO = IHEP - 1 IMO = JMOHEP(1,IMO) - IF(IDHW(IMO).EQ.ID) GOTO 1 -C--id of tau for tauola - IF(ID.EQ.125) THEN - ITAU = 2 - NP1 = IHEP - NP2 = IHEP - ELSEIF(ID.EQ.131) THEN - ITAU = 1 - NP1 = IHEP - NP2 = IHEP - ELSE - CALL HWWARN('HWDTAU',501) - ENDIF -C--set up the tau polarization - POL1(1) = 0. - POL1(2) = 0. - POL1(3) = REAL(POL) - POL1(4) = 0. - -C...================================================================= -C...S.T. -C...fill polarization if external generator has the spin information. -C...So far, only consider Alpgen. - IF (ATLASCHOICE.EQ.ALPGEN.OR.ATLASCHOICE.EQ.MCATNLO - $ .OR.ATLASCHOICE.EQ.LHAEXT) THEN -C write(*,*) "ST...========================================" -C write(*,*) "ST...Events/NHEP before Tauola",NEVHEP,NHEP -C write(*,*) "ST...Tauola",IHEP,IMO,ID,ITAU,ATLASCHOICE,POL, -C $ IFPOL - - IF (IMO.LT.100) THEN -C...Find mother particle of tau to ask exact mathing of 4-vector. - IMOTAU = 0 - 23 DO I=1,NUP -C write(*,*) "Check ALL",I,IDUP(I),IDHEP(IMO), -C $ IMO,JMOHEP(1,IMO), -C $ PUP(1,I),PHEP(1,IMO) - IF (IABS(IDUP(I)).GT.22.AND.IABS(IDUP(I)).LT.26 - $ .AND.IDUP(I).EQ.IDHEP(IMO)) THEN -C IF (ABS(PUP(1,I)-PHEP(1,IMO)).LT.1.0E-3 -C $ .AND.ABS(PUP(2,I)-PHEP(2,IMO)).LT.1.0E-3) THEN -C write(*,*) "Check 4-vector PHEP:",ISTHEP(IMO),IDHEP(IMO), -C $ PHEP(1,IMO),PHEP(2,IMO),PHEP(3,IMO),PHEP(4,IMO) -C write(*,*) "Check 4-vector LHA:",I,IDUP(I), -C $ PUP(1,I),PUP(2,I),PUP(3,I),PUP(4,I) - IMOTAU = I -C ENDIF - ENDIF - ENDDO - IF (IMOTAU.EQ.0.AND.IMO.NE.6) THEN - IMO = JMOHEP(1,IMO) - GO TO 23 - ENDIF - IF (IMOTAU.EQ.0.AND.IMO.EQ.6) THEN - DO I=1,NUP - IF (IABS(IDUP(I)).GT.22.AND.IABS(IDUP(I)).LT.26 - $ .AND.IDUP(I).EQ.IDHEP(IMO)) THEN - IMOTAU = I - ENDIF - ENDDO - ENDIF - -C...Find tau as daughter, so that the spin information is directly filled. - DO I=1,NUP - IF(MOTHUP(1,I).GT.0.AND.IMOTAU.GT.0) THEN - IF (IDUP(I).EQ.IDHEP(IHEP) - $ .AND.IDUP(MOTHUP(1,I)).EQ.IDUP(IMOTAU)) THEN -C write(*,*) "ST...TAU candidate",I,IDUP(I),IDUP(IMOTAU), -C $ PUP(1,I),PUP(2,I),PUP(3,I),PUP(4,I),SPINUP(I) - POL1(3) = SPINUP(I) - ENDIF - ENDIF - ENDDO - -C write(*,*) "ST...Tauola polarization",IDHEP(IHEP),POL1(3) - ENDIF - ENDIF -C...================================================================= - - -C--tau momentum -C--three components - DO I=1,3 - IF(ID.EQ.125) THEN - P1(I) =-PHEP(I,IHEP) - P2(I) = PHEP(I,IHEP) - ELSE - P1(I) = PHEP(I,IHEP) - P2(I) =-PHEP(I,IHEP) - ENDIF -C--we measure tau spins in lab frame - Q1(I) = ZERO - ENDDO -C--energies - P1(4)=PHEP(4,IHEP) - P2(4)=PHEP(4,IHEP) - Q1(4)=P1(4)+P2(4) -C--perform the decay and generate QED radiation if needed - NHEPPO=NHEP - CALL DEXAY(ITAU,POL1) - -C--->>> V.S. and R.Y. Oct.3, 2008 - if ( ID .eq. 1 ) then - CALL TAUPI0(0,1) - else - CALL TAUPI0(0,2) - endif -C---<<< V.S. and R.Y. Oct.3, 2008 - -C(JMB)--> photos calls done elsewhere -C IF(IFPHOT.EQ.1) THEN -C IF(ID.EQ.1) THEN -C CALL PHOTOS(NP1) -C ELSE -C CALL PHOTOS(NP2) -C ENDIF -C ENDIF -C(JMB)--> add tau deay vertex info. - CALL HWUDKL(125,PHEP(1,IHEP),DIST) - CALL HWVSUM(4,VHEP(1,IHEP),DIST,VERTX) -C(JMB)--< - IF(NHEPPO.NE.NHEP) THEN - DO 2 I=NHEPPO+1,NHEP -C(JMB) CALL HWVEQU(4,VHEP(1,IHEP),VHEP(1,I)) - CALL HWVEQU(4,VERTX,VHEP(1,I)) - 2 CALL HWUIDT(1,IDHEP(I),IDHW(I),DUMMY) - ENDIF - - -C--write out info at end - ELSEIF(IOPT.EQ.2) THEN -C(BPK) Done elsewere in Atlas s/w -C CALL DEXAY(100,POL1) - -C--otherwise issue warning - ELSE - CALL HWWARN('HWDTAU',500) - ENDIF - END diff --git a/Generators/Herwig_i/src/HerwigModified/hwhsnm.f b/Generators/Herwig_i/src/HerwigModified/hwhsnm.f deleted file mode 100644 index 4f907b1c27a57d7d1fbffa5b619e5a5a2b61bf2a..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/src/HerwigModified/hwhsnm.f +++ /dev/null @@ -1,153 +0,0 @@ -CDECK ID>, HWHSNM. -*CMZ :- -20/09/95 15.28.53 by Mike Seymour -*-- Author : Mike Seymour -C----------------------------------------------------------------------- -*-- Author : Mike Seymour, Mark Heyes, Brian Cox, Jeff Forshaw 18.12.97 -* Upgraded to remove asymptotic approximation -C----------------------------------------------------------------------- -*__ Author : Graham Jones, James Monk 15.04.2008 -* Allow switch between original asymptotic version and upgraded version for ATLAS -* Switch depends on omega0 - omega0 > 0 runs the original (and uses that omega0 value) -* omega0 < 0 runs the upgraded version -C----------------------------------------------------------------------- - FUNCTION HWHSNM(ID1,ID2,S,T) -C MATRIX ELEMENT SQUARED FOR COLOUR-SINGLET PARTON-PARTON SCATTERING -C INCLUDES SPIN AND COLOUR AVERAGES AND SUMS. -C FOR PHOTON EXCHANGE, INTERFERENCE WITH U-CHANNEL CONTRIBUTION IS -C INCLUDED FOR IDENTICAL QUARKS AND LIKEWISE S-CHANNEL CONTRIBUTION -C FOR IDENTICAL QUARK-ANTIQUARK PAIRS. -C----------------------------------------------------------------------- - INCLUDE 'HERWIG65.INC' - DOUBLE PRECISION HWHSNM,HWUAEM,HWUALF,S,T,ASQ,AINU,AINS,Y,SOLD, - $ TOLD,QQ(13,13),ZETA3 - INTEGER ID1,ID2 - LOGICAL PHOTON - LOGICAL PRVSN -C---ZETA3=RIEMANN ZETA FUNCTION(3) - PARAMETER (ZETA3=1.202056903159594D0) -C---paramtric fit to the function used in the Bartels/Forshaw/et al. calculation - DOUBLE PRECISION para,parb,parc,pard,pare !,alphas - PARAMETER (para=7.6155D0) - PARAMETER (parb=-20.259D0) - PARAMETER (parc=41.534D0) - PARAMETER (pard=-2.6150D0) - PARAMETER (pare=8.6744D0) - DOUBLE PRECISION Z - - SAVE ASQ,AINU,AINS,SOLD,TOLD,QQ - DATA ASQ,AINU,AINS,SOLD,TOLD,QQ/5*0,169*-1/ - SAVE PRVSN - DATA PRVSN/.TRUE./ -C---PHOTON=.TRUE. FOR PHOTON EXCHANGE, .FALSE. FOR MUELLER-TANG - PHOTON=MOD(IPROC,100).GE.50 - IF (OMEGA0.lt.0.) THEN - -c---This is the upgraded version: - -C---QQ CACHES THE KINEMATIC-INDEPENDENT FACTORS, TO MAKE IT RUN FASTER -C (BEARING IN MIND THAT THIS ROUTINE IS CALLED 169 TIMES PER EVENT) - IF (QQ(ID1,ID2).LT.0) THEN - IF(PRVSN) THEN - WRITE(*,*) - $ " USING UPGRADED HWHSNM FOR COLOUR SINGLET EXCHANGE" - PRVSN = .FALSE. - ENDIF - - IF (PHOTON) THEN - IF (ID1.EQ.13.OR.ID2.EQ.13) THEN - QQ(ID1,ID2)=0 - ELSE - QQ(ID1,ID2)=(QFCH(MOD(ID1-1,6)+1)*QFCH(MOD(ID2-1,6)+1))**2 - $ *(4*PIFAC)**2 - ENDIF - ELSE - IF (ID1.EQ.13.AND.ID2.EQ.13) THEN - QQ(ID1,ID2)=CAFAC**4 - ELSEIF (ID1.EQ.13.OR.ID2.EQ.13) THEN - QQ(ID1,ID2)=(CAFAC*CFFAC)**2 - ELSE - QQ(ID1,ID2)=CFFAC**4 - ENDIF - QQ(ID1,ID2)=QQ(ID1,ID2)*16*PIFAC - ENDIF - ENDIF -C---THE KINEMATIC-DEPENDENT PART IS ALSO CACHED - IF (S.NE.SOLD.OR.T.NE.TOLD) THEN - IF (PHOTON) THEN - AINS=HWUAEM(T)**2 - ASQ=2*(S**2+(S+T)**2)/T**2*AINS - AINU=(-2)*S/T*AINS - AINS=2*AINS-AINU - ELSE - Y=LOG(S/(-T)) - Z=(1.5/PIFAC)*asfixd*Y - ASQ=1.D0/(4.D0*PIFAC)*asfixd**4 - & *(para+parb*Z+parc*Z**2+exp(pard+pare*Z)) - & *(S/T)**2 - - AINU=0 - AINS=0 - ENDIF - ENDIF -C---THE FINAL ANSWER IS JUST THEIR PRODUCT - IF (ID1.EQ.ID2) THEN - HWHSNM=QQ(ID1,ID2)*(ASQ+AINU) - ELSEIF (ABS(ID1-ID2).EQ.6) THEN - HWHSNM=QQ(ID1,ID2)*(ASQ+AINS) - ELSE - HWHSNM=QQ(ID1,ID2)*ASQ - ENDIF - ELSE -c---This is the original version: - IF (QQ(ID1,ID2).LT.ZERO) THEN - - IF(PRVSN) THEN - WRITE(*,*) - $ " USING ORIGINAL HWHSNM FOR COLOUR SINGLET EXCHANGE" - PRVSN=.FALSE. - ENDIF - - IF (PHOTON) THEN - IF (ID1.EQ.13.OR.ID2.EQ.13) THEN - QQ(ID1,ID2)=0 - ELSE - QQ(ID1,ID2)=(QFCH(MOD(ID1-1,6)+1)*QFCH(MOD(ID2-1,6)+1))**2 - $ *(4*PIFAC)**2 - ENDIF - ELSE - IF (ID1.EQ.13.AND.ID2.EQ.13) THEN - QQ(ID1,ID2)=CAFAC**4 - ELSEIF (ID1.EQ.13.OR.ID2.EQ.13) THEN - QQ(ID1,ID2)=(CAFAC*CFFAC)**2 - ELSE - QQ(ID1,ID2)=CFFAC**4 - ENDIF - QQ(ID1,ID2)=QQ(ID1,ID2)* - $ PIFAC**3/(4*(3.5*ASFIXD*CAFAC*ZETA3)**3) - $ *(16*PIFAC) - ENDIF - ENDIF -C---THE KINEMATIC-DEPENDENT PART IS ALSO CACHED - IF (S.NE.SOLD.OR.T.NE.TOLD) THEN - IF (PHOTON) THEN - AINS=HWUAEM(T)**2 - ASQ=2*(S**2+(S+T)**2)/T**2*AINS - AINU=(-4)*S/T*AINS/NCOLO - AINS=4*AINS/NCOLO-AINU - ELSE - Y=LOG(S/(-T))+ONE - ASQ=HWUALF(1,EMSCA)**4*(S/T)**2*EXP(2*OMEGA0*Y)/Y**3 - AINU=0 - AINS=0 - ENDIF - ENDIF -C---THE FINAL ANSWER IS JUST THEIR PRODUCT - IF (ID1.EQ.ID2) THEN - HWHSNM=QQ(ID1,ID2)*(ASQ+AINU) - ELSEIF (ABS(ID1-ID2).EQ.6) THEN - HWHSNM=QQ(ID1,ID2)*(ASQ+AINS) - ELSE - HWHSNM=QQ(ID1,ID2)*ASQ - ENDIF - ENDIF - END diff --git a/Generators/Herwig_i/src/HerwigModified/hwugup.f b/Generators/Herwig_i/src/HerwigModified/hwugup.f deleted file mode 100644 index 64ec9d52fcc36e55df11306f24bf9dfae902e703..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/src/HerwigModified/hwugup.f +++ /dev/null @@ -1,21 +0,0 @@ -C----------------------------------------------------------------------- - SUBROUTINE HWUGUP -C----------------------------------------------------------------------- -C Subroutine to handle termination of HERWIG if reaches end of event -C file -C----------------------------------------------------------------------- - INCLUDE 'HERWIG65.INC' -C--reset the number of events to the correct value - NEVHEP = NEVHEP-1 -C--output information on the events - CALL HWEFIN -C--run users end code - CALL HWAEND -C ATLAS/JMB Argh athena doesn't like to STOP! -C These lines should force HWEPRO to stop trying to generate and event -C and terminate. - IERROR=-1 - GENEV=.TRUE. -C STOP - END - diff --git a/Generators/Herwig_i/src/HerwigModified/rpv/hwdboz.f b/Generators/Herwig_i/src/HerwigModified/rpv/hwdboz.f deleted file mode 100644 index b4881e43dcfe3a4a6a008c7349526f42de45ad0b..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/src/HerwigModified/rpv/hwdboz.f +++ /dev/null @@ -1,161 +0,0 @@ -CDECK ID>, HWDBOZ. -*CMZ :- -29/04/91 18.00.03 by Federico Carminati -*-- Author : Mike Seymour -C----------------------------------------------------------------------- - SUBROUTINE HWDBOZ(IDBOS,IFER,IANT,CV,CA,BR,IOPT) -C----------------------------------------------------------------------- -C CHOOSE DECAY MODE OF BOSON -C IOPT=2 TO RESET COUNTERS, 1 FOR BOSON PAIR, 0 FOR ANY OTHERS -C----------------------------------------------------------------------- - INCLUDE 'HERWIG65.INC' - DOUBLE PRECISION HWRGEN,BRMODE(12,3),CV,CA,BR,BRLST,BRCOM,FACZ, - & FACW - INTEGER HWRINT,IDBOS,IDEC,IDMODE(2,12,3),IFER,IANT,IOPT,I1,I2, - & I1LST,I2LST,NWGLST,NUMDEC,NPAIR,MODTMP,JFER - LOGICAL GENLST - EXTERNAL HWRGEN,HWRINT - SAVE FACW,FACZ,NWGLST,GENLST,NUMDEC,NPAIR,I1LST,I2LST,BRLST - SAVE IDMODE,BRMODE - DATA NWGLST,GENLST,NPAIR/-1,.FALSE.,0/ -C---STORE THE DECAY MODES (FERMION FIRST) - DATA IDMODE/ 2, 7, 4, 9, 6, 11, 2, 9, 4, 7, - & 122,127,124,129,126,131,8*0, - & 1, 8, 3, 10, 5, 12, 3, 8, 1, 10, - & 121,128,123,130,125,132,8*0, - & 1, 7, 2, 8, 3, 9, 4, 10, 5, 11, 6, 12, - & 121,127,123,129,125,131,122,128,124,130,126,132/ -C---STORE THE BRANCHING RATIOS TO THESE MODES - DATA BRMODE/0.321D0,0.321D0,0.000D0,0.017D0,0.017D0,0.108D0, - & 0.108D0,0.108D0,4*0.0D0, - & 0.321D0,0.321D0,0.000D0,0.017D0,0.017D0,0.108D0, - & 0.108D0,0.108D0,4*0.0D0, - & 0.154D0,0.120D0,0.154D0,0.120D0,0.152D0,0.000D0, - & 0.033D0,0.033D0,0.033D0,0.067D0,0.067D0,0.067D0/ -C---FACTORS FOR CV AND CA FOR W AND Z - DATA FACW,FACZ/2*0.0D0/ - IF (FACZ.EQ.ZERO) FACZ=SQRT(SWEIN) - IF (FACW.EQ.ZERO) FACW=0.5/SQRT(2D0) - IF (IDBOS.LT.198.OR.IDBOS.GT.200) THEN - CALL HWWARN('HWDBOZ',101) - GOTO 999 - ENDIF -C---IF THIS IS A NEW EVENT SINCE LAST TIME, ZERO COUNTERS - IF (NWGTS.NE.NWGLST .OR.(GENEV.NEQV.GENLST).OR. IOPT.EQ.2) THEN - NPAIR=0 - NUMDEC=0 - NWGLST=NWGTS - GENLST=GENEV - IF (IOPT.EQ.2) RETURN - ENDIF - NUMDEC=NUMDEC+1 - IF (NUMDEC.GT.MODMAX) THEN - CALL HWWARN('HWDBOZ',102) - GOTO 999 - ENDIF -C---IF PAIR OPTION SPECIFIED FOR THE FIRST TIME, MAKE CHOICE - IF (IOPT.EQ.1) THEN - IF (NUMDEC.GT.MODMAX-1) THEN - CALL HWWARN('HWDBOZ',103) - GOTO 999 - ENDIF - IF (NPAIR.EQ.0) THEN - IF (HWRGEN(1).GT.HALF) THEN - MODTMP=MODBOS(NUMDEC+1) - MODBOS(NUMDEC+1)=MODBOS(NUMDEC) - MODBOS(NUMDEC)=MODTMP - ENDIF - NPAIR=NUMDEC - ELSE - NPAIR=0 - ENDIF - ENDIF -C---SELECT USER'S CHOICE - IF (IDBOS.EQ.200) THEN - IF (MODBOS(NUMDEC).EQ.1) THEN - I1=1 - I2=6 - ELSEIF (MODBOS(NUMDEC).EQ.2) THEN - I1=7 - I2=7 - ELSEIF (MODBOS(NUMDEC).EQ.3) THEN - I1=8 - I2=8 - ELSEIF (MODBOS(NUMDEC).EQ.4) THEN - I1=9 - I2=9 - ELSEIF (MODBOS(NUMDEC).EQ.5) THEN - I1=7 - I2=8 - ELSEIF (MODBOS(NUMDEC).EQ.6) THEN - I1=10 - I2=12 - ELSEIF (MODBOS(NUMDEC).EQ.7) THEN - I1=5 - I2=5 - ELSE - I1=1 - I2=12 - ENDIF - ELSE - IF (MODBOS(NUMDEC).EQ.1) THEN - I1=1 - I2=5 - ELSEIF (MODBOS(NUMDEC).EQ.2) THEN - I1=6 - I2=6 - ELSEIF (MODBOS(NUMDEC).EQ.3) THEN - I1=7 - I2=7 - ELSEIF (MODBOS(NUMDEC).EQ.4) THEN - I1=8 - I2=8 - ELSEIF (MODBOS(NUMDEC).EQ.5) THEN - I1=6 - I2=7 - ELSE - I1=1 - I2=8 - ENDIF - ENDIF - 10 IDEC=HWRINT(I1,I2) - IF (HWRGEN(0).GT.BRMODE(IDEC,IDBOS-197).AND.I1.NE.I2) GOTO 10 - IFER=IDMODE(1,IDEC,IDBOS-197) - IANT=IDMODE(2,IDEC,IDBOS-197) -C---CALCULATE BRANCHING RATIO -C (RESULT IS NOT WELL-DEFINED AFTER THE FIRST CALL OF A PAIR) - BR=0 - DO 20 IDEC=I1,I2 - 20 BR=BR+BRMODE(IDEC,IDBOS-197) - IF (IOPT.EQ.1) THEN - IF (NPAIR.NE.0) THEN - I1LST=I1 - I2LST=I2 - BRLST=BR - ELSE - BRCOM=0 - DO 30 IDEC=MAX(I1,I1LST),MIN(I2,I2LST) - 30 BRCOM=BRCOM+BRMODE(IDEC,IDBOS-197) - BR=2*BR*BRLST - BRCOM**2 - ENDIF - ENDIF -C---SET UP VECTOR AND AXIAL VECTOR COUPLINGS (NORMALIZED TO THE -C CONVENTION WHERE THE WEAK CURRENT IS G*(CV-CA*GAM5) ) - IF (IDBOS.EQ.200) THEN - IF (IFER.LE.6) THEN -C Quark couplings - CV=VFCH(IFER,1) - CA=AFCH(IFER,1) - ELSE -C lepton couplings - JFER=IFER-110 - CV=VFCH(JFER,1) - CA=AFCH(JFER,1) - ENDIF - CV=CV * FACZ - CA=CA * FACZ - ELSE - CV=FACW - CA=FACW - ENDIF - 999 RETURN - END diff --git a/Generators/Herwig_i/src/HerwigModified/rpv/hwdbz2.f b/Generators/Herwig_i/src/HerwigModified/rpv/hwdbz2.f deleted file mode 100644 index ad68aa20fee3e003fea215f37e26b77f5ebf43c6..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/src/HerwigModified/rpv/hwdbz2.f +++ /dev/null @@ -1,179 +0,0 @@ -CDECK ID>, HWDBZ2. -*CMZ :- -02/04/01 12.11.55 by Peter Richardson -*-- Author : Peter Richardson based on Mike Seymour's HWDBOZ -C----------------------------------------------------------------------- - SUBROUTINE HWDBZ2(IDBOS,IFER,IANT,CV,CA,BR,IOPT,MASS) -C----------------------------------------------------------------------- -C CHOOSE DECAY MODE OF BOSON -C IOPT=2 TO RESET COUNTERS, 1 FOR BOSON PAIR, 0 FOR ANY OTHERS -C IDENTICAL TO HWDBOZ BUT REQUIRES DECAY MODE ACCESSIBLE FOR GIVEN -C MASS -C----------------------------------------------------------------------- - INCLUDE 'HERWIG65.INC' - DOUBLE PRECISION HWRGEN,BRMODE(12,3),CV,CA,BR,BRLST,BRCOM,FACZ, - & FACW,MSMODE(12,3),MASS - INTEGER HWRINT,IDBOS,IDEC,IDMODE(2,12,3),IFER,IANT,IOPT,I1,I2, - & I1LST,I2LST,NWGLST,NUMDEC,NPAIR,MODTMP,JFER,NTRY - LOGICAL GENLST - EXTERNAL HWRGEN,HWRINT - SAVE FACW,FACZ,MSMODE,NWGLST,GENLST,NUMDEC,NPAIR,I1LST,I2LST,BRLST - SAVE IDMODE,BRMODE - DATA NWGLST,GENLST,NPAIR/-1,.FALSE.,0/ -C---STORE THE DECAY MODES (FERMION FIRST) - DATA IDMODE/ 2, 7, 4, 9, 6, 11, 2, 9, 4, 7, - & 122,127,124,129,126,131,8*0, - & 1, 8, 3, 10, 5, 12, 3, 8, 1, 10, - & 121,128,123,130,125,132,8*0, - & 1, 7, 2, 8, 3, 9, 4, 10, 5, 11, 6, 12, - & 121,127,123,129,125,131,122,128,124,130,126,132/ -C---STORE THE BRANCHING RATIOS TO THESE MODES - DATA BRMODE/0.321D0,0.321D0,0.000D0,0.017D0,0.017D0,0.108D0, - & 0.108D0,0.108D0,4*0.0D0, - & 0.321D0,0.321D0,0.000D0,0.017D0,0.017D0,0.108D0, - & 0.108D0,0.108D0,4*0.0D0, - & 0.154D0,0.120D0,0.154D0,0.120D0,0.152D0,0.000D0, - & 0.033D0,0.033D0,0.033D0,0.067D0,0.067D0,0.067D0/ - DATA MSMODE/36*0.0D0/ -C---FACTORS FOR CV AND CA FOR W AND Z - DATA FACW,FACZ/2*0.0D0/ - IF (FACZ.EQ.ZERO) FACZ=SQRT(SWEIN) - IF (FACW.EQ.ZERO) FACW=0.5/SQRT(2D0) - IF (IDBOS.LT.198.OR.IDBOS.GT.200) THEN - CALL HWWARN('HWDBZ2',101) - GOTO 999 - ENDIF - IF(MSMODE(1,1).EQ.ZERO) THEN - DO I1=1,12 - DO I2=1,3 - MSMODE(I1,I2)=RMASS(IDMODE(1,I1,I2))+RMASS(IDMODE(2,I1,I2)) - ENDDO - ENDDO - ENDIF -C---IF THIS IS A NEW EVENT SINCE LAST TIME, ZERO COUNTERS - IF (NWGTS.NE.NWGLST .OR.(GENEV.NEQV.GENLST).OR. IOPT.EQ.2) THEN - NPAIR=0 - NUMDEC=0 - NWGLST=NWGTS - GENLST=GENEV - IF (IOPT.EQ.2) RETURN - ENDIF - NUMDEC=NUMDEC+1 - IF (NUMDEC.GT.MODMAX) THEN - CALL HWWARN('HWDBZ2',102) - GOTO 999 - ENDIF -C---IF PAIR OPTION SPECIFIED FOR THE FIRST TIME, MAKE CHOICE - IF (IOPT.EQ.1) THEN - IF (NUMDEC.GT.MODMAX-1) THEN - CALL HWWARN('HWDBZ2',103) - GOTO 999 - ENDIF - IF (NPAIR.EQ.0) THEN - IF (HWRGEN(1).GT.HALF) THEN - MODTMP=MODBOS(NUMDEC+1) - MODBOS(NUMDEC+1)=MODBOS(NUMDEC) - MODBOS(NUMDEC)=MODTMP - ENDIF - NPAIR=NUMDEC - ELSE - NPAIR=0 - ENDIF - ENDIF -C---SELECT USER'S CHOICE - IF (IDBOS.EQ.200) THEN - IF (MODBOS(NUMDEC).EQ.1) THEN - I1=1 - I2=6 - ELSEIF (MODBOS(NUMDEC).EQ.2) THEN - I1=7 - I2=7 - ELSEIF (MODBOS(NUMDEC).EQ.3) THEN - I1=8 - I2=8 - ELSEIF (MODBOS(NUMDEC).EQ.4) THEN - I1=9 - I2=9 - ELSEIF (MODBOS(NUMDEC).EQ.5) THEN - I1=7 - I2=8 - ELSEIF (MODBOS(NUMDEC).EQ.6) THEN - I1=10 - I2=12 - ELSEIF (MODBOS(NUMDEC).EQ.7) THEN - I1=5 - I2=5 - ELSE - I1=1 - I2=12 - ENDIF - ELSE - IF (MODBOS(NUMDEC).EQ.1) THEN - I1=1 - I2=5 - ELSEIF (MODBOS(NUMDEC).EQ.2) THEN - I1=6 - I2=6 - ELSEIF (MODBOS(NUMDEC).EQ.3) THEN - I1=7 - I2=7 - ELSEIF (MODBOS(NUMDEC).EQ.4) THEN - I1=8 - I2=8 - ELSEIF (MODBOS(NUMDEC).EQ.5) THEN - I1=6 - I2=7 - ELSE - I1=1 - I2=8 - ENDIF - ENDIF - NTRY = 0 - 10 IDEC=HWRINT(I1,I2) - NTRY = NTRY+1 - IF (HWRGEN(0).GT.BRMODE(IDEC,IDBOS-197).AND.I1.NE.I2) GOTO 10 - IF(MASS.LT.MSMODE(IDEC,IDBOS-197).AND.NTRY.LT.NBTRY) GOTO 10 - IF(NTRY.GE.NBTRY) THEN - BR = ZERO - RETURN - ENDIF - IFER=IDMODE(1,IDEC,IDBOS-197) - IANT=IDMODE(2,IDEC,IDBOS-197) -C---CALCULATE BRANCHING RATIO -C (RESULT IS NOT WELL-DEFINED AFTER THE FIRST CALL OF A PAIR) - BR=0 - DO 20 IDEC=I1,I2 - 20 IF(MSMODE(IDEC,IDBOS-197).LT.MASS) BR=BR+BRMODE(IDEC,IDBOS-197) - IF (IOPT.EQ.1) THEN - IF (NPAIR.NE.0) THEN - I1LST=I1 - I2LST=I2 - BRLST=BR - ELSE - BRCOM=0 - DO 30 IDEC=MAX(I1,I1LST),MIN(I2,I2LST) - 30 IF(MSMODE(IDEC,IDBOS-197).LT.MASS) - & BRCOM=BRCOM+BRMODE(IDEC,IDBOS-197) - BR=2*BR*BRLST - BRCOM**2 - ENDIF - ENDIF -C---SET UP VECTOR AND AXIAL VECTOR COUPLINGS (NORMALIZED TO THE -C CONVENTION WHERE THE WEAK CURRENT IS G*(CV-CA*GAM5) ) - IF (IDBOS.EQ.200) THEN - IF (IFER.LE.6) THEN -C Quark couplings - CV=VFCH(IFER,1) - CA=AFCH(IFER,1) - ELSE -C lepton couplings - JFER=IFER-110 - CV=VFCH(JFER,1) - CA=AFCH(JFER,1) - ENDIF - CV=CV * FACZ - CA=CA * FACZ - ELSE - CV=FACW - CA=FACW - ENDIF - 999 RETURN - END diff --git a/Generators/Herwig_i/src/HerwigModified/rpv/hwdho1.f b/Generators/Herwig_i/src/HerwigModified/rpv/hwdho1.f deleted file mode 100644 index d66d8eeb6cf1d88fd3be94855925a7212dd8e57f..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/src/HerwigModified/rpv/hwdho1.f +++ /dev/null @@ -1,132 +0,0 @@ -CDECK ID>, HWDHO1. -*CMZ :- -17/10/01 10:19:15 by Peter Richardson -*-- Author : Ian Knowles & Bryan Webber -C----------------------------------------------------------------------- - SUBROUTINE HWDHO1(IHEP,ID,IM,NPR,LHEP,MHEP) -C----------------------------------------------------------------------- -C Subroutine to perform the first part of the heavy object decays -C IE to select the decay mode -C was part of HWDHOB -C----------------------------------------------------------------------- - INCLUDE 'HERWIG65.INC' - DOUBLE PRECISION HWUMBW,HWRGEN,SDKM,RN,BF - INTEGER IST(4),IHEP,ID,IM,I,JHEP,LHEP,MHEP,NPR,MTRY,NTRY,IS - EXTERNAL HWRGEN - SAVE IST - DATA IST/113,114,114,114/ - IF (IERROR.NE.0) RETURN - IF(.NOT.RPARTY) THEN - NHEP = NHEP+1 - ISTHEP(NHEP) = 3 - IDHW(NHEP) = 20 - IDHEP(NHEP) = 0 - CALL HWVEQU(5,PHEP(1,IHEP),PHEP(1,NHEP)) - CALL HWVEQU(4,VHEP(1,IHEP),VHEP(1,NHEP)) - JMOHEP(1,NHEP)=JMOHEP(1,IHEP) - JMOHEP(2,NHEP)=JMOHEP(2,IHEP) - JDAHEP(1,NHEP)=JDAHEP(1,IHEP) - JDAHEP(2,NHEP)=JDAHEP(2,IHEP) - ENDIF -C Make a copy of decaying object - NHEP=NHEP+1 - ISTHEP(NHEP)=155 - IDHW(NHEP)=IDHW(IHEP) - IDHEP(NHEP)=IDHEP(IHEP) - CALL HWVEQU(5,PHEP(1,IHEP),PHEP(1,NHEP)) - CALL HWVEQU(4,VHEP(1,IHEP),VHEP(1,NHEP)) - JMOHEP(1,NHEP)=JMOHEP(1,IHEP) - JMOHEP(2,NHEP)=JMOHEP(2,IHEP) -C--copy the location of the particle in the spin block - IF(SYSPIN.AND.NSPN.NE.0) THEN - IF(ISNHEP(IHEP).EQ.0) THEN - IS = IHEP - MTRY = 0 - 5 MTRY = MTRY+1 - IS = JMOHEP(1,IS) - IF(ISNHEP(IS).EQ.0.AND.MTRY.LE.NETRY) GOTO 5 - IF(MTRY.GT.NETRY) THEN - CALL HWWARN('HWDHO1',102) - GOTO 999 - ENDIF - ISNHEP(IHEP) = ISNHEP(IS) - ENDIF - ISNHEP(NHEP) = ISNHEP(JMOHEP(1,NHEP)) - ENDIF - MTRY=0 - 15 MTRY=MTRY+1 -C Select decay mode - RN=HWRGEN(0) - BF=0. - IM=LSTRT(ID) - DO 20 I=1,NMODES(ID) - BF=BF+BRFRAC(IM) - IF (BF.GE.RN) GOTO 30 - 20 IM=LNEXT(IM) - CALL HWWARN('HWDHO1',50) - 30 IF (NHEP+5.GT.NMXHEP) THEN - CALL HWWARN('HWDHO1',100) - GOTO 999 - ENDIF - NPR=NPRODS(IM) - JDAHEP(1,NHEP)=NHEP+1 - JDAHEP(2,NHEP)=NHEP+NPR -C Reset colour pointers (if set) - JHEP=JMOHEP(2,IHEP) - IF (JHEP.GT.0) THEN - IF (JDAHEP(2,JHEP).EQ.IHEP) JDAHEP(2,JHEP)=NHEP - IF(.NOT.RPARTY.AND.ISTHEP(JHEP).EQ.155 - & .AND.ABS(IDHEP(JHEP)).GT.1000000 - & .AND.JDAHEP(2,JHEP-1).EQ.IHEP) JDAHEP(2,JHEP-1) = NHEP - ENDIF - JHEP=JDAHEP(2,IHEP) - IF (JHEP.GT.0) THEN - IF (JMOHEP(2,JHEP).EQ.IHEP) JMOHEP(2,JHEP)=NHEP - IF(.NOT.RPARTY.AND.ISTHEP(JHEP).EQ.155 - & .AND.ABS(IDHEP(JHEP)).GT.1000000 - & .AND.JMOHEP(2,JHEP-1).EQ.IHEP) JMOHEP(2,JHEP-1) = NHEP - ENDIF -C--Reset colour pointers if baryon number violated - IF(.NOT.RPARTY) THEN - DO JHEP=1,NHEP - IF(ISTHEP(JHEP).EQ.155 - & .AND.ABS(IDHEP(JHEP)).GT.1000000.AND. - & JDAHEP(2,JHEP-1).EQ.IHEP) JDAHEP(2,JHEP-1)= NHEP - IF(JDAHEP(2,JHEP).EQ.IHEP) JDAHEP(2,JHEP)=NHEP - IF(JMOHEP(2,JHEP).EQ.IHEP) JMOHEP(2,JHEP)=NHEP - ENDDO - IF(HRDCOL(1,1).EQ.IHEP) HRDCOL(1,1)=NHEP - ENDIF -C Relabel original track - IF (ISTHEP(IHEP).NE.120) ISTHEP(IHEP)=3 - JMOHEP(2,IHEP)=JMOHEP(1,IHEP) - JDAHEP(1,IHEP)=NHEP - JDAHEP(2,IHEP)=NHEP -C Label decay products and choose masses - LHEP=NHEP - MHEP=LHEP+1 - NTRY=0 - 35 NTRY=NTRY+1 - SDKM=PHEP(5,NHEP) - DO 40 I=1,NPR - NHEP=NHEP+1 - IDHW(NHEP)=IDKPRD(I,IM) - IDHEP(NHEP)=IDPDG(IDKPRD(I,IM)) - ISTHEP(NHEP)=IST(I) - JMOHEP(1,NHEP)=LHEP - JDAHEP(1,NHEP)=0 - PHEP(5,NHEP)=HWUMBW(IDKPRD(I,IM)) - 40 SDKM=SDKM-PHEP(5,NHEP) - IF (SDKM.LT.ZERO) THEN - NHEP=NHEP-NPR - IF (NTRY.LE.NETRY) GO TO 35 - CALL HWWARN('HWDHO1',1) - IF (MTRY.LE.NETRY) GO TO 15 - CALL HWWARN('HWDHO1',101) - GOTO 999 - ENDIF -C Assign production vertices to decay products - CALL HWUDKL(ID,PHEP(1,IHEP),VHEP(1,MHEP)) - CALL HWVSUM(4,VHEP(1,IHEP),VHEP(1,MHEP),VHEP(1,MHEP)) - CALL HWVEQU(4,VHEP(1,MHEP),VHEP(1,NHEP)) - 999 RETURN - END diff --git a/Generators/Herwig_i/src/HerwigModified/rpv/hwdho2.f b/Generators/Herwig_i/src/HerwigModified/rpv/hwdho2.f deleted file mode 100644 index 83e16da58c130834da154aab94137ba19a423f59..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/src/HerwigModified/rpv/hwdho2.f +++ /dev/null @@ -1,155 +0,0 @@ -CDECK ID>, HWDH02. -*CMZ :- -30/09/02 14:05:28 by Peter Richardson -*-- Author : Ian Knowles & Bryan Webber -C----------------------------------------------------------------------- - SUBROUTINE HWDHO2(IHEP,IM,NPR,MHEP,LHEP,KHEP,PW) -C----------------------------------------------------------------------- -C Subroutine to perform the second part of the heavy object decays -C IE generate the kinematics for the decay -C was part of HWDHOB -C----------------------------------------------------------------------- - INCLUDE 'HERWIG65.INC' - COMMON/FFS/TB,BT - COMMON/SFF/IT1,IB1,IT2,IB2 - DOUBLE PRECISION TB,BT - INTEGER IT1,IB1,IT2,IB2,ISP - DOUBLE PRECISION GAMHPM - DOUBLE PRECISION HWUPCM,HWRGEN,PCM, - & EMMX,EMWSQ,GMWSQ,EMLIM,PW(5),EMTST,HWDPWT,HWDWWT,HWULDO,HWDHWT - DOUBLE COMPLEX RHOIN(2,2,2) - INTEGER IHEP,IM,KHEP,LHEP,MHEP,NPR,RHEP - EXTERNAL HWRGEN,HWDPWT,HWDWWT,HWDHWT - SAVE RHOIN - DATA RHOIN/(1.0D0,0.0D0),(0.0D0,0.0D0), - & (0.0D0,0.0D0),(0.0D0,0.0D0), - & (0.5D0,0.0D0),(0.0D0,0.0D0), - & (0.0D0,0.0D0),(0.5D0,0.0D0)/ - ISP = INT(2*RSPIN(IDHW(IHEP)))+1 - IF (IERROR.NE.0) RETURN - IF (NPR.EQ.2) THEN -C Two body decay: LHEP -> MHEP + NHEP - IF(NME(IM).GT.20000.AND.NME(IM).LT.30000) THEN -C--generate a two body decay to a gauge boson as a three body decay - CALL HWDSM3(2,IHEP,MHEP,NHEP,0,NME(IM)-20000,RHOIN(1,1,ISP),1) -C--generate a two body decay of a Higgs to two gauge bosons - ELSEIF(NME(IM).GT.40000.AND.NME(IM).LT.50000) THEN - CALL HWDSM4(1,IHEP,MHEP,NHEP,NME(IM)-40000) -C--if spin correlations call the routine to set-up the matrix element - ELSEIF(SYSPIN.AND.NME(IM).GE.30000.AND.NME(IM).LE.40000) THEN - CALL HWDSM2(IHEP,MHEP,NHEP,NME(IM)-30000,RHOIN(1,1,ISP),1) - ELSE - PCM=HWUPCM(PHEP(5,IHEP),PHEP(5,MHEP),PHEP(5,NHEP)) - CALL HWDTWO(PHEP(1,IHEP),PHEP(1,MHEP), - & PHEP(1,NHEP),PCM,TWO,.FALSE.) - ENDIF - ELSEIF (NPR.EQ.3) THEN -C Three body decay: LHEP -> KHEP + MHEP + NHEP - KHEP=MHEP - MHEP=MHEP+1 -C Provisional colour self-connection of KHEP - JMOHEP(2,KHEP)=KHEP - JDAHEP(2,KHEP)=KHEP - IF (NME(IM).EQ.100) THEN -C Generate decay momenta using full (V-A)*(V-A) matrix element - EMMX=PHEP(5,IHEP)-PHEP(5,NHEP) - EMWSQ=RMASS(198)**2 - GMWSQ=(RMASS(198)*GAMW)**2 - EMLIM=GMWSQ - IF (EMMX.LT.RMASS(198)) EMLIM=EMLIM+(EMWSQ-EMMX**2)**2 - 50 CALL HWDTHR(PHEP(1,IHEP),PHEP(1,MHEP), - & PHEP(1,KHEP),PHEP(1,NHEP),HWDWWT) - CALL HWVSUM(4,PHEP(1,KHEP),PHEP(1,MHEP),PW) - PW(5)=HWULDO(PW,PW) - EMTST=(EMWSQ-PW(5))**2 - IF ((EMTST+GMWSQ)*HWRGEN(1).GT.EMLIM) GOTO 50 - PW(5)=SQRT(PW(5)) -C Assign production vertices to 1 and 2 - CALL HWUDKL(198,PW,VHEP(1,KHEP)) - CALL HWVSUM(4,VHEP(1,NHEP),VHEP(1,KHEP),VHEP(1,KHEP)) - ELSE IF (NME(IM).EQ.200) THEN -C Generate decay momenta using full -C ((V-A)*TB1+(V+A)*CT1)*((V-A)*TB2+(V+A)*CT2)) matrix element - GAMHPM=RMASS(206)/DKLTM(206) -C sort tan(beta) - IF((IDK(IM).EQ. 2).OR.(IDK(IM).EQ. 4).OR. - & (IDK(IM).EQ. 6).OR.(IDK(IM).EQ. 8).OR. - & (IDK(IM).EQ. 10).OR.(IDK(IM).EQ. 12).OR. - & (IDK(IM).EQ.122).OR.(IDK(IM).EQ.124).OR. - & (IDK(IM).EQ.126).OR.(IDK(IM).EQ.128).OR. - & (IDK(IM).EQ.130).OR.(IDK(IM).EQ.132))THEN - TB=TANB - ELSE - TB=1./TANB - END IF - IF((IDKPRD(1,IM).EQ. 2).OR.(IDKPRD(1,IM).EQ. 4).OR. - & (IDKPRD(1,IM).EQ. 6).OR.(IDKPRD(1,IM).EQ. 8).OR. - & (IDKPRD(1,IM).EQ. 10).OR.(IDKPRD(1,IM).EQ. 12).OR. - & (IDKPRD(1,IM).EQ.122).OR.(IDKPRD(1,IM).EQ.124).OR. - & (IDKPRD(1,IM).EQ.126).OR.(IDKPRD(1,IM).EQ.128).OR. - & (IDKPRD(1,IM).EQ.130).OR.(IDKPRD(1,IM).EQ.132))THEN - BT=TANB - ELSE - BT=1./TANB - END IF - IT1=IDK(IM) - IB1=IDKPRD(3,IM) - IT2=IDKPRD(1,IM) - IB2=IDKPRD(2,IM) - EMMX=PHEP(5,IHEP)-PHEP(5,NHEP) - EMWSQ=RMASS(206)**2 - GMWSQ=(RMASS(206)*GAMHPM)**2 - EMLIM=GMWSQ - IF (EMMX.LT.RMASS(206)) EMLIM=EMLIM+(EMWSQ-EMMX**2)**2 - 55 CALL HWDTHR(PHEP(1,IHEP),PHEP(1,NHEP), - & PHEP(1,KHEP),PHEP(1,MHEP),HWDHWT) - CALL HWVSUM(4,PHEP(1,KHEP),PHEP(1,MHEP),PW) - PW(5)=HWULDO(PW,PW) - EMTST=(EMWSQ-PW(5))**2 - IF ((EMTST+GMWSQ)*HWRGEN(2).GT.EMLIM) GOTO 55 - PW(5)=SQRT(PW(5)) -C Assign production vertices to 1 and 2 - CALL HWUDKL(206,PW,VHEP(1,KHEP)) - CALL HWVSUM(4,VHEP(1,NHEP),VHEP(1,KHEP),VHEP(1,KHEP)) - ELSEIF(NME(IM).EQ.300) THEN -C Generate momenta using 3-body RPV matrix element - CALL HWDRME(LHEP,KHEP) -C--Three body SUSY decay - ELSEIF(NME(IM).GE.10000.AND.NME(IM).LT.20000) THEN - CALL HWDSM3(3,IHEP,MHEP,KHEP,NHEP,NME(IM)-10000, - & RHOIN(1,1,ISP),1) -C--special for top decay - IF(ABS(IDHEP(IHEP)).EQ.6) THEN - CALL HWVSUM(4,PHEP(1,KHEP),PHEP(1,MHEP),PW) - CALL HWUMAS(PW) - ENDIF - ELSE -C Three body phase space decay - CALL HWDTHR(PHEP(1,IHEP),PHEP(1,MHEP), - & PHEP(1,KHEP),PHEP(1,NHEP),HWDPWT) - ENDIF - CALL HWVEQU(4,VHEP(1,KHEP),VHEP(1,MHEP)) - ELSEIF(NPR.EQ.4) THEN -C Four body decay: LHEP -> KHEP + RHEP + MHEP + NHEP - KHEP = MHEP - RHEP = MHEP+1 - MHEP = MHEP+2 - ISTHEP(NHEP) = 114 -C Provisional colour connections of KHEP and RHEP - JMOHEP(2,KHEP)=RHEP - JDAHEP(2,KHEP)=RHEP - JMOHEP(2,RHEP)=KHEP - JDAHEP(2,RHEP)=KHEP -C Four body RPV decay - IF(NME(IM).EQ.1000) THEN - CALL HWDRPD(IHEP,KHEP,NHEP) -C Four body phase space decay - ELSE - CALL HWDFOR(PHEP(1,IHEP),PHEP(1,KHEP),PHEP(1,RHEP), - & PHEP(1,MHEP),PHEP(1,NHEP)) - ENDIF - CALL HWVEQU(4,VHEP(1,KHEP),VHEP(1,RHEP)) - CALL HWVEQU(4,VHEP(1,KHEP),VHEP(1,MHEP)) - ELSE - CALL HWWARN('HWDHO2',100) - ENDIF - END diff --git a/Generators/Herwig_i/src/HerwigModified/rpv/hwdho3.f b/Generators/Herwig_i/src/HerwigModified/rpv/hwdho3.f deleted file mode 100644 index c1c4c00eb44efe60d639f55c4f875a8e50cd152c..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/src/HerwigModified/rpv/hwdho3.f +++ /dev/null @@ -1,204 +0,0 @@ -CDECK ID>, HWDHO3. -*CMZ :- -17/10/01 10:19:15 by Peter Richardson -*-- Author : Ian Knowles & Bryan Webber -C----------------------------------------------------------------------- - SUBROUTINE HWDHO3(ID,IM,NPR,MHEP,LHEP,KHEP,CLSAVE) -C----------------------------------------------------------------------- -C Subroutine to perform the third part of the heavy object decays -C IE setup the colour connections -C was part of HWDHOB -C----------------------------------------------------------------------- - INCLUDE 'HERWIG65.INC' - INTEGER ID,IM,KHEP,LHEP,MHEP,NPR,CLSAVE(2) - IF (IERROR.NE.0) RETURN -C Colour connections - IF (ID.EQ.6.OR.ID.EQ.12.OR.(ID.GE.209.AND.ID.LE.212) - & .OR.(ID.GE.215.AND.ID.LE.218)) THEN - IF ((NPR.EQ.3.AND.NME(IM).EQ.100).OR. - & ((SYSPIN.OR.THREEB).AND.NPR.EQ.3.AND. - & NME(IM).GE.10000.AND.NME(IM).LE.20000)) THEN -C usual heavy quark decay - JMOHEP(2,KHEP)=MHEP - JDAHEP(2,KHEP)=MHEP - JMOHEP(2,MHEP)=KHEP - JDAHEP(2,MHEP)=KHEP - JMOHEP(2,NHEP)=LHEP - JDAHEP(2,NHEP)=LHEP - ELSEIF (ABS(IDHEP(MHEP)).EQ.37) THEN -C heavy quark to charged Higgs 2->2 - JMOHEP(2,MHEP)=MHEP - JDAHEP(2,MHEP)=MHEP - JMOHEP(2,NHEP)=LHEP - JDAHEP(2,NHEP)=LHEP - ELSEIF (ABS(IDHEP(NHEP)).EQ.37) THEN -C heavy quark to charged Higgs 2->2 - JMOHEP(2,MHEP)=LHEP - JDAHEP(2,MHEP)=LHEP - JMOHEP(2,NHEP)=NHEP - JDAHEP(2,NHEP)=NHEP - ELSE IF (NPR.EQ.3.AND.NME(IM).EQ.200) THEN -C heavy quark to charged Higgs 2->3 - JMOHEP(2,KHEP)=MHEP - JDAHEP(2,KHEP)=MHEP - JMOHEP(2,MHEP)=KHEP - JDAHEP(2,MHEP)=KHEP - JMOHEP(2,NHEP)=LHEP - JDAHEP(2,NHEP)=LHEP - ELSE - CALL HWWARN('HWDHO3',100) - GOTO 999 - ENDIF - ELSEIF(.NOT.RPARTY.AND.NPR.EQ.4.AND.(ID.EQ.429.OR.ID.EQ.435)) THEN - JMOHEP(2,KHEP) = KHEP - JDAHEP(2,KHEP) = KHEP - JMOHEP(2,KHEP+1) = KHEP+2 - JDAHEP(2,KHEP+1) = KHEP+2 - JMOHEP(2,KHEP+2) = KHEP+1 - JDAHEP(2,KHEP+2) = KHEP+1 - JMOHEP(2,KHEP+3) = KHEP+3 - JDAHEP(2,KHEP+3) = KHEP+3 - ELSE - IF(.NOT.RPARTY.AND. - & ((NPR.EQ.2.AND.ID.GE.401.AND.ID.LT.448.AND. - & IDHW(MHEP).LE.132.AND.IDHW(NHEP).LE.132) - & .OR.(NPR.EQ.3.AND.ID.GE.449.AND.ID.LE.457.AND. - & IDHW(MHEP).LE.132.AND.IDHW(NHEP).LE.132.AND. - & IDHW(MHEP-1).LE.132))) THEN -C R-parity violating SUSY decays - IF(NPR.EQ.2) THEN -C--Rparity slepton colour connections - IF(ID.GE.425.AND.ID.LE.448) THEN - IF(IDHW(MHEP).GT.12) THEN - JMOHEP(2,MHEP) = MHEP - JDAHEP(2,MHEP) = MHEP - JMOHEP(2,NHEP) = NHEP - JDAHEP(2,NHEP) = NHEP - ELSE - JMOHEP(2,MHEP) = NHEP - JDAHEP(2,MHEP) = NHEP - JMOHEP(2,NHEP) = MHEP - JDAHEP(2,NHEP) = MHEP - ENDIF -C--Rparity squark colour connections - ELSE - IF(IDHEP(LHEP).GT.0) THEN -C--LQD decay colour connections - IF(IDHW(MHEP).GT.12) THEN - JMOHEP(2,MHEP) = MHEP - JDAHEP(2,MHEP) = MHEP - JMOHEP(2,NHEP) = LHEP - JDAHEP(2,NHEP) = LHEP - ELSE -C--UDD decay colour connections - HVFCEN = .TRUE. - CALL HWDRCL(LHEP,MHEP,CLSAVE) - ENDIF - ELSE -C--Antisquark connections - IF(IDHW(MHEP).GT.12) THEN - JMOHEP(2,MHEP) = MHEP - JDAHEP(2,MHEP) = MHEP - JMOHEP(2,NHEP) = LHEP - JDAHEP(2,NHEP) = LHEP - ELSE - HVFCEN = .TRUE. - CALL HWDRCL(LHEP,MHEP,CLSAVE) - ENDIF - ENDIF - ENDIF - ELSE - IF(ID.GE.450.AND.ID.LE.457) THEN -C--Rparity Neutralino/Chargino colour connection - IF(IDHW(MHEP-1).LE.12.AND.IDHW(MHEP).LE.12. - & AND.IDHW(NHEP).LE.12) THEN - HVFCEN = .TRUE. - CALL HWDRCL(LHEP,MHEP,CLSAVE) - ELSE - JMOHEP(2,MHEP) = NHEP - JDAHEP(2,MHEP) = NHEP - JMOHEP(2,NHEP) = MHEP - JDAHEP(2,NHEP) = MHEP - ENDIF -C--Rparity gluino colour connections - ELSEIF(ID.EQ.449) THEN - IF(IDHW(MHEP-1).LE.12.AND.IDHW(MHEP).LE.12. - & AND.IDHW(NHEP).LE.12) THEN - HVFCEN = .TRUE. - CALL HWDRCL(LHEP,MHEP,CLSAVE) -C--Now the lepton number violating decay - ELSE - IF(IDHW(MHEP).LE.6) THEN - JMOHEP(2,MHEP) = LHEP - JDAHEP(2,MHEP) = NHEP - JMOHEP(2,NHEP) = MHEP - JDAHEP(2,NHEP) = LHEP - ELSE - JMOHEP(2,MHEP) = NHEP - JDAHEP(2,MHEP) = LHEP - JMOHEP(2,NHEP) = LHEP - JDAHEP(2,NHEP) = MHEP - ENDIF - ENDIF - ELSE - CALL HWWARN('HWDHO3',101) - GOTO 999 - ENDIF - ENDIF - ELSE -C Normal SUSY decays - IF (ID.LE.448.AND.ID.GT.207) THEN -C Squark (or slepton) - IF (IDHW(MHEP).EQ.449) THEN - IF (IDHEP(LHEP).GT.0) THEN - JMOHEP(2,MHEP)=LHEP - JDAHEP(2,MHEP)=NHEP - JMOHEP(2,NHEP)=MHEP - JDAHEP(2,NHEP)=LHEP - ELSE - JMOHEP(2,MHEP)=NHEP - JDAHEP(2,MHEP)=LHEP - JMOHEP(2,NHEP)=LHEP - JDAHEP(2,NHEP)=MHEP - ENDIF - ELSE - IF(NPR.EQ.3.AND.IDHW(MHEP).LE.12) THEN - JMOHEP(2,MHEP)=NHEP - JDAHEP(2,MHEP)=NHEP - JMOHEP(2,NHEP)=MHEP - JDAHEP(2,NHEP)=MHEP - ELSE - JMOHEP(2,MHEP)=MHEP - JDAHEP(2,MHEP)=MHEP - JMOHEP(2,NHEP)=LHEP - JDAHEP(2,NHEP)=LHEP - ENDIF - ENDIF - ELSEIF (ID.EQ.449) THEN -C Gluino - IF (IDHW(NHEP).EQ.13) THEN - JMOHEP(2,MHEP)=MHEP - JDAHEP(2,MHEP)=MHEP - JMOHEP(2,NHEP)=LHEP - JDAHEP(2,NHEP)=LHEP - ELSEIF (IDHEP(MHEP).GT.0) THEN - JMOHEP(2,MHEP)=LHEP - JDAHEP(2,MHEP)=NHEP - JMOHEP(2,NHEP)=MHEP - JDAHEP(2,NHEP)=LHEP - ELSE - JMOHEP(2,MHEP)=NHEP - JDAHEP(2,MHEP)=LHEP - JMOHEP(2,NHEP)=LHEP - JDAHEP(2,NHEP)=MHEP - ENDIF - ELSE -C Gaugino or Higgs - JMOHEP(2,MHEP)=NHEP - JDAHEP(2,MHEP)=NHEP - JMOHEP(2,NHEP)=MHEP - JDAHEP(2,NHEP)=MHEP - ENDIF - ENDIF - ENDIF - 999 RETURN - END diff --git a/Generators/Herwig_i/src/HerwigModified/rpv/hwdho4.f b/Generators/Herwig_i/src/HerwigModified/rpv/hwdho4.f deleted file mode 100644 index 52197d830017654d2e0ad37bfdf62bc34d14447d..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/src/HerwigModified/rpv/hwdho4.f +++ /dev/null @@ -1,221 +0,0 @@ -CDECK ID>, HWDHO4. -*CMZ :- -30/09/02 14:05:28 by Peter Richardson -*-- Author : Ian Knowles & Bryan Webber -C----------------------------------------------------------------------- - SUBROUTINE HWDHO4(IHEP,ID,IM,NPR,MHEP,LHEP,KHEP,PW) -C----------------------------------------------------------------------- -C Subroutine to perform the fourth part of the heavy object decays -C IE parton-showers with special treatment for top -C was part of HWDHOB -C----------------------------------------------------------------------- - INCLUDE 'HERWIG65.INC' - DOUBLE PRECISION PW(5),PDW(5,3),PDT(5,4),vtau(5) - INTEGER IHEP,ID,IM,I,KHEP,LHEP,MHEP,NPR,NTRY,WHEP,SHEP,CLSAVE(2) - DOUBLE COMPLEX RHOIN(2,2) - SAVE RHOIN - DATA RHOIN/(0.5D0,0.0D0),(0.0D0,0.0D0), - & (0.0D0,0.0D0),(0.5D0,0.0D0)/ - IF (IERROR.NE.0) RETURN - SHEP = NHEP -C---SPECIAL CASE FOR THREE-BODY TOP DECAYS: -C RELABEL THEM AS TWO TWO-BODY DECAYS FOR PARTON SHOWERING - IF ((ID.EQ.6.OR.ID.EQ.12).AND.NPR.EQ.3.AND. - & (NME(IM).EQ.100.OR.NME(IM).EQ.200.OR. - & (NME(IM).GT.10000.AND.NME(IM).LE.20000.AND. - & (SYSPIN.OR.THREEB)))) THEN -C---STORE W/H DECAY PRODUCTS - CALL HWVEQU(10,PHEP(1,KHEP),PDW) -C---BOOST THEM INTO W/H REST FRAME - CALL HWULOF(PW,PDW(1,1),PDW(1,3)) -C---REPLACE THEM BY W/H - CALL HWVEQU(5,PW,PHEP(1,KHEP)) - WHEP=KHEP - IF (NME(IM).EQ.100.OR.(NME(IM).GT.10000.AND. - & NME(IM).LE.20000.AND.(SYSPIN.OR.THREEB)))IDHW(KHEP)=198 - IF((NME(IM).EQ.100.OR.(NME(IM).GT.10000.AND. - & NME(IM).LE.20000.AND.(SYSPIN.OR.THREEB))).AND.(ID.EQ.12)) - & IDHW(KHEP)=199 - IF (NME(IM).EQ.200)IDHW(KHEP)=206 - IF((NME(IM).EQ.200).AND.(ID.EQ.12))IDHW(KHEP)=207 - IDHEP(KHEP)=IDPDG(IDHW(KHEP)) - JMOHEP(2,KHEP)=KHEP - JDAHEP(2,KHEP)=KHEP - CALL HWVEQU(4,VHEP(1,NHEP),VHEP(1,KHEP)) -C---AND MOVE B UP - CALL HWVEQU(5,PHEP(1,NHEP),PHEP(1,MHEP)) - IDHW(MHEP)=IDHW(NHEP) - IDHEP(MHEP)=IDHEP(NHEP) - JDAHEP(2,LHEP)=MHEP - JMOHEP(2,MHEP)=JMOHEP(2,NHEP) - JDAHEP(2,MHEP)=JDAHEP(2,NHEP) - CALL HWVEQU(4,VHEP(1,NHEP),VHEP(1,MHEP)) - NHEP=MHEP -C---DO PARTON SHOWER - EMSCA=PHEP(5,IHEP) - CALL HWBGEN - IF (IERROR.NE.0) RETURN -C---FIND BOOSTED W/H MOMENTUM - NTRY=0 - 41 NTRY=NTRY+1 - IF (NTRY.GT.NHEP.OR.WHEP.LE.0.OR.WHEP.GT.NHEP) THEN - CALL HWWARN('HWDHO4',100) - GOTO 999 - ENDIF - WHEP=JDAHEP(1,WHEP) - IF (ISTHEP(WHEP).NE.190) GOTO 41 -C---AND HENCE ITS CHILDRENS MOMENTA - CALL HWULOB(PHEP(1,WHEP),PDW(1,3),PHEP(1,NHEP+1)) - CALL HWVDIF(4,PHEP(1,WHEP),PHEP(1,NHEP+1),PHEP(1,NHEP+2)) - PHEP(5,NHEP+2)=PDW(5,2) -C---LABEL THEM - ISTHEP(WHEP)=195 - DO 51 I=1,2 - IDHW(NHEP+I)=IDKPRD(I,IM) - IDHEP(NHEP+I)=IDPDG(IDHW(NHEP+I)) - ISTHEP(NHEP+I)=112+I - JDAHEP(I,WHEP)=NHEP+I - JMOHEP(1,NHEP+I)=WHEP - JMOHEP(2,NHEP+I)=NHEP+3-I - JDAHEP(2,NHEP+I)=NHEP+3-I - 51 CONTINUE - NHEP=NHEP+2 -C---ASSIGN PRODUCTION VERTICES TO 1 AND 2 - IF(NME(IM).EQ.100)CALL HWUDKL(198,PW,VHEP(1,NHEP)) - IF(NME(IM).EQ.200)CALL HWUDKL(206,PW,VHEP(1,NHEP)) - CALL HWVSUM(4,VHEP(1,WHEP),VHEP(1,NHEP),VHEP(1,NHEP)) - CALL HWVEQU(4,VHEP(1,NHEP),VHEP(1,NHEP-1)) -C---DO PARTON SHOWERS - EMSCA=PW(5) -C--modification to use photos in top decays - IF(ITOPRD.EQ.1) CALL HWPHTP(WHEP) -C--end of modification - CALL HWBGEN - IF (IERROR.NE.0) RETURN -C--special for four body tau decays - ELSEIF((ID.EQ.429.OR.ID.EQ.435).AND.NPR.EQ.4) THEN -C--copy the momenta and id's of the decay products - CALL HWVZRO(5,PDT(1,4)) - DO I=1,3 - CALL HWVEQU(5,PHEP(1,KHEP-1+I),PDT(1,I)) - CALL HWVSUM(4,PHEP(1,KHEP-1+I),PDT(1,4),PDT(1,4)) - ENDDO - CALL HWUMAS(PDT(1,4)) -C--boost them into the rest frame of the gaugino - DO I=1,3 - CALL HWULOF(PDT(1,4),PDT(1,I),PDT(1,I)) - ENDDO -C--replace them with the neutralino/chargino - CALL HWVEQU(5,PDT(1,4),PHEP(1,KHEP)) - WHEP=KHEP - IF(ID.EQ.429.AND.IDHW(NHEP).EQ.126) THEN - IDHW(KHEP) = 456 - ELSEIF(ID.EQ.435.AND.IDHW(NHEP).EQ.132) THEN - IDHW(KHEP) = 454 - ELSE - IDHW(KHEP) = 450 - ENDIF - IDHEP(KHEP)=IDPDG(IDHW(KHEP)) - JMOHEP(2,KHEP)=KHEP - JDAHEP(2,KHEP)=KHEP - CALL HWVEQU(4,VHEP(1,NHEP),VHEP(1,KHEP)) -c--move tau/nu_tau up - CALL HWVEQU(5,PHEP(1,NHEP),PHEP(1,KHEP+1)) - IDHW(KHEP+1)=IDHW(NHEP) - IDHEP(KHEP+1)=IDHEP(NHEP) - JDAHEP(2,KHEP+1)=KHEP+1 - JMOHEP(2,KHEP+1)=KHEP+1 - CALL HWVEQU(4,VHEP(1,NHEP),VHEP(1,KHEP+1)) - NHEP=KHEP+1 - JDAHEP(2,LHEP)=KHEP+1 - ISTHEP(LHEP+1)=113 - ISTHEP(LHEP+2)=114 -C--do the parton shower (does nothing but relabels status codes) - EMSCA=PHEP(5,IHEP) - CALL HWBGEN - IF (IERROR.NE.0) RETURN -C--find the boosted gaugino - NTRY=0 - 52 NTRY=NTRY+1 - IF (NTRY.GT.NHEP.OR.WHEP.LE.0.OR.WHEP.GT.NHEP) THEN - CALL HWWARN('HWDHO4',101) - GOTO 999 - ENDIF - WHEP=JDAHEP(1,WHEP) - IF (ISTHEP(WHEP).NE.190) GOTO 52 -C--copy of particle for RPV colour code - NHEP = NHEP+1 - ISTHEP(NHEP) = 3 - IDHW(NHEP) = 20 - IDHEP(NHEP) = 0 - CALL HWVEQU(5,PHEP(1,WHEP),PHEP(1,NHEP)) - CALL HWVEQU(4,VHEP(1,WHEP),VHEP(1,NHEP)) - JMOHEP(1,NHEP)=JMOHEP(1,WHEP) - JMOHEP(2,NHEP)=JMOHEP(2,WHEP) - JDAHEP(1,NHEP)=JDAHEP(1,WHEP) - JDAHEP(2,NHEP)=JDAHEP(2,WHEP) -C--copy of gaugino - NHEP=NHEP+1 - ISTHEP(NHEP)=155 - IDHW(NHEP)=IDHW(WHEP) - IDHEP(NHEP)=IDHEP(WHEP) - CALL HWVEQU(5,PHEP(1,WHEP),PHEP(1,NHEP)) - CALL HWVEQU(4,VHEP(1,WHEP),VHEP(1,NHEP)) - JMOHEP(1,NHEP)=JMOHEP(1,WHEP) - JMOHEP(2,NHEP)=JMOHEP(2,WHEP) -C Relabel original track - IF (ISTHEP(WHEP).NE.120) ISTHEP(WHEP)=3 - JMOHEP(2,WHEP)=JMOHEP(1,WHEP) - JDAHEP(1,WHEP)=NHEP - JDAHEP(2,WHEP)=NHEP - WHEP=NHEP -C---children of the gaugino - CALL HWUDKL(IDHW(WHEP),PDT(1,4),VTAU) - CALL HWVSUM(4,VHEP(1,WHEP),VTAU,VTAU) - DO I=1,3 -C--momenta boost back to new frame - CALL HWULOB(PHEP(1,WHEP),PDT(1,I),PDT(1,I)) - CALL HWVEQU(5,PDT(1,I),PHEP(1,NHEP+I)) - CALL HWVEQU(4,VTAU,VHEP(1,NHEP+I)) - IDHW(NHEP+I)=IDKPRD(I,IM) - IDHEP(NHEP+I)=IDPDG(IDHW(NHEP+I)) - ISTHEP(NHEP+I)=114 - JMOHEP(1,NHEP+I)=WHEP - ENDDO - ISTHEP(NHEP+1)=113 - JDAHEP(1,WHEP)=NHEP+1 - JDAHEP(2,WHEP)=NHEP+3 -C--MAKE THE COLOUR CONNECTIONS - IF(IDHW(NHEP+1).LE.12.AND.IDHW(NHEP+2).LE.12. - & AND.IDHW(NHEP+3).LE.12) THEN - HVFCEN = .TRUE. - CALL HWDRCL(WHEP,NHEP+2,CLSAVE) - ELSE - JMOHEP(2,NHEP+1) = NHEP+1 - JDAHEP(2,NHEP+1) = NHEP+1 - JMOHEP(2,NHEP+2) = NHEP+3 - JDAHEP(2,NHEP+2) = NHEP+3 - JMOHEP(2,NHEP+3) = NHEP+2 - JDAHEP(2,NHEP+3) = NHEP+2 - ENDIF - NHEP=NHEP+3 -C---DO PARTON SHOWERS - EMSCA=PDT(5,4) - CALL HWBGEN - IF (IERROR.NE.0) RETURN - ELSE -C Do parton showers - EMSCA=PHEP(5,IHEP) - CALL HWBGEN - IF (IERROR.NE.0) RETURN -C--special for gauge boson decay modes of gauginos and four body higgs -C--call routine to add decay products and generate parton shower - IF(NME(IM).GT.20000.AND.NME(IM).LT.30000) THEN - CALL HWDSM3(-1,IHEP,MHEP,SHEP,0,NME(IM)-20000,RHOIN, - & ISNHEP(IHEP)) - ELSEIF(NME(IM).GT.40000.AND.NME(IM).LT.50000) THEN - CALL HWDSM4(2,IHEP,MHEP,SHEP,NME(IM)-40000) - ENDIF - IF (IERROR.NE.0) RETURN - ENDIF - 999 RETURN - END diff --git a/Generators/Herwig_i/src/HerwigModified/rpv/hwdsm2.f b/Generators/Herwig_i/src/HerwigModified/rpv/hwdsm2.f deleted file mode 100644 index 440dc4dc36fcd42cad54949cb815958822f48dbb..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/src/HerwigModified/rpv/hwdsm2.f +++ /dev/null @@ -1,332 +0,0 @@ -CDECK ID>, HWDSM2. -*CMZ :- -09/04/02 13:46:07 by Peter Richardson -*-- Author : Peter Richardson -C----------------------------------------------------------------------- - SUBROUTINE HWDSM2(ID,IOUT1,IOUT2,IMODE,RHOIN,IDSPIN) -C----------------------------------------------------------------------- -C Subroutine to calculate the two body matrix element for spin -C correlations -C----------------------------------------------------------------------- - INCLUDE 'HERWIG65.INC' - INTEGER IOUT1,IOUT2,IMODE,IDSPIN,ID,I,J,IDP(3),P0,P1,P2,O(2),P0P, - & NTRY - DOUBLE PRECISION XMASS,PLAB,PRW,PCM,PREF(5),P(5,3),PM(5,3),PCMA, - & HWUPCM,MA(3),MA2(3),HWULDO,PP,HWVDOT,N(3),EPS,PRE,PHS,A(2), - & WGT,WTMAX,HWRGEN - DOUBLE COMPLEX RHOIN(2,2),S,D,ME(2,2,2),F1(2,2,8),F0(2,2,8), - & F2M(2,2,8),F1M(2,2,8),F1F(2,2,8),F2(2,2,8,8),F0B(2,2,8,8) - COMMON/HWHEWP/XMASS(10),PLAB(5,10),PRW(5,2),PCM(5,10) - SAVE O,PREF - DATA PREF/1.0D0,0.0D0,0.0D0,1.0D0,0.0D0/ - DATA O/2,1/ - COMMON/HWHEWS/S(8,8,2),D(8,8) - PARAMETER(EPS=1D-20) - EXTERNAL HWUPCM,HWULDO,HWVDOT,HWRGEN -C--first setup if this is the start of a new spin chain - IF(NSPN.EQ.0) THEN -C--zero the elements of the array - CALL HWVZRI( NMXHEP,ISNHEP) - CALL HWVZRI( NMXSPN,JMOSPN) - CALL HWVZRI(2*NMXSPN,JDASPN) - CALL HWVZRI( NMXSPN, IDSPN) - NSPN = NSPN+1 - JMOSPN(NSPN) = 0 - IDSPN (NSPN) = ID - DECSPN(NSPN) = .FALSE. - IF(RSPIN(IDHW(ID)).EQ.ZERO) THEN - RHOSPN(1,1,NSPN) = ONE - RHOSPN(2,1,NSPN) = ZERO - RHOSPN(1,2,NSPN) = ZERO - RHOSPN(2,2,NSPN) = ZERO - ELSE - RHOSPN(1,1,NSPN) = HALF - RHOSPN(2,1,NSPN) = ZERO - RHOSPN(1,2,NSPN) = ZERO - RHOSPN(2,2,NSPN) = HALF - ENDIF - ISNHEP(ID) = NSPN - ENDIF -C--MA is mass for this decay (OFF-SHELL) -C--generate the momenta for a two body decay - P(5,1) = PHEP(5, ID) - P(5,2) = PHEP(5,IOUT1) - P(5,3) = PHEP(5,IOUT2) - IDP(1) = IDHW(ID) - IDP(2) = IDHW(IOUT1) - IDP(3) = IDHW(IOUT2) - DO 1 I=1,3 - MA(I) = P(5,I) - 1 MA2(I) = MA(I)**2 - PCMA = HWUPCM(P(5,1),P(5,2),P(5,3)) -C--setup the couplings - DO 2 I=1,2 - 2 A(I) = A2MODE(I,IMODE) -C--phase space factor - PHS = PCMA/MA2(1)/8.0D0/PIFAC -C--maximum weight - WTMAX = WT2MAX(IMODE) - NTRY = 0 - 1000 NTRY = NTRY+1 - CALL HWVEQU(5,PHEP(1,ID),P(1,1)) - CALL HWDTWO(P(1,1),P(1,2),P(1,3),PCMA,2.0D0,.TRUE.) - DO 3 I=1,3 -C--compute the references vectors -C--not important if SM particle which can't have spin measured -C--ie anything other the top and tau -C--also not important if particle is approx massless -C--first the SM particles other than top and tau - IF(IDP(I).LT.400.AND.(IDP(I).NE.6.AND.IDP(I).NE.12 - & .AND.IDP(I).NE.125.AND.IDP(I).NE.131)) THEN - CALL HWVEQU(5,PREF,PLAB(1,I+3)) -C--all other particles - ELSE - PP = SQRT(HWVDOT(3,P(1,I),P(1,I))) - CALL HWVSCA(3,ONE/PP,P(1,I),N) - PLAB(4,I+3) = HALF*(P(4,I)-PP) - PP = HALF*(PP-MA(I)-PP**2/(MA(I)+P(4,I))) - CALL HWVSCA(3,PP,N,PLAB(1,I+3)) - CALL HWUMAS(PLAB(1,I+3)) - PP = HWVDOT(3,PLAB(1,I+3),PLAB(1,I+3)) -C--fix to avoid problems if approx massless due to energy - IF(PP.LT.EPS) CALL HWVEQU(5,PREF,PLAB(1,I+3)) - ENDIF -C--now the massless vectors - PP = HALF*P(5,I)**2/HWULDO(PLAB(1,I+3),P(1,I)) - DO 4 J=1,4 - 4 PLAB(J,I) = P(J,I)-PP*PLAB(J,I+3) - 3 CALL HWUMAS(PLAB(1,I)) -C--change order of momenta for call to HE code - DO 5 I=1,3 - PM(1,I) = P(3,I) - PM(2,I) = P(1,I) - PM(3,I) = P(2,I) - PM(4,I) = P(4,I) - 5 PM(5,I) = P(5,I) - DO 6 I=1,6 - PCM(1,I)=PLAB(3,I) - PCM(2,I)=PLAB(1,I) - PCM(3,I)=PLAB(2,I) - PCM(4,I)=PLAB(4,I) - 6 PCM(5,I)=PLAB(5,I) -C--compute the S functions - CALL HWHEW2(6,PCM(1,1),S(1,1,2),S(1,1,1),D) - DO 7 I=1,6 - DO 7 J=1,6 - S(I,J,2) = -S(I,J,2) - 7 D(I,J) = TWO*D(I,J) -C--now compute the F functions needed - CALL HWH2F2(6,F1 ,5,PM(1,2), MA(2)) - CALL HWH2F2(6,F0 ,4,PM(1,1), MA(1)) - CALL HWH2F2(6,F1M,5,PM(1,2),-MA(2)) - CALL HWH2F2(6,F2M,6,PM(1,3),-MA(3)) - CALL HWH2F1(6,F1F,5,PM(1,2), MA(2)) - CALL HWH2F3(6,F2 ,PM(1,3),ZERO ) - CALL HWH2F3(6,F0B ,PM(1,1),ZERO ) -C--now compute the diagrams -C--fermion --> fermion scalar - IF(I2DRTP(IMODE).EQ.1) THEN - PRE = HWULDO(PM(1,1),PCM(1,4))*HWULDO(PM(1,2),PCM(1,5)) - PRE = HALF/SQRT(PRE) - DO 10 P0=1,2 - DO 10 P1=1,2 - ME(P0,P1,2) = (0.0D0,0.0D0) - 10 ME(P0,P1,1) = PRE*( A(O(P1))*S(5,2,O(P1))*F0( P1 ,O(P0),2) - & +A( P1 )*MA(2)* F0(O(P1),O(P0),5)) -C--fermion --> scalar fermion diagrams - ELSEIF(I2DRTP(IMODE).EQ.2) THEN - PRE = HWULDO(PM(1,1),PCM(1,4))*HWULDO(PM(1,3),PCM(1,6)) - PRE = HALF/SQRT(PRE) - DO 20 P0=1,2 - DO 20 P2=1,2 - ME(P0,2,P2) = (0.0D0,0.0D0) - 20 ME(P0,1,P2) = PRE*( A(O(P2))*S(6,3,O(P2))*F0( P2 ,O(P0),3) - & +A( P2 )*MA(3)* F0(O(P2),O(P0),6)) -C--fermion --> scalar antifermion - ELSEIF(I2DRTP(IMODE).EQ.3) THEN - PRE = HWULDO(PM(1,1),PCM(1,4))*HWULDO(PM(1,3),PCM(1,6)) - PRE =(-HALF)/SQRT(PRE) - DO 30 P0=1,2 - DO 30 P2=1,2 - ME(P0,2,P2) = (0.0D0,0.0D0) - 30 ME(P0,1,P2) = PRE*( A( P0 )*S(4,1,P0)*F2M(O(P0),O(P2),1) - & -A(O(P0))*MA(1) *F2M( P0 ,O(P2),4)) -C--fermion --> fermion gauge boson - ELSEIF(I2DRTP(IMODE).EQ.4) THEN - PRE = HWULDO(PM(1,1),PCM(1,4))*HWULDO(PM(1,2),PCM(1,5))* - & HWULDO(PM(1,3),PCM(1,6)) - PRE = HALF/SQRT(PRE) - DO 40 P0=1,2 - DO 40 P1=1,2 - ME(P0,P1,1) =(-PRE)*A(1)*F1F(O(P1),2,3)*S(3,6,2)*F0(1,O(P0),3) - 40 ME(P0,P1,2) = PRE* F1F(O(P1),1,3)*S(3,6,1)*F0(2,O(P0),3) -C--scalar --> fermion antifermion - ELSEIF(I2DRTP(IMODE).EQ.5) THEN - PRE = HWULDO(PM(1,2),PCM(1,5))*HWULDO(PM(1,3),PCM(1,6)) - PRE =(-HALF)/SQRT(PRE) - DO 50 P1=1,2 - DO 50 P2=1,2 - ME(2,P1,P2) = (0.0D0,0.0D0) - 50 ME(1,P1,P2) = PRE*( A(O(P1))*S(5,2,O(P1))*F2M( P1 ,O(P2),2) - & +A( P1 )*MA(2)* F2M(O(P1),O(P2),5)) -C--scalar --> fermion fermion - ELSEIF(I2DRTP(IMODE).EQ.6) THEN - PRE = HWULDO(PM(1,2),PCM(1,5))*HWULDO(PM(1,3),PCM(1,6)) - PRE = HALF/SQRT(PRE) - DO 60 P1=1,2 - DO 60 P2=1,2 - ME(2,P1,P2) = (0.0D0,0.0D0) - 60 ME(1,P1,P2) = PRE*( A(O(P2))*S(6,3,O(P2))*F1M( P2 ,P1,3) - & +A( P2 )*MA(3)* F1M(O(P2),P1,6)) -C--fermion --> fermion pion - ELSEIF(I2DRTP(IMODE).EQ.7) THEN - PRE = HWULDO(PM(1,1),PCM(1,4))*HWULDO(PM(1,2),PCM(1,5)) - PRE = 0.25D0/SQRT(PRE)/RMASS(198)**2 - DO 70 P0=1,2 - DO 70 P1=1,2 - ME(P0,P1,2) = (0.0D0,0.0D0) - 70 ME(P0,P1,1) =PRE*( - & MA(1)*A(O(P0))*( S(5,2,O(P1))*F2( P1 ,O(P0),2,4) - & +MA(2)*F2(O(P1),O(P0),5,4)) - & +A(P0)*S(1,4,P0)*( S(5,2,O(P1))*F2( P1 , P0 ,2,1) - & +MA(2)*F2(O(P1), P0 ,5,1))) -C--scalar --> antifermion fermion - ELSEIF(I2DRTP(IMODE).EQ.8) THEN - PRE = HWULDO(PM(1,2),PCM(1,5))*HWULDO(PM(1,3),PCM(1,6)) - PRE =(-HALF)/SQRT(PRE) - DO 80 P1=1,2 - DO 80 P2=1,2 - ME(2,P1,P2) = (0.0D0,0.0D0) - 80 ME(1,P1,P2) = PRE*( A(O(P2))*S(6,3,O(P2))*F1M( P2 ,O(P1),3) - & +A( P2 )*MA(3)* F1M(O(P2),O(P1),6)) -C--neutralino --> gravitino photon - ELSEIF(I2DRTP(IMODE).EQ.9) THEN - PRE = TWO*HWULDO(PM(1,1),PCM(1,4))*HWULDO(PM(1,3),PCM(1,6)) - PRE = TWO/SQRT(PRE) - DO 90 P1=1,2 - DO 90 P2=1,2 - ME(P1,P2,O(P2)) = (0.0D0,0.0D0) - 90 ME(P1,P2, P2 ) = PRE*S(2,3,P2)*S(3,6,O(P2))* - & S(3,2,P2)*F0(O(P2),P1,2) -C--neutralino --> gravitino scalar - ELSEIF(I2DRTP(IMODE).EQ.10) THEN - PRE = TWO*HWULDO(PM(1,1),PCM(1,4)) - PRE = ONE/SQRT(PRE) - DO 100 P1=1,2 - DO 100 P2=1,2 - ME(P1,P2,2) = (0.0D0,0.0D0) - 100 ME(P1,P2,1) = PRE*F2(P2,1,2,2)*F0(1,O(P1),2) -C--sfermion --> fermion gravitino - ELSEIF(I2DRTP(IMODE).EQ.11) THEN - PRE = TWO*HWULDO(PM(1,2),PCM(1,5)) - PRE = ONE/SQRT(PRE) - DO 110 P1=1,2 - DO 110 P2=1,2 - ME(2,P1,P2) = (0.0D0,0.0D0) - 110 ME(1,P1,P2) = PRE*A(O(P2))*F1M(O(P1),P2,3)*F0B(P2,P2,3,3) -C--antisfermion --> antifermion gravitino - ELSEIF(I2DRTP(IMODE).EQ.12) THEN - PRE = TWO*HWULDO(PM(1,2),PCM(1,5)) - PRE = ONE/SQRT(PRE) - DO 120 P1=1,2 - DO 120 P2=1,2 - ME(2,P1,P2) = (0.0D0,0.0D0) - 120 ME(1,P1,P2) = PRE*A(O(P2))*F0B(P2,P2,3,3)*F1(P2,O(P1),3) -C--scalar --> antifermion antifermion - ELSEIF(I2DRTP(IMODE).EQ.13) THEN - PRE = HWULDO(PM(1,2),PCM(1,5))*HWULDO(PM(1,3),PCM(1,6)) - PRE = HALF/SQRT(PRE) - DO 130 P1=1,2 - DO 130 P2=1,2 - ME(2,P1,P2) = (0.0D0,0.0D0) - 130 ME(1,P1,P2) = PRE*( A( P1 )*S(5,2, P1 )*F2M(O(P1),O(P2),2) - & +A(O(P1))*MA(2) *F2M( P1 ,O(P2),5)) -C--antifermion --> scalar antifermion - ELSEIF(I2DRTP(IMODE).EQ.14) THEN - PRE = HWULDO(PM(1,1),PCM(1,4))*HWULDO(PM(1,3),PCM(1,6)) - PRE = HALF/SQRT(PRE) - DO 140 P0=1,2 - DO 140 P2=1,2 - ME(P0,2,P2) = (0.0D0,0.0D0) - 140 ME(P0,1,P2) = PRE*( A(O(P0))*S(4,1,O(P0))*F2M( P0 ,O(P2),1) - & -A( P0 )*MA(1) *F2M(O(P0),O(P2),4)) -C--unrecognized type of diagram - ELSE - CALL HWWARN('HWDSM2',500) - ENDIF -C--compute the maximum weight - WTMAX=0.0d0 - DO 490 P0=1,2 - DO 490 P1=1,2 - DO 490 P2=1,2 - 490 WTMAX = WTMAX+DREAL(ME(P0,P1,P2)*DCONJG(ME(P0,P1,P2))) - WTMAX = WTMAX*PHS*P2MODE(IMODE) -C--now compute the weight - WGT = ZERO - DO 500 P0 =1,2 - DO 500 P0P=1,2 - DO 500 P1 =1,2 - DO 500 P2 =1,2 - 500 WGT = WGT+PHS*P2MODE(IMODE)*DREAL( - & ME(P0,P1,P2)*DCONJG(ME(P0P,P1,P2))*RHOIN(P0,P0P)) - IF(I2DRTP(IMODE).EQ.5.OR.I2DRTP(IMODE).EQ.6.OR. - & I2DRTP(IMODE).EQ.8.OR.I2DRTP(IMODE).EQ.13) GOTO 300 -C--issue warning if greater than maximum - IF(WGT.GT.WTMAX) THEN - CALL HWWARN('HWDSM2',1) - WRITE(6,2000) RNAME(IDK(ID2PRT(IMODE))), - & RNAME(IDKPRD(1,ID2PRT(IMODE))),RNAME(IDKPRD(2,ID2PRT(IMODE))), - & WTMAX,1.1D0*WGT - WT2MAX(IMODE) = 1.1D0*WGT - WTMAX = WT2MAX(IMODE) - ENDIF - IF(HWRGEN(0)*WTMAX.GT.WGT.AND.NTRY.LT.NSNTRY) GOTO 1000 - IF(NTRY.GE.NSNTRY) THEN - CALL HWWARN('HWDSM2',100) - GOTO 999 - ENDIF -C--now enter the momenta in the common block - 300 CALL HWVEQU(5,P(1,2),PHEP(1,IOUT1)) - CALL HWVEQU(5,P(1,3),PHEP(1,IOUT2)) -C--set up the spin information -C--setup for all decays - JMOSPN(NSPN+1) = IDSPIN - JMOSPN(NSPN+2) = IDSPIN - JDASPN(1,IDSPIN) = NSPN+1 - JDASPN(2,IDSPIN) = NSPN+2 - IDSPN(NSPN+1) = IOUT1 - IDSPN(NSPN+2) = IOUT2 - DO 11 I=1,2 - DECSPN(NSPN+I) = .FALSE. - DO 11 J=1,2 - 11 JDASPN(I,NSPN+J) = 0 - ISNHEP(IOUT1) = NSPN+1 - ISNHEP(IOUT2) = NSPN+2 - DO 12 I=1,2 - IF(RSPIN(IDHW(IDSPN(NSPN+I))).EQ.ZERO) THEN - RHOSPN(1,1,NSPN+I) = ONE - RHOSPN(2,1,NSPN+I) = ZERO - RHOSPN(1,2,NSPN+I) = ZERO - RHOSPN(2,2,NSPN+I) = ZERO - ELSE - RHOSPN(1,1,NSPN+I) = HALF - RHOSPN(2,1,NSPN+I) = ZERO - RHOSPN(1,2,NSPN+I) = ZERO - RHOSPN(2,2,NSPN+I) = HALF - ENDIF - 12 CONTINUE - NSPN = NSPN+2 -C--now enter the matrix element - DO 150 P0=1,2 - DO 150 P1=1,2 - DO 150 P2=1,2 - MESPN(P0,P1,P2,2,1,IDSPIN) = (0.0D0,0.0D0) - 150 MESPN(P0,P1,P2,1,1,IDSPIN) = ME(P0,P1,P2) - SPNCFC(1,1,IDSPIN) = ONE - NCFL(IDSPIN) = 1 - RETURN -C--format statements - 2000 FORMAT(/'WEIGHT FOR DECAY ',A8,' --> ',A8,' ',A8, 'EXCEEDS MAX', - & /10X,' MAXIMUM WEIGHT =',1PG24.16, - & /10X,'NEW MAXIMUM WEIGHT =',1PG24.16) - 999 RETURN - END diff --git a/Generators/Herwig_i/src/HerwigModified/rpv/hwhssq.f b/Generators/Herwig_i/src/HerwigModified/rpv/hwhssq.f deleted file mode 100644 index 158a2dbd32880fdc5fd36b884c77abe7f99cc8a2..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/src/HerwigModified/rpv/hwhssq.f +++ /dev/null @@ -1,895 +0,0 @@ -CDECK ID>, HWHSSQ. -*CMZ :- -18/05/99 20.33.45 by Kosuke Odagiri -*-- Author : Kosuke Odagiri -C----------------------------------------------------------------------- - SUBROUTINE HWHSSQ -C----------------------------------------------------------------------- -C SUSY HARD 2 PARTON -> 2 SPARTON PROCESSES -C----------------------------------------------------------------------- - INCLUDE 'HERWIG65.INC' - DOUBLE PRECISION HWRGEN, HWUALF, EPS, HCS, RCS, DIST, NC, NC2, - & NC2C, ML2(6), ML4(6), MR2(6), MR4(6), MG2, SM, DM, QPE, - & SQPE, FACTR, AFAC, AF, BONE, CFAC, CFC2, CFC3, CONE, - & CONN, CONT, CONU, CONL, CONR, DFAC, DONE, PF, S, - & S2, TT, TT2, TMG, TMG2, UU, UU2, UMG, UMG2, - & L, L2, TTML, UUML, R, R2, TTMR, UUMR, SN2TH - DOUBLE PRECISION - & AUSTLL(6), AUSTRR(6), - & ASTULL(6,6), ASTURR(6,6), ASTULR(6,6), ASTURL(6,6), - & AUTSLL(6,6), AUTSRR(6,6), AUTSLR(6,6), AUTSRL(6,6), - & BSTULL(6), BSTURR(6), BSTULR(6), BSTURL(6), - & BSUTLL(6), BSUTRR(6), BSUTLR(6), BSUTRL(6), - & BUTSLL(6), BUTSRR(6), BUTSLR(6), BUTSRL(6), - & BUSTLL(6), BUSTRR(6), BUSTLR(6), BUSTRL(6), - & CSTU(6), CSUT(6), CSTUL(6), CSTUR(6), CSUTL(6), CSUTR(6), - & CTSUL(6), CTSUR(6), CTUSL(6), CTUSR(6), DUTS, DTSU, DSTU - INTEGER IQ, IQ1, IQ2, ID1, ID2, IGL, SSL, SSR, GLU - EXTERNAL HWRGEN, HWUALF - SAVE HCS, AUSTLL, AUSTRR, ASTULL, ASTURR, ASTULR, ASTURL, - & AUTSLL, AUTSRR, AUTSLR, AUTSRL, BSTULL, BSTURR, BSTULR, - & BSTURL, BSUTLL, BSUTRR, BSUTLR, BSUTRL, BUTSLL, BUTSRR, BUTSLR, - & BUTSRL, BUSTLL, BUSTRR, BUSTLR, BUSTRL, CSTU, CSUT, CSTUL, CSTUR, - & CSUTL, CSUTR, CTSUL, CTSUR, CTUSL, CTUSR, DUTS, DTSU, DSTU - PARAMETER (EPS = 1.D-9, IGL = 49, SSL = 400, SSR = 412, GLU = 449) - CALL HWSGEN(.FALSE.) - IF (GENEV) THEN - RCS = HCS*HWRGEN(0) - ELSE - SN2TH = 0.25D0 - 0.25D0*COSTH**2 - S = XX(1)*XX(2)*PHEP(5,3)**2 - FACTR = FACTSS*HWUALF(1,EMSCA)**2 - NC = CAFAC - NC2 = NC**2 - NC2C = ONE - ONE/NC2 - AFAC = FACTR*NC2C/FOUR - CFAC = FACTR*CFFAC/FOUR - CFC2 = FACTR/CFFAC/FOUR - CFC3 = FACTR/FOUR - DFAC = FACTR/NC2C - S2 = S**2 - MG2 = RMASS(GLU)**2 - DO 10 IQ = 1, 6 - IQ1 = SSL + IQ - IQ2 = SSR + IQ - ML2(IQ) = RMASS(IQ1)**2 - ML4(IQ) = ML2(IQ)**2 - MR2(IQ) = RMASS(IQ2)**2 - MR4(IQ) = MR2(IQ)**2 - 10 CONTINUE -c gluino pair production - QPE = S - FOUR*MG2 - IF (QPE.GE.ZERO) THEN - SQPE = SQRT(S*QPE) - PF = SQPE/S - TT = (SQPE*COSTH - S) / TWO - TT2 = TT**2 - UU = - S - TT - UU2 = UU**2 -c ~ ~ -c g g -> g g -c - DONE = - & DFAC*PF/TWO*(UU2+TT2+FOUR*MG2*S*SQPE**2*SN2TH/TT/UU)/S2/TT/UU - DUTS = DONE*UU2 - DTSU = DONE*TT2 - DSTU = DONE*S2 -c _ ~ ~ -c q q -> g g -c - DO 21 IQ = 1, 6 - L = ML2(IQ)-MG2 - L2 = L**2 - TTML = TT-L - UUML = UU-L - R = MR2(IQ)-MG2 - R2 = R**2 - TTMR = TT-R - UUMR = UU-R - CONE = TWO*PF**2*SN2TH - CONL = CONE/UUML/TTML - CONR = CONE/UUMR/TTMR - CONT = (UU2-L2)*CONL+(UU2-R2)*CONR+L2/TTML**2+R2/TTMR**2 - CONU = (TT2-L2)*CONL+(TT2-R2)*CONR+L2/UUML**2+R2/UUMR**2 - CONN = CFAC*(PF-PF/NC2/(CONT+CONU)*( S2*(CONL+CONR)+ - & L2*((TT-UU)*CONL/CONE)**2+R2*((TT-UU)*CONR/CONE)**2 )) - CSTU(IQ) = CONT*CONN - CSUT(IQ) = CONU*CONN - 21 CONTINUE - ELSE - DUTS = ZERO - DTSU = ZERO - DSTU = ZERO - DO 23 IQ = 1, 6 - CSTU(IQ) = ZERO - CSUT(IQ) = ZERO - 23 CONTINUE - END IF -c left handed squark (identical flavour) pair production - DO 22 IQ = 1, 6 - QPE = S - FOUR*ML2(IQ) - IF (QPE.GE.ZERO) THEN - SQPE = SQRT(S*QPE) - PF = SQPE/S - TT = (SQPE*COSTH - S) / TWO - TT2 = TT**2 - UU = - S - TT - UU2 = UU**2 -c ~ ~* -c g g -> q q -c L L - CONE = CFC2*PF*((SQPE*PF*SN2TH)**2+ML4(IQ))/TT2/UU2 - CONN = CONE-CONE*S2/(TT2+UU2)/NC2 - CSTUL(IQ) = CONN*UU2 - CSUTL(IQ) = CONN*TT2 -c ~ ~ -c q q -> q q -c L L - TMG = TT+ML2(IQ)-MG2 - TMG2 = TMG**2 - UMG = UU+ML2(IQ)-MG2 - UMG2 = UMG**2 - BONE = AFAC*PF*MG2*S*(HALF-TMG*UMG/(TMG2+UMG2)/NC) - BSTULL(IQ) = BONE/TMG2 - BSUTLL(IQ) = BONE/UMG2 -c _ ~ ~* -c q q -> q q -c L L - AF = AFAC*PF*PF**2*SN2TH - BONE = AF/TMG2-AF*S/(HALF*S2+TMG2)/TMG/NC - BUTSLL(IQ) = BONE*S2 - BUSTLL(IQ) = BONE*TWO*TMG2 -c _ ~ ~* -c q q -> q'q' q =/= q' -c L L - AUSTLL(IQ) = TWO*AF - ELSE - CSTUL(IQ) = ZERO - CSUTL(IQ) = ZERO - BSTULL(IQ) = ZERO - BSUTLL(IQ) = ZERO - BUTSLL(IQ) = ZERO - BUSTLL(IQ) = ZERO - AUSTLL(IQ) = ZERO - END IF -c right handed squark (identical flavour) pair production - QPE = S - FOUR*MR2(IQ) - IF (QPE.GE.ZERO) THEN - SQPE = SQRT(S*QPE) - PF = SQPE/S - TT = (SQPE*COSTH - S) / TWO - TT2 = TT**2 - UU = - S - TT - UU2 = UU**2 -c ~ ~* -c g g -> q q -c R R - CONE = CFC2*PF*((SQPE*PF*SN2TH)**2+MR4(IQ))/TT2/UU2 - CONN = CONE-CONE*S2/(TT2+UU2)/NC2 - CSTUR(IQ) = CONN*UU2 - CSUTR(IQ) = CONN*TT2 -c ~ ~ -c q q -> q q -c R R - TMG = TT+MR2(IQ)-MG2 - TMG2 = TMG**2 - UMG = UU+MR2(IQ)-MG2 - UMG2 = UMG**2 - BONE = AFAC*PF*MG2*S*(HALF-TMG*UMG/(TMG2+UMG2)/NC) - BSTURR(IQ) = BONE/TMG2 - BSUTRR(IQ) = BONE/UMG2 -c _ ~ ~* -c q q -> q q -c R R - AF = AFAC*PF*PF**2*SN2TH - BONE = AF/TMG2-AF*S/(HALF*S2+TMG2)/TMG/NC - BUTSRR(IQ) = BONE*S2 - BUSTRR(IQ) = BONE*TWO*TMG2 -c _ ~ ~* -c q q -> q'q' q =/= q' -c R R - AUSTRR(IQ) = TWO*AF - ELSE - CSTUR(IQ) = ZERO - CSUTR(IQ) = ZERO - BSTURR(IQ) = ZERO - BSUTRR(IQ) = ZERO - BUTSRR(IQ) = ZERO - BUSTRR(IQ) = ZERO - AUSTRR(IQ) = ZERO - END IF -c left and right handed squark (identical flavour) pair production - IQ1 = SSL + IQ - IQ2 = SSR + IQ - SM = RMASS(IQ1)+RMASS(IQ2) - QPE = S - SM**2 - IF (QPE.GE.ZERO) THEN - DM = RMASS(IQ1)-RMASS(IQ2) - SQPE = SQRT( QPE*(S-DM**2) ) - PF = SQPE/S - AF = AFAC*PF - TT = (SQPE*COSTH - S - SM*DM) / TWO - UU = - S - TT - TMG = TT + ML2(IQ) - MG2 - TMG2 = TMG**2 - UMG = UU + MR2(IQ) - MG2 - UMG2 = UMG**2 -c ~ ~ -c q q -> q q -c L R - BONE = AFAC*PF*SQPE**2*SN2TH - BSTULR(IQ) = BONE/TMG2 - BSUTLR(IQ) = BONE/UMG2 -c _ ~ ~* -c q q -> q q -c L R - BUTSLR(IQ) = AFAC*PF*MG2*S/TMG2 - BUSTLR(IQ) = ZERO - TT = (SQPE*COSTH - S + SM*DM) / TWO - UU = - S - TT - TMG = TT + MR2(IQ) - MG2 - TMG2 = TMG**2 - UMG = UU + ML2(IQ) - MG2 - UMG2 = UMG**2 -c ~ ~ -c q q -> q q -c R L -c BONE = AFAC*PF*SQPE**2*SN2TH -c BSTURL(IQ) = BONE/TMG2 -c BSUTRL(IQ) = BONE/UMG2 - BSTURL(IQ) = ZERO - BSUTRL(IQ) = ZERO -c _ ~ ~* -c q q -> q q -c R L - BUTSRL(IQ) = AFAC*PF*MG2*S/TMG2 - BUSTRL(IQ) = ZERO - ELSE - BSTULR(IQ) = ZERO - BSUTLR(IQ) = ZERO - BUTSLR(IQ) = ZERO - BUSTLR(IQ) = ZERO - BSTURL(IQ) = ZERO - BSUTRL(IQ) = ZERO - BUTSRL(IQ) = ZERO - BUSTRL(IQ) = ZERO - END IF - 22 CONTINUE -c distinct flavours - gq, qq' - DO 11 ID1 = 1, 6 - IQ1 = SSL + ID1 - SM = RMASS(GLU)+RMASS(IQ1) - QPE = S - SM**2 - IF (QPE.GE.ZERO) THEN - DM = RMASS(GLU)-RMASS(IQ1) - SQPE = SQRT( QPE*(S-DM**2) ) - PF = SQPE/S - TT = (SQPE*COSTH - S - SM*DM) / TWO - TT2 = TT**2 - UU = - S - TT - UU2 = UU**2 -c ~ ~ -c g q -> g q -c L - CONE = (-UU+TWO*SM*DM*(ONE+MG2/TT+ML2(ID1)/UU))/S/TT/UU - CONN = CFC3*PF*CONE*(ONE-TT2/(UU2+S2)/NC2) - CTSUL(ID1) = CONN*UU2 - CTUSL(ID1) = CONN*S2 - ELSE - CTSUL(ID1) = ZERO - CTUSL(ID1) = ZERO - END IF - IQ2 = SSR + ID1 - SM = RMASS(GLU)+RMASS(IQ2) - QPE = S - SM**2 - IF (QPE.GE.ZERO) THEN - DM = RMASS(GLU)-RMASS(IQ2) - SQPE = SQRT( QPE*(S-DM**2) ) - PF = SQPE/S - TT = (SQPE*COSTH - S - SM*DM) / TWO - TT2 = TT**2 - UU = - S - TT - UU2 = UU**2 -c ~ ~ -c g q -> g q -c R - CONE = (-UU+TWO*SM*DM*(ONE+MG2/TT+MR2(ID1)/UU))/S/TT/UU - CONN = CFC3*PF*CONE*(ONE-TT2/(UU2+S2)/NC2) - CTSUR(ID1) = CONN*UU2 - CTUSR(ID1) = CONN*S2 - ELSE - CTSUR(ID1) = ZERO - CTUSR(ID1) = ZERO - END IF - IF(ID1.EQ.6) GOTO 11 - DO 12 ID2 = 1, 6 - IF(ID2.EQ.ID1) GOTO 12 - IQ1 = SSL + ID1 - IQ2 = SSL + ID2 - SM = RMASS(IQ1)+RMASS(IQ2) - QPE = S - SM**2 - IF (QPE.GE.ZERO) THEN - DM = RMASS(IQ1)-RMASS(IQ2) - SQPE = SQRT( QPE*(S-DM**2) ) - PF = SQPE/S - TT = (SQPE*COSTH - S - SM*DM) / TWO - UU = - S - TT - TMG = TT+ML2(ID1)-MG2 - AF = AFAC*PF/TMG/TMG -c ~ ~ -c q q' -> q q' -c L L - ASTULL(ID1,ID2) = AF*MG2*S -c _ ~ ~* -c q q' -> q q' -c L L - AUTSLL(ID1,ID2) = AF*SQPE**2*SN2TH - ELSE - ASTULL(ID1,ID2) = ZERO - AUTSLL(ID1,ID2) = ZERO - END IF - IQ1 = SSR + ID1 - IQ2 = SSR + ID2 - SM = RMASS(IQ1)+RMASS(IQ2) - QPE = S - SM**2 - IF (QPE.GE.ZERO) THEN - DM = RMASS(IQ1)-RMASS(IQ2) - SQPE = SQRT( QPE*(S-DM**2) ) - PF = SQPE/S - TT = (SQPE*COSTH - S - SM*DM) / TWO - UU = - S - TT - TMG = TT+MR2(ID1)-MG2 - AF = AFAC*PF/TMG/TMG -c ~ ~ -c q q' -> q q' -c R R - ASTURR(ID1,ID2) = AF*MG2*S -c _ ~ ~* -c q q' -> q q' -c R R - AUTSRR(ID1,ID2) = AF*SQPE**2*SN2TH - ELSE - ASTURR(ID1,ID2) = ZERO - AUTSRR(ID1,ID2) = ZERO - END IF - IQ1 = SSL + ID1 - IQ2 = SSR + ID2 - SM = RMASS(IQ1)+RMASS(IQ2) - QPE = S - SM**2 - IF (QPE.GE.ZERO) THEN - DM = RMASS(IQ1)-RMASS(IQ2) - SQPE = SQRT( QPE*(S-DM**2) ) - PF = SQPE/S - TT = (SQPE*COSTH - S - SM*DM) / TWO - UU = - S - TT - TMG = TT+ML2(ID1)-MG2 - AF = AFAC*PF/TMG/TMG -c ~ ~ -c q q' -> q q' -c L R - ASTULR(ID1,ID2) = AF*SQPE**2*SN2TH -c _ ~ ~* -c q q' -> q q' -c L R - AUTSLR(ID1,ID2) = AF*MG2*S - TT = (SQPE*COSTH - S + SM*DM) / TWO - UU = - S - TT - TMG = TT+MR2(ID1)-MG2 - AF = AFAC*PF/TMG/TMG -c ~ ~ -c q q' -> q q' -c R L - ASTURL(ID2,ID1) = AF*SQPE**2*SN2TH -c _ ~ ~* -c q q' -> q q' -c R L - AUTSRL(ID2,ID1) = AF*MG2*S - ELSE - ASTULR(ID1,ID2) = ZERO - AUTSLR(ID1,ID2) = ZERO - ASTURL(ID2,ID1) = ZERO - AUTSRL(ID2,ID1) = ZERO - END IF - 12 CONTINUE - 11 CONTINUE - END IF - HCS = ZERO - DO 6 ID1 = 1, 13 - IF (DISF(ID1,1).LT.EPS) GOTO 6 - DO 5 ID2 = 1, 13 - IF (DISF(ID2,2).LT.EPS) GOTO 5 - DIST = DISF(ID1,1)*DISF(ID2,2) - IF (ID1.LT.7) THEN - IQ1 = ID1 - IF (ID2.LT.7) THEN - IQ2 = ID2 - IF (IQ1.NE.IQ2) THEN -c ~ ~ -c qq' -> q q' - HCS = HCS + ASTULL(IQ1,IQ2)*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ1,0,IQ2,0,3421,10) - GOTO 9 - ENDIF - HCS = HCS + ASTURR(IQ1,IQ2)*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ1,2,IQ2,2,3421,10) - GOTO 9 - ENDIF - HCS = HCS + ASTULR(IQ1,IQ2)*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ1,0,IQ2,2,3421,10) - GOTO 9 - ENDIF - HCS = HCS + ASTURL(IQ1,IQ2)*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ1,2,IQ2,0,3421,10) - GOTO 9 - ENDIF - ELSE -c ~ ~ -c qq -> q q - HCS = HCS + BSTULL(IQ1)*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ1,0,IQ2,0,3421,10) - GOTO 9 - ENDIF - HCS = HCS + BSTURR(IQ1)*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ1,2,IQ2,2,3421,10) - GOTO 9 - ENDIF - HCS = HCS + BSTULR(IQ1)*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ1,0,IQ2,2,3421,10) - GOTO 9 - ENDIF - HCS = HCS + BSTURL(IQ1)*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ1,2,IQ2,0,3421,10) - GOTO 9 - ENDIF - HCS = HCS + BSUTLL(IQ1)*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ1,0,IQ2,0,4312,10) - GOTO 9 - ENDIF - HCS = HCS + BSUTRR(IQ1)*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ1,2,IQ2,2,4312,10) - GOTO 9 - ENDIF - HCS = HCS + BSUTLR(IQ1)*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ1,0,IQ2,2,4312,10) - GOTO 9 - ENDIF - HCS = HCS + BSUTRL(IQ1)*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ1,2,IQ2,0,4312,10) - GOTO 9 - ENDIF - END IF - ELSEIF (ID2.NE.13) THEN - IQ2 = ID2-6 - IF (IQ1.NE.IQ2) THEN -c _ ~ ~* -c qq' -> q q' - HCS = HCS + AUTSLL(IQ1,IQ2)*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ1,0,IQ2,1,3142,10) - GOTO 9 - ENDIF - HCS = HCS + AUTSRR(IQ1,IQ2)*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ1,2,IQ2,3,3142,10) - GOTO 9 - ENDIF - HCS = HCS + AUTSLR(IQ1,IQ2)*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ1,0,IQ2,3,3142,10) - GOTO 9 - ENDIF - HCS = HCS + AUTSRL(IQ1,IQ2)*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ1,2,IQ2,1,3142,10) - GOTO 9 - ENDIF - ELSE -c _ ~ ~* -c qq -> q'q' (q =/= q') - DO 30 IQ = 1, 6 - IF (IQ .EQ.IQ1) GOTO 30 - HCS = HCS + AUSTLL(IQ )*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ ,0,IQ ,1,2413,10) - GOTO 9 - ENDIF - HCS = HCS + AUSTRR(IQ )*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ ,2,IQ ,3,2413,10) - GOTO 9 - ENDIF - 30 CONTINUE -c _ ~ ~* -c qq -> q q - HCS = HCS + BUTSLL(IQ1)*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ1,0,IQ2,1,3142,10) - GOTO 9 - ENDIF - HCS = HCS + BUTSRR(IQ1)*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ1,2,IQ2,3,3142,10) - GOTO 9 - ENDIF - HCS = HCS + BUTSLR(IQ1)*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ1,0,IQ2,3,3142,10) - GOTO 9 - ENDIF - HCS = HCS + BUTSRL(IQ1)*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ1,2,IQ2,1,3142,10) - GOTO 9 - ENDIF - HCS = HCS + BUSTLL(IQ1)*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ1,0,IQ2,1,2413,10) - GOTO 9 - ENDIF - HCS = HCS + BUSTRR(IQ1)*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ1,2,IQ2,3,2413,10) - GOTO 9 - ENDIF - HCS = HCS + BUSTLR(IQ1)*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ1,0,IQ2,3,2413,10) - GOTO 9 - ENDIF - HCS = HCS + BUSTRL(IQ1)*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ1,2,IQ2,1,2413,10) - GOTO 9 - ENDIF - IQ = IGL -c _ ~ ~ -c qq -> g g - HCS = HCS + CSTU(IQ1)*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ ,0,IQ ,0,2413,10) - GOTO 9 - ENDIF - HCS = HCS + CSUT(IQ1)*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ ,0,IQ ,0,2341,10) - GOTO 9 - ENDIF - END IF - ELSE - IQ2 = IGL -c ~ ~ -c qg -> q g - HCS = HCS + CTSUL(IQ1)*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ1,0,IQ2,0,3142,10) - GOTO 9 - ENDIF - HCS = HCS + CTSUR(IQ1)*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ1,2,IQ2,0,3142,10) - GOTO 9 - ENDIF - HCS = HCS + CTUSL(IQ1)*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ1,0,IQ2,0,3421,10) - GOTO 9 - ENDIF - HCS = HCS + CTUSR(IQ1)*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ1,2,IQ2,0,3421,10) - GOTO 9 - ENDIF - END IF - ELSEIF (ID1.NE.13) THEN - IQ1 = ID1 - 6 - IF (ID2.LT.7) THEN - IQ2 = ID2 - IF (IQ1.NE.IQ2) THEN -c _ ~*~ -c qq' -> q q' - HCS = HCS + AUTSLL(IQ1,IQ2)*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ1,1,IQ2,0,2413,10) - GOTO 9 - ENDIF - HCS = HCS + AUTSRR(IQ1,IQ2)*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ1,3,IQ2,2,2413,10) - GOTO 9 - ENDIF - HCS = HCS + AUTSLR(IQ1,IQ2)*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ1,1,IQ2,2,2413,10) - GOTO 9 - ENDIF - HCS = HCS + AUTSRL(IQ1,IQ2)*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ1,3,IQ2,0,2413,10) - GOTO 9 - ENDIF - ELSE -c _ ~*~ -c qq -> q'q' (q =/= q') - DO 31 IQ = 1, 6 - IF (IQ .EQ.IQ1) GOTO 31 - HCS = HCS + AUSTLL(IQ)*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ ,1,IQ ,0,3142,10) - GOTO 9 - ENDIF - HCS = HCS + AUSTRR(IQ)*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ ,3,IQ ,2,3142,10) - GOTO 9 - ENDIF - 31 CONTINUE -c _ ~*~ -c qq -> q q - HCS = HCS + BUTSLL(IQ1)*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ1,1,IQ2,0,2413,10) - GOTO 9 - ENDIF - HCS = HCS + BUTSRR(IQ1)*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ1,3,IQ2,2,2413,10) - GOTO 9 - ENDIF - HCS = HCS + BUTSLR(IQ1)*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ1,1,IQ2,2,2413,10) - GOTO 9 - ENDIF - HCS = HCS + BUTSRL(IQ1)*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ1,3,IQ2,0,2413,10) - GOTO 9 - ENDIF - HCS = HCS + BUSTLL(IQ1)*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ1,1,IQ2,0,3142,10) - GOTO 9 - ENDIF - HCS = HCS + BUSTRR(IQ1)*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ1,3,IQ2,2,3142,10) - GOTO 9 - ENDIF - HCS = HCS + BUSTLR(IQ1)*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ1,1,IQ2,2,3142,10) - GOTO 9 - ENDIF - HCS = HCS + BUSTRL(IQ1)*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ1,3,IQ2,0,3142,10) - GOTO 9 - ENDIF -c _ ~ ~ -c qq -> g g - HCS = HCS + CSTU(IQ1)*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IGL,0,IGL,0,3142,10) - GOTO 9 - ENDIF - HCS = HCS + CSUT(IQ1)*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IGL,0,IGL,0,4123,10) - GOTO 9 - ENDIF - END IF - ELSEIF (ID2.NE.13) THEN - IQ2 = ID2 - 6 - IF (IQ1.NE.IQ2) THEN -c __ ~*~* -c qq' -> q q' - HCS = HCS + ASTULL(IQ1,IQ2)*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ1,1,IQ2,1,4312,10) - GOTO 9 - ENDIF - HCS = HCS + ASTURR(IQ1,IQ2)*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ1,3,IQ2,3,4312,10) - GOTO 9 - ENDIF - HCS = HCS + ASTULR(IQ1,IQ2)*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ1,1,IQ2,3,4312,10) - GOTO 9 - ENDIF - HCS = HCS + ASTURL(IQ1,IQ2)*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ1,3,IQ2,1,4312,10) - GOTO 9 - ENDIF - ELSE -c __ ~*~* -c qq -> q q - HCS = HCS + BSTULL(IQ1)*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ1,1,IQ2,1,4312,10) - GOTO 9 - ENDIF - HCS = HCS + BSTURR(IQ1)*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ1,3,IQ2,3,4312,10) - GOTO 9 - ENDIF - HCS = HCS + BSTULR(IQ1)*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ1,1,IQ2,3,4312,10) - GOTO 9 - ENDIF - HCS = HCS + BSTURL(IQ1)*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ1,3,IQ2,1,4312,10) - GOTO 9 - ENDIF - HCS = HCS + BSUTLL(IQ1)*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ1,1,IQ2,1,3421,10) - GOTO 9 - ENDIF - HCS = HCS + BSUTRR(IQ1)*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ1,3,IQ2,3,3421,10) - GOTO 9 - ENDIF - HCS = HCS + BSUTLR(IQ1)*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ1,1,IQ2,3,3421,10) - GOTO 9 - ENDIF - HCS = HCS + BSUTRL(IQ1)*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ1,3,IQ2,1,3421,10) - GOTO 9 - ENDIF - END IF - ELSE - IQ2 = IGL -c _ ~*~ -c qg -> q g - HCS = HCS + CTSUL(IQ1)*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ1,1,IQ2,0,2413,10) - GOTO 9 - ENDIF - HCS = HCS + CTSUR(IQ1)*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ1,3,IQ2,0,2413,10) - GOTO 9 - ENDIF - HCS = HCS + CTUSL(IQ1)*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ1,1,IQ2,0,4312,10) - GOTO 9 - ENDIF - HCS = HCS + CTUSR(IQ1)*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ1,3,IQ2,0,4312,10) - GOTO 9 - ENDIF - END IF - ELSE - IQ1 = IGL - IF (ID2.LT.7) THEN - IQ2 = ID2 -c ~ ~ -c gq -> g q - HCS = HCS + CTSUL(IQ2)*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ1,0,IQ2,0,2413,10) - GOTO 9 - ENDIF - HCS = HCS + CTSUR(IQ2)*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ1,0,IQ2,2,2413,10) - GOTO 9 - ENDIF - HCS = HCS + CTUSL(IQ2)*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ1,0,IQ2,0,3421,10) - GOTO 9 - ENDIF - HCS = HCS + CTUSR(IQ2)*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ1,0,IQ2,2,3421,10) - GOTO 9 - ENDIF - ELSEIF (ID2.LT.13) THEN - IQ2 = ID2 - 6 -c _ ~ ~* -c gq -> g q - HCS = HCS + CTSUL(IQ2)*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ1,0,IQ2,1,3142,10) - GOTO 9 - ENDIF - HCS = HCS + CTSUR(IQ2)*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ1,0,IQ2,3,3142,10) - GOTO 9 - ENDIF - HCS = HCS + CTUSL(IQ2)*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ1,0,IQ2,1,4312,10) - GOTO 9 - ENDIF - HCS = HCS + CTUSR(IQ2)*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ1,0,IQ2,3,4312,10) - GOTO 9 - ENDIF - ELSE - IQ2 = IGL -c ~ ~* -c gg -> q q - DO 32 IQ = 1, 6 - HCS = HCS + CSTUL(IQ)*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ ,0,IQ ,1,2413,10) - GOTO 9 - ENDIF - HCS = HCS + CSTUR(IQ)*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ ,2,IQ ,3,2413,10) - GOTO 9 - ENDIF - HCS = HCS + CSUTL(IQ)*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ ,0,IQ ,1,4123,10) - GOTO 9 - ENDIF - HCS = HCS + CSUTR(IQ)*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ ,2,IQ ,3,4123,10) - GOTO 9 - ENDIF - 32 CONTINUE -c ~ ~ -c gg -> g g - HCS = HCS + DTSU*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ1,0,IQ2,0,2341,10) - GOTO 9 - ENDIF - HCS = HCS + DSTU*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ1,0,IQ2,0,3421,10) - GOTO 9 - ENDIF - HCS = HCS + DUTS*DIST - IF (GENEV.AND.HCS.GT.RCS) THEN - CALL HWHSSS(IQ1,0,IQ2,0,2413,10) - GOTO 9 - ENDIF - END IF - END IF - 5 CONTINUE - 6 CONTINUE - EVWGT = HCS - RETURN -C---GENERATE EVENT - 9 IDN(1)=ID1 - IDN(2)=ID2 - IDCMF=15 - CALL HWETWO(.TRUE.,.TRUE.) - IF (AZSPIN) THEN -C Calculate coefficients for constructing spin density matrices -C Set to zero for now - CALL HWVZRO(7,GCOEF) - END IF - END diff --git a/Generators/Herwig_i/src/HerwigModified/rpv/hwirpv.f b/Generators/Herwig_i/src/HerwigModified/rpv/hwirpv.f deleted file mode 100644 index 2c107f0454d3d7700e1c83519bf35967de615e4c..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/src/HerwigModified/rpv/hwirpv.f +++ /dev/null @@ -1,1927 +0,0 @@ - -C---------------------------------------------------------------------- - SUBROUTINE HWIRPV -C---------------------------------------------------------------------- -c SUBROUTINE TO INITIALISE THE NEW FOUR BODY RPV MATRIX ELEMENTS -C---------------------------------------------------------------------- - INCLUDE 'HERWIG65.INC' - DOUBLE PRECISION EPS,TOTAL,OLD,NEW - INTEGER III,JJJ,KKK,I - PARAMETER(EPS=1.D-10) - LOGICAL FOUND,LLEFND(5,3,3,3),LQDFND(8,3,3,3),UDDFND(4,3,3,3), - & NEUT,CHAR -C--common block for the parameters for the new modes - DOUBLE PRECISION LLEMAX,LLEAVR,LQDMAX,LQDAVR,UDDMAX,UDDAVR - COMMON /HWDRP4/ LLEMAX(5,3,3,3),LLEAVR(5,3,3,3), - & LQDMAX(8,3,3,3),LQDAVR(8,3,3,3), - & UDDMAX(4,3,3,3),UDDAVR(4,3,3,3) -C--look at the stau decay modes - NEUT=.FALSE. - CHAR=.TRUE. - DO I=1,NDKYS - IF(IDK(I).EQ.429) THEN -C--check two body stau -> neutralino tau not present - IF((IDKPRD(1,I).EQ.450.AND.IDKPRD(2,I).EQ.125).OR. - & (IDKPRD(2,I).EQ.450.AND.IDKPRD(1,I).EQ.125)) NEUT=.TRUE. -C--check two body stau -> chargino nu_tau not present - IF((IDKPRD(1,I).EQ.456.AND.IDKPRD(2,I).EQ.125).OR. - & (IDKPRD(2,I).EQ.456.AND.IDKPRD(1,I).EQ.125)) CHAR=.TRUE. - ENDIF - ENDDO - NEUT=.false. -C--zero the partial widths - DO 50 III=1,3 - DO 50 JJJ=1,3 - DO 50 KKK=1,3 - DO 51 I=1,5 - LLEFND(I,III,JJJ,KKK)=.FALSE. - LLEAVR(I,III,JJJ,KKK)=0.0D0 - 51 LLEMAX(I,III,JJJ,KKK)=0.0D0 - DO 52 I=1,8 - LQDFND(I,III,JJJ,KKK)=.FALSE. - LQDAVR(I,III,JJJ,KKK)=0.0D0 - 52 LQDMAX(I,III,JJJ,KKK)=0.0D0 - DO 53 I=1,4 - UDDFND(I,III,JJJ,KKK)=.FALSE. - UDDAVR(I,III,JJJ,KKK)=0.0D0 - 53 UDDMAX(I,III,JJJ,KKK)=0.0D0 - 50 CONTINUE - FOUND = .FALSE. -C--ensure copuling initialisation - CALL HWISPC -C--calculate all the modes we need -C--first the LLE neutralino modes - IF(.NOT.NEUT) THEN - DO 100 III=1,3 - DO 100 JJJ=1,3 - DO 100 KKK=1,3 - IF(ABS(LAMDA1(III,JJJ,KKK)).GT.EPS.AND. - & RMASS(429).GT.(RMASS(125+2*III)+RMASS(126+2*JJJ)+ - & RMASS(119+2*KKK)+RMASS(125 ))) THEN - FOUND = .TRUE. - LLEFND(1,III,JJJ,KKK)=.TRUE. -C--calculate the partial width -C-- stau- -> l_i+ nu_bar_j l_k- tau- - CALL HWDRMX(429,125+2*III,126+2*JJJ,119+2*KKK,125, - & LLEMAX(1,III,JJJ,KKK),LLEAVR(1,III,JJJ,KKK)) -C-- stau- -> l_i- nu_j l_k+ tau- - CALL HWDRMX(429,119+2*III,120+2*JJJ,125+2*KKK,125, - & LLEMAX(2,III,JJJ,KKK),LLEAVR(2,III,JJJ,KKK)) -C-- stau+ -> l_i- nu_j l_k+ tau+ - CALL HWDRMX(435,119+2*III,120+2*JJJ,125+2*KKK,131, - & LLEMAX(1,III,JJJ,KKK),LLEAVR(1,III,JJJ,KKK)) -C-- stau+ -> l_i+ nu_bar_j l_k- tau+ - CALL HWDRMX(435,125+2*III,126+2*JJJ,119+2*KKK,131, - & LLEMAX(2,III,JJJ,KKK),LLEAVR(2,III,JJJ,KKK)) -C--average - LLEAVR(1,III,JJJ,KKK) = 0.5D0*LLEAVR(1,III,JJJ,KKK) - LLEAVR(2,III,JJJ,KKK) = 0.5D0*LLEAVR(2,III,JJJ,KKK) - ENDIF - 100 CONTINUE - ENDIF -C-- LLE chargino modes -C-- first mode - IF(.NOT.CHAR) THEN - DO 110 III=1,3 - DO 110 JJJ=1,3 - DO 110 KKK=1,3 - IF(ABS(LAMDA1(III,JJJ,KKK)).GT.EPS.AND. - & RMASS(429).GT.(RMASS(126+2*III)+RMASS(125+2*JJJ)+ - & RMASS(126+2*III)+RMASS(126))) THEN - FOUND = .TRUE. - LLEFND(2,III,JJJ,KKK)=.TRUE. -C--calculate the partial width -C-- stau- -> nu_i l_j- nu_bar_k nu_tau - CALL HWDRMX(429,120+2*III,119+2*JJJ,126+2*KKK,126, - & LLEMAX(3,III,JJJ,KKK),LLEAVR(3,III,JJJ,KKK)) -C-- stau+ -> nu_bar_i l_j+ nu_k nu_bar_tau - CALL HWDRMX(435,126+2*III,125+2*JJJ,120+2*KKK,132, - & LLEMAX(3,III,JJJ,KKK),LLEAVR(3,III,JJJ,KKK)) -C--average - LLEAVR(3,III,JJJ,KKK) = 0.5*LLEAVR(3,III,JJJ,KKK) - ENDIF - 110 CONTINUE - ENDIF -C--second mode - IF(.NOT.CHAR) THEN - DO 120 III=1,3 - DO 120 JJJ=1,3 - DO 120 KKK=1,3 - IF(ABS(LAMDA1(III,JJJ,KKK)).GT.EPS.AND. - & RMASS(429).GT.(RMASS(126+2*III)+RMASS(126+2*JJJ)+ - & RMASS(125+2*III)+RMASS(126))) THEN - FOUND = .TRUE. - LLEFND(3,III,JJJ,KKK)=.TRUE. -C--calculate the partial width -C-- stau- -> nu_i l_j- nu_bar_k nu_tau - CALL HWDRMX(429,126+2*III,126+2*JJJ,119+2*KKK,126, - & LLEMAX(4,III,JJJ,KKK),LLEAVR(4,III,JJJ,KKK)) -C-- stau+ -> nu_bar_i l_j+ nu_k nu_bar_tau - CALL HWDRMX(435,120+2*III,120+2*JJJ,125+2*KKK,132, - & LLEMAX(4,III,JJJ,KKK),LLEAVR(4,III,JJJ,KKK)) -C--average - LLEAVR(4,III,JJJ,KKK) = 0.5*LLEAVR(4,III,JJJ,KKK) - ENDIF - 120 CONTINUE - ENDIF -C--third mode - IF(.NOT.CHAR) THEN - DO 130 III=1,3 - DO 130 JJJ=1,3 - DO 130 KKK=1,3 - IF(ABS(LAMDA1(III,JJJ,KKK)).GT.EPS.AND. - & RMASS(429).GT.(RMASS(125+2*III)+RMASS(125+2*JJJ)+ - & RMASS(125+2*III)+RMASS(126))) THEN - FOUND = .TRUE. - LLEFND(4,III,JJJ,KKK)=.TRUE. -C--calculate the partial width -C-- stau- -> nu_i l_j- nu_bar_k nu_tau - CALL HWDRMX(429,119+2*III,119+2*JJJ,125+2*KKK,126, - & LLEMAX(5,III,JJJ,KKK),LLEAVR(5,III,JJJ,KKK)) -C-- stau+ -> nu_bar_i l_j+ nu_k nu_bar_tau - CALL HWDRMX(435,125+2*III,125+2*JJJ,119+2*KKK,132, - & LLEMAX(5,III,JJJ,KKK),LLEAVR(5,III,JJJ,KKK)) -C--average - LLEAVR(5,III,JJJ,KKK) = 0.5*LLEAVR(5,III,JJJ,KKK) - ENDIF - 130 CONTINUE - ENDIF -C--LQD neutralino modes -C--first mode - If(.NOT.NEUT) THEN - DO 200 III=1,3 - DO 200 JJJ=1,3 - DO 200 KKK=1,3 - IF(ABS(LAMDA2(III,JJJ,KKK)).GT.EPS.AND. - & RMASS(429).GT.(RMASS(120+2*III)+RMASS(2*JJJ-1)+ - & RMASS(2*KKK+5)+RMASS(125))) THEN - FOUND = .TRUE. - LQDFND(1,III,JJJ,KKK)=.TRUE. -C--calculate the partial width -C-- stau- -> nu_i d_j dbar_k tau- - CALL HWDRMX(429,120+2*III,2*JJJ-1,2*KKK+5,125, - & LQDMAX(1,III,JJJ,KKK),LQDAVR(1,III,JJJ,KKK)) -C-- stau- -> nu_bar_i dbar_j d_k tau- - CALL HWDRMX(429,126+2*III,2*JJJ+5,2*KKK-1,125, - & LQDMAX(3,III,JJJ,KKK),LQDAVR(3,III,JJJ,KKK)) -C-- stau+ -> nu_bar_i dbar_j d_k tau+ - CALL HWDRMX(435,126+2*III,2*JJJ+5,2*KKK-1,131, - & LQDMAX(1,III,JJJ,KKK),LQDAVR(1,III,JJJ,KKK)) -C-- stau+ -> nu_i d_j dbar_k tau+ - CALL HWDRMX(435,120+2*III,2*JJJ-1,2*KKK+5,131, - & LQDMAX(3,III,JJJ,KKK),LQDAVR(3,III,JJJ,KKK)) -C--average - LQDAVR(1,III,JJJ,KKK) = 0.5d0*LQDAVR(1,III,JJJ,KKK) - LQDAVR(3,III,JJJ,KKK) = 0.5d0*LQDAVR(3,III,JJJ,KKK) - ENDIF - 200 CONTINUE - ENDIF -C--second mode - IF(.NOT.NEUT) THEN - DO 210 III=1,3 - DO 210 JJJ=1,3 - DO 210 KKK=1,3 - IF(ABS(LAMDA2(III,JJJ,KKK)).GT.EPS.AND. - & RMASS(429).GT.(RMASS(119+2*III)+RMASS(2*JJJ)+ - & RMASS( 5 +2*KKK)+RMASS( 125) ).AND. - & JJJ.NE.3) THEN - FOUND = .TRUE. - LQDFND(2,III,JJJ,KKK)=.TRUE. -C--calculate the partial width -C-- stau- -> l_i- u_j dbar_k tau- - CALL HWDRMX(429,119+2*III,2*JJJ,5+2*KKK,125, - & LQDMAX(2,III,JJJ,KKK),LQDAVR(2,III,JJJ,KKK)) -C-- stau- -> l_i+ ubar_j d_k tau- - CALL HWDRMX(429,125+2*III,6+2*JJJ,2*KKK-1,125, - & LQDMAX(4,III,JJJ,KKK),LQDAVR(4,III,JJJ,KKK)) -C-- stau+ -> l_i+ ubar_j d_k tau+ - CALL HWDRMX(435,125+2*III,6+2*JJJ,2*KKK-1,131, - & LQDMAX(2,III,JJJ,KKK),LQDAVR(2,III,JJJ,KKK)) -C-- stau+ -> l_i- u_j dbar_k tau+ - CALL HWDRMX(435,119+2*III,2*JJJ,5+2*KKK,131, - & LQDMAX(4,III,JJJ,KKK),LQDAVR(4,III,JJJ,KKK)) -C--store the average (this is the partial width) - LQDAVR(2,III,JJJ,KKK) = 0.5d0*LQDAVR(2,III,JJJ,KKK) - LQDAVR(4,III,JJJ,KKK) = 0.5d0*LQDAVR(4,III,JJJ,KKK) - ENDIF - 210 CONTINUE - ENDIF -C--chargino modes -C--first mode - IF(.NOT.CHAR) THEN - DO 220 III=1,3 - DO 220 JJJ=1,3 - DO 220 KKK=1,3 - IF(ABS(LAMDA2(III,JJJ,KKK)).GT.EPS.AND. - & RMASS(429).GT.(RMASS(119+2*III)+RMASS(2*JJJ-1)+ - & RMASS(2*KKK-1)+RMASS( 126) )) THEN - FOUND = .TRUE. - LQDFND(3,III,JJJ,KKK)=.TRUE. -C--calculate the partial width -C-- stau- -> l_i- d_j dbar_k nu_tau - CALL HWDRMX(429,119+2*III,2*JJJ-1,5+2*KKK,126, - & LQDMAX(5,III,JJJ,KKK),LQDAVR(5,III,JJJ,KKK)) -C-- stau+ -> l_i+ dbar_j d_k nu_tau_bar - CALL HWDRMX(435,125+2*III,2*JJJ+5,2*KKK-1,132, - & LQDMAX(5,III,JJJ,KKK),LQDAVR(5,III,JJJ,KKK)) -C--store the average (this is the partial width) - LQDAVR(5,III,JJJ,KKK) = 0.5d0*LQDAVR(5,III,JJJ,KKK) - ENDIF - 220 CONTINUE - ENDIF -C--second mode - IF(.NOT.CHAR) THEN - DO 230 III=1,3 - DO 230 JJJ=1,3 - DO 230 KKK=1,3 - IF(ABS(LAMDA2(III,JJJ,KKK)).GT.EPS.AND. - & RMASS(429).GT.(RMASS(120+2*III)+RMASS(2*JJJ-1)+ - & RMASS(2*KKK)+RMASS( 126) ).AND. - & JJJ.NE.3) THEN - FOUND = .TRUE. - LQDFND(4,III,JJJ,KKK)=.TRUE. -C--calculate the partial width -C-- stau- -> nu_bar_i ubar_j d_k nu_tau - CALL HWDRMX(429,126+2*III,6+2*JJJ,2*KKK-1,126, - & LQDMAX(6,III,JJJ,KKK),LQDAVR(6,III,JJJ,KKK)) -C-- stau+ -> nu_i u_j dbar_k nu_tau_bar - CALL HWDRMX(435,120+2*III,2*JJJ,2*KKK+5,132, - & LQDMAX(6,III,JJJ,KKK),LQDAVR(6,III,JJJ,KKK)) -C--store the average (this is the partial width) - LQDAVR(6,III,JJJ,KKK) = 0.5d0*LQDAVR(6,III,JJJ,KKK) - ENDIF - 230 CONTINUE - ENDIF -C--third mode - IF(.NOT.CHAR) THEN - DO 240 III=1,3 - DO 240 JJJ=1,3 - DO 240 KKK=1,3 - IF(ABS(LAMDA2(III,JJJ,KKK)).GT.EPS.AND. - & RMASS(429).GT.(RMASS(120+2*III)+RMASS(2*JJJ-1)+ - & RMASS(2*KKK)+RMASS( 126) ).AND. - & KKK.NE.3) THEN - FOUND = .TRUE. - LQDFND(5,III,JJJ,KKK)=.TRUE. -C--calculate the partial width -C-- stau- -> nu_bar_i ubar_j d_k nu_tau - CALL HWDRMX(429,120+2*III,2*JJJ-1,2*KKK+6,126, - & LQDMAX(7,III,JJJ,KKK),LQDAVR(7,III,JJJ,KKK)) -C-- stau+ -> nu_i u_j dbar_k nu_tau_bar - CALL HWDRMX(435,126+2*III,2*JJJ+5,2*KKK,132, - & LQDMAX(7,III,JJJ,KKK),LQDAVR(7,III,JJJ,KKK)) -C--store the average (this is the partial width) - LQDAVR(7,III,JJJ,KKK) = 0.5d0*LQDAVR(7,III,JJJ,KKK) - ENDIF - 240 CONTINUE - ENDIF -C--fourth mode - IF(.NOT.CHAR) THEN - DO 250 III=1,3 - DO 250 JJJ=1,3 - DO 250 KKK=1,3 - IF(ABS(LAMDA2(III,JJJ,KKK)).GT.EPS.AND. - & RMASS(429).GT.(RMASS(119+2*III)+RMASS(2*JJJ)+ - & RMASS(2*KKK)+RMASS( 126) ).AND. - & JJJ.NE.3.AND.KKK.NE.3) THEN - FOUND = .TRUE. - LQDFND(6,III,JJJ,KKK)=.TRUE. -C--calculate the partial width -C-- stau- -> nu_bar_i ubar_j d_k nu_tau - CALL HWDRMX(429,119+2*III,2*JJJ,2*KKK+6,126, - & LQDMAX(8,III,JJJ,KKK),LQDAVR(8,III,JJJ,KKK)) -C-- stau+ -> nu_i u_j dbar_k nu_tau_bar - CALL HWDRMX(435,125+2*III,2*JJJ+6,2*KKK,132, - & LQDMAX(8,III,JJJ,KKK),LQDAVR(8,III,JJJ,KKK)) -C--store the average (this is the partial width) - LQDAVR(8,III,JJJ,KKK) = 0.5d0*LQDAVR(8,III,JJJ,KKK) - ENDIF - 250 CONTINUE - ENDIF -C--UDD Neutralino mode - IF(.NOT.NEUT) THEN - DO 300 III=1,3 - DO 300 JJJ=1,3 - DO 300 KKK=JJJ,3 - IF(ABS(LAMDA3(III,JJJ,KKK)).GT.EPS.AND.III.NE.3.AND. - & RMASS(429).GT.(RMASS(2*III )+RMASS(2*JJJ-1)+ - & RMASS(2*KKK-1)+RMASS(125 ))) THEN - FOUND = .TRUE. - UDDFND(1,III,JJJ,KKK)=.TRUE. -C--calculate the partial width -C-- stau- -> u_i d_j d_k tau- - CALL HWDRMX(429,2*III,2*JJJ-1,2*KKK-1,125, - & UDDMAX(1,III,JJJ,KKK),UDDAVR(1,III,JJJ,KKK)) -C-- stau- -> ubar_i dbar_j dbar_k tau- - CALL HWDRMX(429,2*III+6,2*JJJ+5,2*KKK+5,125, - & UDDMAX(2,III,JJJ,KKK),UDDAVR(2,III,JJJ,KKK)) -C-- stau+ -> ubar_i dbar_j dbar_k tau+ - CALL HWDRMX(435,2*III+6,2*JJJ+5,2*KKK+5,131, - & UDDMAX(1,III,JJJ,KKK),UDDAVR(1,III,JJJ,KKK)) -C-- stau+ -> u_i d_j d_k tau+ - CALL HWDRMX(435,2*III,2*JJJ-1,2*KKK-1,131, - & UDDMAX(2,III,JJJ,KKK),UDDAVR(2,III,JJJ,KKK)) -C--average - UDDAVR(1,III,JJJ,KKK) = 0.5*UDDAVR(1,III,JJJ,KKK) - UDDAVR(2,III,JJJ,KKK) = 0.5*UDDAVR(2,III,JJJ,KKK) - ENDIF - 300 CONTINUE - ENDIF -C--first chargino modes - IF(.NOT.CHAR) THEN - DO 310 III=1,3 - DO 310 JJJ=III,3 - DO 310 KKK=1,3 - IF((ABS(LAMDA3(III,JJJ,KKK)).GT.EPS.OR. - & ABS(LAMDA3(JJJ,KKK,III)).GT.EPS).AND. - & RMASS(429).GT.(RMASS(2*III )+RMASS(2*JJJ)+ - & RMASS(2*KKK-1)+RMASS(126 )).AND. - & III.NE.3.AND.JJJ.NE.3) THEN - FOUND = .TRUE. - UDDFND(2,III,JJJ,KKK)=.TRUE. -C--calculate the partial width -C-- stau+ -> u_i u_j d_k nu_tau - CALL HWDRMX(435,2*III ,2*JJJ ,2*KKK-1,132, - & UDDMAX(3,III,JJJ,KKK),UDDAVR(3,III,JJJ,KKK)) -C-- stau- -> ubar_i ubar_j dbar_k nu_taubar - CALL HWDRMX(429,2*III+6,2*JJJ+6,2*KKK+5,126, - & UDDMAX(3,III,JJJ,KKK),UDDAVR(3,III,JJJ,KKK)) -C--average - UDDAVR(3,III,JJJ,KKK) = 0.5*UDDAVR(3,III,JJJ,KKK) - ENDIF - 310 CONTINUE - ENDIF -c--second chargino modes - IF(.NOT.CHAR) THEN - DO 320 III=1,3 - DO 320 JJJ=III,3 - DO 320 KKK=JJJ,3 - IF((ABS(LAMDA3(III,JJJ,KKK)).GT.EPS.OR. - & ABS(LAMDA3(JJJ,III,KKK)).GT.EPS.OR. - & ABS(LAMDA3(KKK,JJJ,III)).GT.EPS).AND. - & RMASS(429).GT.(RMASS(2*III-1)+RMASS(2*JJJ-1)+ - & RMASS(2*KKK-1)+RMASS(126 ))) THEN - FOUND = .TRUE. - UDDFND(3,III,JJJ,KKK)=.TRUE. -C--calculate the partial width -C-- stau- -> d_i d_j d_k nu_tau - CALL HWDRMX(429,2*III-1,2*JJJ-1,2*KKK-1,126, - & UDDMAX(4,III,JJJ,KKK),UDDAVR(4,III,JJJ,KKK)) -C-- stau+ -> ubar_i ubar_j dbar_k nu_taubar - CALL HWDRMX(435,2*III+5,2*JJJ+5,2*KKK+5,132, - & UDDMAX(4,III,JJJ,KKK),UDDAVR(4,III,JJJ,KKK)) -C--average - UDDAVR(4,III,JJJ,KKK) = 0.5*UDDAVR(4,III,JJJ,KKK) - ENDIF - 320 CONTINUE - ENDIF -C--return if no new modes found - IF(.NOT.FOUND) RETURN -C--calculate the total partial width for the new modes - TOTAL=0.0D0 - DO 400 III=1,3 - DO 400 JJJ=1,3 - DO 400 KKK=1,3 - DO 401 I=1,5 - 401 TOTAL = TOTAL+LLEAVR(I,III,JJJ,KKK) - DO 402 I=1,8 - 402 TOTAL = TOTAL+LQDAVR(I,III,JJJ,KKK) - DO 403 I=1,4 - 403 TOTAL = TOTAL+UDDAVR(I,III,JJJ,KKK) - 400 CONTINUE -C-total partial width of the old modes - OLD = HBAR/RLTIM(429) -c--NEW TOTAL AND RESET THE LIFETIME - NEW = OLD+TOTAL - RLTIM(429) = HBAR/NEW - RLTIM(435) = HBAR/NEW -c--RENORMALISE THE OLD MODES - DO I=1,NDKYS - IF(IDK(I).EQ.429.OR.IDK(I).EQ.435) - & BRFRAC(I)=BRFRAC(I)*OLD/NEW - ENDDO -C--now add the decay modes to the table this is quite complicated -C--add the LLE modes - DO 500 III=1,3 - DO 500 JJJ=1,3 - DO 500 KKK=1,3 -c-- first neutralino mode - IF(LLEFND(1,III,JJJ,KKK)) THEN -C--stau- - CALL HWDRAD(429,125+2*III,126+2*JJJ,119+2*KKK,125, - & LLEAVR(1,III,JJJ,KKK)/NEW) -C--stau+ - CALL HWDRAD(435,119+2*III,120+2*JJJ,125+2*KKK,131, - & LLEAVR(1,III,JJJ,KKK)/NEW) -c-- second neutralino mode -C--stau- - CALL HWDRAD(429,119+2*III,120+2*JJJ,125+2*KKK,125, - & LLEAVR(2,III,JJJ,KKK)/NEW) -C--stau+ - CALL HWDRAD(435,125+2*III,126+2*JJJ,119+2*KKK,131, - & LLEAVR(2,III,JJJ,KKK)/NEW) - ENDIF -C-- first chargino mode - IF(LLEFND(2,III,JJJ,KKK)) THEN -C--stau- - CALL HWDRAD(429,120+2*III,119+2*JJJ,126+2*KKK,126, - & LLEAVR(3,III,JJJ,KKK)/NEW) -C--stau+ - CALL HWDRAD(435,126+2*III,125+2*JJJ,120+2*KKK,136, - & LLEAVR(3,III,JJJ,KKK)/NEW) - ENDIF -C-- second chargino mode - IF(LLEFND(3,III,JJJ,KKK)) THEN -C--stau- - CALL HWDRAD(429,126+2*III,126+2*JJJ,119+2*KKK,126, - & LLEAVR(4,III,JJJ,KKK)/NEW) -C--stau+ - CALL HWDRAD(435,120+2*III,120+2*JJJ,125+2*KKK,132, - & LLEAVR(4,III,JJJ,KKK)/NEW) - ENDIF -C-- second chargino mode - IF(LLEFND(4,III,JJJ,KKK)) THEN -C--stau- - CALL HWDRAD(429,119+2*III,119+2*JJJ,125+2*KKK,126, - & LLEAVR(5,III,JJJ,KKK)/NEW) -C--stau+ - CALL HWDRAD(435,125+2*III,125+2*JJJ,119+2*KKK,132, - & LLEAVR(5,III,JJJ,KKK)/NEW) - ENDIF - 500 CONTINUE -C--add the LQD modes - DO 600 III=1,3 - DO 600 JJJ=1,3 - DO 600 KKK=1,3 - IF(LQDFND(1,III,JJJ,KKK)) THEN -C--first mode -c--stau- - CALL HWDRAD(429,120+2*III,2*JJJ-1,2*KKK+5,125, - & LQDAVR(1,III,JJJ,KKK)/NEW) -c--stau+ - CALL HWDRAD(435,126+2*III,2*JJJ+5,2*KKK-1,131, - & LQDAVR(1,III,JJJ,KKK)/NEW) -C--second mode -c--stau- - CALL HWDRAD(429,126+2*III,2*JJJ+5,2*KKK-1,125, - & LQDAVR(3,III,JJJ,KKK)/NEW) -c--stau+ - CALL HWDRAD(435,120+2*III,2*JJJ-1,2*KKK+5,131, - & LQDAVR(3,III,JJJ,KKK)/NEW) - ENDIF -C--third mode - IF(LQDFND(2,III,JJJ,KKK)) THEN -c--stau- - CALL HWDRAD(429,119+2*III,2*JJJ ,2*KKK+5,125, - & LQDAVR(2,III,JJJ,KKK)/NEW) -c--stau+ - CALL HWDRAD(435,125+2*III,2*JJJ+6,2*KKK-1,131, - & LQDAVR(2,III,JJJ,KKK)/NEW) -C--fourth mode -c--stau- - CALL HWDRAD(429,125+2*III,2*JJJ+6,2*KKK-1,125, - & LQDAVR(4,III,JJJ,KKK)/NEW) -c--stau+ - CALL HWDRAD(435,119+2*III,2*JJJ ,2*KKK+5,131, - & LQDAVR(4,III,JJJ,KKK)/NEW) - ENDIF -c--chargino modes -C--first mode - IF(LQDFND(3,III,JJJ,KKK)) THEN -c--stau- - CALL HWDRAD(429,119+2*III,2*JJJ-1,2*KKK+5,126, - & LQDAVR(5,III,JJJ,KKK)/NEW) -c--stau+ - CALL HWDRAD(435,125+2*III,2*JJJ+5,2*KKK-1,132, - & LQDAVR(5,III,JJJ,KKK)/NEW) - ENDIF -C--second mode - IF(LQDFND(4,III,JJJ,KKK)) THEN -c--stau- - CALL HWDRAD(429,126+2*III,2*JJJ+6,2*KKK-1,126, - & LQDAVR(6,III,JJJ,KKK)/NEW) -c--stau+ - CALL HWDRAD(435,120+2*III,2*JJJ ,2*KKK+5,132, - & LQDAVR(6,III,JJJ,KKK)/NEW) - ENDIF -C--third mode - IF(LQDFND(5,III,JJJ,KKK)) THEN - CALL HWDRAD(429,120+2*III,2*JJJ-1,2*KKK+6,126, - & LQDAVR(7,III,JJJ,KKK)/NEW) - CALL HWDRAD(435,126+2*III,2*JJJ+5,2*KKK ,132, - & LQDAVR(7,III,JJJ,KKK)/NEW) - - ENDIF -C--fourth mode - IF(LQDFND(6,III,JJJ,KKK)) THEN -c--stau- - CALL HWDRAD(429,119+2*III,2*JJJ ,2*KKK+6,126, - & LQDAVR(8,III,JJJ,KKK)/NEW) -c--stau+ - CALL HWDRAD(435,125+2*III,2*JJJ+6,2*KKK ,132, - & LQDAVR(8,III,JJJ,KKK)/NEW) - ENDIF - 600 CONTINUE -C--add the UDD modes - DO 700 III=1,3 - DO 700 JJJ=1,3 - DO 700 KKK=1,3 -C--neutralino modes - IF(UDDFND(1,III,JJJ,KKK)) THEN -C--first mode -C--stau- - CALL HWDRAD(429,2*III,2*JJJ-1,2*KKK-1,125, - & UDDAVR(1,III,JJJ,KKK)/NEW) -C--stau+ - CALL HWDRAD(435,2*III+6,2*JJJ+5,2*KKK+5,131, - & UDDAVR(1,III,JJJ,KKK)/NEW) -C--second mode -C--stau- - CALL HWDRAD(429,2*III+6,2*JJJ+5,2*KKK+5,125, - & UDDAVR(2,III,JJJ,KKK)/NEW) -C--stau+ - CALL HWDRAD(435,2*III,2*JJJ-1,2*KKK-1,131, - & UDDAVR(2,III,JJJ,KKK)/NEW) - ENDIF -C--first chargino mode - IF(UDDFND(2,III,JJJ,KKK)) THEN - CALL HWDRAD(429,2*III+6,2*JJJ+6,2*KKK+5,126, - & UDDAVR(3,III,JJJ,KKK)/NEW) - CALL HWDRAD(435,2*III ,2*JJJ ,2*KKK-1,132, - & UDDAVR(3,III,JJJ,KKK)/NEW) - ENDIF -C--second chargino mode - IF(UDDFND(3,III,JJJ,KKK)) THEN - CALL HWDRAD(429,2*III-1,2*JJJ-1,2*KKK-1,126, - & UDDAVR(4,III,JJJ,KKK)/NEW) - CALL HWDRAD(435,2*III+5,2*JJJ+5,2*KKK+5,132, - & UDDAVR(4,III,JJJ,KKK)/NEW) - ENDIF - 700 CONTINUE -C--format statements for the output -C AB FORMAT('CALCULATING DECAY RATE FOR ',A8,' --> ', -C AB & A8,' ',A8,' ',A8,' ',A8) -C AB FORMAT('PARTIAL WIDTH IS ',5E15.5,' +/- ',5E15.5) - END -C---------------------------------------------------------------------- - SUBROUTINE HWDRPM(WGT,IDIN,PIN,ID1,ID2,ID3,ID4,POUT,GEN) -C---------------------------------------------------------------------- -C subroutine to calculate the weight and momentum for a -C four body RPV decay -C---------------------------------------------------------------------- - INCLUDE 'HERWIG65.INC' - DOUBLE PRECISION WGT,PIN(5),POUT(5,4),MCHIL2,MCHIU2,MCHI2,RHO, - & HWRUNI,MCHI,PCM4,PCM1,PCM2,HWUPCM,PCHI(5),P23(5),FJAC, - & F1,F2,M23,MIN,A(2,6),B(2,6),C(2,6),PCHIM(5),m122,M232,M132, - & HWULDO,COLFAC,MAXWGT - INTEGER IDIN,ID1,ID2,ID3,ID4,I,J,O(2),IDINT(6),IG - DATA O/2,1/ - EXTERNAL HWRUNI,HWUPCM,HWULDO -C--H.E. functions - DOUBLE COMPLEX S,D,FCHI(2,2,8,8),FCHIM(2,2,8,8),ME(2,2,2,2), - & PROPS(3,2) - INTEGER P1,P2,P3,P4,METYPE - COMMON/HWHEWS/S(8,8,2),D(8,8) - DOUBLE PRECISION XMASS,PLAB,PRW,PCM - COMMON/HWHEWP/XMASS(10),PLAB(5,10),PRW(5,2),PCM(5,10) - DOUBLE COMPLEX MESQ,II - PARAMETER(II=(0.0d0,1.0d0)) -C--common block for the couplings - DOUBLE PRECISION SW,CW,TW,E,G,RT,ORT,MW,MZ,AFN(2,12,2,4), - & AFG(2,6,2),AFC(2,12,2,2),OIJ(2,4,2),OIJP(2,2,2),OIJPP(2,4,4), - & HNN(2,3,4,4),HCC(2,3,2,2),HNC(2,4,2),HFF(2,4,12),HWW(2), - & HZZ(2),ZAB(12,2,2),HHB(2,3),GS - COMMON /HWSPNC/ SW,CW,TW,E,G,RT,ORT,MW,MZ,GS,AFN,AFG,AFC,OIJ,OIJP, - & OIJPP,HNN,HCC,HNC,HFF,HWW,HZZ,ZAB,HHB -C--variables to be saved after initilisation - LOGICAL FIRST,CHRINO,GEN - DOUBLE PRECISION MN(2),MN2(2),GN(2),GMN(2) - DATA FIRST /.TRUE./ - SAVE FIRST,MN,MN2,GN,GMN -C--initialisation - IF(FIRST) THEN - FIRST = .FALSE. - HBAR=1.D-15*SQRT(GEV2NB/10.)/CSPEED - MN(1) = RMASS(450) - GN(1) = HBAR/RLTIM(450) - MN2(1) = MN(1)**2 - GMN(1) = MN(1)*GN(1) - MN(2) = RMASS(454) - GN(2) = HBAR/RLTIM(454) - MN2(2) = MN(2)**2 - GMN(2) = MN(2)*GN(2) - ENDIF -C--work out if neutralino or chargino mode - CHRINO=ID4.EQ.126.OR.ID4.EQ.132 -C--mass of the incoming particle - MIN=PIN(5) -C--check the kinematics - IF(MIN.LT.RMASS(ID1)+RMASS(ID2)+RMASS(ID3)+RMASS(ID4)) THEN - WGT = 0.0D0 - RETURN - ENDIF -C--generate the mass of the off-shell gaugino -C--limits on the mass - MCHIU2 = (MIN-RMASS(ID4))**2 - MCHIL2 = (RMASS(ID1)+RMASS(ID2)+RMASS(ID3))**2 - IF(CHRINO) THEN - IG=2 - ELSE - IG=1 - ENDIF -C--limits in transformaed variable - MCHIU2 = ATAN((MCHIU2-MN2(IG))/GMN(IG)) - MCHIL2 = ATAN((MCHIL2-MN2(IG))/GMN(IG)) -C--generate the value of rho - RHO = HWRUNI(0,MCHIL2,MCHIU2) -C--convert to a mass - MCHI2 = GMN(IG)*TAN(RHO)+MN2(IG) - MCHI = SQRT(MCHI2) -C--jacobian factor - FJAC = (MCHIU2-MCHIL2)/GMN(IG) -C--perform the first decay - PCHI(5) = MCHI - POUT(5,4) = RMASS(ID4) - PCM4 = HWUPCM(MIN,MCHI,POUT(5,4)) - CALL HWDTWO(PIN,PCHI,POUT(1,4),PCM4,2.0D0,.TRUE.) -C--weight for this piece - F1 = PCM4/8./PIFAC/MIN**2 -C--mass of the 23 system - M23 = SQRT(HWRUNI(2,(RMASS(ID2)+RMASS(ID3))**2, - & (MCHI-RMASS(ID1))**2)) - F2=((MCHI-RMASS(ID1))**2-(RMASS(ID2)+RMASS(ID3))**2) -C--perform this decay - POUT(5,1) = RMASS(ID1) - P23(5) = M23 - PCM1 = HWUPCM(MCHI,M23,POUT(5,1)) - CALL HWDTWO(PCHI,P23,POUT(1,1),PCM1,2.0D0,.TRUE.) -c--perform the last decay - POUT(5,2) = RMASS(ID2) - POUT(5,3) = RMASS(ID3) - PCM2 = HWUPCM(M23,POUT(5,2),POUT(5,3)) - CALL HWDTWO(P23,POUT(1,2),POUT(1,3),PCM2,2.0D0,.TRUE.) -C--weight for this piece - F2 = F2*PCM1*PCM2/64./PIFAC**4/MCHI/M23 -C--put the phase space weight all together - WGT = F1*FJAC*F2 -C--colour factor - IF(ID3.GT.12) THEN - COLFAC = 1.0D0 - ELSEIF(ID1.GT.12) THEN - COLFAC = 3.0D0 - ELSE - COLFAC = 6.0D0 - ENDIF -C--couplings of the upper vertex - CALL HWDRTC(IDIN,CHRINO,A) -C--neutralinos - IF(.NOT.CHRINO) THEN -C--LLE decays - IF(ID3.GT.12) THEN - CALL HWDRN1(ID1,ID2,ID3,ID4,B,C,METYPE,IDINT,MAXWGT) -C--LQD decays - ELSEIF(ID1.GT.12) THEN - CALL HWDRN2(ID1,ID2,ID3,ID4,B,C,METYPE,IDINT,MAXWGT) -C--UDD decays - ELSE - CALL HWDRN3(ID1,ID2,ID3,ID4,B,C,METYPE,IDINT,MAXWGT) - ENDIF -C--chargino modes - ELSE -C--LLE modes - IF(ID3.GT.12) THEN - CALL HWDRC1(ID1,ID2,ID3,ID4,B,C,METYPE,IDINT,MAXWGT) -C--LQD mode - ELSEIF(ID1.GT.12) THEN - CALL HWDRC2(ID1,ID2,ID3,ID4,B,C,METYPE,IDINT,MAXWGT) -C--UDD mode - ELSE - CALL HWDRC3(ID1,ID2,ID3,ID4,B,C,METYPE,IDINT,MAXWGT) - ENDIF - ENDIF -C--now we have the couplings, masses and momenta we can calculate the matrix element -C--reorder the momenta for the H.E. code -C--outgoing particles - DO 6 I=1,4 - PCM(1,I)=POUT(3,I) - PCM(2,I)=POUT(1,I) - PCM(3,I)=POUT(2,I) - PCM(4,I)=POUT(4,I) - 6 PCM(5,I)=POUT(5,I) -C-- intermediate neutralino - PCHIM(1) = PCHI(3) - PCHIM(2) = PCHI(1) - PCHIM(3) = PCHI(2) - PCHIM(4) = PCHI(4) - PCHIM(5) = PCHI(5) -C--compute the S functions - CALL HWHEW2(4,PCM(1,1),S(1,1,2),S(1,1,1),D) - DO 7 I=1,8 - DO 7 J=1,8 - S(I,J,2) = -S(I,J,2) - 7 D(I,J) = TWO*D(I,J) -C--compute the one 5 function we need - CALL HWH2F3(4,FCHI ,PCHIM, MN(IG)) - CALL HWH2F3(4,FCHIM,PCHIM,-MN(IG)) -c--COMPUTE THE INVARIANTs - M122 = 2.0D0*HWULDO(POUT(1,1),POUT(1,2)) - M232 = 2.0D0*HWULDO(POUT(1,2),POUT(1,3)) - M132 = 2.0D0*HWULDO(POUT(1,1),POUT(1,3)) -C--propagators - DO J=1,2 - IF(METYPE.LE.4.OR.METYPE.EQ.9.OR.METYPE.EQ.14) THEN - PROPS(1,J) = 1./(M232-RMASS(IDINT(J))**2 - & +II*RMASS(IDINT(J ))*HBAR/RLTIM(IDINT(J ))) - PROPS(2,J) = 1./(M132-RMASS(IDINT(J+2))**2 - & +II*RMASS(IDINT(J+2))*HBAR/RLTIM(IDINT(J+2))) - PROPS(3,J) = 1./(M122-RMASS(IDINT(J+4))**2 - & +II*RMASS(IDINT(J+4))*HBAR/RLTIM(IDINT(J+4))) - ELSEIF(METYPE.EQ.5.OR.METYPE.EQ.10) THEN - PROPS(1,J) = 1./(M122-RMASS(IDINT(J ))**2 - & +II*RMASS(IDINT(J ))*HBAR/RLTIM(IDINT(J ))) - ELSE - PROPS(1,J) = 1./(M232-RMASS(IDINT(J))**2 - & +II*RMASS(IDINT(J ))*HBAR/RLTIM(IDINT(J ))) - PROPS(2,J) = 1./(M132-RMASS(IDINT(J+2))**2 - & +II*RMASS(IDINT(J+2))*HBAR/RLTIM(IDINT(J+2))) - ENDIF - ENDDO -c--COMPUTE THE MATRIX ELEMENT -C--matrix element for stau decay - DO 100 P1=1,2 - DO 100 P2=1,2 - DO 100 P3=1,2 - DO 100 P4=1,2 - ME(P1,P2,P3,P4) = 0.0d0 - DO J=1,2 -C--propagators -C--LLE AND LQD NEUTRALINO 1 - IF(METYPE.EQ.1) THEN -C-- FIRST DIAGRAM - IF(P2.EQ.O(P3)) ME(P1,P2,P3,P4) = ME(P1,P2,P3,P4) - & +PROPS(1,J)*A(P4,J )*B(O(P1),J )*C(O(P2),J )* - & S(2,3,P2)*FCHI(P1,P4,1,4) -C-- SECOND DIAGRAM - IF(P1.EQ.O(P3)) ME(P1,P2,P3,P4) = ME(P1,P2,P3,P4)+ - & (-PROPS(2,J))*A(P4,J+2)*B(O(P2),j+2)*C(O(P1),j+2)* - & S(1,3,p1)*FCHI(P2,P4,2,4) -C-- THIRD DIAGRAM - IF(P1.EQ.P2) ME(P1,P2,P3,P4) = ME(P1,P2,P3,P4) - & -(PROPS(3,J)*A(P4,J+4)*B(P3,j+4)*C(O(P1),j+4) - & *S(2,1,P2)*FCHIM(o(P4),p3,4,3)) -C--UDD NEUTRALINO 1 - ELSEIF(METYPE.EQ.2) THEN -C-- FIRST DIAGRAM - IF(P2.EQ.P3) ME(P1,P2,P3,P4) = ME(P1,P2,P3,P4) - & -PROPS(1,J)*A(O(P4),J )*B(O(P1),J )*C(O(P2),J )* - & S(2,3,P2)*FCHI(P1,O(P4),1,4) -C-- SECOND DIAGRAM - IF(P1.EQ.P3) ME(P1,P2,P3,P4) = ME(P1,P2,P3,P4) - & +PROPS(2,J)*A(O(P4),J+2)*B(O(P2),J+2)*C(O(P3),J+2)* - & s(1,3,P1)*FCHI(P2,O(P4),2,4) -C-- THIRD DIAGRAM - IF(P1.EQ.P2) ME(P1,P2,P3,P4) = ME(P1,P2,P3,P4) - & -(PROPS(3,J)*A(O(P4),J+4)*B(O(P3),J+4)*C(O(P2),J+4)* - & S(1,2,P1)*FCHI(P3,O(P4),3,4)) -C--LLE AND LQD NEUTRALINO 2 - ELSEIF(METYPE.EQ.3) THEN -C--FIRST DIAGRAM - IF(P2.EQ.O(P3)) ME(P1,P2,P3,P4)= ME(P1,P2,P3,P4) - & -(PROPS(1,J)*A(O(P4),J )*B( P1 ,J )*C( P2 ,J )* - & S(3,2,O(P2))*FCHIM(P4,P1,4,1)) -C--SECOND DIAGRAM - IF(P1.EQ.O(P3)) ME(P1,P2,P3,P4) = ME(P1,P2,P3,P4) - & +PROPS(2,J)*A(O(P4),J+2)*B( P2 ,j+2)*C( P1 ,J+2)* - & S(3,1,O(P1))*FCHIM(P4,P2,4,2) -C--THIRD DIAGRAM - IF(P1.EQ.P2) ME(P1,P2,P3,P4)=ME(P1,P2,P3,P4) - & +PROPS(3,J)*A(O(P4),J+4)*B(O(P3),j+4)*C( P1 ,J+4) - & *s(1,2,O(P2))*FCHI(P3,O(P4),3,4) -C--UDD - ELSEIF(METYPE.EQ.4) THEN -C--FIRST DIAGRAM - IF(P2.EQ.P3) ME(P1,P2,P3,P4)=ME(P1,P2,P3,P4) - & +PROPS(1,J)*A(O(P4),J )*B(P1,J )*C(P2,J )* - & S(2,3,O(P2))*FCHIM(P4,P1,4,1) -C--SECOND DIAGRAM - IF(P1.EQ.P3) ME(P1,P2,P3,P4)=ME(P1,P2,P3,P4) - & +PROPS(2,J)*A(O(P4),J+2)*B(P2,J+2)*C(P1,J+2)* - & S(3,1,O(P3))*FCHIM(P4,P2,4,2) -C--THIRD DIAGRAM - IF(P1.EQ.P2) ME(P1,P2,P3,P4)=ME(P1,P2,P3,P4) - & -(PROPS(3,J)*A(O(P4),J+4)*B(P3,J+4)*C(P1,J+4)* - & S(2,1,O(P1))*FCHIM(P4,P3,4,3)) -C--LLE AND LQD CHARGINO 1 - ELSEIF(METYPE.EQ.5) THEN - IF(P1.EQ.P2) ME(P1,P2,P3,P4)=ME(P1,P2,P3,P4) - & +PROPS(1,J)*A(O(P4),J )*B(P3,J )*C(O(P1),J)* - & S(2,1, P2 )*FCHIM(P4,P3,4,3) -C--LLE AND LQD CHARGINO 2 - ELSEIF(METYPE.EQ.6) THEN -C--FIRST DIAGRAM - IF(P2.EQ.O(P3)) ME(P1,P2,P3,P4) = ME(P1,P2,P3,P4) - & +PROPS(1,J)*A(P4,J )*B(O(P1),J )*C(O(P2),J )* - & S(2,3,P2)*FCHI(P1,P4,1,4) -C--SECOND DIAGRAM - IF(P1.EQ.O(P3)) ME(P1,P2,P3,P4) = ME(P1,P2,P3,P4) - & +PROPS(2,J)*A(P4,J+2)*B(O(P2),J+2)*C(P3,J+2)* - & S(1,3,P1)*FCHI(P2,P4,2,4) -C--LLE AND LQD CHARGINO 3 - ELSEIF(METYPE.EQ.7) THEN -C--FIRST DIAGRAM - IF(P2.EQ.O(P3)) ME(P1,P2,P3,P4) = ME(P1,P2,P3,P4) - & +PROPS(1,J)*A(O(P4),J )*B(O(P1),J )*C(P3,J )* - & S(2,3,P2)*FCHIM(P4,O(P1),4,1) -C--SECOND DIAGRAM - IF(P1.EQ.O(P3)) ME(P1,P2,P3,P4) = ME(P1,P2,P3,P4) - & +PROPS(2,J)*A(O(P4),J+2)*B(O(P2),J+2)*C(P3,J+2)* - & S(1,3,P1)*FCHIM(P4,O(P2),4,2) -C--UDD CHARGINO 1 - ELSEIF(METYPE.EQ.8) THEN -C--FIRST DIAGRAM - IF(P2.EQ.P3) ME(P1,P2,P3,P4) = ME(P1,P2,P3,P4) - & +PROPS(1,J)*A(P4,J )*B(O(P1),J )*C(O(P3),J )* - & S(2,3,P2)*FCHI(P1,P4,1,4) -C--SECOND DIAGRAM - IF(P1.EQ.P3) ME(P1,P2,P3,P4) = ME(P1,P2,P3,P4) - & +PROPS(2,J)*A(P4,J+2)*B(O(P2),J+2)*C(O(P3),J+2)* - & S(1,3,P1)*FCHI(P2,P4,2,4) -C--UDD CHARGINO 2 - ELSEIF(METYPE.EQ.9) THEN -C--FIRST DIAGRAM - IF(P2.EQ.P3) ME(P1,P2,P3,P4) = ME(P1,P2,P3,P4) - & -(PROPS(1,J)*A(O(P4),J )*B(O(P1),J )*C(O(P2),J )* - & S(3,2,P3)*FCHIM(P4,O(P1),4,1)) -C--SECOND DIAGRAM - IF(P1.EQ.P3) ME(P1,P2,P3,P4) = ME(P1,P2,P3,P4) - & -(PROPS(2,J)*A(O(P4),J+2)*B(O(P2),J+2)*C(O(P1),J+2)* - & S(3,1,P3)*FCHIM(P4,O(P2),4,2)) -C--THIRD DIAGRAM - IF(P1.EQ.P2) ME(P1,P2,P3,P4) = ME(P1,P2,P3,P4) - & -(PROPS(3,J)*A(O(P4),J+4)*B(O(P3),J+4)*C(O(P2),J+4)* - & S(1,2,P1)*FCHIM(P4,O(P3),4,3)) -C--LLE AND LQD CHARGINO 4 - ELSEIF(METYPE.EQ.10) THEN - IF(P1.EQ.P2) ME(P1,P2,P3,P4)=ME(P1,P2,P3,P4) - & +PROPS(1,J)*A(P4,J)*B(O(P3),J)*C(P1,J)* - & S(1,2,O(P2))*FCHI(P3,P4,3,4) -C--LLE AND LQD CHARGINO 5 - ELSEIF(METYPE.EQ.11) THEN -C--FIRST DIAGRAM - IF(P2.EQ.O(P3)) ME(P1,P2,P3,P4) = ME(P1,P2,P3,P4) - & -(PROPS(1,J)*A(O(P4),J )*B(P1,J )*C(P2,J )* - & S(3,2,P3)*FCHIM(P4,P1,4,1)) -C--SECOND DIAGRAM - IF(P1.EQ.O(P3)) ME(P1,P2,P3,P4) = ME(P1,P2,P3,P4) - & -(PROPS(2,J)*A(O(P4),J+2)*B(P2,J+2)*C(P1,J+2)* - & S(3,1,P3)*FCHIM(P4,P2,4,2)) -C--LLE AND LQD CHARGINO 6 - ELSEIF(METYPE.EQ.12) THEN -C--FIRST DIAGRAM - IF(P2.EQ.O(P3)) ME(P1,P2,P3,P4) = ME(P1,P2,P3,P4) - & +PROPS(1,J)*A(P4,J )*B(P1,J )*C(P2,J )* - & S(3,2,O(P2))*FCHI(O(P1),P4,1,4) -C--SECOND DIAGRAM - IF(P1.EQ.O(P3)) ME(P1,P2,P3,P4) = ME(P1,P2,P3,P4) - & +PROPS(2,J)*A(P4,J+2)*B(P2,J+2)*C(P1,J+2)* - & S(3,1,O(P1))*FCHI(O(P2),P4,2,4) -C--UDD CHARGINO 3 - ELSEIF(METYPE.EQ.13) THEN -C--FIRST DIAGRAM - IF(P2.EQ.P3) ME(P1,P2,P3,P4) = ME(P1,P2,P3,P4) - & -(PROPS(1,J)*A(O(P4),J )*B(P1,J )*C(P2,J )* - & FCHIM(P4,P4,4,1)*S(3,2,O(P2))) -C--SECOND DIAGRAM - IF(P1.EQ.P3) ME(P1,P2,P3,P4) = ME(P1,P2,P3,P4) - & -(PROPS(2,J)*A(O(P4),J+2)*B(P2,J+2)*C(P1,J+2)* - & FCHIM(P4,P2,4,2)*S(3,1,O(P3))) -C--UDD CHARGINO 4 - ELSEIF(METYPE.EQ.14) THEN -C--FIRST DIAGRAM - IF(P2.EQ.P3) ME(P1,P2,P3,P4) = ME(P1,P2,P3,P4) - & +PROPS(1,J)*A(P4,J )*B(P1,J )*C(P3,J )* - & S(2,3,O(P2))*FCHI(O(P1),P4,1,4) -C--SECOND DIAGRAM - IF(P1.EQ.P3) ME(P1,P2,P3,P4) = ME(P1,P2,P3,P4) - & +PROPS(2,J)*A(P4,J+2)*B(P2,J+2)*C(P3,J+2)* - & S(1,3,O(P1))*FCHI(O(P2),P4,2,4) -C--THIRD DIAGRAM - IF(P1.EQ.P2) ME(P1,P2,P3,P4) = ME(P1,P2,P3,P4) - & +PROPS(3,J)*A(P4,J+4)*B(P3,J+4)*C(P1,J+4)* - & S(2,1,O(P2))*FCHI(O(P3),P4,3,4) - ENDIF - ENDDO - 100 CONTINUE -C-- combine to get the matrix element squared - MESQ=0.0D0 - DO 200 P1=1,2 - DO 200 P2=1,2 - DO 200 P3=1,2 - DO 200 P4=1,2 - 200 MESQ=MESQ+ME(P1,P2,P3,P4)*DCONJG(ME(P1,P2,P3,P4)) -C--identical particle symmetry factor - IF(ID1.EQ.ID2.OR.ID1.EQ.ID3.OR.ID2.EQ.ID3) WGT=0.5D0*WGT -C--final piece of the weight - WGT = WGT*DBLE(MESQ)*COLFAC -C--if generating decays divide by maximum - IF(GEN) WGT=WGT/MAXWGT - END -C----------------------------------------------------------------------- - SUBROUTINE HWDRPD(IHEP,MHEP,LHEP) -C----------------------------------------------------------------------- -C four body rpv decay generator -C----------------------------------------------------------------------- - INCLUDE 'HERWIG65.INC' - INTEGER IHEP,MHEP,LHEP,ID1,ID2,ID3,ID4,IDIN,NPOINT,NTRY,I - PARAMETER(NPOINT=1000) - DOUBLE PRECISION WGT,POUT(5,4),HWRGEN - EXTERNAL HWRGEN -c--ID'S OF THE PARTICLES - IDIN = IDHW(IHEP) - ID1 = IDHW(MHEP) - ID2 = IDHW(MHEP+1) - ID3 = IDHW(MHEP+2) - ID4 = IDHW(LHEP) -c--GENERATE THE DECAY MODE - NTRY = 0 - 10 CALL HWDRPM(WGT,IDIN,PHEP(1,IHEP),ID1,ID2,ID3,ID4,POUT,.TRUE.) - IF(WGT.GT.HWRGEN(0)) then - DO I=1,4 - CALL HWVEQU(5,POUT(1,I),PHEP(1,MHEP-1+I)) - ENDDO - ELSEIF(NTRY.LT.NPOINT) THEN - NTRY=NTRY+1 - GOTO 10 - ELSE - CALL HWWARN('HWDRPD',100) - GOTO 999 - ENDIF - 999 END -C----------------------------------------------------------------------- - SUBROUTINE HWDRAD(IDIN,ID1,ID2,ID3,ID4,BR) -C----------------------------------------------------------------------- -C ADD A FOUR BODY STAU DECAY TO THE DECAY TABLES -C----------------------------------------------------------------------- - INCLUDE 'HERWIG65.INC' - INTEGER IDIN,ID1,ID2,ID3,ID4 - DOUBLE PRECISION BR - IDK(NDKYS+1) = IDIN - NME(NDKYS+1) = 1000 - IDKPRD(1,NDKYS+1) = ID1 - IDKPRD(2,NDKYS+1) = ID2 - IDKPRD(3,NDKYS+1) = ID3 - IDKPRD(4,NDKYS+1) = ID4 - IDKPRD(5,NDKYS+1) = 0 - BRFRAC(NDKYS+1) = BR - NDKYS=NDKYS+1 - END -C----------------------------------------------------------------------- - SUBROUTINE HWDRMX(IDIN,ID1,ID2,ID3,ID4,MAXWGT,WIDTH) -C----------------------------------------------------------------------- -C PERFORM THE INITIAL SEARCH FOR THE MAXIMUM WEIGHT AND CALCULATION -c OF THE PARTIAL WIDTH FOR A FOUR BODY RPV STAU DECAY -C----------------------------------------------------------------------- - INCLUDE 'HERWIG65.INC' - INTEGER IDIN,ID1,ID2,ID3,ID4,NPOINT,I - DOUBLE PRECISION WGTSM,WGTSQ,WGT,PIN(5),MAXWGT,WIDTH,POUT(5,4) - PARAMETER(NPOINT=10000) -C--Output the mode being calculated - IF(IPRINT.EQ.2) WRITE(*,10) RNAME(IDIN),RNAME(ID1),RNAME(ID2), - & RNAME(ID3),RNAME(ID4) -C--momentum of the decaying particle - DO I=1,3 - PIN(I) = 0.0D0 - ENDDO - PIN(4) = RMASS(IDIN) - PIN(5) = RMASS(IDIN) -C--zero sum and sum squared - WGTSM = 0.0D0 - WGTSQ = 0.0D0 - DO I=1,NPOINT - CALL HWDRPM(WGT,IDIN,PIN,ID1,ID2,ID3,ID4,POUT,.FALSE.) - MAXWGT=MAX(MAXWGT,WGT) - WGTSM=WGTSM+WGT - WGTSQ=WGTSQ+WGT**2 - ENDDO - WGTSM=WGTSM/DBLE(NPOINT) - WGTSQ=MAX(0.,WGTSQ/DBLE(NPOINT)-WGTSM**2) - WGTSQ = SQRT(WGTSQ/DBLE(NPOINT)) - IF(IPRINT.EQ.2) WRITE(*,20) WGTSM,WGTSQ - WIDTH=WIDTH+WGTSM - RETURN -C--format statements for the output - 10 FORMAT('CALCULATING DECAY RATE FOR ',A8,' --> ', - & A8,' ',A8,' ',A8,' ',A8) - 20 FORMAT('PARTIAL WIDTH IS ',5E15.5,' +/- ',5E15.5) - END -C----------------------------------------------------------------------- - SUBROUTINE HWDRTC(IDIN,CHRINO,A) -C----------------------------------------------------------------------- -C CALCULATE THE COUPLINGS FOR THE STAU COUPLING FOR RPV 4 BODY STAU -C DECAYS -C----------------------------------------------------------------------- - INCLUDE 'HERWIG65.INC' - INTEGER IDIN,J - DOUBLE PRECISION A(2,6) - LOGICAL CHRINO -C--common block for the couplings - DOUBLE PRECISION SW,CW,TW,E,G,RT,ORT,MW,MZ,AFN(2,12,2,4), - & AFG(2,6,2),AFC(2,12,2,2),OIJ(2,4,2),OIJP(2,2,2),OIJPP(2,4,4), - & HNN(2,3,4,4),HCC(2,3,2,2),HNC(2,4,2),HFF(2,4,12),HWW(2), - & HZZ(2),ZAB(12,2,2),HHB(2,3),GS - COMMON /HWSPNC/ SW,CW,TW,E,G,RT,ORT,MW,MZ,GS,AFN,AFG,AFC,OIJ,OIJP, - & OIJPP,HNN,HCC,HNC,HFF,HWW,HZZ,ZAB,HHB -C--neutralino case - IF(.NOT.CHRINO) THEN - IF(IDIN.EQ.435) THEN - DO J=1,6 - A(1,J) = AFN(2,11,1,1) - A(2,J) = AFN(1,11,1,1) - ENDDO - ELSE - DO J=1,6 - A(1,J) = AFN(1,11,1,1) - A(2,J) = AFN(2,11,1,1) - ENDDO - ENDIF -C--chargino case - ELSE - IF(IDIN.EQ.435) THEN - DO J=1,6 - A(1,J) = AFC(2,11,1,1) - A(2,J) = AFC(1,11,1,1) - ENDDO - ELSE - DO J=1,6 - A(1,J) = AFC(1,11,1,1) - A(2,J) = AFC(2,11,1,1) - ENDDO - ENDIF - ENDIF - END -C----------------------------------------------------------------------- - SUBROUTINE HWDRN1(ID1,ID2,ID3,ID4,B,C,METYPE,IDINT,MAXWGT) -C----------------------------------------------------------------------- -C CALCULATE THE COUPLINGS FOR THE NEUTRALINO PART OF A FOUR BODY -C STAU DECAY FOR LLE COUPLINGS -C----------------------------------------------------------------------- - INCLUDE 'HERWIG65.INC' - INTEGER ID1,ID2,ID3,ID4,J,K,METYPE,III,JJJ,KKK,O(2),IDINT(6) - DOUBLE PRECISION B(2,6),C(2,6),MAXWGT - DATA O/2,1/ -C--common block for the couplings - DOUBLE PRECISION SW,CW,TW,E,G,RT,ORT,MW,MZ,AFN(2,12,2,4), - & AFG(2,6,2),AFC(2,12,2,2),OIJ(2,4,2),OIJP(2,2,2),OIJPP(2,4,4), - & HNN(2,3,4,4),HCC(2,3,2,2),HNC(2,4,2),HFF(2,4,12),HWW(2), - & HZZ(2),ZAB(12,2,2),HHB(2,3),GS - COMMON /HWSPNC/ SW,CW,TW,E,G,RT,ORT,MW,MZ,GS,AFN,AFG,AFC,OIJ,OIJP, - & OIJPP,HNN,HCC,HNC,HFF,HWW,HZZ,ZAB,HHB -C--common block for the parameters for the new modes - DOUBLE PRECISION LLEMAX,LLEAVR,LQDMAX,LQDAVR,UDDMAX,UDDAVR - COMMON /HWDRP4/ LLEMAX(5,3,3,3),LLEAVR(5,3,3,3), - & LQDMAX(8,3,3,3),LQDAVR(8,3,3,3), - & UDDMAX(4,3,3,3),UDDAVR(4,3,3,3) -c-- chi^0_1 -> l_i- nu_j e_k+ - IF(IDPDG(ID1).GT.0) THEN - METYPE=1 -C--indices for the couplings - III = (ID1-119)/2 - JJJ = (ID2-120)/2 - KKK = (ID3-125)/2 - DO J=1,2 - DO K=1,2 -C--RPC neutralino decay couplings - B(K,J ) = AFN( K ,5+2*III,J,1) - B(K,J+2) = AFN( K ,6+2*JJJ,J,1) - B(K,J+4) = AFN(O(K),5+2*KKK,J,1) - ENDDO -C--the RPV couplings - C(1,J ) = LMIXSS(2*III-1,1,J)*LAMDA1(III,JJJ,KKK) - C(2,J ) = 0.0D0 - C(1,J+2) = LAMDA1(III,JJJ,KKK) - C(2,J+2) = 0.0D0 - C(1,J+4) = LMIXSS(2*KKK-1,2,J)*LAMDA1(III,JJJ,KKK) - C(2,J+4) = 0.0D0 -C--the intermediate particles - IDINT(J ) = 423+2*III+(J-1)*12 - IDINT(J+2) = 424+2*JJJ+(J-1)*12 - IDINT(J+4) = 423+2*KKK+(J-1)*12 - ENDDO - C(1,4) = 0.0D0 -C--set the maximum weight - IF(ID4.EQ.125) THEN - MAXWGT = LLEMAX(2,III,JJJ,KKK) - ELSE - MAXWGT = LLEMAX(1,III,JJJ,KKK) - ENDIF - ELSE -c-- chi^0_1 -> l_i+ nubar_j e_k- - METYPE=3 -C--indices for the couplings - III = (ID1-125)/2 - JJJ = (ID2-126)/2 - KKK = (ID3-119)/2 -C-- RPC neutralino decay couplings - DO J=1,2 - DO K=1,2 - B(K,J ) = AFN(O(K),5+2*III,J,1) - B(K,J+2) = AFN(O(K),6+2*JJJ,J,1) - B(K,J+4) = AFN( K ,5+2*KKK,J,1) - ENDDO -C--the RPV couplings - C(1,J ) = 0.0D0 - C(2,J ) = LMIXSS(2*III-1,1,J)*LAMDA1(III,JJJ,KKK) - C(1,J+2) = 0.0D0 - C(2,J+2) = LAMDA1(III,JJJ,KKK) - C(1,J+4) = 0.0D0 - C(2,J+4) = LMIXSS(2*KKK-1,2,J)*LAMDA1(III,JJJ,KKK) -C--the intermediate particles - IDINT(J ) = 423+2*III+(J-1)*12 - IDINT(J+2) = 424+2*JJJ+(J-1)*12 - IDINT(J+4) = 423+2*KKK+(J-1)*12 - ENDDO - C(2,4) = 0.0D0 -C--set the maximum weight - IF(ID4.EQ.125) THEN - MAXWGT = LLEMAX(1,III,JJJ,KKK) - ELSE - MAXWGT = LLEMAX(2,III,JJJ,KKK) - ENDIF - ENDIF - END -C----------------------------------------------------------------------- - SUBROUTINE HWDRN2(ID1,ID2,ID3,ID4,B,C,METYPE,IDINT,MAXWGT) -C----------------------------------------------------------------------- -C CALCULATE THE COUPLINGS FOR THE NEUTRALINO PART OF A FOUR BODY -C STAU DECAY FOR LQD COUPLINGS -C----------------------------------------------------------------------- - INCLUDE 'HERWIG65.INC' - INTEGER ID1,ID2,ID3,ID4,J,K,METYPE,III,JJJ,KKK,O(2),IDINT(6) - DOUBLE PRECISION B(2,6),C(2,6),MAXWGT - DATA O/2,1/ -C--common block for the couplings - DOUBLE PRECISION SW,CW,TW,E,G,RT,ORT,MW,MZ,AFN(2,12,2,4), - & AFG(2,6,2),AFC(2,12,2,2),OIJ(2,4,2),OIJP(2,2,2),OIJPP(2,4,4), - & HNN(2,3,4,4),HCC(2,3,2,2),HNC(2,4,2),HFF(2,4,12),HWW(2), - & HZZ(2),ZAB(12,2,2),HHB(2,3),GS - COMMON /HWSPNC/ SW,CW,TW,E,G,RT,ORT,MW,MZ,GS,AFN,AFG,AFC,OIJ,OIJP, - & OIJPP,HNN,HCC,HNC,HFF,HWW,HZZ,ZAB,HHB -C--common block for the parameters for the new modes - DOUBLE PRECISION LLEMAX,LLEAVR,LQDMAX,LQDAVR,UDDMAX,UDDAVR - COMMON /HWDRP4/ LLEMAX(5,3,3,3),LLEAVR(5,3,3,3), - & LQDMAX(8,3,3,3),LQDAVR(8,3,3,3), - & UDDMAX(4,3,3,3),UDDAVR(4,3,3,3) - IF(IDPDG(ID1).GT.0) THEN - METYPE=1 -C--chi^0_1 -> nu_i d_j dbar_k - IF(MOD(ID1,2).EQ.0) THEN -C--indices for the couplings - III = (ID1-120)/2 - JJJ = (ID2+1)/2 - KKK = (ID3-5)/2 - DO J=1,2 - DO K=1,2 -C--RPC neutralino decay couplings -C--first diagram - B(K,J ) = AFN( K ,6+2*III,J,1) -C--second diagram - B(K,J+2) = AFN( K ,2*JJJ-1,J,1) -C--third diagram - B(K,J+4) = AFN(O(K),2*KKK-1,J,1) - ENDDO -C--the RPV couplings - C(1,J ) =-LAMDA2(III,JJJ,KKK) - C(2,J ) = 0.0D0 - C(1,J+2) =(-QMIXSS(2*JJJ-1,1,J))*LAMDA2(III,JJJ,KKK) - C(2,J+2) = 0.0D0 - C(1,J+4) =(-QMIXSS(2*KKK-1,2,J))*LAMDA2(III,JJJ,KKK) - C(2,J+4) = 0.0D0 -C--the intermediate particles - IDINT(J ) = 424+2*III+(J-1)*12 - IDINT(J+2) = 399+2*JJJ+(J-1)*12 - IDINT(J+4) = 399+2*KKK+(J-1)*12 - ENDDO - C(1,2) = 0.0D0 -C--set the maximum weight - IF(ID4.EQ.125) THEN - MAXWGT = LQDMAX(1,III,JJJ,KKK) - ELSE - MAXWGT = LQDMAX(3,III,JJJ,KKK) - ENDIF -C--chi^0_1 -> l_i- u_j dbar_k - ELSE -C--indices for the couplings - III = (ID1-119)/2 - JJJ = ID2/2 - KKK = (ID3-5)/2 - DO J=1,2 - DO K=1,2 -C-- RPC neutralino decay couplings -C-- first diagram - B(K,J ) = AFN( K ,2*III+5,J,1) -C-- second diagram - B(K,J+2) = AFN( K ,2*JJJ ,J,1) -C-- third diagram - B(K,J+4) = AFN(O(K),2*KKK-1,J,1) - ENDDO -C-- the RPV couplings - C(1,J ) =LMIXSS(2*III-1,1,J)*LAMDA2(III,JJJ,KKK) - C(2,J ) = 0.0D0 - C(1,J+2) =QMIXSS(2*JJJ,1,J)*LAMDA2(III,JJJ,KKK) - C(2,J+2) = 0.0D0 - C(1,J+4) =QMIXSS(2*KKK-1,2,J)*LAMDA2(III,JJJ,KKK) - C(2,J+4) = 0.0D0 -C--the intermediate particles - IDINT(J ) = 423+2*III+(J-1)*12 - IDINT(J+2) = 400+2*JJJ+(J-1)*12 - IDINT(J+4) = 399+2*KKK+(J-1)*12 - ENDDO -C--maximum weight - IF(ID4.EQ.125) THEN - MAXWGT = LQDMAX(2,III,JJJ,KKK) - ELSE - MAXWGT = LQDMAX(4,III,JJJ,KKK) - ENDIF - ENDIF - ELSE - METYPE=3 -C--chi^0_1 -> nu_i d_j dbar_k - IF(MOD(ID1,2).EQ.0) THEN -C--indices for the couplings - III = (ID1-126)/2 - JJJ = (ID2-5)/2 - KKK = (ID3+1)/2 -C-- RPC neutralino decay couplings - DO J=1,2 - DO K=1,2 -C--first diagram - B(K,J ) = AFN(O(K),6+2*III,J,1) -C--second diagram - B(K,J+2) = AFN(O(K),2*JJJ-1,J,1) -C--third diagram - B(K,J+4) = AFN( K ,2*KKK-1,J,1) - ENDDO -C--the RPV couplings - C(1,J ) = 0.0D0 - C(2,J ) =-LAMDA2(III,JJJ,KKK) - C(1,J+2) = 0.0D0 - C(2,J+2) =(-QMIXSS(2*JJJ-1,1,J))*LAMDA2(III,JJJ,KKK) - C(1,J+4) = 0.0D0 - C(2,J+4) =(-QMIXSS(2*KKK-1,2,J))*LAMDA2(III,JJJ,KKK) -C--the intermediate particles - IDINT(J ) = 424+2*III+(J-1)*12 - IDINT(J+2) = 399+2*JJJ+(J-1)*12 - IDINT(J+4) = 399+2*KKK+(J-1)*12 - ENDDO - C(2,2) = 0.0D0 -C--maximum weight - IF(ID4.EQ.125) THEN - MAXWGT = LQDMAX(3,III,JJJ,KKK) - ELSE - MAXWGT = LQDMAX(1,III,JJJ,KKK) - ENDIF -C--chi^0_1 -> l_i- u_j dbar_k - ELSE -C--indices for the couplings - III = (ID1-125)/2 - JJJ = (ID2-6)/2 - KKK = (ID3+1)/2 -C--RPC neutralino decay couplings - DO J=1,2 - DO K=1,2 -C--first diagram - B(K,J ) = AFN(O(K),2*III+5,J,1) -C--second diagram - B(K,J+2) = AFN(O(K),2*JJJ ,J,1) -C-- third diagram - B(K,J+4) = AFN( K ,2*KKK-1,J,1) - ENDDO -C--the RPV couplings - C(1,J ) = 0.0D0 - C(2,J ) = LMIXSS(2*III-1,1,J)*LAMDA2(III,JJJ,KKK) - C(1,J+2) = 0.0D0 - C(2,J+2) = QMIXSS(2*JJJ,1,J)*LAMDA2(III,JJJ,KKK) - C(1,J+4) = 0.0D0 - C(2,J+4) = QMIXSS(2*KKK-1,2,J)*LAMDA2(III,JJJ,KKK) -C--the intermediate particles - IDINT(J ) = 423+2*III+(J-1)*12 - IDINT(J+2) = 400+2*JJJ+(J-1)*12 - IDINT(J+4) = 399+2*KKK+(J-1)*12 - ENDDO -C--maximum weight - IF(ID4.EQ.125) THEN - MAXWGT = LQDMAX(4,III,JJJ,KKK) - ELSE - MAXWGT = LQDMAX(2,III,JJJ,KKK) - ENDIF - ENDIF - ENDIF - END -C----------------------------------------------------------------------- - SUBROUTINE HWDRN3(ID1,ID2,ID3,ID4,B,C,METYPE,IDINT,MAXWGT) -C----------------------------------------------------------------------- -C CALCULATE THE COUPLINGS FOR THE NEUTRALINO PART OF A FOUR BODY -C STAU DECAY FOR UDD COUPLINGS -C----------------------------------------------------------------------- - INCLUDE 'HERWIG65.INC' - INTEGER ID1,ID2,ID3,ID4,J,K,METYPE,III,JJJ,KKK,O(2),IDINT(6) - DOUBLE PRECISION B(2,6),C(2,6),MAXWGT - DATA O/2,1/ -C--common block for the couplings - DOUBLE PRECISION SW,CW,TW,E,G,RT,ORT,MW,MZ,AFN(2,12,2,4), - & AFG(2,6,2),AFC(2,12,2,2),OIJ(2,4,2),OIJP(2,2,2),OIJPP(2,4,4), - & HNN(2,3,4,4),HCC(2,3,2,2),HNC(2,4,2),HFF(2,4,12),HWW(2), - & HZZ(2),ZAB(12,2,2),HHB(2,3),GS - COMMON /HWSPNC/ SW,CW,TW,E,G,RT,ORT,MW,MZ,GS,AFN,AFG,AFC,OIJ,OIJP, - & OIJPP,HNN,HCC,HNC,HFF,HWW,HZZ,ZAB,HHB -C--common block for the parameters for the new modes - DOUBLE PRECISION LLEMAX,LLEAVR,LQDMAX,LQDAVR,UDDMAX,UDDAVR - COMMON /HWDRP4/ LLEMAX(5,3,3,3),LLEAVR(5,3,3,3), - & LQDMAX(8,3,3,3),LQDAVR(8,3,3,3), - & UDDMAX(4,3,3,3),UDDAVR(4,3,3,3) -C--chi^0_1 -> u_i d_j d_k - IF(IDPDG(ID1).GT.0) THEN - METYPE=2 -C--indices for the rpv couplings - III = ID1 /2 - JJJ = (ID2+1)/2 - KKK = (ID3+1)/2 -c-- RPC neutralino decay couplings - DO J=1,2 - DO K=1,2 - B(K,J ) = AFN( K ,2*III ,J,1) - B(K,J+2) = AFN( K ,2*JJJ-1,J,1) - B(K,J+4) = AFN( K ,2*KKK-1,J,1) - ENDDO -C-- the RPV couplings - C(1,J ) = 0.0D0 - C(2,J ) = QMIXSS(2*III ,2,J)*LAMDA3(III,JJJ,KKK) - C(1,J+2) = 0.0D0 - C(2,J+2) = QMIXSS(2*JJJ-1,2,J)*LAMDA3(III,JJJ,KKK) - C(1,J+4) = 0.0D0 - C(2,J+4) = QMIXSS(2*KKK-1,2,J)*LAMDA3(III,JJJ,KKK) -C--the intermediate particles - IDINT(J ) = 400+2*III+(J-1)*12 - IDINT(J+2) = 399+2*JJJ+(J-1)*12 - IDINT(J+4) = 399+2*KKK+(J-1)*12 - ENDDO -C--maximum weight - IF(ID4.EQ.125) THEN - MAXWGT=UDDMAX(1,III,JJJ,KKK) - ELSE - MAXWGT=UDDMAX(2,III,JJJ,KKK) - ENDIF -C--chi^0_1 -> ubar_i dbar_j dbar_k - ELSE - METYPE=4 -C--indices for the rpv couplings - III = (ID1-6)/2 - JJJ = (ID2-5)/2 - KKK = (ID3-5)/2 -c-- RPC neutralino decay couplings - DO J=1,2 - DO K=1,2 - B(K,J ) = AFN(O(K),2*III ,J,1) - B(K,J+2) = AFN(O(K),2*JJJ-1,J,1) - B(K,J+4) = AFN(O(K),2*KKK-1,J,1) - ENDDO -C-- the RPV couplings - C(1,J ) = QMIXSS(2*III ,2,J)*LAMDA3(III,JJJ,KKK) - C(2,J ) = 0.0D0 - C(1,J+2) = QMIXSS(2*JJJ-1,2,J)*LAMDA3(III,JJJ,KKK) - C(2,J+2) = 0.0D0 - C(1,J+4) = QMIXSS(2*KKK-1,2,J)*LAMDA3(III,JJJ,KKK) - C(2,J+4) = 0.0D0 -C--the intermediate particles - IDINT(J ) = 400+2*III+(J-1)*12 - IDINT(J+2) = 399+2*JJJ+(J-1)*12 - IDINT(J+4) = 399+2*KKK+(J-1)*12 - ENDDO -C--maximum weight - IF(ID4.EQ.125) THEN - MAXWGT=UDDMAX(2,III,JJJ,KKK) - ELSE - MAXWGT=UDDMAX(1,III,JJJ,KKK) - ENDIF - ENDIF - END -C----------------------------------------------------------------------- - SUBROUTINE HWDRC1(ID1,ID2,ID3,ID4,B,C,METYPE,IDINT,MAXWGT) -C----------------------------------------------------------------------- -C CALCULATE THE COUPLINGS FOR THE CHARGINO PART OF A FOUR BODY -C STAU DECAY FOR LLE COUPLINGS -C----------------------------------------------------------------------- - INCLUDE 'HERWIG65.INC' - INTEGER ID1,ID2,ID3,ID4,J,K,METYPE,III,JJJ,KKK,O(2),IDINT(6) - DOUBLE PRECISION B(2,6),C(2,6),MAXWGT - DATA O/2,1/ -C--common block for the couplings - DOUBLE PRECISION SW,CW,TW,E,G,RT,ORT,MW,MZ,AFN(2,12,2,4), - & AFG(2,6,2),AFC(2,12,2,2),OIJ(2,4,2),OIJP(2,2,2),OIJPP(2,4,4), - & HNN(2,3,4,4),HCC(2,3,2,2),HNC(2,4,2),HFF(2,4,12),HWW(2), - & HZZ(2),ZAB(12,2,2),HHB(2,3),GS - COMMON /HWSPNC/ SW,CW,TW,E,G,RT,ORT,MW,MZ,GS,AFN,AFG,AFC,OIJ,OIJP, - & OIJPP,HNN,HCC,HNC,HFF,HWW,HZZ,ZAB,HHB -C--common block for the parameters for the new modes - DOUBLE PRECISION LLEMAX,LLEAVR,LQDMAX,LQDAVR,UDDMAX,UDDAVR - COMMON /HWDRP4/ LLEMAX(5,3,3,3),LLEAVR(5,3,3,3), - & LQDMAX(8,3,3,3),LQDAVR(8,3,3,3), - & UDDMAX(4,3,3,3),UDDAVR(4,3,3,3) -C--first mode - IF(MOD(ID1,2).EQ.0.AND.MOD(ID3,2).EQ.0) THEN -C--nu_i l_j- nubar_k - IF(IDPDG(ID1).GT.0) THEN - METYPE=5 -C--indices for the couplings - III = (ID1-120)/2 - JJJ = (ID2-119)/2 - KKK = (ID3-126)/2 - DO J=1,2 -C--RPC chargino decay couplings - DO K=1,2 - B(K,J) = AFC(O(K),5+2*KKK,J,1) - ENDDO -C--RPV coupling - C(1,J)=LAMDA1(III,JJJ,KKK)*LMIXSS(2*KKK-1,2,J) - C(2,J)=0.0D0 -C--the intermediate particles - IDINT(J) = 423+2*KKK+(J-1)*12 - ENDDO -C--maximum weight - WGTMAX=LLEMAX(3,III,JJJ,KKK) -C--nubar_i l_j+ nu_k - ELSE - METYPE=10 -C--indices for the couplings - III = (ID1-126)/2 - JJJ = (ID2-125)/2 - KKK = (ID3-120)/2 -C-- RPC chargino decay couplings - DO J=1,2 - DO K=1,2 - B(K,J) = AFC( K ,5+2*KKK,J,1) - ENDDO -C-- RPV coupling - C(2,J)=LAMDA1(III,JJJ,KKK)*LMIXSS(2*KKK-1,2,J) - C(1,J)=0.0D0 -C--the intermediate particles - IDINT(J) = 423+2*KKK+(J-1)*12 - ENDDO -C--maximum weight - WGTMAX=LLEMAX(3,III,JJJ,KKK) - ENDIF -C--second mode - ELSEIF(MOD(ID1,2).EQ.0.AND.MOD(ID2,2).EQ.0) THEN -C--nu_i nu_j e_k+ - IF(IDPDG(ID1).GT.0) THEN - METYPE=6 -C--indices for the couplings - III = (ID1-120)/2 - JJJ = (ID2-120)/2 - KKK = (ID3-125)/2 - DO J=1,2 -C--RPC chargino decay couplings - DO K=1,2 - B(K,J ) = AFC( K ,5+2*III,J,1) - B(K,J+2) = AFC( K ,5+2*JJJ,J,1) - ENDDO -C--RPV coupling - C(1,J )=LAMDA1(III,JJJ,KKK)*LMIXSS(2*III-1,1,J) - C(2,J )=0.0D0 - C(1,J+2)=LAMDA1(III,JJJ,KKK)*LMIXSS(2*JJJ-1,1,J) - C(2,J+2)=0.0D0 -C--the intermediate particles - IDINT(J ) = 423+2*III+(J-1)*12 - IDINT(J+2) = 423+2*JJJ+(J-1)*12 - ENDDO -C--maximum weight - MAXWGT = LLEMAX(4,III,JJJ,KKK) -C--nubar_i nubar_j e_k- - ELSE - METYPE=11 -C--indices for the couplings - III = (ID1-126)/2 - JJJ = (ID2-126)/2 - KKK = (ID3-119)/2 -C--RPC chargino decay couplings - DO J=1,2 - DO K=1,2 - B(K,J ) = AFC(O(K),5+2*III,J,1) - B(K,J+2) = AFC(O(K),5+2*JJJ,J,1) - ENDDO -C--RPV coupling - C(1,J )=0.0D0 - C(2,J )=LAMDA1(III,JJJ,KKK)*LMIXSS(2*III-1,1,J) - C(1,J+2)=0.0D0 - C(2,J+2)=LAMDA1(III,JJJ,KKK)*LMIXSS(2*JJJ-1,1,J) -C--the intermediate particles - IDINT(J ) = 423+2*III+(J-1)*12 - IDINT(J+2) = 423+2*JJJ+(J-1)*12 - ENDDO -C--maximum weight - MAXWGT = LLEMAX(4,III,JJJ,KKK) - ENDIF -C--third mode - ELSE -C--l_i- l_j- l_k+ - IF(IDPDG(ID1).GT.0) THEN - METYPE=7 -C--indices for the couplings - III = (ID1-119)/2 - JJJ = (ID2-119)/2 - KKK = (ID3-125)/2 - DO J=1,2 -C--RPC chargino decay couplings - DO K=1,2 - B(K,J ) = AFC( K ,6+2*III,J,1) - B(K,J+2) = AFC( K ,6+2*JJJ,J,1) - ENDDO -C--RPV coupling - C(1,J )=LAMDA1(III,JJJ,KKK) - C(2,J )=0.0D0 - C(1,J+2)=LAMDA1(III,JJJ,KKK) - C(2,J+2)=0.0D0 -C--the intermediate particles - IDINT(J ) = 424+2*III+(J-1)*12 - IDINT(J+2) = 424+2*JJJ+(J-1)*12 - ENDDO - C(1,2)=0.0d0 - C(1,4)=0.0d0 -C--maximum weight - MAXWGT = LLEMAX(5,III,JJJ,KKK) -C--l_i- l_j- l_k+ - ELSE - METYPE=12 -C--indices for the couplings - III = (ID1-125)/2 - JJJ = (ID2-125)/2 - KKK = (ID3-119)/2 -C--RPC chargino decay couplings - DO J=1,2 - DO K=1,2 - B(K,J ) = AFC(O(K),6+2*III,J,1) - B(K,J+2) = AFC(O(K),6+2*JJJ,J,1) - ENDDO -C--RPV coupling - C(1,J )=0.0D0 - C(2,J )=LAMDA1(III,JJJ,KKK) - C(1,J+2)=0.0D0 - C(2,J+2)=LAMDA1(III,JJJ,KKK) -C--the intermediate particles - IDINT(J ) = 424+2*III+(J-1)*12 - IDINT(J+2) = 424+2*JJJ+(J-1)*12 - ENDDO - C(2,2)=0.0d0 - C(2,4)=0.0d0 -C--maximum weight - MAXWGT = LLEMAX(5,III,JJJ,KKK) - ENDIF - ENDIF - END -C----------------------------------------------------------------------- - SUBROUTINE HWDRC2(ID1,ID2,ID3,ID4,B,C,METYPE,IDINT,MAXWGT) -C----------------------------------------------------------------------- -C CALCULATE THE COUPLINGS FOR THE CHARGINO PART OF A FOUR BODY -C STAU DECAY FOR LLE COUPLINGS -C----------------------------------------------------------------------- - INCLUDE 'HERWIG65.INC' - INTEGER ID1,ID2,ID3,ID4,J,K,METYPE,III,JJJ,KKK,O(2),IDINT(6) - DOUBLE PRECISION B(2,6),C(2,6),MAXWGT - DATA O/2,1/ -C--common block for the couplings - DOUBLE PRECISION SW,CW,TW,E,G,RT,ORT,MW,MZ,AFN(2,12,2,4), - & AFG(2,6,2),AFC(2,12,2,2),OIJ(2,4,2),OIJP(2,2,2),OIJPP(2,4,4), - & HNN(2,3,4,4),HCC(2,3,2,2),HNC(2,4,2),HFF(2,4,12),HWW(2), - & HZZ(2),ZAB(12,2,2),HHB(2,3),GS - COMMON /HWSPNC/ SW,CW,TW,E,G,RT,ORT,MW,MZ,GS,AFN,AFG,AFC,OIJ,OIJP, - & OIJPP,HNN,HCC,HNC,HFF,HWW,HZZ,ZAB,HHB -C--common block for the parameters for the new modes - DOUBLE PRECISION LLEMAX,LLEAVR,LQDMAX,LQDAVR,UDDMAX,UDDAVR - COMMON /HWDRP4/ LLEMAX(5,3,3,3),LLEAVR(5,3,3,3), - & LQDMAX(8,3,3,3),LQDAVR(8,3,3,3), - & UDDMAX(4,3,3,3),UDDAVR(4,3,3,3) -C--first mode - IF(MOD(ID1,2).EQ.1.AND.MOD(ID3,2).EQ.1) THEN -C--l_i- d_j dbar_k - IF(IDPDG(ID1).GT.0) THEN - METYPE=7 -C--indices for the couplings - III = (ID1-119)/2 - JJJ = (ID2+1)/2 - KKK = (ID3-5)/2 - DO J=1,2 -C--RPC chargino decay couplings - DO K=1,2 - B(K,J ) = AFC( K ,6+2*III,J,1) - B(K,J+2) = AFC( K , 2*JJJ,J,1) - ENDDO -C--RPV coupling - C(1,J )=LAMDA2(III,JJJ,KKK) - C(2,J )=0.0D0 - C(1,J+2)=LAMDA2(III,JJJ,KKK)*QMIXSS(2*JJJ,1,J) - C(2,J+2)=0.0D0 -C--the intermediate particles - IDINT(J ) = 424+2*III+(J-1)*12 - IDINT(J+2) = 400+2*JJJ+(J-1)*12 - ENDDO - C(1,2)=0.0d0 -C--maximum weight - MAXWGT=LQDMAX(5,III,JJJ,KKK) -C--l_i+ dbar_j d_k - ELSE - METYPE=12 -C--indices for the couplings - III = (ID1-125)/2 - JJJ = (ID2-5)/2 - KKK = (ID3+1)/2 -C--RPC chargino decay couplings - DO J=1,2 - DO K=1,2 - B(K,J ) = AFC(O(K),6+2*III,J,1) - B(K,J+2) = AFC(O(K),2*JJJ ,J,1) - ENDDO -C--RPV coupling - C(1,J )=0.0D0 - C(2,J )=LAMDA2(III,JJJ,KKK) - C(1,J+2)=0.0D0 - C(2,J+2)=LAMDA2(III,JJJ,KKK)*QMIXSS(2*JJJ,1,J) -C--the intermediate particles - IDINT(J ) = 424+2*III+(J-1)*12 - IDINT(J+2) = 400+2*JJJ+(J-1)*12 - ENDDO - C(2,2)=0.0d0 -C--maximum weight - MAXWGT=LQDMAX(5,III,JJJ,KKK) - ENDIF -C--second mode - ELSEIF(MOD(ID1,2).EQ.0.AND.MOD(ID3,2).EQ.1) THEN -C--nu_i u_j dbar_k - IF(IDPDG(ID1).GT.0) THEN - METYPE=6 -C--indices for the couplings - III = (ID1-120)/2 - JJJ = (ID2 )/2 - KKK = (ID3-5)/2 - DO J=1,2 -C--RPC chargino decay couplings - DO K=1,2 - B(K,J ) = AFC( K ,5+2*III,J,1) - B(K,J+2) = AFC( K ,2*JJJ-1,J,1) - ENDDO -C--RPV coupling - C(1,J )=LAMDA2(III,JJJ,KKK)*LMIXSS(2*III-1,1,J) - C(2,J )=0.0D0 - C(1,J+2)=LAMDA2(III,JJJ,KKK)*QMIXSS(2*JJJ-1,1,J) - C(2,J+2)=0.0D0 -C--the intermediate particles - IDINT(J ) = 423+2*III+(J-1)*12 - IDINT(J+2) = 399+2*JJJ+(J-1)*12 - ENDDO -C--maximum weight - MAXWGT=LQDMAX(6,III,JJJ,KKK) -C--nubar_i ubar_j d_k - ELSE - METYPE=11 -C--indices for the couplings - III = (ID1-126)/2 - JJJ = (ID2-6)/2 - KKK = (ID3+1)/2 -C--RPC chargino decay couplings - DO J=1,2 - DO K=1,2 - B(K,J ) = AFC(O(K),5+2*III,J,1) - B(K,J+2) = AFC(O(K),2*JJJ-1,J,1) - ENDDO -C--RPV coupling - C(1,J )=0.0D0 - C(2,J )=LAMDA2(III,JJJ,KKK)*LMIXSS(2*III-1,1,J) - C(1,J+2)=0.0D0 - C(2,J+2)=LAMDA2(III,JJJ,KKK)*QMIXSS(2*JJJ-1,1,J) -C--the intermediate particles - IDINT(J ) = 423+2*III+(J-1)*12 - IDINT(J+2) = 399+2*JJJ+(J-1)*12 - ENDDO -C--maximum weight - MAXWGT=LQDMAX(6,III,JJJ,KKK) - ENDIF -C--third mode - ELSEIF(MOD(ID1,2).EQ.0.AND.MOD(ID3,2).EQ.0) THEN -C--nu_i d_j ubar_k - IF(IDPDG(ID1).GT.0) THEN - METYPE=5 -C--indices for the couplings - III = (ID1-120)/2 - JJJ = (ID2+1)/2 - KKK = (ID3-6)/2 - DO J=1,2 -C--RPC chargino decay couplings - DO K=1,2 - B(K,J) = AFC(O(K),2*KKK-1,J,1) - ENDDO -C--RPV coupling - C(1,J)=LAMDA2(III,JJJ,KKK)*QMIXSS(2*KKK-1,2,J) - C(2,J)=0.0D0 -C--the intermediate particles - IDINT(J) = 399+2*KKK+(J-1)*12 - ENDDO -C--maximum weight - MAXWGT=LQDMAX(7,III,JJJ,KKK) -C--nubar_i dbar_j u_k - ELSE - METYPE=10 -C--indices for the couplings - III = (ID1-126)/2 - JJJ = (ID2-5)/2 - KKK = (ID3 )/2 -C-- RPC chargino decay couplings - DO J=1,2 - DO K=1,2 - B(K,J) = AFC( K ,2*KKK-1,J,1) - ENDDO -C-- RPV coupling - C(1,J)=0.0D0 - C(2,J)=LAMDA2(III,JJJ,KKK)*QMIXSS(2*KKK-1,2,J) -C--the intermediate particles - IDINT(J) = 399+2*KKK+(J-1)*12 - ENDDO -C--maximum weight - MAXWGT=LQDMAX(7,III,JJJ,KKK) - ENDIF -C--fourth mode - ELSE -C--l_i- u_j ubar_k - IF(IDPDG(ID1).GT.0) THEN - METYPE=5 -C--indices for the couplings - III = (ID1-119)/2 - JJJ = (ID2 )/2 - KKK = (ID3-6)/2 - DO J=1,2 -C--RPC chargino decay couplings - DO K=1,2 - B(K,J) = AFC(O(K),2*KKK-1,J,1) - ENDDO -C--RPV coupling - C(1,J)=(-LAMDA2(III,JJJ,KKK))*QMIXSS(2*KKK-1,2,J) - C(2,J)=0.0D0 -C--the intermediate particles - IDINT(J) = 399+2*KKK+(J-1)*12 - ENDDO -C--maximum weight - MAXWGT=LQDMAX(8,III,JJJ,KKK) -C--l_i+ ubar_j u_k - ELSE - METYPE=10 -C--indices for the couplings - III = (ID1-125)/2 - JJJ = (ID2-6)/2 - KKK = (ID3 )/2 -C-- RPC chargino decay couplings - DO J=1,2 - DO K=1,2 - B(K,J) = AFC( K ,2*KKK-1,J,1) - ENDDO -C-- RPV coupling - C(1,J)=0.0D0 - C(2,J)=LAMDA2(III,JJJ,KKK)*QMIXSS(2*KKK-1,2,J) -C--the intermediate particles - IDINT(J) = 399+2*KKK+(J-1)*12 - ENDDO -C--maximum weight - MAXWGT=LQDMAX(8,III,JJJ,KKK) - ENDIF - ENDIF - END -C----------------------------------------------------------------------- - SUBROUTINE HWDRC3(ID1,ID2,ID3,ID4,B,C,METYPE,IDINT,MAXWGT) -C----------------------------------------------------------------------- -C CALCULATE THE COUPLINGS FOR THE CHARGINO PART OF A FOUR BODY -C STAU DECAY FOR LLE COUPLINGS -C----------------------------------------------------------------------- - INCLUDE 'HERWIG65.INC' - INTEGER ID1,ID2,ID3,ID4,J,K,METYPE,III,JJJ,KKK,O(2),IDINT(6) - DOUBLE PRECISION B(2,6),C(2,6),MAXWGT - DATA O/2,1/ -C--common block for the couplings - DOUBLE PRECISION SW,CW,TW,E,G,RT,ORT,MW,MZ,AFN(2,12,2,4), - & AFG(2,6,2),AFC(2,12,2,2),OIJ(2,4,2),OIJP(2,2,2),OIJPP(2,4,4), - & HNN(2,3,4,4),HCC(2,3,2,2),HNC(2,4,2),HFF(2,4,12),HWW(2), - & HZZ(2),ZAB(12,2,2),HHB(2,3),GS - COMMON /HWSPNC/ SW,CW,TW,E,G,RT,ORT,MW,MZ,GS,AFN,AFG,AFC,OIJ,OIJP, - & OIJPP,HNN,HCC,HNC,HFF,HWW,HZZ,ZAB,HHB -C--common block for the parameters for the new modes - DOUBLE PRECISION LLEMAX,LLEAVR,LQDMAX,LQDAVR,UDDMAX,UDDAVR - COMMON /HWDRP4/ LLEMAX(5,3,3,3),LLEAVR(5,3,3,3), - & LQDMAX(8,3,3,3),LQDAVR(8,3,3,3), - & UDDMAX(4,3,3,3),UDDAVR(4,3,3,3) -C--first mode - IF(MOD(ID1,2).EQ.0) THEN -C--u_i u_j d_k - IF(IDPDG(ID1).GT.0) THEN - METYPE=8 -C--indices for the couplings - III = (ID1 )/2 - JJJ = (ID2 )/2 - KKK = (ID3+1)/2 - DO J=1,2 -C--RPC chargino decay couplings - DO K=1,2 - B(K,J ) = AFC( K ,2*III-1,J,1) - B(K,J+2) = AFC( K ,2*JJJ-1,J,1) - ENDDO -C--RPV coupling - C(1,J )=0.0D0 - C(2,J )=LAMDA3(JJJ,KKK,III)*QMIXSS(2*III-1,2,J) - C(1,J+2)=0.0D0 - C(2,J+2)=LAMDA3(III,JJJ,KKK)*QMIXSS(2*JJJ-1,2,J) -C--the intermediate particles - IDINT(J ) = 399+2*III+(J-1)*12 - IDINT(J+2) = 399+2*JJJ+(J-1)*12 - ENDDO -C--maximum weight - MAXWGT=UDDMAX(3,III,JJJ,KKK) -C--ubar_i ubar_j dbar_k - ELSE - METYPE=13 -C--indices for the couplings - III = (ID1-6)/2 - JJJ = (ID2-6)/2 - KKK = (ID3-5)/2 - DO J=1,2 -C--RPC chargino decay couplings - DO K=1,2 - B(K,J ) = AFC(O(K),2*III-1,J,1) - B(K,J+2) = AFC(O(K),2*JJJ-1,J,1) - ENDDO -C--RPV coupling - C(1,J )=LAMDA3(JJJ,KKK,III)*QMIXSS(2*III-1,2,J) - C(2,J )=0.0D0 - C(1,J+2)=LAMDA3(III,JJJ,KKK)*QMIXSS(2*JJJ-1,2,J) - C(2,J+2)=0.0D0 -C--the intermediate particles - IDINT(J ) = 399+2*III+(J-1)*12 - IDINT(J+2) = 399+2*JJJ+(J-1)*12 - ENDDO -C--maximum weight - MAXWGT=UDDMAX(3,III,JJJ,KKK) - ENDIF -C--second mode - ELSE -C--d_i d_j d_k - IF(IDPDG(ID1).GT.0) THEN - METYPE=9 -C--indices for the couplings - III = (ID1+1)/2 - JJJ = (ID2+1)/2 - KKK = (ID3+1)/2 - DO J=1,2 -C--RPC chargino decay couplings - DO K=1,2 - B(K,J ) = AFC( K ,2*III,J,1) - B(K,J+2) = AFC( K ,2*JJJ,J,1) - B(K,J+4) = AFC( K ,2*KKK,J,1) - ENDDO -C--RPV coupling - C(1,J )=0.0D0 - C(2,J )=LAMDA3(III,JJJ,KKK)*QMIXSS(2*III,2,J) - C(1,J+2)=0.0D0 - C(2,J+2)=LAMDA3(JJJ,III,KKK)*QMIXSS(2*JJJ,2,J) - C(1,J+4)=0.0D0 - C(2,J+4)=LAMDA3(KKK,III,JJJ)*QMIXSS(2*KKK,2,J) -C--the intermediate particles - IDINT(J ) = 400+2*III+(J-1)*12 - IDINT(J+2) = 400+2*JJJ+(J-1)*12 - IDINT(J+4) = 400+2*KKK+(J-1)*12 - ENDDO -C--maximum weight - MAXWGT=UDDMAX(4,III,JJJ,KKK) - ELSE - METYPE=14 -C--indices for the couplings - III = (ID1-5)/2 - JJJ = (ID2-5)/2 - KKK = (ID3-5)/2 - DO J=1,2 -C--RPC chargino decay couplings - DO K=1,2 - B(K,J ) = AFC(O(K),2*III,J,1) - B(K,J+2) = AFC(O(K),2*JJJ,J,1) - B(K,J+4) = AFC(O(K),2*KKK,J,1) - ENDDO -C--RPV coupling - C(1,J )=LAMDA3(III,JJJ,KKK)*QMIXSS(2*III,2,J) - C(2,J )=0.0D0 - C(1,J+2)=LAMDA3(JJJ,III,KKK)*QMIXSS(2*JJJ,2,J) - C(2,J+2)=0.0D0 - C(1,J+4)=LAMDA3(KKK,III,JJJ)*QMIXSS(2*KKK,2,J) - C(2,J+4)=0.0D0 -C--the intermediate particles - IDINT(J ) = 400+2*III+(J-1)*12 - IDINT(J+2) = 400+2*JJJ+(J-1)*12 - IDINT(J+4) = 400+2*KKK+(J-1)*12 - ENDDO -C--maximum weight - MAXWGT=UDDMAX(4,III,JJJ,KKK) - ENDIF - ENDIF - END diff --git a/Generators/Herwig_i/src/InitHerwigCommonBlocks_65.cxx b/Generators/Herwig_i/src/InitHerwigCommonBlocks_65.cxx deleted file mode 100644 index 448f86c397692480ea75bf803316fbffa690178f..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/src/InitHerwigCommonBlocks_65.cxx +++ /dev/null @@ -1,165 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -//----------------------------------------------------------------------- -// revision history: -// ----------------- -// *0001 Jan 24 1998 P.Murat: reorganize InitFortranCommonBlocks -// *0002 Oct 29 1998: M. Shapiro: Change to Herwig 5.9 -// ATLAS VERSION for herwig61/athena Sept 2000 Ian Hinchliffe -// revised for herwig 6.3 Sept 2001 -// herwig 6.4 version Jan 2002 -//----------------------------------------------------------------------- - - -#include "Herwig_i/herwig6520.h" - -Hwbeam_t* gHwbeam; -Hwbmch_t* gHwbmch; -Hwproc_t* gHwproc; -Hwpram_t* gHwpram; -Hwprch_t* gHwprch; -Hwpart_t* gHwpart; -Hwparp_t* gHwparp; -Hwbosc_t* gHwbosc; -Hwparc_t* gHwparc; -Hwbrch_t* gHwbrch; -Hwevnt_t* gHwevnt; -Hwhard_t* gHwhard; -Hwprop_t* gHwprop; -Hwunam_t* gHwunam; -Hwupdt_t* gHwupdt; -Hwuwts_t* gHwuwts; -Hwuclu_t* gHwuclu; -Hwdist_t* gHwdist; -Hwqdks_t* gHwqdks; -Hwusud_t* gHwusud; -// 4 new, v61 -Hwsusy_t* gHwsusy; -Hwrpar_t* gHwrpar; -Hwminb_t* gHwminb; -Hwclus_t* gHwclus; -// 2 new, v6202 -Hwgrav_t* gHwgrav; -Hw6202_t* gHw6202; -// 1 new 6203 -Hw6203_t* gHw6203; -// new 6300 -Hw6300_t* gHw6300; -Hwcirc_t* gHwcirc; -Hwpmrs_t* gHwpmrs; - -// new 6400 -Hwdspb_t* gHwdspb; -Hwdsp2_t* gHwdsp2; -Hwdsp3_t* gHwdsp3; -Hwdsp4_t* gHwdsp4; -Hwdspn_t* gHwdspn; -Hwspin_t* gHwspin; -Hwstau_t* gHwstau; - -// new 6500 -Hwgupr_t* gHwgupr; -Hw6500_t* gHw6500; -// - -// new 6504 -Hw6504_t* gHw6504; -// new 6506 -Hw6506_t* gHw6506; -// new 6510 -Hw6510_t* gHw6510; -// new 6520 -Hw6520_t* gHw6520; -// - -// Jimmy common blocks -Jmparm_t* gJmparm; - -// PDF information -Hrwpdf_t* gHrwpdf; - -extern "C" void* herwig_common_block_address_(const void*, int len); - -static int Initialized = 0; - - // define pointers to FORTRAN common-blocks - // it is important that they are returned - // by a FORTRAN routine, so it doesn't - // require linking in any additional - // object files -void InitHerwigCommonBlocks(){ - - if (Initialized) return; - Initialized = 1; - gHwbeam = (Hwbeam_t* ) herwig_common_block_address_("HWBEAM",6); - gHwbmch = (Hwbmch_t* ) herwig_common_block_address_("HWBMCH",6); - gHwproc = (Hwproc_t* ) herwig_common_block_address_("HWPROC",6); - gHwpram = (Hwpram_t* ) herwig_common_block_address_("HWPRAM",6); - gHwprch = (Hwprch_t* ) herwig_common_block_address_("HWPRCH",6); - gHwpart = (Hwpart_t* ) herwig_common_block_address_("HWPART",6); - gHwparp = (Hwparp_t* ) herwig_common_block_address_("HWPARP",6); - gHwbosc = (Hwbosc_t* ) herwig_common_block_address_("HWBOSC",6); - gHwparc = (Hwparc_t* ) herwig_common_block_address_("HWPARC",6); - gHwbrch = (Hwbrch_t* ) herwig_common_block_address_("HWBRCH",6); - gHwevnt = (Hwevnt_t* ) herwig_common_block_address_("HWEVNT",6); - gHwhard = (Hwhard_t* ) herwig_common_block_address_("HWHARD",6); - gHwprop = (Hwprop_t* ) herwig_common_block_address_("HWPROP",6); - gHwunam = (Hwunam_t* ) herwig_common_block_address_("HWUNAM",6); - gHwupdt = (Hwupdt_t* ) herwig_common_block_address_("HWUPDT",6); - gHwuwts = (Hwuwts_t* ) herwig_common_block_address_("HWUWTS",6); - gHwuclu = (Hwuclu_t* ) herwig_common_block_address_("HWUCLU",6); - gHwdist = (Hwdist_t* ) herwig_common_block_address_("HWDIST",6); - gHwqdks = (Hwqdks_t* ) herwig_common_block_address_("HWQDKS",6); - gHwusud = (Hwusud_t* ) herwig_common_block_address_("HWUSUD",6); - // v6.1 - gHwsusy = (Hwsusy_t* ) herwig_common_block_address_("HWSUSY",6); - gHwrpar = (Hwrpar_t* ) herwig_common_block_address_("HWRPAR",6); - gHwminb = (Hwminb_t* ) herwig_common_block_address_("HWMINB",6); - gHwclus = (Hwclus_t* ) herwig_common_block_address_("HWCLUS",6); - // v6.202 - - gHw6202 = (Hw6202_t* ) herwig_common_block_address_("HW6202",6); - gHwgrav = (Hwgrav_t* ) herwig_common_block_address_("HWGRAV",6); - - // v6.203 - gHw6203 = (Hw6203_t* ) herwig_common_block_address_("HW6203",6); - // v6.301 - - gHw6300 = (Hw6300_t* ) herwig_common_block_address_("HW6300",6); - gHwcirc = (Hwcirc_t* ) herwig_common_block_address_("HWCIRC",6); - gHwpmrs = (Hwpmrs_t* ) herwig_common_block_address_("HWPMRS",6); - // v6.400 - gHwdspb = (Hwdspb_t* ) herwig_common_block_address_("HWDSPB",6); - gHwdsp2 = (Hwdsp2_t* ) herwig_common_block_address_("HWDSP2",6); - gHwdsp3 = (Hwdsp3_t* ) herwig_common_block_address_("HWDSP3",6); - gHwdsp4 = (Hwdsp4_t* ) herwig_common_block_address_("HWDSP4",6); - gHwdspn = (Hwdspn_t* ) herwig_common_block_address_("HWDSPN",6); - gHwspin = (Hwspin_t* ) herwig_common_block_address_("HWSPIN",6); - gHwstau = (Hwstau_t* ) herwig_common_block_address_("HWSTAU",6); - - // new 6500 - gHwgupr = (Hwgupr_t* ) herwig_common_block_address_("HWGUPR",6); - gHw6500 = (Hw6500_t* ) herwig_common_block_address_("HW6500",6); - // new 6504 - gHw6504 = (Hw6504_t* ) herwig_common_block_address_("HW6504",6); - // new 6510 - gHw6510 = (Hw6510_t* ) herwig_common_block_address_("HW6510",6); - // new 6520 - gHw6520 = (Hw6520_t* ) herwig_common_block_address_("HW6520",6); - // - - // Jimmy common blocks - gJmparm = (Jmparm_t* ) herwig_common_block_address_("JMPARM",6); - - // atlas special for pdfs - gHrwpdf = (Hrwpdf_t* ) herwig_common_block_address_("HRWPDF",6);; - -// gHwumsc = (Hwumsc_t* ) herwig_common_block_address_("HWUMSC",6); - // gHepevt = (Hepevt_t* ) herwig_common_block_address_("HEPEVTD",7); - - -} - - diff --git a/Generators/Herwig_i/src/Lhefinfo.cxx b/Generators/Herwig_i/src/Lhefinfo.cxx deleted file mode 100644 index 647f084cfce47e0ed8675ab6952753999fe0b0d0..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/src/Lhefinfo.cxx +++ /dev/null @@ -1,60 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// access Lhef_i common block LHEFINFO -#include "Herwig_i/Lhefinfo.h" - -// set pointer to zero at start -Lhefinfo::LHEFINFO* Lhefinfo::s_lhefinfo = 0; - -// Constructor -Lhefinfo::Lhefinfo() -{} - -// Destructor -Lhefinfo::~Lhefinfo() -{} - -int& Lhefinfo::id1() -{ - init(); - return s_lhefinfo->id1; -} - -int& Lhefinfo::id2() -{ - init(); - return s_lhefinfo->id2; -} - -double& Lhefinfo::x1() -{ - init(); - return s_lhefinfo->x1; -} - -double& Lhefinfo::x2() -{ - init(); - return s_lhefinfo->x2; -} - -double& Lhefinfo::scalePdf() -{ - init(); - return s_lhefinfo->scalePdf; -} - -double& Lhefinfo::xPdf1() -{ - init(); - return s_lhefinfo->xPdf1; -} - -double& Lhefinfo::xPdf2() -{ - init(); - return s_lhefinfo->xPdf2; -} - diff --git a/Generators/Herwig_i/src/atoher_65.F b/Generators/Herwig_i/src/atoher_65.F deleted file mode 100644 index 92af226a909f223248a63a6ef6f962cfd6c37414..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/src/atoher_65.F +++ /dev/null @@ -1,111 +0,0 @@ - SUBROUTINE ALSHCD(CSHO) - CHARACTER*3 CSHO - CSHO='HER' - END - - SUBROUTINE ALSHEN -#include "HERWIG65.INC" - WGTSUM=WGTSUM-evwgt - WSQSUM=WSQSUM-evwgt**2 - END - - SUBROUTINE ALSHER(I) -#include "HERWIG65.INC" - INTEGER I - I=0 - IF (IERROR.NE.0.OR.EVWGT.EQ.0) THEN - I=1 - ENDIF - RETURN - END -CDECK ID>, UPINIT. -*CMZ :- -13/02/02 07.20.46 by Peter Richardson -*-- Author : Michelangelo Mangano -C---------------------------------------------------------------------- - SUBROUTINE ALSHIN(I) -C---------------------------------------------------------------------- -C subroutine to initialise the events -C---------------------------------------------------------------------- -#include "HERWIG65.INC" -#include "AlpGen_i/alpsho.inc" - INTEGER I -C COMMUNICATION CODE - I=1 -C FILL IN HERWIG SPECIFIC INPUTS - IF(MC.NE.0) RMASS(4)=MC - IF(MB.NE.0) RMASS(5)=MB - IF(MT.NE.0) RMASS(6)=MT - IF(MW.NE.0) THEN - RMASS(198)=MW - RMASS(199)=MW - ENDIF - IF(MZ.NE.0) RMASS(200)=MZ - IF(MH.NE.0) RMASS(201)=MH -cc - END - -C----------------------------------------------------------------------- - SUBROUTINE ALSFIN -C----------------------------------------------------------------------- -C HERWIG END OF FILE TREATMENT -C----------------------------------------------------------------------- -#include "HERWIG65.INC" -#include "AlpGen_i/alpsho.inc" -C-- GUP Run common block -#include "GeneratorFortranCommon/heprup.inc" - DOUBLE PRECISION XSEC,EFF -CC << OJ - INTEGER ISTG - COMMON/EVTCON/ISTG -CC >> OJ - XSEC=XSECUP(1) - WGTMAX=XSEC*1.0D-3 - WBIGST=XSEC*1.0D-3 -CC << OJ - IF (ISTG.LE.0) NEVHEP = NEVHEP+1 -CC >> OJ -c print *, 'WGTSUM=',WGTSUM - WGTSUM=WGTSUM*REAL(NEVHEP-1)/REAL(NEVHEP) - WSQSUM=WSQSUM*REAL(NEVHEP-1)/REAL(NEVHEP) - WGTSUM=WGTSUM*XSEC*1.0D-3 - WSQSUM=WSQSUM*XSEC**2*1.0D-6 -C FILL HERWIG RUN LOG FILE - WRITE(NUNITOUT,*) " " - WRITE(NUNITOUT,*) "END OF RUN LOG: " - WRITE(NUNITOUT,*) "NUMBER OF INPUT PROCESSED:",NWGTS - WRITE(NUNITOUT,*)"NUMBER OF EVENTS GENERATED:",NEVHEP-1 -C JMB line below would give matching efficiency -c EFF=WGTSUM/REAL(NWGTS) -C JMB line below would give matching*hadronisation efficiency - EFF=REAL(NEVHEP-1)/REAL(NWGTS) - WRITE(NUNITOUT,*)"MATCHING EFFICIENCY:",EFF - WRITE(NUNITOUT,*)"FINAL CROSS SECTION (PB):",XSEC*EFF - WRITE(NUNITOUT,*)"INTEGRATED LUMINOSITY (PB-1):",REAL(NEVHEP-1) - $ /(XSEC*EFF) - CALL HWUGUP - END - -*-- Author : J Alwall -C---------------------------------------------------------------------- - SUBROUTINE MGSHIN(I) -C---------------------------------------------------------------------- -C subroutine to initialise the events FOR MADGRAPH ONLY -C---------------------------------------------------------------------- -#include "HERWIG65.INC" -#include "MadGraph_i/madsho.inc" - INTEGER I -C COMMUNICATION CODE - I=1 -C FILL IN HERWIG SPECIFIC INPUT FOR SM ONLY - IF(MC.NE.0) RMASS(4)=MC - IF(MB.NE.0) RMASS(5)=MB - IF(MT.NE.0) RMASS(6)=MT - IF(MW.NE.0) THEN - RMASS(198)=MW - RMASS(199)=MW - ENDIF - IF(MZ.NE.0) RMASS(200)=MZ - IF(MH.NE.0) RMASS(201)=MH -cc - END - diff --git a/Generators/Herwig_i/src/charybdfix.F b/Generators/Herwig_i/src/charybdfix.F deleted file mode 100644 index 3533b6c62097bc0746c9791822f6058d10513f17..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/src/charybdfix.F +++ /dev/null @@ -1,18 +0,0 @@ - subroutine charybdfix() - -c---------------------------------------------------------------------- -c program initialization -c---------------------------------------------------------------------- -c -c HERWIG common blocks (`external` loads in block data) -c----------------------------------------------------------------------- -#include "HERWIG65.INC" -#include "jimmy.inc" - external hwudat -C--RELABEL HARD AS BLACK HOLE - IDHW(6)=NRES - IDHEP(6)=40 - - end - - diff --git a/Generators/Herwig_i/src/components/Herwig_i_entries.cxx b/Generators/Herwig_i/src/components/Herwig_i_entries.cxx deleted file mode 100644 index 964177e31110ea287ff824c97c3374408e4de708..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/src/components/Herwig_i_entries.cxx +++ /dev/null @@ -1,4 +0,0 @@ -#include "Herwig_i/Herwig.h" - -DECLARE_COMPONENT( Herwig ) - diff --git a/Generators/Herwig_i/src/componentsRpv/HerwigRpv_i_entries.cxx b/Generators/Herwig_i/src/componentsRpv/HerwigRpv_i_entries.cxx deleted file mode 100644 index f8a0088505e275bdbc27c9838b5cfca80c1c8ea5..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/src/componentsRpv/HerwigRpv_i_entries.cxx +++ /dev/null @@ -1,7 +0,0 @@ -/* - Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration -*/ -#include "Herwig_i/HerwigRpv.h" - -DECLARE_COMPONENT( HerwigRpv ) - diff --git a/Generators/Herwig_i/src/extproc.F b/Generators/Herwig_i/src/extproc.F deleted file mode 100644 index 566d47fb7d0d346941d5850e2486a1d1bcfd87c5..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/src/extproc.F +++ /dev/null @@ -1,9 +0,0 @@ - SUBROUTINE EXTPROC(IPROC) -c -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) -#include "GeneratorFortranCommon/lesatlas.inc" - ATLASCHOICE = IPROC - RETURN - END diff --git a/Generators/Herwig_i/src/gatlastaula_decres_hw.F b/Generators/Herwig_i/src/gatlastaula_decres_hw.F deleted file mode 100644 index 20e6ac3c42b58c053e4c30ab7fea52c4f09e95f7..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/src/gatlastaula_decres_hw.F +++ /dev/null @@ -1,12 +0,0 @@ -C FORKING ROUTINE TO DECAY LEFTOVER RESONANCES IN PYTHIA - SUBROUTINE TAUOLA_DECRES_HW(ISTART) - - INTEGER ISTART - - CALL HWHEPC(ISTART) - -C---DO UNSTABLE PARTICLE DECAYS - CALL HWDHAD - - RETURN - END diff --git a/Generators/Herwig_i/src/glhefinfo.F b/Generators/Herwig_i/src/glhefinfo.F deleted file mode 100644 index b31849e8a74053616a19b18c806b23972327089f..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/src/glhefinfo.F +++ /dev/null @@ -1,12 +0,0 @@ - FVOIDP FUNCTION LHEFINFO_ADDRESS() - IMPLICIT NONE - INTEGER PARTID1,PARTID2 - DOUBLE PRECISION PARTX1,PARTX2,SCALEPDF,XPDF1,XPDF2 - - COMMON/LHEFINFO/PARTID1,PARTID2,PARTX1,PARTX2,SCALEPDF,XPDF1,XPDF2 -c EXTERNAL PYDATA ! All that is required to force loading of BLOCK DATA - FVOIDP GETADDR - - LHEFINFO_ADDRESS = GETADDR(PARTID1) - RETURN - END diff --git a/Generators/Herwig_i/src/gwgtacp.F b/Generators/Herwig_i/src/gwgtacp.F deleted file mode 100644 index e9012b3eec0391ccd0657e38d70a4d0605ead963..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/src/gwgtacp.F +++ /dev/null @@ -1,12 +0,0 @@ - FVOIDP FUNCTION WGTACP_ADDRESS() - IMPLICIT NONE - DOUBLE PRECISION WGTACP(28) - INTEGER USERWGTS - COMMON/CWGTACP/ WGTACP, USERWGTS - - - FVOIDP GETADDR - - WGTACP_ADDRESS = GETADDR(WGTACP) - RETURN - END diff --git a/Generators/Herwig_i/src/herwig_common_block_address_65.F b/Generators/Herwig_i/src/herwig_common_block_address_65.F deleted file mode 100644 index c164cd82aa99643454b0741cf4bd80688dc6979b..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/src/herwig_common_block_address_65.F +++ /dev/null @@ -1,191 +0,0 @@ -c For herwig version 6.4 , Jan 2002 -c Atlas version Ian Hinchliffe - FVOIDP function herwig_common_block_address(common_block_name) -c----------------------------------------------------------------------- -c returns address of HERWIG common-block by name -c revision history: -c ----------------- -c Based on CDF code by P.Murat, J Lys et al -c----------------------------------------------------------------------- -C implicit none -c -c 2 Nov 2000 changed to adressi adressc and adressf to remove compile warnings -c -c -#include "HERWIG65.INC" -#include "jimmy.inc" -c For parton desnity info - DOUBLE PRECISION X1,X2,Q - INTEGER ID1,ID2,IDPDF1,IDPDF2 - COMMON /HRWPDF/ X1,X2,Q,ID1,ID2,IDPDF1,IDPDF2 - - character*(*) common_block_name -c -c----------------------------------------------------------------------- - FVOIDP adressi - FVOIDP adressf - FVOIDP adressc - FVOIDP adrescx - FVOIDP adreslg -c----------------------------------------------------------------------- - if (common_block_name.eq.'HWBEAM')then - herwig_common_block_address = adressi(ipart1) - - else if (common_block_name.eq.'HWBMCH')then - herwig_common_block_address = adressc(part1) - - else if (common_block_name.eq.'HWPROC')then - herwig_common_block_address = adressf(ebeam1) - - else if (common_block_name.eq.'HWPRAM')then - herwig_common_block_address = adressf(afch(1,1)) - - else if (common_block_name.eq.'HWPRCH')then - herwig_common_block_address = adressc(autpdf) - - else if (common_block_name.eq.'HWPART')then - herwig_common_block_address = adressi(nevpar) - - else if (common_block_name.eq.'HWPARP')then - herwig_common_block_address = adressf(decpar(1,1)) - - else if (common_block_name.eq.'HWBOSC')then - herwig_common_block_address = adressf(alpfac) - - else if (common_block_name.eq.'HWPARC')then - herwig_common_block_address = adressi(jcopar(1,1)) - - else if (common_block_name.eq.'HWBRCH')then - herwig_common_block_address = adressf(anomsc(1,1)) - - else if (common_block_name.eq.'HWEVNT')then - herwig_common_block_address = adressf(avwgt) - - else if (common_block_name.eq.'HWHARD')then - herwig_common_block_address = adressf(asfixd) - - else if (common_block_name.eq.'HWPROP')then - herwig_common_block_address = adressf(rltim(0)) - - else if (common_block_name.eq.'HWUNAM')then - herwig_common_block_address = adressc(rname(0)) - - else if (common_block_name.eq.'HWUPDT')then - herwig_common_block_address = adressf(brfrac(1)) - - else if (common_block_name.eq.'HWUWTS')then - herwig_common_block_address = adressf(repwt(0,0,0)) - - else if (common_block_name.eq.'HWUCLU')then - herwig_common_block_address = adressf(cldkwt(1)) - - else if (common_block_name.eq.'HWDIST')then - herwig_common_block_address = adressf(exag) - - else if (common_block_name.eq.'HWQDKS')then - herwig_common_block_address = adressf(vtxqdk(1,1)) - - else if (common_block_name.eq.'HWUSUD')then - herwig_common_block_address = adressf(accur) - -cc v6.1 - else if (common_block_name.eq.'HWSUSY')then - herwig_common_block_address = adressf(tanb) - - else if (common_block_name.eq.'HWRPAR')then - herwig_common_block_address = adressf(lamda1(1,1,1)) - - else if (common_block_name.eq.'HWMINB')then - herwig_common_block_address = adressf(pmbn1) - - else if (common_block_name.eq.'HWCLUS')then - herwig_common_block_address = adressf(ppcl(1,1)) - -cc v6.202 - else if (common_block_name.eq.'HWGRAV')then - herwig_common_block_address = adressf(grvlam) - - else if (common_block_name.eq.'HW6202')then - herwig_common_block_address = adressf(vipwid(1)) -cc v6.203 - - else if (common_block_name.eq.'HW6203')then - herwig_common_block_address = adressf(abwgt) - -cc v6.301 - else if (common_block_name.eq.'HW6300')then - herwig_common_block_address = adressf(mjjmin) - - else if (common_block_name.eq.'HWPMRS')then - herwig_common_block_address = adressf(FMRS(1,1,1,1)) - - else if (common_block_name.eq.'HWCIRC')then - herwig_common_block_address = adressi(circop) - -cc v6.400 - else if (common_block_name.eq.'HWDSPB')then - herwig_common_block_address = adressf(abmode(1,1)) - - else if (common_block_name.eq.'HWDSP2')then - herwig_common_block_address = adressf(a2mode(1,1)) - - else if (common_block_name.eq.'HWDSP3')then - herwig_common_block_address = adressf(a3mode(1,1,1)) - - else if (common_block_name.eq.'HWDSP4')then - herwig_common_block_address = adressf(a4mode(1,1,1)) - - else if (common_block_name.eq.'HWDSPN')then - herwig_common_block_address = adressi(ndecsy) - - else if (common_block_name.eq.'HWSPIN')then - herwig_common_block_address = adrescx(mespn(1,1,1,1,1,1)) - - else if (common_block_name.eq.'HWSTAU')then - herwig_common_block_address = adressi(jak1) - -cc v6.500 - else if (common_block_name.eq.'HWGUPR')then - herwig_common_block_address = adressf(lhwgt(1)) - - else if (common_block_name.eq.'HW6500')then - herwig_common_block_address = adreslg(prespl) - -cc v6.504 - else if (common_block_name.eq.'HW6504')then - herwig_common_block_address = adressi(itoprd) - -cc v6.506 - else if (common_block_name.eq.'HW6506')then - herwig_common_block_address = adressf(pdfx0) - -cc v6.510 - else if (common_block_name.eq.'HW6510')then - herwig_common_block_address = adressi(ndetry) - -cc v6.520 - else if (common_block_name.eq.'HW6520')then - herwig_common_block_address = adressf(dqxtra) - -cc Jimmy Common blocks - else if (common_block_name.eq.'JMPARM')then - herwig_common_block_address = adressf(ptjim) - -cc special for atlas (PDF information) - - else if (common_block_name.eq.'HRWPDF')then - herwig_common_block_address = adressf(x1) - - - - else - - write(6,*) " Unknown Common Block Name: " , common_block_name - herwig_common_block_address = -99 - end if - - - return - end - - diff --git a/Generators/Herwig_i/src/hwgpdg.F b/Generators/Herwig_i/src/hwgpdg.F deleted file mode 100644 index a0a5ef5b7c4d7496648aafd69ee11c325cf2b5aa..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/src/hwgpdg.F +++ /dev/null @@ -1,41 +0,0 @@ - - subroutine HWGPDG(mconv) - -C...Purpose: to convert HERWIG event record contents to or from -C...the standard event record common block. -C...convert (mconv=1) from HERWIG numbering scheme to PDG numbering scheme -C... or (mconv=2) from PDG numbering scheme to HERWIG numbering scheme - -C...Only IDHEP needs to be changed -C 1/28/98 - Overwrite particle ID as used in Herwig - -#include "HERWIG65.INC" - - integer itmp,hwtpdg,mconv,I - -C...Conversion from HERWIG to standard. - if(mconv.EQ.1) then - do 140 I=1,NHEP - if(IDHEP(I).NE.0)then - itmp=IDHEP(I) - IDHEP(I) = hwtpdg(itmp,1) - elseif(IDHW(I).EQ.20)then -C...???? - IDHEP(I)=89 - elseif(IDHW(I).LE.18)then -C...the oddball intermediate states - IDHEP(I)=IDHW(I)+67 - else -C...undefined - IDHEP(I)=0 - endif - 140 CONTINUE -C...Conversion from standard to HERWIG. - elseif(mconv.EQ.2)then - do 180 I=1,NHEP - itmp=IDHEP(I) - IDHEP(I) = hwtpdg(itmp,2) - 180 CONTINUE - endif - return - end diff --git a/Generators/Herwig_i/src/hwhepc.F b/Generators/Herwig_i/src/hwhepc.F deleted file mode 100644 index 6d77c74aeb2c9cbeefc10ae4189d860a83241d78..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/src/hwhepc.F +++ /dev/null @@ -1,42 +0,0 @@ -C----------------------------------------------------------------------- - SUBROUTINE HWHEPC(IHEP0) - -#include "HERWIG65.INC" - - INTEGER I,J,IHEP0,IHEP,JMOTH,ID - CHARACTER *8 DUMMY - DOUBLE PRECISION DIST(4),VERTX(4) - IF (IHEP0.EQ.NHEP) RETURN ! DON'T BOTHER - -C ADD DECAY LENGTH TO THE DECAY PRODUCTS - CALL HERWIG ROUTINES - IHEP=JMOHEP(1,IHEP0+1) - ID=IDHW(IHEP) -c PRINT *,'IDTAU',IDHEP(IHEP),IDHW(IHEP) - CALL HWUDKL(ID,PHEP(1,IHEP),DIST) - CALL HWVSUM(4,VHEP(1,IHEP),DIST,VERTX) - - DO I=IHEP0+1,NHEP - CALL HWUIDT(1,IDHEP(I),IDHW(I),DUMMY) - JMOTH=JMOHEP(1,I) - - DO J=JDAHEP(1,JMOTH),JDAHEP(2,JMOTH) - CALL HWVEQU(4,VERTX,VHEP(1,J)) ! VERTEX - ENDDO - IF (ABS(ISTHEP(JMOHEP(1,I))).EQ.2) THEN ! CORRECT STATUS CODES - IF (ABS(IDHEP(JMOHEP(1,I))).EQ.15) THEN ! TAU - ISTHEP(JMOHEP(1,I))=195 - ELSE - ISTHEP(JMOHEP(1,I))=198 ! DECAYED RESONANCE - ENDIF - ENDIF - IF (ABS(IDHEP(I)).EQ.111) THEN ! PI0 - TO BE DECAYED - ISTHEP(I)=193 - ENDIF - IF (ABS(IDHEP(I)).EQ.221) THEN ! ETA - TO BE DECAYED - ISTHEP(I)=193 - ENDIF - ENDDO - - RETURN - END - diff --git a/Generators/Herwig_i/src/hwpdfinfo.F b/Generators/Herwig_i/src/hwpdfinfo.F deleted file mode 100644 index 6bacc70e178d79ddfbb623bbdd1787a5404226d5..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/src/hwpdfinfo.F +++ /dev/null @@ -1,25 +0,0 @@ - SUBROUTINE HWPDFINFO -C Store the arguments to the PDF call at the appropriate stage of -C the event - -#include "HERWIG65.INC" -#include "GeneratorFortranCommon/hepeup.inc" - - DOUBLE PRECISION X1,X2,Q - INTEGER ID1,ID2,IDPDF1,IDPDF2 - COMMON /HRWPDF/ X1,X2,Q,ID1,ID2,IDPDF1,IDPDF2 - - x1=(phep(4,4)+abs(phep(3,4)))/(phep(4,1)+abs(phep(3,1))) - x2=(phep(4,5)+abs(phep(3,5)))/(phep(4,2)+abs(phep(3,2))) - IF (iproc.GE.0) THEN - q=emsca - ELSE - q=scalup - ENDIF - id1=idpdg(idhw(4)) - id2=idpdg(idhw(5)) - idpdf1=modpdf(1) - idpdf2=modpdf(2) - - RETURN - END diff --git a/Generators/Herwig_i/src/hwrgen.F b/Generators/Herwig_i/src/hwrgen.F deleted file mode 100644 index 8201e5336c0f0b220f665d6687afcf771759324c..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/src/hwrgen.F +++ /dev/null @@ -1,20 +0,0 @@ - function HWRGEN(IDUMMY) - DOUBLE PRECISION HWRGEN, ATL_HWRGEN, HWRSET, HWRGET - INTEGER IDUMMY,ISEED(2),JSEED(2) - HWRGEN=ATL_HWRGEN(IDUMMY) - RETURN - ENTRY HWRSET(JSEED) -C----------------------------------------------------------------------- -C IF (JSEED(1).EQ.0.OR.JSEED(2).EQ.0) CALL HWWARN('HWRSET',99) - ISEED(1)=JSEED(1) - ISEED(2)=JSEED(2) - HWRSET=0.0D0 - RETURN -C----------------------------------------------------------------------- - ENTRY HWRGET(JSEED) -C----------------------------------------------------------------------- - JSEED(1)=ISEED(1) - JSEED(2)=ISEED(2) - HWRGET=0.0D0 - RETURN - END diff --git a/Generators/Herwig_i/src/hwtpdg.F b/Generators/Herwig_i/src/hwtpdg.F deleted file mode 100644 index f6355f29ceac7b3e62e5db4e57703d39e4775e8f..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/src/hwtpdg.F +++ /dev/null @@ -1,101 +0,0 @@ - integer function hwtpdg(id,mconv) -C...convert (mconv=1) from HERWIG numbering scheme to PDG numbering scheme -C... or (mconv=2) from PDG numbering scheme to HERWIG numbering scheme -C -C ID = particle identification number - -C... ITABJ(I) converts miscellaneous HERWIG particle ID's to a standard scheme - integer itabj(99,2), noant(7) - data itabj/1,2,3,4,5,6,7,8,0,0, - 1 11,12,13,14,15,16,0,0,0,0, - 2 21,22,23,24,25,51,0,0,0,0, - 3 0,32,0,0,35,36,37,0,0,0, - 4 0,0,0,0,0,0,0,0,0,0, - 5 0,0,0,0,0,0,0,0,0,0, - 6 0,0,0,0,0,0,0,0,0,0, - 7 0,0,0,0,0,0,0,0,0,0, - 8 81,82,83,84,85,86,87,88,89,90, - 9 91,92,93,94,95,96,97,9920022,9922212, - * 1,2,3,4,5,6,7,8,0,0, - 1 11,12,13,14,15,16,0,0,0,0, - 2 21,22,23,24,25,0,0,0,0,0, - 3 0,32,0,0,35,36,37,0,0,0, - 4 0,0,0,0,0,0,0,0,0,0, - 5 26,0,0,0,0,0,0,0,0,0, - 6 0,0,0,0,0,0,0,0,0,0, - 7 0,0,0,0,0,0,0,0,0,0, - 8 81,82,83,84,85,86,87,88,89,90, - 9 91,92,93,94,95,96,97,0,0/ - data noant/-21,-22,-23,-25,-51,-35,-36/ - save itabj,noant - - hwtpdg=id - ida=iabs(id) - j1=mod(ida,10) - i1=mod(ida/10,10) - i2=mod(ida/100,10) - i3=mod(ida/1000,10) - i4=mod(ida/10000,10) - i5=mod(ida/100000,10) - k99 = mod(ida/100000,100) - ksusy = mod(ida/1000000,10) - ku = mod(ida/10000000,10) - kqn=mod(ida/1000000000,10) - - if(ida.eq.0)then -C.. write(*,*) ' HWTPDG 1: particle ID is zero' - elseif(mconv.lt.1 .or. mconv.gt.2)then - hwtpdg=0 - write(*,*) ' HWTPDG 2: unallowed conversion option' - elseif(kqn.eq.1) then -C... ions not recognized - hwtpdg=0 - write(*,*) ' HWTPDG 3: nonallowed ion' - elseif(ida.lt.100)then -C...Higgs, etc. - hwtpdg=isign(itabj(ida,mconv),id) -C...check for illegal antiparticles - if(id.lt.0)then - if(hwtpdg.ge.-99 .and. hwtpdg.le.-81) hwtpdg=0 - do 101 j=1,7 - if(hwtpdg.eq.noant(j)) hwtpdg=0 - 101 continue - endif - elseif(k99.eq.99 .and. mconv.eq.2) then -C... special case remnant particles - used internally - hwtpdg = 0 - if(id.eq.9920022) hwtpdg=isign(98,id) - if(ida.eq.9922212) hwtpdg=isign(99,id) - elseif(ksusy.eq.1 .or. ksusy.eq.2) then -C... SUSY - elseif(i1.ne.0 .and. i3.ne.0 .and. j1.eq.2)then -C...spin 1/2 baryons - elseif(i1.ne.0 .and. i3.ne.0 .and. j1.eq.4)then -C...spin 3/2 baryons - elseif(i1.ne.0 .and. i2.ne.0 .and. i3.eq.0)then -C...mesons - if(mconv.eq.1)then - if(ida.eq.20333) hwtpdg=isign(9000223,id) - elseif(mconv.eq.2)then - if(ida.eq.20333) hwtpdg=0 - if(ida.eq.9000223) hwtpdg=isign(20333,id) - endif -C...check for illegal antiparticles - if(i1.eq.i2 .and. id.lt.0) hwtpdg=0 - elseif(i2.ne.0 .and. i3.ne.0 .and. i1.eq.0)then -C...diquarks - else -C...undefined - hwtpdg=0 - endif -C...check for illegal anti KS, KL - if(id.eq.-130 .or. id.eq.-310) hwtpdg=0 - - if(hwtpdg.eq.0 .and. ida.ne.0)then - if(mconv.eq.1) write(*,111) id - if(mconv.eq.2) write(*,112) id - endif - return - 111 format(' HWTPDG 3: HERWIG particle ',I8,' translates to zero') - 112 format(' HWTPDG 3: PDG particle ',I8,' translates to zero') - end diff --git a/Generators/Herwig_i/src/topdec.F b/Generators/Herwig_i/src/topdec.F deleted file mode 100644 index 4d56e702fa1a04c023b6ed188580eba69c012671..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/src/topdec.F +++ /dev/null @@ -1,75 +0,0 @@ - SUBROUTINE TOPDEC - -#include "HERWIG65.INC" - - INTEGER I,J,IBT,IQK,IQB - DOUBLE PRECISION BRCON - - print *, "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" - -C--code to change the top decay modes - BRCON = 0.5D0*(1.0D0-0.333D0) -C--find the CKM unsurpressed modes and reset the branching ratios - DO I=1,NDKYS -C--top decay modes - IF(IDK(I).EQ.6.AND.IDKPRD(4,I).EQ.0) THEN - IBT = 0 - IQK = 0 - IQB = 0 - DO J=1,3 - IF(IDKPRD(J,I).EQ.5) THEN - IBT = IDKPRD(J,I) - ELSEIF(IDKPRD(J,I).LE.4) THEN - IQK = IDKPRD(J,I) - ELSEIF(IDKPRD(J,I).LE.10) THEN - IQB = IDKPRD(J,I) - ENDIF - ENDDO -C--reset the branching ratios - IF(IBT.NE.0.AND.IQK.NE.0.AND.IQB.NE.0) THEN -c--u d mode - IF(IQK.EQ.2.AND.IQB.EQ.7) THEN - BRFRAC(I) = BRCON*VCKM(1,1) -c--c s mode - ELSEIF(IQK.EQ.4.AND.IQB.EQ.9) THEN - BRFRAC(I) = BRCON*VCKM(2,2) - ENDIF - ENDIF -C--antitop decay modes - ELSE IF(IDK(I).EQ.12.AND.IDKPRD(4,I).EQ.0) THEN - IBT = 0 - IQK = 0 - IQB = 0 - DO J=1,3 - IF(IDKPRD(J,I).EQ.11) THEN - IBT = IDKPRD(J,I) - ELSEIF(IDKPRD(J,I).LE.4) THEN - IQK = IDKPRD(J,I) - ELSEIF(IDKPRD(J,I).LE.10) THEN - IQB = IDKPRD(J,I) - ENDIF - ENDDO -C--reset the branching ratios - IF(IBT.NE.0.AND.IQK.NE.0.AND.IQB.NE.0) THEN -c--u d mode - IF(IQB.EQ.8.AND.IQK.EQ.1) THEN - BRFRAC(I) = BRCON*VCKM(1,1) -c--c s mode - ELSEIF(IQB.EQ.10.AND.IQK.EQ.3) THEN - BRFRAC(I) = BRCON*VCKM(2,2) - ENDIF - ENDIF - ENDIF - ENDDO -C--add the CKM supressed top decay modes - DO I=1,2 - DO J=1,3 - IF(I.NE.J) THEN - CALL HWMODK( 6,BRCON*VCKM(I,J),100, 2*I,(-2)*J+1, 5,0,0) - CALL HWMODK(-6,BRCON*VCKM(I,J),100,(-2)*I, 2*J-1,-5,0,0) - ENDIF - ENDDO - ENDDO - - RETURN - END diff --git a/Generators/Herwig_i/src/upevnt_hw.F b/Generators/Herwig_i/src/upevnt_hw.F deleted file mode 100644 index 14715faea886446dc35b0f5dbad1325e6771cee5..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/src/upevnt_hw.F +++ /dev/null @@ -1,30 +0,0 @@ - SUBROUTINE UPEVNT -c routine for Les Houches interface to external pythir routines -c adapted from base pythia code. -c Ian Hinchliffe (May 2002) -c Adapted for Herwig by Borut Paul Kersevan (February 2003) - -c -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - -#include "GeneratorFortranCommon/hepeup.inc" -#include "GeneratorFortranCommon/lesatlas.inc" -#include "GeneratorFortranCommon/genames.inc" - - IF(ATLASCHOICE.EQ.CHARYBDIS) CALL USECHARYBDIS - IF(ATLASCHOICE.EQ.ACERMC) THEN - CALL USEACERMC - CALL ACERMC_ACSET12_HW(0) - ENDIF - IF(ATLASCHOICE.EQ.ALPGEN) CALL USEALPGEN - IF(ATLASCHOICE.EQ.MADGRAPH) CALL USEMADGRAPH - IF(ATLASCHOICE.EQ.MADCUP) CALL USEMADCUP -C IF(ATLASCHOICE.EQ.TOPREX) CALL USETOPREX -c IF(ATLASCHOICE.EQ.LHAEXT) CALL USELHAEXT - IF(ATLASCHOICE.EQ.MCATNLO) CALL USEMCATNLO - IF(ATLASCHOICE.EQ.LHEF) CALL USELHEF - IF(ATLASCHOICE.EQ.HORACE) CALL USEHORACE - RETURN - END diff --git a/Generators/Herwig_i/src/upinit_hw.F b/Generators/Herwig_i/src/upinit_hw.F deleted file mode 100644 index 22025ababea984cb1cc4b4c6ad810f21c32d833f..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/src/upinit_hw.F +++ /dev/null @@ -1,29 +0,0 @@ - SUBROUTINE UPINIT -c interface to external pythia processes using Les Houches accord -c Adapted for pythia 6.203 -c Ian Hinchliffe (may 2002) -c Adapted for Herwig by Borut Paul Kersevan (February 2003) -c -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - -#include "GeneratorFortranCommon/heprup.inc" -#include "GeneratorFortranCommon/lesatlas.inc" -#include "GeneratorFortranCommon/genames.inc" - - IF(ATLASCHOICE.EQ.CHARYBDIS) CALL INITCHARYBDIS - IF(ATLASCHOICE.EQ.ACERMC) THEN - CALL INITACERMC - CALL ACERMC_ACSET12_HW(-1) - ENDIF - IF(ATLASCHOICE.EQ.ALPGEN) CALL INITALPGEN - IF(ATLASCHOICE.EQ.MADGRAPH) CALL INITMADGRAPH - IF(ATLASCHOICE.EQ.MADCUP) CALL INITMADCUP -C IF(ATLASCHOICE.EQ.TOPREX) CALL INITTOPREX -c IF(ATLASCHOICE.EQ.LHAEXT) CALL INITLHAEXT - IF(ATLASCHOICE.EQ.MCATNLO) CALL INITMCATNLO - IF(ATLASCHOICE.EQ.LHEF) CALL INITLHEF - IF(ATLASCHOICE.EQ.HORACE) CALL INITHORACE - RETURN - END diff --git a/Generators/Herwig_i/src/upveto_hw.F b/Generators/Herwig_i/src/upveto_hw.F deleted file mode 100644 index 03c9aa07ec46818078832469526134d022d16139..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/src/upveto_hw.F +++ /dev/null @@ -1,14 +0,0 @@ - SUBROUTINE UPVETO(IPVETO) -c interface to external pythia processes using Les Houches accord -c -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - -#include "GeneratorFortranCommon/lesatlas.inc" -#include "GeneratorFortranCommon/genames.inc" - - IF(ATLASCHOICE.EQ.ALPGEN) CALL VETOALPGEN(IPVETO) - - RETURN - END diff --git a/Generators/Herwig_i/src/wgtacp.cxx b/Generators/Herwig_i/src/wgtacp.cxx deleted file mode 100644 index 5d5aafd5afd62f0f1e948d7c0fc2d7feafadcfa9..0000000000000000000000000000000000000000 --- a/Generators/Herwig_i/src/wgtacp.cxx +++ /dev/null @@ -1,18 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// access Lhef_i common block WGTACP -#include "Herwig_i/wgtacp.h" - -// set pointer to zero at start -Wgtacp::WGTACP* Wgtacp::s_wgtacp = 0; - -// Constructor -Wgtacp::Wgtacp(){ -} - -// Destructor -Wgtacp::~Wgtacp(){ -} - diff --git a/Generators/Horace_i/CMakeLists.txt b/Generators/Horace_i/CMakeLists.txt deleted file mode 100644 index 3da55aef82f761d88727331a9577292aa3ab8d5c..0000000000000000000000000000000000000000 --- a/Generators/Horace_i/CMakeLists.txt +++ /dev/null @@ -1,18 +0,0 @@ -################################################################################ -# Package: Horace_i -################################################################################ - -# Declare the package name: -atlas_subdir( Horace_i ) - -# this line failed automatic conversion in cmt2cmake : -# macro Horace_i_fflags "" 32 "-DFVOIDP=INTEGER*4 -fno-second-underscore" 64 "-DFVOIDP=INTEGER*8 -fno-second-underscore" - -# Component(s) in the package: -atlas_add_library( Horace_i - src/*.F - NO_PUBLIC_HEADERS ) - -# Install files from the package: -atlas_install_joboptions( share/*.py ) - diff --git a/Generators/Horace_i/share/CSC.ExtProcess.HerwigHorace.py b/Generators/Horace_i/share/CSC.ExtProcess.HerwigHorace.py deleted file mode 100644 index 45eb5b52706b7d174bcf40b46eb69f3f76b396d2..0000000000000000000000000000000000000000 --- a/Generators/Horace_i/share/CSC.ExtProcess.HerwigHorace.py +++ /dev/null @@ -1,75 +0,0 @@ -############################################################### -# -# Job options file -# -#============================================================== -#-------------------------------------------------------------- -# General Application Configuration options -#-------------------------------------------------------------- - -#-------------------------------------------------------------- -# Private Application Configuration options -#-------------------------------------------------------------- - -# Set output level threshold (2=DEBUG, 3=INFO, 4=WARNING, 5=ERROR, 6=FATAL ) - - -#-------------------------------------------------------------- -# Generator -#-------------------------------------------------------------- - -# ... Main generator : Herwig -from AthenaCommon.AlgSequence import AlgSequence -topAlg = AlgSequence("TopAlg") - -from Herwig_i.Herwig_iConf import Herwig -topAlg += Herwig() - -Herwig = topAlg.Herwig -Herwig.HerwigCommand = ["iproc horace", - "modpdf 10042", - "autpdf HWLHAPDF", - "msflag 1", - "jmbug 0", - "jmueo 1", - "ptjim 4.91", - "jmrad 73 1.8", - "pltcut 0.0000000000333", - "ptmin 10.", - "prsof 0", - "rmass 198 80.425", - "rmass 199 80.425", - "rmass 200 91.19", - "gamw 2.124", - "gamz 2.495"] - -#-------------------------------------------------------------- -# Filter -#-------------------------------------------------------------- - -from GeneratorFilters.GeneratorFiltersConf import LeptonFilter -topAlg += LeptonFilter() - -LeptonFilter = topAlg.LeptonFilter -LeptonFilter.Ptcut = 5000. -LeptonFilter.Etacut = 2.8 - -#--------------------------------------------------------------- -# POOL / Root output -#--------------------------------------------------------------- - -try: - Stream1.RequireAlgs += [ "LeptonFilter" ] -except Exception, e: - pass - -#============================================================== -# -# End of job options file -# -############################################################### -#-------------------------------------------------------------- -# Configuration for EvgenJobTransforms -#-------------------------------------------------------------- -from EvgenJobOptions.HerwigEvgenConfig import evgenConfig -evgenConfig.efficiency = 0.71 diff --git a/Generators/Horace_i/share/README b/Generators/Horace_i/share/README deleted file mode 100644 index 2e4d0788d93cdbea4475082bdd5695ad6505dfeb..0000000000000000000000000000000000000000 --- a/Generators/Horace_i/share/README +++ /dev/null @@ -1,5 +0,0 @@ -1) Make a soft link between horace conf file to horace.conf, which will be searched by Horace_i -for example horace.conf -> PATH_TO_SHARE/horace_3.1_W+W-_mu_exp_unweighted.conf - -2) The events file listed in conf ("file where event are store horace_3.1_W+W-_mu_exp_unweighted.evts" -should be reachable from the run directory diff --git a/Generators/Horace_i/share/horace_3.1_W+W-_mu_exp_unweighted.conf b/Generators/Horace_i/share/horace_3.1_W+W-_mu_exp_unweighted.conf deleted file mode 100644 index 70600ae02c7f548ed58b7375b7a825e87e0e9f01..0000000000000000000000000000000000000000 --- a/Generators/Horace_i/share/horace_3.1_W+W-_mu_exp_unweighted.conf +++ /dev/null @@ -1,24 +0,0 @@ - Horace 3.1 LHA configuration - ---------------------------- - file where the events are stored - horace_3.1_W+W-_mu_exp_unweighted.evts - W+ and W- production - CTEQ6 PDFs (with iset = 3) - CoM energy - 14000. - Initial state hadrons - 2212 - 2212 - unweighted events - idwtup - -3 - xsecup - 19261.937 - xerrup - 150.117922 - xmaxup - 1156718.86 - 1/alpha_em - 127.918 - number of entries in the file (at least) - 1000 diff --git a/Generators/Horace_i/share/horace_3.1_W+W-_mu_exp_unweighted.stat b/Generators/Horace_i/share/horace_3.1_W+W-_mu_exp_unweighted.stat deleted file mode 100644 index 7fd1f159f74057e741a09cb8328ede9fef696836..0000000000000000000000000000000000000000 --- a/Generators/Horace_i/share/horace_3.1_W+W-_mu_exp_unweighted.stat +++ /dev/null @@ -1,72 +0,0 @@ - - Requested number of unweighed events: 1000. - Unweighted event n. 1000. - Weighted event n. 76390. - Weighted events after cuts 41451 - - Initial state particles: 2212 2212 - PDFs: CTEQ6 PDFs (with iset = 3) - - C. of m. energy = 14000.00 GeV - W+ & W- production, decaying into muons - - W mass = 80.398 GeV - W width = 2.124 GeV - Z mass = 91.1876 GeV - Z width = 2.4952 GeV - sin^2(th_w) = 0.222645853 - delta_r = 0. (one-loop EW delta_r) - - EW RC: exp (MATCHED QED PS) - EW input scheme: 0 - - hit or miss cross section = 19460.4818407 +- 611.3532226 (pb) - h. or m. out-of-range bias = 0.0000000 +- 0.0000000 (pb) - weighted cross section = 19261.9370279 +- 150.1179220 (pb) - - h. or m. efficiency = 1.30907 % (out of range = 0) - (upper limit = 150., to be set to 116.715618) - - Events stored in file: - Wmunu_CTEQ6L_EW_1000/horace_3.1_W+W-_mu_exp_unweighted.evts - Partial cross sections: - 0 photons: 14037.014 +- 112.5389 (npoints: 30295) - 1 photons: 4964.61309 +- 103.701613 (npoints: 9413) - 2 photons: 247.148803 +- 31.380328 (npoints: 1535) - 3 photons: 13.1568248 +- 9.26091784 (npoints: 200) - 4 photons: 0.00427522415 +- 0.00329264048 (npoints: 7) - 5 photons: -4.56739938E-10 +- 4.56736949E-10 (npoints: 1) - - Negative weights statistics: - n. of weighted points = 683 - n. of unweighted events = 0 - cross section -25.1806509 +- 5.18946746 - - partial q-q['][bar] contributions - -5 4 0.501566194 - -4 1 108.817925 - -4 3 872.415311 - -4 5 0.00318796509 - -3 2 188.251423 - -3 4 858.433368 - -2 1 3030.31559 - -2 3 71.2180993 - -1 2 4444.74792 - -1 4 54.3706076 - 1 -4 88.545512 - 1 -2 2984.43548 - 2 -3 194.672422 - 2 -1 4346.48278 - 3 -4 993.637153 - 3 -2 66.0327203 - 4 -5 2.74967617 - 4 -3 896.984121 - 4 -1 57.3237954 - 5 -4 1.99836928 - Sum: 19261.937 - .... - Started by user ID 444 on grid15.pv.infn.it, process ID 22862 - .... - Running time statistics: - program started 146 s ago - CPU time = 145 s (of which 145 s user time) diff --git a/Generators/Horace_i/share/jobOptions.Herwig.AtlasHorace.py b/Generators/Horace_i/share/jobOptions.Herwig.AtlasHorace.py deleted file mode 100755 index e9f9c80f98fde4f5aad145055d4c3d3d2fdb1d71..0000000000000000000000000000000000000000 --- a/Generators/Horace_i/share/jobOptions.Herwig.AtlasHorace.py +++ /dev/null @@ -1,131 +0,0 @@ -############################################################### -# -# Job options file Horace_i/jobOptions.Herwig.AtlasHorace.py -# -#============================================================== -#-------------------------------------------------------------- -import AthenaCommon.AtlasUnixGeneratorJob - -# Private Application Configuration option -from AthenaCommon.AppMgr import ServiceMgr -ServiceMgr.MessageSvc.OutputLevel = INFO - -#-------------------------------------------------------------- -# Event related parameters -#-------------------------------------------------------------- -# Number of events to be processed (default is 10) -theApp.EvtMax = 100 -OUTPUT="/tmp/mc13.005143.HoraceZmumu.evgen.EVNT.v13004000._00001.pool.root" -#-------------------------------------------------------------- -# Algorithms Private Options -#-------------------------------------------------------------- -from AthenaServices.AthenaServicesConf import AtRndmGenSvc -ServiceMgr += AtRndmGenSvc() -ServiceMgr.AtRndmGenSvc.Seeds = ["HERWIG 390020611 821000366", "HERWIG_INIT 820021 2347532"] - -# Horace core jobOption -include ( "Horace_i/CSC.ExtProcess.HerwigHorace.py") - -# nospac = true switch off initial-state radiation. Only forced splitting of non-valence partons is generated. -# noshower = true switch off the parton shower - -#from TruthExamples.TruthExamplesConf import PrintMC -#job += PrintMC() -#job.PrintMC.McEventKey = "GEN_EVENT" #the storegate key for reading -#job.PrintMC.VerboseOutput = TRUE #dumps the event to stout (TRUE/FALSE) -#job.PrintMC.PrintStyle = "Barcode" #Event print style (Vertex/Barcode) -#job.PrintMC.FirstEvent = 1 #First event to print -#job.PrintMC.LastEvent = 10 #Last event to print or all after FirstEvent are printed - -#--------------------------------------------------------------- -# Pool Persistency -#--------------------------------------------------------------- -#from AthenaPoolCnvSvc.WriteAthenaPool import AthenaPoolOutputStream -#Stream1 = AthenaPoolOutputStream( "Stream1" ) -# 2101 = EventInfo -# 133273 = MCTruth (HepMC) -#Stream1.ItemList += [ "2101#*", "133273#*" ] -#Stream1.OutputFile = "Wmunu-herwig-horace.pool.root" - - -#--------------------------------------------------------------- -# On the fly conversion from GEN_EVENT to SpclMC -#--------------------------------------------------------------- - -########################## -# Configure McAod options - -#from McParticleAlgs.McAodFlags import jobproperties as jp -#jp.McAodFlags.doTruthEtIsolations = False - -######## -# Create the AOD McEventCollection -# -#from McParticleAlgs.JobOptCfg import McAodBuilder -#from McParticleTools.McParticleToolsConf import NoopFilterTool -#from McParticleTools.McParticleToolsConf import TruthParticleCnvTool -#topAlg += McAodBuilder( -# "McAodBuilder", -# OutputLevel = INFO, -# FilterTool = NoopFilterTool( -# McEvents = "GEN_EVENT", -# DoEtIsolations = jp.McAodFlags.doTruthEtIsolations() -# ), -# CnvTool = TruthParticleCnvTool( -# McEvents = "GEN_AOD", -# TruthParticlesOutput = "SpclMC", -# DoEtIsolations = jp.McAodFlags.doTruthEtIsolations() -# ) -# ) - -#--------------------------------------------------------------- -# Pool Persistency -#--------------------------------------------------------------- -#include( "ParticleBuilderOptions/McAOD_PoolCnv_jobOptions.py") - -#from AthenaPoolCnvSvc.WriteAthenaPool import AthenaPoolOutputStream -#outStream = AthenaPoolOutputStream("OutStream") -#outStream.ItemList = [ "EventInfo#McEventInfo" ] -#outStream.ItemList += [ "McEventCollection#GEN_EVENT" ] -#outStream.ItemList += [ "McEventCollection#GEN_AOD" ] -#outStream.ItemList += [ "TruthParticleContainer#SpclMC" ] -##outStream.ItemList += [ "TruthEtIsolationsContainer#TruthEtIsol_GEN_EVENT" ] -#outStream.OutputFile = OUTPUT - -#---------------------------------------------------------------- -# Ntuple service output -#---------------------------------------------------------------- - -#theApp.Dlls += [ 'RootHistCnv' ] -#theApp.HistogramPersistency = 'ROOT' -#HistogramPersistencySvc = Service( "HistogramPersistencySvc" ) -#HistogramPersistencySvc.OutputFile = "herwig_horace_zmumu_hist.root" -#THistSvc = Service( 'THistSvc' ) -#THistSvc.Output = [ "AANT DATAFILE='herwig_horace_zmumu_cbnt.root' OPT='RECREATE'" ] - -#theApp.Dlls += [ "AnalysisTools" ] -#AANTupleStream = Algorithm( "AANTupleStream" ) -#AANTupleStream.ExistDataHeader = False -#AANTupleStream.OutputName = "herwig_horace_zmumu_cbnt.root" -#theApp.TopAlg += [ "AANTupleStream" ] - -#include( 'CBNT_Athena/CBNT_AthenaAware_jobOptions.py' ) -#include( 'CBNT_Athena/CBNT_EventInfo_jobOptions.py' ) -#include( 'RecExCommon/CBNT_Truth_jobOptions.py' ) - -# -# Atlfast -# -#--------------------------------------------------------------- -# Uncomment only one of the next two files at a time (ie.. make either CBNT or AOD). -#include( "DC3_joboptions/GentoAtlfasttoCBNT.py" ) -#include( "DC3_joboptions/GentoAtlfasttoAOD.py" ) - -#CBNT_Atlfast.FillHistory = True -#CBNT_Atlfast.NtupleLocID="/FILE1/CBNT/t3333" - -#============================================================== -# -# End of job options file -# -############################################################### diff --git a/Generators/Horace_i/src/upevnt_horace.F b/Generators/Horace_i/src/upevnt_horace.F deleted file mode 100644 index 0d42a7651f4fd57841985bcf776b7578387fdf84..0000000000000000000000000000000000000000 --- a/Generators/Horace_i/src/upevnt_horace.F +++ /dev/null @@ -1,132 +0,0 @@ - SUBROUTINE USEHORACE -c M. Bellomo - C.M. Carloni Calame (october 2007) -c Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) -c #include "GeneratorModules/heprup.inc" -c #include "GeneratorModules/hepeup.inc" -c LES HOUCHES COMMON BLOCKS -c Les Houches accord common block hep-ph/0109068 -c User process event commonblock. - INTEGER MAXNUP - PARAMETER (MAXNUP=500) - INTEGER NUP,IDPRUP,IDUP,ISTUP,MOTHUP,ICOLUP - DOUBLE PRECISION XWGTUP,SCALUP,AQEDUP,AQCDUP,PUP,VTIMUP,SPINUP - COMMON/HEPEUP/NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP,IDUP(MAXNUP), - & ISTUP(MAXNUP),MOTHUP(2,MAXNUP),ICOLUP(2,MAXNUP), - & PUP(5,MAXNUP),VTIMUP(MAXNUP),SPINUP(MAXNUP) - SAVE /HEPEUP/ -c User process initialization commonblock. - INTEGER MAXPUP - PARAMETER (MAXPUP=100) - INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP - DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP - COMMON/HEPRUP/IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2), - & IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP),XMAXUP(MAXPUP), - & LPRUP(MAXPUP) - SAVE /HEPRUP/ - common/horaceinterface/alpha,iu -c double precision pw(0:3),p3(0:3),p4(0:3),qph(40,0:3),ptmp(0:3) - character*1 tic - DOUBLE PRECISION Q2,ALEM,ALPS - COMMON /TRASFVAR/ Q2, ALEM, ALPS -c Constants for run - DOUBLE PRECISION SS,SQRTS - COMMON /SAVV/ SS,SQRTS -c INTEGER ISUB - INTEGER I -c Counters - INTEGER NNT1,NNT2 - DOUBLE PRECISION SIGSUM - COMMON/COUNTER/NNT1,NNT2,SIGSUM - data nnt1,nnt2,sigsum /0,0,0.d0/ -c save kinematics for ntuples - DOUBLE PRECISION PSHAT,COSTH,X1,X2,EE1,SIGEVS,RABS - COMMON/SAVMAN/PSHAT,COSTH,X1,X2,EE1,SIGEVS,RABS -c DOUBLE PRECISION SIGWE -c DOUBLE PRECISION PP1(4),PP2(4) - DOUBLE PRECISION ETA1,ETA2,PTLEP -c DOUBLE PRECISION qtmp(0:3),minv - COMMON/CUCU/ETA1,ETA2,PTLEP - -c alpha for QED radiation from HORACE - AQEDUP = alpha -c AQCDUP = ALPS - - read(iu,*)tic,nev,npart,XWGTUP,SCALUP - read(iu,*)idup(1),icolup(1,1),icolup(2,1),pz1 - read(iu,*)idup(2),icolup(1,2),icolup(2,2),pz2 - - pup(1,1) = 0.d0 - pup(2,1) = 0.d0 - pup(3,1) = pz1 - pup(4,1) = sqrt(pz1**2) - pup(5,1) = 0.d0 - - pup(1,2) = 0.d0 - pup(2,2) = 0.d0 - pup(3,2) = pz2 - pup(4,2) = sqrt(pz2**2) - pup(5,2) = 0.d0 - - NUP = npart + 1 - - do i = 3+1,NUP - read(iu,*)idup(i),icolup(1,i),icolup(2,i), - $ pup(1,i),pup(2,i),pup(3,i),pup(5,i) - pup(4,i)=sqrt(pup(1,i)**2+pup(2,i)**2+pup(3,i)**2+pup(5,i)**2) - enddo - -c trick to get correct mother pdg id for W and Z processes - if(abs(idup(4)).eq.abs(idup(5))) then - idup(3) = 23 - else - if(abs(idup(4)).eq.13) then - idup(3) = -((idup(4)/abs(idup(4)))*24) - else if(abs(idup(5)).eq.13) then - idup(3) = -((idup(5)/abs(idup(5)))*24) - endif - endif -c "intermediate" boson, invariant mass to be conserved, sum of lepton momenta!! -c see hep-ph/0109068 -- intermediate particles have idup = 0 - -c idup(3) = 0 - pup(1,3) = pup(1,4) + pup(1,5) - pup(2,3) = pup(2,4) + pup(2,5) - pup(3,3) = pup(3,4) + pup(3,5) - pup(4,3) = pup(4,4) + pup(4,5) - am2 = pup(4,3)**2 - pup(3,3)**2 - pup(2,3)**2 - pup(1,3)**2 - pup(5,3) = am2/abs(am2) * sqrt(abs(am2)) - - PSHAT=(pup(4,1) + pup(4,2))**2 - - SIGSUM = SIGSUM+XWGTUP - - ISTUP(1)=-1 - ISTUP(2)=-1 - ISTUP(3)= 2 ! intermeditate time-like boson - do k = 4,NUP - ISTUP(k) = 1 - enddo - -c Mother codes. - MOTHUP(1,1) = 0 - MOTHUP(2,1) = 0 - MOTHUP(1,2) = 0 - MOTHUP(2,2) = 0 - MOTHUP(1,3) = 1 - MOTHUP(2,3) = 2 - MOTHUP(1,4) = 3 - MOTHUP(2,4) = 3 - MOTHUP(1,5) = 3 - MOTHUP(2,5) = 3 - - if (NUP.gt.5) then - do k = 6,NUP - MOTHUP(1,k) = 3 - MOTHUP(2,k) = 3 - enddo - endif - - RETURN - END diff --git a/Generators/Horace_i/src/upinit_horace.F b/Generators/Horace_i/src/upinit_horace.F deleted file mode 100644 index 32f4da6f070dbde4c24c8a8e90fd248e95cbc1ec..0000000000000000000000000000000000000000 --- a/Generators/Horace_i/src/upinit_horace.F +++ /dev/null @@ -1,109 +0,0 @@ - SUBROUTINE INITHORACE -c M. Bellomo - C.M. Carloni Calame (october 2007) -c Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - character*60 tmpchar -c #include "GeneratorModules/heprup.inc" -c LES HOUCHES COMMON BLOCKS -c Les Houches accord common block hep-ph/0109068 -c User process event commonblock. - INTEGER MAXNUP - PARAMETER (MAXNUP=500) - INTEGER NUP,IDPRUP,IDUP,ISTUP,MOTHUP,ICOLUP - DOUBLE PRECISION XWGTUP,SCALUP,AQEDUP,AQCDUP,PUP,VTIMUP,SPINUP - COMMON/HEPEUP/NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP,IDUP(MAXNUP), - & ISTUP(MAXNUP),MOTHUP(2,MAXNUP),ICOLUP(2,MAXNUP), - & PUP(5,MAXNUP),VTIMUP(MAXNUP),SPINUP(MAXNUP) - SAVE /HEPEUP/ -c User process initialization commonblock. - INTEGER MAXPUP - PARAMETER (MAXPUP=100) - INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP - DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP - COMMON/HEPRUP/IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2), - & IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP),XMAXUP(MAXPUP), - & LPRUP(MAXPUP) - SAVE /HEPRUP/ - logical opyn - character*100 horaceevents - DOUBLE PRECISION SS,SQRTS - COMMON /SAVV/ SS,SQRTS - common/horaceinterface/alpha,iu - - write(*,*)'*************************************************' - WRITE(*,*)'* Horace_i: ATLAS interface to HORACE generator *' - write(*,*)'*************************************************' - - iconf = 49 - opyn = .TRUE. - do while(opyn) - inquire(unit=iconf,OPENED=opyn) - iconf = iconf + 1 - enddo - - iu = iconf + 1 - opyn = .TRUE. - do while(opyn) - inquire(unit=iu,OPENED=opyn) - iu = iu + 1 - enddo - - write(*,*)'===============================================' - write(*,*)'Reading in horace.conf Horace LHA configuration' - write(*,*)'file units are ',iconf,' and ',iu - write(*,*)'===============================================' - open(iconf,file='horace.conf',status='old') - read(iconf,*) - read(iconf,*) - read(iconf,*) - read(iconf,*)horaceevents - -c linking unit iu to event file - WRITE(*,*) 'reading HORACE events from ',horaceevents - open(iu,file=horaceevents,status='old') - read(iconf,*)tmpchar - write(*,*)'Events for ',tmpchar - read(iconf,*)tmpchar - write(*,*)'selected pdfs are: ',tmpchar - read(iconf,*) - read(iconf,*)sqrts - read(iconf,*) - read(iconf,*)IDBMUP(1) - read(iconf,*)IDBMUP(2) - read(iconf,*) - read(iconf,*) - read(iconf,*)idwtup - read(iconf,*) - read(iconf,*)xsecup(1) - read(iconf,*) - read(iconf,*)xerrup(1) - read(iconf,*) - read(iconf,*)xmaxup(1) - read(iconf,*) - read(iconf,*)alpha - - alpha = 1.d0/alpha - - SS=SQRTS**2 - EBMUP(1) = 0.5D0*SQRTS - EBMUP(2) = 0.5D0*SQRTS - -c Set up the external process. - NPRUP = 1 - LPRUP(1) = 1001 - -c PDF'S FOR THE BEAMS; WILL BE EVALUATED USING THE NDNS VARIABLE -c READ IN EARLIER - PDFGUP(1) = -1 - PDFGUP(2) = -1 - PDFSUP(1) = -1 - PDFSUP(2) = -1 - -c PDFGUP(1) = 1 -c PDFGUP(2) = 1 -c PDFSUP(1) = 1 -c PDFSUP(2) = 1 - - RETURN - END diff --git a/Generators/HvGen_i/CMakeLists.txt b/Generators/HvGen_i/CMakeLists.txt deleted file mode 100644 index d1b19ccd9e9b081414c7e5a3347951507f02a6a2..0000000000000000000000000000000000000000 --- a/Generators/HvGen_i/CMakeLists.txt +++ /dev/null @@ -1,25 +0,0 @@ -################################################################################ -# Package: HvGen_i -################################################################################ - -# Declare the package name: -atlas_subdir( HvGen_i ) - -# Declare the package's dependencies: -atlas_depends_on_subdirs( PRIVATE - Generators/GeneratorFortranCommon ) - -# External dependencies: -find_package( Pythia6 ) - -# Component(s) in the package: -atlas_add_library( HvGen_i - src/*.F - NO_PUBLIC_HEADERS - INCLUDE_DIRS ${PYTHIA6_INCLUDE_DIRS} - LINK_LIBRARIES ${PYTHIA6_LIBRARIES} GeneratorFortranCommonLib ) - -# Install files from the package: -atlas_install_joboptions( share/*.py ) -atlas_install_runtime( share/inputParHvGen.dat share/HV.lha.dat ) - diff --git a/Generators/HvGen_i/doc/HvGen.pdf b/Generators/HvGen_i/doc/HvGen.pdf deleted file mode 100755 index eb816af89d1bd08bab084c5acdb2ad7793e7277b..0000000000000000000000000000000000000000 Binary files a/Generators/HvGen_i/doc/HvGen.pdf and /dev/null differ diff --git a/Generators/HvGen_i/doc/HvGen.tex b/Generators/HvGen_i/doc/HvGen.tex deleted file mode 100755 index b2970b874c50cde25f4c0f65796d8b680afcd4a2..0000000000000000000000000000000000000000 --- a/Generators/HvGen_i/doc/HvGen.tex +++ /dev/null @@ -1,41 +0,0 @@ -\documentclass[11pt]{article} -\newdimen\SaveHeight \SaveHeight=\textheight -\textwidth=6.5in -\textheight=8.9in -\textwidth=6.5in -\textheight=9.0in -\hoffset=-.5in -\voffset=-1in -\def\topfraction{1.} -\def\textfraction{0.} -\def\topfraction{1.} -\def\textfraction{0.} -\begin{document} -\title{HvGen\_i: An interface between HiddenValley Generator and Athena\\ -Version in release 13.0.0 and later} -\author{ Stefano Giagu (Stefano.Giagu@cern.ch) } -%\today - -\maketitle - -This package runs HV generator from within Athena. \\See the example -in {\bf HvGen\_i/share/jobOptions.HvGenPythia.py } which show how to -read HV events and hadronize them using Pythia. - -Users must first run HV Generator in standalone mode and make a file of events. An athena job -then takes these events hadronizes them and passes them down the -Athena event chain. The events must be made with a version of HV generator -that is compatible. -Compatible versions can be found in: -/afs/cern.ch/user/g/giagu/public/HvGen and /afs/cern.ch/atlas/offline/external/hvgen - -To hadronize HV generated events with Pythia, you only need to run athena with the jobOptions -file jobOptions.HvGenPythia.py by typing in the prompt \\ -{\it athena jobOptions.HvGenPythia.py}\\ - -More infomation about Hidden Valley Models and HV generator here: \\ -/afs/cern.ch/user/g/giagu/public/HvGen/doc \\ -/afs/cern.ch/atlas/offline/external/hvgen/doc and in: \\ -http://www.phys.washington.edu/users/strasslr/hv/hv.htm - -\end{document} diff --git a/Generators/HvGen_i/doc/packagedoc.h b/Generators/HvGen_i/doc/packagedoc.h deleted file mode 100644 index 783a12fadf4c0ed703eca273ae58375636b833cd..0000000000000000000000000000000000000000 --- a/Generators/HvGen_i/doc/packagedoc.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -/** - - <i> An interface between HiddenValley Generator and Athena - -This package runs HV generator from within Athena. \\See the example -in HvGen_i/share/jobOptions.HvGenPythia.py which show how to -read HV events and hadronize them using Pythia. - -Users must first run HV Generator in standalone mode and make a file of events. An athena job -then takes these events hadronizes them and passes them down the -Athena event chain. The events must be made with a version of HV generator -that is compatible. -Compatible versions can be found in: -/afs/cern.ch/user/g/giagu/public/HvGen and /afs/cern.ch/atlas/offline/external/hvgen - -To hadronize HV generated events with Pythia, you only need to run athena with the jobOptions -file jobOptions.HvGenPythia.py by typing in the prompt - athena jobOptions.HvGenPythia.py - -More infomation about Hidden Valley Models and HV generator here: - -/afs/cern.ch/user/g/giagu/public/HvGen/doc - -/afs/cern.ch/atlas/offline/external/hvgen/doc and in: - -http://www.phys.washington.edu/users/strasslr/hv/hv.htm - -@author Stefano Giagu (Stefano.Giagu@cern.ch) </i> - -@page HvGen_i_page - - - -*/ diff --git a/Generators/HvGen_i/share/inputParHvGen.dat b/Generators/HvGen_i/share/inputParHvGen.dat deleted file mode 100755 index c63f24d27ec4fe4a213a37850415678865bae009..0000000000000000000000000000000000000000 --- a/Generators/HvGen_i/share/inputParHvGen.dat +++ /dev/null @@ -1,10 +0,0 @@ - PMAS(36,1)= 30.! mass of vpizero (as A0) - PMAS(36,4)= 10.! lifetime of vpizero in mm (as A0) - PMAS(36,2)= 0.000720411133! width of vpizero (as A0) - PMAS(36,3)= 0.00720411133! B-W cutoff of vpizero (as A0) - PMAS(35,1)= 31.0222222! mass of vpiplus (as H0) - PMAS(35,4)= 0.1! lifetime of vpiplus in mm (as H0) - PMAS(35,2)= 0.000677304173! width of vpiplus (as H0) - PMAS(35,3)= 0.00677304173! B-W cutoff of vpiplus (as H0) - MDCY(35,1)= 0! if this is zero, vpiplus (as H0) does not decay - Input HV.lha.dat diff --git a/Generators/HvGen_i/share/jobOptions.HvGenPythia.py b/Generators/HvGen_i/share/jobOptions.HvGenPythia.py deleted file mode 100755 index 62282e7945becf3187697c8edbf41bab4ff824c6..0000000000000000000000000000000000000000 --- a/Generators/HvGen_i/share/jobOptions.HvGenPythia.py +++ /dev/null @@ -1,74 +0,0 @@ -############################################################### -# -# Job options file -# -#============================================================== -#-------------------------------------------------------------- -# General Application Configuration options -#-------------------------------------------------------------- -from AthenaCommon.Logging import logging - -evgenLog = logging.getLogger('csc_evgen') - -# special setup for event generation -include( "AthenaCommon/Atlas_Gen.UnixStandardJob.py" ) - -# remember output level I set - -evgenMsgLevel = INFO - -# other includes needed by the physics file -include( "PartPropSvc/PartPropSvc.py" ) - -from AthenaServices.AthenaServicesConf import AtRndmGenSvc -svcMgr += AtRndmGenSvc() - -# get a handle on topalg -from AthenaCommon.AlgSequence import AlgSequence -topAlg = AlgSequence("TopAlg") - -svcMgr.MessageSvc.OutputLevel = evgenMsgLevel - -#-------------------------------------------------------------- -# Private Application Configuration options -#-------------------------------------------------------------- -atRndmGenSvc = svcMgr.AtRndmGenSvc -AtRndmGenSvc.Seeds = ["PYTHIA 330020611 841000366", "PYTHIA_INIT 824021 3247532"] - -from Pythia_i.Pythia_iConf import Pythia -topAlg += Pythia() - -from TruthExamples.TruthExamplesConf import PrintMC -topAlg += PrintMC() -#-------------------------------------------------------------- -# Event related parameters -#-------------------------------------------------------------- -# Number of events to be processed (default is 10) -theApp.EvtMax = 5 -#-------------------------------------------------------------- -# Algorithms Private Options -#-------------------------------------------------------------- -Pythia = topAlg.Pythia -Pythia.PythiaCommand = ["pyinit user hvgen"] -# decay particles anyware -Pythia.PythiaCommand += ["pydat1 parj 71 20000."] - -#--------------------------------------------------------------- -# Ntuple service output -#--------------------------------------------------------------- -#--------------------------------------------------------------- -# Pool Persistency -#--------------------------------------------------------------- -# -#include( "AthenaPoolCnvSvc/WriteAthenaPool_jobOptions.py" ) -#theApp.Dlls += [ "GeneratorObjectsAthenaPoolPoolCnv" ] -#Stream1 = Algorithm( "Stream1" ) -#Stream1.ItemList += [ 'EventInfo#*', 'McEventCollection#*' ] -# -#Stream1.OutputFile = "HV.pool.root" -# -#============================================================== -# -# End of job options file -# -############################################################### diff --git a/Generators/HvGen_i/src/inithvgen.F b/Generators/HvGen_i/src/inithvgen.F deleted file mode 100755 index e7f7d311413cf89795fb26e78df8bd13375cfaad..0000000000000000000000000000000000000000 --- a/Generators/HvGen_i/src/inithvgen.F +++ /dev/null @@ -1,137 +0,0 @@ -C****************************************************** -C* HV - Pythia interface. * -C* Version 1.0, 02/06/2007 * -C* * -C* - Reads particle masses from event file * -C* * -C* Written by S.Giagu sefano.giagu@cern.ch * -C* * -C****************************************************** - -C...UPINIT -C...Routine called by PYINIT to set up user-defined processes. - - SUBROUTINE INITHVGEN - - IMPLICIT NONE - -C--GUP common block -#include "GeneratorFortranCommon/heprup.inc" - -C...EXTERNAL statement links PYDATA on most machines - EXTERNAL PYDATA - -C--PYTHIA Particles Properties common Blocks -c INTEGER KCHG,MDCY,MDME,KFDP -c DOUBLE PRECISION PMAS,PARF,VCKM,BRAT -c COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) -c COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5) - - CHARACTER*120 DUMMY - CHARACTER*120 BUFF - CHARACTER*120 FILENAME - INTEGER IGOOD, IALL, I, IDUM, IDP - DOUBLE PRECISION XDUM -C DOUBLE PRECISION XXPR - -C...Set Particles properties and read input event file name - FILENAME='HV.newlha.dat' - WRITE(*,*) 'INITHVGEN Opening inputParHvGen.dat File' - OPEN(UNIT=76,STATUS='OLD',FILE='inputParHvGen.dat') - DO I=1,100 - READ(76,'(A)',ERR=300,END=301) BUFF - IF(BUFF(2:6).EQ.'Input') THEN - FILENAME = BUFF(8:80) - WRITE(*,*) 'INITHVGEN: Input Event File is: ',FILENAME - ELSE IF (BUFF(1:1).EQ.'!') THEN -C...Do nothing so far - WRITE(*,*) BUFF - ELSE - CALL PYGIVE(BUFF) - ENDIF - ENDDO - 300 CONTINUE - WRITE(*,*) 'INITHVGEN::ERROR: Reading inputParHvGen.dat File' - 301 CONTINUE - CLOSE(76) - -C...Set incoming beams: LHC. - IDBMUP(1)=2212 - IDBMUP(2)=2212 - EBMUP(1)=7000D0 - EBMUP(2)=7000D0 - -C-- open the file - WRITE(*,*) 'INITHVGEN Opening LesHouches Input File' -c OPEN(UNIT=77,STATUS='OLD',FILE='HV.newlha.dat') - OPEN(UNIT=77,STATUS='OLD',FILE=FILENAME) - -C-- read header - WRITE(*,*) 'INITHVGEN Read Header' - DO I=1,5 - READ(77,'(A)') DUMMY !head + <init> - ENDDO - IF (DUMMY.NE.'<init>') GOTO 201 ! error - READ(77,*) IDBMUP(1), IDBMUP(2),EBMUP(1),EBMUP(2), - & PDFGUP(1),PDFGUP(2), - & PDFSUP(1),PDFSUP(2),IDWTUP,NPRUP - DO I=1,NPRUP - READ(77,*) XSECUP(I),XERRUP(I),XMAXUP(I),LPRUP(I) - ENDDO - READ(77,'(A)') DUMMY !</init> - IF (DUMMY.NE.'</init>') GOTO 204 ! error - -C-- check number of events in file and file consistency - - IGOOD = 1 - IALL = 0 - DO WHILE (IGOOD .EQ. 1) - READ(77,'(A)',END=100) DUMMY ! '<event> - IF (DUMMY.EQ.'</LesHouchesEvents>') GOTO 100 - IF (DUMMY.NE.'<event>') GOTO 101 ! error - READ(77,*, END=102) IDP, IDUM, XDUM, XDUM, XDUM, XDUM - DO I=1,IDP - READ(77,'(A)',END=103) DUMMY - ENDDO - READ(77,'(A)',END=104) DUMMY ! '</event>' - IF (DUMMY.NE.'</event>') GOTO 104 ! error - IALL = IALL + 1 - ENDDO - - - 201 CONTINUE - WRITE(*,*) 'INITHVGEN::ERROR: <init> not found as expected' - GOTO 100 - 204 CONTINUE - WRITE(*,*) 'INITHVGEN::ERROR: </init> not found as expected' - GOTO 100 - 101 CONTINUE - WRITE(*,*) 'INITHVGEN::ERROR: <event> not found as expected' - GOTO 100 - 102 CONTINUE - WRITE(*,*) 'INITHVGEN::ERROR: line 1 event not found as expected' - GOTO 100 - 103 CONTINUE - WRITE(*,*) 'INITHVGEN::ERROR: part block not found as expected' - GOTO 100 - 104 CONTINUE - WRITE(*,*) 'INITHVGEN::ERROR: </event> not found as expected' - GOTO 100 - 100 CONTINUE - WRITE(*,*) 'INITHVGEN Read Header and ',IALL,' events ' - REWIND(77) - DO I=1,5 - READ(77,'(A)') DUMMY !head + <init> - ENDDO - READ(77,*) IDUM, IDUM, XDUM, XDUM, IDUM, IDUM, IDUM, - & IDUM, IDUM, IDUM - DO I=1,IDUM - READ(77,'(A)') DUMMY - ENDDO - READ(77,'(A)') DUMMY !</init> - IF (DUMMY.NE.'</init>') THEN - WRITE(*,*) 'INITHVGEN::ERROR: rewinding file' - ENDIF - - RETURN - END diff --git a/Generators/HvGen_i/src/usehvgen.F b/Generators/HvGen_i/src/usehvgen.F deleted file mode 100755 index 460a3da676bdfb8960acc87666f14bf2b1d71c0e..0000000000000000000000000000000000000000 --- a/Generators/HvGen_i/src/usehvgen.F +++ /dev/null @@ -1,62 +0,0 @@ -C****************************************************** -C* HV - Pythia interface. * -C* Version 1.0, 02/06/2007 * -C* * -C* - Reads particle masses from event file * -C* * -C* Written by S.Giagu sefano.giagu@cern.ch * -C* * -C****************************************************** - -C...Routine called by PYEVNT or PYEVNW to get user process event - - SUBROUTINE USEHVGEN - - IMPLICIT NONE - -C--GUP common block -#include "GeneratorFortranCommon/hepeup.inc" - - CHARACTER*19 DUMMY - INTEGER I - -C-- read one event - NUP = 0 - - READ(77,'(A)',END=100) DUMMY ! '<event> - IF (DUMMY.EQ.'</LesHouchesEvents>') GOTO 105 - IF (DUMMY.NE.'<event>') THEN - GOTO 101 ! error - ENDIF - READ(77,*, END=102) NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP - DO I=1,NUP - READ(77,*,END=103) IDUP(I),ISTUP(I),MOTHUP(1,I),MOTHUP(2,I), - & ICOLUP(1,I),ICOLUP(2,I), - & PUP(1,I),PUP(2,I),PUP(3,I),PUP(4,I), - & PUP(5,I),VTIMUP(I),SPINUP(I) - ENDDO - READ(77,'(A)',END=104) DUMMY ! '</event>' - IF (DUMMY.NE.'</event>') GOTO 104 ! error - - GOTO 100 - - 101 CONTINUE - WRITE(*,*) 'USEHVGEN::ERROR: <event> not found where expected' - GOTO 100 - 102 CONTINUE - WRITE(*,*) 'USEHVGEN::ERROR: line 1 of eve not found as expected' - GOTO 100 - 103 CONTINUE - WRITE(*,*) 'USEHVGEN::ERROR: part block not found as expected' - GOTO 100 - 104 CONTINUE - WRITE(*,*) 'USEHVGEN::ERROR: </event> not found where expected' - GOTO 100 - 105 CONTINUE - WRITE(*,*) 'USEHVGEN end of events in list' - RETURN - 100 CONTINUE - WRITE(*,*) 'USEHVGEN new event read' - - RETURN - END diff --git a/Generators/MadCUP_i/CMakeLists.txt b/Generators/MadCUP_i/CMakeLists.txt deleted file mode 100644 index 49b269adb0bd3d9acbe320e709cdfd1d793c8cb0..0000000000000000000000000000000000000000 --- a/Generators/MadCUP_i/CMakeLists.txt +++ /dev/null @@ -1,27 +0,0 @@ -################################################################################ -# Package: MadCUP_i -################################################################################ - -# Declare the package name: -atlas_subdir( MadCUP_i ) - -# Declare the package's dependencies: -atlas_depends_on_subdirs( PRIVATE - Generators/GeneratorFortranCommon ) - -# External dependencies: -find_package( Herwig ) -find_package( Pythia6 ) - -# Component(s) in the package: -atlas_add_library( MadCUP_i - src/*.F - PUBLIC_HEADERS MadCUP_i - PRIVATE_INCLUDE_DIRS ${PYTHIA6_INCLUDE_DIRS} ${HERWIG_INCLUDE_DIRS} - LINK_LIBRARIES GeneratorFortranCommonLib - PRIVATE_LINK_LIBRARIES ${PYTHIA6_LIBRARIES} ${HERWIG_LIBRARIES} ) - -# Install files from the package: -atlas_install_joboptions( share/*.py ) -atlas_install_runtime( share/event_input.dat ) - diff --git a/Generators/MadCUP_i/MadCUP_i/hepup.inc b/Generators/MadCUP_i/MadCUP_i/hepup.inc deleted file mode 100755 index b17929bac508f3a505c55ca54318516a2f5f2cef..0000000000000000000000000000000000000000 --- a/Generators/MadCUP_i/MadCUP_i/hepup.inc +++ /dev/null @@ -1,29 +0,0 @@ -c global variables - integer maxNumSubProc - parameter( maxNumSubProc = 1000 ) - -c then the local clone of HEPEUP - integer LMAXNUP - parameter ( LMAXNUP = 20 ) - integer LNUP, LIDPRUP, LISTUP, LIDUP, LMOTHUP, LICOLUP, LSPINUP - integer colorprocess, decayprocess, numEntry - logical isFromCP - common /localHEPEUP/ LNUP(maxNumSubProc), LIDPRUP(maxNumSubProc), - & LISTUP(LMAXNUP,maxNumSubProc), - & LIDUP(LMAXNUP,maxNumSubProc), - & LMOTHUP(2,LMAXNUP,maxNumSubProc), - & LSPINUP(LMAXNUP,maxNumSubProc), - & LICOLUP(2,LMAXNUP,maxNumSubProc), - & colorprocess,decayprocess, - & numEntry(maxNumSubProc), isFromCP(maxNumSubProc) - - -c and local variables which are needed to fill the run common block HEPRUP - double precision sigtot, sdev, totalweight - integer numcolor,numdecay - common /localHEPRUP/ sigtot, sdev, totalweight, - & numcolor, numdecay - - - - diff --git a/Generators/MadCUP_i/MadCUP_i/iofiles.inc b/Generators/MadCUP_i/MadCUP_i/iofiles.inc deleted file mode 100755 index 6bfec231e931807452ce403846627670d9744562..0000000000000000000000000000000000000000 --- a/Generators/MadCUP_i/MadCUP_i/iofiles.inc +++ /dev/null @@ -1,10 +0,0 @@ - character*50 colorLookupTable,decayLookupTable - character*100 eventDataFile - - parameter ( eventDataFile = 'event_input.dat ' ) - - common /lookupTables/ colorLookupTable,decayLookupTable - - integer unitnumber - common /unit/ unitnumber - diff --git a/Generators/MadCUP_i/doc/MadCUP.pdf b/Generators/MadCUP_i/doc/MadCUP.pdf deleted file mode 100755 index 2ab86ca932e6a71a235164269cadd1e35561cbe8..0000000000000000000000000000000000000000 Binary files a/Generators/MadCUP_i/doc/MadCUP.pdf and /dev/null differ diff --git a/Generators/MadCUP_i/doc/MadCUP.tex b/Generators/MadCUP_i/doc/MadCUP.tex deleted file mode 100755 index 2a18ca05cf647785de301dca6dd26ba580f0a252..0000000000000000000000000000000000000000 --- a/Generators/MadCUP_i/doc/MadCUP.tex +++ /dev/null @@ -1,53 +0,0 @@ -\documentclass[11pt]{article} -\newdimen\SaveHeight \SaveHeight=\textheight -\textwidth=6.5in -\textheight=8.9in -\textwidth=6.5in -\textheight=9.0in -\hoffset=-.5in -\voffset=-1in -\def\topfraction{1.} -\def\textfraction{0.} -\def\topfraction{1.} -\def\textfraction{0.} -\begin{document} -\title{MadCUP\_i: An interface between MadCUP and Athena\\ -Version in release 7.0.0 and later} -\author{ Georgios Stavropoulos (George.Stavropoulos@cern.ch) } - -\maketitle - -This package runs MadCUP from within Athena. \\See the example -in {\bf MadCUP\_i/share/jobOptions.MadCupPythia.py } and {\bf - MadCUP\_i/share/jobOptions.MadCupHerwig.py } which show how to -read MadCUP events and hadronize them using Pythia or Herwig - -Users must first run -MadCUP in standalone mode and make a file of events. An athena job -then takes these events hadronizes them and passes them down the -Athena event chain. The events must be made with a version of MadCUP -that is compatible, recent versions that support the Les Houches -interface should be acceptable. - - -To hadronize {\bf MadCUP} generated events with Herwig, you only need to run athena with the jobOptions -file jobOptions.MadCupHerwig.py by typing in the prompt \\ -{\it athena jobOptions.MadCupHerwig.py}\\ - -To hadronize {\bf MadCUP} generated events with Pythia, you only need to run athena with the jobOptions -file jobOptions.MadCupPythia.py by typing in the prompt \\ -{\it athena jobOptions.MadCupPythia.py}\\ - - -More infomation about MadCUP here - -http://pheno.physics.wisc.edu/Software/MadCUP/ - -\end{document} - - - - - - - diff --git a/Generators/MadCUP_i/share/event_input.dat b/Generators/MadCUP_i/share/event_input.dat deleted file mode 100755 index 3d9a53c6a7876e77a8bcec4ca2376ba131ea5e7d..0000000000000000000000000000000000000000 --- a/Generators/MadCUP_i/share/event_input.dat +++ /dev/null @@ -1,1024 +0,0 @@ -pp->tt~ +X, X=0,1,or 2 jets - 100 ! weighted events. Smallest probability is 0.9473 - 3 !number of general comment lines to follow -CCCCCCCCCCCCCCCCCCCC Number of comment lines includes 2 CCCCC lines CCCCCCCCCC - Cross section = 0.2087E+05+- 4.833 fb -CCCCCCCCCCCCCCCCCCCC Do not make changes after this line CCCCCCCCCCCCCCCCCCCCC - 2212 2212 7000. 7000. ! beam ID and beam energies in GeV - 4 4 32 32 ! PDF groups and sets for the two beams - 1 1 ! weight method and #processes - 20.87 0.4833E-02 22.030697 303 - 4 303 - 1 12 6 - 1 11 11 0 0 0 - 1 -12 11 0 0 0 - 1 -11 12 0 0 0 - 1 12 12 0 0 0 - 2 -24 3 0 0 0 - 2 24 4 0 0 0 - 2 12 6 - 1 13 11 0 0 0 - 1 -14 11 0 0 0 - 1 -11 12 0 0 0 - 1 12 12 0 0 0 - 2 -24 3 0 0 0 - 2 24 4 0 0 0 - 3 12 6 - 1 11 11 0 0 0 - 1 -12 11 0 0 0 - 1 -13 12 0 0 0 - 1 14 12 0 0 0 - 2 -24 3 0 0 0 - 2 24 4 0 0 0 - 4 12 6 - 1 13 11 0 0 0 - 1 -14 11 0 0 0 - 1 -13 12 0 0 0 - 1 14 12 0 0 0 - 2 -24 3 0 0 0 - 2 24 4 0 0 0 - 12 303 - 1 12 6 - -1 1 0 0 501 0 - -1 -1 0 0 0 502 - 2 6 1 0 501 0 - 2 -6 2 0 0 502 - 1 5 3 0 501 0 - 1 -5 4 0 0 502 - 2 12 6 - -1 2 0 0 501 0 - -1 -2 0 0 0 502 - 2 6 1 0 501 0 - 2 -6 2 0 0 502 - 1 5 3 0 501 0 - 1 -5 4 0 0 502 - 3 12 6 - -1 3 0 0 501 0 - -1 -3 0 0 0 502 - 2 6 1 0 501 0 - 2 -6 2 0 0 502 - 1 5 3 0 501 0 - 1 -5 4 0 0 502 - 4 12 6 - -1 4 0 0 501 0 - -1 -4 0 0 0 502 - 2 6 1 0 501 0 - 2 -6 2 0 0 502 - 1 5 3 0 501 0 - 1 -5 4 0 0 502 - 5 12 6 - -1 5 0 0 501 0 - -1 -5 0 0 0 502 - 2 6 1 0 501 0 - 2 -6 2 0 0 502 - 1 5 3 0 501 0 - 1 -5 4 0 0 502 - 6 12 6 - -1 -1 0 0 0 501 - -1 1 0 0 502 0 - 2 -6 1 0 0 501 - 2 6 2 0 502 0 - 1 -5 3 0 0 501 - 1 5 4 0 502 0 - 7 12 6 - -1 -2 0 0 0 501 - -1 2 0 0 502 0 - 2 -6 1 0 0 501 - 2 6 2 0 502 0 - 1 -5 3 0 0 501 - 1 5 4 0 502 0 - 8 12 6 - -1 -3 0 0 0 501 - -1 3 0 0 502 0 - 2 -6 1 0 0 501 - 2 6 2 0 502 0 - 1 -5 3 0 0 501 - 1 5 4 0 502 0 - 9 12 6 - -1 -4 0 0 0 501 - -1 4 0 0 502 0 - 2 -6 1 0 0 501 - 2 6 2 0 502 0 - 1 -5 3 0 0 501 - 1 5 4 0 502 0 - 10 12 6 - -1 -5 0 0 0 501 - -1 5 0 0 502 0 - 2 -6 1 0 0 501 - 2 6 2 0 502 0 - 1 -5 3 0 0 501 - 1 5 4 0 502 0 - 11 12 6 - -1 21 0 0 502 503 - -1 21 0 0 501 502 - 2 6 1 0 501 0 - 2 -6 2 0 0 503 - 1 5 3 0 501 0 - 1 -5 4 0 0 503 - 12 12 6 - -1 21 0 0 501 502 - -1 21 0 0 502 503 - 2 6 1 0 501 0 - 2 -6 2 0 0 503 - 1 5 3 0 501 0 - 1 -5 4 0 0 503 - 1 303 12 11 1 20.870510 202.03392 0.77579519E-02 0.11800000 - 1 27.141139 0.000 9. 21 - 2 -1535.6794 0.000 9. 21 - 5 23.195130 -24.885621 -51.387030 0.8587E-05 9. 5 - 6 40.242028 -33.971289 -398.39814 0.6211E-05 9. -5 - 7 34.508940 61.407724 -398.15426 0.5110E-03 -1. 11 - 8 -40.221175 64.133550 -417.12766 0.000 1. -12 - 9 -48.876006 -56.462013 -246.18359 0.5110E-03 1. -11 - 10 -8.8489171 -10.222351 2.7124063 0.000 -1. 12 - 2 303 12 12 4 20.870510 233.38267 0.77579519E-02 0.11800000 - 1 284.88628 0.000 9. 21 - 2 -602.88914 0.000 9. 21 - 5 -11.366318 61.460264 138.16207 0.4503E-05 9. 5 - 6 -10.652782 -120.60377 -239.84012 0.5190E-05 9. -5 - 7 98.797679 46.698444 84.516534 0.1057 -1. 13 - 8 5.2295185 16.344060 -14.867423 0.000 1. -14 - 9 -71.804665 -3.4138878 -287.44115 0.1057 1. -13 - 10 -10.203433 -0.48511297 1.4672282 0.000 -1. 14 - 3 303 12 12 2 20.870510 237.64093 0.77579519E-02 0.11800000 - 1 355.11585 0.000 9. 21 - 2 -159.69599 0.000 9. 21 - 5 142.42983 -0.46338685 87.880953 0.3811E-05 9. 5 - 6 -77.087810 -62.301372 -16.609248 0.6651E-06 9. -5 - 7 39.065922 23.151353 42.606711 0.1057 -1. 13 - 8 -24.876073 16.846792 -16.124661 0.000 1. -14 - 9 -22.874116 6.5478930 -11.577589 0.5110E-03 1. -11 - 10 -56.657751 16.218721 109.24369 0.000 -1. 12 - 4 303 12 11 3 20.870510 344.91719 0.77579519E-02 0.11800000 - 1 390.97582 0.000 9. 21 - 2 -517.35619 0.000 9. 21 - 5 -10.653852 82.247783 -164.31740 0.5831E-05 9. 5 - 6 -89.731651 -43.750270 100.38192 0.4192E-05 9. -5 - 7 142.45529 147.25359 -175.44067 0.5110E-03 -1. 11 - 8 -1.4810111 38.087796 -14.894629 0.000 1. -12 - 9 -12.854455 -70.889718 2.0978834 0.1057 1. -13 - 10 -27.734323 -152.94918 125.79252 0.000 -1. 14 - 5 303 12 12 2 20.870510 232.00967 0.77579519E-02 0.11800000 - 1 114.51865 0.000 9. 21 - 2 -572.03934 0.000 9. 21 - 5 42.300699 -40.427045 4.7930040 0.4452E-05 9. 5 - 6 16.668774 145.35818 -201.99562 0.5935E-06 9. -5 - 7 -19.381363 -57.693489 -86.515677 0.1057 -1. 13 - 8 -66.116778 -48.787518 -2.0836323 0.000 1. -14 - 9 21.749445 1.2706552 -179.77333 0.5110E-03 1. -11 - 10 4.7792226 0.27921374 8.0545643 0.000 -1. 12 - 6 303 12 12 1 20.870510 235.29352 0.77579519E-02 0.11800000 - 1 1251.9262 0.000 9. 21 - 2 -91.320673 0.000 9. 21 - 5 -62.774460 -64.051556 681.68718 0.6937E-05 9. 5 - 6 12.020716 96.793156 -1.3171505 0.2052E-05 9. -5 - 7 30.793021 -11.368035 74.291704 0.5110E-03 -1. 11 - 8 -84.234584 -31.708306 306.65395 0.000 1. -12 - 9 28.587919 2.8355282 -4.1062254 0.5110E-03 1. -11 - 10 75.607387 7.4992127 103.39611 0.000 -1. 12 - 7 303 12 11 2 20.870510 176.05639 0.77579519E-02 0.11800000 - 1 310.37636 0.000 9. 21 - 2 -128.35903 0.000 9. 21 - 5 -48.785999 -19.931519 -43.548786 0.1877E-05 9. 5 - 6 53.424092 48.690347 65.154215 0.2070E-05 9. -5 - 7 65.612816 -2.7116547 52.560501 0.1057 -1. 13 - 8 -10.873654 -1.4383646 -21.358529 0.000 1. -14 - 9 -14.017481 -5.8095227 -9.4229582 0.5110E-03 1. -11 - 10 -45.359773 -18.799285 138.63290 0.000 -1. 12 - 8 303 12 12 2 20.870510 220.47698 0.77579519E-02 0.11800000 - 1 151.35856 0.000 9. 21 - 2 -332.47311 0.000 9. 21 - 5 -67.952385 -132.90261 -75.328255 0.1567E-05 9. 5 - 6 -4.1304965 92.441174 -135.67460 0.2023E-05 9. -5 - 7 30.633575 0.45036666E-01 5.9889430 0.1057 -1. 13 - 8 13.044951 0.40454345E-01 23.409741 0.000 1. -14 - 9 14.162410 20.131444 -39.984391 0.5110E-03 1. -11 - 10 14.241946 20.244502 40.474003 0.000 -1. 12 - 9 303 12 2 3 20.870510 297.24255 0.77579519E-02 0.11800000 - 1 4338.1477 0.000 9. 2 - 2 -20.543526 0.000 9. -2 - 5 -132.22654 150.84930 1371.3338 0.6162E-05 9. 5 - 6 -10.463698 13.905720 199.44694 0.1184E-04 9. -5 - 7 19.803019 10.374188 517.85904 0.5110E-03 -1. 11 - 8 -57.282346 9.5762806 471.88173 0.000 1. -12 - 9 5.8629309 -6.0105352 6.8681205 0.1057 1. -13 - 10 174.30664 -178.69495 1750.2145 0.000 -1. 14 - 10 303 12 11 2 20.870510 187.53393 0.77579519E-02 0.11800000 - 1 373.00753 0.000 9. 21 - 2 -95.035078 0.000 9. 21 - 5 -26.047974 -4.5524620 134.62390 0.2402E-05 9. 5 - 6 46.523884 -56.616020 87.503354 0.8461E-06 9. -5 - 7 60.951895 44.857850 16.526916 0.1057 -1. 13 - 8 -15.688910 26.172191 8.6274138 0.000 1. -14 - 9 -27.454628 -4.1184971 -26.564364 0.5110E-03 1. -11 - 10 -38.284267 -5.7430625 57.255230 0.000 -1. 12 - 11 303 12 11 3 20.870510 211.49816 0.77579519E-02 0.11800000 - 1 365.75441 0.000 9. 21 - 2 -123.56033 0.000 9. 21 - 5 -12.439164 34.034532 -29.597209 0.2241E-05 9. 5 - 6 4.5260873 49.112818 7.2884750 0.1553E-05 9. -5 - 7 4.6240207 -7.5714727 47.980076 0.5110E-03 -1. 11 - 8 -111.43159 -15.008838 77.997053 0.000 1. -12 - 9 29.939030 -15.806383 -5.2154056 0.1057 1. -13 - 10 84.781614 -44.760656 143.74109 0.000 -1. 14 - 12 303 12 11 4 20.870510 208.76012 0.77579519E-02 0.11800000 - 1 148.81785 0.000 9. 21 - 2 -357.24521 0.000 9. 21 - 5 -27.187510 -29.708475 -108.28490 0.3081E-05 9. 5 - 6 17.589198 -42.061506 -65.228107 0.1656E-05 9. -5 - 7 11.380180 58.800636 -70.620123 0.1057 -1. 13 - 8 -59.960872 57.276093 -32.739758 0.000 1. -14 - 9 19.645127 -14.960925 -17.694946 0.1057 1. -13 - 10 38.533876 -29.345823 86.140464 0.000 -1. 14 - 13 303 12 12 2 20.870510 213.54134 0.77579519E-02 0.11800000 - 1 302.71766 0.000 9. 21 - 2 -165.82200 0.000 9. 21 - 5 -106.27043 55.912914 37.928500 0.1473E-05 9. 5 - 6 120.48882 -50.078094 -5.1104563 0.1317E-05 9. -5 - 7 33.904407 -0.65006473 20.933671 0.1057 -1. 13 - 8 -38.452165 -1.0526763 80.482969 0.000 1. -14 - 9 -4.7574456 -2.0327675 -39.821878 0.5110E-03 1. -11 - 10 -4.9131822 -2.0993109 42.482851 0.000 -1. 12 - 14 303 12 12 2 20.870510 228.74443 0.77579519E-02 0.11800000 - 1 616.88039 0.000 9. 21 - 2 -85.865360 0.000 9. 21 - 5 -1.8686732 36.876043 43.385656 0.2633E-05 9. 5 - 6 11.052418 57.765964 19.325294 0.2244E-05 9. -5 - 7 131.94036 -89.320967 206.82565 0.1057 -1. 13 - 8 -7.4680134 -30.692684 54.059289 0.000 1. -14 - 9 -25.898422 4.9162409 0.94658125 0.5110E-03 1. -11 - 10 -107.75767 20.455403 206.47255 0.000 -1. 12 - 15 303 12 7 3 20.870510 187.04868 0.77579519E-02 0.11800000 - 1 461.01604 0.000 9. -2 - 2 -81.332909 0.000 9. 2 - 5 7.8582651 8.1746806 -31.775472 0.2922E-05 9. -5 - 6 19.306567 72.564751 214.61538 0.9119E-06 9. 5 - 7 5.2883574 -16.662134 -6.4619850 0.5110E-03 -1. 11 - 8 -18.798558 -59.149613 157.93826 0.000 1. -12 - 9 -5.0335530 -1.8165091 -23.159082 0.1057 1. -13 - 10 -8.6210779 -3.1111754 68.526032 0.000 -1. 14 - 16 303 12 12 2 20.870510 260.04004 0.77579519E-02 0.11800000 - 1 810.28513 0.000 9. 21 - 2 -86.670943 0.000 9. 21 - 5 71.917176 13.154302 225.22847 0.3628E-05 9. 5 - 6 -144.02277 22.009854 135.16625 0.2476E-05 9. -5 - 7 33.378101 -31.123169 17.124922 0.1057 -1. 13 - 8 50.525855 -95.873596 205.86798 0.000 1. -14 - 9 -2.5176073 19.595815 -2.3780032 0.5110E-03 1. -11 - 10 -9.2807514 72.236794 142.60458 0.000 -1. 12 - 17 303 12 11 2 20.870510 266.89551 0.77579519E-02 0.11800000 - 1 518.78056 0.000 9. 21 - 2 -141.20026 0.000 9. 21 - 5 -9.1172287 -35.288202 106.73872 0.4677E-05 9. 5 - 6 67.300185 48.411740 141.43242 0.5643E-06 9. -5 - 7 -5.3378986 -57.128288 -22.103575 0.1057 -1. 13 - 8 -66.494312 -92.785858 49.373770 0.000 1. -14 - 9 4.4660314 44.757843 -15.654503 0.5110E-03 1. -11 - 10 9.1832222 92.032765 117.79346 0.000 -1. 12 - 18 303 12 11 3 20.870510 175.00025 0.77579519E-02 0.11800000 - 1 32.237420 0.000 9. 21 - 2 -975.07821 0.000 9. 21 - 5 -69.292561 12.311351 -210.55874 0.8596E-05 9. 5 - 6 0.74063033 59.520535 -64.748578 0.4694E-05 9. -5 - 7 57.330382 -8.4366793 -103.19787 0.5110E-03 -1. 11 - 8 0.75808974 -14.786424 -238.45936 0.000 1. -12 - 9 9.2558101 -42.998563 -330.06108 0.1057 1. -13 - 10 1.2076480 -5.6102196 4.1848362 0.000 -1. 14 - 19 303 12 11 1 20.870510 242.47624 0.77579519E-02 0.11800000 - 1 688.60014 0.000 9. 21 - 2 -195.95909 0.000 9. 21 - 5 -77.169732 22.725514 -17.662673 0.8668E-06 9. 5 - 6 82.329258 -40.986265 191.08270 0.6706E-05 9. -5 - 7 52.783643 86.502660 -58.441901 0.5110E-03 -1. 11 - 8 -20.568000 53.232183 -9.8095116 0.000 1. -12 - 9 -4.0190581 -13.062454 2.4724625 0.5110E-03 1. -11 - 10 -33.356111 -108.41164 384.99997 0.000 -1. 12 - 20 303 12 12 3 20.870510 263.58864 0.77579519E-02 0.11800000 - 1 234.69302 0.000 9. 21 - 2 -361.33277 0.000 9. 21 - 5 55.571784 -8.4349328 -10.779622 0.1732E-05 9. 5 - 6 -6.3971910 12.895137 -74.330124 0.2686E-05 9. -5 - 7 64.316902 106.32243 49.542104 0.5110E-03 -1. 11 - 8 -20.915721 73.293200 24.597502 0.000 1. -12 - 9 -62.589626 -124.45197 -117.81340 0.1057 1. -13 - 10 -29.986148 -59.623862 2.1437942 0.000 -1. 14 - 21 303 12 7 4 20.870510 202.97087 0.77579519E-02 0.11800000 - 1 19.984982 0.000 9. -2 - 2 -2304.5997 0.000 9. 2 - 5 44.163434 -9.0790230 -275.51846 0.9712E-05 9. -5 - 6 43.793483 -18.772833 -788.27967 0.8982E-05 9. 5 - 7 -37.476225 -54.548990 -364.64234 0.1057 -1. 13 - 8 -62.448396 -24.163636 -124.58028 0.000 1. -14 - 9 11.303643 100.65146 -730.63421 0.1057 1. -13 - 10 0.66406105 5.9130242 -0.95974209 0.000 -1. 14 - 22 303 12 11 3 20.870510 179.53848 0.77579519E-02 0.11800000 - 1 531.61880 0.000 9. 21 - 2 -146.20932 0.000 9. 21 - 5 -51.187910 -17.658146 -23.475052 0.4495E-05 9. 5 - 6 25.423589 -16.018729 306.06162 0.1619E-05 9. -5 - 7 103.34523 24.697635 -48.222650 0.5110E-03 -1. 11 - 8 -12.101447 8.7434409 5.1177689 0.000 1. -12 - 9 -14.275269 0.51406780E-01 -8.1548432 0.1057 1. -13 - 10 -51.204197 0.18439183 154.08263 0.000 -1. 14 - 23 303 12 11 1 20.870510 175.58824 0.77579519E-02 0.11800000 - 1 30.177828 0.000 9. 21 - 2 -1380.8486 0.000 9. 21 - 5 -41.799491 47.243209 -531.89635 0.7225E-05 9. 5 - 6 -39.590251 -38.332773 -53.726656 0.3551E-05 9. -5 - 7 33.358444 -13.332419 -76.092951 0.5110E-03 -1. 11 - 8 -4.7648020 -50.534373 -427.17693 0.000 1. -12 - 9 45.382330 47.239237 -264.96689 0.5110E-03 1. -11 - 10 7.4137698 7.7171186 3.1890257 0.000 -1. 12 - 24 303 12 11 1 20.870510 187.96918 0.77579519E-02 0.11800000 - 1 720.79382 0.000 9. 21 - 2 -55.051626 0.000 9. 21 - 5 46.556163 80.131558 102.33631 0.3416E-05 9. 5 - 6 -13.943954 -66.649112 89.250532 0.3190E-05 9. -5 - 7 40.049750 -33.835211 98.332810 0.5110E-03 -1. 11 - 8 -23.458523 -15.242725 3.7850131 0.000 1. -12 - 9 -5.0540055 3.6562449 -2.9709719 0.5110E-03 1. -11 - 10 -44.149430 31.939246 375.00850 0.000 -1. 12 - 25 303 12 12 4 20.870510 182.10822 0.77579519E-02 0.11800000 - 1 114.15266 0.000 9. 21 - 2 -298.40578 0.000 9. 21 - 5 -73.213347 23.804301 -51.247559 0.4801E-06 9. 5 - 6 -1.1139772 -76.725941 -11.606320 0.1501E-05 9. -5 - 7 52.159057 14.565380 -38.283741 0.1057 -1. 13 - 8 -0.15409356 9.9326891 30.942071 0.000 1. -14 - 9 16.865950 21.475799 -125.92733 0.1057 1. -13 - 10 5.4564111 6.9477729 11.869764 0.000 -1. 14 - 26 303 12 7 4 20.870510 208.15659 0.77579519E-02 0.11800000 - 1 444.83520 0.000 9. -2 - 2 -122.92496 0.000 9. 2 - 5 97.753449 -55.842348 52.785636 0.7845E-06 9. -5 - 6 -76.718321 9.8279417 208.01394 0.2392E-05 9. 5 - 7 31.438003 -10.302590 -20.423059 0.1057 -1. 13 - 8 -45.921210 -11.409821 -0.75406441 0.000 1. -14 - 9 -2.0414842 21.102702 -15.899549 0.1057 1. -13 - 10 -4.5104363 46.624115 98.187336 0.000 -1. 14 - 27 303 12 11 3 20.870510 309.88574 0.77579519E-02 0.11800000 - 1 171.98972 0.000 9. 21 - 2 -694.26285 0.000 9. 21 - 5 -185.78431 -43.130227 -365.46203 0.8972E-05 9. 5 - 6 16.609232 -35.389645 16.939177 0.2534E-05 9. -5 - 7 12.092429 0.48435056 6.4289573 0.5110E-03 -1. 11 - 8 -79.196724 1.4629413 -93.747319 0.000 1. -12 - 9 146.87979 47.600281 -93.886221 0.1057 1. -13 - 10 89.399583 28.972299 7.4543025 0.000 -1. 14 - 28 303 12 11 3 20.870510 176.09597 0.77579519E-02 0.11800000 - 1 243.79503 0.000 9. 21 - 2 -260.46049 0.000 9. 21 - 5 -15.851246 20.296239 17.745477 0.3654E-05 9. 5 - 6 -5.0359828 -59.882045 75.477007 0.1067E-05 9. -5 - 7 55.489197 -29.265352 -167.73624 0.5110E-03 -1. 11 - 8 -25.395243 -11.681452 -38.688050 0.000 1. -12 - 9 -2.6747557 23.396489 -12.319187 0.1057 1. -13 - 10 -6.5319701 57.136121 108.85553 0.000 -1. 14 - 29 303 12 11 4 20.870510 203.70550 0.77579519E-02 0.11800000 - 1 68.538735 0.000 9. 21 - 2 -764.92988 0.000 9. 21 - 5 -10.515831 66.233173 -115.08090 0.6312E-05 9. 5 - 6 44.677468 52.795195 -93.148709 0.9920E-06 9. -5 - 7 14.287236 -5.5738270 -29.343633 0.1057 -1. 13 - 8 -105.77183 -33.988145 -394.06203 0.000 1. -14 - 9 37.058253 -51.373588 -81.521379 0.1057 1. -13 - 10 20.264700 -28.092808 16.765506 0.000 -1. 14 - 30 303 12 7 1 20.870510 229.57062 0.77579519E-02 0.11800000 - 1 69.287737 0.000 9. -2 - 2 -791.46493 0.000 9. 2 - 5 -87.691011 34.372901 -39.682723 0.2563E-05 9. -5 - 6 132.84681 -49.194776 -307.01034 0.3364E-05 9. 5 - 7 23.798413 20.331091 -101.68139 0.5110E-03 -1. 11 - 8 -61.551421 26.450045 -134.78306 0.000 1. -12 - 9 -5.8177849 -25.116482 -149.05907 0.5110E-03 1. -11 - 10 -1.5850076 -6.8427788 10.039389 0.000 -1. 12 - 31 303 12 12 2 20.870510 195.72048 0.77579519E-02 0.11800000 - 1 834.19876 0.000 9. 21 - 2 -148.95829 0.000 9. 21 - 5 15.243827 -63.774122 297.48291 0.7795E-05 9. 5 - 6 18.143992 -62.469019 0.11255582E-01 0.1742E-05 9. -5 - 7 -74.346108 26.018210 433.90398 0.1057 -1. 13 - 8 -23.198636 3.8063421 20.079224 0.000 1. -14 - 9 43.325247 65.111586 -68.406123 0.5110E-03 1. -11 - 10 20.831678 31.307003 2.1692190 0.000 -1. 12 - 32 303 12 11 4 20.870510 197.18578 0.77579519E-02 0.11800000 - 1 529.68479 0.000 9. 21 - 2 -73.406648 0.000 9. 21 - 5 54.629175 -31.939255 29.388705 0.1657E-05 9. 5 - 6 42.589315 69.193332 43.984782 0.1610E-05 9. -5 - 7 2.1340135 -41.569036 179.15720 0.1057 -1. 13 - 8 -39.892521 -17.140051 18.994966 0.000 1. -14 - 9 -10.511523 3.7928843 -5.4361501 0.1057 1. -13 - 10 -48.948460 17.662126 190.18864 0.000 -1. 14 - 33 303 12 11 4 20.870510 307.85526 0.77579519E-02 0.11800000 - 1 1550.4834 0.000 9. 21 - 2 -193.90110 0.000 9. 21 - 5 -121.78879 30.747692 -38.950129 0.1086E-04 9. 5 - 6 170.42737 -9.7225958 717.23652 0.1394E-04 9. -5 - 7 -36.953064 -44.158092 35.769188 0.1057 -1. 13 - 8 -83.512048 -62.137040 -40.267269 0.000 1. -14 - 9 4.2361644 5.0290310 1.3231491 0.1057 1. -13 - 10 67.590375 80.241005 681.47088 0.000 -1. 14 - 34 303 12 12 4 20.870510 190.93865 0.77579519E-02 0.11800000 - 1 193.18201 0.000 9. 21 - 2 -198.50690 0.000 9. 21 - 5 -63.570403 74.989859 -9.7336813 0.2041E-05 9. 5 - 6 28.759066 45.151728 -45.359256 0.2048E-05 9. -5 - 7 37.448057 -12.450917 10.276600 0.1057 -1. 13 - 8 -35.494051 -14.784381 40.277296 0.000 1. -14 - 9 16.491606 -46.631115 -39.866772 0.1057 1. -13 - 10 16.365724 -46.275175 39.080924 0.000 -1. 14 - 35 303 12 12 4 20.870510 245.22372 0.77579519E-02 0.11800000 - 1 438.39105 0.000 9. 21 - 2 -381.55674 0.000 9. 21 - 5 -97.253240 -75.061999 246.83814 0.6184E-05 9. 5 - 6 -14.690410 71.910668 -30.178474 0.1664E-05 9. -5 - 7 23.068489 -56.174706 118.60208 0.1057 -1. 13 - 8 -7.4613796 -20.710959 -8.9169709 0.000 1. -14 - 9 81.603492 67.796688 -268.49117 0.1057 1. -13 - 10 14.733049 12.240308 -1.0192920 0.000 -1. 14 - 36 303 12 11 3 20.870510 185.81175 0.77579519E-02 0.11800000 - 1 67.759131 0.000 9. 21 - 2 -528.87064 0.000 9. 21 - 5 83.901035 9.7211253 -70.881378 0.3941E-05 9. 5 - 6 19.389769 0.84372473E-01 -128.42813 0.1626E-05 9. -5 - 7 30.672849 -4.7584072 -106.39704 0.5110E-03 -1. 11 - 8 -50.188328 -5.0882401 -110.30954 0.000 1. -12 - 9 -51.127880 0.25113433E-01 -67.558560 0.1057 1. -13 - 10 -32.647444 0.16036053E-01 22.463145 0.000 -1. 14 - 37 303 12 12 4 20.870510 251.64695 0.77579519E-02 0.11800000 - 1 123.31493 0.000 9. 21 - 2 -1082.9706 0.000 9. 21 - 5 -111.67652 -41.055284 -75.539878 0.7392E-05 9. 5 - 6 90.001999 -18.988661 -638.26411 0.5927E-05 9. -5 - 7 -2.2508531 16.238353 -16.656710 0.1057 -1. 13 - 8 -67.263197 35.572078 49.724821 0.000 1. -14 - 9 77.924269 7.0358660 -281.91475 0.1057 1. -13 - 10 13.264303 1.1976482 2.9949032 0.000 -1. 14 - 38 303 12 11 4 20.870510 184.39037 0.77579519E-02 0.11800000 - 1 117.16497 0.000 9. 21 - 2 -488.52076 0.000 9. 21 - 5 42.633905 65.364969 -153.73603 0.6130E-05 9. 5 - 6 11.223282 58.544427 -9.2672473 0.1790E-05 9. -5 - 7 42.964521 -49.714614 -196.51742 0.1057 -1. 13 - 8 -25.443383 -16.480046 -28.387268 0.000 1. -14 - 9 -32.824792 -26.541310 -33.399392 0.1057 1. -13 - 10 -38.553533 -31.173427 49.951564 0.000 -1. 14 - 39 303 12 8 4 20.870510 202.49200 0.77579519E-02 0.11800000 - 1 708.47688 0.000 9. -3 - 2 -58.500425 0.000 9. 3 - 5 -32.860870 -70.478653 118.24998 0.1472E-05 9. -5 - 6 112.56372 -15.155571 267.51752 0.1369E-05 9. 5 - 7 17.073151 19.662667 39.272958 0.1057 -1. 13 - 8 -87.139068 45.468530 127.80969 0.000 1. -14 - 9 -2.5268817 5.3760598 -13.412412 0.1057 1. -13 - 10 -7.1100508 15.126968 110.53872 0.000 -1. 14 - 40 303 12 11 3 20.870510 211.85850 0.77579519E-02 0.11800000 - 1 680.84345 0.000 9. 21 - 2 -105.63847 0.000 9. 21 - 5 -33.172930 -9.3643904 163.43162 0.4889E-05 9. 5 - 6 -15.776429 52.591334 70.127601 0.2673E-06 9. -5 - 7 143.67266 -26.089897 271.89546 0.5110E-03 -1. 11 - 8 1.0154051 -10.019977 93.388759 0.000 1. -12 - 9 -53.287051 -3.9612784 -53.672817 0.1057 1. -13 - 10 -42.451651 -3.1557912 30.034357 0.000 -1. 14 - 41 303 12 12 3 20.870510 209.94312 0.77579519E-02 0.11800000 - 1 762.32548 0.000 9. 21 - 2 -86.468356 0.000 9. 21 - 5 63.779522 -15.639592 132.16171 0.7469E-05 9. 5 - 6 16.110605 23.792098 -13.737841 0.1895E-05 9. -5 - 7 47.087400 78.567799 374.15003 0.5110E-03 -1. 11 - 8 -32.741175 24.203829 75.908579 0.000 1. -12 - 9 -28.962633 -34.091461 -7.3158435 0.1057 1. -13 - 10 -65.273720 -76.832672 114.69049 0.000 -1. 14 - 42 303 12 12 4 20.870510 306.37440 0.77579519E-02 0.11800000 - 1 537.44883 0.000 9. 21 - 2 -180.92403 0.000 9. 21 - 5 7.7566367 -25.923636 75.259181 0.5332E-05 9. 5 - 6 -1.6784649 -43.468331 27.817598 0.4361E-05 9. -5 - 7 237.29794 50.050087 177.46729 0.1057 -1. 13 - 8 4.8817160 7.7581526 -7.5748714 0.000 1. -14 - 9 -94.923117 4.4291189 -8.4344997 0.1057 1. -13 - 10 -153.33471 7.1546079 91.990102 0.000 -1. 14 - 43 303 12 11 2 20.870510 177.12684 0.77579519E-02 0.11800000 - 1 102.44818 0.000 9. 21 - 2 -608.65868 0.000 9. 21 - 5 -61.884381 -11.650843 -256.82299 0.1883E-05 9. 5 - 6 -43.805836 35.561998 16.836993 0.1330E-05 9. -5 - 7 67.199948 34.468394 -239.68757 0.1057 -1. 13 - 8 -15.143018 7.1298592 -7.2177142 0.000 1. -14 - 9 29.426059 -35.941928 -50.739014 0.5110E-03 1. -11 - 10 24.207227 -29.567480 31.419801 0.000 -1. 12 - 44 303 12 11 2 20.870510 206.23268 0.77579519E-02 0.11800000 - 1 481.39909 0.000 9. 21 - 2 -139.54311 0.000 9. 21 - 5 -64.219658 -28.448828 29.324805 0.2474E-05 9. 5 - 6 -14.888806 24.077355 143.95280 0.4689E-05 9. -5 - 7 23.439640 33.849978 2.5166260 0.1057 -1. 13 - 8 -52.102982 53.963618 -48.962009 0.000 1. -14 - 9 20.659773 -15.995792 0.50297100 0.5110E-03 1. -11 - 10 87.112032 -67.446332 214.52078 0.000 -1. 12 - 45 303 12 11 1 20.870510 175.19337 0.77579519E-02 0.11800000 - 1 147.29992 0.000 9. 21 - 2 -215.18080 0.000 9. 21 - 5 26.187722 65.315335 -43.299119 0.1363E-05 9. 5 - 6 -48.997492 15.719619 37.014858 0.7059E-06 9. -5 - 7 12.914145 -24.283312 -33.624998 0.5110E-03 -1. 11 - 8 -52.527326 -29.543714 10.736695 0.000 1. -12 - 9 37.516738 -16.352202 -63.161334 0.5110E-03 1. -11 - 10 24.906213 -10.855726 24.453020 0.000 -1. 12 - 46 303 12 12 3 20.870510 179.81358 0.77579519E-02 0.11800000 - 1 69.997403 0.000 9. 21 - 2 -474.65594 0.000 9. 21 - 5 22.996913 -34.281735 -123.91880 0.3001E-05 9. 5 - 6 5.7316640 -76.047482 -88.048903 0.1845E-05 9. -5 - 7 38.923042 29.824563 6.3077589 0.5110E-03 -1. 11 - 8 -28.218747 33.034447 -40.102926 0.000 1. -12 - 9 -31.293733 37.672123 -166.90582 0.1057 1. -13 - 10 -8.1391393 9.7980851 8.0101536 0.000 -1. 14 - 47 303 12 11 3 20.870510 178.21541 0.77579519E-02 0.11800000 - 1 28.100750 0.000 9. 21 - 2 -1154.4542 0.000 9. 21 - 5 31.591889 36.327654 -270.14908 0.5952E-05 9. 5 - 6 -65.302544 34.474759 -211.54603 0.8968E-05 9. -5 - 7 16.293717 -47.750848 -158.58852 0.5110E-03 -1. 11 - 8 -41.584623 -25.190182 -48.815572 0.000 1. -12 - 9 53.806343 1.9503079 -439.72702 0.1057 1. -13 - 10 5.1952184 0.18831005 2.4727444 0.000 -1. 14 - 48 303 12 2 4 20.870510 189.78040 0.77579519E-02 0.11800000 - 1 1738.6029 0.000 9. 2 - 2 -20.960151 0.000 9. -2 - 5 -34.798067 46.435233 636.38197 0.1174E-04 9. 5 - 6 106.92418 6.6385018 530.12707 0.3203E-05 9. -5 - 7 22.537433 -10.835925 45.959977 0.1057 -1. 13 - 8 -62.786220 -37.618605 271.46533 0.000 1. -14 - 9 -4.1759400 -0.60511737 -4.6147616 0.1057 1. -13 - 10 -27.701388 -4.0140880 238.32315 0.000 -1. 14 - 49 303 12 11 4 20.870510 223.67283 0.77579519E-02 0.11800000 - 1 167.17173 0.000 9. 21 - 2 -362.05481 0.000 9. 21 - 5 -56.812179 36.959512 -0.23911754 0.4265E-05 9. 5 - 6 101.82521 -38.088948 1.0595997 0.1837E-05 9. -5 - 7 9.9212582 58.430205 -183.79824 0.1057 -1. 13 - 8 -30.909791 21.212568 -23.596343 0.000 1. -14 - 9 -11.293697 -36.908395 -34.564451 0.1057 1. -13 - 10 -12.730806 -41.604942 46.255473 0.000 -1. 14 - 50 303 12 11 1 20.870510 198.69780 0.77579519E-02 0.11800000 - 1 849.25231 0.000 9. 21 - 2 -51.500104 0.000 9. 21 - 5 5.9418220 43.207131 144.91753 0.6272E-05 9. 5 - 6 -12.985123 -60.601961 159.86045 0.3779E-05 9. -5 - 7 103.94708 -40.405277 95.844495 0.5110E-03 -1. 11 - 8 -15.241280 -14.724668 17.625239 0.000 1. -12 - 9 -8.9089439 7.9120664 0.36621319 0.5110E-03 1. -11 - 10 -72.753559 64.612708 379.13827 0.000 -1. 12 - 51 303 12 11 1 20.870510 248.53012 0.77579519E-02 0.11800000 - 1 751.44791 0.000 9. 21 - 2 -104.19287 0.000 9. 21 - 5 69.856202 -69.862349 130.35372 0.3653E-05 9. 5 - 6 -43.728753 105.10091 300.21355 0.6676E-05 9. -5 - 7 92.184770 -17.426793 -17.119543 0.5110E-03 -1. 11 - 8 -12.522281 -7.7418550 13.827962 0.000 1. -12 - 9 -17.640883 -1.6791964 -0.62400141 0.5110E-03 1. -11 - 10 -88.149055 -8.3907121 220.60336 0.000 -1. 12 - 52 303 12 11 2 20.870510 238.90749 0.77579519E-02 0.11800000 - 1 86.103168 0.000 9. 21 - 2 -685.49329 0.000 9. 21 - 5 18.000059 -12.323508 11.570856 0.4508E-05 9. 5 - 6 -27.792793 23.219973 -153.48318 0.2200E-05 9. -5 - 7 44.172768 -124.32570 -367.95723 0.1057 -1. 13 - 8 -9.9131349 -18.157843 -13.367074 0.000 1. -14 - 9 -15.901333 85.520024 -89.651296 0.5110E-03 1. -11 - 10 -8.5655670 46.067051 13.497798 0.000 -1. 12 - 53 303 12 12 2 20.870510 343.15535 0.77579519E-02 0.11800000 - 1 930.86909 0.000 9. 21 - 2 -180.06805 0.000 9. 21 - 5 80.502328 -34.257628 159.59339 0.1058E-04 9. 5 - 6 -5.1882743 6.2526025 50.508581 0.3653E-05 9. -5 - 7 77.028833 -90.755708 192.61272 0.1057 -1. 13 - 8 -10.480141 -131.40643 326.15856 0.000 1. -14 - 9 -66.843343 117.87457 -30.122770 0.5110E-03 1. -11 - 10 -75.019404 132.29260 52.050565 0.000 -1. 12 - 54 303 12 11 4 20.870510 208.33591 0.77579519E-02 0.11800000 - 1 117.18094 0.000 9. 21 - 2 -559.27322 0.000 9. 21 - 5 -10.214803 107.75720 -318.08142 0.2181E-05 9. 5 - 6 17.431369 -65.413435 -72.958511 0.2123E-05 9. -5 - 7 54.941411 2.3885927 -45.353056 0.1057 -1. 13 - 8 -24.306639 2.1323777 -54.165367 0.000 1. -14 - 9 -14.068103 -17.418087 -21.279100 0.1057 1. -13 - 10 -23.783235 -29.446646 69.745174 0.000 -1. 14 - 55 303 12 12 4 20.870510 305.39284 0.77579519E-02 0.11800000 - 1 146.24565 0.000 9. 21 - 2 -657.95140 0.000 9. 21 - 5 -59.691720 195.20360 -235.43527 0.4684E-05 9. 5 - 6 -42.462765 -148.74011 -121.76063 0.3263E-05 9. -5 - 7 53.193683 35.745366 -81.240972 0.1057 -1. 13 - 8 -24.543059 17.889825 -9.6742811 0.000 1. -14 - 9 46.511417 -63.339960 -79.790178 0.1057 1. -13 - 10 26.992444 -36.758723 16.195587 0.000 -1. 14 - 56 303 12 12 1 20.870510 275.57452 0.77579519E-02 0.11800000 - 1 3651.3366 0.000 9. 21 - 2 -34.091593 0.000 9. 21 - 5 104.23525 -60.025153 899.94344 0.1310E-04 9. 5 - 6 -107.17819 78.755929 213.90267 0.6205E-05 9. -5 - 7 50.988075 -79.032538 1450.5312 0.5110E-03 -1. 11 - 8 -30.881867 -34.435910 608.82069 0.000 1. -12 - 9 -1.5508166 8.5601874 -0.14921089 0.5110E-03 1. -11 - 10 -15.612447 86.177484 444.19628 0.000 -1. 12 - 57 303 12 11 4 20.870510 195.87752 0.77579519E-02 0.11800000 - 1 70.511012 0.000 9. 21 - 2 -547.83050 0.000 9. 21 - 5 8.7964300 108.61431 -109.85791 0.2923E-06 9. 5 - 6 59.291450 -36.543440 -38.750942 0.2882E-05 9. -5 - 7 29.755621 -13.568901 -131.50719 0.1057 -1. 13 - 8 -30.539066 -6.0324592 -22.663365 0.000 1. -14 - 9 -53.956236 -42.063459 -179.62473 0.1057 1. -13 - 10 -13.348200 -10.406053 5.0846508 0.000 -1. 14 - 58 303 12 11 2 20.870510 220.74227 0.77579519E-02 0.11800000 - 1 1020.4190 0.000 9. 21 - 2 -56.289859 0.000 9. 21 - 5 22.289305 20.809614 -1.1193585 0.3614E-05 9. 5 - 6 -32.002159 2.6087472 401.00626 0.7333E-05 9. -5 - 7 68.832369 -75.512866 151.71706 0.1057 -1. 13 - 8 -19.249555 -60.105536 121.80224 0.000 1. -14 - 9 -5.5270031 15.553815 1.0820424 0.5110E-03 1. -11 - 10 -34.342957 96.646226 289.64094 0.000 -1. 12 - 59 303 12 11 3 20.870510 222.79971 0.77579519E-02 0.11800000 - 1 441.73046 0.000 9. 21 - 2 -153.99714 0.000 9. 21 - 5 83.150086 72.371031 -58.677617 0.5304E-05 9. 5 - 6 19.955005 -70.389864 132.11830 0.7386E-06 9. -5 - 7 45.574127 12.399084 9.6784084 0.5110E-03 -1. 11 - 8 -29.885089 12.646768 38.012513 0.000 1. -12 - 9 -26.673151 -6.0684460 -2.9741042 0.1057 1. -13 - 10 -92.120977 -20.958573 169.57583 0.000 -1. 14 - 60 303 12 7 4 20.870510 224.28096 0.77579519E-02 0.11800000 - 1 71.993744 0.000 9. -2 - 2 -705.64883 0.000 9. 2 - 5 19.815245 102.93901 -89.495178 0.4552E-05 9. -5 - 6 42.936147 -14.559421 -6.0978402 0.2071E-05 9. 5 - 7 15.873116 22.498550 -175.89024 0.1057 -1. 13 - 8 -50.706813 14.904530 -90.029642 0.000 1. -14 - 9 -23.650555 -106.55715 -270.71121 0.1057 1. -13 - 10 -4.2671394 -19.225520 -1.4309800 0.000 -1. 14 - 61 303 12 11 4 20.870510 215.62284 0.77579519E-02 0.11800000 - 1 53.117238 0.000 9. 21 - 2 -979.43149 0.000 9. 21 - 5 -14.707955 13.105782 -351.71640 0.1037E-04 9. 5 - 6 -19.510582 -76.041169 -247.61658 0.2094E-05 9. -5 - 7 67.183269 51.644668 -126.95255 0.1057 -1. 13 - 8 -8.3406134 54.265701 -152.83186 0.000 1. -14 - 9 -15.439912 -26.946344 -69.739838 0.1057 1. -13 - 10 -9.1842064 -16.028639 22.542963 0.000 -1. 14 - 62 303 12 11 3 20.870510 176.17783 0.77579519E-02 0.11800000 - 1 403.34621 0.000 9. 21 - 2 -78.361640 0.000 9. 21 - 5 56.982021 18.986728 21.549654 0.2010E-05 9. 5 - 6 49.372576 9.8560661 148.86327 0.2521E-05 9. -5 - 7 -15.172429 -2.3887647 87.565656 0.5110E-03 -1. 11 - 8 -62.883770 -1.9687098 21.082357 0.000 1. -12 - 9 -10.778750 -9.3263634 -26.153702 0.1057 1. -13 - 10 -17.519648 -15.158957 72.077332 0.000 -1. 14 - 63 303 12 12 3 20.870510 174.60744 0.77579519E-02 0.11800000 - 1 277.39500 0.000 9. 21 - 2 -149.29436 0.000 9. 21 - 5 -51.817764 30.425372 24.726924 0.2488E-05 9. 5 - 6 -51.570979 41.904278 2.7939003 0.5999E-06 9. -5 - 7 65.710500 -32.019590 147.90923 0.5110E-03 -1. 11 - 8 -13.684562 -8.7606100 0.99546271 0.000 1. -12 - 9 31.959447 -19.630996 -71.941120 0.1057 1. -13 - 10 19.403357 -11.918455 23.616242 0.000 -1. 14 - 64 303 12 1 1 20.870510 202.85866 0.77579519E-02 0.11800000 - 1 541.82739 0.000 9. 1 - 2 -93.224376 0.000 9. -1 - 5 15.603356 62.626036 72.168642 0.2942E-05 9. 5 - 6 -100.86339 34.749556 182.23606 0.2193E-05 9. -5 - 7 97.579794 -28.984383 1.0563436 0.5110E-03 -1. 11 - 8 -11.551307 -12.615182 14.392050 0.000 1. -12 - 9 -0.13989046 -10.153505 -6.5475534 0.5110E-03 1. -11 - 10 -0.62856674 -45.622522 185.29748 0.000 -1. 12 - 65 303 12 7 2 20.870510 329.11780 0.77579519E-02 0.11800000 - 1 148.59036 0.000 9. -2 - 2 -830.59729 0.000 9. 2 - 5 193.21833 3.5386396 -283.65039 0.5284E-05 9. -5 - 6 18.536219 -7.0213421 2.4514413 0.2835E-05 9. 5 - 7 87.074025 66.456712 -203.24009 0.1057 -1. 13 - 8 -15.390930 18.125437 -25.365511 0.000 1. -14 - 9 -198.61714 -56.829924 -159.95354 0.5110E-03 1. -11 - 10 -84.820506 -24.269522 -12.248840 0.000 -1. 12 - 66 303 12 3 3 20.870510 250.60182 0.77579519E-02 0.11800000 - 1 932.14624 0.000 9. 3 - 2 -75.005362 0.000 9. -3 - 5 11.898665 76.720071 410.10581 0.2095E-05 9. 5 - 6 67.654360 -104.60849 117.80647 0.2621E-05 9. -5 - 7 29.441765 48.202025 84.626502 0.5110E-03 -1. 11 - 8 -52.441866 54.793072 94.478514 0.000 1. -12 - 9 -13.001359 -17.266817 -6.7354933 0.1057 1. -13 - 10 -43.551565 -57.839866 156.85908 0.000 -1. 14 - 67 303 12 12 2 20.870510 227.40809 0.77579519E-02 0.11800000 - 1 317.69552 0.000 9. 21 - 2 -212.40599 0.000 9. 21 - 5 7.5907784 55.453745 -9.8626194 0.4464E-05 9. 5 - 6 -25.849836 -39.222046 -75.651221 0.4216E-06 9. -5 - 7 12.484189 13.121105 8.8598831 0.1057 -1. 13 - 8 -97.367954 55.359583 181.76273 0.000 1. -14 - 9 51.529081 -42.321427 -34.738924 0.5110E-03 1. -11 - 10 51.613742 -42.390960 34.919678 0.000 -1. 12 - 68 303 12 12 3 20.870510 177.20775 0.77579519E-02 0.11800000 - 1 215.54696 0.000 9. 21 - 2 -163.94807 0.000 9. 21 - 5 47.762335 27.885391 74.632662 0.2434E-05 9. 5 - 6 35.490615 -43.102720 -4.8122169 0.1049E-05 9. -5 - 7 35.940363 -20.615233 10.179418 0.5110E-03 -1. 11 - 8 -57.310977 -25.313807 4.3123616 0.000 1. -12 - 9 -35.788250 35.362620 -60.783793 0.1057 1. -13 - 10 -26.094087 25.783749 28.070461 0.000 -1. 14 - 69 303 12 1 4 20.870510 216.95396 0.77579519E-02 0.11800000 - 1 195.26651 0.000 9. 1 - 2 -361.88661 0.000 9. -1 - 5 -21.753466 31.434461 -132.79673 0.4997E-05 9. 5 - 6 32.330333 -8.6194417 46.213773 0.3990E-06 9. -5 - 7 96.676470 31.205895 -38.190888 0.1057 -1. 13 - 8 19.794356 25.206971 -73.297014 0.000 1. -14 - 9 -55.687683 -34.727253 -26.999603 0.1057 1. -13 - 10 -71.360011 -44.500633 58.450367 0.000 -1. 14 - 70 303 12 12 2 20.870510 185.82746 0.77579519E-02 0.11800000 - 1 1575.5061 0.000 9. 21 - 2 -56.679750 0.000 9. 21 - 5 -42.394514 -49.324794 920.67230 0.1873E-04 9. 5 - 6 10.795728 -22.426471 95.845488 0.1754E-05 9. -5 - 7 73.121801 -11.729728 439.25218 0.1057 -1. 13 - 8 -17.426784 -1.9887152 38.600531 0.000 1. -14 - 9 -10.595725 37.583202 -29.509028 0.5110E-03 1. -11 - 10 -13.500506 47.886507 53.964883 0.000 -1. 12 - 71 303 12 7 3 20.870510 212.29749 0.77579519E-02 0.11800000 - 1 30.151891 0.000 9. -2 - 2 -1584.0705 0.000 9. 2 - 5 8.1390459 93.654477 -222.27196 0.7764E-05 9. -5 - 6 -11.787774 -47.781828 -581.24628 0.6036E-05 9. 5 - 7 -15.380956 -0.46881526 -231.22033 0.5110E-03 -1. 11 - 8 -70.648701 -0.32670741 -131.83566 0.000 1. -12 - 9 80.336793 -40.381546 -387.50608 0.1057 1. -13 - 10 9.3415924 -4.6955812 0.16168232 0.000 -1. 14 - 72 303 12 11 3 20.870510 231.10045 0.77579519E-02 0.11800000 - 1 389.38110 0.000 9. 21 - 2 -141.23921 0.000 9. 21 - 5 -61.617349 -103.91843 42.528578 0.3017E-05 9. 5 - 6 59.837675 119.16150 55.238543 0.1302E-05 9. -5 - 7 17.711338 0.65506034 5.0276712 0.5110E-03 -1. 11 - 8 -69.126896 2.0186706 121.60436 0.000 1. -12 - 9 23.070541 -7.7704412 -29.276409 0.1057 1. -13 - 10 30.124691 -10.146365 53.019141 0.000 -1. 14 - 73 303 12 7 3 20.870510 183.64238 0.77579519E-02 0.11800000 - 1 121.68504 0.000 9. -2 - 2 -303.61449 0.000 9. 2 - 5 -9.0568168 12.420070 28.313354 0.2259E-05 9. -5 - 6 -31.815552 33.451660 -7.4268391 0.4495E-06 9. 5 - 7 -7.0978790 2.5497502 -163.58073 0.5110E-03 -1. 11 - 8 -39.403228 1.0723503 -18.484105 0.000 1. -12 - 9 47.578816 -26.951633 -58.245859 0.1057 1. -13 - 10 39.794660 -22.542198 37.494732 0.000 -1. 14 - 74 303 12 2 2 20.870510 247.05183 0.77579519E-02 0.11800000 - 1 579.47331 0.000 9. 2 - 2 -136.25579 0.000 9. -2 - 5 50.753187 -71.680905 59.778716 0.2442E-05 9. 5 - 6 -7.8339834 -13.178196 173.67406 0.2504E-05 9. -5 - 7 128.13601 24.650887 1.9121130 0.1057 -1. 13 - 8 -8.2465654 7.8482654 -10.579375 0.000 1. -14 - 9 -33.403010 10.742549 4.1462653 0.5110E-03 1. -11 - 10 -129.40564 41.617399 214.28575 0.000 -1. 12 - 75 303 12 7 2 20.870510 186.89940 0.77579519E-02 0.11800000 - 1 14.551906 0.000 9. -2 - 2 -3464.7934 0.000 9. 2 - 5 21.887937 -13.780529 -422.96256 0.5683E-05 9. -5 - 6 61.964342 -16.759731 -2075.6384 0.1437E-04 9. 5 - 7 -36.580223 35.453042 -286.96104 0.1057 -1. 13 - 8 -43.982712 11.616221 -50.999557 0.000 1. -14 - 9 -3.0870828 -15.512640 -616.22417 0.5110E-03 1. -11 - 10 -0.20226065 -1.0163629 2.5441976 0.000 -1. 12 - 76 303 12 6 2 20.870510 683.57227 0.77579519E-02 0.11800000 - 1 1089.7899 0.000 9. -1 - 2 -1138.4375 0.000 9. 1 - 5 334.64188 -91.392595 458.84637 0.2065E-04 9. -5 - 6 -132.91566 126.13602 -303.87968 0.1063E-04 9. 5 - 7 188.34403 -114.90287 216.17662 0.1057 -1. 13 - 8 71.518295 -82.590846 180.28692 0.000 1. -14 - 9 -392.16314 138.27177 -549.71368 0.5110E-03 1. -11 - 10 -69.425411 24.478523 -50.364145 0.000 -1. 12 - 77 303 12 6 3 20.870510 209.49898 0.77579519E-02 0.11800000 - 1 343.29093 0.000 9. -1 - 2 -293.44079 0.000 9. 1 - 5 -57.729683 -25.836105 -3.8071665 0.4382E-05 9. -5 - 6 88.702252 -31.591562 220.76958 0.1823E-05 9. 5 - 7 -3.1919633 27.129922 -154.34090 0.5110E-03 -1. 11 - 8 -53.940748 16.481553 -56.084378 0.000 1. -12 - 9 9.9109598 5.2343646 -24.434674 0.1057 1. -13 - 10 16.249183 8.5818274 67.747682 0.000 -1. 14 - 78 303 12 12 4 20.870510 185.20971 0.77579519E-02 0.11800000 - 1 36.077436 0.000 9. 21 - 2 -950.85148 0.000 9. 21 - 5 -39.707541 52.031865 -82.945500 0.6385E-05 9. 5 - 6 44.770781 10.065806 -238.83260 0.1715E-05 9. -5 - 7 34.684783 1.4013729 -44.038461 0.1057 -1. 13 - 8 26.270838 5.4791206 -333.82114 0.000 1. -14 - 9 -55.043283 -57.510605 -216.97298 0.1057 1. -13 - 10 -10.975577 -11.467559 1.8366393 0.000 -1. 14 - 79 303 12 11 4 20.870510 184.27055 0.77579519E-02 0.11800000 - 1 28.858913 0.000 9. 21 - 2 -1176.7023 0.000 9. 21 - 5 80.383210 -24.598105 -174.76062 0.5734E-05 9. 5 - 6 -6.2644297 36.118092 -411.78670 0.8639E-05 9. -5 - 7 26.581474 4.9823714 -255.23310 0.1057 -1. 13 - 8 -49.433803 3.3263597 -149.31503 0.000 1. -14 - 9 -40.856585 -15.802414 -164.76831 0.1057 1. -13 - 10 -10.409867 -4.0263038 8.0203646 0.000 -1. 14 - 80 303 12 12 1 20.870510 175.31736 0.77579519E-02 0.11800000 - 1 286.68731 0.000 9. 21 - 2 -155.06577 0.000 9. 21 - 5 -27.665602 17.820693 161.56879 0.3832E-05 9. 5 - 6 53.472683 -10.070628 25.758413 0.1569E-05 9. -5 - 7 44.762455 -18.441399 34.231216 0.5110E-03 -1. 11 - 8 -29.447146 -13.632591 -7.2871505 0.000 1. -12 - 9 -28.914774 17.103111 -97.772075 0.5110E-03 1. -11 - 10 -12.207616 7.2208139 15.122346 0.000 -1. 12 - 81 303 12 11 2 20.870510 207.57785 0.77579519E-02 0.11800000 - 1 152.70367 0.000 9. 21 - 2 -349.36289 0.000 9. 21 - 5 0.50606533 -4.6947713 23.182740 0.1794E-05 9. 5 - 6 122.35731 -11.376135 -4.8885491 0.1362E-05 9. -5 - 7 -61.127590 24.373301 -203.39849 0.1057 -1. 13 - 8 -48.322448 9.2918545 -28.204654 0.000 1. -14 - 9 -6.0308043 -7.9105932 -32.658098 0.5110E-03 1. -11 - 10 -7.3825357 -9.6836564 49.307826 0.000 -1. 12 - 82 303 12 11 4 20.870510 181.88063 0.77579519E-02 0.11800000 - 1 844.55320 0.000 9. 21 - 2 -52.178567 0.000 9. 21 - 5 36.866940 -0.77679156E-01 148.49639 0.2707E-05 9. 5 - 6 -32.038696 62.339927 470.10658 0.3721E-05 9. -5 - 7 30.316549 -22.779593 24.916878 0.1057 -1. 13 - 8 -45.990616 -24.586735 -1.1046610 0.000 1. -14 - 9 2.1795677 -2.9934722 -9.7867990 0.1057 1. -13 - 10 8.6662549 -11.902449 159.74625 0.000 -1. 14 - 83 303 12 12 3 20.870510 199.66619 0.77579519E-02 0.11800000 - 1 279.01167 0.000 9. 21 - 2 -244.14143 0.000 9. 21 - 5 -3.7381427 -56.589124 23.063379 0.4637E-05 9. 5 - 6 -100.48937 -20.932957 -43.231989 0.8780E-06 9. -5 - 7 101.46329 25.354457 92.918929 0.5110E-03 -1. 11 - 8 -1.5640347 15.770629 69.909915 0.000 1. -12 - 9 3.2309714 27.169693 -120.30742 0.1057 1. -13 - 10 1.0972943 9.2273025 12.517427 0.000 -1. 14 - 84 303 12 11 3 20.870510 244.88912 0.77579519E-02 0.11800000 - 1 82.356484 0.000 9. 21 - 2 -739.40203 0.000 9. 21 - 5 -51.280892 -65.808454 -211.68072 0.2861E-05 9. 5 - 6 3.0956810 55.148732 -256.63056 0.2173E-05 9. -5 - 7 22.085711 -61.519279 -74.588541 0.5110E-03 -1. 11 - 8 -21.781273 -36.963447 8.3557977 0.000 1. -12 - 9 34.837213 79.410136 -129.27998 0.1057 1. -13 - 10 13.043560 29.732311 6.7784492 0.000 -1. 14 - 85 303 12 12 4 20.870510 299.34718 0.77579519E-02 0.11800000 - 1 165.88662 0.000 9. 21 - 2 -826.87733 0.000 9. 21 - 5 -151.58287 -2.3374965 -302.70613 0.7531E-05 9. 5 - 6 123.64547 3.8509808 -62.636707 0.1907E-05 9. -5 - 7 16.482330 -32.088852 -82.303139 0.1057 -1. 13 - 8 -82.146542 -75.263891 -237.77128 0.000 1. -14 - 9 42.055056 47.553409 -27.907005 0.1057 1. -13 - 10 51.546559 58.285849 52.333550 0.000 -1. 14 - 86 303 12 6 2 20.870510 287.10038 0.77579519E-02 0.11800000 - 1 413.12457 0.000 9. -1 - 2 -261.49358 0.000 9. 1 - 5 -15.513199 -10.963790 73.937977 0.3104E-05 9. -5 - 6 -6.0973465 -9.2223337 33.721898 0.1898E-05 9. 5 - 7 19.968739 102.68667 72.488487 0.1057 -1. 13 - 8 -59.329674 129.71552 93.599434 0.000 1. -14 - 9 41.257350 -143.59948 -122.98331 0.5110E-03 1. -11 - 10 19.714131 -68.616595 0.86650328 0.000 -1. 12 - 87 303 12 11 1 20.870510 184.29221 0.77579519E-02 0.11800000 - 1 85.446811 0.000 9. 21 - 2 -416.45534 0.000 9. 21 - 5 30.809462 52.790760 -109.64786 0.2390E-05 9. 5 - 6 45.619050 7.7911627 -5.6252175 0.6656E-06 9. -5 - 7 14.169505 2.3658417 23.751274 0.5110E-03 -1. 11 - 8 -56.518994 3.5797166 -26.044033 0.000 1. -12 - 9 -28.441809 -55.522775 -217.79121 0.5110E-03 1. -11 - 10 -5.6372137 -11.004706 4.3485191 0.000 -1. 12 - 88 303 12 11 4 20.870510 176.87037 0.77579519E-02 0.11800000 - 1 127.11239 0.000 9. 21 - 2 -670.20746 0.000 9. 21 - 5 -54.327224 -35.333642 -125.90659 0.4313E-05 9. 5 - 6 -56.747345 -6.4866410 -17.602293 0.4532E-06 9. -5 - 7 32.804420 0.97471117 -49.993758 0.1057 -1. 13 - 8 19.576251 4.3781131 -412.77389 0.000 1. -14 - 9 20.188813 12.543633 -18.057689 0.1057 1. -13 - 10 38.505084 23.923826 81.239138 0.000 -1. 14 - 89 303 12 12 4 20.870510 231.75884 0.77579519E-02 0.11800000 - 1 171.33878 0.000 9. 21 - 2 -544.64894 0.000 9. 21 - 5 -75.809567 -69.503946 -352.30687 0.2882E-05 9. 5 - 6 37.069532 -12.497743 -29.916121 0.1885E-05 9. -5 - 7 31.755294 -30.022743 -23.786467 0.1057 -1. 13 - 8 -28.529945 -34.872708 -43.787857 0.000 1. -14 - 9 12.665151 52.386058 -12.512049 0.1057 1. -13 - 10 22.849535 94.511082 88.999213 0.000 -1. 14 - 90 303 12 12 4 20.870510 249.08622 0.77579519E-02 0.11800000 - 1 148.78793 0.000 9. 21 - 2 -654.04092 0.000 9. 21 - 5 16.463270 86.881970 62.567406 0.5521E-05 9. 5 - 6 -5.4766718 -149.22546 -391.34123 0.4173E-05 9. -5 - 7 33.539054 56.212359 -74.235350 0.1057 -1. 13 - 8 -25.776052 33.191074 0.70213178 0.000 1. -14 - 9 -13.865214 -20.010659 -116.27082 0.1057 1. -13 - 10 -4.8843859 -7.0492802 13.324875 0.000 -1. 14 - 91 303 12 11 2 20.870510 181.85446 0.77579519E-02 0.11800000 - 1 213.40209 0.000 9. 21 - 2 -251.68672 0.000 9. 21 - 5 -24.425627 64.279928 -30.632361 0.1422E-05 9. 5 - 6 43.903471 17.594960 6.0789219 0.1156E-05 9. -5 - 7 74.865881 -15.885491 -69.312989 0.1057 -1. 13 - 8 -13.728576 -11.750094 -63.350468 0.000 1. -14 - 9 -21.330770 -14.351721 -8.3436605 0.5110E-03 1. -11 - 10 -59.284378 -39.887582 127.27593 0.000 -1. 12 - 92 303 12 6 1 20.870510 419.34402 0.77579519E-02 0.11800000 - 1 507.26819 0.000 9. -1 - 2 -381.15545 0.000 9. 1 - 5 -6.6662154 111.15783 18.374210 0.4066E-05 9. -5 - 6 11.190830 -130.93070 3.3901948 0.1865E-05 9. 5 - 7 -4.6003417 38.718976 12.952997 0.5110E-03 -1. 11 - 8 -200.93434 167.04542 165.36478 0.000 1. -12 - 9 120.58514 -111.57558 -82.594920 0.5110E-03 1. -11 - 10 80.424926 -74.415948 8.6254749 0.000 -1. 12 - 93 303 12 12 4 20.870510 201.93125 0.77579519E-02 0.11800000 - 1 363.76590 0.000 9. 21 - 2 -190.02893 0.000 9. 21 - 5 -97.143146 -44.971867 159.23421 0.4501E-05 9. 5 - 6 109.82027 -11.476188 -18.144760 0.2397E-05 9. -5 - 7 35.971882 24.508486 75.754700 0.1057 -1. 13 - 8 -40.759270 18.033564 29.205875 0.000 1. -14 - 9 -5.4475063 9.6014710 -90.166885 0.1057 1. -13 - 10 -2.4422269 4.3045330 17.853828 0.000 -1. 14 - 94 303 12 11 4 20.870510 188.62134 0.77579519E-02 0.11800000 - 1 298.85261 0.000 9. 21 - 2 -120.44209 0.000 9. 21 - 5 -51.993812 60.379798 4.9682646 0.1111E-05 9. 5 - 6 -42.075076 -76.715753 99.874206 0.5606E-06 9. -5 - 7 79.895276 7.0707350 35.275373 0.1057 -1. 13 - 8 -18.666020 4.0492860 26.411961 0.000 1. -14 - 9 15.240310 2.4206254 -33.948170 0.1057 1. -13 - 10 17.599321 2.7953082 45.828886 0.000 -1. 14 - 95 303 12 11 1 20.870510 221.64159 0.77579519E-02 0.11800000 - 1 2205.1203 0.000 9. 21 - 2 -31.671068 0.000 9. 21 - 5 40.604865 2.6167093 222.19845 0.1215E-04 9. 5 - 6 13.182239 -1.2758928 9.8022199 0.3231E-05 9. -5 - 7 28.400031 -75.958969 149.67415 0.5110E-03 -1. 11 - 8 -45.230943 -61.488389 105.77118 0.000 1. -12 - 9 -0.90771805 3.3430491 1.7348078 0.5110E-03 1. -11 - 10 -36.048474 132.76349 1684.2684 0.000 -1. 12 - 96 303 12 12 3 20.870510 202.61390 0.77579519E-02 0.11800000 - 1 127.41846 0.000 9. 21 - 2 -329.91555 0.000 9. 21 - 5 39.773680 112.72445 -43.702752 0.7649E-06 9. 5 - 6 -37.568048 -109.63722 -105.14800 0.1207E-05 9. -5 - 7 17.414136 -6.2008809 -42.062955 0.5110E-03 -1. 11 - 8 -34.375686 -5.7688729 19.518926 0.000 1. -12 - 9 8.7452794 5.2643395 -58.506986 0.1057 1. -13 - 10 6.0106384 3.6181853 27.404673 0.000 -1. 14 - 97 303 12 11 3 20.870510 177.98449 0.77579519E-02 0.11800000 - 1 37.612190 0.000 9. 21 - 2 -955.03490 0.000 9. 21 - 5 -18.335838 45.856420 -197.60612 0.8082E-06 9. 5 - 6 43.528917 30.170743 -299.51884 0.5618E-05 9. -5 - 7 70.800416 -32.696764 -78.376414 0.5110E-03 -1. 11 - 8 -16.437615 -13.372824 -12.159625 0.000 1. -12 - 9 -70.300993 -26.472554 -331.37361 0.1057 1. -13 - 10 -9.2548873 -3.4850219 1.6118947 0.000 -1. 14 - 98 303 12 11 4 20.870510 189.28286 0.77579519E-02 0.11800000 - 1 606.81641 0.000 9. 21 - 2 -115.28879 0.000 9. 21 - 5 -26.460074 93.428632 -2.8706875 0.2320E-05 9. 5 - 6 -71.077140 -53.113804 230.47171 0.3912E-05 9. -5 - 7 41.221670 -11.500678 -37.527680 0.1057 -1. 13 - 8 -3.6620683 -8.9600845 33.974655 0.000 1. -14 - 9 7.9498293 -2.6315891 -3.6519686 0.1057 1. -13 - 10 52.027783 -17.222476 271.13159 0.000 -1. 14 - 99 303 12 7 1 20.870510 242.04499 0.77579519E-02 0.11800000 - 1 101.38279 0.000 9. -2 - 2 -1990.4132 0.000 9. 2 - 5 29.987664 -0.64018530 -257.97422 0.7672E-05 9. -5 - 6 12.542702 -22.146622 44.104142 0.9554E-06 9. 5 - 7 -64.622165 37.557163 -889.35849 0.5110E-03 -1. 11 - 8 -119.67202 29.376176 -678.26996 0.000 1. -12 - 9 98.352439 -30.627837 -113.68656 0.5110E-03 1. -11 - 10 43.411380 -13.518695 6.1546868 0.000 -1. 12 - 100 303 12 11 1 20.870510 201.89764 0.77579519E-02 0.11800000 - 1 765.02688 0.000 9. 21 - 2 -53.347406 0.000 9. 21 - 5 37.692136 17.063927 14.249352 0.5432E-05 9. 5 - 6 72.732211 -35.999509 157.49158 0.1706E-05 9. -5 - 7 -9.3987045 62.720525 294.92438 0.5110E-03 -1. 11 - 8 -40.387677 21.388145 60.922713 0.000 1. -12 - 9 -11.697379 -12.572228 -4.5440239 0.5110E-03 1. -11 - 10 -48.940586 -52.600860 188.63548 0.000 -1. 12 diff --git a/Generators/MadCUP_i/share/jobOptions.MadCupHerwig.py b/Generators/MadCUP_i/share/jobOptions.MadCupHerwig.py deleted file mode 100755 index eecf6cf3f556e13ac80189a3a5845d747b7e98ed..0000000000000000000000000000000000000000 --- a/Generators/MadCUP_i/share/jobOptions.MadCupHerwig.py +++ /dev/null @@ -1,53 +0,0 @@ -############################################################### -# -# Job options file -# -#============================================================== -#-------------------------------------------------------------- -# General Application Configuration options -#-------------------------------------------------------------- -import AthenaCommon.AtlasUnixGeneratorJob - -from AthenaCommon.AppMgr import theApp -from AthenaCommon.AppMgr import ServiceMgr - -# make sure we are loading the ParticleProperty service -from PartPropSvc.PartPropSvcConf import PartPropSvc -ServiceMgr += PartPropSvc() - -#-------------------------------------------------------------- -# Private Application Configuration options -#-------------------------------------------------------------- -# Set output level threshold (2=DEBUG, 3=INFO, 4=WARNING, 5=ERROR, 6=FATAL ) -ServiceMgr.MessageSvc.OutputLevel = INFO - -#-------------------------------------------------------------- -# Event related parameters -#-------------------------------------------------------------- -# Number of events to be processed (default is 10) -theApp.EvtMax = 5 -#-------------------------------------------------------------- -# Algorithms Private Options -#-------------------------------------------------------------- -from AthenaServices.AthenaServicesConf import AtRndmGenSvc -ServiceMgr += AtRndmGenSvc() -ServiceMgr.AtRndmGenSvc.Seeds = ["HERWIG 330020611 841000366", "HERWIG_INIT 824021 3247532"] -# AtRndmGenSvc.ReadFromFile = true; - -from AthenaCommon.AlgSequence import AlgSequence -job=AlgSequence() -from Herwig_i.Herwig_iConf import Herwig -job += Herwig() -job.Herwig.HerwigCommand = ["iproc madcup"] - -from TruthExamples.TruthExamplesConf import DumpMC -job += DumpMC() - -#--------------------------------------------------------------- -# Ntuple service output -#--------------------------------------------------------------- -#============================================================== -# -# End of job options file -# -############################################################### diff --git a/Generators/MadCUP_i/share/jobOptions.MadCupPythia.py b/Generators/MadCUP_i/share/jobOptions.MadCupPythia.py deleted file mode 100755 index 5e683e19368448f4c045c8f9d45a9e9f30c43c5f..0000000000000000000000000000000000000000 --- a/Generators/MadCUP_i/share/jobOptions.MadCupPythia.py +++ /dev/null @@ -1,54 +0,0 @@ -############################################################### -# -# Job options file -# -#============================================================== -#-------------------------------------------------------------- -# General Application Configuration options -#-------------------------------------------------------------- -import AthenaCommon.AtlasUnixGeneratorJob - -from AthenaCommon.AppMgr import theApp -from AthenaCommon.AppMgr import ServiceMgr - -# make sure we are loading the ParticleProperty service -from PartPropSvc.PartPropSvcConf import PartPropSvc -ServiceMgr += PartPropSvc() - -#-------------------------------------------------------------- -# Private Application Configuration options -#-------------------------------------------------------------- -# Set output level threshold (2=DEBUG, 3=INFO, 4=WARNING, 5=ERROR, 6=FATAL ) -ServiceMgr.MessageSvc.OutputLevel = INFO - -#-------------------------------------------------------------- -# Event related parameters -#-------------------------------------------------------------- -# Number of events to be processed (default is 10) -theApp.EvtMax = 5 -#-------------------------------------------------------------- -# Algorithms Private Options -#-------------------------------------------------------------- -from AthenaServices.AthenaServicesConf import AtRndmGenSvc -ServiceMgr += AtRndmGenSvc() -ServiceMgr.AtRndmGenSvc.Seeds = ["PYTHIA 4789899 989240512", "PYTHIA_INIT 820021 2347532"] -# AtRndmGenSvc.ReadFromFile = true; - - -from AthenaCommon.AlgSequence import AlgSequence -job=AlgSequence() -from Pythia_i.Pythia_iConf import Pythia -job += Pythia() -job.Pythia.PythiaCommand = ["pyinit user madcup"] - -from TruthExamples.TruthExamplesConf import DumpMC -job += DumpMC() - -#--------------------------------------------------------------- -# Ntuple service output -#--------------------------------------------------------------- -#============================================================== -# -# End of job options file -# -############################################################### diff --git a/Generators/MadCUP_i/src/initmadcup.F b/Generators/MadCUP_i/src/initmadcup.F deleted file mode 100755 index d26b0f51c9e9a646d523f7a95426ba2b559744b2..0000000000000000000000000000000000000000 --- a/Generators/MadCUP_i/src/initmadcup.F +++ /dev/null @@ -1,80 +0,0 @@ - subroutine INITMADCUP - implicit none -#include "GeneratorFortranCommon/heprup.inc" -#include "GeneratorFortranCommon/hepeup.inc" -#include "MadCUP_i/iofiles.inc" -#include "MadCUP_i/hepup.inc" - -c local variables - integer nevt,lineskip - character*50 text,title - - integer i -c ,ievt -c data ievt /0/ -c save ievt - logical ldebug - parameter (ldebug=.false.) - -c variables for figuring out status of io file. -C character*50 howConnected -C integer EDF_is_open - logical exists - logical file_opened,unit_opened - -c open input file if necessary - - inquire(UNIT=unitnumber,OPENED=unit_opened) - inquire(FILE=eventDataFile,EXIST=exists,OPENED=file_opened, - & NUMBER=unitnumber) - - if(.not.file_opened ) then -c start at unitnumber=14 and check units until we find one that-s not open. - unitnumber=14 !need to set this again because of the 2nd inquire statement above - if(ldebug) then - write(*,*) 'looking for valid unit number for - & event data file.....' - endif - do while(unit_opened) - if(ldebug) then - write(*,*) 'unit number ',unitnumber,' is already taken; - & trying again...' - endif - unitnumber=unitnumber+1 - inquire(UNIT=unitnumber,OPENED=unit_opened) - enddo -c now we heve established that eventDataFile and unitnumber are not connected - if(ldebug) then - write(*,*) 'looks like unit number',unitnumber, - & ' is ok, opening file...' - endif - open(unitnumber,file=eventDataFile,status='old') - endif - - - -c read in lookup table and HEPRUP common block - read(unitnumber,'(a)') title - read(unitnumber,'(i10,a)') nevt,text - read(unitnumber,'(i10,a)') lineskip,text - do i = 1,lineskip - read(unitnumber,'(a)') text - enddo - read(unitnumber,'(2i8,2g14.4,a)') IDBMUP(1),IDBMUP(2), - & EBMUP(1),EBMUP(2),text - read(unitnumber,'(4i8,a)') PDFGUP(1),PDFGUP(2),PDFSUP(1), - & PDFSUP(2),text - read(unitnumber,'(2i8,a)') IDWTUP, NPRUP,text - if (nprup.ne.1) then - print*,' You requested ',nprup,' subprocesses. ' - print*,' Sorry. Not implemented yet. Max number is 1. ' - stop - endif - do i = 1,NPRUP - read(unitnumber,'(2g14.4,g18.8,i3,a)') XSECUP(I), XERRUP(I), - 1 XMAXUP(I), LPRUP(I),text - enddo - call loadTable(lnup,lidprup,listup,lidup, - & lmothup,licolup,numcolor,numdecay,numEntry) - - end diff --git a/Generators/MadCUP_i/src/loadTable.F b/Generators/MadCUP_i/src/loadTable.F deleted file mode 100755 index 9e3c167bc73a0f3871e8821deee38d6a1bdff8fe..0000000000000000000000000000000000000000 --- a/Generators/MadCUP_i/src/loadTable.F +++ /dev/null @@ -1,75 +0,0 @@ - subroutine loadTable(lnup,lidprup,listup,lidup, - & lmothup,licolup, - & numcolor,numdecay,numEntry) - -c loads the hepup-format lookup table - - implicit none -#include "MadCUP_i/iofiles.inc" - - integer maxNumSubProc - parameter( maxNumSubProc = 1000 ) - integer LMAXNUP - parameter ( LMAXNUP = 20 ) - - integer thisProcess - integer lnup(maxNumSubProc), lidprup(maxNumSubProc) - integer LISTUP(LMAXNUP,maxNumSubProc) - integer LIDUP(LMAXNUP,maxNumSubProc) - integer LMOTHUP(2,LMAXNUP,maxNumSubProc) - integer LICOLUP(2,LMAXNUP,maxNumSubProc) - integer numcolor,numdecay, numEntry(maxNumSubProc) - -c local variables - integer i,j,np,procNum - - - read(unitnumber,'(7i5)') numdecay,thisProcess -c write(*,*) 'numdecay=',numdecay - do i=1,numdecay - read(unitnumber,'(3i8)') ProcNum,lnup(i),numEntry(i) - lidprup(i) = thisprocess -c write(*,*)'i=',i - if(i.ne.ProcNum) then - write(*,*)'error: decaylookup data not in order' - write(*,*)'for decayprocess = ',ProcNum - print*,i,numdecay,numcolor -c stop - endif - - np=lnup(i)-numEntry(i) - do j=np+1,lnup(i) - read(unitnumber,'(i4,i6,4i5)') listup(j,i), lidup(j,i), - & lmothup(1,j,i),lmothup(2,j,i), - & licolup(1,j,i),licolup(2,j,i) -c print*,' l info for procnum ',i -c write(*,'(i4,i6,4i5)') -c & listup(j,i), lidup(j,i), -c & lmothup(1,j,i),lmothup(2,j,i), -c & licolup(1,j,i),licolup(2,j,i) - enddo - enddo - - read(unitnumber,'(7i5)') numcolor,thisProcess - do i=1+numdecay,numcolor+numdecay - read(unitnumber,'(3i8)') ProcNum,lnup(i),numEntry(i) - lidprup(i) = thisprocess -c write(*,*) "i=",i - if(i-numdecay.ne.ProcNum) then - write(*,*)'error: colorlookup data not in order.' - write(*,*)'for colorprocess = ',ProcNum - stop - endif - - do j=1,numEntry(i) - read(unitnumber,'(i4,i6,4i5)') listup(j,i), lidup(j,i), - & lmothup(1,j,i),lmothup(2,j,i), - & licolup(1,j,i),licolup(2,j,i) -c write(*,'(i4,i6,4i5)') -c & listup(j,i), lidup(j,i), -c & lmothup(1,j,i),lmothup(2,j,i), -c & licolup(1,j,i),licolup(2,j,i) - enddo - enddo - end - diff --git a/Generators/MadCUP_i/src/printHepupContents.F b/Generators/MadCUP_i/src/printHepupContents.F deleted file mode 100755 index b7a76027625d73911854d4038209f191087f8063..0000000000000000000000000000000000000000 --- a/Generators/MadCUP_i/src/printHepupContents.F +++ /dev/null @@ -1,25 +0,0 @@ - subroutine printHepupContents - implicit none - -#include "GeneratorFortranCommon/heprup.inc" -#include "GeneratorFortranCommon/hepeup.inc" - -C integer i,j,k,l,ievt - integer i,ievt - logical firstTime - data firstTime /.true./, ievt /0/ - save firstTime - - firstTime=.false. - - ievt=ievt+1 - write(*,*) "info in hepeup:",ievt - write(*,*) NUP, IDPRUP !, XWGTUP, SCALUP, AQEDUP, AQCDUP - do i=1,nup - write(*,*) idup(i),istup(i),mothup(1,i),mothup(2,i) - write(*,*) icolup(1,i),icolup(2,i), vtimup(i),spinup(i) - write(*,'(5g10.4)') pup(1,i),pup(2,i),pup(3,i),pup(4,i), - & pup(5,i) - enddo - - end diff --git a/Generators/MadCUP_i/src/usemadcup.F b/Generators/MadCUP_i/src/usemadcup.F deleted file mode 100755 index 011f0ff9abb0183f6bf1e784426a752a9a26ee28..0000000000000000000000000000000000000000 --- a/Generators/MadCUP_i/src/usemadcup.F +++ /dev/null @@ -1,138 +0,0 @@ - subroutine usemadcup - implicit none - -#include "GeneratorFortranCommon/heprup.inc" -#include "GeneratorFortranCommon/hepeup.inc" -#include "MadCUP_i/hepup.inc" -#include "MadCUP_i/iofiles.inc" - - integer istg - common /evtcon/ istg - -c local variables - logical interfacedebug - parameter (interfacedebug=.false.) - -C integer i,ii,j,k,ios,ievt,ProcNum,np,numMother - integer i,j,k,ievt,ProcNum,np - data ievt /0/ - save ievt - logical ldebug - parameter (ldebug=.false.) - -c double precision tpup(20,5), tspinup(20) - integer id, tidup(20) - - -c read in an event - read(unitnumber,'(5i7,4g15.8)',END=100) ievt,idprup,nup, - & colorprocess, - & decayprocess, - & xwgtup,SCALUP, AQEDUP, AQCDUP - if (nup.eq.0) then - write(*,*) 'no more events in data file' - return - endif - - - if (ldebug) then - if(idprup.ne.lidprup(decayprocess) .or. - & idprup.ne.lidprup(colorprocess+numdecay) ) then - write(*,*) ' process number mismatch in UPEVNT ' - write(*,*) lidprup(decayprocess),' in decay Table ' - write(*,*) lidprup(colorprocess+numdecay),' in color Table ' - write(*,*) idprup,' in event data file ' - endif - - if(decayprocess.gt.numdecay) then - write(*,*) 'error: decayprocess out of range in event',ievt - write(*,*) 'decayprocess = ',decayprocess - endif - if(colorprocess.gt.numcolor) then - write(*,*) 'error: colorprocess out of range in event',ievt - write(*,*) 'colorprocess = ',colorprocess - endif - endif - - ProcNum=colorprocess+numdecay - np=numentry(procnum) - do i=1,2 - read(unitnumber,'(i3,g18.8,g18.4,f4.0,i6)') - & id,(pup(j,i),j=3,3),pup(5,i),spinup(i),tidup(i) - pup(1,i)=0 - pup(2,i)=0 - pup(4,i)=sqrt(pup(5,i)**2+pup(3,i)**2) - istup(i)=listup(i,ProcNum) - mothup(1,i)=lmothup(1,i,ProcNum) - mothup(2,i)=lmothup(2,i,ProcNum) - icolup(1,i)=licolup(1,i,ProcNum) - icolup(2,i)=licolup(2,i,ProcNum) - vtimup(i)=0 - idup(id)=lidup(id,ProcNum) - if( idup(id).ne.tidup(i)) then - write(*,*) ' mismatch of idup for event ',ievt,' id = ',id - endif - enddo - - do i=3,nup - if (i.le.np) then - ProcNum = colorprocess+numdecay - else - ProcNum = decayprocess - endif - istup(i)=listup(i,ProcNum) - mothup(1,i)=lmothup(1,i,ProcNum) - mothup(2,i)=lmothup(2,i,ProcNum) - icolup(1,i)=licolup(1,i,ProcNum) - icolup(2,i)=licolup(2,i,ProcNum) - vtimup(i)=0 - idup(i)=lidup(i,ProcNum) - if(abs(istup(i)).eq.1) then - read(unitnumber,'(i3,3g18.8,g18.4,f4.0,i6)') - & id,(pup(j,i),j=1,3),pup(5,i),spinup(i),tidup(i) - pup(4,i)=sqrt(pup(5,i)**2+pup(1,i)**2+ - & pup(2,i)**2+pup(3,i)**2) - if( idup(i).ne.tidup(i)) then - write(*,*) 'mismatch of idup for event ', - & ievt,' id = ',id,i - print*,decayprocess,colorprocess - write(*,*) ' idup = ',idup(i) - write(*,*) ' tidup = ',tidup(i) - endif - else !data for this particle was not stored; - !reset momentum for treatment below - do j=1,5 - pup(j,i)=0 - enddo - endif - enddo - -c fill momenta of mothers corresponding to decaying particles - do i=3,nup - k = mothup(1,i) - if ( (k.eq.mothup(2,i) .or. mothup(2,i).eq.0) - & .and. k.ge.3 .and. abs(istup(k)).ne.1) then - do j = 1,4 - pup(j,k) = pup(j,k) + pup(j,i) - enddo - endif - enddo - do i=3,nup - if (abs(istup(i)).ne.1) then - pup(5,i) = sqrt(pup(4,i)**2-pup(1,i)**2- - & pup(2,i)**2-pup(3,i)**2) - endif - enddo - - - if(interfacedebug) then - call printHEPUPcontents - endif - - return - - 100 nup = 0 - istg = 1 - return - - end diff --git a/Generators/MadGraph_i/CMakeLists.txt b/Generators/MadGraph_i/CMakeLists.txt deleted file mode 100644 index f13ef51c3814387937882eacab8314f51705e1d3..0000000000000000000000000000000000000000 --- a/Generators/MadGraph_i/CMakeLists.txt +++ /dev/null @@ -1,20 +0,0 @@ -################################################################################ -# Package: MadGraph_i -################################################################################ - -# Declare the package name: -atlas_subdir( MadGraph_i ) - -# External dependencies: -find_package( Pythia6 COMPONENTS pythia6 pythia6_dummy ) - -# Component(s) in the package: -atlas_add_library( MadGraph_i - MadGraph_i/*.inc src/*.F - PUBLIC_HEADERS MadGraph_i - PRIVATE_INCLUDE_DIRS ${PYTHIA6_INCLUDE_DIRS} - PRIVATE_LINK_LIBRARIES ${PYTHIA6_LIBRARIES} ) - -# Install files from the package: -atlas_install_joboptions( share/*.py ) -atlas_install_runtime( share/events.lhe ) diff --git a/Generators/MadGraph_i/MadGraph_i/madsho.inc b/Generators/MadGraph_i/MadGraph_i/madsho.inc deleted file mode 100644 index f6ffa47c71b585af024030b39cff00faee66ad9b..0000000000000000000000000000000000000000 --- a/Generators/MadGraph_i/MadGraph_i/madsho.inc +++ /dev/null @@ -1,53 +0,0 @@ -c process code - integer ihrd - integer itopprc -c--event file data - integer Nunit,NunitOut,NunitIni - character*100 filename -c total number of input events - common/MGio/Nunit,NunitOut,NunitIni,filename -c inputs for the matching algorithm - integer iexc,npfst,nplst,nljets,njstart,njlast - $ ,ickkw - double precision etclus,rclus,etaclmax - common/MGopts/etclus,rclus,etaclmax,iexc,npfst - $ ,nplst,nljets,njstart,njlast,ickkw -c process and particles parameters - double precision mc,mb,mt,mw,mz,mh - double precision ebeam - integer ndns,ih1,ih2 - integer nw,nz,nh,nph - integer ihvy,ihvy2 -c pdf set type - character pdftyp*25 -c total number of partons - integer npart - common/MGppara/mc,mb,mt,mw,mz,mh, - & ebeam,ih1,ih2, - & ihrd,itopprc, - & nw,nz,nh,nph, - & ihvy,ihvy2, - & npart,ndns,pdftyp -c weight information - real *8 maxwgt,avgwgt,errwgt,totlum - integer unwev - common/MGwgts/maxwgt,avgwgt,errwgt,totlum,unwev -c general parameters - integer nparam - parameter (nparam=200) - integer parlen,partyp - character chpar*8,chpdes*70 - double precision parval - common/MGpars/parval(nparam),chpar(nparam),chpdes(nparam) - $ ,parlen(nparam),partyp(nparam) -c global event cuts - double precision ptjmin,ptjmax,etajmax,drjmin, - + ptbmin,ptbmax,etabmax,drbmin, - + ptcmin,ptcmax,etacmax,drcmin, - + ptphmin,etaphmax,drphjmin,drphlmin, - + ptlmin,etalmax,drlmin,metmin,mllmin,mllmax - common/MGcuts/ptjmin,ptjmax,etajmax,drjmin, - + ptbmin,ptbmax,etabmax,drbmin, - + ptcmin,ptcmax,etacmax,drcmin, - + ptphmin,etaphmax,drphjmin,drphlmin, - + ptlmin,etalmax,drlmin,metmin,mllmin,mllmax diff --git a/Generators/MadGraph_i/share/events.lhe b/Generators/MadGraph_i/share/events.lhe deleted file mode 100644 index d6aec75ec2cf85d8d631ab8b17bd30514a34aa58..0000000000000000000000000000000000000000 --- a/Generators/MadGraph_i/share/events.lhe +++ /dev/null @@ -1,518 +0,0 @@ -<LesHouchesEvents version="1.0"> -<header> -<!-- -#********************************************************************* -# * -# MadGraph/MadEvent * -# * -# The new web generation * -# * -# http://madgraph.hep.uiuc.edu * -# http://madgraph.phys.ucl.ac.be * -# http://madgraph.roma2.infn.it * -# * -# CP3 team Tim Stelzer * -# Universite de Louvain University of Illinois * -# * -#....................................................................* -# * -# This file contains all the information necessary to reproduce * -# the events generated: * -# * -# 1. software version * -# 2. proc_card.dat : code generation info including model * -# 3. param_card.dat : model primary parameters in the LH format * -# 4. run_card.dat : running parameters (collider and cuts) * -# 5. pythia_card.dat : present only in the pythia event file * -# 6. pgs_card.dat : present only in the pgs event file * -# * -# * -#********************************************************************* ---> -<MGVersion> -# MG/ME version : 4.2.6 -# madgraph version : 4.2.3 -# template version : 2.2.4 -# helas version : 3.2 -# model version : sm_1.1 -</MGVersion> -<MGProcCard> -#********************************************************************* -# MadGraph/MadEvent * -# http://madgraph.hep.uiuc.edu * -# * -# proc_card.dat * -# * -# This file is used to generate the code for a specific process. * -# Some notation/conventions: * -# * -# 0. Do not modify the TAGS and their order. * -# 1. hash/pound is a comment. * -# 2. The charcter after the @ is used as an identifier for the class * -# of processes. It can be a single or a digit. * -# 3. The number of lines for the max couplings depends on how many * -# different classes of couplings are present in the model * -# In the SM these are just two: QED (which include EW) and QCD * -# 4. Write "end_coup" after the couplings list, * -# to tell MG that the couplings input is over. * -# 5. Write "done" after the proc list to * -# to tell MG that the proc input is over. * -# 6. Some model names available at present are: * -# sm = Standard Model * -# sm_ckm = Standard Model with Cabibbo matrix * -# mssm = Minimal Supersymmetric Standard Model * -# 2hdm = Generic Two Higgs Doublet model * -# heft = Higgs EFT (+Standard Model) * -# usrmod = User Model * -# 7. Don't leave spaces between the particles name in the * -# definition of the multiparticles. * -#********************************************************************* -#********************************************************************* -# Process(es) requested : mg2 input * -#********************************************************************* -# Begin PROCESS # This is TAG. Do not modify this line -pp>z>l+l-jj # Process -QCD=99 # max qcd order -QED=99 # max qed order -end_coup # the coupling list is over -done # the process list is over -# End PROCESS # This is TAG. Do not modify this line -#********************************************************************* -# Model information * -#********************************************************************* -# Begin MODEL # This is TAG. Do not modify this line -sm -# End MODEL # This is TAG. Do not modify this line -#********************************************************************* -# Start multiparticle definitions * -#********************************************************************* -# Begin MULTIPARTICLES # This is TAG. Do not modify this line -p uu~dd~ss~cc~g -j uu~dd~ss~cc~g -l+ e+mu+ -l- e-mu- -vl vevm -vl~ ve~vm~ -# End MULTIPARTICLES # This is TAG. Do not modify this line -</MGProcCard> -<slha> -#****************************************************************** -# MadGraph/MadEvent * -#****************************************************************** -# Les Houches friendly file for the SM parameters of MadGraph * -# Spectrum and decay widths produced by SMCalc * -#****************************************************************** -#*Please note the following IMPORTANT issues: * -# * -#0. REFRAIN from editing this file by hand! Some of the parame- * -# ters are not independent * -# (such as G_Fermi, alpha_em, sin(theta_W),MZ,MW) and serious * -# problems might be encountered (such as violation of unitarity * -# or gauge invariance). Always use a calculator. * -# * -#1. alpha_S(MZ) has been used in the calculation of the parameters* -# but, for consistency, it will be reset by madgraph to the * -# value expected IF the pdfs for collisions with hadrons are * -# used. This value is KEPT by madgraph when no pdf are used * -# lpp(i)=0 . * -# * -#2. Values of the charm and bottom kinematic (pole) masses are * -# those used in the matrix elements and phase space UNLESS they * -# are set to ZERO from the start in the model (particles.dat) * -# This happens, for example, when using 5-flavor QCD where * -# charm and bottom are treated as partons in the initial state * -# and a zero mass might be hardwired in the model definition. * -# * -#****************************************************************** -Block SMINPUTS # Standard Model inputs - 1 1.32506980E+02 # alpha_em(MZ)(-1) SM MSbar - 2 1.16639000E-05 # G_Fermi - 3 1.18000000E-01 # alpha_s(MZ) SM MSbar - 4 9.11880000E+01 # Z mass (as input parameter) -Block MGYUKAWA # Yukawa masses m/v=y/sqrt(2) -# PDG YMASS - 5 4.20000000E+00 # mbottom for the Yukawa y_b - 4 1.42000000E+00 # mcharm for the Yukawa y_c - 6 1.64500000E+02 # mtop for the Yukawa y_t - 15 1.77700000E+00 # mtau for the Yukawa y_ta -Block MGCKM # CKM elements for MadGraph - 1 1 9.75000000E-01 # Vud for Cabibbo matrix -Block MASS # Mass spectrum (kinematic masses) -# PDG Mass - 5 4.70000000E+00 # bottom pole mass - 6 1.74300000E+02 # top pole mass - 15 1.77700000E+00 # tau mass - 23 9.11880000E+01 # Z mass - 24 8.04190000E+01 # W mass - 25 1.20000000E+02 # H mass -# PDG Width -DECAY 6 1.50833649E+00 # top width -DECAY 23 2.44140351E+00 # Z width -DECAY 24 2.04759951E+00 # W width -DECAY 25 5.75308848E-03 # H width -# BR NDA ID1 ID2 - 8.27451012E-02 2 4 -4 # BR( H -> c cbar ) - 7.17809696E-01 2 5 -5 # BR( H -> b bbar ) - 0.00000000E+00 2 6 -6 # BR( H -> t tbar ) - 4.31720144E-02 2 15 -15 # BR( H -> tau- tau+) - 6.90597075E-03 2 23 23 # BR( H -> Z Z^(*)) - 7.45906395E-02 2 24 -24 # BR( H -> W W^(*)) - 3.01765558E-02 2 21 21 # BR( H -> g g ) - 1.42800773E-03 2 22 22 # BR( H -> A A ) -</slha> -<MGRunCard> -#********************************************************************* -# MadGraph/MadEvent * -# http://madgraph.hep.uiuc.edu * -# * -# run_card.dat * -# * -# This file is used to set the parameters of the run. * -# * -# Some notation/conventions: * -# * -# Lines starting with a '# ' are info or comments * -# * -# mind the format: value = variable ! comment * -#********************************************************************* -# -#******************* -# Running parameters -#******************* -# -#********************************************************************* -# Tag name for the run (one word) * -#********************************************************************* - 'fermi' = run_tag ! name of the run -#********************************************************************* -# Number of events and rnd seed * -#********************************************************************* - 10000 = nevents ! Number of unweighted events requested - 233 = iseed ! rnd seed (0=assigned automatically=default)) -#********************************************************************* -# Collider type and energy * -#********************************************************************* - 1 = lpp1 ! beam 1 type (0=NO PDF) - 1 = lpp2 ! beam 2 type (0=NO PDF) - 7000 = ebeam1 ! beam 1 energy in GeV - 7000 = ebeam2 ! beam 2 energy in GeV -#********************************************************************* -# Beam polarization from -100 (left-handed) to 100 (right-handed) * -#********************************************************************* - 0 = polbeam1 ! beam polarization for beam 1 - 0 = polbeam2 ! beam polarization for beam 2 -#********************************************************************* -# PDF CHOICE: this automatically fixes also alpha_s and its evol. * -#********************************************************************* - 'cteq6l1' = pdlabel ! PDF set -#********************************************************************* -# Renormalization and factorization scales * -#********************************************************************* - F = fixed_ren_scale ! if .true. use fixed ren scale - F = fixed_fac_scale ! if .true. use fixed fac scale - 91.1880 = scale ! fixed ren scale - 91.1880 = dsqrt_q2fact1 ! fixed fact scale for pdf1 - 91.1880 = dsqrt_q2fact2 ! fixed fact scale for pdf2 - 1 = scalefact ! scale factor for event-by-event scales -#********************************************************************* -# Matching - Warning! ickkw > 0 is still beta -#********************************************************************* - 1 = ickkw ! 0 no matching, 1 MLM, 2 CKKW matching -#********************************************************************* -# -#******************* -# Standard Cuts -#******************* -# -#********************************************************************* -# Minimum pt's * -#********************************************************************* - 15 = ptj ! minimum pt for the jets - 15 = ptb ! minimum pt for the b - 10 = pta ! minimum pt for the photons - 10 = ptl ! minimum pt for the charged leptons -#********************************************************************* -# Minimum energy (in the lab frame) * -#********************************************************************* - 0 = ej ! minimum E for the jets - 0 = eb ! minimum E for the b - 0 = ea ! minimum E for the photons - 0 = el ! minimum E for the charged leptons -#********************************************************************* -# Maximum rapidity * -#********************************************************************* - 5 = etaj ! max rap for the jets - 5 = etab ! max rap for the b - 2.7 = etaa ! max rap for the photons - 2.7 = etal ! max rap for the charged leptons -#********************************************************************* -# Minimum DeltaR distance * -#********************************************************************* - 0.001 = drjj ! distance between jets - 0.001 = drbb ! distance between b's - 0.4 = drll ! distance between leptons - 0.4 = draa ! distance between gammas - 0.001 = drbj ! distance between b and jet - 0.4 = draj ! distance between gamma and jet - 0.4 = drjl ! distance between jet and lepton - 0 = drab ! distance between gamma and b - 0 = drbl ! distance between b and lepton - 0.4 = dral ! distance between gamma and lepton -#********************************************************************* -# Minimum invariant mass for pairs * -#********************************************************************* - 0 = mmjj ! min invariant mass of a jet pair - 0 = mmbb ! min invariant mass of a b pair - 0 = mmaa ! min invariant mass of gamma gamma pair - 0 = mmll ! min invariant mass of l+l- (same flavour) lepton pair -#********************************************************************* -# Inclusive cuts * -#********************************************************************* - 0 = xptj ! minimum pt for at least one jet - 0 = xptb ! minimum pt for at least one b - 0 = xpta ! minimum pt for at least one photon - 0 = xptl ! minimum pt for at least one charged lepton -#********************************************************************* -# WBF cuts * -#********************************************************************* - 0 = xetamin ! minimum rapidity for two jets in the WBF case - 0 = deltaeta ! minimum rapidity for two jets in the WBF case -#********************************************************************* -# Jet measure cuts * -#********************************************************************* - 15 = xqcut ! minimum kt jet measure between partons -#********************************************************************* -</MGRunCard> -<MGGenerationInfo> -# Number of Events : 20 -# Integrated weight (pb) : .46615E+03 -# Truncated wgt (pb) : .31665E+00 -# Unit wgt : .46615E-01 -</MGGenerationInfo> -</header> -<init> - 2212 2212 0.70000000000E+04 0.70000000000E+04 0 0 10042 10042 3 1 - 0.46362161027E+03 0.13386993187E+01 0.46615000000E-01 100 -</init> -<event> - 7 100 0.4661500E-01 0.1187258E+03 0.7546772E-02 0.1247769E+00 - 21 -1 0 0 501 502 0.00000000000E+00 0.00000000000E+00 0.38762217252E+02 0.38762217252E+02 0.00000000000E+00 0. -1. - 2 -1 0 0 503 0 0.00000000000E+00 0.00000000000E+00 -0.51928052407E+03 0.51928052407E+03 0.00000000000E+00 0. -1. - 23 2 1 2 0 0 -0.24531021043E+02 -0.87447097133E+02 -0.20164293129E+03 0.23922807903E+03 0.91221906726E+02 0. 0. - -11 1 3 3 0 0 0.33492950895E+02 -0.19267574710E+02 -0.50918853260E+02 0.63919846778E+02 0.00000000000E+00 0. 1. - 11 1 3 3 0 0 -0.58023971937E+02 -0.68179522424E+02 -0.15072407803E+03 0.17530823225E+03 0.00000000000E+00 0. -1. - 2 1 1 2 501 0 0.57106776802E+02 0.48664527043E+02 -0.24889539502E+03 0.25995833861E+03 0.00000000000E+00 0. -1. - 21 1 1 2 503 502 -0.32575755760E+02 0.38782570091E+02 -0.29979980501E+02 0.58856323679E+02 0.00000000000E+00 0. -1. -# 0.4964405E+02 0.4964405E+02 0.7598937E+02 0.5064847E+02 -</event> -<event> - 7 100 0.4661500E-01 0.1366047E+03 0.7546772E-02 0.1221677E+00 - 21 -1 0 0 501 502 0.00000000000E+00 0.00000000000E+00 0.25971646002E+02 0.25971646002E+02 0.00000000000E+00 0. -1. - 3 -1 0 0 503 0 0.00000000000E+00 0.00000000000E+00 -0.78480232540E+03 0.78480232540E+03 0.00000000000E+00 0. -1. - 23 2 1 2 0 0 -0.24917716184E+02 0.10234786342E+03 -0.60534979644E+03 0.62057168254E+03 0.86976200153E+02 0. 0. - -11 1 3 3 0 0 0.55201927933E+01 -0.14006460255E+02 -0.44707915163E+02 0.47174687446E+02 0.00000000000E+00 0. 1. - 11 1 3 3 0 0 -0.30437908977E+02 0.11635432367E+03 -0.56064188128E+03 0.57339699510E+03 0.00000000000E+00 0. -1. - 3 1 1 2 501 0 0.20014114191E+02 -0.22946333774E+02 -0.26528667921E+02 0.40384021867E+02 0.00000000000E+00 0. -1. - 21 1 1 2 503 502 0.49036019928E+01 -0.79401529645E+02 -0.12695221503E+03 0.14981826699E+03 0.00000000000E+00 0. -1. -# 0.3077251E+02 0.3077251E+02 0.1123411E+03 0.2415599E+02 -</event> -<event> - 7 100 0.4661500E-01 0.9486105E+02 0.7546772E-02 0.1291907E+00 - -4 -1 0 0 0 502 0.00000000000E+00 0.00000000000E+00 0.11318244852E+02 0.11318244852E+02 0.00000000000E+00 0. -1. - 2 -1 0 0 502 0 0.00000000000E+00 0.00000000000E+00 -0.36755138878E+04 0.36755138878E+04 0.00000000000E+00 0. 1. - 23 2 1 2 0 0 0.28728515605E+02 0.30111077468E+02 -0.21253495500E+03 0.23476294704E+03 0.90611972780E+02 0. 0. - -11 1 3 3 0 0 0.50691045405E+01 0.51231276193E+02 -0.18726255879E+03 0.19421020932E+03 0.00000000000E+00 0. 1. - 11 1 3 3 0 0 0.23659411064E+02 -0.21120198725E+02 -0.25272396210E+02 0.40552737716E+02 0.00000000000E+00 0. -1. - 2 1 1 2 501 0 -0.41256083766E+01 -0.27715215650E+02 -0.20340836425E+04 0.20342766328E+04 0.00000000000E+00 0. 1. - -4 1 1 2 0 501 -0.24602907228E+02 -0.23958618183E+01 -0.14175770454E+04 0.14177925529E+04 0.00000000000E+00 0. -1. -# 0.9061197E+02 0.9061197E+02 0.2807295E+02 0.2471930E+02 -</event> -<event> - 7 100 0.4661500E-01 0.9910967E+02 0.7546772E-02 0.1283046E+00 - 21 -1 0 0 502 503 0.00000000000E+00 0.00000000000E+00 0.62492092351E+02 0.62492092351E+02 0.00000000000E+00 0. -1. - 21 -1 0 0 501 502 0.00000000000E+00 0.00000000000E+00 -0.18455964776E+03 0.18455964776E+03 0.00000000000E+00 0. 1. - 23 2 1 2 0 0 -0.85218521074E+01 0.36657328216E+02 0.69970966288E+01 0.99858942774E+02 0.92230512388E+02 0. 0. - -11 1 3 3 0 0 0.21968535521E+02 0.50844686537E+01 -0.33338286484E+02 0.40248102069E+02 0.00000000000E+00 0. 1. - 11 1 3 3 0 0 -0.30490387629E+02 0.31572859563E+02 0.40335383113E+02 0.59610840705E+02 0.00000000000E+00 0. -1. - 1 1 1 2 501 0 -0.19098558079E+02 -0.35420495160E+02 -0.55105568164E+02 0.68234815459E+02 0.00000000000E+00 0. -1. - -1 1 1 2 0 503 0.27620410186E+02 -0.12368330565E+01 -0.73959083870E+02 0.78957981875E+02 0.00000000000E+00 0. 1. -# 0.9223051E+02 0.9223051E+02 0.3628032E+02 0.2764809E+02 -</event> -<event> - 7 100 0.4661500E-01 0.1529027E+03 0.7546772E-02 0.1201490E+00 - 21 -1 0 0 501 502 0.00000000000E+00 0.00000000000E+00 0.34474567642E+03 0.34474567642E+03 0.00000000000E+00 0. -1. - 3 -1 0 0 503 0 0.00000000000E+00 0.00000000000E+00 -0.29853338863E+03 0.29853338863E+03 0.00000000000E+00 0. -1. - 23 2 1 2 0 0 0.64347908261E+02 0.10214109741E+03 -0.25575179622E+03 0.29738221753E+03 0.91944249155E+02 0. 0. - -13 1 3 3 0 0 0.21814940185E+02 0.10607893356E+03 -0.16970794510E+03 0.20131919529E+03 0.00000000000E+00 0. -1. - 13 1 3 3 0 0 0.42532968076E+02 -0.39378361420E+01 -0.86043851121E+02 0.96063022244E+02 0.00000000000E+00 0. 1. - 3 1 1 2 501 0 -0.89399796711E+02 -0.11062416421E+03 0.25680505439E+03 0.29356237041E+03 0.00000000000E+00 0. -1. - 21 1 1 2 503 502 0.25051888450E+02 0.84830667999E+01 0.45159029623E+02 0.52334477104E+02 0.00000000000E+00 0. 1. -# 0.5782750E+02 0.5782750E+02 0.1221700E+03 0.2644919E+02 -</event> -<event> - 7 100 0.4661500E-01 0.1108656E+03 0.7546772E-02 0.1260918E+00 - 1 -1 0 0 503 0 0.00000000000E+00 0.00000000000E+00 0.53208239874E+03 0.53208239874E+03 0.00000000000E+00 0. -1. - 21 -1 0 0 502 503 0.00000000000E+00 0.00000000000E+00 -0.14558635782E+03 0.14558635782E+03 0.00000000000E+00 0. 1. - 23 2 1 2 0 0 -0.44246974263E+02 0.71813465650E+02 0.27109699658E+02 0.12639738124E+03 0.90146511795E+02 0. 0. - -13 1 3 3 0 0 -0.62753028279E+02 0.80917883599E+02 0.18544096243E+02 0.10406502751E+03 0.00000000000E+00 0. 1. - 13 1 3 3 0 0 0.18506054017E+02 -0.91044179492E+01 0.85656034147E+01 0.22332353734E+02 0.00000000000E+00 0. -1. - 1 1 1 2 501 0 0.39592478030E+02 -0.49862209958E+02 0.45175322035E+03 0.45621790451E+03 0.00000000000E+00 0. -1. - 21 1 1 2 502 501 0.46544962322E+01 -0.21951255692E+02 -0.92366879083E+02 0.95053470811E+02 0.00000000000E+00 0. 1. -# 0.4616326E+02 0.4616326E+02 0.6453527E+02 0.2243930E+02 -</event> -<event> - 7 100 0.4661500E-01 0.1053675E+03 0.7546772E-02 0.1270864E+00 - -2 -1 0 0 0 501 0.00000000000E+00 0.00000000000E+00 0.17652164811E+02 0.17652164811E+02 0.00000000000E+00 0. 1. - 2 -1 0 0 503 0 0.00000000000E+00 0.00000000000E+00 -0.61656427458E+03 0.61656427458E+03 0.00000000000E+00 0. -1. - 23 2 1 2 0 0 -0.15098718437E+02 0.62818994733E+02 -0.49194597415E+03 0.50472833075E+03 0.92550791354E+02 0. 0. - -11 1 3 3 0 0 0.24666512572E+02 -0.11423682054E+02 -0.15827354130E+03 0.16059094379E+03 0.00000000000E+00 0. 1. - 11 1 3 3 0 0 -0.39765231009E+02 0.74242676787E+02 -0.33367243286E+03 0.34413738696E+03 0.00000000000E+00 0. -1. - 21 1 1 2 503 502 -0.22794495107E+01 -0.17305488373E+02 -0.57369526277E+02 0.59966143474E+02 0.00000000000E+00 0. 1. - 21 1 1 2 502 501 0.17378167948E+02 -0.45513506360E+02 -0.49596609338E+02 0.69521965164E+02 0.00000000000E+00 0. -1. -# 0.9255079E+02 0.9255079E+02 0.5036532E+02 0.1745497E+02 -</event> -<event> - 7 100 0.4661500E-01 0.2285415E+03 0.7546772E-02 0.1134635E+00 - 1 -1 0 0 503 0 0.00000000000E+00 0.00000000000E+00 0.27375786349E+03 0.27375786349E+03 0.00000000000E+00 0. -1. - 21 -1 0 0 501 502 0.00000000000E+00 0.00000000000E+00 -0.57088441143E+03 0.57088441143E+03 0.00000000000E+00 0. -1. - 23 2 1 2 0 0 -0.69063945545E+02 -0.20474554376E+03 0.14111172090E+03 0.27427357174E+03 0.92859615099E+02 0. 0. - -13 1 3 3 0 0 -0.32782511722E+02 -0.18359527430E+02 0.52935232902E+02 0.64914591616E+02 0.00000000000E+00 0. 1. - 13 1 3 3 0 0 -0.36281433823E+02 -0.18638601633E+03 0.88176487999E+02 0.20935898012E+03 0.00000000000E+00 0. -1. - 1 1 1 2 501 0 0.18255336103E+03 0.11919503044E+03 -0.21844151441E+03 0.30862579303E+03 0.00000000000E+00 0. -1. - 21 1 1 2 503 502 -0.11348941549E+03 0.85550513317E+02 -0.21979675442E+03 0.26174291015E+03 0.00000000000E+00 0. -1. -# 0.4130692E+02 0.4130692E+02 0.2088260E+03 0.1421223E+03 -</event> -<event> - 7 100 0.4661500E-01 0.1020077E+03 0.7546772E-02 0.1277283E+00 - 21 -1 0 0 502 503 0.00000000000E+00 0.00000000000E+00 0.73038003867E+03 0.73038003867E+03 0.00000000000E+00 0. -1. - -1 -1 0 0 0 501 0.00000000000E+00 0.00000000000E+00 -0.77494939095E+02 0.77494939095E+02 0.00000000000E+00 0. 1. - 23 2 1 2 0 0 0.41825966367E+02 0.19976765893E+01 -0.38615319096E+02 0.10932845446E+03 0.93317554140E+02 0. 0. - -13 1 3 3 0 0 0.18841625585E+02 0.88932933594E+00 -0.68819330146E+02 0.71357536133E+02 0.00000000000E+00 0. 1. - 13 1 3 3 0 0 0.22984340783E+02 0.11083472533E+01 0.30204011050E+02 0.37970918324E+02 0.00000000000E+00 0. -1. - -1 1 1 2 0 503 -0.14213653327E+02 0.24904924886E+02 0.67270378939E+02 0.73127198135E+02 0.00000000000E+00 0. 1. - 21 1 1 2 502 501 -0.27612313041E+02 -0.26902601475E+02 0.62423003973E+03 0.62541932517E+03 0.00000000000E+00 0. -1. -# 0.9331755E+02 0.9331755E+02 0.2867548E+02 0.4119966E+02 -</event> -<event> - 7 100 0.4661500E-01 0.1722033E+03 0.7546772E-02 0.1180910E+00 - 2 -1 0 0 503 0 0.00000000000E+00 0.00000000000E+00 0.71257294894E+03 0.71257294894E+03 0.00000000000E+00 0. -1. - 21 -1 0 0 502 503 0.00000000000E+00 0.00000000000E+00 -0.22595372870E+03 0.22595372870E+03 0.00000000000E+00 0. -1. - 23 2 1 2 0 0 -0.36902836020E+01 0.15038470744E+03 0.60368144819E+03 0.62872426959E+03 0.90739946353E+02 0. 0. - -13 1 3 3 0 0 0.22432574734E+02 0.98019454022E+02 0.49677272025E+03 0.50684728406E+03 0.00000000000E+00 0. -1. - 13 1 3 3 0 0 -0.26122858336E+02 0.52365253414E+02 0.10690872794E+03 0.12187698553E+03 0.00000000000E+00 0. 1. - 2 1 1 2 501 0 -0.10651425835E+03 -0.59988263556E+02 0.47048532433E+01 0.12233566381E+03 0.00000000000E+00 0. -1. - 21 1 1 2 502 501 0.11020454195E+03 -0.90396443879E+02 -0.12176708120E+03 0.18746674424E+03 0.00000000000E+00 0. -1. -# 0.6922288E+02 0.6922288E+02 0.1222452E+03 0.1463566E+03 -</event> -<event> - 7 100 0.4661500E-01 0.1274246E+03 0.7546772E-02 0.1234479E+00 - 2 -1 0 0 503 0 0.00000000000E+00 0.00000000000E+00 0.11338258206E+04 0.11338258206E+04 0.00000000000E+00 0. 1. - 21 -1 0 0 501 502 0.00000000000E+00 0.00000000000E+00 -0.17928435282E+02 0.17928435282E+02 0.00000000000E+00 0. 1. - 23 2 1 2 0 0 0.37994168566E+02 0.62584037984E+02 0.50000739017E+03 0.51336757370E+03 0.90435373848E+02 0. 0. - -13 1 3 3 0 0 0.45527841436E+02 -0.55343159943E+01 0.15609829371E+03 0.16269631311E+03 0.00000000000E+00 0. -1. - 13 1 3 3 0 0 -0.75336728705E+01 0.68118353978E+02 0.34390909646E+03 0.35067126059E+03 0.00000000000E+00 0. 1. - 2 1 1 2 501 0 -0.69224748542E+02 -0.73947139026E+02 0.58262666468E+03 0.59136627869E+03 0.00000000000E+00 0. 1. - 21 1 1 2 503 502 0.31230579976E+02 0.11363101042E+02 0.33263330476E+02 0.47020403500E+02 0.00000000000E+00 0. -1. -# 0.7917186E+02 0.7917186E+02 0.8976901E+02 0.3323356E+02 -</event> -<event> - 7 100 0.4661500E-01 0.1480183E+03 0.7546772E-02 0.1207236E+00 - -1 -1 0 0 0 501 0.00000000000E+00 0.00000000000E+00 0.31237924968E+02 0.31237924968E+02 0.00000000000E+00 0. 1. - 2 -1 0 0 501 0 0.00000000000E+00 0.00000000000E+00 -0.19982798441E+04 0.19982798441E+04 0.00000000000E+00 0. -1. - 23 2 1 2 0 0 -0.50357215209E+02 0.63806957255E+01 -0.67035617448E+02 0.12375457477E+03 0.90801202460E+02 0. 0. - -13 1 3 3 0 0 -0.49136406427E+02 -0.14710242292E+02 0.22292429251E+01 0.51339528522E+02 0.00000000000E+00 0. 1. - 13 1 3 3 0 0 -0.12208087823E+01 0.21090938017E+02 -0.69264860373E+02 0.72415046248E+02 0.00000000000E+00 0. -1. - -3 1 1 2 0 502 -0.40357193294E+02 -0.20234043463E+02 -0.32952352157E+03 0.33260166992E+03 0.00000000000E+00 0. 1. - 4 1 1 2 502 0 0.90714408503E+02 0.13853347737E+02 -0.15704827801E+04 0.15731615244E+04 0.00000000000E+00 0. -1. -# 0.5827492E+02 0.5827492E+02 0.9752459E+02 0.9752459E+02 -</event> -<event> - 7 100 0.4661500E-01 0.1393697E+03 0.7546772E-02 0.1218039E+00 - 21 -1 0 0 502 503 0.00000000000E+00 0.00000000000E+00 0.37147042117E+03 0.37147042117E+03 0.00000000000E+00 0. 1. - 21 -1 0 0 501 502 0.00000000000E+00 0.00000000000E+00 -0.12155234288E+03 0.12155234288E+03 0.00000000000E+00 0. -1. - 23 2 1 2 0 0 -0.14545393414E+02 0.43863730614E+02 0.17206907724E+03 0.20019406064E+03 0.91292383249E+02 0. 0. - -11 1 3 3 0 0 0.13010869348E+02 0.38002589586E+02 0.16675487651E+03 0.17152454162E+03 0.00000000000E+00 0. 1. - 11 1 3 3 0 0 -0.27556262762E+02 0.58611410283E+01 0.53142007301E+01 0.28669519022E+02 0.00000000000E+00 0. -1. - 3 1 1 2 501 0 0.41253058663E+02 -0.10849195963E+03 -0.65540416229E+02 0.13329616016E+03 0.00000000000E+00 0. -1. - -3 1 1 2 0 503 -0.26707665249E+02 0.64628229018E+02 0.14338941728E+03 0.15953254325E+03 0.00000000000E+00 0. 1. -# 0.5465521E+02 0.5465521E+02 0.1053072E+03 0.6992930E+02 -</event> -<event> - 7 100 0.4661500E-01 0.9363752E+02 0.7546772E-02 0.1294557E+00 - 1 -1 0 0 503 0 0.00000000000E+00 0.00000000000E+00 0.39416870824E+03 0.39416870824E+03 0.00000000000E+00 0. -1. - 21 -1 0 0 501 502 0.00000000000E+00 0.00000000000E+00 -0.86037514044E+02 0.86037514044E+02 0.00000000000E+00 0. -1. - 23 2 1 2 0 0 0.19939736850E+02 -0.30593797270E+02 0.32468026446E+03 0.33899651778E+03 0.90375834144E+02 0. 0. - -13 1 3 3 0 0 0.34874658408E+01 0.32071656603E+02 0.12330728952E+03 0.12745760559E+03 0.00000000000E+00 0. 1. - 13 1 3 3 0 0 0.16452271009E+02 -0.62665453873E+02 0.20137297494E+03 0.21153891219E+03 0.00000000000E+00 0. -1. - 1 1 1 2 501 0 -0.70809208165E+01 0.20330175502E+02 0.59565924799E+02 0.63336836617E+02 0.00000000000E+00 0. -1. - 21 1 1 2 503 502 -0.12858816033E+02 0.10263621768E+02 -0.76114995059E+02 0.77872867896E+02 0.00000000000E+00 0. -1. -# 0.9037583E+02 0.9037583E+02 0.2449884E+02 0.1645269E+02 -</event> -<event> - 7 100 0.4661500E-01 0.1032575E+03 0.7546772E-02 0.1274863E+00 - -1 -1 0 0 0 501 0.00000000000E+00 0.00000000000E+00 0.46173835399E+02 0.46173835399E+02 0.00000000000E+00 0. 1. - 21 -1 0 0 501 502 0.00000000000E+00 0.00000000000E+00 -0.22596055826E+03 0.22596055826E+03 0.00000000000E+00 0. -1. - 23 2 1 2 0 0 -0.13160785424E+02 -0.73631146091E+02 -0.88336341765E+02 0.14715416176E+03 0.90864107869E+02 0. 0. - -13 1 3 3 0 0 0.15347582078E+00 -0.75195423682E+02 -0.10284334579E+03 0.12740144846E+03 0.00000000000E+00 0. -1. - 13 1 3 3 0 0 -0.13314261245E+02 0.15642775910E+01 0.14507004022E+02 0.19752713297E+02 0.00000000000E+00 0. 1. - -1 1 1 2 0 503 0.15214451262E+02 0.38919222724E+02 -0.21799458223E+02 0.47131749421E+02 0.00000000000E+00 0. 1. - 21 1 1 2 503 502 -0.20536658380E+01 0.34711923367E+02 -0.69650922877E+02 0.77848482483E+02 0.00000000000E+00 0. -1. -# 0.4775420E+02 0.4775420E+02 0.4904934E+02 0.3477262E+02 -</event> -<event> - 7 100 0.4661500E-01 0.9730305E+02 0.7546772E-02 0.1286752E+00 - 21 -1 0 0 501 502 0.00000000000E+00 0.00000000000E+00 0.19496671930E+03 0.19496671930E+03 0.00000000000E+00 0. 1. - -3 -1 0 0 0 501 0.00000000000E+00 0.00000000000E+00 -0.64065850339E+02 0.64065850339E+02 0.00000000000E+00 0. 1. - 23 2 1 2 0 0 -0.35040901334E+02 -0.26868883767E+02 0.13015739911E+02 0.10178175269E+03 0.90776175367E+02 0. 0. - -13 1 3 3 0 0 -0.27029887363E+02 -0.57352681021E+02 0.24871605239E+02 0.68106839439E+02 0.00000000000E+00 0. 1. - 13 1 3 3 0 0 -0.80110139713E+01 0.30483797254E+02 -0.11855865328E+02 0.33674913252E+02 0.00000000000E+00 0. -1. - -3 1 1 2 0 503 0.14439333775E+02 0.30341491013E+02 -0.37717028364E+01 0.33813106617E+02 0.00000000000E+00 0. 1. - 21 1 1 2 503 502 0.20601567559E+02 -0.34726072462E+01 0.12165683188E+03 0.12343771033E+03 0.00000000000E+00 0. 1. -# 0.9077618E+02 0.9077618E+02 0.3503671E+02 0.2089219E+02 -</event> -<event> - 7 100 0.4661500E-01 0.1009759E+03 0.7546772E-02 0.1279310E+00 - -4 -1 0 0 0 501 0.00000000000E+00 0.00000000000E+00 0.24710763047E+03 0.24710763047E+03 0.00000000000E+00 0. 1. - 21 -1 0 0 502 503 0.00000000000E+00 0.00000000000E+00 -0.11245616539E+03 0.11245616539E+03 0.00000000000E+00 0. -1. - 23 2 1 2 0 0 -0.28781924341E+02 0.10264953629E+02 -0.82891445667E+02 0.13089257465E+03 0.96582119936E+02 0. 0. - -13 1 3 3 0 0 0.33877607070E+02 0.16777928150E+02 -0.24904284662E+02 0.45270459776E+02 0.00000000000E+00 0. 1. - 13 1 3 3 0 0 -0.62659531411E+02 -0.65129745209E+01 -0.57987161005E+02 0.85622114872E+02 0.00000000000E+00 0. -1. - -4 1 1 2 0 503 0.30494472573E+02 0.22349058990E+02 0.11616887132E+03 0.12216627996E+03 0.00000000000E+00 0. 1. - 21 1 1 2 502 501 -0.17125482317E+01 -0.32614012620E+02 0.10137403943E+03 0.10650494125E+03 0.00000000000E+00 0. -1. -# 0.9658212E+02 0.9658212E+02 0.2946227E+02 0.3265894E+02 -</event> -<event> - 7 100 0.4661500E-01 0.1107319E+03 0.7546772E-02 0.1261153E+00 - -1 -1 0 0 0 502 0.00000000000E+00 0.00000000000E+00 0.17022760633E+04 0.17022760633E+04 0.00000000000E+00 0. 1. - 4 -1 0 0 502 0 0.00000000000E+00 0.00000000000E+00 -0.59956811070E+02 0.59956811070E+02 0.00000000000E+00 0. -1. - 23 2 1 2 0 0 0.50314537867E+02 -0.19721450993E+02 -0.14616297234E+01 0.10791001176E+03 0.93391358953E+02 0. 0. - -13 1 3 3 0 0 -0.20939122449E+02 -0.26449411416E+02 -0.11495761927E+02 0.35639455039E+02 0.00000000000E+00 0. 1. - 13 1 3 3 0 0 0.71253660317E+02 0.67279604236E+01 0.10034132204E+02 0.72270556723E+02 0.00000000000E+00 0. -1. - -1 1 1 2 0 501 -0.24984797602E+02 0.54230222476E+02 0.15509344701E+04 0.15520834023E+04 0.00000000000E+00 0. 1. - 4 1 1 2 501 0 -0.25329740266E+02 -0.34508771484E+02 0.92846411884E+02 0.10223946034E+03 0.00000000000E+00 0. -1. -# 0.9339136E+02 0.9339136E+02 0.5949460E+02 0.4280714E+02 -</event> -<event> - 7 100 0.4661500E-01 0.9387442E+02 0.7546772E-02 0.1294040E+00 - -2 -1 0 0 0 502 0.00000000000E+00 0.00000000000E+00 0.35867411642E+03 0.35867411642E+03 0.00000000000E+00 0. -1. - -3 -1 0 0 0 501 0.00000000000E+00 0.00000000000E+00 -0.50027764918E+03 0.50027764918E+03 0.00000000000E+00 0. 1. - 23 2 1 2 0 0 -0.22623579961E+02 0.11636470469E+02 -0.48601823484E+03 0.49502626850E+03 0.90498884474E+02 0. 0. - -13 1 3 3 0 0 0.90621251392E+01 -0.33483744285E+02 -0.12123648851E+03 0.12610142501E+03 0.00000000000E+00 0. 1. - 13 1 3 3 0 0 -0.31685705100E+02 0.45120214754E+02 -0.36478174633E+03 0.36892484349E+03 0.00000000000E+00 0. -1. - -2 1 1 2 0 501 -0.39544967430E+01 -0.15290568289E+02 0.33518092052E+03 0.33555281105E+03 0.00000000000E+00 0. -1. - -3 1 1 2 0 502 0.26578076704E+02 0.36540978193E+01 0.92337815610E+01 0.28372686056E+02 0.00000000000E+00 0. 1. -# 0.9049888E+02 0.9049888E+02 0.1579365E+02 0.2494712E+02 -</event> -<event> - 7 100 0.4661500E-01 0.1127370E+03 0.7546772E-02 0.1257679E+00 - 4 -1 0 0 502 0 0.00000000000E+00 0.00000000000E+00 0.35833350811E+02 0.35833350811E+02 0.00000000000E+00 0. -1. - 1 -1 0 0 501 0 0.00000000000E+00 0.00000000000E+00 -0.57960794210E+03 0.57960794210E+03 0.00000000000E+00 0. -1. - 23 2 1 2 0 0 0.15223573494E+02 -0.52986018833E+02 -0.31181258697E+03 0.33029885522E+03 0.93973235471E+02 0. 0. - -11 1 3 3 0 0 -0.27223389589E+02 -0.35877535961E+02 -0.24630332337E+03 0.25038697576E+03 0.00000000000E+00 0. 1. - 11 1 3 3 0 0 0.42446963083E+02 -0.17108482872E+02 -0.65509263593E+02 0.79911879453E+02 0.00000000000E+00 0. -1. - 1 1 1 2 502 0 -0.50998440831E+02 0.67811899053E+02 -0.48695493882E+02 0.97829166125E+02 0.00000000000E+00 0. -1. - 4 1 1 2 501 0 0.35774867336E+02 -0.14825880220E+02 -0.18326651045E+03 0.18731327158E+03 0.00000000000E+00 0. -1. -# 0.9397324E+02 0.9397324E+02 0.6227892E+02 0.3872531E+02 -</event> -</event> -</LesHouchesEvents> diff --git a/Generators/MadGraph_i/share/jobOptions.MadGraphPythia.py b/Generators/MadGraph_i/share/jobOptions.MadGraphPythia.py deleted file mode 100644 index 8f42d11fb16ba331ecbbd0f023c624ab5a95cdda..0000000000000000000000000000000000000000 --- a/Generators/MadGraph_i/share/jobOptions.MadGraphPythia.py +++ /dev/null @@ -1,38 +0,0 @@ -## Special setup for event generation -include("AthenaCommon/Atlas_Gen.UnixStandardJob.py") -## Other includes needed by the physics file -include("PartPropSvc/PartPropSvc.py") - -theApp.EvtMax = 5 - -from AthenaCommon.Logging import logging -svcMgr.MessageSvc.OutputLevel = INFO -from AthenaCommon.AlgSequence import AlgSequence -topAlg = AlgSequence("TopAlg") - -## Random seeds -from AthenaServices.AthenaServicesConf import AtRndmGenSvc -svcMgr += AtRndmGenSvc() -AtRndmGenSvc.Seeds = ["PYTHIA 330020611 841000366", "PYTHIA_INIT 824021 3247532"] - -## PYTHIA in MadGraph mode -from Pythia_i.Pythia_iConf import Pythia -topAlg += Pythia() -topAlg.Pythia.PythiaCommand = ["pyinit user madgraph", - "pypars mstp 81 21", - "pystat 1 3 4 5", - "pyinit dumpr 1 5"] - -## Print out events -from TruthExamples.TruthExamplesConf import PrintMC -topAlg += PrintMC() - -## Ntuple service output -from AthenaPoolCnvSvc.WriteAthenaPool import AthenaPoolOutputStream -from PoolSvc.PoolSvcConf import PoolSvc -from AthenaPoolCnvSvc.AthenaPoolCnvSvcConf import AthenaPoolCnvSvc - -## Output data stream config -stream1 = AthenaPoolOutputStream("StreamEVGEN") -stream1.ItemList += ["EventInfo#*", "McEventCollection#*"] -stream1.OutputFile = "test.pool.root" diff --git a/Generators/MadGraph_i/share/pythia_card.dat b/Generators/MadGraph_i/share/pythia_card.dat deleted file mode 100644 index fb23536d0361f2c768482824de888465d841d2f0..0000000000000000000000000000000000000000 --- a/Generators/MadGraph_i/share/pythia_card.dat +++ /dev/null @@ -1,16 +0,0 @@ -!...Fix (0) or event-based (1) PS scale - PSSCALE=1 - -!... for exclusive samples =1 - IEXCFILE=1 - -!... shower kT option: -!.. use only with MSTP(81)>20 and put Qcut = xqcut - showerkt=.true. - -!...QCUT for matching using the kt measure cutoff -! put Qcut=xqcut (in ME generation) if showerkt=.true. -! otherwise, use Qcut > xqcut (default value: qcut=max(xqcut*1.2,xqcut+5) ) - QCUT = 15. - - diff --git a/Generators/MadGraph_i/src/initmadgraph.F b/Generators/MadGraph_i/src/initmadgraph.F deleted file mode 100644 index c05e5e1039cb2b39a34772f8b84607487296c890..0000000000000000000000000000000000000000 --- a/Generators/MadGraph_i/src/initmadgraph.F +++ /dev/null @@ -1,1283 +0,0 @@ -c -C This version adapted from pythia-pgs/src/ME2pythia.f -c .. version pythia-pgs_V2.1.7.tar.gz -c in MadGraph download pages in: -c http://madgraph.hep.uiuc.edu/ -c -C****************************************************** -C* MadEvent - Pythia interface. * -C* Version 4.2, 4 March 2007 * -C* * -C* - Improvement of matching routines * -C* * -C* Version 4.1 * -C* * -C* - Possibility to use several files * -C* * -C* Version 4.0 * -C* * -C* - Routines for matching of ME and PS * -C* * -C* Version 3.8 * -C* * -C* - Give the event number in the event file in the * -C* new variable IEVNT in MGUPPRIV * -C* * -C* Version 3.7 * -C* * -C* - Set mass of massless outgoing particles to * -C* Pythia mass (PMAS(I,1)) * -C* * -C* Version 3.6 * -C* * -C* - Removed the 1st # from the event file header * -C* * -C* Version 3.5 * -C* * -C* - Reads according to the new LH event file format * -C* - Now only LNHIN, LNHOUT and MSCAL in MGUPPRIV * -C* * -C* Version 3.4 * -C* * -C* - Reads particle masses from event file * -C* * -C* Version 3.3 * -C* * -C* - Added option MSCAL in common block MGUPPRIV to * -C* choose between fix (0, default) or event-based * -C* (1) scale for Pythia parton showering (SCALUP). * -C* - Fixed bug in reading the SLHA file * -C* * -C* Version 3.2 * -C* * -C* - Reading the SLHA format param_card from the * -C* banner * -C* - Added support for lpp1/lpp2 = 2 or 3 * -C* - Removed again support for different MadEvent * -C* processes in different files (no longer * -C* necessary with new multiple processes support * -C* in MadGraph/MadEvent * -C* * -C* Version 3.1 * -C* - Added support for different MadEvent processes * -C* in different files * -C* - Fixed bug in e+e- collisions * -C* * -C* Written by J.Alwall, alwall@fyma.ucl.ac.be * -C* Earlier versions by S.Mrenna, M.Kirsanov * -C* * -C****************************************************** -C* * -C* Instructions: * -C* Please use the common block MGUPPRIV: * -C* - The logical unit LNHIN must be an opened * -C* MadEvent event file * -C* - The output unit LNHOUT is by default 6 (std out) * -C* - Set MSCAL to 1 if a dynamical scale is desired * -C* for parton showers rather than the one given as * -C* factorization scale by MadEvent (otherwise 0) * -C* - IEVNT gives the number of the event in the event * -C* file * -C* - ICKKW is set automatically depending on whether * -C* the events generated are matched or not * -C* * -C****************************************************** - -C... UPINIT -C... Routine called by PYINIT to set up user-defined processes. - - SUBROUTINE INITMADGRAPH - - IMPLICIT NONE -c$$$ CHARACTER*132 CHAR_READ - -C... Pythia parameters. - INTEGER MSTP,MSTI,MRPY - DOUBLE PRECISION PARP,PARI,RRPY - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) - COMMON/PYDATR/MRPY(6),RRPY(100) - save /pypars/,/pydatr/ - -C... User process initialization commonblock. -C #include "GeneratorModules/heprup.inc" -c.. following is already included in include above -c (../../../InstallArea/include/AtlasProduction/../InstallArea/include/GeneratorModules/GeneratorModules/heprup.inc) -C...User process initialization commonblock. - INTEGER MAXPUP - PARAMETER (MAXPUP=100) - INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP - DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP - COMMON/HEPRUP/IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2), - & IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP),XMAXUP(MAXPUP), - & LPRUP(MAXPUP) - - - -C... Extra commonblock to transfer run info. - INTEGER LNHIN,LNHOUT,MSCAL,IEVNT,ICKKW,ISCALE - COMMON/MGUPPRIV/LNHIN,LNHOUT,MSCAL,IEVNT,ICKKW,ISCALE - -C... Inputs for the matching algorithm - double precision etcjet,rclmax,etaclmax,qcut,clfact - integer maxjets,minjets,iexcfile,ktsche,mektsc,nexcres,excres(30) - integer nremres, remres(30) - integer nqmatch,nexcproc,iexcproc(MAXPUP),iexcval(MAXPUP) - logical nosingrad,showerkt,jetprocs - common/MEMAIN/etcjet,rclmax,etaclmax,qcut,clfact,maxjets,minjets, - $ iexcfile,ktsche,mektsc,nexcres,excres,nremres,remres, - $ nqmatch,nexcproc,iexcproc,iexcval,nosingrad,showerkt,jetprocs - -C... Parameter arrays (local) - integer maxpara - parameter (maxpara=1000) - integer npara,iseed - character*20 param(maxpara),value(maxpara) - -C... Lines to read in assumed never longer than 200 characters. - INTEGER MAXLEN,IBEG,IPR,I - PARAMETER (MAXLEN=200) - CHARACTER*(MAXLEN) STRING - -C... Functions - INTEGER iexclusive - EXTERNAL iexclusive - -C... Set pythia input card and STDHEP output file - CHARACTER*80 pythia_card - -C... Format for reading lines. - CHARACTER*6 STRFMT - STRFMT='(A000)' - WRITE(STRFMT(3:5),'(I3)') MAXLEN - - -c************************************************************************ -c Collider energy and type * -c************************************************************************ -c lpp = -1 (antiproton), 0 (no pdf), 1 (proton) -c ebeam= energy of each beam in GeV - - -c$$$C... Set incoming beams: default LHC. -c These values should be read directly from the input file -c$$$c... -c$$$ IDBMUP(1)=2212 -c$$$ IDBMUP(2)=2212 -c$$$ EBMUP(1)=3500D0 -c$$$ EBMUP(2)=3500D0 -c$$$ -c$$$C... Decide on weighting strategy: unweighted on input. -c$$$ IDWTUP=3 -c$$$ -c -C-- open the file - OPEN(UNIT=LNHIN,STATUS='OLD',FILE='events.lhe') - -C Check for new LH interface -c... use now only the LH interface!!! - READ(LNHIN,STRFMT) STRING - IF (STRING(1:17).EQ.'<LesHouchesEvents') THEN - Print *,' ==> Version pythia-pgs_V2.1.7 <== ' -c Print *,'LesHouchesEvents format detected: OK !!!' - ELSE - Print *,'Error: not Les Houches format !!!' - stop - ENDIF - -c ------------------------------------------------------ -C... Extract the model parameter card and read it. - CALL MODELPAR(LNHIN) - -c... Read the <init> block information - -C... Loop until finds line beginning with "<init>" or "<init ". - 100 READ(LNHIN,STRFMT,END=130,ERR=130) STRING -C... Pick out random number seed and use for PYR initialization - IF(INDEX(STRING,'iseed').NE.0)THEN - READ(STRING,*) iseed - IF(iseed.gt.0) THEN - WRITE(LNHOUT,*) 'Initializing PYR with random seed ',iseed - MRPY(1) = iseed - MRPY(2) = 0 - ENDIF - ENDIF - IBEG=0 - 110 IBEG=IBEG+1 -C... Allow indentation. - IF(STRING(IBEG:IBEG).EQ.' '.AND.IBEG.LT.MAXLEN-5) GOTO 110 - IF(STRING(IBEG:IBEG+5).NE.'<init>'.AND. - & STRING(IBEG:IBEG+5).NE.'<init ') GOTO 100 - -C... Read first line of initialization info. - READ(LNHIN,*,END=130,ERR=130) IDBMUP(1),IDBMUP(2),EBMUP(1), - & EBMUP(2),PDFGUP(1),PDFGUP(2),PDFSUP(1),PDFSUP(2),IDWTUP,NPRUP - -C... Read NPRUP subsequent lines with information on each process. - DO 120 IPR=1,NPRUP - READ(LNHIN,*,END=130,ERR=130) XSECUP(IPR),XERRUP(IPR), - & XMAXUP(IPR),LPRUP(IPR) - 120 CONTINUE - -C... Set PDFLIB or LHAPDF pdf number for Pythia - - IF(PDFSUP(1).NE.19070.AND.(PDFSUP(1).NE.0.OR.PDFSUP(2).NE.0))THEN -c Not CTEQ5L, which is standard in Pythia - CALL PYGIVE('MSTP(52)=2') ! use of PDFLIB/LHAPDF -c The following works for both PDFLIB and LHAPDF (where PDFGUP(1)=0) -c But note that the MadEvent output uses the LHAPDF numbering scheme - IF(PDFSUP(1).NE.0)THEN - MSTP(51)=1000*PDFGUP(1)+PDFSUP(1) - ELSE - MSTP(51)=1000*PDFGUP(2)+PDFSUP(2) - ENDIF - ENDIF - -C...Initialize widths and partial widths for resonances. - CALL PYINRE - -C... Calculate xsec reduction due to non-decayed resonances -C... based on first event only! - - CALL BRSUPP - - REWIND(LNHIN) - -C... Extract cuts and matching parameters - CALL read_params(LNHIN,npara,param,value,maxpara) - - call get_integer(npara,param,value," ickkw ",ickkw,0) - if(ickkw.eq.1)then - call get_integer(npara,param,value," ktscheme ",mektsc,1) - write(*,*)'Running matching with ME ktscheme ',mektsc - endif - - -c$$$c.. read beam energies -->already read from input file -c$$$ call get_real (npara,param,value," ebeam1 " ,EBMUP(1),7d3) -c$$$ call get_real (npara,param,value," ebeam2 " ,EBMUP(2),7d3) - -C... Read pythia input card - pythia_card=' ' -cc IF(ickkw.gt.0) then - pythia_card='pythia_card.dat' - PRINT * - PRINT *,'Reading pythia input card' - CALL RPYCARD(pythia_card) -cc END IF -C -C... Set kt clustering scheme (if not already set) -C - IF(ABS(IDBMUP(1)).EQ.11.AND.ABS(IDBMUP(2)).EQ.11.AND. - $ IDBMUP(1).EQ.-IDBMUP(2).AND.ktsche.EQ.0)THEN - ktsche=1 - ELSE IF(ktsche.EQ.0) THEN -c see ktclusdble.f for explanation of ktsche (IMODE) - ktsche=4313 - ENDIF - -C... Enhance primordial kt -c CALL PYGIVE('PARP(91)=2.5') -c CALL PYGIVE('PARP(93)=15') - - IF(ickkw.gt.0.and.(NPRUP.gt.1.or.iexclusive(LPRUP(1)).ne.-1)) - $ CALL set_matching(LNHIN,npara,param,value) - -C... For photon initial states from protons: Set proton not to break up - CALL PYGIVE('MSTP(98)=1') - -C... Reset event numbering - IEVNT=0 - - RETURN - -C... Error exit: give up if initalization does not work. - 130 WRITE(*,*) ' Failed to read LHEF initialization information.' - WRITE(*,*) ' Event generation will be stopped.' - STOP - - - RETURN - END - - -C************************************************ - - SUBROUTINE RPYCARD(pythia_card) - - IMPLICIT NONE - -c$$$C...Commonblock to set PDF library path -c$$$ CHARACTER*232 LHAPATH -c$$$ COMMON/LHAPDFC/LHAPATH -c$$$ SAVE /LHAPDFC/ - -C...Extra commonblock to transfer run info. - INTEGER LNHIN,LNHOUT,MSCAL,IEVNT,ICKKW,ISCALE - COMMON/MGUPPRIV/LNHIN,LNHOUT,MSCAL,IEVNT,ICKKW,ISCALE - -C...Inputs for jet clustering and Pythia run - INTEGER NITER,NFILES,PIDCUT(2,10),PIDCUTN(2,10),NPIDCUT - COMMON/JETPAR/NITER,NFILES,PIDCUT,PIDCUTN,NPIDCUT - -c$$$C...GETJET commonblocks -c$$$ INTEGER MNCY,MNCPHI,NCY,NCPHI -c$$$c$$$ INTEGER NJMAX,JETNO,NJJET -c$$$ DOUBLE PRECISION YCMIN,YCMAX,DELY,DELPHI,ET,STHCAL,CTHCAL,CPHCAL, -c$$$ & SPHCAL -c$$$c$$$ DOUBLE PRECISION PJJET,ETJETJ -c$$$ PARAMETER (MNCY=200) -c$$$ PARAMETER (MNCPHI=200) -c$$$ COMMON/CALOR/DELY,DELPHI,ET(MNCY,MNCPHI), -c$$$ $CTHCAL(MNCY),STHCAL(MNCY),CPHCAL(MNCPHI),SPHCAL(MNCPHI), -c$$$ $YCMIN,YCMAX,NCY,NCPHI - -C...Commonblock to transfer event-by-event matching info - INTEGER NLJETS,IEXC,Ifile - DOUBLE PRECISION PTCLUS - COMMON/MEMAEV/PTCLUS(20),NLJETS,IEXC,Ifile - -C...Inputs for the matching algorithm - INTEGER MAXPUP - PARAMETER (MAXPUP=100) - double precision etcjet,rclmax,etaclmax,qcut,clfact - integer maxjets,minjets,iexcfile,ktsche,mektsc,nexcres,excres(30) - integer nremres, remres(30) - integer nqmatch,nexcproc,iexcproc(MAXPUP),iexcval(MAXPUP) - logical nosingrad,showerkt,jetprocs - common/MEMAIN/etcjet,rclmax,etaclmax,qcut,clfact,maxjets,minjets, - $ iexcfile,ktsche,mektsc,nexcres,excres,nremres,remres, - $ nqmatch,nexcproc,iexcproc,iexcval,nosingrad,showerkt,jetprocs - - INTEGER ios, i - CHARACTER*80 pythia_card - CHARACTER*132 line - - if (pythia_card.ne.' ') then - open (85, file=pythia_card, status='old', - . form='formatted', ERR=999) ! removed for Linux: readonly) - ios = 0 - do while(ios.eq.0) - read(85,fmt='(a)',iostat=ios) line - if (ios.eq.0) then - call remove_comments(line,132) -c$$$ if(index(line,'lhapath').ne.0.or. -c$$$ $ index(line,'LHAPATH').ne.0) then -c$$$ LHAPATH=line(index(line,'=')+1:) -c$$$ write(*,*) 'Set LHAPATH to '//LHAPATH -c$$$ cycle -c$$$ endif - call downcase_line(line,132) - if(index(line,'psscale').ne.0) then - READ(line(index(line,'=')+1:),*,err=100) MSCAL - write(*,*) 'Set scale choice to ',MSCAL - if(MSCAL.eq.0) write(*,*) ' (fixed scale)' - if(MSCAL.gt.0) write(*,*) ' (Herwig scale)' - else if(index(line,'iexcfile').ne.0) then - READ(line(index(line,'=')+1:),*,err=100) IEXCFILE - if(IEXCFILE.eq.0) - $ write(*,*) ' Assuming inclusive sample ', - $ '(IEXCFILE=0)' - if(IEXCFILE.gt.0) - $ write(*,*) ' Assuming exclusive sample', - $ '(IEXCFILE=',IEXCFILE,')' - else if(index(line,'qcut').ne.0) then - READ(line(index(line,'=')+1:),*,err=100) qcut - write(*,*) 'Read Qcut = ',qcut - else if(index(line,'etcjet').ne.0) then - READ(line(index(line,'=')+1:),*,err=100) etcjet - write(*,*) 'Read Etcjet = ',etcjet - else if(index(line,'clfact').ne.0) then - READ(line(index(line,'=')+1:),*,err=100) clfact - write(*,*) 'Read clfact = ',clfact -c$$$ else if(index(line,'ncy').ne.0) then -c$$$ READ(line(index(line,'=')+1:),*,err=100) ncy -c$$$ write(*,*) 'Read NCY = ',ncy -c$$$ else if(index(line,'ncphi').ne.0) then -c$$$ READ(line(index(line,'=')+1:),*,err=100) ncphi -c$$$ write(*,*) 'Read NCPHI = ',ncphi -c$$$ else if(index(line,'niter').ne.0) then -c$$$ READ(line(index(line,'=')+1:),*,err=100) niter -c$$$ write(*,*) 'Read Niter = ',niter -c$$$ else if(index(line,'nfiles').ne.0) then -c$$$ READ(line(index(line,'=')+1:),*,err=100) nfiles -c$$$ write(*,*) 'Read Nfiles = ',nfiles -c$$$ else if(index(line,'ifile').ne.0) then -c$$$ READ(line(index(line,'=')+1:),*,err=100) ifile -c$$$ write(*,*) 'Read Ifile = ',ifile - else if(index(line,'ktsche').ne.0) then - READ(line(index(line,'=')+1:),*,err=100) ktsche - write(*,*) 'Read Ktsche = ',ktsche - else if(index(line,'iscale').ne.0) then - READ(line(index(line,'=')+1:),*,err=100) ISCALE - write(*,*) 'Read ISCALE = ',ISCALE - else if(index(line,'maxjets').ne.0) then - READ(line(index(line,'=')+1:),*,err=100) MAXJETS - write(*,*) 'Read MAXJETS = ',MAXJETS - else if(index(line,'minjets').ne.0) then - READ(line(index(line,'=')+1:),*,err=100) MINJETS - write(*,*) 'Read MINJETS = ',MINJETS - else if(index(line,'excres').ne.0) then - if(nexcres.ge.30)then - write(*,*) 'Too many excluded resonances.' - cycle - endif - nexcres=nexcres+1 - READ(line(index(line,'=')+1:),*,err=100) EXCRES(nexcres) - write(*,*) 'Read EXCRES = ',EXCRES(nexcres) - else if(index(line,'remres').ne.0) then - if(nremres.ge.30)then - write(*,*) 'Too many excluded resonances.' - cycle - endif - nremres=nremres+1 - READ(line(index(line,'=')+1:),*,err=100) REMRES(nremres) - write(*,*) 'Read REMRES = ',REMRES(nremres) - else if(index(line,'nosingrad').ne.0) then - READ(line(index(line,'=')+1:),*,err=100) nosingrad - write(*,*) 'Read nosingrad = ',nosingrad - else if(index(line,'showerkt').ne.0) then - READ(line(index(line,'=')+1:),*,err=100) showerkt - write(*,*) 'Read showerkt = ',showerkt - else if(index(line,'nqmatch').ne.0) then - READ(line(index(line,'=')+1:),*,err=100) nqmatch - write(*,*) 'Read nqmatch = ',nqmatch - else if(index(line,'iexcproc').ne.0) then - nexcproc=nexcproc+1 - if(nexcproc.le.MAXPUP) then - READ(line(index(line,'(')+1:),*,err=100) - $ iexcproc(nexcproc) - READ(line(index(line,'=')+1:),*,err=100) - $ iexcval(nexcproc) - write(*,*) 'Read iexcproc(',nexcproc,')=', - $ iexcproc(nexcproc),' and iexcval=', - $ iexcval(nexcproc) - else - write(*,*) 'Too many iexcproc definitions.' - endif - else if(index(line,'pidcut').ne.0) then - npidcut=npidcut+1 - if(npidcut.le.10) then - if(index(line,'-').gt.0)then - READ(line(index(line,'(')+1:index(line,'-')-1), - $ *,err=100) pidcut(1,npidcut) - READ(line(index(line,'-')+1:),*,err=100) - $ pidcut(2,npidcut) - else - READ(line(index(line,'(')+1:),*,err=100) - $ pidcut(1,npidcut) - pidcut(2,npidcut)=pidcut(1,npidcut) - endif - READ(line(index(line,'=')+1:),*,err=100) - $ pidcutn(1,npidcut),pidcutn(2,npidcut) - write(*,*) 'Read pidcut(',npidcut,')=', - $ pidcut(1,npidcut),'-',pidcut(2,npidcut), - $ ' with min=',pidcutn(1,npidcut), - $ ' and max=',pidcutn(2,npidcut) - else - write(*,*) 'Too many iexcproc definitions.' - endif - else if(line.ne.' ') then - call pygive(line) - endif - endif - cycle - 100 write(*,*) 'Failed to read line: ',line(1:len_trim(line)) - enddo - close(85) - endif - RETURN - 999 if(ickkw .gt.0) then - write(6,*) - & " ===> No file pythia_card.dat, but ickkw > 0 ==> STOP" - stop - else - write(6,*) " ===> No file pythia_card.dat " - end if - RETURN - END - -C************************************************ - - subroutine remove_comments(line,len) - - implicit none - character*(*) line - integer i,len - - logical comment - - comment = .false. - if(line(1:1).eq.'#') comment = .true. - do i=1,len - if(line(i:i).eq.'!') comment = .true. - if(comment) line(i:i) = ' ' - enddo - - return - end -C********************************************************************* - - - subroutine case_trap2(name,n) -c********************************************************** -c change the string to lowercase if the input is not -c********************************************************** - implicit none -c -c ARGUMENT -c - character(*) name - integer n -c -c LOCAL -c - integer i,k - - do i=1,n - k=ichar(name(i:i)) - if(k.ge.65.and.k.le.90) then !upper case A-Z - k=ichar(name(i:i))+32 - name(i:i)=char(k) - endif - enddo - - return - end - - -C********************************************************************* - - -C********************************************************************* - - subroutine BRSUPP - - IMPLICIT NONE - -C...Three Pythia functions return integers, so need declaring. - INTEGER PYCOMP,MWID - DOUBLE PRECISION WIDS - -C...Resonance width and secondary decay treatment. - COMMON/PYINT4/MWID(500),WIDS(500,5) - -C...User process initialization commonblock. -C #include "GeneratorModules/heprup.inc" - INTEGER MAXPUP - PARAMETER (MAXPUP=100) - INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP - DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP - COMMON/HEPRUP/IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2), - & IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP),XMAXUP(MAXPUP), - & LPRUP(MAXPUP) -C...User process event common block. -C #include "GeneratorModules/hepeup.inc" - INTEGER MAXNUP - PARAMETER (MAXNUP=500) - INTEGER NUP,IDPRUP,IDUP,ISTUP,MOTHUP,ICOLUP - DOUBLE PRECISION XWGTUP,SCALUP,AQEDUP,AQCDUP,PUP,VTIMUP,SPINUP - COMMON/HEPEUP/NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP,IDUP(MAXNUP), - & ISTUP(MAXNUP),MOTHUP(2,MAXNUP),ICOLUP(2,MAXNUP),PUP(5,MAXNUP), - & VTIMUP(MAXNUP),SPINUP(MAXNUP) - -C...Extra commonblock to transfer run info. - INTEGER LNHIN,LNHOUT,MSCAL,IEVNT,ICKKW,ISCALE - COMMON/MGUPPRIV/LNHIN,LNHOUT,MSCAL,IEVNT,ICKKW,ISCALE - - INTEGER I,J,IBEG - INTEGER IPR,isup - DOUBLE PRECISION SUPPCS - LOGICAL SUPDONE(MAXPUP) - DATA SUPDONE/MAXPUP*.false./ - -C...Lines to read in assumed never longer than 200 characters. - INTEGER MAXLEN - PARAMETER (MAXLEN=200) - CHARACTER*(MAXLEN) STRING - -C...Format for reading lines. - CHARACTER*6 STRFMT - STRFMT='(A000)' - WRITE(STRFMT(3:5),'(I3)') MAXLEN - -C...Loop until finds line beginning with "<event>" or "<event ". - 100 READ(LNHIN,STRFMT,END=130,ERR=130) STRING - IBEG=0 - 110 IBEG=IBEG+1 -C...Allow indentation. - IF(STRING(IBEG:IBEG).EQ.' '.AND.IBEG.LT.MAXLEN-6) GOTO 110 - IF(STRING(IBEG:IBEG+6).NE.'<event>'.AND. - &STRING(IBEG:IBEG+6).NE.'<event ') GOTO 100 - -C...Read first line of event info. - READ(LNHIN,*,END=130,ERR=130) NUP,IDPRUP,XWGTUP,SCALUP, - &AQEDUP,AQCDUP - - do IPR=1,NPRUP - if(IDPRUP .eq. LPRUP(IPR))then - isup=IPR - exit - endif - enddo - - if(SUPDONE(isup)) GOTO 100 - -C...Read NUP subsequent lines with information on each particle. - DO 120 I=1,NUP - READ(LNHIN,*,END=130,ERR=130) IDUP(I),ISTUP(I), - & MOTHUP(1,I),MOTHUP(2,I),ICOLUP(1,I),ICOLUP(2,I), - & (PUP(J,I),J=1,5),VTIMUP(I),SPINUP(I) - 120 CONTINUE - - SUPPCS=1. - do I=3,NUP - if (ISTUP(I).EQ.1.AND.(IABS(IDUP(I)).GE.23.OR. - $ (IABS(IDUP(I)).GE.6.AND.IABS(IDUP(I)).LE.8))) - $ THEN - WRITE(LNHOUT,*) 'Resonance ',IDUP(I), ' has BRTOT ', - $ wids(PYCOMP(IDUP(I)),2) - if(wids(PYCOMP(IDUP(I)),2).lt.0.95) then - SUPPCS=SUPPCS*wids(PYCOMP(IDUP(I)),2) - endif - endif - enddo - if(SUPPCS.gt.0)then - write(*,*)'Multiplying cross section for process ', - $ IDPRUP,' by ',SUPPCS - XSECUP(isup)=XSECUP(isup)*SUPPCS - else - write(*,*) 'Warning! Got cross section suppression 0 ', - $ 'for process ',IDPRUP - write(*,*) 'No cross section reduction done' - endif - - SUPDONE(isup)=.true. - do i=1,NPRUP - if(.not. SUPDONE(i)) GOTO 100 - enddo - - 130 RETURN - END - -C********************************************************************* - -C...modelpar -C...Checks if model is mssm and extracts SLHA file -C...Reads all particle masses and SM parameters in any case - - SUBROUTINE MODELPAR(iunit) - - IMPLICIT NONE - -C...Three Pythia functions return integers, so need declaring. - INTEGER IMSS - DOUBLE PRECISION RMSS -C...Supersymmetry parameters. - COMMON/PYMSSM/IMSS(0:99),RMSS(0:99) -C...Pythia common blocks - INTEGER MSTU,MSTJ,KCHG - DOUBLE PRECISION PARU,PARJ,PMAS,PARF,VCKM -C...Parameters. - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) -C...Particle properties + some flavour parameters. - COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) -C...Inputs for the matching algorithm - INTEGER MAXPUP - PARAMETER (MAXPUP=100) - double precision etcjet,rclmax,etaclmax,qcut,clfact - integer maxjets,minjets,iexcfile,ktsche,mektsc,nexcres,excres(30) - integer nremres, remres(30) - integer nqmatch,nexcproc,iexcproc(MAXPUP),iexcval(MAXPUP) - logical nosingrad,showerkt,jetprocs - common/MEMAIN/etcjet,rclmax,etaclmax,qcut,clfact,maxjets,minjets, - $ iexcfile,ktsche,mektsc,nexcres,excres,nremres,remres, - $ nqmatch,nexcproc,iexcproc,iexcval,nosingrad,showerkt,jetprocs - -C...Local variables - CHARACTER*132 buff,block_name - CHARACTER*8 model - INTEGER iunit,ivalue - DOUBLE PRECISION value - LOGICAL block_found - INTEGER i,ifail - - buff=' ' - do 100 while(buff.ne.'</slha>' .and. - $ buff(1:21).ne.'# End param_card.dat') - read(iunit,'(a132)',end=105,err=98) buff - - if(buff.eq.'<slha>' .or. - $ buff(1:23).eq.'# Begin param_card.dat')then -c Write out the SLHA file to unit 24 - open(24,status='scratch') - do while(.true.) - read(iunit,'(a132)',end=99,err=98) buff - if(buff.eq.'</slha>' .or. - $ buff(1:21).eq.'# End param_card.dat') goto 105 - write(24,'(a80)') buff - end do - endif - - call case_trap2(buff,len_trim(buff)) -c Find and store model used - if(buff(1:14).eq.'# begin model')then -c change to avoid compiler warnings -c read(iunit,'(a132)',end=99,err=98) buff -c model=buff - read(iunit,'(a8)',end=99,err=98) model - endif -c Find and store QED or HIG order used -c if(index(buff,'qed').gt.0.or.index(buff,'hig').gt.0)then -c read(buff(index(buff,'=')+1:),*,err=100) ivalue -c nosingrad=nosingrad.or.(ivalue.ge.2) -c if(nosingrad) print *,'Set nosingrad to .true.' -c endif - 100 continue - 105 continue - REWIND(iunit) - REWIND(24) - - -C...Read the SLHA file - block_found=.false. - do 200 while(.true.) - read(24,'(a132)',end=205,err=98) buff - call case_trap2(buff,len_trim(buff)) -c Look for "block" to find SM and mass parameters - if(buff(1:1).eq.'b')then - block_name=buff(7:) - block_found=.true. - endif - if (block_found) then - do 10 while(.true.) - read(24,'(a132)',end=205,err=98) buff - if(buff(1:1).eq.'#') goto 10 - if(buff(1:1).ne.' ') then - block_found=.false. - backspace(24) - goto 200 - endif - if(block_name(1:8).eq.'sminputs')then - read(buff,*) ivalue,value - print *,'Reading parameter ',block_name(1:8), - $ ivalue,value - if(ivalue.eq.1) PARU(103)=1d0/value - if(ivalue.eq.2) PARU(105)=value - if(ivalue.eq.4) PMAS(23,1)=value - if(ivalue.eq.6) PMAS(6,1)=value - if(ivalue.eq.7) PMAS(15,1)=value - endif - 10 continue - endif - 200 continue - 205 continue - PARU(102) = 0.5d0-sqrt(0.25d0- - $ PARU(1)/sqrt(2d0)*PARU(103)/PARU(105)/PMAS(23,1)**2) - REWIND(24) - - write(*,*) 'Reading model: ',model - -c open(24,FILE='SLHA.dat',ERR=91) -c Pick out SM parameters -c CALL READSMLHA(iunit) - -cccc write(*,*) ' index(model) = ', index(model,'mssm') - - if(index(model,'mssm').ne.0) then - call PYGIVE('IMSS(1) = 11') - CALL PYSLHA(1,0,IFAIL) - endif - call PYGIVE('IMSS(21)= 24') ! Logical unit number of SLHA spectrum file - if(model(1:2).ne.'sm'.and.model(1:4).ne.'mssm') then - call PYGIVE('IMSS(22)= 24') ! Logical unit number of SLHA decay file -c Let Pythia read all new particles ("qnumbers") - CALL PYSLHA(0,0,IFAIL) - endif -c Let Pythia read all masses and, if possible, decays - CALL PYSLHA(5,0,IFAIL) - CALL PYSLHA(2,0,IFAIL) -c Stop Pythia from reading particles and decays a second time - if(model(1:2).ne.'sm'.and.model(1:4).ne.'mssm') then - call PYGIVE('IMSS(21)= 0') ! Logical unit number of SLHA spectrum file - call PYGIVE('IMSS(22)= 0') ! Logical unit number of SLHA decay file - endif - RETURN - - 90 WRITE(*,*)'Could not open file SLHA.dat for writing' - WRITE(*,*)'Quitting...' - STOP - 98 WRITE(*,*)'Unexpected error reading file' - WRITE(*,*)'Quitting...' - STOP - 99 WRITE(*,*)'Unexpected end of file' - WRITE(*,*)'Quitting...' - STOP - - END - -c---------------------------------------------------------------------- -c READ_PARAMS -c Read the parameters from the run_card in the MadEvent event file -c---------------------------------------------------------------------- - - subroutine read_params(iunit,npara,param,value,maxpara) - implicit none - -c -c arguments -c - integer iunit - character*20 param(*),value(*) - integer npara,maxpara - -C...User process initialization commonblock. -C #include "GeneratorModules/heprup.inc" - INTEGER MAXPUP - PARAMETER (MAXPUP=100) - INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP - DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP - COMMON/HEPRUP/IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2), - & IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP),XMAXUP(MAXPUP), - & LPRUP(MAXPUP) -C...User process event common block. -C #include "GeneratorModules/hepeup.inc" - INTEGER MAXNUP - PARAMETER (MAXNUP=500) - INTEGER NUP,IDPRUP,IDUP,ISTUP,MOTHUP,ICOLUP - DOUBLE PRECISION XWGTUP,SCALUP,AQEDUP,AQCDUP,PUP,VTIMUP,SPINUP - COMMON/HEPEUP/NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP,IDUP(MAXNUP), - & ISTUP(MAXNUP),MOTHUP(2,MAXNUP),ICOLUP(2,MAXNUP),PUP(5,MAXNUP), - & VTIMUP(MAXNUP),SPINUP(MAXNUP) - -c -c local -c - logical fopened - character*20 ctemp - integer k,i,l1,l2,j,jj - character*132 buff - integer NPARTS,KNTEV,NJETS,MAXNJ,NREAD - parameter(MAXNJ=6) - double precision WTEVNT,XSTOT(MAXNJ),DUMMY,WTMAX -c -c---------- -c start -c---------- - - NREAD=0 - -c -c read the input-card.dat -c - npara=1 - param(1)=' ' - value(1)=' ' - WTMAX=0D0 -c -c read in values -c - buff=' ' - do while(index(buff,'<MGRunCard>').eq.0 .and. - $ index(buff,'Begin run_card.dat').eq.0) - read(iunit,'(a132)',end=99,err=99) buff - enddo - do 10 while(index(buff,'</MGRunCard>').eq.0 .and. - $ index(buff,'End run_card.dat').eq.0 .and. - $ npara.le.maxpara) - read(iunit,'(a132)',end=99,err=99) buff - if(buff.eq.' ') then - goto 10 - endif - if(index(buff,'=').ne.0) then - l1=index(buff,'=') - l2=index(buff,'!') - if(l2.eq.0) l2=l1+20 !maybe there is no comment... -c - value(npara)=buff(1:l1-1) - ctemp=value(npara) - call case_trap2(ctemp,20) - value(npara)=ctemp -c - param(npara)=" "//buff(l1+1:l2-1) - ctemp=param(npara) - call case_trap2(ctemp,20) - param(npara)=ctemp -c - npara=npara+1 - endif - 10 continue - - REWIND(iunit) - - return - - 99 WRITE(*,*)'Unexpected error reading file' - WRITE(*,*)'Quitting...' - STOP - end - -C********************************************************************* -C...set_matching -C...Sets parameters for the matching, i.e. cuts and jet multiplicities -C********************************************************************* - - SUBROUTINE set_matching(iunit,npara,param,value) - implicit none -c -c arguments -c - integer iunit,npara - character*20 param(*),value(*) - -C...Pythia parameters. - INTEGER MSTP,MSTI - DOUBLE PRECISION PARP,PARI - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) - -C...User process initialization commonblock. -C #include "GeneratorModules/heprup.inc" - INTEGER MAXPUP - PARAMETER (MAXPUP=100) - INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP - DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP - COMMON/HEPRUP/IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2), - & IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP),XMAXUP(MAXPUP), - & LPRUP(MAXPUP) - -C...User process event common block. -C #include "GeneratorModules/hepeup.inc" - INTEGER MAXNUP - PARAMETER (MAXNUP=500) - INTEGER NUP,IDPRUP,IDUP,ISTUP,MOTHUP,ICOLUP - DOUBLE PRECISION XWGTUP,SCALUP,AQEDUP,AQCDUP,PUP,VTIMUP,SPINUP - COMMON/HEPEUP/NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP,IDUP(MAXNUP), - & ISTUP(MAXNUP),MOTHUP(2,MAXNUP),ICOLUP(2,MAXNUP),PUP(5,MAXNUP), - & VTIMUP(MAXNUP),SPINUP(MAXNUP) - -C...Extra commonblock to transfer run info. - INTEGER LNHIN,LNHOUT,MSCAL,IEVNT,ICKKW,ISCALE - COMMON/MGUPPRIV/LNHIN,LNHOUT,MSCAL,IEVNT,ICKKW,ISCALE - -C...Inputs for the matching algorithm - double precision etcjet,rclmax,etaclmax,qcut,clfact - integer maxjets,minjets,iexcfile,ktsche,mektsc,nexcres,excres(30) - integer nremres, remres(30) - integer nqmatch,nexcproc,iexcproc(MAXPUP),iexcval(MAXPUP) - logical nosingrad,showerkt,jetprocs - common/MEMAIN/etcjet,rclmax,etaclmax,qcut,clfact,maxjets,minjets, - $ iexcfile,ktsche,mektsc,nexcres,excres,nremres,remres, - $ nqmatch,nexcproc,iexcproc,iexcval,nosingrad,showerkt,jetprocs - -C...Commonblock to transfer event-by-event matching info - INTEGER NLJETS,IEXC,Ifile - DOUBLE PRECISION PTCLUS - COMMON/MEMAEV/PTCLUS(20),NLJETS,IEXC,Ifile - -C...Local variables - INTEGER I,MAXNJ,NREAD,MINJ,MAXJ - parameter(MAXNJ=6) - DOUBLE PRECISION XSTOT(MAXNJ),XSECTOT - DOUBLE PRECISION ptjmin,etajmax,drjmin,ptbmin,etabmax,xqcut - -C...Functions - INTEGER iexclusive - EXTERNAL iexclusive - -C...Need lower scale for final state radiation in e+e- - IF(IABS(IDBMUP(1)).EQ.11.AND.IABS(IDBMUP(2)).EQ.11) then - CALL PYGIVE('PARP(71)=1') - ENDIF - -C...CRUCIAL FOR JET-PARTON MATCHING: CALL UPVETO, ALLOW JET-PARTON MATCHING - call pygive('MSTP(143)=1') - -C -C...Check jet multiplicities and set processes -C - DO I=1,MAXNJ - XSTOT(I)=0D0 - ENDDO - MINJ=MAXNJ - MAXJ=0 - NREAD=0 - DO WHILE(.true.) - CALL UPEVNT() - IF(NUP.eq.0) goto 20 - IF(IEXC.EQ.-1) cycle - if(NLJETS.GT.MAXJ) MAXJ=NLJETS - if(NLJETS.LT.MINJ) MINJ=NLJETS -c XSTOT(NLJETS+1)=XSTOT(NLJETS+1)+XWGTUP - XSTOT(NLJETS+1)=XSTOT(NLJETS+1)+1 - NREAD=NREAD+1 - ENDDO - - 20 continue - - REWIND(iunit) - - write(LNHOUT,*) 'Minimum number of jets in file: ',MINJ - write(LNHOUT,*) 'Maximum number of jets in file: ',MAXJ - - XSECTOT=0d0 - DO I=1,NPRUP - XSECTOT=XSECTOT+XSECUP(I) - ENDDO - - IF(NPRUP.eq.1.AND.MINJ.lt.MAXJ)THEN -C...If different process ids not set by user, set by jet number - jetprocs=.true. - IF(IEXCFILE.eq.0.AND.iexclusive(LPRUP(1)).ne.1) THEN - nexcproc=1 - IEXCPROC(1)=MAXJ-MINJ - IEXCVAL(1)=0 - ENDIF - NPRUP=1+MAXJ-MINJ - DO I=MINJ,MAXJ - XSECUP(1+I-MINJ) = XSECTOT*XSTOT(I+1)/NREAD - XMAXUP(1+I-MINJ) = XMAXUP(1) - LPRUP(1+I-MINJ) = I-MINJ - ENDDO - ELSE IF(IEXCFILE.EQ.0) THEN -C...Check if any IEXCPROC set, then set IEXCFILE=1 - DO I=1,NPRUP - IF(iexclusive(LPRUP(I)).EQ.0) IEXCFILE=1 - ENDDO - ENDIF - - WRITE(LNHOUT,*) ' Number of Events Read:: ',NREAD - WRITE(LNHOUT,*) ' Total cross section (pb):: ',XSECTOT - WRITE(LNHOUT,*) ' Process Cross Section (pb):: ' - DO I=1,NPRUP - WRITE(LNHOUT,'(I5,E23.5)') I,XSECUP(I) - ENDDO - - IF(MINJETS.EQ.-1) MINJETS=MINJ - IF(MAXJETS.EQ.-1) MAXJETS=MAXJ - write(LNHOUT,*) 'Minimum number of jets allowed: ',MINJETS - write(LNHOUT,*) 'Maximum number of jets allowed: ',MAXJETS - write(LNHOUT,*) 'IEXCFILE = ',IEXCFILE - write(LNHOUT,*) 'jetprocs = ',jetprocs - DO I=1,NPRUP - write(LNHOUT,*) 'IEXCPROC(',LPRUP(I),') = ', - $ iexclusive(LPRUP(I)) - ENDDO - - CALL FLUSH() - -C...Run PYPTFS instead of PYSHOW -c CALL PYGIVE("MSTJ(41)=12") - -c*********************************************************************** -c Read in jet cuts -c*********************************************************************** - - call get_real (npara,param,value," ptj " ,ptjmin,7d3) - call get_real (npara,param,value," etaj " ,etajmax,7d3) - call get_real (npara,param,value," ptb " ,ptbmin,7d3) - call get_real (npara,param,value," etab " ,etabmax,7d3) - call get_real (npara,param,value," drjj " ,drjmin,7d3) - call get_real (npara,param,value," xqcut " ,xqcut,0d0) - - if(qcut.lt.xqcut) then - if(showerkt) then - qcut=xqcut - else - qcut=max(xqcut*1.2,xqcut+5) - endif - endif - if(xqcut.le.0)then - write(*,*) 'Warning! ME generation QCUT = 0. QCUT set to 0!' - qcut=0 - endif - -c etajmax=min(etajmax,etabmax) -c ptjmin=max(ptjmin,ptbmin) - -c IF(ICKKW.EQ.1) THEN -c WRITE(*,*) ' ' -c WRITE(*,*) 'INPUT 0 FOR INCLUSIVE JET SAMPLE, 1 FOR EXCLUSIVE' -c WRITE(*,*) '(SELECT 0 FOR HIGHEST PARTON MULTIPLICITY SAMPLE)' -c WRITE(*,*) '(SELECT 1 OTHERWISE)' -c READ(*,*) IEXCFILE -c ENDIF - -C INPUT PARAMETERS FOR CONE ALGORITHM - - IF(ETCJET.LE.PTJMIN)THEN - ETCJET=MAX(PTJMIN+5,1.2*PTJMIN) - ENDIF - - RCLMAX=DRJMIN - ETACLMAX=ETAJMAX - IF(qcut.le.0)THEN - WRITE(*,*) 'JET CONE PARAMETERS FOR MATCHING:' - WRITE(*,*) 'ET>',ETCJET,' R=',RCLMAX - WRITE(*,*) 'DR(PARTON-JET)<',1.5*RCLMAX - WRITE(*,*) 'ETA(JET)<',ETACLMAX - ELSE IF(ickkw.eq.1) THEN - WRITE(*,*) 'KT JET PARAMETERS FOR MATCHING:' - WRITE(*,*) 'QCUT=',qcut - WRITE(*,*) 'ETA(JET)<',ETACLMAX - WRITE(*,*) 'Note that in ME generation, qcut = ',xqcut - if(showerkt.and.MSTP(81).LT.20)THEN - WRITE(*,*)'WARNING: "shower kt" needs pT-ordered showers' - WRITE(*,*)' Setting MSTP(81)=',20+MOD(MSTP(81),10) - MSTP(81)=20+MOD(MSTP(81),10) - endif - else if(ickkw.eq.2)then -c Turn off color coherence suppressions (leave this to ME) - CALL PYGIVE('MSTP(62)=2') - CALL PYGIVE('MSTP(67)=0') - if(MSTP(81).LT.20)THEN - WRITE(*,*)'WARNING: Must run CKKW with pt-ordered showers' - WRITE(*,*)' Setting MSTP(81)=',20+MOD(MSTP(81),10) - MSTP(81)=20+MOD(MSTP(81),10) - endif - endif - return - end - - subroutine get_real(npara,param,value,name,var,def_value) -c---------------------------------------------------------------------------------- -c finds the parameter named "name" in param and associate to "value" in value -c---------------------------------------------------------------------------------- - implicit none - -c -c arguments -c - integer npara - character*20 param(*),value(*) - character*(*) name - real*8 var,def_value -c -c local -c - logical found - integer i -c -c start -c - i=1 - found=.false. - do while(.not.found.and.i.le.npara) - found = (index(param(i),name).ne.0) - if (found) read(value(i),*) var -c if (found) write (*,*) name,var - i=i+1 - enddo - if (.not.found) then - write (*,*) "Warning: parameter ",name," not found" - write (*,*) " setting it to default value ",def_value - var=def_value - else - write(*,*) 'Found parameter ',name,var - endif - return - - end -c - - subroutine get_integer(npara,param,value,name,var,def_value) -c---------------------------------------------------------------------------------- -c finds the parameter named "name" in param and associate to "value" in value -c---------------------------------------------------------------------------------- - implicit none -c -c arguments -c - integer npara - character*20 param(*),value(*) - character*(*) name - integer var,def_value -c -c local -c - logical found - integer i -c -c start -c - i=1 - found=.false. - do while(.not.found.and.i.le.npara) - found = (index(param(i),name).ne.0) - if (found) read(value(i),*) var -c if (found) write (*,*) name,var - i=i+1 - enddo - if (.not.found) then - write (*,*) "Warning: parameter ",name," not found" - write (*,*) " setting it to default value ",def_value - var=def_value - else - write(*,*)'Found parameter ',name,var - endif - return - - end - -C*********************************** -C Common block initialization block -C*********************************** - - BLOCK DATA MEPYDAT - - INTEGER MAXPUP - PARAMETER (MAXPUP=100) -C...Inputs for the matching algorithm - double precision etcjet,rclmax,etaclmax,qcut,clfact - integer maxjets,minjets,iexcfile,ktsche,mektsc,nexcres,excres(30) - integer nremres, remres(30) - integer nqmatch,nexcproc,iexcproc(MAXPUP),iexcval(MAXPUP) - logical nosingrad,showerkt,jetprocs - common/MEMAIN/etcjet,rclmax,etaclmax,qcut,clfact,maxjets,minjets, - $ iexcfile,ktsche,mektsc,nexcres,excres,nremres,remres, - $ nqmatch,nexcproc,iexcproc,iexcval,nosingrad,showerkt,jetprocs - -c$$$C...GETJET commonblocks -c$$$ INTEGER MNCY,MNCPHI,NCY,NCPHI,NJMAX,JETNO,NCJET -c$$$ DOUBLE PRECISION YCMIN,YCMAX,DELY,DELPHI,ET,STHCAL,CTHCAL,CPHCAL, -c$$$ & SPHCAL,PCJET,ETJET -c$$$ PARAMETER (MNCY=200) -c$$$ PARAMETER (MNCPHI=200) -c$$$ COMMON/CALORM/DELY,DELPHI,ET(MNCY,MNCPHI), -c$$$ $CTHCAL(MNCY),STHCAL(MNCY),CPHCAL(MNCPHI),SPHCAL(MNCPHI), -c$$$ $YCMIN,YCMAX,NCY,NCPHI - -C...Extra commonblock to transfer run info. - INTEGER LNHIN,LNHOUT,MSCAL,IEVNT,ICKKW,ISCALE - COMMON/MGUPPRIV/LNHIN,LNHOUT,MSCAL,IEVNT,ICKKW,ISCALE - -C...Initialization statements - DATA qcut,clfact,etcjet/0d0,0d0,0d0/ - DATA ktsche,mektsc,maxjets,minjets,nexcres/0,1,-1,-1,0/ - DATA nqmatch/5/ - DATA nexcproc/0/ - DATA iexcproc/MAXPUP*-1/ - DATA iexcval/MAXPUP*-2/ - DATA nosingrad,showerkt,jetprocs/.false.,.false.,.false./ - -c$$$ DATA NCY,NCPHI/50,60/ - - DATA LNHIN,LNHOUT,MSCAL,IEVNT,ICKKW,ISCALE/77,6,0,0,0,1/ - - END -C************************************************ - - subroutine downcase_line(line,len) - - implicit none - character*(*) line - integer i,len,k - - do i=1,len - k=ichar(line(i:i)) - if(k.ge.65.and.k.le.90) then !upper case A-Z - k=ichar(line(i:i))+32 - line(i:i)=char(k) - endif - enddo - - return - end diff --git a/Generators/MadGraph_i/src/ktclusdble.F b/Generators/MadGraph_i/src/ktclusdble.F deleted file mode 100644 index c508beb925dfb6184c3857553865c5e2a673047b..0000000000000000000000000000000000000000 --- a/Generators/MadGraph_i/src/ktclusdble.F +++ /dev/null @@ -1,1575 +0,0 @@ -c -c copied from pythia-pgs/src/ -c - -C----------------------------------------------------------------------- -C----------------------------------------------------------------------- -C----------------------------------------------------------------------- -C KTCLUS: written by Mike Seymour, July 1992. -C Last modified November 2000. -C Please send comments or suggestions to Mike.Seymour@rl.ac.uk -C -C This is a general-purpose kt clustering package. -C It can handle ee, ep and pp collisions. -C It is loosely based on the program of Siggi Bethke. -C -C The time taken (on a 10MIP machine) is (0.2microsec)*N**3 -C where N is the number of particles. -C Over 90 percent of this time is used in subroutine KTPMIN, which -C simply finds the minimum member of a one-dimensional array. -C It is well worth thinking about optimization: on the SPARCstation -C a factor of two increase was obtained simply by increasing the -C optimization level from its default value. -C -C The approach is to separate the different stages of analysis. -C KTCLUS does all the clustering and records a merging history. -C It returns a simple list of the y values at which each merging -C occured. Then the following routines can be called to give extra -C information on the most recently analysed event. -C KTCLUR is identical but includes an R parameter, see below. -C KTYCUT gives the number of jets at each given YCUT value. -C KTYSUB gives the number of sub-jets at each given YCUT value. -C KTBEAM gives same info as KTCLUS but only for merges with the beam -C KTJOIN gives same info as KTCLUS but for merges of sub-jets. -C KTRECO reconstructs the jet momenta at a given value of YCUT. -C It also gives information on which jets at scale YCUT belong to -C which macro-jets at scale YMAC, for studying sub-jet properties. -C KTINCL reconstructs the jet momenta according to the inclusive jet -C definition of Ellis and Soper. -C KTISUB, KTIJOI and KTIREC are like KTYSUB, KTJOIN and KTRECO, -C except that they only apply to one inclusive jet at a time, -C with the pt of that jet automatically used for ECUT. -C KTWICH gives a list of which particles ended up in which jets. -C KTWCHS gives the same thing, but only for subjets. -C Note that the numbering of jets used by these two routines is -C guaranteed to be the same as that used by KTRECO. -C -C The collision type and analysis type are indicated by the first -C argument of KTCLUS. IMODE=<TYPE><ANGLE><MONO><RECOM> where -C TYPE: 1=>ee, 2=>ep with p in -z direction, 3=>pe, 4=>pp -C ANGLE: 1=>angular kt def., 2=>DeltaR, 3=>f(DeltaEta,DeltaPhi) -C where f()=2(cosh(eta)-cos(phi)) is the QCD emission metric -C MONO: 1=>derive relative pseudoparticle angles from jets -C 2=>monotonic definitions of relative angles -C RECOM: 1=>E recombination scheme, 2=>pt scheme, 3=>pt**2 scheme -C -C There are also abbreviated forms for the most common combinations: -C IMODE=1 => E scheme in e+e- (=1111) -C 2 => E scheme in ep (=2111) -C 3 => E scheme in pe (=3111) -C 4 => E scheme in pp (=4111) -C 5 => covariant E scheme in pp (=4211) -C 6 => covariant pt-scheme in pp (=4212) -C 7 => covariant monotonic pt**2-scheme in pp (=4223) -C -C KTRECO no longer needs to reconstruct the momenta according to the -C same recombination scheme in which they were clustered. Its first -C argument gives the scheme, taking the same values as RECOM above. -C -C Note that unlike previous versions, all variables which hold y -C values have been named in a consistent way: -C Y() is the output scale at which jets were merged, -C YCUT is the input scale at which jets should be counted, and -C jet-momenta reconstructed etc, -C YMAC is the input macro-jet scale, used in determining whether -C or not each jet is a sub-jet. -C The original scheme defined in our papers is equivalent to always -C setting YMAC=1. -C Whenever a YCUT or YMAC variable is used, it is rounded down -C infinitesimally, so that for example, setting YCUT=Y(2) refers -C to the scale where the event is 2-jet, even if rounding errors -C have shifted its value slightly. -C -C An R parameter can be used in hadron-hadron collisions by -C calling KTCLUR instead of KTCLUS. This is as suggested by -C Ellis and Soper, but implemented slightly differently, -C as in M.H. Seymour, LU TP 94/2 (submitted to Nucl. Phys. B.). -C R**2 multiplies the single Kt everywhere it is used. -C Calling KTCLUR with R=1 is identical to calling KTCLUS. -C R plays a similar role to the jet radius in a cone-type algorithm, -C but is scaled up by about 40% (ie R=0.7 in a cone algorithm is -C similar to this algorithm with R=1). -C Note that R.EQ.1 must be used for the e+e- and ep versions, -C and is strongly recommended for the hadron-hadron version. -C However, R values smaller than 1 have been found to be useful for -C certain applications, particularly the mass reconstruction of -C highly-boosted colour-singlets such as high-pt hadronic Ws, -C as in M.H. Seymour, LU TP 93/8 (to appear in Z. Phys. C.). -C Situations in which R<1 is useful are likely to also be those in -C which the inclusive reconstruction method is more useful. -C -C Also included is a set of routines for doing Lorentz boosts: -C KTLBST finds the boost matrix to/from the cm frame of a 4-vector -C KTRROT finds the rotation matrix from one vector to another -C KTMMUL multiplies together two matrices -C KTVMUL multiplies a vector by a matrix -C KTINVT inverts a transformation matrix (nb NOT a general 4 by 4) -C KTFRAM boosts a list of vectors between two arbitrary frames -C KTBREI boosts a list of vectors between the lab and Breit frames -C KTHADR boosts a list of vectors between the lab and hadronic cmf -C The last two need the momenta in the +z direction of the lepton -C and hadron beams, and the 4-momentum of the outgoing lepton. -C -C The main reference is: -C S. Catani, Yu.L. Dokshitzer, M.H. Seymour and B.R. Webber, -C Nucl.Phys.B406(1993)187. -C The ep version was proposed in: -C S. Catani, Yu.L. Dokshitzer and B.R. Webber, -C Phys.Lett.285B(1992)291. -C The inclusive reconstruction method was proposed in: -C S.D. Ellis and D.E. Soper, -C Phys.Rev.D48(1993)3160. -C -C----------------------------------------------------------------------- -C----------------------------------------------------------------------- -C----------------------------------------------------------------------- - SUBROUTINE KTCLUS(IMODE,PP,NN,ECUT,Y,*) - IMPLICIT NONE -C---DO CLUSTER ANALYSIS OF PARTICLES IN PP -C -C IMODE = INPUT : DESCRIBED ABOVE -C PP(I,J) = INPUT : 4-MOMENTUM OF Jth PARTICLE: I=1,4 => PX,PY,PZ,E -C NN = INPUT : NUMBER OF PARTICLES -C ECUT = INPUT : DENOMINATOR OF KT MEASURE. IF ZERO, ETOT IS USED -C Y(J) = OUTPUT : VALUE OF Y FOR WHICH EVENT CHANGES FROM BEING -C J JET TO J-1 JET -C LAST ARGUMENT IS LABEL TO JUMP TO IF FOR ANY REASON THE EVENT -C COULD NOT BE PROCESSED (MOST LIKELY DUE TO TOO MANY PARTICLES) -C -C NOTE THAT THE MOMENTA ARE DECLARED DOUBLE PRECISION, -C AND ALL OTHER FLOATING POINT VARIABLES ARE DECLARED DOUBLE PRECISION -C - INTEGER IMODE,NN - DOUBLE PRECISION PP(4,*) - DOUBLE PRECISION ECUT,Y(*),ONE - ONE=1 - CALL KTCLUR(IMODE,PP,NN,ONE,ECUT,Y,*999) - RETURN - 999 RETURN 1 - END -C----------------------------------------------------------------------- - SUBROUTINE KTCLUR(IMODE,PP,NN,R,ECUT,Y,*) - IMPLICIT NONE -C---DO CLUSTER ANALYSIS OF PARTICLES IN PP -C -C IMODE = INPUT : DESCRIBED ABOVE -C PP(I,J) = INPUT : 4-MOMENTUM OF Jth PARTICLE: I=1,4 => PX,PY,PZ,E -C NN = INPUT : NUMBER OF PARTICLES -C R = INPUT : ELLIS AND SOPER'S R PARAMETER, SEE ABOVE. -C ECUT = INPUT : DENOMINATOR OF KT MEASURE. IF ZERO, ETOT IS USED -C Y(J) = OUTPUT : VALUE OF Y FOR WHICH EVENT CHANGES FROM BEING -C J JET TO J-1 JET -C LAST ARGUMENT IS LABEL TO JUMP TO IF FOR ANY REASON THE EVENT -C COULD NOT BE PROCESSED (MOST LIKELY DUE TO TOO MANY PARTICLES) -C -C NOTE THAT THE MOMENTA ARE DECLARED DOUBLE PRECISION, -C AND ALL OTHER FLOATING POINT VARIABLES ARE DECLARED DOUBLE PRECISION -C - INTEGER NMAX,IM,IMODE,TYPE,ANGL,MONO,RECO,N,I,J,NN, - & IMIN,JMIN,KMIN,NUM,HIST,INJET,IABBR,NABBR - PARAMETER (NMAX=512,NABBR=7) - DOUBLE PRECISION PP(4,*) - DOUBLE PRECISION R,ECUT,Y(*),P,KT,ETOT,RSQ,KTP,KTS,KTPAIR,KTSING, - & KTMIN,ETSQ,KTLAST,KTMAX,KTTMP - LOGICAL FIRST - CHARACTER TITLE(4,4)*10 -C---KT RECORDS THE KT**2 OF EACH MERGING. -C---KTLAST RECORDS FOR EACH MERGING, THE HIGHEST ECUT**2 FOR WHICH THE -C RESULT IS NOT MERGED WITH THE BEAM (COULD BE LARGER THAN THE -C KT**2 AT WHICH IT WAS MERGED IF THE KT VALUES ARE NOT MONOTONIC). -C THIS MAY SOUND POINTLESS, BUT ITS USEFUL FOR DETERMINING WHETHER -C SUB-JETS SURVIVED TO SCALE Y=YMAC OR NOT. -C---HIST RECORDS MERGING HISTORY: -C N=>DELETED TRACK N, M*NMAX+N=>MERGED TRACKS M AND N (M<N). - COMMON /KTCOMM/ETOT,RSQ,P(9,NMAX),KTP(NMAX,NMAX),KTS(NMAX), - & KT(NMAX),KTLAST(NMAX),HIST(NMAX),NUM - DIMENSION INJET(NMAX),IABBR(NABBR) - DATA FIRST,TITLE,IABBR/.TRUE., - & 'e+e- ','ep ','pe ','pp ', - & 'angle ','DeltaR ','f(DeltaR) ','**********', - & 'no ','yes ','**********','**********', - & 'E ','Pt ','Pt**2 ','**********', - & 1111,2111,3111,4111,4211,4212,4223/ -C---CHECK INPUT - IM=IMODE - IF (IM.GE.1.AND.IM.LE.NABBR) IM=IABBR(IM) - TYPE=MOD(IM/1000,10) - ANGL=MOD(IM/100 ,10) - MONO=MOD(IM/10 ,10) - RECO=MOD(IM ,10) - IF (NN.GT.NMAX.OR.NN.LT.1.OR.(NN.LT.2.AND.TYPE.EQ.1)) - & CALL KTWARN('KTCLUS',100,*999) - IF (TYPE.LT.1.OR.TYPE.GT.4.OR.ANGL.LT.1.OR.ANGL.GT.4.OR. - & MONO.LT.1.OR.MONO.GT.2.OR.RECO.LT.1.OR.RECO.GT.3) - & CALL KTWARN('KTCLUS',101,*999) - IF (FIRST) THEN - WRITE (6,'(/,1X,54(''*'')/A)') - & ' KTCLUS: written by Mike Seymour, July 1992.' - WRITE (6,'(A)') - & ' Last modified November 2000.' - WRITE (6,'(A)') - & ' Please send comments or suggestions to Mike.Seymour@rl.ac.uk' - WRITE (6,'(/A,I2,2A)') - & ' Collision type =',TYPE,' = ',TITLE(TYPE,1) - WRITE (6,'(A,I2,2A)') - & ' Angular variable =',ANGL,' = ',TITLE(ANGL,2) - WRITE (6,'(A,I2,2A)') - & ' Monotonic definition =',MONO,' = ',TITLE(MONO,3) - WRITE (6,'(A,I2,2A)') - & ' Recombination scheme =',RECO,' = ',TITLE(RECO,4) - IF (R.NE.1) THEN - WRITE (6,'(A,F5.2)') - & ' Radius parameter =',R - IF (TYPE.NE.4) WRITE (6,'(A)') - & ' R.NE.1 is strongly discouraged for this collision type!' - ENDIF - WRITE (6,'(1X,54(''*'')/)') - FIRST=.FALSE. - ENDIF -C---COPY PP TO P - N=NN - NUM=NN - CALL KTCOPY(PP,N,P,(RECO.NE.1)) - ETOT=0 - DO 100 I=1,N - ETOT=ETOT+P(4,I) - 100 CONTINUE - IF (ETOT.EQ.0) CALL KTWARN('KTCLUS',102,*999) - IF (ECUT.EQ.0) THEN - ETSQ=1/ETOT**2 - ELSE - ETSQ=1/ECUT**2 - ENDIF - RSQ=R**2 -C---CALCULATE ALL PAIR KT's - DO 210 I=1,N-1 - DO 200 J=I+1,N - KTP(J,I)=-1 - KTP(I,J)=KTPAIR(ANGL,P(1,I),P(1,J),KTP(J,I)) - 200 CONTINUE - 210 CONTINUE -C---CALCULATE ALL SINGLE KT's - DO 230 I=1,N - KTS(I)=KTSING(ANGL,TYPE,P(1,I)) - 230 CONTINUE - KTMAX=0 -C---MAIN LOOP - 300 CONTINUE -C---FIND MINIMUM MEMBER OF KTP - CALL KTPMIN(KTP,NMAX,N,IMIN,JMIN) -C---FIND MINIMUM MEMBER OF KTS - CALL KTSMIN(KTS,NMAX,N,KMIN) -C---STORE Y VALUE OF TRANSITION FROM N TO N-1 JETS - KTMIN=KTP(IMIN,JMIN) - KTTMP=RSQ*KTS(KMIN) - IF ((TYPE.GE.2.AND.TYPE.LE.4).AND. - & (KTTMP.LE.KTMIN.OR.N.EQ.1)) - & KTMIN=KTTMP - KT(N)=KTMIN - Y(N)=KT(N)*ETSQ -C---IF MONO.GT.1, SEQUENCE IS SUPPOSED TO BE MONOTONIC, IF NOT, WARN - IF (KTMIN.LT.KTMAX.AND.MONO.GT.1) CALL KTWARN('KTCLUS',1,*999) - IF (KTMIN.GE.KTMAX) KTMAX=KTMIN -C---IF LOWEST KT IS TO A BEAM, THROW IT AWAY AND MOVE LAST ENTRY UP - IF (KTMIN.EQ.KTTMP) THEN - CALL KTMOVE(P,KTP,KTS,NMAX,N,KMIN,1) -C---UPDATE HISTORY AND CROSS-REFERENCES - HIST(N)=KMIN - INJET(N)=KMIN - DO 400 I=N,NN - IF (INJET(I).EQ.KMIN) THEN - KTLAST(I)=KTMAX - INJET(I)=0 - ELSEIF (INJET(I).EQ.N) THEN - INJET(I)=KMIN - ENDIF - 400 CONTINUE -C---OTHERWISE MERGE JETS IMIN AND JMIN AND MOVE LAST ENTRY UP - ELSE - CALL KTMERG(P,KTP,KTS,NMAX,IMIN,JMIN,N,TYPE,ANGL,MONO,RECO) - CALL KTMOVE(P,KTP,KTS,NMAX,N,JMIN,1) -C---UPDATE HISTORY AND CROSS-REFERENCES - HIST(N)=IMIN*NMAX+JMIN - INJET(N)=IMIN - DO 600 I=N,NN - IF (INJET(I).EQ.JMIN) THEN - INJET(I)=IMIN - ELSEIF (INJET(I).EQ.N) THEN - INJET(I)=JMIN - ENDIF - 600 CONTINUE - ENDIF -C---THATS ALL THERE IS TO IT - N=N-1 - IF (N.GT.1 .OR. N.GT.0.AND.(TYPE.GE.2.AND.TYPE.LE.4)) GOTO 300 - IF (N.EQ.1) THEN - KT(N)=1D20 - Y(N)=KT(N)*ETSQ - ENDIF - RETURN - 999 RETURN 1 - END -C----------------------------------------------------------------------- - SUBROUTINE KTYCUT(ECUT,NY,YCUT,NJET,*) - IMPLICIT NONE -C---COUNT THE NUMBER OF JETS AT EACH VALUE OF YCUT, FOR EVENT WHICH HAS -C ALREADY BEEN ANALYSED BY KTCLUS. -C -C ECUT = INPUT : DENOMINATOR OF KT MEASURE. IF ZERO, ETOT IS USED -C NY = INPUT : NUMBER OF YCUT VALUES -C YCUT(J) = INPUT : Y VALUES AT WHICH NUMBERS OF JETS ARE COUNTED -C NJET(J) =OUTPUT : NUMBER OF JETS AT YCUT(J) -C LAST ARGUMENT IS LABEL TO JUMP TO IF FOR ANY REASON THE EVENT -C COULD NOT BE PROCESSED -C -C NOTE THAT ALL FLOATING POINT VARIABLES ARE DECLARED DOUBLE PRECISION -C - INTEGER NY,NJET(NY),NMAX,HIST,I,J,NUM - PARAMETER (NMAX=512) - DOUBLE PRECISION YCUT(NY),ETOT,RSQ,P,KT,KTP,KTS,ETSQ,ECUT,KTLAST, - & ROUND - PARAMETER (ROUND=0.99999D0) - COMMON /KTCOMM/ETOT,RSQ,P(9,NMAX),KTP(NMAX,NMAX),KTS(NMAX), - & KT(NMAX),KTLAST(NMAX),HIST(NMAX),NUM - IF (ETOT.EQ.0) CALL KTWARN('KTYCUT',100,*999) - IF (ECUT.EQ.0) THEN - ETSQ=1/ETOT**2 - ELSE - ETSQ=1/ECUT**2 - ENDIF - DO 100 I=1,NY - NJET(I)=0 - 100 CONTINUE - DO 210 I=NUM,1,-1 - DO 200 J=1,NY - IF (NJET(J).EQ.0.AND.KT(I)*ETSQ.GE.ROUND*YCUT(J)) NJET(J)=I - 200 CONTINUE - 210 CONTINUE - RETURN - 999 RETURN 1 - END -C----------------------------------------------------------------------- - SUBROUTINE KTYSUB(ECUT,NY,YCUT,YMAC,NSUB,*) - IMPLICIT NONE -C---COUNT THE NUMBER OF SUB-JETS AT EACH VALUE OF YCUT, FOR EVENT WHICH -C HAS ALREADY BEEN ANALYSED BY KTCLUS. -C REMEMBER THAT A SUB-JET IS DEFINED AS A JET AT Y=YCUT WHICH HAS NOT -C YET BEEN MERGED WITH THE BEAM AT Y=YMAC. -C -C ECUT = INPUT : DENOMINATOR OF KT MEASURE. IF ZERO, ETOT IS USED -C NY = INPUT : NUMBER OF YCUT VALUES -C YCUT(J) = INPUT : Y VALUES AT WHICH NUMBERS OF SUB-JETS ARE COUNTED -C YMAC = INPUT : Y VALUE USED TO DEFINE MACRO-JETS, TO DETERMINE -C WHICH JETS ARE SUB-JETS -C NSUB(J) =OUTPUT : NUMBER OF SUB-JETS AT YCUT(J) -C LAST ARGUMENT IS LABEL TO JUMP TO IF FOR ANY REASON THE EVENT -C COULD NOT BE PROCESSED -C -C NOTE THAT ALL FLOATING POINT VARIABLES ARE DECLARED DOUBLE PRECISION -C - INTEGER NY,NSUB(NY),NMAX,HIST,I,J,NUM - PARAMETER (NMAX=512) - DOUBLE PRECISION YCUT(NY),YMAC,ETOT,RSQ,P,KT,KTP,KTS,ETSQ,ECUT, - & KTLAST,ROUND - PARAMETER (ROUND=0.99999D0) - COMMON /KTCOMM/ETOT,RSQ,P(9,NMAX),KTP(NMAX,NMAX),KTS(NMAX), - & KT(NMAX),KTLAST(NMAX),HIST(NMAX),NUM - IF (ETOT.EQ.0) CALL KTWARN('KTYSUB',100,*999) - IF (ECUT.EQ.0) THEN - ETSQ=1/ETOT**2 - ELSE - ETSQ=1/ECUT**2 - ENDIF - DO 100 I=1,NY - NSUB(I)=0 - 100 CONTINUE - DO 210 I=NUM,1,-1 - DO 200 J=1,NY - IF (NSUB(J).EQ.0.AND.KT(I)*ETSQ.GE.ROUND*YCUT(J)) NSUB(J)=I - IF (NSUB(J).NE.0.AND.KTLAST(I)*ETSQ.LT.ROUND*YMAC) - & NSUB(J)=NSUB(J)-1 - 200 CONTINUE - 210 CONTINUE - RETURN - 999 RETURN 1 - END -C----------------------------------------------------------------------- - SUBROUTINE KTBEAM(ECUT,Y,*) - IMPLICIT NONE -C---GIVE SAME INFORMATION AS LAST CALL TO KTCLUS EXCEPT THAT ONLY -C TRANSITIONS WHERE A JET WAS MERGED WITH THE BEAM JET ARE RECORDED -C -C ECUT = INPUT : DENOMINATOR OF KT MEASURE. IF ZERO, ETOT IS USED -C Y(J) =OUTPUT : Y VALUE WHERE Jth HARDEST JET WAS MERGED WITH BEAM -C LAST ARGUMENT IS LABEL TO JUMP TO IF FOR ANY REASON THE EVENT -C COULD NOT BE PROCESSED -C -C NOTE THAT ALL FLOATING POINT VARIABLES ARE DECLARED DOUBLE PRECISION -C - INTEGER NMAX,HIST,NUM,I,J - PARAMETER (NMAX=512) - DOUBLE PRECISION ETOT,RSQ,P,KT,KTP,KTS,ECUT,ETSQ,Y(*),KTLAST - COMMON /KTCOMM/ETOT,RSQ,P(9,NMAX),KTP(NMAX,NMAX),KTS(NMAX), - & KT(NMAX),KTLAST(NMAX),HIST(NMAX),NUM - IF (ETOT.EQ.0) CALL KTWARN('KTBEAM',100,*999) - IF (ECUT.EQ.0) THEN - ETSQ=1/ETOT**2 - ELSE - ETSQ=1/ECUT**2 - ENDIF - J=1 - DO 100 I=1,NUM - IF (HIST(I).LE.NMAX) THEN - Y(J)=ETSQ*KT(I) - J=J+1 - ENDIF - 100 CONTINUE - DO 200 I=J,NUM - Y(I)=0 - 200 CONTINUE - RETURN - 999 RETURN 1 - END -C----------------------------------------------------------------------- - SUBROUTINE KTJOIN(ECUT,YMAC,Y,*) - IMPLICIT NONE -C---GIVE SAME INFORMATION AS LAST CALL TO KTCLUS EXCEPT THAT ONLY -C TRANSITIONS WHERE TWO SUB-JETS WERE JOINED ARE RECORDED -C REMEMBER THAT A SUB-JET IS DEFINED AS A JET AT Y=YCUT WHICH HAS NOT -C YET BEEN MERGED WITH THE BEAM AT Y=YMAC. -C -C ECUT = INPUT : DENOMINATOR OF KT MEASURE. IF ZERO, ETOT IS USED -C YMAC = INPUT : VALUE OF Y USED TO DEFINE MACRO-JETS -C Y(J) =OUTPUT : Y VALUE WHERE EVENT CHANGED FROM HAVING -C N+J SUB-JETS TO HAVING N+J-1, WHERE N IS -C THE NUMBER OF MACRO-JETS AT SCALE YMAC -C LAST ARGUMENT IS LABEL TO JUMP TO IF FOR ANY REASON THE EVENT -C COULD NOT BE PROCESSED -C -C NOTE THAT ALL FLOATING POINT VARIABLES ARE DECLARED DOUBLE PRECISION -C - INTEGER NMAX,HIST,NUM,I,J - PARAMETER (NMAX=512) - DOUBLE PRECISION ETOT,RSQ,P,KT,KTP,KTS,ECUT,ETSQ,Y(*),YMAC,KTLAST, - & ROUND - PARAMETER (ROUND=0.99999D0) - COMMON /KTCOMM/ETOT,RSQ,P(9,NMAX),KTP(NMAX,NMAX),KTS(NMAX), - & KT(NMAX),KTLAST(NMAX),HIST(NMAX),NUM - IF (ETOT.EQ.0) CALL KTWARN('KTJOIN',100,*999) - IF (ECUT.EQ.0) THEN - ETSQ=1/ETOT**2 - ELSE - ETSQ=1/ECUT**2 - ENDIF - J=1 - DO 100 I=1,NUM - IF (HIST(I).GT.NMAX.AND.ETSQ*KTLAST(I).GE.ROUND*YMAC) THEN - Y(J)=ETSQ*KT(I) - J=J+1 - ENDIF - 100 CONTINUE - DO 200 I=J,NUM - Y(I)=0 - 200 CONTINUE - RETURN - 999 RETURN 1 - END -C----------------------------------------------------------------------- - SUBROUTINE KTRECO(RECO,PP,NN,ECUT,YCUT,YMAC,PJET,JET,NJET,NSUB,*) - IMPLICIT NONE -C---RECONSTRUCT KINEMATICS OF JET SYSTEM, WHICH HAS ALREADY BEEN -C ANALYSED BY KTCLUS. NOTE THAT NO CONSISTENCY CHECK IS MADE: USER -C IS TRUSTED TO USE THE SAME PP VALUES AS FOR KTCLUS -C -C RECO = INPUT : RECOMBINATION SCHEME (NEED NOT BE SAME AS KTCLUS) -C PP(I,J) = INPUT : 4-MOMENTUM OF Jth PARTICLE: I=1,4 => PX,PY,PZ,E -C NN = INPUT : NUMBER OF PARTICLES -C ECUT = INPUT : DENOMINATOR OF KT MEASURE. IF ZERO, ETOT IS USED -C YCUT = INPUT : Y VALUE AT WHICH TO RECONSTRUCT JET MOMENTA -C YMAC = INPUT : Y VALUE USED TO DEFINE MACRO-JETS, TO DETERMINE -C WHICH JETS ARE SUB-JETS -C PJET(I,J)=OUTPUT : 4-MOMENTUM OF Jth JET AT SCALE YCUT -C JET(J) =OUTPUT : THE MACRO-JET WHICH CONTAINS THE Jth JET, -C SET TO ZERO IF JET IS NOT A SUB-JET -C NJET =OUTPUT : THE NUMBER OF JETS -C NSUB =OUTPUT : THE NUMBER OF SUB-JETS (EQUAL TO THE NUMBER OF -C NON-ZERO ENTRIES IN JET()) -C LAST ARGUMENT IS LABEL TO JUMP TO IF FOR ANY REASON THE EVENT -C COULD NOT BE PROCESSED -C -C NOTE THAT THE MOMENTA ARE DECLARED DOUBLE PRECISION, -C AND ALL OTHER FLOATING POINT VARIABLES ARE DECLARED DOUBLE PRECISION -C - INTEGER NMAX,RECO,NUM,N,NN,NJET,NSUB,JET(*),HIST,IMIN,JMIN,I,J - PARAMETER (NMAX=512) - DOUBLE PRECISION PP(4,*),PJET(4,*) - DOUBLE PRECISION ECUT,P,KT,KTP,KTS,ETOT,RSQ,ETSQ,YCUT,YMAC,KTLAST, - & ROUND - PARAMETER (ROUND=0.99999D0) - COMMON /KTCOMM/ETOT,RSQ,P(9,NMAX),KTP(NMAX,NMAX),KTS(NMAX), - & KT(NMAX),KTLAST(NMAX),HIST(NMAX),NUM -C---CHECK INPUT - IF (RECO.LT.1.OR.RECO.GT.3) THEN - PRINT *,'RECO=',RECO - CALL KTWARN('KTRECO',100,*999) - ENDIF -C---COPY PP TO P - N=NN - IF (NUM.NE.NN) CALL KTWARN('KTRECO',101,*999) - CALL KTCOPY(PP,N,P,(RECO.NE.1)) - IF (ECUT.EQ.0) THEN - ETSQ=1/ETOT**2 - ELSE - ETSQ=1/ECUT**2 - ENDIF -C---KEEP MERGING UNTIL YCUT - 100 IF (ETSQ*KT(N).LT.ROUND*YCUT) THEN - IF (HIST(N).LE.NMAX) THEN - CALL KTMOVE(P,KTP,KTS,NMAX,N,HIST(N),0) - ELSE - IMIN=HIST(N)/NMAX - JMIN=HIST(N)-IMIN*NMAX - CALL KTMERG(P,KTP,KTS,NMAX,IMIN,JMIN,N,0,0,0,RECO) - CALL KTMOVE(P,KTP,KTS,NMAX,N,JMIN,0) - ENDIF - N=N-1 - IF (N.GT.0) GOTO 100 - ENDIF -C---IF YCUT IS TOO LARGE THERE ARE NO JETS - NJET=N - NSUB=N - IF (N.EQ.0) RETURN -C---SET UP OUTPUT MOMENTA - DO 210 I=1,NJET - IF (RECO.EQ.1) THEN - DO 200 J=1,4 - PJET(J,I)=P(J,I) - 200 CONTINUE - ELSE - PJET(1,I)=P(6,I)*COS(P(8,I)) - PJET(2,I)=P(6,I)*SIN(P(8,I)) - PJET(3,I)=P(6,I)*SINH(P(7,I)) - PJET(4,I)=P(6,I)*COSH(P(7,I)) - ENDIF - JET(I)=I - 210 CONTINUE -C---KEEP MERGING UNTIL YMAC TO FIND THE FATE OF EACH JET - 300 IF (ETSQ*KT(N).LT.ROUND*YMAC) THEN - IF (HIST(N).LE.NMAX) THEN - IMIN=0 - JMIN=HIST(N) - NSUB=NSUB-1 - ELSE - IMIN=HIST(N)/NMAX - JMIN=HIST(N)-IMIN*NMAX - IF (ETSQ*KTLAST(N).LT.ROUND*YMAC) NSUB=NSUB-1 - ENDIF - DO 310 I=1,NJET - IF (JET(I).EQ.JMIN) JET(I)=IMIN - IF (JET(I).EQ.N) JET(I)=JMIN - 310 CONTINUE - N=N-1 - IF (N.GT.0) GOTO 300 - ENDIF - RETURN - 999 RETURN 1 - END -C----------------------------------------------------------------------- - SUBROUTINE KTINCL(RECO,PP,NN,PJET,JET,NJET,*) - IMPLICIT NONE -C---RECONSTRUCT KINEMATICS OF JET SYSTEM, WHICH HAS ALREADY BEEN -C ANALYSED BY KTCLUS ACCORDING TO THE INCLUSIVE JET DEFINITION. NOTE -C THAT NO CONSISTENCY CHECK IS MADE: USER IS TRUSTED TO USE THE SAME -C PP VALUES AS FOR KTCLUS -C -C RECO = INPUT : RECOMBINATION SCHEME (NEED NOT BE SAME AS KTCLUS) -C PP(I,J) = INPUT : 4-MOMENTUM OF Jth PARTICLE: I=1,4 => PX,PY,PZ,E -C NN = INPUT : NUMBER OF PARTICLES -C PJET(I,J)=OUTPUT : 4-MOMENTUM OF Jth JET AT SCALE YCUT -C JET(J) =OUTPUT : THE JET WHICH CONTAINS THE Jth PARTICLE -C NJET =OUTPUT : THE NUMBER OF JETS -C LAST ARGUMENT IS LABEL TO JUMP TO IF FOR ANY REASON THE EVENT -C COULD NOT BE PROCESSED -C -C NOTE THAT THE MOMENTA ARE DECLARED DOUBLE PRECISION, -C AND ALL OTHER FLOATING POINT VARIABLES ARE DECLARED DOUBLE PRECISION -C - INTEGER NMAX,RECO,NUM,N,NN,NJET,JET(*),HIST,IMIN,JMIN,I,J - PARAMETER (NMAX=512) - DOUBLE PRECISION PP(4,*),PJET(4,*) - DOUBLE PRECISION P,KT,KTP,KTS,ETOT,RSQ,KTLAST - COMMON /KTCOMM/ETOT,RSQ,P(9,NMAX),KTP(NMAX,NMAX),KTS(NMAX), - & KT(NMAX),KTLAST(NMAX),HIST(NMAX),NUM -C---CHECK INPUT - IF (RECO.LT.1.OR.RECO.GT.3) CALL KTWARN('KTINCL',100,*999) -C---COPY PP TO P - N=NN - IF (NUM.NE.NN) CALL KTWARN('KTINCL',101,*999) - CALL KTCOPY(PP,N,P,(RECO.NE.1)) -C---INITIALLY EVERY PARTICLE IS IN ITS OWN JET - DO 100 I=1,NN - JET(I)=I - 100 CONTINUE -C---KEEP MERGING TO THE BITTER END - NJET=0 - 200 IF (N.GT.0) THEN - IF (HIST(N).LE.NMAX) THEN - IMIN=0 - JMIN=HIST(N) - NJET=NJET+1 - IF (RECO.EQ.1) THEN - DO 300 J=1,4 - PJET(J,NJET)=P(J,JMIN) - 300 CONTINUE - ELSE - PJET(1,NJET)=P(6,JMIN)*COS(P(8,JMIN)) - PJET(2,NJET)=P(6,JMIN)*SIN(P(8,JMIN)) - PJET(3,NJET)=P(6,JMIN)*SINH(P(7,JMIN)) - PJET(4,NJET)=P(6,JMIN)*COSH(P(7,JMIN)) - ENDIF - CALL KTMOVE(P,KTP,KTS,NMAX,N,JMIN,0) - ELSE - IMIN=HIST(N)/NMAX - JMIN=HIST(N)-IMIN*NMAX - CALL KTMERG(P,KTP,KTS,NMAX,IMIN,JMIN,N,0,0,0,RECO) - CALL KTMOVE(P,KTP,KTS,NMAX,N,JMIN,0) - ENDIF - DO 400 I=1,NN - IF (JET(I).EQ.JMIN) JET(I)=IMIN - IF (JET(I).EQ.N) JET(I)=JMIN - IF (JET(I).EQ.0) JET(I)=-NJET - 400 CONTINUE - N=N-1 - GOTO 200 - ENDIF -C---FINALLY EVERY PARTICLE MUST BE IN AN INCLUSIVE JET - DO 500 I=1,NN -C---IF THERE ARE ANY UNASSIGNED PARTICLES SOMETHING MUST HAVE GONE WRONG - IF (JET(I).GE.0) CALL KTWARN('KTINCL',102,*999) - JET(I)=-JET(I) - 500 CONTINUE - RETURN - 999 RETURN 1 - END -C----------------------------------------------------------------------- - SUBROUTINE KTISUB(N,NY,YCUT,NSUB,*) - IMPLICIT NONE -C---COUNT THE NUMBER OF SUB-JETS IN THE Nth INCLUSIVE JET OF AN EVENT -C THAT HAS ALREADY BEEN ANALYSED BY KTCLUS. -C -C N = INPUT : WHICH INCLUSIVE JET TO USE -C NY = INPUT : NUMBER OF YCUT VALUES -C YCUT(J) = INPUT : Y VALUES AT WHICH NUMBERS OF SUB-JETS ARE COUNTED -C NSUB(J) =OUTPUT : NUMBER OF SUB-JETS AT YCUT(J) -C LAST ARGUMENT IS LABEL TO JUMP TO IF FOR ANY REASON THE EVENT -C COULD NOT BE PROCESSED -C -C NOTE THAT ALL FLOATING POINT VARIABLES ARE DECLARED DOUBLE PRECISION -C - INTEGER N,NY,NSUB(NY),NMAX,HIST,I,J,NUM,NM - PARAMETER (NMAX=512) - DOUBLE PRECISION YCUT(NY),ETOT,RSQ,P,KT,KTP,KTS,KTLAST,ROUND,EPS - PARAMETER (ROUND=0.99999D0) - COMMON /KTCOMM/ETOT,RSQ,P(9,NMAX),KTP(NMAX,NMAX),KTS(NMAX), - & KT(NMAX),KTLAST(NMAX),HIST(NMAX),NUM - DATA EPS/1D-6/ - DO 100 I=1,NY - NSUB(I)=0 - 100 CONTINUE -C---FIND WHICH MERGING CORRESPONDS TO THE NTH INCLUSIVE JET - NM=0 - J=0 - DO 110 I=NUM,1,-1 - IF (HIST(I).LE.NMAX) J=J+1 - IF (J.EQ.N) THEN - NM=I - GOTO 120 - ENDIF - 110 CONTINUE - 120 CONTINUE -C---GIVE UP IF THERE ARE LESS THAN N INCLUSIVE JETS - IF (NM.EQ.0) CALL KTWARN('KTISUB',100,*999) - DO 210 I=NUM,1,-1 - DO 200 J=1,NY - IF (NSUB(J).EQ.0.AND.RSQ*KT(I).GE.ROUND*YCUT(J)*KT(NM)) - & NSUB(J)=I - IF (NSUB(J).NE.0.AND.ABS(KTLAST(I)-KTLAST(NM)).GT.EPS) - & NSUB(J)=NSUB(J)-1 - 200 CONTINUE - 210 CONTINUE - RETURN - 999 RETURN 1 - END -C----------------------------------------------------------------------- - SUBROUTINE KTIJOI(N,Y,*) - IMPLICIT NONE -C---GIVE SAME INFORMATION AS LAST CALL TO KTCLUS EXCEPT THAT ONLY -C MERGES OF TWO SUB-JETS INSIDE THE Nth INCLUSIVE JET ARE RECORDED -C -C N = INPUT : WHICH INCLUSIVE JET TO USE -C Y(J) =OUTPUT : Y VALUE WHERE JET CHANGED FROM HAVING -C J+1 SUB-JETS TO HAVING J -C LAST ARGUMENT IS LABEL TO JUMP TO IF FOR ANY REASON THE EVENT -C COULD NOT BE PROCESSED -C -C NOTE THAT ALL FLOATING POINT VARIABLES ARE DECLARED DOUBLE PRECISION -C - INTEGER NMAX,HIST,NUM,I,J,N,NM - PARAMETER (NMAX=512) - DOUBLE PRECISION ETOT,RSQ,P,KT,KTP,KTS,Y(*),KTLAST,EPS - COMMON /KTCOMM/ETOT,RSQ,P(9,NMAX),KTP(NMAX,NMAX),KTS(NMAX), - & KT(NMAX),KTLAST(NMAX),HIST(NMAX),NUM - DATA EPS/1D-6/ -C---FIND WHICH MERGING CORRESPONDS TO THE NTH INCLUSIVE JET - NM=0 - J=0 - DO 100 I=NUM,1,-1 - IF (HIST(I).LE.NMAX) J=J+1 - IF (J.EQ.N) THEN - NM=I - GOTO 105 - ENDIF - 100 CONTINUE - 105 CONTINUE -C---GIVE UP IF THERE ARE LESS THAN N INCLUSIVE JETS - IF (NM.EQ.0) CALL KTWARN('KTIJOI',100,*999) - J=1 - DO 110 I=1,NUM - IF (HIST(I).GT.NMAX.AND.ABS(KTLAST(I)-KTLAST(NM)).LT.EPS) THEN - Y(J)=RSQ*KT(I)/KT(NM) - J=J+1 - ENDIF - 110 CONTINUE - DO 200 I=J,NUM - Y(I)=0 - 200 CONTINUE - RETURN - 999 RETURN 1 - END -C----------------------------------------------------------------------- - SUBROUTINE KTIREC(RECO,PP,NN,N,YCUT,PSUB,NSUB,*) - IMPLICIT NONE -C---RECONSTRUCT KINEMATICS OF SUB-JET SYSTEM IN THE Nth INCLUSIVE JET -C OF AN EVENT THAT HAS ALREADY BEEN ANALYSED BY KTCLUS -C -C RECO = INPUT : RECOMBINATION SCHEME (NEED NOT BE SAME AS KTCLUS) -C PP(I,J) = INPUT : 4-MOMENTUM OF Jth PARTICLE: I=1,4 => PX,PY,PZ,E -C NN = INPUT : NUMBER OF PARTICLES -C N = INPUT : WHICH INCLUSIVE JET TO USE -C YCUT = INPUT : Y VALUE AT WHICH TO RECONSTRUCT JET MOMENTA -C PSUB(I,J)=OUTPUT : 4-MOMENTUM OF Jth SUB-JET AT SCALE YCUT -C NSUB =OUTPUT : THE NUMBER OF SUB-JETS -C LAST ARGUMENT IS LABEL TO JUMP TO IF FOR ANY REASON THE EVENT -C COULD NOT BE PROCESSED -C -C NOTE THAT THE MOMENTA ARE DECLARED DOUBLE PRECISION, -C AND ALL OTHER FLOATING POINT VARIABLES ARE DECLARED DOUBLE PRECISION -C - INTEGER NMAX,RECO,NUM,NN,NJET,NSUB,JET,HIST,I,J,N,NM - PARAMETER (NMAX=512) - DOUBLE PRECISION PP(4,*),PSUB(4,*) - DOUBLE PRECISION ECUT,P,KT,KTP,KTS,ETOT,RSQ,YCUT,YMAC,KTLAST - COMMON /KTCOMM/ETOT,RSQ,P(9,NMAX),KTP(NMAX,NMAX),KTS(NMAX), - & KT(NMAX),KTLAST(NMAX),HIST(NMAX),NUM - DIMENSION JET(NMAX) -C---FIND WHICH MERGING CORRESPONDS TO THE NTH INCLUSIVE JET - NM=0 - J=0 - DO 100 I=NUM,1,-1 - IF (HIST(I).LE.NMAX) J=J+1 - IF (J.EQ.N) THEN - NM=I - GOTO 110 - ENDIF - 100 CONTINUE - 110 CONTINUE -C---GIVE UP IF THERE ARE LESS THAN N INCLUSIVE JETS - IF (NM.EQ.0) CALL KTWARN('KTIREC',102,*999) -C---RECONSTRUCT THE JETS AT THE APPROPRIATE SCALE - ECUT=SQRT(KT(NM)/RSQ) - YMAC=RSQ - CALL KTRECO(RECO,PP,NN,ECUT,YCUT,YMAC,PSUB,JET,NJET,NSUB,*999) -C---GET RID OF THE ONES THAT DO NOT END UP IN THE JET WE WANT - NSUB=0 - DO 210 I=1,NJET - IF (JET(I).EQ.HIST(NM)) THEN - NSUB=NSUB+1 - DO 200 J=1,4 - PSUB(J,NSUB)=PSUB(J,I) - 200 CONTINUE - ENDIF - 210 CONTINUE - RETURN - 999 RETURN 1 - END -C----------------------------------------------------------------------- - SUBROUTINE KTWICH(ECUT,YCUT,JET,NJET,*) - IMPLICIT NONE -C---GIVE A LIST OF WHICH JET EACH ORIGINAL PARTICLE ENDED UP IN AT SCALE -C YCUT, TOGETHER WITH THE NUMBER OF JETS AT THAT SCALE. -C -C ECUT = INPUT : DENOMINATOR OF KT MEASURE. IF ZERO, ETOT IS USED -C YCUT = INPUT : Y VALUE AT WHICH TO DEFINE JETS -C JET(J) =OUTPUT : THE JET WHICH CONTAINS THE Jth PARTICLE, -C SET TO ZERO IF IT WAS PUT INTO THE BEAM JETS -C NJET =OUTPUT : THE NUMBER OF JETS AT SCALE YCUT (SO JET() -C ENTRIES WILL BE IN THE RANGE 0 -> NJET) -C LAST ARGUMENT IS LABEL TO JUMP TO IF FOR ANY REASON THE EVENT -C COULD NOT BE PROCESSED -C -C NOTE THAT ALL FLOATING POINT VARIABLES ARE DECLARED DOUBLE PRECISION -C - INTEGER JET(*),NJET,NTEMP - DOUBLE PRECISION ECUT,YCUT - CALL KTWCHS(ECUT,YCUT,YCUT,JET,NJET,NTEMP,*999) - RETURN - 999 RETURN 1 - END -C----------------------------------------------------------------------- - SUBROUTINE KTWCHS(ECUT,YCUT,YMAC,JET,NJET,NSUB,*) - IMPLICIT NONE -C---GIVE A LIST OF WHICH SUB-JET EACH ORIGINAL PARTICLE ENDED UP IN AT -C SCALE YCUT, WITH MACRO-JET SCALE YMAC, TOGETHER WITH THE NUMBER OF -C JETS AT SCALE YCUT AND THE NUMBER OF THEM WHICH ARE SUB-JETS. -C -C ECUT = INPUT : DENOMINATOR OF KT MEASURE. IF ZERO, ETOT IS USED -C YCUT = INPUT : Y VALUE AT WHICH TO DEFINE JETS -C YMAC = INPUT : Y VALUE AT WHICH TO DEFINE MACRO-JETS -C JET(J) =OUTPUT : THE JET WHICH CONTAINS THE Jth PARTICLE, -C SET TO ZERO IF IT WAS PUT INTO THE BEAM JETS -C NJET =OUTPUT : THE NUMBER OF JETS AT SCALE YCUT (SO JET() -C ENTRIES WILL BE IN THE RANGE 0 -> NJET) -C NSUB =OUTPUT : THE NUMBER OF SUB-JETS AT SCALE YCUT, WITH -C MACRO-JETS DEFINED AT SCALE YMAC (SO ONLY NSUB -C OF THE JETS 1 -> NJET WILL APPEAR IN JET()) -C LAST ARGUMENT IS LABEL TO JUMP TO IF FOR ANY REASON THE EVENT -C COULD NOT BE PROCESSED -C -C NOTE THAT ALL FLOATING POINT VARIABLES ARE DECLARED DOUBLE PRECISION -C - INTEGER NMAX,JET(*),NJET,NSUB,HIST,NUM,I,J,JSUB - PARAMETER (NMAX=512) - DOUBLE PRECISION P1(4,NMAX),P2(4,NMAX) - DOUBLE PRECISION ECUT,YCUT,YMAC,ZERO,ETOT,RSQ,P,KTP,KTS,KT,KTLAST - COMMON /KTCOMM/ETOT,RSQ,P(9,NMAX),KTP(NMAX,NMAX),KTS(NMAX), - & KT(NMAX),KTLAST(NMAX),HIST(NMAX),NUM - DIMENSION JSUB(NMAX) -C---THE MOMENTA HAVE TO BEEN GIVEN LEGAL VALUES, -C EVEN THOUGH THEY WILL NEVER BE USED - DATA ((P1(J,I),I=1,NMAX),J=1,4),ZERO - & /NMAX*1,NMAX*0,NMAX*0,NMAX*1,0/ -C---FIRST GET A LIST OF WHICH PARTICLE IS IN WHICH JET AT YCUT - CALL KTRECO(1,P1,NUM,ECUT,ZERO,YCUT,P2,JET,NJET,NSUB,*999) -C---THEN FIND OUT WHICH JETS ARE SUBJETS - CALL KTRECO(1,P1,NUM,ECUT,YCUT,YMAC,P2,JSUB,NJET,NSUB,*999) -C---AND MODIFY JET() ACCORDINGLY - DO 10 I=1,NUM - IF (JET(I).NE.0) THEN - IF (JSUB(JET(I)).EQ.0) JET(I)=0 - ENDIF - 10 CONTINUE - RETURN - 999 RETURN 1 - END -C----------------------------------------------------------------------- - SUBROUTINE KTFRAM(IOPT,CMF,SIGN,Z,XZ,N,P,Q,*) - IMPLICIT NONE -C---BOOST PARTICLES IN P TO/FROM FRAME GIVEN BY CMF, Z, XZ. -C---IN THIS FRAME CMZ IS STATIONARY, -C Z IS ALONG THE (SIGN)Z-AXIS (SIGN=+ OR -) -C XZ IS IN THE X-Z PLANE (WITH POSITIVE X COMPONENT) -C---IF Z HAS LENGTH ZERO, OR SIGN=0, NO ROTATION IS PERFORMED -C---IF XZ HAS ZERO COMPONENT PERPENDICULAR TO Z IN THAT FRAME, -C NO AZIMUTHAL ROTATION IS PERFORMED -C -C IOPT = INPUT : 0=TO FRAME, 1=FROM FRAME -C CMF(I) = INPUT : 4-MOMENTUM WHICH IS STATIONARY IN THE FRAME -C SIGN = INPUT : DIRECTION OF Z IN THE FRAME, NOTE THAT -C ONLY ITS SIGN IS USED, NOT ITS MAGNITUDE -C Z(I) = INPUT : 4-MOMENTUM WHICH LIES ON THE (SIGN)Z-AXIS -C XZ(I) = INPUT : 4-MOMENTUM WHICH LIES IN THE X-Z PLANE -C N = INPUT : NUMBER OF PARTICLES IN P -C P(I,J) = INPUT : 4-MOMENTUM OF JTH PARTICLE BEFORE -C Q(I,J) = OUTPUT : 4-MOMENTUM OF JTH PARTICLE AFTER -C LAST ARGUMENT IS LABEL TO JUMP TO IF FOR ANY REASON THE EVENT -C COULD NOT BE PROCESSED -C -C NOTE THAT ALL MOMENTA ARE DOUBLE PRECISION -C -C NOTE THAT IT IS SAFE TO CALL WITH P=Q -C - INTEGER IOPT,I,N - DOUBLE PRECISION CMF(4),SIGN,Z(4),XZ(4),P(4,N),Q(4,N), - & R(4,4),NEW(4),OLD(4) - IF (IOPT.LT.0.OR.IOPT.GT.1) CALL KTWARN('KTFRAM',200,*999) -C---FIND BOOST TO GET THERE FROM LAB - CALL KTUNIT(R) - CALL KTLBST(0,R,CMF,*999) -C---FIND ROTATION TO PUT BOOSTED Z ON THE (SIGN)Z AXIS - IF (SIGN.NE.0) THEN - CALL KTVMUL(R,Z,OLD) - IF (OLD(1).NE.0.OR.OLD(2).NE.0.OR.OLD(3).NE.0) THEN - NEW(1)=0 - NEW(2)=0 - NEW(3)=SIGN - NEW(4)=ABS(SIGN) - CALL KTRROT(R,OLD,NEW,*999) -C---FIND ROTATION TO PUT BOOSTED AND ROTATED XZ INTO X-Z PLANE - CALL KTVMUL(R,XZ,OLD) - IF (OLD(1).NE.0.OR.OLD(2).NE.0) THEN - NEW(1)=1 - NEW(2)=0 - NEW(3)=0 - NEW(4)=1 - OLD(3)=0 -C---NOTE THAT A POTENTIALLY AWKWARD SPECIAL CASE IS AVERTED, BECAUSE IF -C OLD AND NEW ARE EXACTLY BACK-TO-BACK, THE ROTATION AXIS IS UNDEFINED -C BUT IN THAT CASE KTRROT WILL USE THE Z AXIS, AS REQUIRED - CALL KTRROT(R,OLD,NEW,*999) - ENDIF - ENDIF - ENDIF -C---INVERT THE TRANSFORMATION IF NECESSARY - IF (IOPT.EQ.1) CALL KTINVT(R,R) -C---APPLY THE RESULT TO ALL THE VECTORS - DO 30 I=1,N - CALL KTVMUL(R,P(1,I),Q(1,I)) - 30 CONTINUE - RETURN - 999 RETURN 1 - END -C----------------------------------------------------------------------- - SUBROUTINE KTBREI(IOPT,PLEP,PHAD,POUT,N,P,Q,*) - IMPLICIT NONE -C---BOOST PARTICLES IN P TO/FROM BREIT FRAME -C -C IOPT = INPUT : 0/2=TO BREIT FRAME, 1/3=FROM BREIT FRAME -C 0/1=NO AZIMUTHAL ROTATION AFTERWARDS -C 2/3=LEPTON PLANE ROTATED INTO THE X-Z PLANE -C PLEP = INPUT : MOMENTUM OF INCOMING LEPTON IN +Z DIRECTION -C PHAD = INPUT : MOMENTUM OF INCOMING HADRON IN +Z DIRECTION -C POUT(I) = INPUT : 4-MOMENTUM OF OUTGOING LEPTON -C N = INPUT : NUMBER OF PARTICLES IN P -C P(I,J) = INPUT : 4-MOMENTUM OF JTH PARTICLE BEFORE -C Q(I,J) = OUTPUT : 4-MOMENTUM OF JTH PARTICLE AFTER -C LAST ARGUMENT IS LABEL TO JUMP TO IF FOR ANY REASON THE EVENT -C COULD NOT BE PROCESSED (MOST LIKELY DUE TO PARTICLES HAVING SMALLER -C ENERGY THAN MOMENTUM) -C -C NOTE THAT ALL MOMENTA ARE DOUBLE PRECISION -C -C NOTE THAT IT IS SAFE TO CALL WITH P=Q -C - INTEGER IOPT,N - DOUBLE PRECISION PLEP,PHAD,POUT(4),P(4,N),Q(4,N), - & CMF(4),Z(4),XZ(4),DOT,QDQ -C---CHECK INPUT - IF (IOPT.LT.0.OR.IOPT.GT.3) CALL KTWARN('KTBREI',200,*999) -C---FIND 4-MOMENTUM OF BREIT FRAME (TIMES AN ARBITRARY FACTOR) - DOT=ABS(PHAD)*(ABS(PLEP)-POUT(4))-PHAD*(PLEP-POUT(3)) - QDQ=(ABS(PLEP)-POUT(4))**2-(PLEP-POUT(3))**2-POUT(2)**2-POUT(1)**2 - CMF(1)=DOT*( -POUT(1)) - CMF(2)=DOT*( -POUT(2)) - CMF(3)=DOT*( PLEP -POUT(3))-QDQ* PHAD - CMF(4)=DOT*(ABS(PLEP)-POUT(4))-QDQ*ABS(PHAD) -C---FIND ROTATION TO PUT INCOMING HADRON BACK ON Z-AXIS - Z(1)=0 - Z(2)=0 - Z(3)=PHAD - Z(4)=ABS(PHAD) - XZ(1)=0 - XZ(2)=0 - XZ(3)=0 - XZ(4)=0 -C---DO THE BOOST - IF (IOPT.LE.1) THEN - CALL KTFRAM(IOPT,CMF,PHAD,Z,XZ,N,P,Q,*999) - ELSE - CALL KTFRAM(IOPT-2,CMF,PHAD,Z,POUT,N,P,Q,*999) - ENDIF - RETURN - 999 RETURN 1 - END -C----------------------------------------------------------------------- - SUBROUTINE KTHADR(IOPT,PLEP,PHAD,POUT,N,P,Q,*) - IMPLICIT NONE -C---BOOST PARTICLES IN P TO/FROM HADRONIC CMF -C -C ARGUMENTS ARE EXACTLY AS FOR KTBREI -C -C NOTE THAT ALL MOMENTA ARE DOUBLE PRECISION -C -C NOTE THAT IT IS SAFE TO CALL WITH P=Q -C - INTEGER IOPT,N - DOUBLE PRECISION PLEP,PHAD,POUT(4),P(4,N),Q(4,N), - & CMF(4),Z(4),XZ(4) -C---CHECK INPUT - IF (IOPT.LT.0.OR.IOPT.GT.3) CALL KTWARN('KTHADR',200,*999) -C---FIND 4-MOMENTUM OF HADRONIC CMF - CMF(1)= -POUT(1) - CMF(2)= -POUT(2) - CMF(3)= PLEP -POUT(3)+ PHAD - CMF(4)=ABS(PLEP)-POUT(4)+ABS(PHAD) -C---FIND ROTATION TO PUT INCOMING HADRON BACK ON Z-AXIS - Z(1)=0 - Z(2)=0 - Z(3)=PHAD - Z(4)=ABS(PHAD) - XZ(1)=0 - XZ(2)=0 - XZ(3)=0 - XZ(4)=0 -C---DO THE BOOST - IF (IOPT.LE.1) THEN - CALL KTFRAM(IOPT,CMF,PHAD,Z,XZ,N,P,Q,*999) - ELSE - CALL KTFRAM(IOPT-2,CMF,PHAD,Z,POUT,N,P,Q,*999) - ENDIF - RETURN - 999 RETURN 1 - END -C----------------------------------------------------------------------- - FUNCTION KTPAIR(ANGL,P,Q,ANGLE) - IMPLICIT NONE -C---CALCULATE LOCAL KT OF PAIR, USING ANGULAR SCHEME: -C 1=>ANGULAR, 2=>DeltaR, 3=>f(DeltaEta,DeltaPhi) -C WHERE f(eta,phi)=2(COSH(eta)-COS(phi)) IS THE QCD EMISSION METRIC -C---IF ANGLE<0, IT IS SET TO THE ANGULAR PART OF THE LOCAL KT ON RETURN -C IF ANGLE>0, IT IS USED INSTEAD OF THE ANGULAR PART OF THE LOCAL KT - INTEGER ANGL - DOUBLE PRECISION P(9),Q(9),KTPAIR,R,KTMDPI,ANGLE,ETA,PHI,ESQ -C---COMPONENTS OF MOMENTA ARE PX,PY,PZ,E,1/P,PT,ETA,PHI,PT**2 -* to avoid warnings - KTPAIR=-99D1 - R=ANGLE - IF (ANGL.EQ.1) THEN - IF (R.LE.0) R=2*(1-(P(1)*Q(1)+P(2)*Q(2)+P(3)*Q(3))*(P(5)*Q(5))) - ESQ=MIN(P(4),Q(4))**2 - ELSEIF (ANGL.EQ.2.OR.ANGL.EQ.3) THEN - IF (R.LE.0) THEN - ETA=P(7)-Q(7) - PHI=KTMDPI(P(8)-Q(8)) - IF (ANGL.EQ.2) THEN - R=ETA**2+PHI**2 - ELSE - R=2*(COSH(ETA)-COS(PHI)) - ENDIF - ENDIF - ESQ=MIN(P(9),Q(9)) - ELSEIF (ANGL.EQ.4) THEN - ESQ=(1d0/(P(5)*Q(5))-P(1)*Q(1)-P(2)*Q(2)- - &P(3)*Q(3))*2D0/(P(5)*Q(5))/(0.0001D0+1d0/P(5)+1d0/Q(5))**2 - R=1d0 - ELSE - CALL KTWARN('KTPAIR',200,*999) - STOP - ENDIF - KTPAIR=ESQ*R - IF (ANGLE.LT.0) ANGLE=R - 999 END -C----------------------------------------------------------------------- - FUNCTION KTSING(ANGL,TYPE,P) - IMPLICIT NONE -C---CALCULATE KT OF PARTICLE, USING ANGULAR SCHEME: -C 1=>ANGULAR, 2=>DeltaR, 3=>f(DeltaEta,DeltaPhi) -C---TYPE=1 FOR E+E-, 2 FOR EP, 3 FOR PE, 4 FOR PP -C FOR EP, PROTON DIRECTION IS DEFINED AS -Z -C FOR PE, PROTON DIRECTION IS DEFINED AS +Z - INTEGER ANGL,TYPE - DOUBLE PRECISION P(9),KTSING,COSTH,R,SMALL - DATA SMALL/1D-4/ -* to avoid warnings - KTSING=-99D1 - IF (ANGL.EQ.1.OR.ANGL.EQ.4) THEN - COSTH=P(3)*P(5) - IF (TYPE.EQ.2) THEN - COSTH=-COSTH - ELSEIF (TYPE.EQ.4) THEN - COSTH=ABS(COSTH) - ELSEIF (TYPE.NE.1.AND.TYPE.NE.3) THEN - CALL KTWARN('KTSING',200,*999) - STOP - ENDIF - R=2*(1-COSTH) -C---IF CLOSE TO BEAM, USE APPROX 2*(1-COS(THETA))=SIN**2(THETA) - IF (R.LT.SMALL) R=(P(1)**2+P(2)**2)*P(5)**2 - KTSING=P(4)**2*R - ELSEIF (ANGL.EQ.2.OR.ANGL.EQ.3) THEN - KTSING=P(9) - ELSE - CALL KTWARN('KTSING',201,*999) - STOP - ENDIF - 999 END -C----------------------------------------------------------------------- - SUBROUTINE KTPMIN(A,NMAX,N,IMIN,JMIN) - IMPLICIT NONE -C---FIND THE MINIMUM MEMBER OF A(NMAX,NMAX) WITH IMIN < JMIN <= N - INTEGER NMAX,N,IMIN,JMIN,KMIN,I,J,K -C---REMEMBER THAT A(X+(Y-1)*NMAX)=A(X,Y) -C THESE LOOPING VARIABLES ARE J=Y-2, I=X+(Y-1)*NMAX - DOUBLE PRECISION A(*),AMIN - K=1+NMAX - KMIN=K - AMIN=A(KMIN) - DO 110 J=0,N-2 - DO 100 I=K,K+J - IF (A(I).LT.AMIN) THEN - KMIN=I - AMIN=A(KMIN) - ENDIF - 100 CONTINUE - K=K+NMAX - 110 CONTINUE - JMIN=KMIN/NMAX+1 - IMIN=KMIN-(JMIN-1)*NMAX - END -C----------------------------------------------------------------------- - SUBROUTINE KTSMIN(A,NMAX,N,IMIN) - IMPLICIT NONE -C---FIND THE MINIMUM MEMBER OF A - INTEGER N,NMAX,IMIN,I - DOUBLE PRECISION A(NMAX) - IMIN=1 - DO 100 I=1,N - IF (A(I).LT.A(IMIN)) IMIN=I - 100 CONTINUE - END -C----------------------------------------------------------------------- - SUBROUTINE KTCOPY(A,N,B,ONSHLL) - IMPLICIT NONE -C---COPY FROM A TO B. 5TH=1/(3-MTM), 6TH=PT, 7TH=ETA, 8TH=PHI, 9TH=PT**2 -C IF ONSHLL IS .TRUE. PARTICLE ENTRIES ARE PUT ON-SHELL BY SETTING E=P - INTEGER I,N - DOUBLE PRECISION A(4,N) - LOGICAL ONSHLL - DOUBLE PRECISION B(9,N),ETAMAX,SINMIN,EPS - DATA ETAMAX,SINMIN,EPS/10,0,1D-6/ -C---SINMIN GETS CALCULATED ON FIRST CALL - IF (SINMIN.EQ.0) SINMIN=1/COSH(ETAMAX) - DO 100 I=1,N - B(1,I)=A(1,I) - B(2,I)=A(2,I) - B(3,I)=A(3,I) - B(4,I)=A(4,I) - B(5,I)=SQRT(A(1,I)**2+A(2,I)**2+A(3,I)**2) - IF (ONSHLL) B(4,I)=B(5,I) - IF (B(5,I).EQ.0) B(5,I)=1D-10 - B(5,I)=1/B(5,I) - B(9,I)=A(1,I)**2+A(2,I)**2 - B(6,I)=SQRT(B(9,I)) - B(7,I)=B(6,I)*B(5,I) - IF (B(7,I).GT.SINMIN) THEN - B(7,I)=A(4,I)**2-A(3,I)**2 - IF (B(7,I).LE.EPS*B(4,I)**2.OR.ONSHLL) B(7,I)=B(9,I) - B(7,I)=LOG((B(4,I)+ABS(B(3,I)))**2/B(7,I))/2 - ELSE - B(7,I)=ETAMAX+2 - ENDIF - B(7,I)=SIGN(B(7,I),B(3,I)) - IF (A(1,I).EQ.0 .AND. A(2,I).EQ.0) THEN - B(8,I)=0 - ELSE - B(8,I)=ATAN2(A(2,I),A(1,I)) - ENDIF - 100 CONTINUE - END -C----------------------------------------------------------------------- - SUBROUTINE KTMERG(P,KTP,KTS,NMAX,I,J,N,TYPE,ANGL,MONO,RECO) - IMPLICIT NONE -C---MERGE THE Jth PARTICLE IN P INTO THE Ith PARTICLE -C J IS ASSUMED GREATER THAN I. P CONTAINS N PARTICLES BEFORE MERGING. -C---ALSO RECALCULATING THE CORRESPONDING KTP AND KTS VALUES IF MONO.GT.0 -C FROM THE RECOMBINED ANGULAR MEASURES IF MONO.GT.1 -C---NOTE THAT IF MONO.LE.0, TYPE AND ANGL ARE NOT USED - INTEGER ANGL,RECO,TYPE,I,J,K,N,NMAX,MONO - DOUBLE PRECISION P(9,NMAX),KTP(NMAX,NMAX),KTS(NMAX),PT,PTT, - & KTMDPI,KTUP,PI,PJ,ANG,KTPAIR,KTSING,ETAMAX,EPS - KTUP(I,J)=KTP(MAX(I,J),MIN(I,J)) - DATA ETAMAX,EPS/10,1D-6/ - IF (J.LE.I) CALL KTWARN('KTMERG',200,*999) -C---COMBINE ANGULAR MEASURES IF NECESSARY - IF (MONO.GT.1) THEN - DO 100 K=1,N - IF (K.NE.I.AND.K.NE.J) THEN - IF (RECO.EQ.1) THEN - PI=P(4,I) - PJ=P(4,J) - ELSEIF (RECO.EQ.2) THEN - PI=P(6,I) - PJ=P(6,J) - ELSEIF (RECO.EQ.3) THEN - PI=P(9,I) - PJ=P(9,J) - ELSE - CALL KTWARN('KTMERG',201,*999) - STOP - ENDIF - IF (PI.EQ.0.AND.PJ.EQ.0) THEN - PI=1 - PJ=1 - ENDIF - KTP(MAX(I,K),MIN(I,K))= - & (PI*KTUP(I,K)+PJ*KTUP(J,K))/(PI+PJ) - ENDIF - 100 CONTINUE - ENDIF - IF (RECO.EQ.1) THEN -C---VECTOR ADDITION - P(1,I)=P(1,I)+P(1,J) - P(2,I)=P(2,I)+P(2,J) - P(3,I)=P(3,I)+P(3,J) -c P(4,I)=P(4,I)+P(4,J) ! JA - P(5,I)=SQRT(P(1,I)**2+P(2,I)**2+P(3,I)**2) - P(4,I)=P(5,I) ! JA (Massless scheme) - IF (P(5,I).EQ.0) THEN - P(5,I)=1 - ELSE - P(5,I)=1/P(5,I) - ENDIF - ELSEIF (RECO.EQ.2) THEN -C---PT WEIGHTED ETA-PHI ADDITION - PT=P(6,I)+P(6,J) - IF (PT.EQ.0) THEN - PTT=1 - ELSE - PTT=1/PT - ENDIF - P(7,I)=(P(6,I)*P(7,I)+P(6,J)*P(7,J))*PTT - P(8,I)=KTMDPI(P(8,I)+P(6,J)*PTT*KTMDPI(P(8,J)-P(8,I))) - P(6,I)=PT - P(9,I)=PT**2 - ELSEIF (RECO.EQ.3) THEN -C---PT**2 WEIGHTED ETA-PHI ADDITION - PT=P(9,I)+P(9,J) - IF (PT.EQ.0) THEN - PTT=1 - ELSE - PTT=1/PT - ENDIF - P(7,I)=(P(9,I)*P(7,I)+P(9,J)*P(7,J))*PTT - P(8,I)=KTMDPI(P(8,I)+P(9,J)*PTT*KTMDPI(P(8,J)-P(8,I))) - P(6,I)=P(6,I)+P(6,J) - P(9,I)=P(6,I)**2 - ELSE - CALL KTWARN('KTMERG',202,*999) - STOP - ENDIF -C---IF MONO.GT.0 CALCULATE NEW KT MEASURES. IF MONO.GT.1 USE ANGULAR ONES. - IF (MONO.LE.0) RETURN -C---CONVERTING BETWEEN 4-MTM AND PT,ETA,PHI IF NECESSARY - IF (ANGL.NE.1.AND.RECO.EQ.1) THEN - P(9,I)=P(1,I)**2+P(2,I)**2 - P(7,I)=P(4,I)**2-P(3,I)**2 - IF (P(7,I).LE.EPS*P(4,I)**2) P(7,I)=P(9,I) - IF (P(7,I).GT.0) THEN - P(7,I)=LOG((P(4,I)+ABS(P(3,I)))**2/P(7,I))/2 - IF (P(7,I).GT.ETAMAX) P(7,I)=ETAMAX+2 - ELSE - P(7,I)=ETAMAX+2 - ENDIF - P(7,I)=SIGN(P(7,I),P(3,I)) - IF (P(1,I).NE.0.AND.P(2,I).NE.0) THEN - P(8,I)=ATAN2(P(2,I),P(1,I)) - ELSE - P(8,I)=0 - ENDIF - ELSEIF (ANGL.EQ.1.AND.RECO.NE.1) THEN - P(1,I)=P(6,I)*COS(P(8,I)) - P(2,I)=P(6,I)*SIN(P(8,I)) - P(3,I)=P(6,I)*SINH(P(7,I)) - P(4,I)=P(6,I)*COSH(P(7,I)) - IF (P(4,I).NE.0) THEN - P(5,I)=1/P(4,I) - ELSE - P(5,I)=1 - ENDIF - ENDIF - ANG=0 - DO 200 K=1,N - IF (K.NE.I.AND.K.NE.J) THEN - IF (MONO.GT.1) ANG=KTUP(I,K) - KTP(MIN(I,K),MAX(I,K))= - & KTPAIR(ANGL,P(1,I),P(1,K),ANG) - ENDIF - 200 CONTINUE - KTS(I)=KTSING(ANGL,TYPE,P(1,I)) - 999 END -C----------------------------------------------------------------------- - SUBROUTINE KTMOVE(P,KTP,KTS,NMAX,N,J,IOPT) - IMPLICIT NONE -C---MOVE THE Nth PARTICLE IN P TO THE Jth POSITION -C---ALSO MOVING KTP AND KTS IF IOPT.GT.0 - INTEGER I,J,N,NMAX,IOPT - DOUBLE PRECISION P(9,NMAX),KTP(NMAX,NMAX),KTS(NMAX) - DO 100 I=1,9 - P(I,J)=P(I,N) - 100 CONTINUE - IF (IOPT.LE.0) RETURN - DO 110 I=1,J-1 - KTP(I,J)=KTP(I,N) - KTP(J,I)=KTP(N,I) - 110 CONTINUE - DO 120 I=J+1,N-1 - KTP(J,I)=KTP(I,N) - KTP(I,J)=KTP(N,I) - 120 CONTINUE - KTS(J)=KTS(N) - END -C----------------------------------------------------------------------- - SUBROUTINE KTUNIT(R) - IMPLICIT NONE -C SET R EQUAL TO THE 4 BY 4 IDENTITY MATRIX - DOUBLE PRECISION R(4,4) - INTEGER I,J - DO 20 I=1,4 - DO 10 J=1,4 - R(I,J)=0 - IF (I.EQ.J) R(I,J)=1 - 10 CONTINUE - 20 CONTINUE - END -C----------------------------------------------------------------------- - SUBROUTINE KTLBST(IOPT,R,A,*) - IMPLICIT NONE -C PREMULTIPLY R BY THE 4 BY 4 MATRIX TO -C LORENTZ BOOST TO/FROM THE CM FRAME OF A -C IOPT=0 => TO -C IOPT=1 => FROM -C -C LAST ARGUMENT IS LABEL TO JUMP TO IF A IS NOT TIME-LIKE -C - INTEGER IOPT,I,J - DOUBLE PRECISION R(4,4),A(4),B(4),C(4,4),M - DO 10 I=1,4 - B(I)=A(I) - 10 CONTINUE - M=B(4)**2-B(1)**2-B(2)**2-B(3)**2 - IF (M.LE.0) CALL KTWARN('KTLBST',100,*999) - M=SQRT(M) - B(4)=B(4)+M - M=1/(M*B(4)) - IF (IOPT.EQ.0) THEN - B(4)=-B(4) - ELSEIF (IOPT.NE.1) THEN - CALL KTWARN('KTLBST',200,*999) - STOP - ENDIF - DO 30 I=1,4 - DO 20 J=1,4 - C(I,J)=B(I)*B(J)*M - IF (I.EQ.J) C(I,J)=C(I,J)+1 - 20 CONTINUE - 30 CONTINUE - C(4,4)=C(4,4)-2 - CALL KTMMUL(C,R,R) - RETURN - 999 RETURN 1 - END -C----------------------------------------------------------------------- - SUBROUTINE KTRROT(R,A,B,*) - IMPLICIT NONE -C PREMULTIPLY R BY THE 4 BY 4 MATRIX TO -C ROTATE FROM VECTOR A TO VECTOR B BY THE SHORTEST ROUTE -C IF THEY ARE EXACTLY BACK-TO-BACK, THE ROTATION AXIS IS THE VECTOR -C WHICH IS PERPENDICULAR TO THEM AND THE X AXIS, UNLESS THEY ARE -C PERPENDICULAR TO THE Y AXIS, WHEN IT IS THE VECTOR WHICH IS -C PERPENDICULAR TO THEM AND THE Y AXIS. -C NOTE THAT THESE CONDITIONS GUARANTEE THAT IF BOTH ARE PERPENDICULAR -C TO THE Z AXIS, IT WILL BE USED AS THE ROTATION AXIS. -C -C LAST ARGUMENT IS LABEL TO JUMP TO IF EITHER HAS LENGTH ZERO -C - DOUBLE PRECISION R(4,4),M(4,4),A(4),B(4),C(4),D(4),AL,BL,CL,DL,EPS -C---SQRT(2*EPS) IS THE ANGLE IN RADIANS OF THE SMALLEST ALLOWED ROTATION -C NOTE THAT IF YOU CONVERT THIS PROGRAM TO SINGLE PRECISION, YOU WILL -C NEED TO INCREASE EPS TO AROUND 0.5E-4 - PARAMETER (EPS=0.5D-6) - AL=A(1)**2+A(2)**2+A(3)**2 - BL=B(1)**2+B(2)**2+B(3)**2 - IF (AL.LE.0.OR.BL.LE.0) CALL KTWARN('KTRROT',100,*999) - AL=1/SQRT(AL) - BL=1/SQRT(BL) - CL=(A(1)*B(1)+A(2)*B(2)+A(3)*B(3))*AL*BL -C---IF THEY ARE COLLINEAR, DON'T NEED TO DO ANYTHING - IF (CL.GE.1-EPS) THEN - RETURN -C---IF THEY ARE BACK-TO-BACK, USE THE AXIS PERP TO THEM AND X AXIS - ELSEIF (CL.LE.-1+EPS) THEN - IF (ABS(B(2)).GT.EPS) THEN - C(1)= 0 - C(2)=-B(3) - C(3)= B(2) -C---UNLESS THEY ARE PERPENDICULAR TO THE Y AXIS, - ELSE - C(1)= B(3) - C(2)= 0 - C(3)=-B(1) - ENDIF -C---OTHERWISE FIND ROTATION AXIS - ELSE - C(1)=A(2)*B(3)-A(3)*B(2) - C(2)=A(3)*B(1)-A(1)*B(3) - C(3)=A(1)*B(2)-A(2)*B(1) - ENDIF - CL=C(1)**2+C(2)**2+C(3)**2 - IF (CL.LE.0) CALL KTWARN('KTRROT',101,*999) - CL=1/SQRT(CL) -C---FIND ROTATION TO INTERMEDIATE AXES FROM A - D(1)=A(2)*C(3)-A(3)*C(2) - D(2)=A(3)*C(1)-A(1)*C(3) - D(3)=A(1)*C(2)-A(2)*C(1) - DL=AL*CL - M(1,1)=A(1)*AL - M(1,2)=A(2)*AL - M(1,3)=A(3)*AL - M(1,4)=0 - M(2,1)=C(1)*CL - M(2,2)=C(2)*CL - M(2,3)=C(3)*CL - M(2,4)=0 - M(3,1)=D(1)*DL - M(3,2)=D(2)*DL - M(3,3)=D(3)*DL - M(3,4)=0 - M(4,1)=0 - M(4,2)=0 - M(4,3)=0 - M(4,4)=1 - CALL KTMMUL(M,R,R) -C---AND ROTATION FROM INTERMEDIATE AXES TO B - D(1)=B(2)*C(3)-B(3)*C(2) - D(2)=B(3)*C(1)-B(1)*C(3) - D(3)=B(1)*C(2)-B(2)*C(1) - DL=BL*CL - M(1,1)=B(1)*BL - M(2,1)=B(2)*BL - M(3,1)=B(3)*BL - M(1,2)=C(1)*CL - M(2,2)=C(2)*CL - M(3,2)=C(3)*CL - M(1,3)=D(1)*DL - M(2,3)=D(2)*DL - M(3,3)=D(3)*DL - CALL KTMMUL(M,R,R) - RETURN - 999 RETURN 1 - END -C----------------------------------------------------------------------- - SUBROUTINE KTVMUL(M,A,B) - IMPLICIT NONE -C 4 BY 4 MATRIX TIMES 4 VECTOR: B=M*A. -C ALL ARE DOUBLE PRECISION -C IT IS SAFE TO CALL WITH B=A -C FIRST SUBSCRIPT=ROWS, SECOND=COLUMNS - DOUBLE PRECISION M(4,4),A(4),B(4),C(4) - INTEGER I,J - DO 20 I=1,4 - C(I)=0 - DO 10 J=1,4 - C(I)=C(I)+M(I,J)*A(J) - 10 CONTINUE - 20 CONTINUE - DO 30 I=1,4 - B(I)=C(I) - 30 CONTINUE - END -C----------------------------------------------------------------------- - SUBROUTINE KTMMUL(A,B,C) - IMPLICIT NONE -C 4 BY 4 MATRIX MULTIPLICATION: C=A*B. -C ALL ARE DOUBLE PRECISION -C IT IS SAFE TO CALL WITH C=A OR B. -C FIRST SUBSCRIPT=ROWS, SECOND=COLUMNS - DOUBLE PRECISION A(4,4),B(4,4),C(4,4),D(4,4) - INTEGER I,J,K - DO 30 I=1,4 - DO 20 J=1,4 - D(I,J)=0 - DO 10 K=1,4 - D(I,J)=D(I,J)+A(I,K)*B(K,J) - 10 CONTINUE - 20 CONTINUE - 30 CONTINUE - DO 50 I=1,4 - DO 40 J=1,4 - C(I,J)=D(I,J) - 40 CONTINUE - 50 CONTINUE - END -C----------------------------------------------------------------------- - SUBROUTINE KTINVT(A,B) - IMPLICIT NONE -C---INVERT TRANSFORMATION MATRIX A -C -C A = INPUT : 4 BY 4 TRANSFORMATION MATRIX -C B = OUTPUT : INVERTED TRANSFORMATION MATRIX -C -C IF A IS NOT A TRANSFORMATION MATRIX YOU WILL GET STRANGE RESULTS -C -C NOTE THAT IT IS SAFE TO CALL WITH A=B -C - DOUBLE PRECISION A(4,4),B(4,4),C(4,4) - INTEGER I,J -C---TRANSPOSE - DO 20 I=1,4 - DO 10 J=1,4 - C(I,J)=A(J,I) - 10 CONTINUE - 20 CONTINUE -C---NEGATE ENERGY-MOMENTUM MIXING TERMS - DO 30 I=1,3 - C(4,I)=-C(4,I) - C(I,4)=-C(I,4) - 30 CONTINUE -C---OUTPUT - DO 50 I=1,4 - DO 40 J=1,4 - B(I,J)=C(I,J) - 40 CONTINUE - 50 CONTINUE - END -C----------------------------------------------------------------------- - FUNCTION KTMDPI(PHI) - IMPLICIT NONE -C---RETURNS PHI, MOVED ONTO THE RANGE [-PI,PI) - DOUBLE PRECISION KTMDPI,PHI,PI,TWOPI,THRPI,EPS - PARAMETER (PI=3.14159265358979324D0,TWOPI=6.28318530717958648D0, - & THRPI=9.42477796076937972D0) - PARAMETER (EPS=1D-15) - KTMDPI=PHI - IF (KTMDPI.LE.PI) THEN - IF (KTMDPI.GT.-PI) THEN - GOTO 100 - ELSEIF (KTMDPI.GT.-THRPI) THEN - KTMDPI=KTMDPI+TWOPI - ELSE - KTMDPI=-MOD(PI-KTMDPI,TWOPI)+PI - ENDIF - ELSEIF (KTMDPI.LE.THRPI) THEN - KTMDPI=KTMDPI-TWOPI - ELSE - KTMDPI=MOD(PI+KTMDPI,TWOPI)-PI - ENDIF - 100 IF (ABS(KTMDPI).LT.EPS) KTMDPI=0 - END -C----------------------------------------------------------------------- - SUBROUTINE KTWARN(SUBRTN,ICODE,*) -C DEALS WITH ERRORS DURING EXECUTION -C SUBRTN = NAME OF CALLING SUBROUTINE -C ICODE = ERROR CODE: - 99 PRINT WARNING & CONTINUE -C 100-199 PRINT WARNING & JUMP -C 200- PRINT WARNING & STOP DEAD -C----------------------------------------------------------------------- - INTEGER ICODE - CHARACTER*6 SUBRTN - WRITE (6,10) SUBRTN,ICODE - 10 FORMAT(/' KTWARN CALLED FROM SUBPROGRAM ',A6,': CODE =',I4/) - IF (ICODE.LT.100) RETURN - IF (ICODE.LT.200) RETURN 1 - STOP - END -C----------------------------------------------------------------------- -C----------------------------------------------------------------------- -C----------------------------------------------------------------------- diff --git a/Generators/MadGraph_i/src/usemadgraph.F b/Generators/MadGraph_i/src/usemadgraph.F deleted file mode 100644 index e146561607e509cfc6df3d80be08c829fe24949b..0000000000000000000000000000000000000000 --- a/Generators/MadGraph_i/src/usemadgraph.F +++ /dev/null @@ -1,1396 +0,0 @@ - -C...UPEVNT -C...Routine called by PYEVNT or PYEVNW to get user process event - - SUBROUTINE USEMADGRAPH - - IMPLICIT NONE - -C...Pythia parameters. - INTEGER MSTP,MSTI - DOUBLE PRECISION PARP,PARI - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) - SAVE /PYPARS/ -C...User process initialization commonblock. -C #include "GeneratorModules/heprup.inc" - INTEGER MAXPUP - PARAMETER (MAXPUP=100) - INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP - DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP - COMMON/HEPRUP/IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2), - & IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP),XMAXUP(MAXPUP), - & LPRUP(MAXPUP) -C...User process event common block. -C #include "GeneratorModules/hepeup.inc" - INTEGER MAXNUP - PARAMETER (MAXNUP=500) - INTEGER NUP,IDPRUP,IDUP,ISTUP,MOTHUP,ICOLUP - DOUBLE PRECISION XWGTUP,SCALUP,AQEDUP,AQCDUP,PUP,VTIMUP,SPINUP - COMMON/HEPEUP/NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP,IDUP(MAXNUP), - & ISTUP(MAXNUP),MOTHUP(2,MAXNUP),ICOLUP(2,MAXNUP),PUP(5,MAXNUP), - & VTIMUP(MAXNUP),SPINUP(MAXNUP) -C...Pythia common blocks - INTEGER PYCOMP,KCHG,MINT,NPART,NPARTD,IPART,MAXNUR - DOUBLE PRECISION PMAS,PARF,VCKM,VINT,PTPART -C...Particle properties + some flavour parameters. - COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) - COMMON/PYINT1/MINT(400),VINT(400) - PARAMETER (MAXNUR=1000) - COMMON/PYPART/NPART,NPARTD,IPART(MAXNUR),PTPART(MAXNUR) - save /pypart/ -C...Extra commonblock to transfer run info. - INTEGER LNHIN,LNHOUT,MSCAL,IEVNT,ICKKW,ISCALE - COMMON/MGUPPRIV/LNHIN,LNHOUT,MSCAL,IEVNT,ICKKW,ISCALE - -C...Inputs for the matching algorithm - double precision etcjet,rclmax,etaclmax,qcut,clfact - integer maxjets,minjets,iexcfile,ktsche,mektsc,nexcres,excres(30) - integer nremres, remres(30) - integer nqmatch,nexcproc,iexcproc(MAXPUP),iexcval(MAXPUP) - logical nosingrad,showerkt,jetprocs - common/MEMAIN/etcjet,rclmax,etaclmax,qcut,clfact,maxjets,minjets, - $ iexcfile,ktsche,mektsc,nexcres,excres,nremres,remres, - $ nqmatch,nexcproc,iexcproc,iexcval,nosingrad,showerkt,jetprocs - -C...Commonblock to transfer event-by-event matching info - INTEGER NLJETS,IEXC,Ifile - DOUBLE PRECISION PTCLUS - COMMON/MEMAEV/PTCLUS(20),NLJETS,IEXC,Ifile - -C...Local variables - INTEGER I,J,IBEG,NEX,KP(MAXNUP),MOTH,NUPREAD,II,iexcl - INTEGER irem(5),nrem - DOUBLE PRECISION PSUM,ESUM,PM1,PM2,A1,A2,A3,A4,A5 - DOUBLE PRECISION SCALLOW(MAXNUP),PNONJ(4),PMNONJ!,PT2JETS -c$$$C...Local variables -c$$$ INTEGER I,J,IBEG,NEX,KP(MAXNUP),MOTH,NUPREAD,II,iexcl -c$$$ DOUBLE PRECISION PSUM,ESUM -C...Lines to read in assumed never longer than 200 characters. - INTEGER MAXLEN - PARAMETER (MAXLEN=200) - CHARACTER*(MAXLEN) STRING - -C...Functions - INTEGER iexclusive - EXTERNAL iexclusive - -C...Format for reading lines. - CHARACTER*6 STRFMT - CHARACTER*1 CDUM - - STRFMT='(A000)' - WRITE(STRFMT(3:5),'(I3)') MAXLEN - -C...Loop until finds line beginning with "<event>" or "<event ". - 100 READ(LNHIN,STRFMT,END=900,ERR=900) STRING - IBEG=0 - 110 IBEG=IBEG+1 -C...Allow indentation. - IF(STRING(IBEG:IBEG).EQ.' '.AND.IBEG.LT.MAXLEN-6) GOTO 110 - IF(STRING(IBEG:IBEG+6).NE.'<event>'.AND. - &STRING(IBEG:IBEG+6).NE.'<event ') GOTO 100 - -C...Read first line of event info. - READ(LNHIN,*,END=900,ERR=900) NUPREAD,IDPRUP,XWGTUP,SCALUP, - &AQEDUP,AQCDUP - -C...Read NUP subsequent lines with information on each particle. - ESUM=0d0 - PSUM=0d0 - NEX=2 - NUP=1 - NREM=0 - DO 120 I=1,NUPREAD - READ(LNHIN,*,END=900,ERR=900) IDUP(NUP),ISTUP(NUP), - & MOTHUP(1,NUP),MOTHUP(2,NUP),ICOLUP(1,NUP),ICOLUP(2,NUP), - & (PUP(J,NUP),J=1,5),VTIMUP(NUP),SPINUP(NUP) -C... Reset resonance momentum to prepare for mass shifts - DO J=1,nremres - IF(ISTUP(NUP).EQ.2 .AND. IDUP(NUP).EQ.remres(J)) THEN - NREM=NREM+1 - IF(NREM.GT.5)THEN - WRITE(*,*)'TOO MANY REMOVED RESONANCES IN ONE EVENT' - NREM=NREM-1 - EXIT - ENDIF - IREM(NREM)=I - GOTO 120 - ENDIF - ENDDO - IF(ISTUP(NUP).EQ.2) PUP(3,NUP)=0 - IF(ISTUP(NUP).EQ.1)THEN - NEX=NEX+1 - IF(PUP(5,NUP).EQ.0D0.AND.IABS(IDUP(NUP)).GT.3 - $ .AND.IDUP(NUP).NE.21) THEN -C... Set massless particle masses to Pythia default. Adjust z-momentum. - PUP(5,NUP)=PMAS(IABS(PYCOMP(IDUP(NUP))),1) - PUP(3,NUP)=SIGN(SQRT(MAX(0d0,PUP(4,NUP)**2-PUP(5,NUP)**2- - $ PUP(1,NUP)**2-PUP(2,NUP)**2)),PUP(3,NUP)) - ENDIF - PSUM=PSUM+PUP(3,NUP) -C... Set mother resonance momenta - MOTH=MOTHUP(1,NUP) - DO J=1,NREM - IF (MOTH .eq. IREM(J)) THEN - MOTHUP(1,NUP)=1 - MOTHUP(2,NUP)=2 - MOTH=1 - ENDIF - ENDDO - DO J=NREM,1,-1 - IF(MOTH.GT.IREM(J)) THEN - MOTH=MOTH-1 - MOTHUP(1,NUP)=MOTHUP(1,NUP)-1 - MOTHUP(2,NUP)=MOTHUP(2,NUP)-1 - ENDIF - ENDDO - DO WHILE (MOTH.GT.2) - PUP(3,MOTH)=PUP(3,MOTH)+PUP(3,NUP) - MOTH=MOTHUP(1,MOTH) - ENDDO - ENDIF - NUP=NUP+1 - 120 CONTINUE - NUP=NUP-1 - -C... Increment event number - IEVNT=IEVNT+1 - -C.. Adjust mass of resonances - DO I=1,NUP - IF(ISTUP(I).EQ.2)THEN - PUP(5,I)=SQRT(PUP(4,I)**2-PUP(1,I)**2-PUP(2,I)**2- - $ PUP(3,I)**2) - ENDIF - ENDDO - -C... Adjust energy and momentum of incoming particles -C... In massive case need to solve quadratic equation -c PM1=PUP(5,1)**2 -c PM2=PUP(5,2)**2 -c A1=4d0*(ESUM**2-PSUM**2) -c A2=ESUM**2-PSUM**2+PM2-PM1 -c A3=2d0*PSUM*A2 -c A4=A3/A1 -c A5=(A2**2-4d0*ESUM**2*PM2)/A1 -c -c PUP(3,2)=A4+SIGN(SQRT(A4**2+A5),PUP(3,2)) -c PUP(3,1)=PSUM-PUP(3,2) -c PUP(4,1)=SQRT(PUP(3,1)**2+PM1) -c PUP(4,2)=SQRT(PUP(3,2)**2+PM2) - - ESUM=PUP(4,1)+PUP(4,2) - -C... Assuming massless incoming particles - otherwise Pythia adjusts -C... the momenta to make them massless -c IF(IDBMUP(1).GT.100.AND.IDBMUP(2).GT.100)THEN -c DO I=1,2 -c PUP(3,I)=0.5d0*(PSUM+SIGN(ESUM,PUP(3,I))) -c PUP(5,I)=0d0 -c ENDDO -c PUP(4,1)=ABS(PUP(3,1)) -c PUP(4,2)=ESUM-PUP(4,1) -c ENDIF - -C... If you want to use some other scale for parton showering then the -C... factorisation scale given by MadEvent, please implement the function PYMASC -C... (example function included below) - - IF(ickkw.eq.0.AND.MSCAL.GT.0) CALL PYMASC(SCALUP) -c IF(MINT(35).eq.3.AND.ickkw.EQ.1) SCALUP=SQRT(PARP(67))*SCALUP - -C... Read FSR scale for all FS particles (as comment in event file) - IF(ickkw.eq.1)THEN - READ(LNHIN,*,END=900,ERR=130) CDUM,(PTPART(I),I=1,NEX) - 130 CONTINUE - ENDIF - - IF(ickkw.gt.0) THEN -c -c Set up number of jets -c - NLJETS=0 - NPART=0 - do i=3,NUP - if(ISTUP(i).ne.1) cycle - NPART=NPART+1 - IPART(NPART)=i - if(iabs(IDUP(i)).gt.nqmatch.and.IDUP(i).ne.21) cycle - if(MOTHUP(1,i).gt.2) cycle -C Remove final-state partons that combine to color singlets - IF((ABS(IDBMUP(1)).NE.11.OR.IDBMUP(1).NE.-IDBMUP(2)).AND. - $ nosingrad) THEN - DO II=3,NUP - IF(II.NE.i.AND.ISTUP(II).EQ.1)THEN - IF((IDUP(II).EQ.-IDUP(i).OR. - $ IDUP(i).EQ.21.AND.IDUP(II).EQ.21).AND. - $ ICOLUP(1,II).EQ.ICOLUP(2,i).AND. - $ ICOLUP(2,II).EQ.ICOLUP(1,i))then -c print *,'Found color singlet' - CALL PYLIST(7) - GOTO 140 - endif - ENDIF - ENDDO - ENDIF - NLJETS=NLJETS+1 - PTCLUS(NLJETS)=PTPART(NPART) - 140 continue - enddo - CALL ALPSOR(PTCLUS,nljets,KP,1) - - if(jetprocs) IDPRUP=LPRUP(NLJETS-MINJETS+1) - - IF(ickkw.eq.1) THEN -c ... and decide whether exclusive or inclusive - iexcl=iexclusive(IDPRUP) - if((IEXCFILE.EQ.0.and.NLJETS.eq.MAXJETS.or. - $ iexcl.eq.0).and. - $ iexcl.ne.1)then - IEXC=0 - else if(iexcl.eq.-1)then - IEXC=-1 - else - IEXC=1 - endif - ENDIF - ENDIF - - RETURN - -C... Error exit, typically when no more events. - 900 WRITE(*,*) ' Failed to read LHEF event information,' - WRITE(*,*) ' assume end of file has been reached.' - NUP=0 - MINT(51)=2 - RETURN - END - -C********************************************************************* -C...UPVETO -C...Subroutine to implement the MLM jet matching criterion -C********************************************************************* - SUBROUTINE VETOMADGRAPH(IPVETO) - - IMPLICIT NONE - -C...Pythia common blocks - INTEGER MINT - DOUBLE PRECISION VINT - COMMON/PYINT1/MINT(400),VINT(400) - INTEGER MSTP,MSTI - DOUBLE PRECISION PARP,PARI - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) - -C...GUP Event common block -C #include "GeneratorModules/hepeup.inc" - INTEGER MAXNUP - PARAMETER (MAXNUP=500) - INTEGER NUP,IDPRUP,IDUP,ISTUP,MOTHUP,ICOLUP - DOUBLE PRECISION XWGTUP,SCALUP,AQEDUP,AQCDUP,PUP,VTIMUP,SPINUP - COMMON/HEPEUP/NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP, - & IDUP(MAXNUP),ISTUP(MAXNUP),MOTHUP(2,MAXNUP), - & ICOLUP(2,MAXNUP),PUP(5,MAXNUP),VTIMUP(MAXNUP), - & SPINUP(MAXNUP) -C...User process initialization commonblock. -C #include "GeneratorModules/heprup.inc" - INTEGER MAXPUP - PARAMETER (MAXPUP=100) - INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP - DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP - COMMON/HEPRUP/IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2), - & IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP),XMAXUP(MAXPUP), - & LPRUP(MAXPUP) -C...HEPEVT commonblock. - INTEGER NMXHEP,NEVHEP,NHEP,ISTHEP,IDHEP,JMOHEP,JDAHEP - PARAMETER (NMXHEP=10000) - COMMON/HEPEVT/NEVHEP,NHEP,ISTHEP(NMXHEP),IDHEP(NMXHEP), - &JMOHEP(2,NMXHEP),JDAHEP(2,NMXHEP),PHEP(5,NMXHEP),VHEP(4,NMXHEP) - DOUBLE PRECISION PHEP,VHEP - SAVE /HEPEVT/ - INTEGER IPVETO -c$$$C...GETJET commonblocks - INTEGER NCJET -c$$$ INTEGER MNCY,MNCPHI,NCY,NCPHI,NJMAX,JETNO,NCJET -c$$$ DOUBLE PRECISION YCMIN,YCMAX,DELY,DELPHI,ET,STHCAL,CTHCAL,CPHCAL, -c$$$ & SPHCAL,PCJET,ETJET -c$$$ PARAMETER (MNCY=200) -c$$$ PARAMETER (MNCPHI=200) -c$$$ COMMON/CALORM/DELY,DELPHI,ET(MNCY,MNCPHI), -c$$$ $CTHCAL(MNCY),STHCAL(MNCY),CPHCAL(MNCPHI),SPHCAL(MNCPHI), -c$$$ $YCMIN,YCMAX,NCY,NCPHI -c$$$ PARAMETER (NJMAX=500) -c$$$ COMMON/GETCOMM/PCJET(4,NJMAX),ETJET(NJMAX),JETNO(MNCY,MNCPHI), -c$$$ $NCJET - DOUBLE PRECISION PI - PARAMETER (PI=3.141593D0) -c$$$C - DOUBLE PRECISION PSERAP -c$$$ INTEGER K(NJMAX),KP(NJMAX),kpj(njmax) - -C...Variables for the kT-clustering - INTEGER NMAX,NN,NSUB,JET,NJETM,IHARD,IP1,IP2 - DOUBLE PRECISION PP,PJET - DOUBLE PRECISION ECUT,Y,YCUT,RAD - PARAMETER (NMAX=512) - DIMENSION JET(NMAX),Y(NMAX),PP(4,NMAX),PJET(4,NMAX), - $ PJETM(4,NMAX) - INTEGER NNM - DOUBLE PRECISION YM(NMAX),PPM(4,NMAX),PJETM - -C...kt clustering common block - INTEGER NMAXKT,NUM,HIST - PARAMETER (NMAXKT=512) - DOUBLE PRECISION PPP,KT,ETOT,RSQ,KTP,KTS,KTLAST - COMMON /KTCOMM/ETOT,RSQ,PPP(9,NMAXKT),KTP(NMAXKT,NMAXKT), - $ KTS(NMAXKT),KT(NMAXKT),KTLAST(NMAXKT),HIST(NMAXKT),NUM - -C...Extra commonblock to transfer run info. - INTEGER LNHIN,LNHOUT,MSCAL,IEVNT,ICKKW,ISCALE - COMMON/MGUPPRIV/LNHIN,LNHOUT,MSCAL,IEVNT,ICKKW,ISCALE - -C...Inputs for the matching algorithm -C clfact determines how jet-to parton matching is done -C kt-jets: default=1 -C clfact >= 0: Max mult. if within clfact*max(qcut,Q(partNmax)) from jet, others within clfact*qcut -C clfact < 0: Max mult. if within |clfact|*Q(jetNmax) from jet, other within |clfact|*qcut -C cone-jets: default=1.5 -C Matching if within clfact*RCLMAX - - double precision etcjet,rclmax,etaclmax,qcut,clfact - integer maxjets,minjets,iexcfile,ktsche,mektsc,nexcres,excres(30) - integer nremres, remres(30) - integer nqmatch,nexcproc,iexcproc(MAXPUP),iexcval(MAXPUP) - logical nosingrad,showerkt,jetprocs - common/MEMAIN/etcjet,rclmax,etaclmax,qcut,clfact,maxjets,minjets, - $ iexcfile,ktsche,mektsc,nexcres,excres,nremres,remres, - $ nqmatch,nexcproc,iexcproc,iexcval,nosingrad,showerkt,jetprocs - -C...Commonblock to transfer event-by-event matching info - INTEGER NLJETS,IEXC,Ifile - DOUBLE PRECISION PTCLUS - COMMON/MEMAEV/PTCLUS(20),NLJETS,IEXC,Ifile - - INTEGER nvarev,nvar2 - PARAMETER (nvarev=57,nvar2=6) - - REAL*4 varev(nvarev) - COMMON/HISTDAT/varev - - -C local variables - double precision tiny - parameter (tiny=1d-3) - integer icount - data icount/0/ - integer idbg - data idbg/0/ - - integer i,j,ihep,nmatch,jrmin,KPT(MAXNUP),nres,ii - double precision etajet,phijet,delr,dphi,delrmin,ptjet - double precision p(4,10),pt(10),eta(10),phi(10) - INTEGER ISTOLD(NMXHEP),IST,IMO - logical norad(20) - REAL*4 var2(nvar2) - -c if(NLJETS.GT.0)then -c idbg=1 -c else -c idbg=0 -c endif - - IPVETO=0 -c Return if not MLM matching (or non-matched subprocess) - -cccc WRITE(LNHOUT,*) '*** Entering UPVETO *** ' - - IF(ICKKW.LE.0.OR.IEXC.eq.-1) RETURN - - IF(NLJETS.LT.MINJETS.OR.NLJETS.GT.MAXJETS)THEN - if(idbg.eq.1) - $ WRITE(LNHOUT,*) 'Failed due to NLJETS ',NLJETS,' < ',MINJETS, - $ ' or > ',MAXJETS - GOTO 999 - ENDIF - -C Throw event if it contains an excluded resonance - NRES=0 - DO I=1,NUP - IF(ISTUP(I).EQ.2)THEN - DO J=1,nexcres - IF(IDUP(I).EQ.EXCRES(J)) NRES=NRES+1 - ENDDO - ENDIF - ENDDO - IF(NRES.GT.0)THEN - if(idbg.eq.1) - $ PRINT *,'Event',IEVNT,' thrown because of ',NRES, - $ ' excluded resonance(s)' -c CALL PYLIST(7) - GOTO 999 - ENDIF - -C Set up vetoed mothers -c DO I=1,MAXNUP -c INORAD(I)=0 -c ENDDO -c DO IHEP=1,NUP-2 -c if(ISTHEP(ihep).gt.1.and.iabs(IDHEP(ihep)).gt.8) then -c if(iabs(IDHEP(ihep)).gt.5.and.IDHEP(ihep).ne.21) then -c INORAD(ihep)=1 -c endif -c ENDDO - -C -c reconstruct parton-level event -c Set norad for daughters of decayed particles, to not include -c radiation from these in matched jets -c - if(idbg.eq.1) then - write(LNHOUT,*) ' ' - write(LNHOUT,*) 'new event ' -c CALL PYLIST(1) - CALL PYLIST(7) - CALL PYLIST(5) - write(LNHOUT,*) 'PARTONS' - endif - i=0 - do ihep=3,nup - NORAD(ihep)=.false. - if((ABS(IDBMUP(1)).NE.11.OR.IDBMUP(1).NE.-IDBMUP(2)).AND. - $ MOTHUP(1,ihep).gt.2) goto 100 - if(ISTUP(ihep).ne.1.or. - $ (iabs(IDUP(ihep)).gt.nqmatch.and.IDUP(ihep).ne.21)) cycle -c If quark or gluon making singlet system with other final-state parton -c remove (since unseen singlet resonance) unless e+e- collision - IF((ABS(IDBMUP(1)).NE.11.OR.IDBMUP(1).NE.-IDBMUP(2)).AND. - $ nosingrad)THEN - DO II=3,NUP - IF(II.NE.ihep.AND.ISTUP(II).EQ.1)THEN - IF((IDUP(II).EQ.-IDUP(ihep).OR. - $ IDUP(ihep).EQ.21.AND.IDUP(II).EQ.21).AND. - $ ICOLUP(1,II).EQ.ICOLUP(2,ihep).AND. - $ ICOLUP(2,II).EQ.ICOLUP(1,ihep)) - $ GOTO 100 - ENDIF - ENDDO - ENDIF - i=i+1 - do j=1,4 - p(j,i)=pup(j,ihep) - enddo - pt(i)=sqrt(p(1,i)**2+p(2,i)**2) - if(i.LE.4) varev(50+i)=pt(i) - eta(i)=-log(tan(0.5d0*atan2(pt(i)+tiny,p(3,i)))) - phi(i)=atan2(p(2,i),p(1,i)) - if(idbg.eq.1) then - write(LNHOUT,*) pt(i),eta(i),phi(i) - endif - cycle - 100 norad(ihep)=.true. - enddo - if(i.ne.NLJETS)then - print *,'Error in UPVETO: Wrong number of jets found ',i,NLJETS - CALL PYLIST(7) - CALL PYLIST(2) - stop - endif - -C Bubble-sort PTs in descending order - DO I=1,3 - DO J=4,I+1,-1 - IF(varev(50+J).GT.varev(50+I))THEN - PTJET=varev(50+J) - varev(50+J)=varev(50+I) - varev(50+I)=PTJET - ENDIF - ENDDO - ENDDO - -C Set status for non-clustering partons to 2 - DO ihep=1,NHEP -c ISTORG(ihep)=ISTHEP(ihep) - IF(ISTHEP(ihep).EQ.1.AND.iabs(IDHEP(ihep)).GT.5.AND. - $ IDHEP(ihep).NE.21) THEN - ISTHEP(ihep)=2 - ELSEIF(ISTHEP(ihep).EQ.1.AND.JMOHEP(1,ihep).GT.0) then - IMO=JMOHEP(1,ihep) - DO WHILE(IMO.GT.0) -c Trace mothers, if non-radiating => daughter is decay - remove - IF(IMO.le.NUP-2.and.norad(IMO+2)) GOTO 105 - IMO=JMOHEP(1,IMO) - ENDDO - cycle - 105 ISTHEP(ihep)=2 - ENDIF - ENDDO - -C Prepare histogram filling - DO I=1,4 - var2(1+I)=-1 - varev(46+I)=-1 - varev(50+I)=-1 - ENDDO - - I=0 - if(idbg.eq.1) then - do i=1,nhep - write(LNHOUT,1000)i,isthep(i),idhep(i),jmohep(1,i),jmohep(2,i) - $ ,phep(1,i),phep(2,i),phep(3,i) - enddo - 1000 format(5(i4,1x),3(f12.5,1x)) - endif - - IF(ICKKW.EQ.2) GOTO 150 - - IF(MSTP(61).eq.0..and.MSTP(71).eq.0)then -c No showering - just print out event - ELSE IF(qcut.le.0d0)then - PRINT *,' ERROR: qcut < 0, --> STOP' - STOP -c$$$ -c$$$ IF(clfact.EQ.0d0) clfact=1.5d0 -c$$$ -c$$$c CALL PYLIST(7) -c$$$c CALL PYLIST(2) -c$$$c CALL PYLIST(5) -c$$$c Start from the partonic system -c$$$ IF(NLJETS.GT.0) CALL ALPSOR(pt,nljets,KP,2) -c$$$c reconstruct showered jets -c$$$c -c$$$ YCMAX=ETACLMAX+RCLMAX -c$$$ YCMIN=-YCMAX -c$$$ CALL CALINIM -c$$$ CALL CALDELM(1,1) -c$$$ CALL GETJETM(RCLMAX,ETCJET,ETACLMAX) -c$$$c analyse only events with at least nljets-reconstructed jets -c$$$ IF(NCJET.GT.0) CALL ALPSOR(ETJET,NCJET,K,2) -c$$$ if(idbg.eq.1) then -c$$$ write(LNHOUT,*) 'JETS' -c$$$ do i=1,ncjet -c$$$ j=k(ncjet+1-i) -c$$$ ETAJET=PSERAP(PCJET(1,j)) -c$$$ PHIJET=ATAN2(PCJET(2,j),PCJET(1,j)) -c$$$ write(LNHOUT,*) etjet(j),etajet,phijet -c$$$ enddo -c$$$ endif -c$$$ IF(NCJET.LT.NLJETS) THEN -c$$$ if(idbg.eq.1) -c$$$ $ WRITE(LNHOUT,*) 'Failed due to NCJET ',NCJET,' < ',NLJETS -c$$$ GOTO 999 -c$$$ endif -c$$$c associate partons and jets, using min(delr) as criterion -c$$$ NMATCH=0 -c$$$ DO I=1,NCJET -c$$$ KPJ(I)=0 -c$$$ ENDDO -c$$$ DO I=1,NLJETS -c$$$ DELRMIN=1D5 -c$$$ DO 110 J=1,NCJET -c$$$ IF(KPJ(J).NE.0) GO TO 110 -c$$$ ETAJET=PSERAP(PCJET(1,J)) -c$$$ PHIJET=ATAN2(PCJET(2,J),PCJET(1,J)) -c$$$ DPHI=ABS(PHI(KP(NLJETS-I+1))-PHIJET) -c$$$ IF(DPHI.GT.PI) DPHI=2.*PI-DPHI -c$$$ DELR=SQRT((ETA(KP(NLJETS-I+1))-ETAJET)**2+(DPHI)**2) -c$$$ IF(DELR.LT.DELRMIN) THEN -c$$$ DELRMIN=DELR -c$$$ JRMIN=J -c$$$ ENDIF -c$$$ 110 CONTINUE -c$$$ IF(DELRMIN.LT.clfact*RCLMAX) THEN -c$$$ NMATCH=NMATCH+1 -c$$$ KPJ(JRMIN)=I -c$$$ ENDIF -c$$$C WRITE(*,*) 'PARTON-JET',I,' best match:',k(ncjet+1-jrmin) -c$$$c $ ,delrmin -c$$$ ENDDO -c$$$ IF(NMATCH.LT.NLJETS) THEN -c$$$ if(idbg.eq.1) -c$$$ $ WRITE(LNHOUT,*) 'Failed due to NMATCH ',NMATCH,' < ',NLJETS -c$$$ GOTO 999 -c$$$ endif -c$$$C REJECT EVENTS WITH LARGER JET MULTIPLICITY FROM EXCLUSIVE SAMPLE -c$$$ IF(NCJET.GT.NLJETS.AND.IEXC.EQ.1) THEN -c$$$ if(idbg.eq.1) -c$$$ $ WRITE(LNHOUT,*) 'Failed due to NCJET ',NCJET,' > ',NLJETS -c$$$ GOTO 999 -c$$$ endif -c$$$C VETO EVENTS WHERE MATCHED JETS ARE SOFTER THAN NON-MATCHED ONES -c$$$ IF(IEXC.NE.1) THEN -c$$$ J=NCJET -c$$$ DO I=1,NLJETS -c$$$ IF(KPJ(K(J)).EQ.0) GOTO 999 -c$$$ J=J-1 -c$$$ ENDDO -c$$$ ENDIF - - else ! qcut.gt.0 - - if(showerkt) then -C Use "shower emission pt method" -C Veto events where first shower emission has kt > YCUT - - IF(NLJETS.EQ.0)THEN - VINT(358)=0 - ENDIF - - IF(idbg.eq.1) THEN - PRINT *,'Using shower emission pt method' - PRINT *,'qcut, ptclus(1), vint(357),vint(358),vint(360): ', - $ qcut,ptclus(1),vint(357),vint(358),vint(360) - ENDIF - YCUT=qcut**2 - - IF(NLJETS.GT.0.AND.PTCLUS(1)**2.LT.YCUT) THEN - if(idbg.eq.1) - $ WRITE(LNHOUT,*) 'Failed due to KT ', - $ PTCLUS(1),' < ',SQRT(YCUT) - GOTO 999 - ENDIF - -c PRINT *,'Y,VINT:',SQRT(Y(NLJETS+1)),SQRT(VINT(390)) - - IF(IEXC.EQ.1.AND. - $ ((mektsc.eq.1.and.MAX(VINT(357),VINT(358)).GT.SQRT(YCUT)) - $ .OR. - $ (mektsc.eq.2.and.MAX(VINT(360),VINT(358)).GT.SQRT(YCUT)))) - $ THEN - if(idbg.eq.1) - $ WRITE(LNHOUT,*) - $ 'Failed due to ',max(VINT(357),VINT(358)),' > ',SQRT(YCUT) - GOTO 999 - ENDIF -c PRINT *,NLJETS,IEXC,SQRT(VINT(390)),PTCLUS(1),SQRT(YCUT) -c Highest multiplicity case - IF(IEXC.EQ.0.AND.NLJETS.GT.0.AND. - $ ((mektsc.eq.1.and.MAX(VINT(357),VINT(358)).GT.PTCLUS(1)) - $ .OR. - $ (mektsc.eq.2.and.MAX(VINT(360),VINT(358)).GT.PTCLUS(1)))) - $ THEN -c $ VINT(390).GT.PTCLUS(1)**2)THEN - if(idbg.eq.1) - $ WRITE(LNHOUT,*) - $ 'Failed due to ',max(VINT(357),VINT(358)),' > ',PTCLUS(1) - GOTO 999 - ENDIF -c - else ! not shower kt method - - IF(clfact.EQ.0d0) clfact=1d0 - -C---FIND FINAL STATE COLOURED PARTICLES - NN=0 - DO IHEP=1,NHEP - IF (ISTHEP(IHEP).EQ.1 - $ .AND.(ABS(IDHEP(IHEP)).LE.5.OR.IDHEP(IHEP).EQ.21)) THEN - PTJET=sqrt(PHEP(1,IHEP)**2+PHEP(2,IHEP)**2) - ETAJET=ABS(LOG(MIN((SQRT(PTJET**2+PHEP(3,IHEP)**2)+ - $ ABS(PHEP(3,IHEP)))/PTJET,1d5))) - IF(ETAJET.GT.etaclmax) cycle - NN=NN+1 - IF (NN.GT.NMAX) then - CALL PYLIST(2) - PRINT *, 'Too many particles: ', NN - NN=NN-1 - GOTO 120 - endif - DO I=1,4 - PP(I,NN)=PHEP(I,IHEP) - ENDDO - ELSE if(idbg.eq.1)THEN - PRINT *,'Skipping particle ',IHEP,ISTHEP(IHEP),IDHEP(IHEP) - ENDIF - ENDDO - -C...Cluster event to find values of Y including jet matching but not veto of too many jets -C...Only used to fill the beforeveto Root tree - 120 ECUT=1 - IF (NN.GT.1) then - CALL KTCLUS(KTSCHE,PP,NN,ECUT,Y,*999) - if(idbg.eq.1) - $ WRITE(LNHOUT,*) 'Clustering values:', - $ (SQRT(Y(i)),i=1,MIN(NN,3)) - -C Print out values in the case where all jets are matched at the -C value of the NLJETS:th clustering - var2(1)=NLJETS - var2(6)= Ifile - - if(NLJETS.GT.MINJETS)then - YCUT=Y(NLJETS) - CALL KTRECO(MOD(KTSCHE,10),PP,NN,ECUT,YCUT,YCUT,PJET,JET, - $ NCJET,NSUB,*999) - -C Cluster jets with first hard parton - DO I=1,NLJETS - DO J=1,4 - PPM(J,I)=PJET(J,I) - ENDDO - ENDDO - - NJETM=NLJETS - DO IHARD=1,NLJETS - NNM=NJETM+1 - DO J=1,4 - PPM(J,NNM)=p(J,IHARD) - ENDDO - CALL KTCLUS(KTSCHE,PPM,NNM,ECUT,YM,*999) - IF(YM(NNM).GT.YCUT) THEN -C Parton not clustered - GOTO 130 - ENDIF - -C Find jet clustered with parton - - IP1=HIST(NNM)/NMAXKT - IP2=MOD(HIST(NNM),NMAXKT) - IF(IP2.NE.NNM.OR.IP1.LE.0)THEN - GOTO 130 - ENDIF - DO I=IP1,NJETM-1 - DO J=1,4 - PPM(J,I)=PPM(J,I+1) - ENDDO - ENDDO - NJETM=NJETM-1 - ENDDO ! IHARD=1,NLJETS - endif ! NLJETS.GT.MINJETS - - DO I=1,MIN(NN,4) - var2(1+I)=SQRT(Y(I)) - ENDDO - WRITE(15,4001) (var2(I),I=1,nvar2) - - 130 CONTINUE - -C Now perform jet clustering at the value chosen in qcut - - CALL KTCLUS(KTSCHE,PP,NN,ECUT,Y,*999) - - YCUT=qcut**2 - NCJET=0 - -C Reconstruct jet momenta - CALL KTRECO(MOD(KTSCHE,10),PP,NN,ECUT,YCUT,YCUT,PJET,JET, - $ NCJET,NSUB,*999) - - ELSE IF (NN.EQ.1) THEN - - Y(1)=PP(1,1)**2+PP(2,1)**2 - IF(Y(1).GT.YCUT)THEN - NCJET=1 - DO I=1,4 - PJET(I,1)=PP(I,1) - ENDDO - ENDIF - endif - - if(idbg.eq.1) then - write(LNHOUT,*) 'JETS' - do i=1,ncjet - PTJET =SQRT(PJET(1,i)**2+PJET(2,i)**2) - ETAJET=PSERAP(PJET(1,i)) - PHIJET=ATAN2(PJET(2,i),PJET(1,i)) - write(LNHOUT,*) ptjet,etajet,phijet - enddo - endif - - IF(NCJET.LT.NLJETS) THEN - if(idbg.eq.1) - $ WRITE(LNHOUT,*) 'Failed due to NCJET ',NCJET,' < ',NLJETS - GOTO 999 - endif - -C...Right number of jets - but the right jets? -C For max. multiplicity case, count jets only to the NHARD:th jet - IF(IEXC.EQ.0)THEN - IF(NLJETS.GT.0)THEN - YCUT=Y(NLJETS) - CALL KTRECO(MOD(KTSCHE,10),PP,NN,ECUT,YCUT,YCUT,PJET,JET, - $ NCJET,NSUB,*999) - IF(clfact.GE.0d0) THEN - CALL ALPSOR(PTCLUS,nljets,KPT,2) - YCUT=MAX(qcut,PTCLUS(KPT(1)))**2 - ENDIF - ENDIF - ELSE IF(NCJET.GT.NLJETS) THEN - if(idbg.eq.1) - $ WRITE(LNHOUT,*) 'Failed due to NCJET ',NCJET,' > ',NLJETS - GOTO 999 - ENDIF - -C Cluster jets with hard partons, one at a time - DO I=1,NLJETS - DO J=1,4 - PPM(J,I)=PJET(J,I) - ENDDO - ENDDO - - NJETM=NLJETS - IF(clfact.NE.0) YCUT=clfact**2*YCUT -c YCUT=qcut**2 -c YCUT=(1.5*qcut)**2 - - DO 140 IHARD=1,NLJETS - NN=NJETM+1 - DO J=1,4 - PPM(J,NN)=p(J,IHARD) - ENDDO - CALL KTCLUS(KTSCHE,PPM,NN,ECUT,Y,*999) - - IF(Y(NN).GT.YCUT) THEN -C Parton not clustered - if(idbg.eq.1) - $ WRITE(LNHOUT,*) 'Failed due to parton ',IHARD, - $ ' not clustered: ',Y(NN) - GOTO 999 - ENDIF - -C Find jet clustered with parton - - IP1=HIST(NN)/NMAXKT - IP2=MOD(HIST(NN),NMAXKT) - IF(IP2.NE.NN.OR.IP1.LE.0)THEN - if(idbg.eq.1) - $ WRITE(LNHOUT,*) 'Failed due to parton ',IHARD, - $ ' not clustered: ',IP1,IP2,NN,HIST(NN) - GOTO 999 - ENDIF -C Remove jet clustered with parton - DO I=IP1,NJETM-1 - DO J=1,4 - PPM(J,I)=PPM(J,I+1) - ENDDO - ENDDO - NJETM=NJETM-1 - 140 CONTINUE - - endif ! pt-ordered showers - endif ! qcut.gt.0 - -C...Cluster particles with |eta| < etaclmax for histograms - 150 NN=0 - DO IHEP=1,NHEP - IF (ISTHEP(IHEP).EQ.1 - $ .AND.(ABS(IDHEP(IHEP)).LE.5.OR.IDHEP(IHEP).EQ.21)) THEN - PTJET=sqrt(PHEP(1,IHEP)**2+PHEP(2,IHEP)**2) - ETAJET=ABS(LOG(MIN((SQRT(PTJET**2+PHEP(3,IHEP)**2)+ - $ ABS(PHEP(3,IHEP)))/PTJET,1d5))) - IF(ETAJET.GT.etaclmax) cycle - NN=NN+1 - IF (NN.GT.NMAX) then - CALL PYLIST(2) - PRINT *, 'Too many particles: ', NN - NN=NN-1 - GOTO 160 - ENDIF - DO I=1,4 - PP(I,NN)=PHEP(I,IHEP) - ENDDO - ELSE if(idbg.eq.1)THEN - PRINT *,'Skipping particle ',IHEP,ISTHEP(IHEP),IDHEP(IHEP) - ENDIF - ENDDO - - 160 ECUT=1 - IF (NN.GT.1) THEN - CALL KTCLUS(KTSCHE,PP,NN,ECUT,Y,*999) - ELSE IF(NN.EQ.1) THEN - Y(1)=SQRT(PP(1,NN)**2+PP(2,NN)**2) - ENDIF - - DO I=1,MIN(NN,4) - varev(46+I)=SQRT(Y(I)) - ENDDO - - - RETURN - 4001 FORMAT(50E15.6) -c HERWIG/PYTHIA TERMINATION: - 999 IPVETO=1 - END - -C********************************************************************* -C PYMASC -C Implementation of scale used in Pythia parton showers -C********************************************************************* - SUBROUTINE PYMASC(scale) - IMPLICIT NONE - -C...Arguments - REAL*8 scale - -C...Functions - REAL*8 SMDOT5 - -C...User process initialization commonblock. -C #include "GeneratorModules/heprup.inc" - INTEGER MAXPUP - PARAMETER (MAXPUP=100) - INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP - DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP - COMMON/HEPRUP/IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2), - & IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP),XMAXUP(MAXPUP), - & LPRUP(MAXPUP) -C...User process event common block. -C #include "GeneratorModules/hepeup.inc" - INTEGER MAXNUP - PARAMETER (MAXNUP=500) - INTEGER NUP,IDPRUP,IDUP,ISTUP,MOTHUP,ICOLUP - DOUBLE PRECISION XWGTUP,SCALUP,AQEDUP,AQCDUP,PUP,VTIMUP,SPINUP - COMMON/HEPEUP/NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP,IDUP(MAXNUP), - & ISTUP(MAXNUP),MOTHUP(2,MAXNUP),ICOLUP(2,MAXNUP),PUP(5,MAXNUP), - & VTIMUP(MAXNUP),SPINUP(MAXNUP) - -C...Extra commonblock to transfer run info. - INTEGER LNHIN,LNHOUT,MSCAL,IEVNT,ICKKW,ISCALE - COMMON/MGUPPRIV/LNHIN,LNHOUT,MSCAL,IEVNT,ICKKW,ISCALE - -C...Local variables - INTEGER ICC1,ICC2,IJ,IDC1,IDC2,IC,IC1,IC2 - REAL*8 QMIN,QTMP - -C Just use the scale read off the event record - scale=SCALUP - -C Alternatively: - -C... Guesses for the correct scale -C Assumptions: -C (1) if the initial state is a color singlet, then -C use s-hat for the scale -C -C (2) if color flow to the final state, use the minimum -C of the dot products of color connected pairs -C (times two for consistency with above) - - QMIN=SMDOT5(PUP(1,1),PUP(1,2)) - ICC1=1 - ICC2=2 -C -C For now, there is no generic way to guarantee the "right" -C scale choice. Here, we take the HERWIG pt. of view and -C choose the dot product of the colored connected "primary" -C pairs. -C - - DO 101 IJ=1,NUP - IF(MOTHUP(2,IJ).GT.2) GOTO 101 - IDC1=ICOLUP(1,IJ) - IDC2=ICOLUP(2,IJ) - IF(IDC1.EQ.0) IDC1=-1 - IF(IDC2.EQ.0) IDC2=-2 - - DO 201 IC=IJ+1,NUP - IF(MOTHUP(2,IC).GT.2) GOTO 201 - IC1=ICOLUP(1,IC) - IC2=ICOLUP(2,IC) - IF(ISTUP(IC)*ISTUP(IJ).GE.1) THEN - IF(IDC1.EQ.IC2.OR.IDC2.EQ.IC1) THEN - QTMP=SMDOT5(PUP(1,IJ),PUP(1,IC)) - IF(QTMP.LT.QMIN) THEN - QMIN=QTMP - ICC1=IJ - ICC2=IC - ENDIF - ENDIF - ELSEIF(ISTUP(IC)*ISTUP(IJ).LE.-1) THEN - IF(IDC1.EQ.IC1.OR.IDC2.EQ.IC2) THEN - QTMP=SMDOT5(PUP(1,IJ),PUP(1,IC)) - IF(QTMP.LT.QMIN) THEN - QMIN=QTMP - ICC1=IJ - ICC2=IC - ENDIF - ENDIF - ENDIF - 201 CONTINUE - 101 CONTINUE - - scale=QMIN - - RETURN - END - -C...SMDOT5 -C Helper function - - FUNCTION SMDOT5(V1,V2) - IMPLICIT NONE - REAL*8 SMDOT5,TEMP - REAL*8 V1(5),V2(5) - INTEGER I - - SMDOT5=0D0 - TEMP=V1(4)*V2(4) - DO I=1,3 - TEMP=TEMP-V1(I)*V2(I) - ENDDO - - SMDOT5=SQRT(ABS(TEMP)) - - RETURN - END - -C----------------------------------------------------------------------- - SUBROUTINE ALPSOR(A,N,K,IOPT) -C----------------------------------------------------------------------- -C Sort A(N) into ascending order -C IOPT = 1 : return sorted A and index array K -C IOPT = 2 : return index array K only -C----------------------------------------------------------------------- - DOUBLE PRECISION A(N),B(5000) - INTEGER N,I,J,IOPT,K(N),IL(5000),IR(5000) - IF (N.GT.5000) then - write(*,*) 'Too many entries to sort in alpsrt, stop' - stop - endif - if(n.le.0) return - IL(1)=0 - IR(1)=0 - DO 10 I=2,N - IL(I)=0 - IR(I)=0 - J=1 - 2 IF(A(I).GT.A(J)) GOTO 5 - 3 IF(IL(J).EQ.0) GOTO 4 - J=IL(J) - GOTO 2 - 4 IR(I)=-J - IL(J)=I - GOTO 10 - 5 IF(IR(J).LE.0) GOTO 6 - J=IR(J) - GOTO 2 - 6 IR(I)=IR(J) - IR(J)=I - 10 CONTINUE - I=1 - J=1 - GOTO 8 - 20 J=IL(J) - 8 IF(IL(J).GT.0) GOTO 20 - 9 K(I)=J - B(I)=A(J) - I=I+1 - IF(IR(J)) 12,30,13 - 13 J=IR(J) - GOTO 8 - 12 J=-IR(J) - GOTO 9 - 30 IF(IOPT.EQ.2) RETURN - DO 31 I=1,N - 31 A(I)=B(I) -c 999 END - END - -c$$$C----------------------------------------------------------------------- -c$$$C----Calorimeter simulation obtained from Frank Paige 23 March 1988----- -c$$$C -c$$$C USE -c$$$C -c$$$C CALL CALINIM -c$$$C CALL CALSIMM -c$$$C -c$$$C THEN TO FIND JETS WITH A SIMPLIFIED VERSION OF THE UA1 JET -c$$$C ALGORITHM WITH JET RADIUS RJET AND MINIMUM SCALAR TRANSVERSE -c$$$C ENERGY EJCUT -c$$$C (RJET=1., EJCUT=5. FOR UA1) -c$$$C USE -c$$$C -c$$$C CALL GETJETM(RJET,EJCUT) -c$$$C -c$$$C -c$$$C----------------------------------------------------------------------- -c$$$C -c$$$C ADDED BY MIKE SEYMOUR: PARTON-LEVEL CALORIMETER. ALL PARTONS -c$$$C ARE CONSIDERED TO BE HADRONS, SO IN FACT RESEM IS IGNORED -c$$$C -c$$$C CALL CALPARM -c$$$C -c$$$C HARD PARTICLE CALORIMETER. ONLY USES THOSE PARTICLES WHICH -c$$$C CAME FROM THE HARD PROCESS, AND NOT THE UNDERLYING EVENT -c$$$C -c$$$C CALL CALHARM -c$$$C -c$$$C----------------------------------------------------------------------- -c$$$ SUBROUTINE CALINIM -c$$$C -c$$$C INITIALIZE CALORIMETER FOR CALSIMM AND GETJETM. NOTE THAT -c$$$C BECAUSE THE INITIALIZATION IS SEPARATE, CALSIMM CAN BE -c$$$C CALLED MORE THAN ONCE TO SIMULATE PILEUP OF SEVERAL EVENTS. -c$$$C -c$$$ IMPLICIT NONE -c$$$C...GETJET commonblocks -c$$$ INTEGER MNCY,MNCPHI,NCY,NCPHI,NJMAX,JETNO,NCJET -c$$$ DOUBLE PRECISION YCMIN,YCMAX,DELY,DELPHI,ET,STHCAL,CTHCAL,CPHCAL, -c$$$ & SPHCAL,PCJET,ETJET -c$$$ PARAMETER (MNCY=200) -c$$$ PARAMETER (MNCPHI=200) -c$$$ COMMON/CALORM/DELY,DELPHI,ET(MNCY,MNCPHI), -c$$$ $CTHCAL(MNCY),STHCAL(MNCY),CPHCAL(MNCPHI),SPHCAL(MNCPHI), -c$$$ $YCMIN,YCMAX,NCY,NCPHI -c$$$ PARAMETER (NJMAX=500) -c$$$ COMMON/GETCOMM/PCJET(4,NJMAX),ETJET(NJMAX),JETNO(MNCY,MNCPHI), -c$$$ $ NCJET -c$$$ -c$$$ INTEGER IPHI,IY -c$$$ DOUBLE PRECISION PI,PHIX,YX,THX -c$$$ PARAMETER (PI=3.141593D0) -c$$$ LOGICAL FSTCAL -c$$$ DATA FSTCAL/.TRUE./ -c$$$C -c$$$C INITIALIZE ET ARRAY. -c$$$ DO 100 IPHI=1,NCPHI -c$$$ DO 100 IY=1,NCY -c$$$100 ET(IY,IPHI)=0. -c$$$C -c$$$ IF (FSTCAL) THEN -c$$$C CALCULATE TRIG. FUNCTIONS. -c$$$ DELPHI=2.*PI/FLOAT(NCPHI) -c$$$ DO 200 IPHI=1,NCPHI -c$$$ PHIX=DELPHI*(IPHI-.5) -c$$$ CPHCAL(IPHI)=COS(PHIX) -c$$$ SPHCAL(IPHI)=SIN(PHIX) -c$$$200 CONTINUE -c$$$ DELY=(YCMAX-YCMIN)/FLOAT(NCY) -c$$$ DO 300 IY=1,NCY -c$$$ YX=DELY*(IY-.5)+YCMIN -c$$$ THX=2.*ATAN(EXP(-YX)) -c$$$ CTHCAL(IY)=COS(THX) -c$$$ STHCAL(IY)=SIN(THX) -c$$$300 CONTINUE -c$$$ FSTCAL=.FALSE. -c$$$ ENDIF -c$$$ END -c$$$C -c$$$ SUBROUTINE CALSIMM -c$$$C -c$$$C SIMPLE CALORIMETER SIMULATION. ASSUME UNIFORM Y AND PHI -c$$$C BINS -c$$$C...HEPEVT commonblock. -c$$$ INTEGER NMXHEP,NEVHEP,NHEP,ISTHEP,IDHEP,JMOHEP,JDAHEP -c$$$ PARAMETER (NMXHEP=10000) -c$$$ COMMON/HEPEVT/NEVHEP,NHEP,ISTHEP(NMXHEP),IDHEP(NMXHEP), -c$$$ &JMOHEP(2,NMXHEP),JDAHEP(2,NMXHEP),PHEP(5,NMXHEP),VHEP(4,NMXHEP) -c$$$ DOUBLE PRECISION PHEP,VHEP -c$$$ SAVE /HEPEVT/ -c$$$ -c$$$C...GETJET commonblocks -c$$$ INTEGER MNCY,MNCPHI,NCY,NCPHI,NJMAX,JETNO,NCJET -c$$$ DOUBLE PRECISION YCMIN,YCMAX,DELY,DELPHI,ET,STHCAL,CTHCAL,CPHCAL, -c$$$ & SPHCAL,PCJET,ETJET -c$$$ PARAMETER (MNCY=200) -c$$$ PARAMETER (MNCPHI=200) -c$$$ COMMON/CALORM/DELY,DELPHI,ET(MNCY,MNCPHI), -c$$$ $CTHCAL(MNCY),STHCAL(MNCY),CPHCAL(MNCPHI),SPHCAL(MNCPHI), -c$$$ $YCMIN,YCMAX,NCY,NCPHI -c$$$ PARAMETER (NJMAX=500) -c$$$ COMMON/GETCOMM/PCJET(4,NJMAX),ETJET(NJMAX),JETNO(MNCY,MNCPHI), -c$$$ $ NCJET -c$$$ -c$$$ INTEGER IHEP,ID,IY,IPHI -c$$$ DOUBLE PRECISION PI,YIP,PSERAP,PHIIP,EIP -c$$$ PARAMETER (PI=3.141593D0) -c$$$C -c$$$C FILL CALORIMETER -c$$$C -c$$$ DO 200 IHEP=1,NHEP -c$$$ IF (ISTHEP(IHEP).EQ.1) THEN -c$$$ YIP=PSERAP(PHEP(1,IHEP)) -c$$$ IF(YIP.LT.YCMIN.OR.YIP.GT.YCMAX) GOTO 200 -c$$$ ID=ABS(IDHEP(IHEP)) -c$$$C---EXCLUDE TOP QUARK, LEPTONS, PROMPT PHOTONS -c$$$ IF ((ID.GE.11.AND.ID.LE.16).OR.ID.EQ.6.OR.ID.EQ.22) GOTO 200 -c$$$C -c$$$ PHIIP=ATAN2(PHEP(2,IHEP),PHEP(1,IHEP)) -c$$$ IF(PHIIP.LT.0.) PHIIP=PHIIP+2.*PI -c$$$ IY=INT((YIP-YCMIN)/DELY)+1 -c$$$ IPHI=INT(PHIIP/DELPHI)+1 -c$$$ EIP=PHEP(4,IHEP) -c$$$C WEIGHT BY SIN(THETA) -c$$$ ET(IY,IPHI)=ET(IY,IPHI)+EIP*STHCAL(IY) -c$$$ ENDIF -c$$$ 200 CONTINUE -c$$$ 999 END -c$$$ SUBROUTINE GETJETM(RJET,EJCUT,ETAJCUT) -c$$$C -c$$$C SIMPLE JET-FINDING ALGORITHM (SIMILAR TO UA1). -c$$$C -c$$$C FIND HIGHEST REMAINING CELL > ETSTOP AND SUM SURROUNDING -c$$$C CELLS WITH-- -c$$$C DELTA(Y)**2+DELTA(PHI)**2<RJET**2 -c$$$C ET>ECCUT. -c$$$C KEEP JETS WITH ET>EJCUT AND ABS(ETA)<ETAJCUT -c$$$C THE UA1 PARAMETERS ARE RJET=1.0 AND EJCUT=5.0 -c$$$C -c$$$ IMPLICIT NONE -c$$$C...GETJET commonblocks -c$$$ INTEGER MNCY,MNCPHI,NCY,NCPHI,NJMAX,JETNO,NCJET -c$$$ DOUBLE PRECISION YCMIN,YCMAX,DELY,DELPHI,ET,STHCAL,CTHCAL,CPHCAL, -c$$$ & SPHCAL,PCJET,ETJET -c$$$ PARAMETER (MNCY=200) -c$$$ PARAMETER (MNCPHI=200) -c$$$ COMMON/CALORM/DELY,DELPHI,ET(MNCY,MNCPHI), -c$$$ $CTHCAL(MNCY),STHCAL(MNCY),CPHCAL(MNCPHI),SPHCAL(MNCPHI), -c$$$ $YCMIN,YCMAX,NCY,NCPHI -c$$$ PARAMETER (NJMAX=500) -c$$$ COMMON/GETCOMM/PCJET(4,NJMAX),ETJET(NJMAX),JETNO(MNCY,MNCPHI), -c$$$ $ NCJET -c$$$ -c$$$ INTEGER IPHI,IY,J,K,NPHI1,NPHI2,NY1, -c$$$ & NY2,IPASS,IYMX,IPHIMX,ITLIS,IPHI1,IPHIX,IY1,IYX -c$$$ DOUBLE PRECISION PI,RJET, -c$$$ & ETMAX,ETSTOP,RR,ECCUT,PX,EJCUT -c$$$ PARAMETER (PI=3.141593D0) -c$$$ DOUBLE PRECISION ETAJCUT,PSERAP -c$$$C -c$$$C PARAMETERS -c$$$ DATA ECCUT/0.1D0/ -c$$$ DATA ETSTOP/1.5D0/ -c$$$ DATA ITLIS/6/ -c$$$C -c$$$C INITIALIZE -c$$$C -c$$$ DO 100 IPHI=1,NCPHI -c$$$ DO 100 IY=1,NCY -c$$$100 JETNO(IY,IPHI)=0 -c$$$ DO 110 J=1,NJMAX -c$$$ ETJET(J)=0. -c$$$ DO 110 K=1,4 -c$$$110 PCJET(K,J)=0. -c$$$ NCJET=0 -c$$$ NPHI1=RJET/DELPHI -c$$$ NPHI2=2*NPHI1+1 -c$$$ NY1=RJET/DELY -c$$$ NY2=2*NY1+1 -c$$$ IPASS=0 -c$$$C -c$$$C FIND HIGHEST CELL REMAINING -c$$$C -c$$$1 ETMAX=0. -c$$$ DO 200 IPHI=1,NCPHI -c$$$ DO 210 IY=1,NCY -c$$$ IF(ET(IY,IPHI).LT.ETMAX) GOTO 210 -c$$$ IF(JETNO(IY,IPHI).NE.0) GOTO 210 -c$$$ ETMAX=ET(IY,IPHI) -c$$$ IYMX=IY -c$$$ IPHIMX=IPHI -c$$$210 CONTINUE -c$$$200 CONTINUE -c$$$ IF(ETMAX.LT.ETSTOP) RETURN -c$$$C -c$$$C SUM CELLS -c$$$C -c$$$ IPASS=IPASS+1 -c$$$ IF(IPASS.GT.NCY*NCPHI) THEN -c$$$ WRITE(ITLIS,8888) IPASS -c$$$8888 FORMAT(//' ERROR IN GETJETM...IPASS > ',I6) -c$$$ RETURN -c$$$ ENDIF -c$$$ NCJET=NCJET+1 -c$$$ IF(NCJET.GT.NJMAX) THEN -c$$$ WRITE(ITLIS,9999) NCJET -c$$$9999 FORMAT(//' ERROR IN GETJETM...NCJET > ',I5) -c$$$ RETURN -c$$$ ENDIF -c$$$ DO 300 IPHI1=1,NPHI2 -c$$$ IPHIX=IPHIMX-NPHI1-1+IPHI1 -c$$$ IF(IPHIX.LE.0) IPHIX=IPHIX+NCPHI -c$$$ IF(IPHIX.GT.NCPHI) IPHIX=IPHIX-NCPHI -c$$$ DO 310 IY1=1,NY2 -c$$$ IYX=IYMX-NY1-1+IY1 -c$$$ IF(IYX.LE.0) GOTO 310 -c$$$ IF(IYX.GT.NCY) GOTO 310 -c$$$ IF(JETNO(IYX,IPHIX).NE.0) GOTO 310 -c$$$ RR=(DELY*(IY1-NY1-1))**2+(DELPHI*(IPHI1-NPHI1-1))**2 -c$$$ IF(RR.GT.RJET**2) GOTO 310 -c$$$ IF(ET(IYX,IPHIX).LT.ECCUT) GOTO 310 -c$$$ PX=ET(IYX,IPHIX)/STHCAL(IYX) -c$$$C ADD CELL TO JET -c$$$ PCJET(1,NCJET)=PCJET(1,NCJET)+PX*STHCAL(IYX)*CPHCAL(IPHIX) -c$$$ PCJET(2,NCJET)=PCJET(2,NCJET)+PX*STHCAL(IYX)*SPHCAL(IPHIX) -c$$$ PCJET(3,NCJET)=PCJET(3,NCJET)+PX*CTHCAL(IYX) -c$$$ PCJET(4,NCJET)=PCJET(4,NCJET)+PX -c$$$ ETJET(NCJET)=ETJET(NCJET)+ET(IYX,IPHIX) -c$$$ JETNO(IYX,IPHIX)=NCJET -c$$$310 CONTINUE -c$$$300 CONTINUE -c$$$C -c$$$C DISCARD JET IF ET < EJCUT. -c$$$C -c$$$ IF(ETJET(NCJET).GT.EJCUT.AND.ABS(PSERAP(PCJET(1,NCJET))).LT -c$$$ $ .ETAJCUT) GOTO 1 -c$$$ ETJET(NCJET)=0. -c$$$ DO 400 K=1,4 -c$$$400 PCJET(K,NCJET)=0. -c$$$ NCJET=NCJET-1 -c$$$ GOTO 1 -c$$$ END -c$$$C----------------------------------------------------------------------- -c$$$ SUBROUTINE CALDELM(ISTLO,ISTHI) -c$$$C LABEL ALL PARTICLES WITH STATUS BETWEEN ISTLO AND ISTHI (UNTIL A -c$$$C PARTICLE WITH STATUS ISTOP IS FOUND) AS FINAL-STATE, CALL CALSIMM -c$$$C AND THEN PUT LABELS BACK TO NORMAL -c$$$C----------------------------------------------------------------------- -c$$$ IMPLICIT NONE -c$$$ INTEGER MAXNUP -c$$$ PARAMETER(MAXNUP=500) -c$$$C...HEPEVT commonblock. -c$$$ INTEGER NMXHEP,NEVHEP,NHEP,ISTHEP,IDHEP,JMOHEP,JDAHEP -c$$$ PARAMETER (NMXHEP=10000) -c$$$ COMMON/HEPEVT/NEVHEP,NHEP,ISTHEP(NMXHEP),IDHEP(NMXHEP), -c$$$ &JMOHEP(2,NMXHEP),JDAHEP(2,NMXHEP),PHEP(5,NMXHEP),VHEP(4,NMXHEP) -c$$$ DOUBLE PRECISION PHEP,VHEP -c$$$ SAVE /HEPEVT/ -c$$$ INTEGER ISTLO,ISTHI -c$$$ -c$$$ -c$$$ CALL CALSIMM -c$$$ END - -C**************************************************** -C iexclusive returns whether exclusive process or not -C**************************************************** - - integer function iexclusive(iproc) - implicit none - - integer iproc, i - -C...Inputs for the matching algorithm - INTEGER MAXPUP - PARAMETER (MAXPUP=100) - double precision etcjet,rclmax,etaclmax,qcut,clfact - integer maxjets,minjets,iexcfile,ktsche,mektsc,nexcres,excres(30) - integer nremres, remres(30) - integer nqmatch,nexcproc,iexcproc(MAXPUP),iexcval(MAXPUP) - logical nosingrad,showerkt,jetprocs - common/MEMAIN/etcjet,rclmax,etaclmax,qcut,clfact,maxjets,minjets, - $ iexcfile,ktsche,mektsc,nexcres,excres,nremres,remres, - $ nqmatch,nexcproc,iexcproc,iexcval,nosingrad,showerkt,jetprocs - - iexclusive=-2 - do i=1,nexcproc - if(iproc.eq.iexcproc(i)) then - iexclusive=iexcval(i) - return - endif - enddo - - return - end -C----------------------------------------------------------------------- - FUNCTION PSERAP(P) -C PSEUDO-RAPIDITY (-LOG TAN THETA/2) -C----------------------------------------------------------------------- - DOUBLE PRECISION PSERAP,P(3),PT,PL,TINY,THETA - PARAMETER (TINY=1D-3) - PT=SQRT(P(1)**2+P(2)**2)+TINY - PL=P(3) - THETA=ATAN2(PT,PL) - PSERAP=-LOG(TAN(0.5*THETA)) - END -C----------------------------------------------------------------------- - diff --git a/Generators/Matchig_i/CMakeLists.txt b/Generators/Matchig_i/CMakeLists.txt deleted file mode 100644 index 5d1144f83edd8a33cbd07c92d2852d62ac7453fb..0000000000000000000000000000000000000000 --- a/Generators/Matchig_i/CMakeLists.txt +++ /dev/null @@ -1,24 +0,0 @@ -################################################################################ -# Package: Matchig_i -################################################################################ - -# Declare the package name: -atlas_subdir( Matchig_i ) - -# Declare the package's dependencies: -atlas_depends_on_subdirs( PRIVATE - Generators/GeneratorFortranCommon ) - -# External dependencies: -find_package( Pythia6 ) - -# Component(s) in the package: -atlas_add_library( Matchig_i - src/*.F - NO_PUBLIC_HEADERS - INCLUDE_DIRS ${PYTHIA6_INCLUDE_DIRS} - LINK_LIBRARIES ${PYTHIA6_LIBRARIES} GeneratorFortranCommonLib ) - -# Install files from the package: -atlas_install_joboptions( share/*.py ) - diff --git a/Generators/Matchig_i/share/jobOptions.MatchigPythia.py b/Generators/Matchig_i/share/jobOptions.MatchigPythia.py deleted file mode 100755 index 93c66e6397994f73b041235140a25ba46f627447..0000000000000000000000000000000000000000 --- a/Generators/Matchig_i/share/jobOptions.MatchigPythia.py +++ /dev/null @@ -1,169 +0,0 @@ -############################################################### -# -# Job options file -# Generate events with Matchig -# Example: gg/gb -> t[b]H+, t->bqq, H+->taunu with mH+=300 GeV -# -# Martin Flechl, 29/1/2009 -# mflechl@cern.ch -# -#============================================================== -#-------------------------------------------------------------- -# General Application Configuration options -#-------------------------------------------------------------- -import AthenaCommon.AtlasUnixGeneratorJob - -from AthenaCommon.AppMgr import theApp -from AthenaCommon.AppMgr import ServiceMgr - -# make sure we are loading the ParticleProperty service -from PartPropSvc.PartPropSvcConf import PartPropSvc -ServiceMgr += PartPropSvc() - -#-------------------------------------------------------------- -# Private Application Configuration options -#-------------------------------------------------------------- -# Set output level threshold (2=DEBUG, 3=INFO, 4=WARNING, 5=ERROR, 6=FATAL ) -ServiceMgr.MessageSvc.OutputLevel = INFO - -#-------------------------------------------------------------- -# Event related parameters -#-------------------------------------------------------------- -# Number of events to be processed -theApp.EvtMax = 10 -#-------------------------------------------------------------- -# Algorithms Private Options -#-------------------------------------------------------------- -from AthenaServices.AthenaServicesConf import AtRndmGenSvc -ServiceMgr += AtRndmGenSvc() -ServiceMgr.AtRndmGenSvc.Seeds = ["PYTHIA 4789899 989240512", "PYTHIA_INIT 820021 2347532"] - -from AthenaCommon.AlgSequence import AlgSequence -job=AlgSequence() -from Pythia_i.Pythia_iConf import Pythia -job += Pythia() -job.Pythia.SetAtlasDefaults = False -job.Pythia.PythiaCommand = ["pyinit user matchig", "pyinit pylistf 1","pyinit dumpr 1 1", - "pysubs msel 0", "pysubs msub 161 1", "pysubs msub 401 1", - "pysubs msub 402 1", "pypars mstp 129 1000", "pypars mstp 81 0"] - -job.Pythia.PythiaCommand += ["pydat1 paru 141 30.", #tan beta - "pydat2 pmas 37 1 300."] #H+ mass - -#uncomment when using TAUOLA/PHOTOS -#job.Pythia.PythiaCommand += ["pydat1 parj 90 20000", # Turn off lepton radiation -# "pydat3 mdcy 15 1 0"] # Turn off tau decays - -#top decay -job.Pythia.PythiaCommand += ["pydat3 mdme 41 1 0", - "pydat3 mdme 42 1 0", - "pydat3 mdme 43 1 0", - "pydat3 mdme 44 1 0", - "pydat3 mdme 45 1 0", - "pydat3 mdme 46 1 1", # t->Wb -# "pydat3 mdme 46 1 4", # t->Wb #for light H+ - "pydat3 mdme 48 1 0", - "pydat3 mdme 49 1 0", # t->H+b -# "pydat3 mdme 49 1 5", # t->H+b #for light H+ - "pydat3 mdme 50 1 0", - "pydat3 mdme 51 1 0", - "pydat3 mdme 52 1 0", - "pydat3 mdme 53 1 0", - "pydat3 mdme 54 1 0", - "pydat3 mdme 55 1 0"] - -#W decay -job.Pythia.PythiaCommand += ["pydat3 mdme 190 1 1", # to q q' - "pydat3 mdme 191 1 1", # to q q' - "pydat3 mdme 192 1 0", - "pydat3 mdme 194 1 1", # to q q' - "pydat3 mdme 195 1 1", # to q q' - "pydat3 mdme 196 1 0", - "pydat3 mdme 198 1 0", - "pydat3 mdme 199 1 1", # to q q' - "pydat3 mdme 200 1 0", - "pydat3 mdme 206 1 0", #enu - "pydat3 mdme 207 1 0", #munu - "pydat3 mdme 208 1 0"] #taunu - -#H+ decay -job.Pythia.PythiaCommand += ["pydat3 mdme 503 1 0", - "pydat3 mdme 504 1 0", - "pydat3 mdme 505 1 0", - "pydat3 mdme 507 1 0", - "pydat3 mdme 508 1 0", - "pydat3 mdme 509 1 1", #H+ -> tau nu - "pydat3 mdme 511 1 0", - "pydat3 mdme 512 1 0", - "pydat3 mdme 513 1 0", - "pydat3 mdme 514 1 0", - "pydat3 mdme 515 1 0", - "pydat3 mdme 516 1 0", - "pydat3 mdme 517 1 0", - "pydat3 mdme 518 1 0", - "pydat3 mdme 519 1 0", - "pydat3 mdme 520 1 0", - "pydat3 mdme 521 1 0", - "pydat3 mdme 522 1 0", - "pydat3 mdme 523 1 0", - "pydat3 mdme 524 1 0", - "pydat3 mdme 525 1 0", - "pydat3 mdme 526 1 0", - "pydat3 mdme 527 1 0", - "pydat3 mdme 528 1 0", - "pydat3 mdme 529 1 0"] - -#tau decay -job.Pythia.PythiaCommand += ["pydat3 mdme 89 1 0", #enu - "pydat3 mdme 90 1 0"] #munu - -from TruthExamples.TruthExamplesConf import PrintMC -job += PrintMC() -job.PrintMC.FirstEvent = 1 -job.PrintMC.LastEvent = 3 - -#--------------------------------------------------------------- -# Pool Persistency -#--------------------------------------------------------------- -from AthenaPoolCnvSvc.WriteAthenaPool import AthenaPoolOutputStream -Stream1 = AthenaPoolOutputStream( "StreamEVGEN" ) -Stream1.OutputFile = "matchig.pool.root" -Stream1.ItemList += [ 'EventInfo#*', 'McEventCollection#*' ] - -#--------------------------------------------------------------- -# Ntuple service output -#--------------------------------------------------------------- - -#include( 'CBNT_Athena/CBNT_AthenaAware_jobOptions.py' ) -#include( 'CBNT_Athena/CBNT_EventInfo_jobOptions.py' ) -#include( 'RecExCommon/CBNT_Truth_jobOptions.py' ) - -#theApp.CreateSvc += ['AthenaSealSvc'] -#ServiceMgr += CfgMgr.AthenaSealSvc() - -#--------------------------------------------------------------- -# AANT persistency -#--------------------------------------------------------------- -#if not 'AANT_OUTPUT' in dir(): -# AANT_OUTPUT = "matchig.aan.root" -# pass -#if not hasattr(ServiceMgr, 'THistSvc'): -# from GaudiSvc.GaudiSvcConf import THistSvc -# ServiceMgr += THistSvc() -#ServiceMgr.THistSvc.Output += ["AANT DATAFILE='%s' OPT='RECREATE'" % AANT_OUTPUT] - -#from AnalysisTools.AthAnalysisToolsConf import AANTupleStream -#topSequence += AANTupleStream( -# ExistDataHeader = False, -# WriteInputDataHeader = False, -# OutputName = AANT_OUTPUT, -# OutputLevel = WARNING -#) - -#--------------------------------------------------------------- - -#============================================================== -# -# End of job options file -# -############################################################### diff --git a/Generators/Matchig_i/src/initmatchig.F b/Generators/Matchig_i/src/initmatchig.F deleted file mode 100755 index f8d0e8101c31078141c5f2cf7124e1769200a6c7..0000000000000000000000000000000000000000 --- a/Generators/Matchig_i/src/initmatchig.F +++ /dev/null @@ -1,63 +0,0 @@ -***************************** - SUBROUTINE INITMATCHIG -***************************** -C...DOUBLE PRECISION AND INTEGER DECLARATIONS. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - -C...EXTERNAL statement links PYDATA on most machines. - EXTERNAL PYDATA - -C...USER PROCESS INITIALIZATION COMMONBLOCK. -#include "GeneratorFortranCommon/heprup.inc" - - DOUBLE PRECISION MATCHIG - - DIMENSION DCPARM(10) - DATA DCPARM/10*0.5d0/ - - WRITE(6,*) 'MATCHIG_I: Initialising MATCHIG 2.02 for ATLAS' - - IF(EBMUP(1).EQ.0) WRITE(6,*) 'Setting ECM to default' - IF(EBMUP(1).EQ.0) EBMUP(1)=0.5d4 - IF(EBMUP(2).EQ.0) EBMUP(2)=0.5d4 - - WRITE(6,*) 'MATCHIG_I: ECM= ',EBMUP(1)+EBMUP(2) - - -C...Initialize widths and partial widths for resonances. - CALL PYINRE - -C...Don't use total energy as PS scale for the 2->3 process - CALL PYGIVE('MSTP(68)=0') -C...Set the fact scale of the 2->2 process equal to the parton shower scale - CALL PYGIVE('MSTP(32)=13') - -C Set the factor for the ISR scale of the 2->2 process to 1 -c CALL PYGIVE('PARP(67)=1d0') - -C...CM Energy (LHC) -c ECM=1.4d4 ! now obtained from Pythia - -C...Set incoming beams to protons - IDBMUP(1)=2212 - IDBMUP(2)=2212 -C...Set beam energies -c EBMUP(1)=0.5*ECM ! now obtained from Pythia -c EBMUP(2)=0.5*ECM ! now obtained from Pythia - -C...INTERPRETATION AF EVENT WEIGHTS: STANDARD, ALLOWING NEGATIVE WEIGHTS - IDWTUP=-1 - -C...NUMBER OF DIFFERENT PROCESSES - NPRUP=1 - -C...IDENTIFIER OF EXTERNAL PROCESS - LPRUP(1)=10000 - -C...MAXIMUM EVENT WEIGHT FOR PROCESS (IN PB) - TRY MIDDLE VALUE OF ALL: - XMAXUP(1)=MATCHIG(DCPARM,1d0) - - RETURN - END - diff --git a/Generators/Matchig_i/src/matchig.F b/Generators/Matchig_i/src/matchig.F deleted file mode 100755 index ff5d515812ed69d082a8fa9e4e547ae4b64a825f..0000000000000000000000000000000000000000 --- a/Generators/Matchig_i/src/matchig.F +++ /dev/null @@ -1,392 +0,0 @@ -*********************************** - FUNCTION MATCHIG(DCPARM, WGT) -*********************************** -C...All real arithmetic in double precision. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) -C...Three Pythia functions return integers, so need declaring. -C...mf: Not needed anymore... commenting out -C INTEGER PYK,PYCHGE,PYCOMP -C...EXTERNAL statement links PYDATA on most machines. - EXTERNAL PYDATA -C...Commonblocks. - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) - COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5) - COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200) - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) - COMMON/PYINT1/MINT(400),VINT(400) - COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2) - COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000) - COMMON/PYINT4/MWID(500),WIDS(500,5) - COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3) - COMMON/PYINT9/VXPVMD(-6:6),VXPANL(-6:6),VXPANH(-6:6),VXPDGM(-6:6) - COMMON/PYMSSM/IMSS(0:99),RMSS(0:99) -C...HEPEVT commonblock. - PARAMETER (NMXHEP=10000) - COMMON/HEPEVT/NEVHEP,NHEP,ISTHEP(NMXHEP),IDHEP(NMXHEP), - & JMOHEP(2,NMXHEP),JDAHEP(2,NMXHEP),PHEP(5,NMXHEP),VHEP(4,NMXHEP) - DOUBLE PRECISION PHEP,VHEP -C...User process initialization commonblock. -#include "GeneratorFortranCommon/heprup.inc" -C...User process event common block. -#include "GeneratorFortranCommon/hepeup.inc" - - DOUBLE PRECISION MATCHIG - DIMENSION DCPARM(*) - -C PARTON LISTS - DIMENSION XPQ(-25:25,2),X(2) - DIMENSION WDTP(0:400),WDTE(0:400,0:5) - DIMENSION PHI(2), BETA(3) - -C WRITE(6,*) 'MATCHIG_I: In matchig.F' - -C ASSUME CENTER OF MASS-SYSTEM FOR COLLIDING PARTICLES - S=(2*EBMUP(1))**2 - -C...Make BW shape for top with width from PMAS(6,2) - PMTOP=PMAS(6,1) - GTOP=PMAS(6,2) - PMTOPMIN=0d0 - ALOW=ATAN((PMTOPMIN**2-PMTOP**2)/(PMTOP*GTOP)) - PMTOPMAX=SQRT(S) - AHIGH=ATAN((PMTOPMAX**2-PMTOP**2)/(PMTOP*GTOP)) - SQM3=PMTOP**2+PMTOP*GTOP*TAN((AHIGH-ALOW)*DCPARM(9)+ALOW) - PQM3=SQRT(SQM3) -C...Make BW shape for Higgs with width from PMAS(37,2) - PMH=PMAS(37,1) - GH=PMAS(37,2) -c Cut BW wings at M_H +- Gamma_H+_MAX - GHMX=GH*PARP(48) - PMHMIN=MAX(0d0,PMH-GHMX) - ALOW=ATAN((PMHMIN**2-PMH**2)/(PMH*GH)) - PMHMAX=MIN(PMH+GHMX,SQRT(S)-PQM3) - IF(PMHMAX.LT.PMHMIN) THEN -c TAUmin > 1 - MATCHIG=0 - RETURN - ENDIF - AHIGH=ATAN((PMHMAX**2-PMH**2)/(PMH*GH)) - SQM4=PMH**2+PMH*GH*TAN((AHIGH-ALOW)*DCPARM(10)+ALOW) - PQM4=SQRT(SQM4) - - VINT(80)=1. - - XMSUM = PQM3+PQM4 - XMSUM2 = XMSUM**2 - TAUMIN = XMSUM2/S - IF(TAUMIN.GT.1d0) THEN -c This should never happen - WRITE(*,*) 'WARNING! TAUMIN = ',TAUMIN - MATCHIG=0 - RETURN - ENDIF - -C TAU FROM 1/TAU**(NTAU+1) - NTAU=1 - TAU=TAUMIN/(1+DCPARM(1)*(TAUMIN**NTAU-1))**(1./NTAU) - SH = TAU*S - - COMFAC = PARU(1)*PARU(5)/SH - COMFAC = COMFAC/NTAU*(1/TAUMIN**NTAU-1)*TAU**NTAU - YSTMIN = 0.5D0*LOG(TAU) - YSTMAX = -YSTMIN - -C YST FROM YST-YSTMIN OR YSTMAX-YST - IF(DCPARM(2).LE.0.5) THEN - YST=YSTMIN*(1-SQRT(2*DCPARM(2))) - COMFAC = COMFAC*YSTMIN**2/(YST-YSTMIN) - ELSE - YST=YSTMAX*(1-SQRT(2*(1-DCPARM(2)))) - COMFAC = COMFAC*YSTMIN**2/(YSTMAX-YST) - END IF - - X(1) = SQRT(TAU)*EXP(YST) - X(2) = SQRT(TAU)*EXP(-YST) - IF(X(1).LT.TAU.OR.X(2).LT.TAU.OR.X(1).GT.1D0.OR.X(2).GT.1D0) - & WRITE(*,*) 'WARNING! ERROR IN X1,X2 GENERATION' - -C...Set alpha_em and alpha_s as for 2->3 process - Q2=SQM4 - IF(MSTP(39).EQ.8) Q2=PARP(194) - AQEDUP=PYALEM(Q2) - AQCDUP=PYALPS(PARP(34)*Q2) - - AEM = AQEDUP - AS = AQCDUP - XW = PARU(102) - - Q2RM=SQM4 - IF(MSTP(32).EQ.12) Q2RM=PARP(194) - SQML=PYMRUN(5,Q2RM)**2 - SQMQ=PYMRUN(6,Q2RM)**2 - SQMW=PMAS(24,1)**2 - SQMHC=PMAS(37,1)**2 - -C Set maximum parton shower scale as for 2->2 process -C Only for Pythia versions up to (and including) 6.320 -c IF(MSTP(32).EQ.4) THEN -c Q2PS=SH -c ELSEIF(MSTP(32).EQ.11) THEN -c Q2PS=0.25*(SQM3+SQM4+2*PQM3*PQM4) -c ELSEIF(MSTP(32).EQ.12) THEN -c Q2PS=PARP(193) -c ELSE -c WRITE(*,*) 'PS SCALE ',MSTP(32), ' NOT SUPPORTED' -c WRITE(*,*) 'PLEASE USE MSTP(32)= 4, 11 or 12' -c WRITE(*,*) 'EXECUTION STOPPED' -c STOP -c ENDIF -c Q2PS=Q2PS*PARP(67) - - - FHCQ=AS*AEM/XW/24D0 -C...Mass-dependent H+ width given by PYWIDT - GMMHC=PMAS(37,1)*PMAS(37,2) - HBW4=GMMHC/((SQM4-SQMHC)**2+GMMHC**2) - CALL PYWIDT(37,SQM4,WDTP,WDTE) - GMMHCC=PQM4*WDTP(0) - HBW4C=GMMHCC/((SQM4-SQMHC)**2+GMMHCC**2) - FHCQ=FHCQ*HBW4C/HBW4 -C...Similarly for top - GMMT=PMAS(6,1)*PMAS(6,2) - HBW3=GMMT/((SQM3-SQMT)**2+GMMT**2) - CALL PYWIDT(6,SQM3,WDTP,WDTE) - GMMTC=SQRT(SQM3)*WDTP(0) - HBW3C=GMMTC/((SQM3-SQMT)**2+GMMTC**2) - FHCQ=FHCQ*HBW3C/HBW3 - - RM3=SQM3/SH - RM4=SQM4/SH - BE34=SQRT(MAX(0D0,(1D0-RM3-RM4)**2-4D0*RM3*RM4)) - -C COS(THETA-HAT) FROM 1/(X0+COS(THETA-HAT)) - X0=1.1 - CTH=(X0-1)*((X0+1)/(X0-1))**DCPARM(3)-X0 - COMFAC=COMFAC*LOG((X0+1)/(X0-1))*(CTH+X0)*0.5D0*BE34 - - UH=(-0.5D0)*SH*((1D0-RM3-RM4)+ - & BE34*CTH) -c UH=-0.5D0*SH*((1D0-RM3-RM4)+ -c & BE34*CTH) - - KCHHC=ISIGN(1,IDUP(4)) - -C THE 2->2 MATRIX ELEMENT ITSELF - FACHCQ=FHCQ*(SQML*PARU(141)**2+SQMQ/PARU(141)**2)/SQMW* - & (SH/(SQMQ-UH)+2D0*SQMQ*(SQMHC-UH)/(SQMQ-UH)**2+(SQMQ-UH)/SH- - & 2D0*SQMQ/(SQMQ-UH)+2D0*(SQMHC-UH)/(SQMQ-UH)* - & (SQMHC-SQMQ-SH)/SH) - SIGHDC=COMFAC*FACHCQ -C Suppression from closed decay channels - IF(WIDS(37,(5-KCHHC)/2)*WIDS(6,(5+KCHHC)/2).GT.0d0) - & SIGHDC=SIGHDC*WIDS(37,(5-KCHHC)/2)*WIDS(6,(5+KCHHC)/2) - XQSUM=0 - I=2 - IF(DCPARM(6).LE.0.5) I=1 - - SMB=PMAS(5,1)**2 - -C SQPTH is the maximum pt for the IS radiation of the 2->2 process - SQPTH=0.25D0*SH*BE34**2*(1D0-CTH**2) - if(MINT(35).LT.3) - $ SQPTH=SQPTH*PARP(67) - -C Z FROM Z - ZMIN=X(I) - Q2OPT=MIN(SQRT(SH*SMB),SQPTH) -c Q2OPT=MIN(SQRT(SH*SMB),Q2PS) - ZMAX=SH*Q2OPT/((Q2OPT+SMB)*(SH+Q2OPT)) - IF(ZMIN.GE.ZMAX) THEN - MATCHIG=0 - RETURN - END IF - Z=SQRT(ZMIN**2+DCPARM(4)*(ZMAX**2-ZMIN**2)) - BTILDE=0.5*(ZMAX**2-ZMIN**2)/Z - Y=X(I)/Z - - IF(MINT(35).lt.3)THEN -C Old, Q2-ordered, showers -C Q2 FROM 1/(Q2+SMB) - Q2MIN=0.5*(SH*(1/Z-1)-SMB)- - & 0.5*SQRT((SH*(1/Z-1)-SMB)**2-4*SH*SMB) - Q2MAX=0.5*(SH*(1/Z-1)-SMB)+ - & 0.5*SQRT((SH*(1/Z-1)-SMB)**2-4*SH*SMB) -c Q2MAX=MIN(Q2PS,Q2MAX) ! For version < 6.321 - ZSMB=SMB - ELSE -C New, pT-ordered, showers, ordered in (1-z)*(Q2+SMB) -C Q2 FROM 1/pT2=1/((1-z)(Q2+SMB)) - Q2MIN=(1-Z)*(0.5*(SH*(1/Z-1)-SMB)- - & 0.5*SQRT((SH*(1/Z-1)-SMB)**2-4*SH*SMB)) - Q2MAX=(1-Z)*(0.5*(SH*(1/Z-1)-SMB)+ - & 0.5*SQRT((SH*(1/Z-1)-SMB)**2-4*SH*SMB)) - ZSMB=(1-Z)*SMB - ENDIF - Q2MAX=MIN(SQPTH,Q2MAX) - Q2VAL=(Q2MIN+ZSMB)*((Q2MAX+ZSMB)/(Q2MIN+ZSMB))**DCPARM(5)-ZSMB - BTILDE=BTILDE*LOG((Q2MAX+ZSMB)/(Q2MIN+ZSMB))*(Q2VAL+ZSMB) - - ASRAD=AS - Q2RAD=Q2SF - - PGB=0.5D0*(Z**2+(1-Z)**2) - -C...CALCULATE MOMENTA OF IN- AND OUTGOING PARTONS -C PX,PY,PZ,E,M OF INGOING GLUONS - TAUP=X(3-I)*Y - SHP=TAUP*S - TAUPR=SQRT(TAUP) - - PUP(1,1)=0D0 - PUP(2,1)=0D0 - PUP(3,1)=TAUPR*EBMUP(1) - PUP(4,1)=TAUPR*EBMUP(1) - PUP(5,1)=0D0 - PUP(1,2)=0D0 - PUP(2,2)=0D0 -c PUP(3,2)=-TAUPR*EBMUP(1) - PUP(3,2)=(-TAUPR)*EBMUP(1) - PUP(4,2)=TAUPR*EBMUP(1) - PUP(5,2)=0D0 - -C OUTGOING B QUARK - P2VAL=SMB - - IF(MINT(35).lt.3)THEN - Q2=Q2VAL - ELSE - Q2=Q2VAL/(1-Z) - ENDIF - SPTB=Q2-Z*(Q2+P2VAL)*(SH+Q2)/SH - SMTB=SPTB+P2VAL - PHI(1)=PARU(2)*DCPARM(7) - PUP(1,4)=SQRT(SPTB)*COS(PHI(1)) - PUP(2,4)=SQRT(SPTB)*SIN(PHI(1)) - PUP(4,4)=(1-Z)*PUP(4,1)+P2VAL/(4*PUP(4,1)) - PUP(3,4)=(2d0*PUP(4,4)*PUP(4,I)-Q2-P2VAL)/(2d0*PUP(3,I)) - PUP(5,4)=PMAS(5,1) - -C TOP AND HIGGS: NEED BOOSTS AND ROTATIONS; USE P VECTOR -C 101 IS GLUON, 102 IS INCOMING B QUARK - DO 100 J=1,5 - P(101,J)=PUP(J,3-I) - 100 CONTINUE - P(102,1)=-PUP(1,4) - P(102,2)=-PUP(2,4) - P(102,3)=PUP(3,I)-PUP(3,4) - P(102,4)=PUP(4,I)-PUP(4,4) - P(102,5)=0 - DO 110 J=1,3 -c BETA(J)=-(P(101,J)+P(102,J))/(P(101,4)+P(102,4)) - BETA(J)=(-(P(101,J)+P(102,J)))/(P(101,4)+P(102,4)) - - 110 CONTINUE - - IF(ABS(P(102,4)**2-SPTB-P(102,3)**2+Q2) - & .GT.1d-6) - & WRITE(*,*)'WARNING! ', - & -(P(102,4)**2-SPTB-P(102,3)**2),' !=',Q2 - - K(101,1)=1 - K(102,1)=1 -C BOOST TO REST SYSTEM OF GLUON-B QUARK - CALL PYROBO(101,102,0D0,0D0,BETA(1),BETA(2),BETA(3)) - - ECM=P(101,4)+P(102,4) - P(103,5)=PQM3 - P(104,5)=PQM4 - IF(ECM.LT.P(103,5)+P(104,5)) THEN - WRITE(*,*)'NOT ENOUGH CM ENERGY TO MAKE H+ AND T' - MINT(51)=1 - MATCHIG=0 - RETURN - END IF - P(103,4)=0.5*(ECM+(P(103,5)**2-P(104,5)**2)/ECM) - P(103,3)=P(101,3)/ABS(P(101,3))*SQRT(P(103,4)**2-P(103,5)**2) - P(104,4)=ECM-P(103,4) - P(104,3)=-P(103,3) - P(103,1)=0 - P(103,2)=0 - P(104,1)=0 - P(104,2)=0 - - PHI(2)=PARU(2)*DCPARM(8) - - K(103,1)=1 - K(104,1)=1 - -C ROTATE T-H+ SYSTEM BY THETA,PHI - CALL PYROBO(103,104,ACOS(-CTH),PHI(2),0D0,0D0,0D0) - -C BOOST BACK TO GLUONIC CM SYSTEM - CALL PYROBO(101,104,0D0,0D0,-BETA(1),-BETA(2),-BETA(3)) - - DO 120 J=1,5 - PUP(J,3)=P(103,J) - PUP(J,5)=P(104,J) - 120 CONTINUE - - K(105,1)=1 - - DO 130 J1=1,5 - DO 140 J2=1,5 - P(100+J1,J2)=PUP(J2,J1) - 140 CONTINUE - 130 CONTINUE - -C...Set factorization scale as for 2->3 process - IF(MSTP(39).EQ.2) THEN - SPTT=P(103,1)**2+P(103,2)**2 - Q2SF=MAX(SQM3+SPTT,SMTB) - ELSE IF(MSTP(39).EQ.3) THEN - Q2SF=SQM4 - ELSE IF(MSTP(39).EQ.5) THEN - Q2SF=PMAS(37,1)**2 - ELSE IF(MSTP(39).EQ.6) THEN - Q2SF=0.25*(PQM3+PQM4)**2 - ELSE IF(MSTP(39).EQ.8) THEN - Q2SF=PARP(193) - ELSE - WRITE(*,*) 'FACTORIZATION SCALE ',MSTP(39), ' NOT SUPPORTED' - WRITE(*,*) 'PLEASE USE MSTP(39)=2, 3, 5, 6 or 8' - WRITE(*,*) 'EXECUTION STOPPED' - STOP - END IF - SCALUP=SQRT(Q2SF) - Q2SF=PARP(34)*Q2SF - -C PDFS (CTEQ5L DEFAULT) 2212=PROTON - CALL PYPDFU(IDBMUP(3-I),X(3-I),Q2SF,XPQ(-25,3-I)) - CALL PYPDFU(IDBMUP(I),Y,Q2RAD,XPQ(-25,I)) - BTILDE=BTILDE*ASRAD/PARU(2)/(Q2VAL+ZSMB)* - & PGB*XPQ(0,I) - -C SUM QUARK CONTRIBUTIONS - XQSUM=XQSUM+XPQ(0,3-I)*BTILDE - XQSUM=2*XQSUM - -C...XSEC IN PB - MATCHIG = 2*SIGHDC*XQSUM*1D9 - -C BOOST TO PROTON-PROTON SYSTEM - X(I)=Y - BETA(3)=(X(1)-X(2))/(X(1)+X(2)) - CALL PYROBO(101,105,0D0,0D0,0D0,0D0,BETA(3)) - - K(101,1)=0 - K(102,1)=0 - K(103,1)=0 - K(104,1)=0 - K(105,1)=0 - - DO 150 J1=1,5 - DO 160 J2=1,5 - PUP(J2,J1)=P(100+J1,J2) - 160 CONTINUE - 150 CONTINUE - - RETURN - - END diff --git a/Generators/Matchig_i/src/usematchig.F b/Generators/Matchig_i/src/usematchig.F deleted file mode 100755 index 8dafa8cddd3ffb347a8eea405b5355303cea99bb..0000000000000000000000000000000000000000 --- a/Generators/Matchig_i/src/usematchig.F +++ /dev/null @@ -1,70 +0,0 @@ -***************************** - SUBROUTINE USEMATCHIG -***************************** -C...DOUBLE PRECISION AND INTEGER DECLARATIONS. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - -C...USER PROCESS EVENT COMMON BLOCK. -#include "GeneratorFortranCommon/hepeup.inc" - - DOUBLE PRECISION MATCHIG - - DIMENSION DCPARM(10) - -C WRITE(6,*) 'MATCHIG_I: In usematchig.F' - -C...N:O PARTONS IN THE EVENT - NUP=5 - -C...PARTICLES -C WHICH IS QUARK (IQ), WHICH IS ANTIQUARK (7-IQ) - IQ=3 - IF(PYR(0).LT.0.5D0) IQ=4 - - IDUP(1)=21 - IDUP(2)=21 - IDUP(3)=6 - IDUP(4)=5 - IDUP(7-IQ)=-IDUP(7-IQ) - -C IDUP(5)=-ISIGN(1,IDUP(3))*37 - IDUP(5)=(-ISIGN(1,IDUP(3)))*37 - - ISTUP(1)=-1 - ISTUP(2)=-1 - ISTUP(3)=1 - ISTUP(4)=1 - ISTUP(5)=1 - -C...PARTICLE MOTHERS - DO 10 I=1,5 - MOTHUP(1,I)=0 - MOTHUP(2,I)=0 - SPINUP(I)=9D0 - 10 CONTINUE - -C...COLOR FLOW - ICOLUP(1,1)=101 - ICOLUP(2,1)=102 - ICOLUP(1,2)=102 - ICOLUP(2,2)=103 - ICOLUP(1,IQ)=101 - ICOLUP(2,IQ)=0 - ICOLUP(1,7-IQ)=0 - ICOLUP(2,7-IQ)=103 - ICOLUP(1,5)=0 - ICOLUP(2,5)=0 - - DO 90 J=1,10 - DCPARM(J)=PYR(0) - 90 CONTINUE - -C...NEGATIVE WEIGHT FOR DOUBLE-COUNTING EVENTS - XWGTUP=-MATCHIG(DCPARM,1d0) - -C WRITE(*,*) 'MATCHIG_I: WEIGHT = ',XWGTUP - - RETURN - END - diff --git a/Generators/McAtNlo_i/CMakeLists.txt b/Generators/McAtNlo_i/CMakeLists.txt deleted file mode 100644 index c9210a0ff70b6ad41f5e6d570a82d5d2ae42a82c..0000000000000000000000000000000000000000 --- a/Generators/McAtNlo_i/CMakeLists.txt +++ /dev/null @@ -1,33 +0,0 @@ -################################################################################ -# Package: McAtNlo_i -################################################################################ - -# Declare the package name: -atlas_subdir( McAtNlo_i ) - -# Declare the package's dependencies: -atlas_depends_on_subdirs( - PRIVATE - Generators/GeneratorFortranCommon ) - -# External dependencies: -find_package( Herwig ) -find_package( Pythia6 ) -find_package( Tauola ) - -# Remove the --as-needed linker flags: -atlas_disable_as_needed() - -# Component(s) in the package: -atlas_add_library( McAtNlo_i - src/*.F - NO_PUBLIC_HEADERS - PRIVATE_INCLUDE_DIRS ${PYTHIA6_INCLUDE_DIRS} ${HERWIG_INCLUDE_DIRS} - ${TAUOLA_INCLUDE_DIRS} - PRIVATE_LINK_LIBRARIES ${PYTHIA6_LIBRARIES} ${HERWIG_LIBRARIES} - ${TAUOLA_LIBRARIES} GeneratorFortranCommonLib ) - -# Install files from the package: -atlas_install_python_modules( python/*.py ) -atlas_install_joboptions( share/*.py ) -atlas_install_runtime( share/inparmMcAtNlo.dat share/tt.events ) diff --git a/Generators/McAtNlo_i/doc/McAtNlo.pdf b/Generators/McAtNlo_i/doc/McAtNlo.pdf deleted file mode 100644 index 0cd4a11a8e569afbab4e2424c05b2dcb83443a3f..0000000000000000000000000000000000000000 Binary files a/Generators/McAtNlo_i/doc/McAtNlo.pdf and /dev/null differ diff --git a/Generators/McAtNlo_i/doc/McAtNlo.tex b/Generators/McAtNlo_i/doc/McAtNlo.tex deleted file mode 100644 index f136619f4beaa17fcb4cb4dae36721378bbf9154..0000000000000000000000000000000000000000 --- a/Generators/McAtNlo_i/doc/McAtNlo.tex +++ /dev/null @@ -1,57 +0,0 @@ -\documentclass[11pt]{article} -\newdimen\SaveHeight \SaveHeight=\textheight -\textwidth=6.5in -\textheight=8.9in -\textwidth=6.5in -\textheight=9.0in -\hoffset=-.5in -\voffset=-1in -\def\topfraction{1.} -\def\textfraction{0.} -\def\topfraction{1.} -\def\textfraction{0.} -\begin{document} -\title{McAtNlo\_i: An interface between MC@NLO and Athena} -\author{ Ian Hinchliffe (I\_Hinchliffe@lbl.gov), Borut Kerevan (borut.kersevan@cern.ch) and Georgios Stavropoulos (George.Stavropoulos@cern.ch) } -%\today - -\maketitle - -This package runs MC@NLO from within Athena. \\See the example -in {\bf McAtNlo\_i/share/jobOptions.McAtNloHerwig.py } which show how to -read MC@NLO events and hadronize them using Herwig. - -Users must first run -MC@NLO in standalone mode and make a file of events. An athena job -then takes these events hadronizes them and passes them down the -Athena event chain. The events must be made with a version of MC@NLO -that is compatible, recent versions that support the Les Houches -interface should be acceptable. The current implementation is compatible -with the version 3.1 format. - -To hadronize {\bf MC@NLO} generated events with Herwig, you only need to run athena with the jobOptions -file jobOptions.McAtNloHerwig.py by typing in the prompt \\ -{\it athena.py jobOptions.McAtNloHerwig.py}\\ - -More infomation about MC@NLO here - -http://www.hep.phy.cam.ac.uk/theory/webber/MCatNLO/\\ - -{\large \bf Note on LHApdf stucture functions (release 11.0.0)} - -In the case you want to run MC@NLO with the LHAPDF structure functions you need to -set the autpdf variable to HWLHAPDF and the modpdf one to the LHAPDF set/member index -(see the documentation of the Generators/Lhapdf\_i package for the LHAPDF set/member -index settings). Up to v 3.1, MC@NLO is using the PDFLIB and not the LHAPDF one. In this -case you need to edit the inparmMcAtNlo.dat and the event files and replace the PDFLIB -structure functions set/member with the LHAPDF one. You can have a look at the -McAtNlo\_i/share/inparmMcAtNlo.dat and McAtNlo\_i/share/tt.events files, as an example -of what needs to be changed.\\ - -{\large \bf Note on the new interface for version 3.3.1} - -There present interface works for MC@NLO up to version 3.3.1 (at least) but \emph{should} be -backwards compatible down to version 3.1. All failues \emph{must} be reported (if you want to get -it fixed, of course). - -\end{document} diff --git a/Generators/McAtNlo_i/python/McAtNlo_iUtils.py b/Generators/McAtNlo_i/python/McAtNlo_iUtils.py deleted file mode 100644 index 20388b20ed5144f60d4e8c8bb008bc9433dfeeac..0000000000000000000000000000000000000000 --- a/Generators/McAtNlo_i/python/McAtNlo_iUtils.py +++ /dev/null @@ -1,297 +0,0 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration - - -# This utility is designed to be plugged in production -# of MC@NLO evgen samples. It helps to skip standalone -# preparation of MC@NLO input samples rather they are generated -# on the fly using the methods of the utility -# -# @author Gia Khoriauli <gia@mail.cern.ch>, October 2012 - -import os -import string - -from AthenaCommon import Logging - -herwigversion='' -mcatnloversion='' - - -def fixparrecord ( proc = 105200 , evprefix='ttbar' ) : - """ - Performes all process depended fixes of records in a .dat file. - Production responsibles of samples should provide corresponding fixes if needed. - """ - log = Logging.logging.getLogger('McAtNlo_i.McAtNlo_iUtils.fixparrecord') - - if proc==105200 : - log.debug('Nothing to do with the .dat file for DIS 105200') - - - -def fixeventrecord ( proc = 105200 , evprefix='ttbar' ) : - """ - Performes all process depended fixes of records in a .events file. - Production responsibles of samples should provide corresponding fixes if needed. - """ - log = Logging.logging.getLogger('McAtNlo_i.McAtNlo_iUtils.fixeventrecord') - - if proc==105200 : - if os.path.isfile(evprefix+'.events') : - log.debug(evprefix+'.events exist and is going to be modified') - os.system('sed -e \'s/0.8040\([DEe]\)+02\ /8.0399\\1+01\ /1\' -i '+evprefix+'.events') - else : - log.warning(evprefix+'.events DOES NOT exist') - - - -def configmcatnlo ( pardict={}, outfilename='MCatNLO_template.inputs', infilename='MCatNLO.inputs' ) : - """ - Initializes a sub-set of MC@NLO parameters from the provided list of parameters:values. Remining parameters will keep the default values. - """ - log = Logging.logging.getLogger('McAtNlo_i.McAtNlo_iUtils.configmcatnlo') - - if not os.path.isfile(infilename) : - log.warning('Configuration file '+ infilename +' is not found') - return False - - log.info('The following parameters of MC@NLO will be set to the provided values: '+ str(pardict)) - - #create a new mc@nlo script with modifed parameter values out of the original script - fiout = open(outfilename, 'w') - fi = open(infilename, 'r') - - line=fi.readline() - while not line=='' : - log.debug(line) - - changepar=False; - for par in pardict.keys() : - indx=line.find(par) - if indx == 0 : - changepar=True - lineparts=line.split("=") - linenew=lineparts[0]+'='+str(pardict[par])+'\n' - log.debug(' ----------> '+ linenew) - fiout.write(linenew) - break; - - if not changepar : - fiout.write(line) - - line=fi.readline() - - fi.close() - fiout.close() - return True - - - -def generateinput (processid=105200, numofevents=13000, indxofoutfile=1, pardict={}) : - """ - This method generates mc@nlo input of events for further processing of these events - under the Athena framework. - """ - log = Logging.logging.getLogger('McAtNlo_i.McAtNlo_iUtils.generateinput') - log.info('Start MC@NLO event generation of the sample with DIS='+str(processid)+'. Number of generated events='+str(numofevents)) - - env=os.environ - envkeys=env.keys() - - - # ----- CMT ENV ----> - CMTCONFIG='' - if 'CMTCONFIG' in envkeys : - CMTCONFIG=env['CMTCONFIG'] - log.debug('CMTCONFIG: '+CMTCONFIG) - else: - log.fatal('CMTCONFIG is not determined. Try to setup Athena first and run again. Now, retreat.') - quit() - - CMTPROJECTPATH='' - if 'CMTPROJECTPATH' in envkeys : - CMTPROJECTPATH=env['CMTPROJECTPATH'] - CMTPROJECTPATH=string.split(CMTPROJECTPATH,':') - CMTPROJECTPATH=CMTPROJECTPATH[0] - log.debug('CMTPROJECTPATH: '+CMTCONFIG) - else: - log.fatal('CMTPROJECTPATH is not determined. Try to setup Athena first and run again. Now, retreat.') - quit() - # <---- CMT ENV ----- - - - # ----- PDF ----> - LHAPATH='' - if 'LHAPATH' in envkeys : - LHAPATH=env['LHAPATH'] - log.debug('LHAPATH: '+LHAPATH) - else: - log.fatal('LHAPATH is not determined. Try to setup Athena first and run again. Now, retreat.') - quit() - - LHAPDFSET=LHAPATH - LHAPATH=LHAPATH.replace('/share/PDFsets','') - LHAVERSION=string.split(LHAPATH,"/") - LHAVERSION=LHAVERSION[-1] - log.debug('LHAVERSION: '+LHAVERSION) - - LHAPATH=LHAPATH+'/'+CMTCONFIG - if not os.path.isdir(LHAPATH) or not os.path.isdir(LHAPDFSET) : - log.fatal('LHAPATH (or LHAPDFSET) points to a wrong location ('+LHAPATH+'). Fix this and run again. Now, retreat.') - quit() - #/cvmfs/atlas.cern.ch/repo/sw/software/i686-slc5-gcc43-opt/17.2.2/sw/lcg/external/MCGenerators_hepmc2.06.05/lhapdf/5.8.5/i686-slc5-gcc43-opt/lib/ - # <---- PDF ----- - - - # ----- GENERATORS ----> - HepMCVERS='' #'2.06.05' - if 'HepMCVERS' in envkeys : - HepMCVERS=env['HepMCVERS'].rstrip() - log.debug('HepMCVERS: '+HepMCVERS) - else : - log.fatal('HepMCVERS is not determined. Try to setup Athena first and run again. Now, retreat.') - quit() - - herwig=CMTPROJECTPATH + '/sw/lcg/external/MCGenerators_hepmc'+HepMCVERS+'/herwig/' + herwigversion + '/' + CMTCONFIG - if not os.path.isdir(herwig) : - log.fatal('herwig path (' + herwig + ') points to a wrong location. Fix this and run again. Now, retreat.') - quit() - else : - log.debug('herwig: '+herwig) - - #/afs/cern.ch/sw/lcg/external/MCGenerators_hepmc2.06.05/mcatnlo/3.42/i686-slc5-gcc43-opt - #In order to run on the GRID the mc@nlo path has to be this: - # /cvmfs/atlas.cern.ch/repo/sw/software/../../sw/lcg/external/MCGenerators_hepmc2.06.05/.. - mcatnlo='/afs/cern.ch/sw/lcg/external/MCGenerators_hepmc'+HepMCVERS+'/mcatnlo/'+ mcatnloversion - - if not os.path.isdir(mcatnlo) : - log.fatal('mcatnlo path (' + mcatnlo + ') points to a wrong location. Fix this and run again. Now, retreat.') - quit() - else : - log.debug('mcatnlo: '+mcatnlo) - - mcatnlolib=mcatnlo + '/' + CMTCONFIG - if not os.path.isdir(mcatnlolib) : - #lib can be installed directly in the head directory - mcatnlolib=mcatnlo - - if not os.path.isdir(mcatnlolib+'/lib/archive') : - log.fatal('mcatnlo library archive (' + mcatnlolib + ') doesn\'t exist. Fix this and run again. Now, retreat.') - quit() - else : - log.debug('mcatnlolib: '+mcatnlolib) - - mcatnloworkdir='' - if not os.path.isdir(mcatnlo+'/share/examples') : - if not os.path.isdir(mcatnlo+'/examples') : - log.fatal('Neither mcatnlo/share/examples nor mcatnlo/examples directory exist. Try to fix this or use other mc@nlo version and run again. Now, retreat.') - quit() - else : - mcatnloworkdir=mcatnlo+'/examples' - else : - mcatnloworkdir=mcatnlo+'/share/examples' - # <---- GENERATORS ----- - - - # ----- CONFIGURE MC@NLO ----> - os.system('cp -r '+mcatnloworkdir+' .') - os.chdir('./examples') - if os.path.isdir('./Linux') : - os.system('rm -rf ./Linux') - os.system('pwd') - os.system('ls -l') - - #mc@nlo fails if the Athena setup is 32 bit but the host machine has the 64 bit architecture. to avoid this the mc@nlo config file has to be modified. - #mc@nlo Makefile has to be modified as well in order to include FFLAGS but this has to be done after the configuration script is executed. - # this fix should be provided by the mc@nlo side. for now, do this myself. - archtype = CMTCONFIG.split("-")[0].rstrip() - if archtype.find('i686')>-1 : - print 'archtype = ', archtype - log.info('Run is with the 32-bit setup of Athena. Configure mc@nlo with the -m32 option for a Fortran compiler') - #os.system('sed -e \'s/FFLAGS_OPT="-O2"/FFLAGS_OPT="-O2 -m32"/1\' -i configure') - os.system(r"sed -e 's/FFLAGS_OPT=\"-O2\"/FFLAGS_OPT=\"-O2 -m32\"/1' -i configure") - - os.system( './configure --lcgplatform='+CMTCONFIG+' --with-herwigversion='+herwigversion+' --with-herwig='+herwig+' --with-mcatnlo='+mcatnlolib+' --with-lhapdfversion='+LHAVERSION+' --with-lhapdf='+LHAPATH+' --with-lhapdfsets='+LHAPDFSET ) - #os.system( './configure --lcgplatform='+CMTCONFIG+' --with-herwigversion='+herwigversion+' --with-herwig='+herwig+' --with-mcatnloversion='+mcatnloversion+' --with-lhapdfversion='+LHAVERSION+' --with-lhapdf='+LHAPATH+' --with-lhapdfsets='+LHAPDFSET ) - - if archtype.find('i686')>-1 : - # these fixes should be provided by the mc@nlo side. for now, do this myself. - #os.system('sed -e \'s/$(FC)\ tmpmain.f\ -o/$(FC)\ tmpmain.f\ $(FFLAGS)\ -o/g\' -i Makefile') - os.system(r"sed -e 's/$(FC) tmpmain.f -o/$(FC) tmpmain.f $(FFLAGS) -o/g' -i Makefile") - - # set run configuration of mc@nlo parameters - if not configmcatnlo(pardict, 'MCatNLO_template.inputs', 'MCatNLO.inputs') : - log.fatal('Was not able to setup MC@NLO parameters. Retreat.') - quit() - - #build a random number seed if the corresponding MC@NLO parameter is initialized with a string value - if 'RNDEVSEED' in pardict.keys() : - tmprndseed = pardict['RNDEVSEED'] - if type( tmprndseed ) == str : - rndseed = processid + numofevents * (indxofoutfile-1) - log.debug('RNDEVSEED = ' + str(rndseed)) - os.system('sed -e s/RNDEVSEED='+tmprndseed+'/RNDEVSEED='+str(rndseed)+'/1 ./MCatNLO_template.inputs > ./MCatNLO_'+str(processid)+'.inputs') - else : - os.system('cp ./MCatNLO_template.inputs ./MCatNLO_'+str(processid)+'.inputs') - os.system( 'chmod +x ./MCatNLO_'+str(processid)+'.inputs' ) - os.system( 'rm -f ./MCatNLO_template.inputs' ) - else : - log.warning('Warning: initial random seed for event generation is not updated! This will lead to duplicated events.') - log.warning('Include \'RNDEVSEED\':\'somestring\' or \'RNDEVSEED\':N in parameter dictionary, where N is an intager number.') - # <---- CONFIGURE MC@NLO ----- - - - # ----- RUN MC@NLO & PREPARE ITS OUTPUT FOR FURTHER PROCESSING ----> - # generate events - os.system( 'source ./MCatNLO_'+str(processid)+'.inputs' ) - - #safety checks - fi=open('./MCatNLO_'+str(processid)+'.inputs') - if not fi : - log.fatal('Can\'t open ./MCatNLO_'+str(processid)+'.inputs. Retreat.') - quit() - - parlist=['EVPREFIX', 'EXEPREFIX'] - evprefix='' - exeprefix='' - parcount=0 - line=fi.readline() - while not line=='' : - for par in parlist : - indx=line.find(par) - if indx == 0 : - if par=='EVPREFIX' : - evprefix=line.split("=")[1].rstrip() - parcount+=1 - elif par=='EXEPREFIX' : - exeprefix=line.split("=")[1].rstrip() - parcount+=1 - if parcount==len(parlist) : - break - line=fi.readline() - - if not os.path.isdir('./Linux') : - log.fatal('Linux directory was not created. Retreat.') - quit() - os.chdir('./Linux') - if not os.path.isfile(evprefix+'.events') : - log.fatal(evprefix+'.events file was not created. Retreat.') - quit() - if not os.path.isfile(exeprefix+'MCinput') : - log.fatal(exeprefix+'MCinput file was not created. Retreat.') - quit() - - #apply the process dependent correction to the .events and .dat files if any - fixeventrecord( processid, evprefix ) - fixparrecord( processid, evprefix ) - - #prepare setup for Athena run - os.chdir('../../') - os.system('pwd') - os.system( 'ln -sf ./examples/Linux/'+exeprefix+'MCinput '+evprefix+'._00001.dat' ) - os.system( 'ln -sf ./examples/Linux/'+evprefix+'.events ' +evprefix+'._00001.events' ) - #os.system( 'sed -e \'s/'+evprefix+'.events'+'/events.lhe/1\' -i '+evprefix+'._00001.dat') - os.system( r"sed -e 's/"+evprefix+".events"+"/events.lhe/1' -i "+evprefix+"._00001.dat") - # <---- RUN MC@NLO & PREPARE ITS OUTPUT FOR FURTHER PROCESSING ----- - - diff --git a/Generators/McAtNlo_i/python/__init__.py b/Generators/McAtNlo_i/python/__init__.py deleted file mode 100644 index 74583d364ec2ca794156596c7254d9b234a940c6..0000000000000000000000000000000000000000 --- a/Generators/McAtNlo_i/python/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration - diff --git a/Generators/McAtNlo_i/share/McAtNlo_jobOptions.py b/Generators/McAtNlo_i/share/McAtNlo_jobOptions.py deleted file mode 100644 index 63e5b97823cf8621308cae3299a34ca42ff36bfb..0000000000000000000000000000000000000000 --- a/Generators/McAtNlo_i/share/McAtNlo_jobOptions.py +++ /dev/null @@ -1,54 +0,0 @@ -############################################################### -# Job options fragment which runs only with Generate_trf.py -#============================================================== - -from AthenaCommon.AppMgr import ServiceMgr -ServiceMgr.MessageSvc.OutputLevel = INFO - -runnumber=-1 -maxevents=-1 -randomseed=-1 -if hasattr(runArgs, 'runNumber'): - runnumber=runArgs.runNumber -if hasattr(runArgs, 'maxEvents'): - maxevents=runArgs.maxEvents -if hasattr(runArgs, "randomSeed"): - randomseed=runArgs.randomSeed - -#for every sample the corresponding production jobOptions defines the string, which has to be included in the name of input files. -#the input file names are checked by evgenConfig.inputfilecheck for the existence of the mandatory string -prefix='ttbar' # user depended setting -#rough efficiency of the Athena event filters corresponding to the sample being generated has to be specified -#0.5 is approximate filter efficiency in production of the 105200 sample -evgeneff=0.5 # user depended setting - -if maxevents > -1 : - maxevents=int(maxevents/evgeneff) -elif 'EvtMax' in locals() and EvtMax>-1 : - #e.g., Generate_trf.py -c "EvtMax=500" ... - maxevents=int(EvtMax/evgeneff) -else: - print 'Number of events to be generated was not determined. Retreat.' - quit() - -# debug -#print 'runnumber=',runnumber, 'maxevents=',maxevents, 'randomseed=',randomseed - -#dictionary of MC@NLO parameters, which have to be changed to the provided values for generation of events -pardict={ 'ECM':'8000', 'HVQMASS':'172.5', 'TWIDTH':'1.32', 'WMASS':'80.399', 'WWIDTH':'2.085', 'ZMASS':'91.1876', 'ZWIDTH':'2.4952', 'BRTOPTOLEP':'0.108', 'BRTOPTOHAD':'0.338', 'BRWTOLEP':'0.108', 'BRWTOHAD':'0.338', 'IPROC':'-1706', 'IL1CODE':'0', 'IL2CODE':'0', 'TOPDECAY':'ALL', 'PDFSET':'10800', 'HERPDF':'EXTPDF', 'FPREFIX':prefix, 'EVPREFIX':prefix, 'EXEPREFIX':prefix, 'NEVENTS':'1000', 'RNDEVSEED':randomseed } # user depended settings - -import McAtNlo_i.McAtNlo_iUtils -McAtNlo_i.McAtNlo_iUtils.mcatnloversion='3.42' -McAtNlo_i.McAtNlo_iUtils.herwigversion='6.520.2' -McAtNlo_i.McAtNlo_iUtils.generateinput(runnumber, maxevents, 1, pardict) - -#initialize the inputGeneratorFile option in order to link the on-the-fly generated input files to the default input files. -runArgs.inputGeneratorFile=prefix+'._00001' - -#run example. -#remark: the empty argument inputGeneratorFile=NONE has to be included in the command string. do not omit it. -# -# Generate_trf.py -t --omitvalidation=testEventMinMax preInclude=McAtNlo_jobOptions.py randomSeed=1 runNumber=105200 maxEvents=100 / -# jobConfig=MC12.105200.McAtNloJimmy_CT10_ttbar_LeptonFilter.py firstEvent=1 ecmEnergy=8000 outputEVNTFile=test.pool.root inputGeneratorFile=NONE - - diff --git a/Generators/McAtNlo_i/share/create_inparmMcAtNlo.py b/Generators/McAtNlo_i/share/create_inparmMcAtNlo.py deleted file mode 100644 index 95dc4a6a476c6ffbffc686155f91cbc624879a65..0000000000000000000000000000000000000000 --- a/Generators/McAtNlo_i/share/create_inparmMcAtNlo.py +++ /dev/null @@ -1,187 +0,0 @@ -# -# collect parameter from McAtNlo parameter file -# and set the values for the inout file of the interface -# C. Ay ... originally conversion script from A.Bocci (package Baur_i) -# - -import os,string,sys,time,glob,linecache -def usage(): - print "Usage: %s <eventfile>" % (sys.argv[0]) - -def checkProcess(string1): - foundProcess=False - - if not string1.split()[0].isdigit(): - return foundProcess - - string2=string1.replace("/"," ") - string3=string2.replace("="," ") - string4=string3.rpartition("-->") - for i in string4[2].split(): - if string4[0].find(i)>=0 and not foundProcess: - foundProcess=True - break - return foundProcess - -if len(sys.argv)==1: - usage() - sys.exit() - -if os.path.exists(sys.argv[1]): - eventfile = sys.argv[1] - -#------------------------------------------------------------------------------ - -outputfile = 'inparmMcAtNlo.dat' - -#------------------------------------------------------------------------------ - -inf = open(eventfile,"r") - -#------------------------------------------------------------------------- -# Collect the Parameter from McAtNlo calculation -firstLine=False - -for line in inf: - - if firstLine: - break - - pos_excla=line.find("-->") - - if pos_excla<0: - firstLine=True - evtnumber=line.split()[0] - - if checkProcess(line): - process=line.split()[0] - process_label=line.rpartition("-->") - - if line.find("CM energy",pos_excla)>=0: - energy=line.split() - - if line.find("colliding",pos_excla)>=0 and line.find("particles",pos_excla)>=0: - particles=line.split() - - if line.find("Lambda_5",pos_excla)>=0 and line.find("scheme",pos_excla)>=0: - lambda5_scheme=line.split() - - if line.find("PDF group",pos_excla)>=0 and line.find("id number",pos_excla)>=0: - pdfgroup_id=line.split() - - if line.find("M_top",pos_excla)>=0 and line.find("Gamma_top",pos_excla)>=0: - Top_mass_width=line.split() - - if line.find("M_W",pos_excla)>=0 and line.find("Gamma_W",pos_excla)>=0: - W_mass_width=line.split() - - if line.find("M_Z",pos_excla)>=0 and line.find("Gamma_Z",pos_excla)>=0: - Z_mass_width=line.split() - - if line.find("M_V",pos_excla)>=0 and line.find("Ga_V",pos_excla)>=0 and line.find("GammaX(V)",pos_excla)>=0: - V_mass_width=line.split() - - if line.find("M_H",pos_excla)>=0 and line.find("Ga_H",pos_excla)>=0 and line.find("GammaX(H)",pos_excla)>=0: - H_mass_width=line.split() - - if line.find("IL1",pos_excla)>=0 and line.find("IL2",pos_excla)>=0: - decay=line.split() - - if line.find("IV",pos_excla)>=0 and line.find("IL",pos_excla)>=0: - decay=line.split() - - if line.find("quark",pos_excla)>=0 and line.find("gluon",pos_excla)>=0 and line.find("masses",pos_excla)>=0: - massqg=line.split() - - if line.find("Format of v3.1 and higher",pos_excla)>=0: - format=line.split()[0] - -inf.close() - -# check if Z mass and width is set -try: - Z_mass_width -except NameError: - print "\nZ mass and width not set in eventfile! ... use default!" - displayZmass=False -else: - displayZmass=True - -# check if W mass and width is set -try: - W_mass_width -except NameError: - print "W mass and width not set in eventfile! ... use default!" - displayWmass=False -else: - displayWmass=True - -# check if H mass and width is set -try: - H_mass_width -except NameError: - print "Higgs mass and width not set in eventfile! ... use default!" - displayHmass=False -else: - displayHmass=True - -# check if Top mass and width is set -displayTopmass=True -try: - Top_mass_width -except NameError: - print "Top mass and width not set in eventfile! ... use default!" - Top_mass_width = list() - Top_mass_width.append("0.1725E+03") - Top_mass_width.append("0.1700E+01") - displayTopmass=False - -outf = open(outputfile,"w") -outf.write(" "+"\'"+eventfile+"\'"+" ! event file\n") -outf.write(" "+evtnumber+" ! number of events\n") -outf.write(" 1 ! 0->Herwig PDFs, 1 otherwise\n") -outf.write(" "+"\'"+particles[0]+"\'"+" "+"\'"+particles[1]+"\'"+" ! hadron types\n") -outf.write(" "+str(float(energy[0])/float(2))+" "+str(float(energy[0])/float(2))+" ! beam momenta\n") -outf.write(" -"+process+" ! "+process_label[2]) -outf.write(" "+"\'"+pdfgroup_id[0]+"\'"+" ! PDF group (1)\n") -outf.write(" "+pdfgroup_id[1]+" ! PDF id number (1)\n") -outf.write(" "+"\'"+pdfgroup_id[0]+"\'"+" ! PDF group (2)\n") -outf.write(" "+pdfgroup_id[1]+" ! PDF id number (2)\n") -if float(lambda5_scheme[0]) == 0.2260E+00: - lambda5_scheme[0] = "-1" -outf.write(" "+lambda5_scheme[0]+" ! Lambda_5, < 0 for default\n") -outf.write(" "+Top_mass_width[0]+" ! M_Q\n") -outf.write(" "+massqg[0]+" "+massqg[1]+" "+massqg[2]+" "+massqg[3]+" "+massqg[4]+" "+massqg[5]+" ! quark and gluon masses\n") -outf.close() - - -print -print "Some Parameters also need to be set in the jobOption file:" -print "..." -if displayTopmass: - print "Herwig.HerwigCommand += [ \"rmass 6 "+Top_mass_width[0]+"\"]" -if displayWmass: - print "Herwig.HerwigCommand += [ \"rmass 198 "+W_mass_width[0]+"\"]" - print "Herwig.HerwigCommand += [ \"rmass 199 "+W_mass_width[0]+"\"]" - print "Herwig.HerwigCommand += [ \"gamw "+W_mass_width[1]+"\"]" -if displayZmass: - print "Herwig.HerwigCommand += [ \"rmass 200 "+Z_mass_width[0]+"\"]" - print "Herwig.HerwigCommand += [ \"gamz "+Z_mass_width[1]+"\"]" -if displayHmass: - print "Herwig.HerwigCommand += [ \"rmass 201 "+H_mass_width[0]+"\"]" - print "Herwig.HerwigCommand += [ \"gamh "+H_mass_width[1]+"\"]" -print "Herwig.HerwigCommand += [ \"modpdf "+pdfgroup_id[1]+"\"]" -print "Herwig.HerwigCommand += [ \"autpdf "+pdfgroup_id[0]+"\"]" -print "..." - - - - - - - - - - - - diff --git a/Generators/McAtNlo_i/share/inparmMcAtNlo-3.3.dat b/Generators/McAtNlo_i/share/inparmMcAtNlo-3.3.dat deleted file mode 100644 index f0cdbf63dc1f3332558935a4ed20365d6d151732..0000000000000000000000000000000000000000 --- a/Generators/McAtNlo_i/share/inparmMcAtNlo-3.3.dat +++ /dev/null @@ -1,13 +0,0 @@ - 'tt-3.3.events' ! event file - 500 ! number of events - 1 ! 0->Herwig PDFs, 1 otherwise - 'P' 'P' ! hadron types - 7000.00 7000.00 ! beam momenta - -1706 ! -1705/1706=bb/tt - 'LHAPDF' ! PDF group (1) - 29003 ! PDF id number (1). - 'LHAPDF' ! PDF group (2). - 29003 ! PDF id number (2). - -1 ! Lambda_5, < 0 for default - 174.5 80.42 ! M_t, M_W - 0.32 0.32 0.5 1.55 4.95 0.75 ! quark and gluon masses diff --git a/Generators/McAtNlo_i/share/inparmMcAtNlo.dat b/Generators/McAtNlo_i/share/inparmMcAtNlo.dat deleted file mode 100644 index 2a6297bcdd7683100b69c1b5e217ea6f1194f3da..0000000000000000000000000000000000000000 --- a/Generators/McAtNlo_i/share/inparmMcAtNlo.dat +++ /dev/null @@ -1,13 +0,0 @@ - 'tt.events' ! event file - 500 ! number of events - 1 ! 0->Herwig PDFs, 1 otherwise - 'P' 'PBAR' ! hadron types - 7000.00 7000.00 ! beam momenta - -1706 ! -1705/1706=bb/tt - 'HWLHAPDF' ! PDF group (1). It was MRS in the original ttMCinput file - 29003 ! PDF id number (1). It was 105 in the original ttMCinput file - 'HWLHAPDF' ! PDF group (2). It was MRS in the original ttMCinput file - 29003 ! PDF id number (2). It was 105 in the original ttMCinput file - -1 ! Lambda_5, < 0 for default - 173 ! M_Q - 0.32 0.32 0.5 1.5 5.0 0.75 ! quark and gluon masses diff --git a/Generators/McAtNlo_i/share/jobOptions.McAtNloHerwig.py b/Generators/McAtNlo_i/share/jobOptions.McAtNloHerwig.py deleted file mode 100644 index 1f8b830d0845555c05c496a139c781355b3b5493..0000000000000000000000000000000000000000 --- a/Generators/McAtNlo_i/share/jobOptions.McAtNloHerwig.py +++ /dev/null @@ -1,78 +0,0 @@ -############################################################### -# -# Job options file -# -#============================================================== -#-------------------------------------------------------------- -# General Application Configuration options -#-------------------------------------------------------------- -from AthenaCommon.Logging import logging - -evgenLog = logging.getLogger('csc_evgen') - -# special setup for event generation -include( "AthenaCommon/Atlas_Gen.UnixStandardJob.py" ) - -# remember output level I set - -evgenMsgLevel = INFO - -# other includes needed by the physics file -include( "PartPropSvc/PartPropSvc.py" ) - -from AthenaServices.AthenaServicesConf import AtRndmGenSvc -svcMgr += AtRndmGenSvc() - -# get a handle on topalg -from AthenaCommon.AlgSequence import AlgSequence -topAlg = AlgSequence("TopAlg") - -svcMgr.MessageSvc.OutputLevel = evgenMsgLevel - -#-------------------------------------------------------------- -# Private Application Configuration options -#-------------------------------------------------------------- -atRndmGenSvc = svcMgr.AtRndmGenSvc -AtRndmGenSvc.Seeds = ["HERWIG 330020611 841000366", "HERWIG_INIT 824021 3247532"] - -from Herwig_i.Herwig_iConf import Herwig -topAlg += Herwig() -# ... Main generator : Herwig -Herwig = topAlg.Herwig -Herwig.HerwigCommand = [ "iproc mcatnlo", - "modpdf 10550","autpdf HWLHAPDF", - "jmueo 1", - "msflag 1", - "jmbug 0", - "ispac 2", - "qspac 2.5", - "ptrms 1.2", - "ptjim 3.13", - "jmrad 73 1.82", - "prsof 0", - "clpow 1.20", - "pltcut 0.0000000000333", - "ptmin 10.", - "mixing 1", - "maxpr 5" ] - -from TruthExamples.TruthExamplesConf import PrintMC -topAlg += PrintMC() - -#-------------------------------------------------------------- -# Event related parameters -#-------------------------------------------------------------- -# Number of events to be processed (default is 10) -theApp.EvtMax = 10 -#-------------------------------------------------------------- -# Algorithms Private Options -#-------------------------------------------------------------- - -#--------------------------------------------------------------- -# Ntuple service output -#--------------------------------------------------------------- -#============================================================== -# -# End of job options file -# -############################################################### diff --git a/Generators/McAtNlo_i/src/checkformat.F b/Generators/McAtNlo_i/src/checkformat.F deleted file mode 100644 index dd7966cfde58405b7a678dbd9e0e723afba7b4af..0000000000000000000000000000000000000000 --- a/Generators/McAtNlo_i/src/checkformat.F +++ /dev/null @@ -1,128 +0,0 @@ - FUNCTION CHECKFORMAT(IUNIT, JP) - IMPLICIT NONE -C Returns true if MC@NLO 4.0 format with x1,x2,qscale is detected, -C false otherwise. -C Checks records with momenta for MC@NLO <4.0 - INTEGER CHECKFORMAT - INTEGER CF - INTEGER IUNIT - INTEGER JP - LOGICAL WZ,WW - - INTEGER ITMP,IOS,I,J,CNT,NP - DOUBLE PRECISION DTMP - CHARACTER * 200 BUFFER - - INTEGER MAXNP - PARAMETER(MAXNP=9) - DOUBLE PRECISION MPUP(4,MAXNP) - - IF(JP.EQ.2870.OR.JP.EQ.2880)THEN - WZ=.TRUE. - WW=.FALSE. -C print *, "WZ mode" - ELSEIF (JP.EQ.2850)THEN - WW=.TRUE. - WZ=.FALSE. - ELSE - WZ=.FALSE. - WW=.FALSE. -C print *, "not WZ mode" - ENDIF - - CNT=0 - - CHECKFORMAT = 0 - - CNT=CNT+1 - READ(IUNIT,921) ITMP,ITMP,NP - CNT=CNT+1 - READ(IUNIT,922) (ITMP,I=1,NP) - CNT=CNT+1 - READ(IUNIT,923) DTMP,DTMP - CNT=CNT+1 - READ(IUNIT,924) ((MPUP(J,I),J=1,4),I=1,NP) - - -C - EOF for 1 event record ( MC@NLO ver <4.0 ) - CNT=CNT+1 - READ(UNIT=IUNIT,END=913, IOSTAT=IOS, FMT=926) BUFFER - - -C - EOF for 1 event record ( MC@NLO ver >=4.0 ) - CNT=CNT+1 - READ(UNIT=IUNIT,END=911, IOSTAT=IOS, FMT=926) BUFFER - - - CNT=CNT+1 - CF=-1 - IF(WZ.OR. WW) THEN - CF=0 - READ(UNIT=IUNIT,END=910, IOSTAT=IOS, FMT=921) ITMP,ITMP,NP - CF=-1 - 910 CONTINUE - ELSE - READ(UNIT=IUNIT, IOSTAT=IOS, FMT=926) BUFFER - NP=2 - ENDIF - -C - MPUP(J,I) set to 0. -- to be on save side - - DO J=3,4 - DO I=1,MAXNP - MPUP(J,I)=0.D0 - ENDDO - ENDDO - - IF(WZ) THEN - CHECKFORMAT = 2 - ELSEIF (WW) THEN - CHECKFORMAT = 3 - ELSE - CHECKFORMAT = 1 - ENDIF - - -C - For MC@NLO ver <4.0 it is a line with momenta - CNT=CNT+1; - READ(UNIT=IUNIT,ERR=913,IOSTAT=IOS,FMT=924) - & ((MPUP(J,I),J=1,4),I=1,MAXNP) - - - 911 CONTINUE - -C - Checks if there are more than two non-zero variables - IF(CF.LT.0) THEN - IF(IOS.GT.-1) THEN - DTMP=1.0D-30 - DO J=1,4 - DO I=1,MAXNP - IF(NP*(I-1)+J>NP.AND.DABS(MPUP(J,I)).GT.DTMP) THEN - CHECKFORMAT = 0 - ENDIF - ENDDO - ENDDO - ENDIF - ELSE - CHECKFORMAT=0 - ENDIF -C - Going back with reading - - - 913 DO I=1,CNT - BACKSPACE(IUNIT) - ENDDO - -C - Formats - 920 FORMAT(1X,I8) - - 921 FORMAT(1X,I3,2(1X,I2)) - 922 FORMAT(9(1X,I3)) - 923 FORMAT(2(1X,D14.8)) - 924 FORMAT(36(1X,D14.8)) - 925 FORMAT(3(1X,D14.8)) - - 926 FORMAT(1X,A) - - RETURN - END diff --git a/Generators/McAtNlo_i/src/filever.F b/Generators/McAtNlo_i/src/filever.F deleted file mode 100644 index 673d09c3432c49fb1caae03f1dacb9eff87dfa5a..0000000000000000000000000000000000000000 --- a/Generators/McAtNlo_i/src/filever.F +++ /dev/null @@ -1,180 +0,0 @@ - FUNCTION FILEVER(IUNIT, JP) - - IMPLICIT NONE - INTEGER FILEVER - - INTEGER IVERSION - - INTEGER IUNIT - INTEGER JP, IVER, I, J, CNT, IOS - - INTEGER NP, IERR1, IERR2 - LOGICAL WZ,WW - - INTEGER MAXNP - PARAMETER(MAXNP=9) - DOUBLE PRECISION MPUP(4,MAXNP) - - DOUBLE PRECISION DTMP - - DOUBLE PRECISION DX1, DX2, DQSCALE - INTEGER IDX1, IDX2, IDQSCALE - - DOUBLE PRECISION PID1, PID2, PID3 - INTEGER IPID1, IPID2, IPID3 - - INTEGER ITMP, ITMP1, ITMP2 - - ierr1 = 3 - ierr2 = 3 - - IF(JP.EQ.2870.OR.JP.EQ.2880)THEN - WZ=.TRUE. - WW=.FALSE. - print *, "WZ mode" - ELSEIF (JP.EQ.2850)THEN - WW=.TRUE. - WZ=.FALSE. - ELSE - WZ=.FALSE. - WW=.FALSE. - print *, "not WZ mode" - ENDIF - - FILEVER = 0 - - CNT=0 - - CNT=CNT+1 - READ(IUNIT,921) ITMP1, ITMP2, NP - - CNT=CNT+1 - READ(IUNIT,922) (ITMP,I=1,NP) - -c cross-section? - CNT=CNT+1 - READ(IUNIT,923) DTMP - -c 4-vectors? - CNT=CNT+1 - READ(IUNIT,924) ((MPUP(J,I),J=1,4),I=1,NP) - -c we assume integers first - CNT=CNT+1 - READ(UNIT=IUNIT,END=910, IOSTAT=IOS, FMT=927) IDX1, IDX2, IDQSCALE - - ierr1 = 0 - - if (idx1.eq.0.and.idx2.eq.0.and.idqscale.eq.0) then - ierr1 = 3 - endif - - 910 if (ierr1.eq.3) then - write(*,*) "FileVer: float instead of integer detected! (A)" - - BACKSPACE(IUNIT) - - READ(UNIT=IUNIT,FMT=925) DX1, DX2, DQSCALE - - idx1 = int(dx1) - idx2 = int(dx2) - idqscale = int(dqscale) - endif - - - CNT=CNT+1 - READ(UNIT=IUNIT,END=911, IOSTAT=IOS, FMT=927) ipid1, ipid2, ipid3 - ierr2 = 0 - - 911 if (ierr2.eq.3) then - write(*,*) "FileVer: float instead of integer detected! (B)" - - BACKSPACE(IUNIT) - - READ(UNIT=IUNIT, FMT=925) PID1, PID2, PID3 - - ipid1 = int(pid1) - ipid2 = int(pid2) - ipid3 = int(pid3) - endif - - IVER = IVERSION(IDX1, IDX2, IDQSCALE, IPID1, IPID2, IPID3) - - if (IVER.EQ.3) FILEVER = 0 - - if ((IVER.EQ.0).AND.(WZ)) FILEVER = 2 - - if ((IVER.EQ.0).AND.(WW)) FILEVER = 3 - - if (IVER.EQ.4) FILEVER = 1 - write(*,*) "McAtNlo file version: ", FILEVER - - 913 DO I=1,CNT - BACKSPACE(IUNIT) - ENDDO - - 920 FORMAT(1X,I8) - - 921 FORMAT(1X,I3,2(1X,I2)) - 922 FORMAT(9(1X,I3)) - 923 FORMAT(2(1X,D14.8)) - 924 FORMAT(36(1X,D14.8)) - 925 FORMAT(3(1X,D14.8)) - - 927 FORMAT(3(1X,i3)) - - RETURN - END - -c -c -c - FUNCTION IVERSION(IDX1, IDX2, IDQSCALE, IPID1, IPID2, IPID3) - - IMPLICIT NONE - integer IVERSION - - INTEGER IDX1, IDX2, IDQSCALE - INTEGER IPID1, IPID2, IPID3 - INTEGER IPIDSUM - - IVERSION = 0 - - IPIDSUM = IPID1 + IPID2 - -C check if version <= 4.0 - if (IDX1.GT.400.AND.IDX1.LT.410) then - if ((IDX1.EQ.401.OR.IDX1.EQ.403).AND. - & (IPIDSUM.GT.-4.AND.IPIDSUM.LT.4)) then - IVERSION = 3 -c return - - elseif ((IDX1.EQ.402.OR.IDX1.EQ.405).AND. - & (IPIDSUM.GT.21.AND.IPIDSUM.LT.25)) then - IVERSION = 3 - - elseif ((IDX1.EQ.404.OR.IDX1.EQ.406).AND. - & (IPIDSUM.LT.21.AND.IPIDSUM.GT.16)) then - IVERSION = 3 - - elseif (((IDX1.EQ.407).AND.IPIDSUM.EQ.42).OR. - & ((IDX1.EQ.408).AND.(IPIDSUM.GT.1.AND.IPIDSUM.LT.9)).OR. - & ((IDX1.EQ.409).AND.(IPIDSUM.GT.-9.AND.IPIDSUM.LT.-1))) then - IVERSION = 3 - - endif - endif - -c format 4.0 or higher without weights - if ((IPID1.GT.400.AND.IPID1.LT.410).AND. -c & (IPID2.EQ.0).AND. - & (IPID3.GT.0.AND.IPID3.LT.10)) then - - IVERSION = 4 - endif - - write(*,*) "Iversion: ", IVERSION - - RETURN - END - diff --git a/Generators/McAtNlo_i/src/initmcatnlo.F b/Generators/McAtNlo_i/src/initmcatnlo.F deleted file mode 100644 index 387bbcf4fc5e13921991274d4303550829b348f4..0000000000000000000000000000000000000000 --- a/Generators/McAtNlo_i/src/initmcatnlo.F +++ /dev/null @@ -1,333 +0,0 @@ - SUBROUTINE INITMCATNLO -C---------------------------------------------------------------------- -C Reads MC@NLO input headers and fills Les Houches run common HEPRUP -C---------------------------------------------------------------------- -#include "HERWIG65.INC" -C--Les Houches Common Blocks -#include "GeneratorFortranCommon/heprup.inc" -#include "GeneratorFortranCommon/hepeup.inc" - - DOUBLE PRECISION XCKECM,XTMP1,XTMP2,XTMP3,XTMP4,XMT,XMW,XMZ, - & XMH,XMV,XM1,XM2,XM3,XM4,XM5,XM21,XLAM,GAH,GAT,GAW,TINY - DOUBLE PRECISION XMV1,GAV1,GAMAX1,XMV2,GAV2,GAMAX2 - INTEGER IVVCODE,IFAIL,MQQ,NQQ,IHW,I,NDNS,JPR,JPR0,IH, - & IVHVEC,IVHLEP,IVLEP1,IVLEP2 - CHARACTER*60 TMPSTR - CHARACTER*4 STRP1,STRP2 - CHARACTER*8 STRGRP - CHARACTER*2 STRSCH - CHARACTER*3 STRFMT - CHARACTER*140 QQIN - LOGICAL FK88STRNOEQ - DATA TINY/1.D-3/ - COMMON/NQQCOM/MQQ,NQQ - COMMON/VVJIN/QQIN - COMMON/VHLIN/IVHVEC,IVHLEP - COMMON/VVLIN/IVLEP1,IVLEP2 -C - CHARACTER*60 TMPSTR2 - LOGICAL OLDFORM - DATA OLDFORM/.FALSE./ - - REAL*8 RGAMMAX - -C-- If FORMAT 4.0 with x1, x2, qscale is used - INTEGER READXXQ - COMMON/IFXXQ/ READXXQ -c INTEGER CHECKFORMAT - INTEGER FILEVER - LOGICAL WZ,WW - - CALL INPUTINI -C - IF (IERROR.NE.0) RETURN -C--SET UP INPUT FILES - OPEN(UNIT=61,FILE=QQIN,STATUS='UNKNOWN') -C--READ HEADERS OF EVENT FILE - READ(61,801)XCKECM,XTMP1,XTMP2,XTMP3,XTMP4,TMPSTR - READ(61,802)IVVCODE,TMPSTR - IVVCODE=MOD(IVVCODE,10000) -C---CHECK PROCESS CODE - JPR0=MOD(ABS(IPROC),10000) - print *,'JP = ',JPR0 - IF(JPR0.EQ.2870.OR.JPR0.EQ.2880)THEN - WZ=.TRUE. - WW=.FALSE. - ELSEIF (JPR0.eq.2850) THEN - WW=.TRUE. - WZ=.FALSE. - ELSE - WZ=.FALSE. - WW=.FALSE. - ENDIF - JPR=JPR0/100 - IF (JPR.NE.IVVCODE/100) THEN - CALL HWWARN('UPINIT',500) - GOTO 999 - ENDIF - IF ((JPR.EQ.17.OR.JPR.EQ.28.OR.JPR.EQ.36).AND. - & IVVCODE.NE.MOD(ABS(IPROC),10000)) THEN - CALL HWWARN('UPINIT',501) - GOTO 999 - ENDIF - IF (JPR.EQ.13.OR.JPR.EQ.14) THEN - IF(JPR0.EQ.1396.OR.JPR0.EQ.1371.OR. - # JPR0.EQ.1372.OR.JPR0.EQ.1373)THEN - READ(61,808)EMMIN,EMMAX,TMPSTR - ELSE - READ(61,809)XMV,GAH,RGAMMAX,TMPSTR - IF(RGAMMAX.GE.0.D0) GAMMAX=RGAMMAX - ENDIF -C-- CHECK VECTOR BOSON MASS - IF( (IVVCODE.EQ.1397.AND.ABS(XMV-RMASS(200)).GT.TINY) .OR. - # (IVVCODE.EQ.1497.AND.ABS(XMV-RMASS(198)).GT.TINY) .OR. - # (IVVCODE.EQ.1498.AND.ABS(XMV-RMASS(199)).GT.TINY) ) THEN - IF(WZ) THEN - CALL HWWARN('UPINIT',1502) - ELSE - CALL HWWARN('UPINIT',502) - ENDIF - GOTO 999 - ENDIF - ELSEIF (JPR.EQ.26.OR.JPR.EQ.27) THEN - READ(61,810)IVHVEC,IVHLEP,TMPSTR - READ(61,809)XMV,GAH,RGAMMAX,TMPSTR - READ(61,809)XMH,GAH,RGAMMAX,TMPSTR - IF( (JPR.EQ.26.AND.ABS(XMV-RMASS(199)).GT.TINY) .OR. - # (JPR.EQ.27.AND.ABS(XMV-RMASS(200)).GT.TINY) ) THEN - CALL HWWARN('UPINIT',508) - GOTO 999 - ENDIF - IF(RGAMMAX.GE.0.D0) GAMMAX=RGAMMAX - IF(ABS(XMH-RMASS(201)).GT.TINY) THEN - CALL HWWARN('UPINIT',509) - GOTO 999 - ENDIF - ELSEIF (JPR.EQ.28) THEN - READ(61,808)XMW,XMZ,TMPSTR -C-- CHECK VECTOR BOSON MASSES - IF(ABS(XMW-RMASS(198)).GT.TINY .OR. - # ABS(XMZ-RMASS(200)).GT.TINY) THEN - IF(WZ) THEN - CALL HWWARN('UPINIT',2502) - ELSE - CALL HWWARN('UPINIT',502) - ENDIF - GOTO 999 - ENDIF - READ(61,810)IVLEP1,IVLEP2,TMPSTR - READ(61,809)XMV1,GAV1,GAMAX1,TMPSTR - READ(61,809)XMV2,GAV2,GAMAX2,TMPSTR - ELSEIF (JPR.EQ.16.OR.JPR.EQ.36) THEN - READ(61,809)XMH,GAH,XMT,TMPSTR -C-- CHECK HIGGS AND TOP MASSES - IH=201 - IF (JPR.EQ.36) IH=IVVCODE/10-158 - IF(ABS(XMH-RMASS(IH)).GT.TINY) THEN - CALL HWWARN('UPINIT',503) - GOTO 999 - ENDIF - IF(ABS(XMT-RMASS(6)) .GT.TINY) THEN - CALL HWWARN('UPINIT',504) - GOTO 999 - ENDIF - ELSEIF (JPR.EQ.17) THEN - IF (MOD(JPR0,10).EQ.6) THEN -CBPK-> - READ(61,'(A)') TMPSTR2 - IF (TMPSTR2(17:19).EQ.'M_Q') THEN - OLDFORM=.TRUE. - READ(TMPSTR2,803) XMT,TMPSTR -c PRINT *,'OLDFORM IN INITMC',XMT,TMPSTR2(17:19) - ELSE - READ(TMPSTR2,808)XMT,GAT,TMPSTR -c PRINT *,'NEWFORM IN INITMC',XMT,GAT - ENDIF -CBPK-< - ELSE - READ(61,803)XMT,TMPSTR - ENDIF -C-- CHECK HEAVY QUARK MASS - IF( (IVVCODE.EQ.1706.AND.ABS(XMT-RMASS(6)).GT.TINY) .OR. - # (IVVCODE.EQ.1705.AND.ABS(XMT-RMASS(5)).GT.TINY) .OR. - # (IVVCODE.EQ.1704.AND.ABS(XMT-RMASS(4)).GT.TINY) ) THEN - CALL HWWARN('UPINIT',505) - GOTO 999 - ENDIF - IF (MOD(JPR0,10).EQ.6.AND.(.NOT.OLDFORM)) THEN - READ(61,808)XMW,GAW,TMPSTR - READ(61,810)IVLEP1,IVLEP2,TMPSTR -C-- CHECK W BOSON MASS WHEN TOPS DECAY - IF( IVLEP1.NE.7.AND.IVLEP2.NE.7 .AND. - # ABS(XMW-RMASS(198)).GT.TINY ) THEN - IF(WZ) THEN - CALL HWWARN('UPINIT',3502) - ELSE - CALL HWWARN('UPINIT',502) - ENDIF - GOTO 999 - ENDIF -CBPK-> -c PRINT *,'NEWFORM IN INITMC',XMW,GAW,IVLEP1,IVLEP2 - ELSEIF (MOD(JPR0,10).EQ.6.AND.OLDFORM) THEN - XMW=0.D0 - GAW=0.D0 - IVLEP1=7 - IVLEP2=7 -c PRINT *,'OLDFORM IN INITMC',XMW,GAW,IVLEP1,IVLEP2 -CBPK-< - ENDIF - ELSEIF (JPR.EQ.20) THEN -CBPK-> - READ(61,'(A)') TMPSTR2 - IF (TMPSTR2(17:21).EQ.'M_top') THEN - OLDFORM=.TRUE. - READ(TMPSTR2,803) XMT,TMPSTR -c PRINT *,'OLDFORM IN INITMC',XMT,TMPSTR2(17:19) - ELSE - READ(TMPSTR2,808)XMT,GAT,TMPSTR -c PRINT *,'NEWFORM IN INITMC',XMT,GAT - ENDIF -CBPK-> -C-- CHECK TOP QUARK MASS - IF(ABS(XMT-RMASS(6)).GT.TINY) THEN - CALL HWWARN('UPINIT',511) - GOTO 999 - ENDIF -CBPK-> - IF(.NOT.OLDFORM) THEN - READ(61,808)XMW,GAW,TMPSTR - IF(JPR0.LT.2030)THEN - READ(61,812)IVLEP1,TMPSTR -C-- CHECK W BOSON MASS WHEN TOPS DECAY - IF( IVLEP1.NE.7 .AND. - # ABS(XMW-RMASS(198)).GT.TINY ) THEN - IF(WZ) THEN - CALL HWWARN('UPINIT',4502) - ELSE - CALL HWWARN('UPINIT',502) - ENDIF - GOTO 999 - ENDIF - ELSE - READ(61,810)IVLEP1,IVLEP2,TMPSTR -C-- CHECK W BOSON MASS - IF(ABS(XMW-RMASS(198)).GT.TINY) THEN - IF(WZ) THEN - CALL HWWARN('UPINIT',5502) - ELSE - CALL HWWARN('UPINIT',502) - ENDIF - GOTO 999 - ENDIF - ENDIF - ENDIF -CBPK-> - ELSEIF (JPR.NE.1) THEN - CALL HWWARN('UPINIT',506) - GOTO 999 - ENDIF - READ(61,804)XM1,XM2,XM3,XM4,XM5,XM21,TMPSTR - IF (JPR.NE.1) THEN - READ(61,805)STRP1,STRP2,TMPSTR - READ(61,806)STRGRP,NDNS,TMPSTR - ENDIF - READ(61,807)XLAM,STRSCH,TMPSTR -C--CHECK THAT EVENT FILE HAS BEEN GENERATED CONSISTENTLY WITH -C--HERWIG PARAMETERS ADOPTED HERE - IFAIL=0 -C-- CM ENERGY -C-- QUARK AND GLUON MASSES - IF( ABS(XCKECM-PBEAM1-PBEAM2).GT.TINY .OR. - # ABS(XM1-RMASS(1)).GT.TINY .OR. - # ABS(XM2-RMASS(2)).GT.TINY .OR. - # ABS(XM3-RMASS(3)).GT.TINY .OR. - # ABS(XM4-RMASS(4)).GT.TINY .OR. - # ABS(XM5-RMASS(5)).GT.TINY .OR. - # ABS(XM21-RMASS(13)).GT.TINY) THEN - IFAIL=1 - ENDIF -C-- LAMBDA_QCD: NOW REMOVED TO ALLOW MORE FLEXIBILITY (NNLO EFFECT ANYHOW) -C # ABS(XLAM-QCDLAM).GT.TINY .OR. -C-- REPLACE THE FOLLOWING WITH A CONDITION ON STRSCH, IF CONSISTENT -C-- INFORMATION ON PDF SCHEME WILL BE AVAILABLE FROM PDF LIBRARIES AND HERWIG -C-- COLLIDING PARTICLE TYPE - IF (JPR.NE.1.AND.IFAIL.EQ.0) THEN - IF( - # FK88STRNOEQ(STRP1,PART1) .OR. - # FK88STRNOEQ(STRP2,PART2) )IFAIL=1 -C--IF PDF LIBRARY IS USED, CHECK PDF CONSISTENCY - IF( IFAIL.EQ.0 .AND. MODPDF(1).NE.-1)THEN - IF( - # FK88STRNOEQ(STRGRP,AUTPDF(1)) .OR. - # FK88STRNOEQ(STRGRP,AUTPDF(2)) .OR. - # ABS(NDNS-MODPDF(1)).GT.TINY .OR. - # ABS(NDNS-MODPDF(2)).GT.TINY ) THEN - IFAIL=1 - ENDIF -C--WHEN LHAPDF IS LINKED, AUTPDF() IS A MC@NLO-DEFINED STRING - IF(AUTPDF(1).EQ.'LHAPDF'.OR.AUTPDF(1).EQ.'LHAEXT')THEN - AUTPDF(1)='HWLHAPDF' - AUTPDF(2)='HWLHAPDF' - ENDIF - ENDIF - ENDIF - IF(IFAIL.EQ.1) THEN - CALL HWWARN('UPINIT',507) - GOTO 999 - ENDIF - CALL HWUIDT(3,IDBMUP(1),IHW,PART1) - CALL HWUIDT(3,IDBMUP(2),IHW,PART2) - DO I=1,2 - EBMUP(I)=HALF*XCKECM - PDFGUP(I)=-1 - PDFSUP(I)=-1 - ENDDO - IDWTUP=-4 - NPRUP=1 - LPRUP(1)=IVVCODE -C-- TEST FOR NEW FORMAT INPUT MOMENTA: (PX,PY,PZ,M) - READ(61,811) STRFMT,TMPSTR - IF (STRFMT.NE.'P,M') THEN - CALL HWWARN('UPINIT',510) - GOTO 999 - ENDIF - READ(61,900) MQQ - NQQ=0 -C-- LARGEST EXPECTED NUMBER OF LEGS - NUP=10 - AQEDUP=ZERO - AQCDUP=ZERO - DO I=1,NUP - VTIMUP(I)=ZERO - SPINUP(I)=9. - ENDDO -C-- DETECT FORMAT 4.0 -c READXXQ=CHECKFORMAT(61,JPR0) - READXXQ=FILEVER(61,JPR0) - IF(READXXQ.EQ.1) THEN - PRINT *, "EVENT FILE made by MC@NLO >=4.0" - ELSE IF(READXXQ.EQ.2) THEN - PRINT *, "EVENT FILE made by MC@NLO >=4.0 and WZ" - ELSE IF(READXXQ.EQ.3) THEN - PRINT *, "EVENT FILE made by MC@NLO >=4.0 and WW" - ELSE IF(READXXQ.EQ.0) THEN - PRINT *, "EVENT FILE made by MC@NLO <4.0" - ELSE - PRINT *, "UNKNOWN MC@NLO FORMAT" - ENDIF - - 801 FORMAT(5(1X,D10.4),1X,A) - 802 FORMAT(1X,I6,1X,A) - 803 FORMAT(1X,D10.4,1X,A) - 804 FORMAT(6(1X,D10.4),1X,A) - 805 FORMAT(2(1X,A4),1X,A) - 806 FORMAT(1X,A8,1X,I6,1X,A) - 807 FORMAT(1X,D10.4,1X,A2,1X,A) - 808 FORMAT(2(1X,D10.4),1X,A) - 809 FORMAT(3(1X,D10.4),1X,A) - 810 FORMAT(2(1X,I2),1X,A) - 811 FORMAT(1X,A3,1X,A) - 812 FORMAT(1X,I2,1X,A) - 900 FORMAT(I9) - 999 END diff --git a/Generators/McAtNlo_i/src/inputini.F b/Generators/McAtNlo_i/src/inputini.F deleted file mode 100644 index 374d40d058c74b1a5e65b736f7a521df61c022dd..0000000000000000000000000000000000000000 --- a/Generators/McAtNlo_i/src/inputini.F +++ /dev/null @@ -1,250 +0,0 @@ - SUBROUTINE INPUTINI -#include "HERWIG65.INC" - - INTEGER I,JPR0,JPR -C QQIN IS THE EVENT FILE -C String length increased from 50 to 140 chars (CG -- 25.11.09) - CHARACTER*140 QQIN - COMMON/VVJIN/QQIN - REAL*8 TMPLAM,GAMW0,GAMZ0,VGAMMAX,V2GAMMAX - REAL*8 RGAMMAX - INTEGER IPDF - - CHARACTER*60 TMPSTR2 - LOGICAL OLDFORM - DATA OLDFORM/.FALSE./ - -c -C Open the file with the input parameters - OPEN (21,FILE='inparmMcAtNlo.dat',STATUS='OLD',ERR=100) -C WRITE(*,*)'Enter filename for events' - READ(21,*)QQIN -C WRITE(*,*)'Enter maximum number of events to generate' -C WRITE(*,*)'MUST coincide with the number of events on tape' - READ(21,*)MAXEV -C WRITE(*,*)'Enter 0 to use Herwig default PDFs' -C WRITE(*,*)' 1 to use PDFs from library' - READ(21,*)IPDF -C OUTPUT THE RESULTS AFTER ANY NSTEP EVENTS -C NSTEP=20000 -C---BEAM paRTICLES -C WRITE(*,*)'Enter colliding particles (PART1, PART2)' - READ(21,*)PART1,PART2 -C---BEAM MOMENTA -C WRITE(*,*)'Enter beam momenta (PBEAM1, PBEAM2)' - READ(21,*)PBEAM1,PBEAM2 -C---PROCESS -C WRITE(*,*)'Enter process number (IPROC) (IPROC<0 for Les Houches)' - READ(21,*)IPROC -C---INITIALISE OTHER COMMON BLOCKS -C CALL HWIGIN -C---USER CAN RESET PARAMETERS AT -C THIS POINT, OTHERWISE DEFAULT -C VALUES IN HWIGIN WILL BE USED. -C -C LHSOFT=.FALSE. SWITCHES UNDERLYING EVENT OFF -C LHSOFT=IPROC.GT.-10000 -C C IF(IPROC.LT.-10000) IPROC = IPROC + 10000 -C WRITE(*,*) -C IF (LHSOFT) THEN -C WRITE(*,*)'Underlying event WILL be generated' -C ELSE -C WRITE(*,*)'Underlying event WILL NOT be generated' -C ENDIF -C WRITE(*,*) -C -C Select W/Z boson decay modes -C MODBOS(1)=5 -C MODBOS(2)=5 -C - IF(IPDF.EQ.1)THEN - DO I=1,2 -C WRITE(*,*)' Incoming particle # ',I -C WRITE(*,*)'Enter PDF group name (AUTPDF)' - READ(21,*)AUTPDF(I) -C WRITE(*,*)'Enter PDF set number (MODPDF)' - READ(21,*)MODPDF(I) - ENDDO - ENDIF -C WRITE(*,*)'Enter Lambda_QCD, <0 for Herwig default' - READ(21,*)TMPLAM - IF(TMPLAM.GE.0.D0)QCDLAM=TMPLAM -C---CHECK PROCESS CODE - JPR0=MOD(ABS(IPROC),10000) - JPR=JPR0/100 - IF (JPR.EQ.13.OR.JPR.EQ.14) THEN - IF(JPR0.EQ.1396)THEN -C WRITE(*,*)'Enter M_GAMMA*(INF), M_GAMMA*(SUP)' - READ(21,*)EMMIN,EMMAX - ELSEIF(JPR0.EQ.1397)THEN -C WRITE(*,*)'Enter Z0 mass, width, and GammaX' - READ(21,*)RMASS(200),GAMZ0,RGAMMAX - IF(GAMZ0.LT.0.D0)GAMZ=GAMZ0 - IF(RGAMMAX.GE.0.D0) GAMMAX=RGAMMAX - ELSEIF(JPR0.EQ.1497.OR.JPR0.EQ.1498)THEN -C WRITE(*,*)'Enter W mass, width, and GammaX' - READ(21,*)RMASS(198),GAMW0,RGAMMAX - RMASS(199)=RMASS(198) - IF(GAMW0.NE.0.D0)GAMW=GAMW0 - IF(RGAMMAX.GE.0.D0) GAMMAX=RGAMMAX - ELSEIF( (JPR0.GE.1350.AND.JPR0.LE.1356) .OR. - # (JPR0.GE.1361.AND.JPR0.LE.1366) )THEN -C WRITE(*,*)'Enter Z0 mass, width' - READ(21,*)RMASS(200),GAMZ -C WRITE(*,*)'Enter GAMMAX, M_Z*(INF), M_Z*(SUP)' - READ(21,*)RGAMMAX,EMMIN,EMMAX - IF(RGAMMAX.GE.0.D0) GAMMAX=RGAMMAX - IF(IPROC.GT.0)THEN - EMMIN=RMASS(200)-GAMZ*GAMMAX - EMMAX=RMASS(200)+GAMZ*GAMMAX - ENDIF - ELSEIF(JPR0.GE.1371.AND.JPR0.LE.1373)THEN -C WRITE(*,*)'Enter M_LL(INF), M_LL(SUP)' - READ(21,*)EMMIN,EMMAX - ELSEIF( (JPR0.GE.1450.AND.JPR0.LE.1453) .OR. - # (JPR0.GE.1461.AND.JPR0.LE.1463) .OR. - # (JPR0.GE.1471.AND.JPR0.LE.1473) )THEN -C WRITE(*,*)'Enter W mass, width' - READ(21,*)RMASS(198),GAMW - RMASS(199)=RMASS(198) -C WRITE(*,*)'Enter GAMMAX, M_W*(INF), M_W*(SUP)' - READ(21,*)RGAMMAX,EMMIN,EMMAX - IF(RGAMMAX.GE.0.D0) GAMMAX=RGAMMAX - ENDIF - ELSEIF (JPR.EQ.28) THEN -C WRITE(*,*)'Enter W mass, width' - READ(21,*)RMASS(198),GAMW0 - RMASS(199)=RMASS(198) -C WRITE(*,*)'Enter Z mass, width' - READ(21,*)RMASS(200),GAMZ0 -C WRITE(*,*)'Enter VGAMMAX, V2GAMMAX' - READ(21,*)VGAMMAX,V2GAMMAX - IF(GAMW0.NE.0.D0)GAMW=GAMW0 - IF(GAMZ0.NE.0.D0)GAMZ=GAMZ0 - RGAMMAX=MAX(VGAMMAX,V2GAMMAX) - IF(RGAMMAX.GE.0.D0) GAMMAX=RGAMMAX - ELSEIF (JPR.EQ.16) THEN -C WRITE(*,*)'Enter Higgs boson and top masses' - READ(21,*)RMASS(201),RMASS(6) - ELSEIF (JPR.EQ.17) THEN - IF(ABS(IPROC).EQ.1705.OR.ABS(IPROC).EQ.11705)THEN -C WRITE(*,*)'Enter bottom mass' - READ(21,*)RMASS(5) - ELSEIF(ABS(IPROC).EQ.1706.OR.ABS(IPROC).EQ.11706)THEN -C WRITE(*,*)'Enter top mass, W mass' -CBPK-> - READ(21,'(A)') TMPSTR2 - READ(TMPSTR2,*,ERR=616)RMASS(6),RMASS(198) -c PRINT *,'NEWFORM IN INPUT',RMASS(6),RMASS(198) - RMASS(199)=RMASS(198) - GOTO 617 - 616 OLDFORM=.TRUE. - READ(TMPSTR2,*) RMASS(8) -c PRINT *,'OLDFORM IN INPUT',RMASS(6),TMPSTR2(8:8) - 617 CONTINUE -CBPK-< - ENDIF - ELSEIF (JPR.EQ.26) THEN -C WRITE(*,*)'Enter W mass, width' - READ(21,*)RMASS(198),GAMW0 - RMASS(199)=RMASS(198) -C WRITE(*,*)'Enter Higgs boson mass' - READ(21,*)RMASS(201) - IF(GAMW0.NE.0.D0)GAMW=GAMW0 - ELSEIF (JPR.EQ.27) THEN -C WRITE(*,*)'Enter Z mass, width' - READ(21,*)RMASS(200),GAMZ0 -C WRITE(*,*)'Enter Higgs boson mass' - READ(21,*)RMASS(201) - IF(GAMZ0.NE.0.D0)GAMZ=GAMZ0 - ELSEIF (JPR.EQ.20) THEN -c WRITE(*,*)'Enter top mass, W mass' - READ(21,*)RMASS(6),RMASS(198) - RMASS(199)=RMASS(198) - ELSE - WRITE(*,*)' Bad process code IPROC =',IPROC - CALL HWWARN('HWIGPR',502) - GOTO 999 - ENDIF -C WRITE(*,*)'Enter quark (d,u,s,c,b) and gluon masses' - READ(21,*)RMASS(1),RMASS(2),RMASS(3), - # RMASS(4),RMASS(5),RMASS(13) - DO I=1,5 - RMASS(I+6)=RMASS(I) - ENDDO -C NO SOFT ME CORRECTIONS (ALREADY INCLUDED IN MC@NLO) - IF(IPROC.LT.0)THEN - SOFTME=.FALSE. - ELSE - SOFTME=.TRUE. - ENDIF -C HERWIG RUNS IN WEIGHTED MODE EXCEPT IN THE CASE OF SINGLE TOP IN -C ORDER TO AVOID TOO MANY EVENTS KILLED BY SHOWER - NOWGT=.FALSE. - IF(JPR.EQ.20.AND.IPROC.GT.0)NOWGT=.TRUE. -C NEGATIVE WEIGHTS ALLOWED - NEGWTS=.TRUE. -C MAXPR=2 -C MAXER=MAXEV/100 - LRSUD=0 - LWSUD=77 -C IN THE CASE HERWIG PDFS ARE USED, ADOPT MRST - NSTRU=8 - PRVTX=.FALSE. - PTMIN=0.5 - NRN(1)=1973774260 - NRN(2)=1099242306 -C THE FOLLOWING SHOULD BE USED ONLY IN WEIGHTED MODE - IF(.NOT.NOWGT)THEN - WGTMAX=1.000001D0 - AVABW=1.000001D0 - ENDIF -C FOR TOP PRODUCTION (HARMLESS ELSEWHERE) -CJK remove RLTIM settings as they don't have any effect according to S.Frixion -CJK RLTIM(6)=1.D-23 -CJK RLTIM(12)=1.D-23 -C---B FRAGMENTATION PARAMETERS (FOR B PRODUCTION ONLY) - IF(ABS(IPROC).EQ.1705.OR.ABS(IPROC).EQ.11705)THEN - PSPLT(2)=0.5 - ENDIF -C---USE THE FOLLOWING FOR SINGLE TOP -- AVOIDS TROUBLES WITH ISR -C IF(JPR.EQ.20)THEN -C CALL HWUSTA('B+ ') -C CALL HWUSTA('B- ') -C CALL HWUSTA('B_D0 ') -C CALL HWUSTA('B_DBAR0 ') -C CALL HWUSTA('B_S0 ') -C CALL HWUSTA('B_SBAR0 ') -C CALL HWUSTA('SIGMA_B+') -C CALL HWUSTA('LMBDA_B0') -C CALL HWUSTA('SIGMA_B-') -C CALL HWUSTA('XI_B0 ') -C CALL HWUSTA('XI_B- ') -C CALL HWUSTA('OMEGA_B-') -C CALL HWUSTA('B_C- ') -C CALL HWUSTA('UPSLON1S') -C CALL HWUSTA('SGM_BBR-') -C CALL HWUSTA('LMD_BBR0') -C CALL HWUSTA('SGM_BBR+') -C CALL HWUSTA('XI_BBAR0') -C CALL HWUSTA('XI_B+ ') -C CALL HWUSTA('OMG_BBR+') -C CALL HWUSTA('B_C+ ') -C IF(IPROC.LT.0)THEN -C CALL HWMODK(6,ONE,100,12,-11,5,0,0) -C CALL HWMODK(-6,ONE,100,-12,11,-5,0,0) -C ELSE -C CALL HWMODK(6,ONE,-1,12,-11,5,0,0) -C CALL HWMODK(-6,ONE,-1,-12,11,-5,0,0) -C ENDIF -C ENDIF - - RETURN - - 100 WRITE (*,*) - > 'INITMCATNLO: inparmMcAtNlo.dat file could not be opened!' - WRITE (*,*)'Please link an *.inparm file to inparmMcAtNlo.dat!' - 999 STOP - - END - diff --git a/Generators/McAtNlo_i/src/mcatnlo_str.F b/Generators/McAtNlo_i/src/mcatnlo_str.F deleted file mode 100644 index b8565211761fe68c57616eaee17db162bb0c3f77..0000000000000000000000000000000000000000 --- a/Generators/McAtNlo_i/src/mcatnlo_str.F +++ /dev/null @@ -1,122 +0,0 @@ -c Utilities working on strings -c - function fk88strnoeq(str1,str2) -c Returns true if str1#str2, false otherwise. The comparison -c is case INSENSITIVE - logical fk88strnoeq,flag - character * (*) str1,str2 - character * 70 strin,tmp1,tmp2 -c - strin=str1 - call fk88low_to_upp(strin,tmp1) - strin=str2 - call fk88low_to_upp(strin,tmp2) - if(tmp1.eq.tmp2)then - flag=.false. - else - flag=.true. - endif - fk88strnoeq=flag - return - end - - - subroutine fk88low_to_upp(strin,strout) -c Converts lowercase to uppercase - implicit real*8(a-h,o-z) - character*70 strin,strout,tmp - character*1 ch,ch1 -c - len=ifk88istrl(strin) - if(len.eq.0)then - return - elseif(len.eq.1)then - ch=strin - call fk88xgetchar1(ch,ch1) - strout=ch1 - else - do i=1,len - ch=strin(i:i+1) - call fk88xgetchar1(ch,ch1) - if(i.eq.1)then - strout=ch1 - else - call fk88strcat(strout,ch1,tmp) - strout=tmp - endif - enddo - endif - return - end - - - subroutine fk88xgetchar1(ch,ch1) -c Converts lowercase to uppercase (1 character only) - character*1 ch,ch1 -c ia=ascii value of a - parameter (ia=97) -c iz=ascii value of z - parameter (iz=122) -c ishift=difference between the ascii value of a and A - parameter (ishift=32) -c - ic=ichar(ch) - if(ic.ge.ia.and.ic.le.iz)then - ch1=char(ic-ishift) - else - ch1=ch - endif - return - end - - - subroutine fk88strnum(string,num) -c- writes the number num on the string string starting at the blank -c- following the last non-blank character - character * (*) string - character * 20 tmp - l = len(string) - write(tmp,'(i15)')num - j=1 - dowhile(tmp(j:j).eq.' ') - j=j+1 - enddo - ipos = ifk88istrl(string) - ito = ipos+1+(15-j) - if(ito.gt.l) then - write(*,*)'error, string too short' - write(*,*) string - stop - endif - string(ipos+1:ito)=tmp(j:) - end - - - function ifk88istrl(string) -c returns the position of the last non-blank character in string - character * (*) string - i = len(string) - dowhile(i.gt.0.and.string(i:i).eq.' ') - i=i-1 - enddo - ifk88istrl = i - end - - - subroutine fk88strcat(str1,str2,str) -c concatenates str1 and str2 into str. Ignores trailing blanks of str1,str2 - character *(*) str1,str2,str - l1=ifk88istrl(str1) - l2=ifk88istrl(str2) - l =len(str) - if(l.lt.l1+l2) then - write(*,*) 'error: l1+l2>l in fk88strcat' - write(*,*) 'l1=',l1,' str1=',str1 - write(*,*) 'l2=',l2,' str2=',str2 - write(*,*) 'l=',l - stop - endif - if(l1.ne.0) str(1:l1)=str1(1:l1) - if(l2.ne.0) str(l1+1:l1+l2)=str2(1:l2) - if(l1+l2+1.le.l) str(l1+l2+1:l)= ' ' - end diff --git a/Generators/McAtNlo_i/src/usemcatnlo.F b/Generators/McAtNlo_i/src/usemcatnlo.F deleted file mode 100644 index 4ecd09d73d8de92b89c3f1724dc534081a7c06eb..0000000000000000000000000000000000000000 --- a/Generators/McAtNlo_i/src/usemcatnlo.F +++ /dev/null @@ -1,1296 +0,0 @@ -C---------------------------------------------------------------------- - SUBROUTINE USEMCATNLO -C---------------------------------------------------------------------- -C Reads MC@NLO input files and fills Les Houches event common HEPEUP -C---------------------------------------------------------------------- -#include "HERWIG65.INC" - -C...======================================================= -C...Common function (05.16.2011, Soshi.Tsuno@cern.ch) -C...random number - integer imode,itau1,itau2,itau3 - double precision polz0 - double precision pyr - external pyr - - double precision plzapx - external plzapx -C...======================================================= - -C--Les Houches Common Blocks -#include "GeneratorFortranCommon/hepeup.inc" - -CC COMMUNICATE HERWIG STATUS - INTEGER ISTG - COMMON /EVTCON/ ISTG - -CC If FORMAT 4.0 with x1, x2, qscale is used - INTEGER READXXQ - COMMON/IFXXQ/ READXXQ - -CC << OJ - INTEGER NENTRIES - INTEGER NBACK -CC >> OJ -C AOH anomalous coupling reweighting -c DOUBLE PRECISION WGTACP(10) - DOUBLE PRECISION WGTACP(28) - INTEGER USERWGTS - COMMON/CWGTACP/ WGTACP, USERWGTS - - DOUBLE PRECISION XMP2,XMA2,XMB2,BETA,VA,VB,SIGMA,DELTA,S2, - & XKA,XKB,PTF,E,PL,XSCALE, -C gkh - & X1, X2, QSCALE - DOUBLE PRECISION PCM(5),PTR,XMTR,HWVDOT,HWULDO,PDB(5) - INTEGER I,J,IC,JPR,MQQ,NQQ,IUNIT,ISCALE,I1HPRO,IBOS,NP,IG,IP, - & ILEP,ID,IA,IB,ICOL4(4,4),ICOL5(5,18),ICOST(4,20),JJPROC,IVHVEC, - & IVHLEP,MUP - PARAMETER (IUNIT=61) - LOGICAL BOPRO,NODEC,REMIT - COMMON/NQQCOM/MQQ,NQQ - COMMON/VHLIN/IVHVEC,IVHLEP -C---Colour flows for heavy quark pair production - DATA ICOL4/ - & 10,02,10,02,01,20,20,01,12,23,10,03,12,31,30,02/ - DATA ICOL5/ - & 10,02,13,30,02, 10,02,32,10,03, - & 10,21,30,20,03, 10,23,20,10,03, - & 01,20,23,30,01, 01,20,31,20,03, - & 01,23,03,20,01, 01,12,03,30,02, - & 12,20,30,10,03, 12,30,10,30,02, - & 12,03,02,10,03, 12,01,03,30,02, - & 12,23,14,40,03, 12,34,32,10,04, - & 12,23,43,10,04, 12,31,34,40,02, - & 12,34,14,30,02, 12,31,42,30,04/ -C---Colour flows for single top production - DATA ICOST/ - & 20,12,00,10, 12,20,00,10, 10,02,02,10, 02,10,02,10, - & 20,10,20,10, 20,02,01,10, 10,20,20,10, 02,20,01,10, - & 20,02,01,10, 10,02,02,10, 02,20,01,10, 02,10,02,10, - & 20,10,20,10, 10,20,20,10, 12,23,03,10, 23,12,03,10, - & 30,12,32,10, 30,23,21,10, 12,30,32,10, 23,30,21,10/ - IF (IERROR.NE.0) RETURN -C---READ AN EVENT -C IF(NQQ.GE.MQQ)CALL HWWARN('UPEVNT',201,*999) - IF(NQQ.GE.MQQ) THEN - ISTG=1 - RETURN - ELSE - ISTG=0 - ENDIF - READ(IUNIT,901) I1HPRO,IC,NP -c write(*,*)'i1hpro ',I1HPRO,IC,NP - READ(IUNIT,902) (IDUP(I),I=1,NP) - READ(IUNIT,903) XWGTUP,XSCALE -C---Les Houches expects mean weight to be the cross section in pb - XWGTUP= XWGTUP*MQQ - READ(IUNIT,904) ((PUP(J,I),J=1,4),I=1,NP) - NQQ=NQQ+1 -C---Input format is now (px,py,pz,m) - DO I=1,NP - E=SQRT(HWVDOT(4,PUP(1,I),PUP(1,I))) - PUP(5,I)=PUP(4,I) - PUP(4,I)=E - ENDDO -C-- gkh - IF(READXXQ.GT.0) THEN - READ(IUNIT,905) X1, X2, QSCALE -c write(*,*) x1,x2,qscale - ENDIF -c write(*,*) 'readxxq',readxxq - IF(READXXQ.EQ.2) THEN - READ(IUNIT,906) (WGTACP(I),I=1,10) - USERWGTS=10 - ELSEIF (READXXQ.EQ.3) THEN -c READ(IUNIT,906) (WGTACP(I),I=1,28) - READ(IUNIT,907) (WGTACP(I),I=1,28) - USERWGTS=28 - ELSE - USERWGTS=0 - ENDIF -c if (userwgts .ne. 0 ) then -c do i=1,28 -c write(*,*) 'McAtNlo, wgtacp:', wgtacp(i) -c enddo -c endif - CALL HWVSUM(4,PUP(1,1),PUP(1,2),PCM) - CALL HWUMAS(PCM) -C---REMIT MEANS A REAL PARTON EMISSION OCCURRED - REMIT=PUP(4,3).NE.ZERO -C---NODEC MEANS DECAYS NOT YET DONE - NODEC=NP.EQ.5 - NUP=NP -C---CHECK PROCESS CODE - JJPROC=MOD(ABS(IPROC),10000) - JPR=JJPROC/100 - BOPRO=JPR.EQ.13.OR.JPR.EQ.14.OR.JPR.EQ.16.OR.JPR.EQ.36 - IF (BOPRO) THEN -C---------------------------------------------------------------------- -C SINGLE GAUGE OR HIGGS BOSON PRODUCTION -C B = Z/gamma, W or H (SM or any MSSM neutral Higgs) -C----------------------------------------------------------------------- -C I1HPRO IDENTIFIES THE PARTONIC SUBPROCESS, WITH THE FOLLOWING CONVENTIONS: -C I1HPRO PROCESS -C 401 q qbar -> CLHEP::g B -C 402 q CLHEP::g -> q B -C 403 qbar q -> CLHEP::g B -C 404 qbar CLHEP::g -> qbar B -C 405 CLHEP::g q -> q B -C 406 CLHEP::g qbar -> qbar B -C 407 CLHEP::g CLHEP::g -> CLHEP::g B -C----------------------------------------------------------------------- -C---NODEC=.TRUE. FOR HIGGS AND UNDECAYED EW BOSON - NODEC=NP.EQ.4 - IHPRO=I1HPRO-400 - ISCALE=0 - IF(JPR.EQ.16)ISCALE=2 - ELSEIF (JPR.EQ.17.OR.JPR.EQ.20) THEN -C---------------------------------------------------------------------- -C HEAVY Q and/or QBAR PRODUCTION -C IPROC=-1705,-1706 for Q=b,t -C IPROC=-2000,-2030/1/4 for single top, Wt+Wtb/Wtb/Wt -C----------------------------------------------------------------------- -C I1HPRO IDENTIFIES THE PARTONIC SUBPROCESS, WITH THE FOLLOWING CONVENTIONS: -C I1HPRO PROCESS -C 401 q qbar -> CLHEP::g Q Qbar -C 402 q CLHEP::g -> q Q Qbar -C 403 qbar q -> CLHEP::g Q Qbar -C 404 qbar CLHEP::g -> qbar Q Qbar -C 405 CLHEP::g q -> q Q Qbar -C 406 CLHEP::g qbar -> qbar Q Qbar -C 407 CLHEP::g CLHEP::g -> CLHEP::g Q Qbar -C 408 q q -> CLHEP::g t q -C 409 qbar qbar -> CLHEP::g tbar qbar -C----------------------------------------------------------------------- -C IC SPECIFIES THE COLOUR CONNECTION (NOW IN INPUT FILE) -C----------------------------------------------------------------------- -C---SET IHPRO AS FOR DIRECT PHOTON (IPROC=1800) - IHPRO=I1HPRO-360 - ISCALE=0 - IF(ABS(IPROC).EQ.1705.OR.ABS(IPROC).EQ.11705)ISCALE=5 - ELSEIF (JPR.EQ.28) THEN -C---------------------------------------------------------------------- -C GAUGE BOSON PAIR PRODUCTION -C VV=WW,ZZ,ZW+,ZW- FOR IPROC=-2850,-2860,-2870,-2880 -C----------------------------------------------------------------------- -C I1HPRO IDENTIFIES THE PARTONIC SUBPROCESS, WITH THE FOLLOWING CONVENTIONS: -C I1HPRO PROCESS -C 401 q qbar -> CLHEP::g V V -C 402 q CLHEP::g -> q V V -C 403 qbar q -> CLHEP::g V V -C 404 qbar CLHEP::g -> qbar V V -C 405 CLHEP::g q -> q V V -C 406 CLHEP::g qbar -> qbar V V -C----------------------------------------------------------------------- - IHPRO=I1HPRO-400 - ISCALE=0 - ELSEIF (JPR.EQ.26.OR.JPR.EQ.27) THEN -C---------------------------------------------------------------------- -C GAUGE BOSON PLUS HIGGS PRODUCTION -C VH=WH,ZH FOR IPROC=-2600-ID,-2700-ID -C WHERE ID CONTROLS HIGGS DECAY AS IN STANDARD HERWIG -C----------------------------------------------------------------------- - IHPRO=I1HPRO-400 - ISCALE=0 - ELSEIF (JPR.EQ.1) THEN -C---------------------------------------------------------------------- -C E+E- ANNIHILATION -C---------------------------------------------------------------------- - ISCALE=1 - ELSE - CALL HWWARN('UPEVNT',202) - GOTO 999 - ENDIF -C---HARD SCALE - SCALUP=PCM(5) - IF (XSCALE.GT.0D0.AND.XSCALE.LT.PCM(5)) SCALUP=XSCALE - IF (REMIT) THEN - IF (ISCALE.EQ.0) THEN - PTR=SQRT(PUP(1,3)**2+PUP(2,3)**2) - SCALUP=PCM(5)-2.*PTR - ELSEIF(ISCALE.EQ.1)THEN - SCALUP=PCM(5) - ELSEIF (ISCALE.EQ.2) THEN - SCALUP=SQRT(PUP(1,3)**2+PUP(2,3)**2) - ELSEIF (ISCALE.EQ.3.OR.ISCALE.EQ.4.OR.ISCALE.EQ.5) THEN - PTR=SQRT(PUP(1,3)**2+PUP(2,3)**2) - IA=4 - IB=5 - XMP2=PUP(5,3)**2 - XMA2=PUP(5,IA)**2 - XMB2=PUP(5,IB)**2 - S2=XMA2+XMB2+2*HWULDO(PUP(1,IA),PUP(1,IB)) - SIGMA=XMA2+XMB2 - DELTA=XMA2-XMB2 - BETA=SQRT(1-2*SIGMA/S2+(DELTA/S2)**2) - VA=BETA/(1+DELTA/S2) - VB=BETA/(1-DELTA/S2) - XKA=HWULDO(PUP(1,3),PUP(1,IA)) - XKB=HWULDO(PUP(1,3),PUP(1,IB)) - E=(XKA+XKB)/SQRT(S2) - PL=-(2.0/((VA+VB)*BETA*SQRT(S2))*(VA*XKA-VB*XKB)) - PTF=E**2-PL**2-XMP2 - IF (PTF.LE.ZERO) THEN - CALL HWWARN('UPEVNT',103) - GOTO 999 - ENDIF - PTF=SQRT(PTF) - IF(ISCALE.EQ.3)THEN - SCALUP=PCM(5)-2.*MIN(PTR,PTF) - ELSEIF(ISCALE.EQ.4)THEN - SCALUP=MIN(PTR,PTF) - ELSE - SCALUP=(MIN(PTR,PTF))**2+(XMA2+XMB2)/2.D0 - SCALUP=SQRT(SCALUP) - ENDIF - IF (SCALUP.LE.ZERO) THEN - CALL HWWARN('UPEVNT',100) - GOTO 999 - ENDIF - ELSEIF (ISCALE.EQ.6) THEN - XMTR=SQRT(PUP(5,4)**2+PUP(1,4)**2+PUP(2,4)**2) - PTR=SQRT(PUP(1,3)**2+PUP(2,3)**2) - SCALUP=PCM(5)-PTR-XMTR - IF (SCALUP.LE.ZERO) THEN - CALL HWWARN('UPEVNT',100) - GOTO 999 - ENDIF - ELSEIF (ISCALE.EQ.7) THEN - SCALUP=SQRT(PUP(5,4)**2+PUP(1,4)**2+PUP(2,4)**2) - ELSE - CALL HWWARN('UPEVNT',501) - GOTO 999 - ENDIF - ELSE - NUP=NUP-1 - ENDIF -C---INITIAL STATE - DO I=1,2 - ISTUP(I)=-1 - MOTHUP(1,I)=0 - MOTHUP(2,I)=0 - ENDDO -C---FINAL STATE - DO I=3,NUP - ISTUP(I)=1 - MOTHUP(1,I)=1 - MOTHUP(2,I)=2 - ENDDO - IF (BOPRO.AND.NODEC) THEN -C---SINGLE BOSON (UNDECAYED) - IF (REMIT) THEN -C---SET COLOUR CONNECTIONS - DO I=1,3 - ICOLUP(1,I)=501 - ICOLUP(2,I)=502 - ENDDO - IF (IHPRO.EQ.1) THEN - ICOLUP(2,1)=0 - ICOLUP(1,2)=0 - ELSEIF (IHPRO.EQ.2) THEN - ICOLUP(1,1)=502 - ICOLUP(2,1)=0 - ICOLUP(2,3)=0 - ELSEIF (IHPRO.EQ.3) THEN - ICOLUP(1,1)=0 - ICOLUP(2,2)=0 - ELSEIF (IHPRO.EQ.4) THEN - ICOLUP(1,1)=0 - ICOLUP(2,1)=501 - ICOLUP(1,3)=0 - ELSEIF (IHPRO.EQ.5) THEN - ICOLUP(1,2)=502 - ICOLUP(2,2)=0 - ICOLUP(2,3)=0 - ELSEIF (IHPRO.EQ.6) THEN - ICOLUP(1,2)=0 - ICOLUP(2,2)=501 - ICOLUP(1,3)=0 - ELSEIF (IHPRO.EQ.7) THEN - ICOLUP(1,2)=502 - ICOLUP(2,2)=503 - ICOLUP(2,3)=503 - ELSE - CALL HWWARN('UPEVNT',101) - GOTO 999 - ENDIF - ELSE - CALL HWVEQU(5,PUP(1,4),PUP(1,3)) -C---SET COLOUR CONNECTIONS - DO I=1,2 - ICOLUP(1,I)=0 - ICOLUP(2,I)=0 - ENDDO - IF (IDUP(1).GT.0) THEN - ICOLUP(1,1)=501 - ICOLUP(2,2)=501 - IF (IDUP(1).GT.0) THEN -C---GG FUSION - ICOLUP(2,1)=502 - ICOLUP(1,2)=502 - ENDIF - ELSE -C---QBAR Q - ICOLUP(2,1)=501 - ICOLUP(1,2)=501 - ENDIF - ENDIF - ICOLUP(1,NUP)=0 - ICOLUP(2,NUP)=0 -C---LOAD BOSON ID - IF (JPR.EQ.13) THEN - IDUP(NUP)=23 - ELSEIF (JPR.EQ.16) THEN - IDUP(NUP)=25 - ELSEIF (JPR.EQ.36) THEN - IBOS=MOD(JJPROC,100) - IF (IBOS.EQ.10) THEN - IDUP(NUP)=26 - ELSEIF (IBOS.EQ.20) THEN - IDUP(NUP)=35 - ELSEIF (IBOS.EQ.30) THEN - IDUP(NUP)=36 - ELSE - CALL HWWARN('UPEVNT',502) - GOTO 999 - ENDIF - ELSEIF (JPR.EQ.14) THEN - IBOS=0 - DO I=1,NUP-1 - ID=IDUP(I) - IF (ID.EQ.21) THEN - IC=0 - ELSEIF (ID.GT.0) THEN - IC=ICHRG(ID) - ELSE - IC=ICHRG(6-ID) - ENDIF - IBOS=IBOS+IC - ENDDO - IF (REMIT) IBOS=IBOS-2*IC - IF (ABS(IBOS).NE.3) THEN - CALL HWWARN('UPEVNT',503) - GOTO 999 - ENDIF - IDUP(NUP)=8*IBOS - ENDIF - ELSEIF (JPR.EQ.17) THEN -C---HEAVY QUARKS - IF (REMIT) THEN -C---3-BODY FINAL STATE -C---SET COLOUR CONNECTIONS - IF (IC.LE.18) THEN - DO I=1,5 - CALL UPCODE(ICOL5(I,IC),ICOLUP(1,I)) - ENDDO - ELSE - CALL HWWARN('UPEVNT',105) - GOTO 999 - ENDIF - ELSE -C---2-BODY FINAL STATE - DO IP=3,NUP - IDUP(IP)=IDUP(IP+1) - CALL HWVEQU(5,PUP(1,IP+1),PUP(1,IP)) - ENDDO -C---SET COLOUR CONNECTIONS - IF (IC.LE.4) THEN - DO I=1,4 - CALL UPCODE(ICOL4(I,IC),ICOLUP(1,I)) - ENDDO - ELSE - CALL HWWARN('UPEVNT',104) - GOTO 999 - ENDIF - ENDIF - IF (.NOT.NODEC) THEN -C---T-TBAR WITH DECAYS -C LES HOUCHES COMMON IS FILLED AS FOLLOWS: -C -C 1 INCOMING PARTON -C 2 INCOMING PARTON -C 3 OUTGOING LIGHT PARTON (IF ANY, OTHERWISE 4-13 BECOME 3-12) -C 4 TOP -C 5 ANTITOP -C 6 QUARK FROM TOP -C 7 W+ FROM TOP -C 8 ANTIQUARK FROM ANTITOP -C 9 W- FROM ANTITOP -C 10 DECAY PRODUCT FROM W+ FROM TOP -C 11 DECAY PRODUCT FROM W+ FROM TOP -C 12 DECAY PRODUCT FROM W- FROM ANTITOP -C 13 DECAY PRODUCT FROM W- FROM ANTITOP -C -C---RECONSTRUCT TOP DECAYS - IF (MOD(JJPROC,10).NE.6) THEN - CALL HWWARN('UPEVNT',210) - GOTO 999 - ENDIF - NP=NUP -C--W DECAYS - IDUP(NP+1)=IDUP(NP-5) - IDUP(NP+2)=IDUP(NP-4) - IDUP(NP+3)=IDUP(NP-2) - IDUP(NP+4)=IDUP(NP-1) - IDUP(NP-1)=IDUP(NP) - CALL HWVEQU(5,PUP(1,NP-5),PUP(1,NP+1)) - CALL HWVEQU(5,PUP(1,NP-4),PUP(1,NP+2)) - CALL HWVEQU(5,PUP(1,NP-2),PUP(1,NP+3)) - CALL HWVEQU(5,PUP(1,NP-1),PUP(1,NP+4)) - CALL HWVEQU(5,PUP(1,NP ),PUP(1,NP-1)) - CALL HWVSUM(4,PUP(1,NP+1),PUP(1,NP+2),PUP(1,NP-2)) - CALL HWVSUM(4,PUP(1,NP+3),PUP(1,NP+4),PUP(1,NP)) - CALL HWUMAS(PUP(1,NP-2)) - CALL HWUMAS(PUP(1,NP)) - IDUP(NP-2)=-(24*(MOD(IDUP(NP+1),2)+MOD(IDUP(NP+2),2))) - IDUP(NP)=-IDUP(NP-2) - DO IP=NP-3,NP+4 - ISTUP(IP)=1 - ENDDO - ISTUP(NP-2)=2 - ISTUP(NP)=2 -C--TOP DECAYS - CALL HWVSUM(4,PUP(1,NP-3),PUP(1,NP-2),PUP(1,NP-5)) - CALL HWVSUM(4,PUP(1,NP-1),PUP(1,NP ),PUP(1,NP-4)) - CALL HWUMAS(PUP(1,NP-5)) - CALL HWUMAS(PUP(1,NP-4)) - IDUP(NP-5)=IDUP(NP-2)/4 - IDUP(NP-4)=-IDUP(NP-5) - ISTUP(NP-5)=2 - ISTUP(NP-4)=2 - MOTHUP(1,NP-5)=1 - MOTHUP(2,NP-5)=2 - MOTHUP(1,NP-4)=1 - MOTHUP(2,NP-4)=2 - MOTHUP(1,NP-3)=NP-5 - MOTHUP(1,NP-2)=NP-5 - MOTHUP(1,NP-1)=NP-4 - MOTHUP(1,NP )=NP-4 - MOTHUP(1,NP+1)=NP-2 - MOTHUP(1,NP+2)=NP-2 - MOTHUP(1,NP+3)=NP - MOTHUP(1,NP+4)=NP - DO IP=NP-3,NP+4 - MOTHUP(2,IP)=MOTHUP(1,IP) - ICOLUP(1,IP)=0 - ICOLUP(2,IP)=0 - ENDDO - ICOLUP(1,NP-3)=ICOLUP(1,NP-5) - ICOLUP(2,NP-3)=ICOLUP(2,NP-5) - ICOLUP(1,NP-1)=ICOLUP(1,NP-4) - ICOLUP(2,NP-1)=ICOLUP(2,NP-4) - IF (IDUP(NP+1).GT.0) THEN - ICOLUP(1,NP+1)=505 - ICOLUP(2,NP+2)=505 - ELSE - ICOLUP(2,NP+1)=505 - ICOLUP(1,NP+2)=505 - ENDIF - IF (IDUP(NP+3).GT.0) THEN - ICOLUP(1,NP+3)=506 - ICOLUP(2,NP+4)=506 - ELSE - ICOLUP(2,NP+3)=506 - ICOLUP(1,NP+4)=506 - ENDIF - NUP=NP+4 - ENDIF -C-- gkh ELSEIF (JPR.EQ.20) THEN - ELSEIF (JPR.EQ.20 .AND. JJPROC.NE.2040.AND.JJPROC.NE.2041 - & .AND.JJPROC.NE.2044) THEN - IF (JJPROC.GE.2030) THEN -C---TOP+W FINAL STATE -C---SET COLOUR CONNECTIONS - IF (IC.GT.20) THEN - CALL HWWARN('UPEVNT',111) - GOTO 999 - ENDIF - DO I=1,4 - CALL UPCODE(ICOST(I,IC),ICOLUP(1,I)) - ENDDO - ICOLUP(1,5)=0 - ICOLUP(2,5)=0 - IF (.NOT.REMIT) THEN -C---2-BODY FINAL STATE - DO IP=3,NUP - IDUP(IP)=IDUP(IP+1) - ICOLUP(1,IP)=ICOLUP(1,IP+1) - ICOLUP(2,IP)=ICOLUP(2,IP+1) - CALL HWVEQU(5,PUP(1,IP+1),PUP(1,IP)) - ENDDO - ENDIF - IF (NODEC) THEN - IP=NUP-1 - ELSE - IP=NUP-2 -C---T W (OR TBAR W) WITH DECAYS -C LES HOUCHES COMMON IS FILLED AS FOLLOWS: -C -C 1 INCOMING PARTON -C 2 INCOMING PARTON -C 3 OUTGOING LIGHT PARTON (IF ANY, OTHERWISE 4-11 BECOME 3-10) -C 4 TOP -C 5 W FROM TOP -C 6 QUARK FROM TOP -C 7 DECAY PRODUCT FROM W FROM TOP -C 8 DECAY PRODUCT FROM W FROM TOP -C 9 W NOT FROM TOP -C 10 DECAY PRODUCT FROM W NOT FROM TOP -C 11 DECAY PRODUCT FROM W NOT FROM TOP -C -C---RECONSTRUCT W DECAY - NP=NUP - IDUP(NP+1)=-(24*(MOD(IDUP(NP-1),2)+MOD(IDUP(NP),2))) - IDUP(NP+2)=IDUP(NP-1) - IDUP(NP+3)=IDUP(NP) - CALL HWVEQU(5,PUP(1,NP-1),PUP(1,NP+2)) - CALL HWVEQU(5,PUP(1,NP),PUP(1,NP+3)) - CALL HWVSUM(4,PUP(1,NP-1),PUP(1,NP),PUP(1,NP+1)) - CALL HWUMAS(PUP(1,NP+1)) - ISTUP(NP+1)=2 - ISTUP(NP+2)=1 - ISTUP(NP+3)=1 - MOTHUP(1,NP+1)=1 - MOTHUP(2,NP+1)=2 - MOTHUP(1,NP+2)=NP+1 - MOTHUP(2,NP+2)=NP+1 - MOTHUP(1,NP+3)=NP+1 - MOTHUP(2,NP+3)=NP+1 - ICOLUP(1,NP+1)=0 - ICOLUP(2,NP+1)=0 - ICOLUP(1,NP+2)=505 - ICOLUP(2,NP+2)=0 - ICOLUP(1,NP+3)=0 - ICOLUP(2,NP+3)=505 - NUP=NP+3 - ENDIF - IF (IDUP(IP).LT.0) THEN -C---CHARGE CONJUGATE PROCESS - DO I=1,NUP - IA=ICOLUP(1,I) - ICOLUP(1,I)=ICOLUP(2,I) - ICOLUP(2,I)=IA - ENDDO - ENDIF - ELSE -C---SINGLE TOP: IA,IB ARE THE QUARKS THAT ARE COLOUR CONNECTED -C I.E. (FOR H EVENTS) THOSE THAT ARE NOT CONNECTED TO GLUON - IA=IC/10 - IB=IC-10*IA - IF (IA.LT.1.OR.IA.GT.5) THEN - CALL HWWARN('UPEVNT',108) - ELSEIF (IB.LT.1.OR.IB.GT.5) THEN - CALL HWWARN('UPEVNT',109) - ELSEIF (IA.EQ.IB) THEN - CALL HWWARN('UPEVNT',110) - ENDIF - IF (IERROR.NE.0) GOTO 999 - IF (.NOT.NODEC) IDUP(5)=IDUP(5)+IDUP(6) - DO I=1,5 - IF (I.EQ.IA.OR.I.EQ.IB) THEN - IF (IDUP(I).GT.0) THEN - ICOLUP(1,I)=501 - ICOLUP(2,I)=0 - ELSE - ICOLUP(1,I)=0 - ICOLUP(2,I)=501 - ENDIF - ELSEIF (IDUP(I).EQ.21) THEN - IG=I - ICOLUP(1,I)=502 - ICOLUP(2,I)=503 - ELSEIF (IDUP(I).GT.0) THEN - ICOLUP(1,I)=502 - ICOLUP(2,I)=0 - ELSE - ICOLUP(1,I)=0 - ICOLUP(2,I)=502 - ENDIF - ENDDO - IF (.NOT.NODEC) IDUP(5)=IDUP(5)-IDUP(6) - IF (REMIT) THEN -C---3-BODY FINAL STATE -C---COMPLETE GLUON COLOUR CONNECTIONS - IF (.NOT.NODEC) IDUP(5)=IDUP(5)+IDUP(6) - DO I=1,5 - IF (I.NE.IA.AND.I.NE.IB.AND.I.NE.IG) THEN - IF (IDUP(I).GT.0) THEN - IF((I.LT.3.AND.IG.LT.3) - & .OR.(I.GT.2.AND.IG.GT.2)) ICOLUP(1,I)=503 - ELSE - IF((I.LT.3.AND.IG.GT.2) - & .OR.(I.GT.2.AND.IG.LT.3)) ICOLUP(2,I)=503 - ENDIF - ENDIF - ENDDO - IF (.NOT.NODEC) IDUP(5)=IDUP(5)-IDUP(6) - ELSE -C---2-BODY FINAL STATE - DO IP=3,NUP - IDUP(IP)=IDUP(IP+1) - CALL HWVEQU(5,PUP(1,IP+1),PUP(1,IP)) - ENDDO -C---SET COLOUR CONNECTIONS - ICOLUP(1,3)=ICOLUP(1,4) - ICOLUP(2,3)=ICOLUP(2,4) - ICOLUP(1,4)=ICOLUP(1,5) - ICOLUP(2,4)=ICOLUP(2,5) - ENDIF - ENDIF - IF (.NOT.NODEC) THEN - IF (JJPROC.GE.2030) THEN - NP=NUP-5 - ELSE - NP=NUP -C---SINGLE TOP WITH DECAYS -C LES HOUCHES COMMON IS FILLED AS FOLLOWS: -C -C 1 INCOMING PARTON -C 2 INCOMING PARTON -C 3 OUTGOING LIGHT PARTON (IF ANY, OTHERWISE 4-9 BECOME 3-8) -C 4 OUTGOING BBAR-TYPE QUARK -C 5 TOP -C 6 W FROM TOP -C 7 QUARK FROM TOP -C 8 DECAY PRODUCT FROM W FROM TOP -C 9 DECAY PRODUCT FROM W FROM TOP -C -C---RECONSTRUCT TOP DECAY - ENDIF - IDUP(NP+1)=IDUP(NP-2) - IDUP(NP+2)=IDUP(NP-1) - IDUP(NP-1)=-(24*(MOD(IDUP(NP+1),2)+MOD(IDUP(NP+2),2))) - IDUP(NP-2)=IDUP(NP-1)/4 - CALL HWVEQU(5,PUP(1,NP-2),PUP(1,NP+1)) - CALL HWVEQU(5,PUP(1,NP-1),PUP(1,NP+2)) - CALL HWVSUM(4,PUP(1,NP+1),PUP(1,NP+2),PUP(1,NP-1)) - CALL HWVSUM(4,PUP(1,NP-1),PUP(1,NP ),PUP(1,NP-2)) - CALL HWUMAS(PUP(1,NP-1)) - CALL HWUMAS(PUP(1,NP-2)) - DO IP=NP-3,NP+2 - ISTUP(IP)=1 - ENDDO - ISTUP(2)=-1 - ISTUP(NP-1)=2 - ISTUP(NP-2)=2 - MOTHUP(1,NP-3)=1 - MOTHUP(2,NP-3)=2 - MOTHUP(1,NP-2)=1 - MOTHUP(2,NP-2)=2 - MOTHUP(1,NP-1)=NP-2 - MOTHUP(1,NP )=NP-2 - MOTHUP(1,NP+1)=NP-1 - MOTHUP(1,NP+2)=NP-1 - DO IP=NP-1,NP+2 - MOTHUP(2,IP)=MOTHUP(1,IP) - ICOLUP(1,IP)=0 - ICOLUP(2,IP)=0 - ENDDO - ICOLUP(1,NP)=ICOLUP(1,NP-2) - ICOLUP(2,NP)=ICOLUP(2,NP-2) - IF (IDUP(NP+1).GT.0) THEN - ICOLUP(1,NP+1)=504 - ICOLUP(2,NP+2)=504 - ELSE - ICOLUP(2,NP+1)=504 - ICOLUP(1,NP+2)=504 - ENDIF - IF (JJPROC.LT.2030) NUP=NP+2 - ENDIF - ELSEIF (JPR.EQ.1) THEN -C---E+E- ANNIHILATION - DO I=1,NUP - ICOLUP(1,I)=0 - ICOLUP(2,I)=0 - ENDDO -C---RESCALE 3-MOMENTA TO PUT PARTONS ON-SHELL - PUP(5,1)=RMASS(121) - PUP(5,2)=PUP(5,1) - CALL HWURSC(2,PUP) - PUP(5,3)=RMASS(13) - PUP(5,4)=RMASS(ABS(IDUP(4))) - PUP(5,5)=PUP(5,4) - IF (REMIT) THEN - CALL HWURSC(3,PUP(1,3)) - ICOLUP(1,3)=501 - ICOLUP(2,3)=502 - IF (IDUP(4).GT.0) THEN - ICOLUP(1,4)=502 - ICOLUP(2,5)=501 - ELSE - ICOLUP(2,4)=501 - ICOLUP(1,5)=502 - ENDIF - ELSE - CALL HWURSC(2,PUP(1,4)) - DO I=3,4 - CALL HWVEQU(5,PUP(1,I+1),PUP(1,I)) - IDUP(I)=IDUP(I+1) - ISTUP(I)=1 - ENDDO - IF (IDUP(3).GT.0) THEN - ICOLUP(1,3)=501 - ICOLUP(2,4)=501 - ELSE - ICOLUP(2,3)=501 - ICOLUP(1,4)=501 - ENDIF - ENDIF - ELSE -C---BOSON PAIR OR LEPTON PAIR - IF (BOPRO.OR.NODEC) THEN - NUP=6 - DO I=6,5,-1 - CALL HWVEQU(5,PUP(1,I-1),PUP(1,I)) - IDUP(I)=IDUP(I-1) - ISTUP(I)=1 - ENDDO - ELSE -C---BOSON PAIR: ONE OR BOTH DECAYED -C---ADD BOSON(S) TO EVENT RECORD - IF (ABS(IDUP(6)).LT.20) THEN - NUP=8 - I=2 - IF (ABS(IDUP(4)).LT.20) THEN - NUP=10 - I=3 - ENDIF - MUP=NUP-1 - CALL HWVEQU(5,PUP(1,MUP-I),PUP(1,MUP)) - CALL HWVEQU(5,PUP(1,NUP-I),PUP(1,NUP)) - CALL HWVSUM(4,PUP(1,MUP),PUP(1,NUP),PUP(1,6)) - CALL HWUMAS(PUP(1,6)) - IDUP(MUP)=IDUP(MUP-I) - IDUP(NUP)=IDUP(NUP-I) - ISTUP(MUP)=1 - ISTUP(NUP)=1 - MOTHUP(1,MUP)=6 - MOTHUP(2,MUP)=6 - MOTHUP(1,NUP)=6 - MOTHUP(2,NUP)=6 - ISTUP(6)=2 - ID=MOD(IDUP(MUP),2)+MOD(IDUP(NUP),2) - IF (ID.EQ.0) THEN - IDUP(6)=23 - ELSEIF (ABS(ID).EQ.1) THEN - IDUP(6)=-(24*ID) - ELSE - CALL HWWARN('UPEVNT',106) - GOTO 999 - ENDIF - ENDIF - IF (ABS(IDUP(4)).LT.20) THEN - CALL HWVZRO(4,PDB) - DO I=8,7,-1 - CALL HWVEQU(5,PUP(1,I-3),PUP(1,I)) - CALL HWVSUM(4,PUP(1,I),PDB,PDB) - IDUP(I)=IDUP(I-3) - ISTUP(I)=1 - MOTHUP(1,I)=5 - MOTHUP(2,I)=5 - ENDDO - CALL HWUMAS(PDB) - CALL HWVEQU(5,PDB,PUP(1,5)) - ISTUP(5)=2 - ID=MOD(IDUP(7),2)+MOD(IDUP(8),2) - IF (ID.EQ.0) THEN - IDUP(5)=23 - ELSEIF (ABS(ID).EQ.1) THEN - IDUP(5)=-(24*ID) - ELSE - CALL HWWARN('UPEVNT',107) - GOTO 999 - ENDIF - ELSE - CALL HWVEQU(5,PUP(1,4),PUP(1,5)) - IDUP(5)=IDUP(4) - ISTUP(5)=1 - MOTHUP(1,5)=4 - MOTHUP(2,5)=4 - ENDIF - ENDIF -C---ADD DIBOSON OR DILEPTON TO EVENT RECORD (TO FIX ITS MASS) - CALL HWVZRO(4,PDB) -CC << OJ - NENTRIES = 4 - NBACK = 2 - IF (((JPR.EQ.13).OR.(JPR.EQ.14)).AND.(REMIT.EQV..FALSE.)) THEN - NENTRIES = 3 - NBACK = 1 - ENDIF - - DO I=6,5,-1 - CALL HWVSUM(4,PUP(1,I),PDB,PDB) -c MOTHUP(1,I)=4 -c MOTHUP(2,I)=4 -CC << OJ - MOTHUP(1,I)=NENTRIES - MOTHUP(2,I)=NENTRIES -CC >> OJ - ENDDO - CALL HWUMAS(PDB) -c CALL HWVEQU(5,PDB,PUP(1,4)) -c ISTUP(4)=2 -c IDUP(4)=0 -CC << OJ - CALL HWVEQU(5,PDB,PUP(1,NENTRIES)) - ISTUP(NENTRIES)=2 - IDUP(NENTRIES)=0 -CC >> OJ - IF (REMIT) THEN -C---SET COLOUR CONNECTIONS - DO I=1,3 - ICOLUP(1,I)=501 - ICOLUP(2,I)=502 - ENDDO - IF (IHPRO.EQ.1) THEN - ICOLUP(2,1)=0 - ICOLUP(1,2)=0 - ELSEIF (IHPRO.EQ.2) THEN - ICOLUP(1,1)=502 - ICOLUP(2,1)=0 - ICOLUP(2,3)=0 - ELSEIF (IHPRO.EQ.3) THEN - ICOLUP(1,1)=0 - ICOLUP(2,2)=0 - ELSEIF (IHPRO.EQ.4) THEN - ICOLUP(1,1)=0 - ICOLUP(2,1)=501 - ICOLUP(1,3)=0 - ELSEIF (IHPRO.EQ.5) THEN - ICOLUP(1,2)=502 - ICOLUP(2,2)=0 - ICOLUP(2,3)=0 - ELSEIF (IHPRO.EQ.6) THEN - ICOLUP(1,2)=0 - ICOLUP(2,2)=501 - ICOLUP(1,3)=0 - ELSE - CALL HWWARN('UPEVNT',102) - GOTO 999 - ENDIF - DO I=4,NUP - ICOLUP(1,I)=0 - ICOLUP(2,I)=0 - ENDDO - ELSE - DO I=5,NUP -c CALL HWVEQU(5,PUP(1,I),PUP(1,I-2)) -c IDUP(I-2)=IDUP(I) -c ISTUP(I-2)=ISTUP(I) -c MOTHUP(1,I-2)=MOTHUP(1,I)-2 -c MOTHUP(2,I-2)=MOTHUP(1,I)-2 -CC << OJ - CALL HWVEQU(5,PUP(1,I),PUP(1,I-NBACK)) - IDUP(I-NBACK)=IDUP(I) - ISTUP(I-NBACK)=ISTUP(I) - IF (NBACK.EQ.1) THEN - MOTHUP(1,I-1)=3 - MOTHUP(2,I-1)=3 - ELSE - MOTHUP(1,I-2)=MOTHUP(1,I)-NBACK - MOTHUP(2,I-2)=MOTHUP(1,I)-NBACK - ENDIF -CC >> OJ - ENDDO - IF (NBACK.EQ.2) THEN - MOTHUP(1,3)=1 - MOTHUP(1,4)=1 - ENDIF -c NUP=NUP-2 -CC << OJ - NUP=NUP-NBACK - -CC >> OJ -C---SET COLOUR CONNECTIONS - DO I=1,NUP - ICOLUP(1,I)=0 - ICOLUP(2,I)=0 - ENDDO - IF (IDUP(1).GT.0) THEN - ICOLUP(1,1)=501 - ICOLUP(2,2)=501 - ELSE - ICOLUP(2,1)=501 - ICOLUP(1,2)=501 - ENDIF - ENDIF - - IF (BOPRO) THEN -C---DILEPTON PRODUCTION - IBOS=MOD(JJPROC,100) - ILEP=MOD(JJPROC,10) - IBOS=IBOS-ILEP -C---LOAD LEPTON AND BOSON ID - I=NUP-1 - J=NUP - IF ( IBOS.EQ.50 .OR. - # (IBOS.EQ.60.AND.JPR.EQ.13) .OR. - # (IBOS.EQ.70.AND.JPR.EQ.13) ) THEN - IDUP(I)=-ILEP-10 - IDUP(J)=-IDUP(I) -c IF (REMIT) IDUP(4)=23 -CC << OJ - IDUP(NENTRIES)=23 -CC >> OJ - ELSEIF (IBOS.EQ.60.AND.JPR.EQ.14) THEN - IDUP(I)=-9-2*ILEP - IDUP(J)=1-IDUP(I) -c IF (REMIT) IDUP(4)=24 -CC << OJ - IDUP(NENTRIES)=24 -CC >> OJ - ELSEIF (IBOS.EQ.70.AND.JPR.EQ.14) THEN - IDUP(I)=-10-2*ILEP - IDUP(J)=-1-IDUP(I) -c IF (REMIT) IDUP(4)=-24 -CC << OJ - IDUP(NENTRIES)=-24 -CC >> OJ - ELSE - CALL HWWARN('UPEVNT',504) - GOTO 999 - ENDIF - ENDIF - - ENDIF - -cc << OJJ -cc write(*,*) ' AFTER I IDUP ISTUP MOTH1 MOTH2' -cc Do I=1,NUP -cc write(*,*) I,' ',IDUP(I),' ',ISTUP(I),' ',MOTHUP(1,I), -cc $ ' ',MOTHUP(2,I),' ',PUP(1,I),' ',PUP(2,I),' ', -cc $ PUP(3,I),' ',PUP(4,I) -cc ENDDO - -C...======================================================= -C...Fill spin information for tauola. -C...Specify the decal mode. -C...imode: 1:W, 2:WW, 4:Z, 5:WZ, 8:ZZ, 16:H, 17:WH, 20:ZH. - imode = 0 - itau1 = 0 - itau2 = 0 - itau3 = 0 - do i=1,nup - if (iabs(idup(i)).eq.24) then - imode = imode + 1 - else if (iabs(idup(i)).eq.23) then - imode = imode + 4 - else if (iabs(idup(i)).eq.25) then - imode = imode + 16 - endif - enddo - do i=1,nup - if(mothup(1,i).gt.0) then - if (imode.eq.1) then ! single W production - if (iabs(idup(i)).eq.15.and.iabs(idup(mothup(1,i))) - & .eq.24) then - itau1 = i - endif - else if (imode.eq.2) then ! WW production - if (idup(i).eq.-15.and.idup(mothup(1,i)).eq.24) then - itau1 = i - endif - if (idup(i).eq.15.and.idup(mothup(1,i)).eq.-24) then - itau2 = i - endif - else if (imode.eq.4) then ! single Z production - if (idup(i).eq.-15.and.idup(mothup(1,i)).eq.23) then - itau1 = i - itau3 = mothup(1,i) - endif - if (idup(i).eq.15.and.idup(mothup(1,i)).eq.23) then - itau2 = i - endif - else if (imode.eq.5) then ! WZ production (so far, only assign for W decay.) - if (iabs(idup(i)).eq.15.and.iabs(idup(mothup(1,i))) - & .eq.24) then - itau1 = i - endif - else if (imode.eq.8) then ! ZZ production (so far do nothing.) - else if (imode.eq.16) then ! single H production - if (idup(i).eq.-15.and.idup(mothup(1,i)).eq.25) then - itau1 = i - endif - if (idup(i).eq.15.and.idup(mothup(1,i)).eq.25) then - itau2 = i - endif - else if (imode.eq.17) then ! WH production - if (idup(i).eq.-15.and.idup(mothup(1,i)).eq.25) then - itau1 = i - endif - if (idup(i).eq.15.and.idup(mothup(1,i)).eq.25) then - itau2 = i - endif - if (iabs(idup(i)).eq.15.and.iabs(idup(mothup(1,i))) - & .eq.24) then - itau3 = i - endif - else if (imode.eq.20) then ! ZH production (so far nothing for Z side.) - if (idup(i).eq.-15.and.idup(mothup(1,i)).eq.25) then - itau1 = i - endif - if (idup(i).eq.15.and.idup(mothup(1,i)).eq.25) then - itau2 = i - endif - endif - endif - enddo - - if (itau1.ne.0) then - spinup(itau1) = 0 - endif - if (itau2.ne.0) then - spinup(itau2) = 0 - endif - if (itau3.ne.0) then - spinup(itau3) = 0 - endif - -C...Assign spin information. - if (imode.eq.1) then ! single W production - if (itau1.ne.0) then - spinup(itau1) = -1.0d0 - endif - else if (imode.eq.2) then ! WW production - if (itau1.ne.0) then - spinup(itau1) = -1.0d0 - endif - if (itau2.ne.0) then - spinup(itau2) = -1.0d0 - endif -c JK -c else if (imode.eq.4) then ! single Z production - else if (imode.eq.4 - & .and. itau1.ne.0.and.itau2.ne.0.and.itau3.ne.0) then ! single Z production - - -C...Special case. Temporaly create the HEPEVT block. Later delete it. - nhep = 9 - isthep(4) = 121 - isthep(5) = 122 - isthep(6) = 120 - isthep(7) = 124 - isthep(8) = 1 - isthep(9) = 1 - idhep(4) = idup(1) - idhep(5) = idup(2) - idhep(6) = 0 - idhep(7) = idup(itau3) - idhep(8) = idup(itau1) - idhep(9) = idup(itau2) - jmohep(1,4) = 6 - jmohep(2,4) = 5 - jmohep(1,5) = 6 - jmohep(2,5) = 4 - jmohep(1,6) = 4 - jmohep(2,6) = 5 - jmohep(1,7) = 6 - jmohep(2,7) = 7 - jmohep(1,8) = 7 - jmohep(2,8) = 8 - jmohep(1,9) = 7 - jmohep(2,9) = 9 - jdahep(1,4) = 5 - jdahep(2,4) = 5 - jdahep(2,5) = 4 - jdahep(2,5) = 4 - jdahep(2,6) = 7 - jdahep(2,6) = 7 - jdahep(2,7) = 8 - jdahep(2,7) = 9 - jdahep(2,8) = 0 - jdahep(2,8) = 0 - jdahep(2,9) = 0 - jdahep(2,9) = 0 - do i=1,5 - phep(i,4) = pup(i,1) - phep(i,5) = pup(i,2) - phep(i,6) = pup(i,1)+pup(i,2) - phep(i,7) = pup(i,itau3) - phep(i,8) = pup(i,itau1) - phep(i,9) = pup(i,itau2) - enddo - phep(5,6) = sqrt((pup(4,1)+pup(4,2))**2 - $ -(pup(1,1)+pup(1,2))**2 - $ -(pup(2,1)+pup(2,2))**2 - $ -(pup(3,1)+pup(3,2))**2) - do i=1,4 - vhep(i,4) = 0.0d0 - vhep(i,5) = 0.0d0 - vhep(i,6) = 0.0d0 - vhep(i,7) = 0.0d0 - vhep(i,8) = 0.0d0 - vhep(i,9) = 0.0d0 - enddo - - polz0 = plzapx(1,7,8,9) - if (pyr(0).LT.polz0) THEN - spinup(itau1) = 1.0d0 - spinup(itau2) = 1.0d0 - else - spinup(itau1) = -1.0d0 - spinup(itau2) = -1.0d0 - endif -C...Delete temporal HEPEVT. - nhep = 3 - do i=4,9 - isthep(i) = 0 - idhep(i) = 0 - jmohep(1,i) = 0 - jmohep(2,i) = 0 - jdahep(1,i) = 0 - jdahep(2,i) = 0 - phep(1,i) = 0.0d0 - phep(2,i) = 0.0d0 - phep(3,i) = 0.0d0 - phep(4,i) = 0.0d0 - phep(5,i) = 0.0d0 - vhep(1,i) = 0.0d0 - vhep(2,i) = 0.0d0 - vhep(3,i) = 0.0d0 - vhep(4,i) = 0.0d0 - enddo - else if (imode.eq.5) then ! WZ production (so far, only assign for W decay.) - if (itau1.ne.0) then - spinup(itau1) = -1.0d0 - endif - else if (imode.eq.8) then ! ZZ production (so far do nothing.) - else if (imode.eq.16) then ! single H production - if (itau1.ne.0.and.itau2.ne.0) then - if (pyr(0).lt.0.5d0) then - spinup(itau1) = 1.0d0 - spinup(itau2) = -1.0d0 - else - spinup(itau1) = -1.0d0 - spinup(itau2) = 1.0d0 - endif - endif - else if (imode.eq.17) then ! WH production - if (itau1.ne.0.and.itau2.ne.0) then - if (pyr(0).lt.0.5d0) then - spinup(itau1) = 1.0d0 - spinup(itau2) = -1.0d0 - else - spinup(itau1) = -1.0d0 - spinup(itau2) = 1.0d0 - endif - endif - if (itau3.ne.0) then - spinup(itau3) = -1.0d0 - endif - else if (imode.eq.20) then ! ZH production (so far nothing for Z side.) - if (itau1.ne.0.and.itau2.ne.0) then - if (pyr(0).lt.0.5d0) then - spinup(itau1) = 1.0d0 - spinup(itau2) = -1.0d0 - else - spinup(itau1) = -1.0d0 - spinup(itau2) = 1.0d0 - endif - endif - endif - -C...Debug. -C write(*,*) "ST...McAtNlo",imode,itau1,itau2,itau3 -C if (itau1.ne.0) then -C write(*,*) "ST...McAtNlo after fill 1",idup(itau1),spinup(itau1) -C endif -C if (itau2.ne.0) then -C write(*,*) "ST...McAtNlo after fill 2",idup(itau2),spinup(itau2) -C endif -C if (itau3.ne.0) then -C write(*,*) "ST...McAtNlo after fill 3",idup(itau3),spinup(itau3) -C endif -C...======================================================= - - - - 999 CONTINUE - IF(IERROR.LT.100) RETURN -c PRINT * -c DO I=1,NUP -c PRINT '(4I4,3F8.2)',IDUP(I),ISTUP(I),(MOTHUP(J,I),J=1,2), -c & (PUP(J,I),J=1,3) -c ENDDO - -c IPR, IC, NP - 901 FORMAT(1X,I3,2(1X,I2)) -c (ID(I),I=1,NP) - 902 FORMAT(9(1X,I3)) -c XEVWGT,EMSCA - 903 FORMAT(2(1X,D14.8)) -c ((P(J,I),J=1,4),I=1,NP) - 904 FORMAT(36(1X,D14.8)) -C gkh - 905 FORMAT(3(1X,D14.8)) - 906 FORMAT(10(1x,d14.8)) - 907 FORMAT(28(1x,d14.8)) - -c 901 FORMAT(1X,I3,4(1X,I2)) -c 902 FORMAT(1X,D14.8) -c 903 FORMAT(16(1X,D14.8)) - END -C---------------------------------------------------------------------- - SUBROUTINE UPCODE(ICODE,ICOL) -C--DECODES COLOUR CONNECTIONS -C---------------------------------------------------------------------- - IMPLICIT NONE - INTEGER ICODE,ICOL(2) - ICOL(1)=ICODE/10 - IF (ICOL(1).NE.0) ICOL(1)=ICOL(1)+500 - ICOL(2)=MOD(ICODE,10) - IF (ICOL(2).NE.0) ICOL(2)=ICOL(2)+500 - END - - SUBROUTINE HWURSC(NP,PP) -C RESCALES A SET OF NP (<21) 3-MOMENTA PP(1-3,*) IN -C THEIR CMF TO PUT PP ON MASS-SHELL AT MASSES PP(5,*) -C---------------------------------------------------------------------- - IMPLICIT NONE - INTEGER NP,IP,IT,NT - DOUBLE PRECISION PP(5,*),P(5,20),P2(20),M2(20),SP(5), - & TINY,FAC,ECM,DCM,EP,STEP,FRT,HWUSQR - DATA TINY,NT/1D-9,20/ - IF (NP.GT.20) CALL HWWARN('HWURSC',300+NP) -C--COMPUTE CM MOMENTUM - CALL HWVZRO(4,SP) - DO IP=1,NP - CALL HWVSUM(4,PP(1,IP),SP,SP) - ENDDO - CALL HWUMAS(SP) -C--BOOST TO CMF - DO IP=1,NP - CALL HWULOF(SP,PP(1,IP),P(1,IP)) - P2(IP)=P(1,IP)**2+P(2,IP)**2+P(3,IP)**2 - M2(IP)=P(5,IP)**2 - ENDDO -C--ITERATE RESCALING OF 3-MOMENTA - FAC=1D0 - DO IT=1,NT - ECM=0D0 - DCM=0D0 - DO IP=1,NP - EP=HWUSQR(M2(IP)+FAC*P2(IP)) - IF (EP.GT.0D0) THEN - ECM=ECM+EP - DCM=DCM+P2(IP)/EP - ENDIF - ENDDO - IF (DCM.EQ.0D0) CALL HWWARN('HWURSC',390) - STEP=2D0*(ECM-SP(5))/DCM - FAC=FAC-STEP - IF (ABS(STEP).LT.TINY) GOTO 100 - ENDDO -C--FAILED TO CONVERGE - CALL HWWARN('HWURSC',1) -C--CONVERGED: RESCALE 3-MOMENTA AND BOOST BACK - 100 IF (FAC.LT.0D0) CALL HWWARN('HWURSC',391) - FRT=SQRT(FAC) - DO IP=1,NP - CALL HWVSCA(3,FRT,P(1,IP),P(1,IP)) - P(4,IP)=SQRT(M2(IP)+FAC*P2(IP)) - CALL HWULOB(SP,P(1,IP),PP(1,IP)) - ENDDO - END diff --git a/Generators/Protos_i/CMakeLists.txt b/Generators/Protos_i/CMakeLists.txt deleted file mode 100644 index 08e14aec9c0462fe31da8fa9f3aba5c72dc0e18f..0000000000000000000000000000000000000000 --- a/Generators/Protos_i/CMakeLists.txt +++ /dev/null @@ -1,28 +0,0 @@ -################################################################################ -# Package: Protos_i -################################################################################ - -# Declare the package name: -atlas_subdir( Protos_i ) - -# Declare the package's dependencies: -atlas_depends_on_subdirs( PRIVATE - Generators/GeneratorFortranCommon ) - -# External dependencies: -find_package( Pythia6 ) - -# Remove the --as-needed linker flags: -atlas_disable_as_needed() - -# Component(s) in the package: -atlas_add_library( Protos_i - src/*.F - PUBLIC_HEADERS Protos_i - INCLUDE_DIRS ${PYTHIA6_INCLUDE_DIRS} - LINK_LIBRARIES ${PYTHIA6_LIBRARIES} GeneratorFortranCommonLib ) - -# Install files from the package: -atlas_install_joboptions( share/*.py ) -atlas_install_runtime( share/*.events share/*.dat ) - diff --git a/Generators/Protos_i/Protos_i/1HL.inc b/Generators/Protos_i/Protos_i/1HL.inc deleted file mode 100644 index e8f5741fc8a10fcb395ccd77681dd837350c50b7..0000000000000000000000000000000000000000 --- a/Generators/Protos_i/Protos_i/1HL.inc +++ /dev/null @@ -1,371 +0,0 @@ -1037 NUP=9 - - READ (lun,*,END=1237) nn1,XWGTUP,SCALUP - ISIGNWT=1 - IF (XWGTUP .LT. 0) ISIGNWT=-1 - -! Initial codes and initial partons - - READ (lun,*) IDB1 - IF (IDB1 .EQ. 25) NUP=NUP-2 - IF (ABS(IDB1) .EQ. 34) NUP=NUP-1 - IF (ABS(IDB1) .EQ. 134) NUP=NUP+3 - - i=1 - ISTUP(i)=-1 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i),Pz - PUP(3,i)=Pz - PUP(4,i)=ABS(Pz) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - - i=2 - ISTUP(i)=-1 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i),Pz - PUP(3,i)=Pz - PUP(4,i)=ABS(Pz) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - -! l2: Charged lepton from W/W' decay - - i=3 - id_L2=i - ISTUP(i)=1 - IF (IHRD .EQ. 38) THEN - MOTHUP(1,i)=NUP - ELSE - MOTHUP(1,i)=1 - MOTHUP(2,i)=2 - ENDIF - mf=0d0 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - IF (ABS(IDUP(i)) .EQ. 15) mf=mtau - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - CHL1=-SIGN(1,IDUP(i)) - -! Charged lepton from L1 decay - - i=i+1 - ISTUP(i)=1 - MOTHUP(1,i)=i+4 - IF (IDB1 .EQ. 25) MOTHUP(1,i)=i+2 - IF (ABS(IDB1) .EQ. 34) MOTHUP(1,i)=i+3 - IF (ABS(IDB1) .EQ. 134) MOTHUP(1,i)=i+7 - mf=0d0 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - IF (ABS(IDUP(i)) .EQ. 15) mf=mtau - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - - id_l=i - CHL=-SIGN(1,IDUP(i)) - IF ( (ABS(IDUP(i)) .EQ. 12) .OR. (ABS(IDUP(i)) .EQ. 14) - & .OR. (ABS(IDUP(i)) .EQ. 16) ) CHL=0 - -! N decay products and N - - IF ((ABS(IDB1) .EQ. 24) .OR. (IDB1 .EQ. 23)) THEN - -! -------- -! B1 = W,Z -! -------- - - i0=i+3 - DO i=i0-2,i0-1 - ISTUP(i)=1 - MOTHUP(1,i)=i0 - mf=0d0 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - IF (ABS(IDUP(i)) .EQ. 15) mf=mtau - IF (ABS(IDUP(i)) .EQ. 5) mf=mb - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - ENDDO - -! B1 - - i=i0 - id_VB=i0 - id_f1=i0-2 - id_f2=i0-1 - ISTUP(i)=2 - CHVB = IDUP(id_f1)+IDUP(id_f2) - IF (CHVB .EQ. 0) THEN - IDUP(i)=23 - ELSE - IDUP(i)=SIGN(24,CHVB) - ENDIF - MOTHUP(1,i)=i+1 - DO j=1,4 - PUP(j,i)=PUP(j,id_f1)+PUP(j,id_f2) - ENDDO - PUP(5,i)=SQRT(PUP(4,i)**2-PUP(1,i)**2-PUP(2,i)**2-PUP(3,i)**2) - -! L1 - - i=id_VB+1 - id_L1=i - ISTUP(i)=2 - CHL2 = CHVB+CHL - IF (CHL2 .EQ. 0) THEN - IDUP(i)=SIGN(18,IDUP(id_l)) - ELSE - PRINT *,'Wrong neutrino charge' - STOP - ENDIF - IF (IHRD .EQ. 38) THEN - MOTHUP(1,i)=NUP - ELSE - MOTHUP(1,i)=1 - MOTHUP(2,i)=2 - ENDIF - DO j=1,4 - PUP(j,i)=PUP(j,id_l)+PUP(j,id_VB) - ENDDO - PUP(5,i)=SQRT(PUP(4,i)**2-PUP(1,i)**2-PUP(2,i)**2-PUP(3,i)**2) - -! ------ -! B1 = H -! ------ - - ELSE IF (IDB1 .EQ. 25) THEN - - i=i+1 - id_VB=i - CHVB=0 - ISTUP(i)=1 - MOTHUP(1,i)=i+1 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - IF (ABS(IDUP(i)) .EQ. 25) mf=MH - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - -! L1 - - i=id_VB+1 - id_L1=i - ISTUP(i)=2 - CHL2 = CHVB+CHL - IF (CHL2 .EQ. 0) THEN - IDUP(i)=SIGN(18,IDUP(id_l)) - ELSE - PRINT *,'Wrong neutrino charge' - STOP - ENDIF - IF (IHRD .EQ. 38) THEN - MOTHUP(1,i)=NUP - ELSE - MOTHUP(1,i)=1 - MOTHUP(2,i)=2 - ENDIF - DO j=1,4 - PUP(j,i)=PUP(j,id_l)+PUP(j,id_VB) - ENDDO - PUP(5,i)=SQRT(PUP(4,i)**2-PUP(1,i)**2-PUP(2,i)**2-PUP(3,i)**2) - -! ------------- -! B1 = W' -> jj -! ------------- - - ELSE IF (ABS(IDB1) .EQ. 34) THEN - - i0=i+3 - id_f1=i0-2 - id_f2=i0-1 - DO i=i0-2,i0-1 - ISTUP(i)=1 - MOTHUP(1,i)=i0 - mf=0d0 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - ENDDO - CHVB = IDUP(id_f1)+IDUP(id_f2) - -! L1 - - i=i0 - id_L1=i - ISTUP(i)=2 - CHL2 = CHVB+CHL - IF (CHL2 .EQ. 0) THEN - IDUP(i)=SIGN(18,IDUP(id_l)) - ELSE - PRINT *,'Wrong neutrino charge' - STOP - ENDIF - IF (IHRD .EQ. 38) THEN - MOTHUP(1,i)=NUP - ELSE - MOTHUP(1,i)=1 - MOTHUP(2,i)=2 - ENDIF - DO j=1,4 - PUP(j,i)=PUP(j,id_l)+PUP(j,id_f1)+PUP(j,id_f2) - ENDDO - PUP(5,i)=SQRT(PUP(4,i)**2-PUP(1,i)**2-PUP(2,i)**2-PUP(3,i)**2) - -! ------------- -! B1 = W' -> tb -! ------------- - - ELSE - - i0=i+7 - -! b from N - - i=i+1 - id_b1=i - ISTUP(i)=1 - MOTHUP(1,i)=i0 - mf=0d0 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - IF (ABS(IDUP(i)) .EQ. 5) mf=mb - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - -! b from t - - i=i+1 - id_b2=i - ISTUP(i)=1 - MOTHUP(1,i)=i0-1 - mf=0d0 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - IF (ABS(IDUP(i)) .EQ. 5) mf=mb - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - -! W decay products - - DO i=i0-4,i0-3 - ISTUP(i)=1 - MOTHUP(1,i)=i0-2 - mf=0d0 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - IF (ABS(IDUP(i)) .EQ. 15) mf=mtau - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - ENDDO - -! W - - i=i0-2 - id_VB=i - id_f1=i0-4 - id_f2=i0-3 - ISTUP(i)=2 - CHVB = IDUP(id_f1)+IDUP(id_f2) - IF (CHVB .EQ. 0) THEN - PRINT *,'Wrong W charge' - STOP - ELSE - IDUP(i)=SIGN(24,CHVB) - ENDIF - MOTHUP(1,i)=i+1 - DO j=1,4 - PUP(j,i)=PUP(j,id_f1)+PUP(j,id_f2) - ENDDO - PUP(5,i)=SQRT(PUP(4,i)**2-PUP(1,i)**2-PUP(2,i)**2-PUP(3,i)**2) - -! t - - i=i+1 - ISTUP(i)=2 - MOTHUP(1,i)=i+1 - ICOLUP(1,i)=ICOLUP(1,id_b2) - ICOLUP(2,i)=ICOLUP(2,id_b2) - IDUP(i)=SIGN(6,IDUP(id_b2)) - DO j=1,4 - PUP(j,i)=PUP(j,id_b2)+PUP(j,id_VB) - ENDDO - PUP(5,i)=SQRT(PUP(4,i)**2-PUP(1,i)**2-PUP(2,i)**2-PUP(3,i)**2) - -! L1 - - i=i0 - id_L1=i - ISTUP(i)=2 - CHL2 = CHL+IDUP(i-4)+IDUP(i-3) - IF (CHL2 .EQ. 0) THEN - IDUP(i)=SIGN(18,IDUP(id_l)) - ELSE - PRINT *,'Wrong neutrino charge' - STOP - ENDIF - IF (IHRD .EQ. 38) THEN - MOTHUP(1,i)=NUP - ELSE - MOTHUP(1,i)=1 - MOTHUP(2,i)=2 - ENDIF - DO j=1,4 - PUP(j,i)=PUP(j,id_l)+PUP(j,id_b1)+PUP(j,id_b2)+PUP(j,id_VB) - ENDDO - PUP(5,i)=SQRT(PUP(4,i)**2-PUP(1,i)**2-PUP(2,i)**2-PUP(3,i)**2) - - ENDIF - -! Check - - IF ((IDUP(id_VB) .NE. IDB1) .AND. (ABS(IDB1) .LT. 34)) THEN - PRINT *,'Error in B1' - STOP - ENDIF - - IF (IHRD .NE. 38) RETURN - -! Finally, resonance - - i=id_L1+1 - IF (i .NE. NUP) THEN - PRINT *,'Reconstruction error' - STOP - ENDIF - ISTUP(i)=2 - CHVB = CHL1+CHL2 - IF (CHVB .EQ. 0) THEN - IDUP(i)=32 - ELSE - IDUP(i)=SIGN(34,CHVB) - ENDIF - MOTHUP(1,i)=1 - MOTHUP(2,i)=2 - DO j=1,4 - PUP(j,i)=PUP(j,id_L1)+PUP(j,id_L2) - ENDDO - PUP(5,i)=SQRT(PUP(4,i)**2-PUP(1,i)**2-PUP(2,i)**2-PUP(3,i)**2) - - RETURN - -1237 PRINT 10002,lun - NUP = 0 - RETURN - diff --git a/Generators/Protos_i/Protos_i/2HL.inc b/Generators/Protos_i/Protos_i/2HL.inc deleted file mode 100644 index 800eefcc0bbfcac3f5a19bfd070d5a2e46b737a4..0000000000000000000000000000000000000000 --- a/Generators/Protos_i/Protos_i/2HL.inc +++ /dev/null @@ -1,267 +0,0 @@ -1031 IF ((IHRD .GE. 31) .AND. (IHRD .LE. 33)) THEN - NUP=12 - ELSE - NUP=13 - ENDIF - - READ (lun,*,END=1231) nn1,XWGTUP,SCALUP - ISIGNWT=1 - IF (XWGTUP .LT. 0) ISIGNWT=-1 - -! Initial codes and initial partons - - READ (lun,*) IDB1,IDB2 - IF (IDB1 .EQ. 25) NUP=NUP-2 - IF (IDB2 .EQ. 25) NUP=NUP-2 - - i=1 - ISTUP(i)=-1 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i),Pz - PUP(3,i)=Pz - PUP(4,i)=ABS(Pz) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - - i=2 - ISTUP(i)=-1 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i),Pz - PUP(3,i)=Pz - PUP(4,i)=ABS(Pz) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - -! Charged lepton from L1 decay - - i=3 - ISTUP(i)=1 - MOTHUP(1,i)=i+4 - IF (IDB1 .EQ. 25) MOTHUP(1,i)=i+2 - mf=0d0 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - IF (ABS(IDUP(i)) .EQ. 15) mf=mtau - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - - id_l=i - CHL=-SIGN(1,IDUP(i)) - IF ( (ABS(IDUP(i)) .EQ. 12) .OR. (ABS(IDUP(i)) .EQ. 14) - & .OR. (ABS(IDUP(i)) .EQ. 16) ) CHL=0 - -! B1 decay products (if any) and B1 - - IF (IDB1 .NE. 25) THEN ! B1 = W,Z, decay products first - - i0=i+3 - DO i=i0-2,i0-1 - ISTUP(i)=1 - MOTHUP(1,i)=i0 - mf=0d0 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - IF (ABS(IDUP(i)) .EQ. 15) mf=mtau - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - ENDDO - -! B1 - - i=i0 - id_VB=i0 - id_f1=i0-2 - id_f2=i0-1 - ISTUP(i)=2 - CHVB = IDUP(id_f1)+IDUP(id_f2) - IF (CHVB .EQ. 0) THEN - IDUP(i)=23 - ELSE - IDUP(i)=SIGN(24,CHVB) - ENDIF - MOTHUP(1,i)=i+1 - DO j=1,4 - PUP(j,i)=PUP(j,id_f1)+PUP(j,id_f2) - ENDDO - PUP(5,i)=SQRT(PUP(4,i)**2-PUP(1,i)**2-PUP(2,i)**2-PUP(3,i)**2) - - ELSE ! B1 = H, no decay - - i=i+1 - id_VB=i - CHVB=0 - ISTUP(i)=1 - MOTHUP(1,i)=i+1 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - IF (ABS(IDUP(i)) .EQ. 25) mf=MH - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - - ENDIF - -! Check - - IF (IDUP(id_VB) .NE. IDB1) THEN - PRINT *,'Error in B2' - STOP - ENDIF - -! L1 - - i=id_VB+1 - id_L1=i - ISTUP(i)=2 - CHL1 = CHVB+CHL - IF (CHL1 .EQ. 0) THEN - IDUP(i)=SIGN(18,IDUP(id_l)) - ELSE - IDUP(i)=-SIGN(17,CHL1) - ENDIF - IF ((IHRD .GE. 31) .AND. (IHRD .LE. 33)) THEN - MOTHUP(1,i)=1 - MOTHUP(2,i)=2 - ELSE - MOTHUP(1,i)=NUP - ENDIF - DO j=1,4 - PUP(j,i)=PUP(j,id_l)+PUP(j,id_VB) - ENDDO - PUP(5,i)=SQRT(PUP(4,i)**2-PUP(1,i)**2-PUP(2,i)**2-PUP(3,i)**2) - -! Charged lepton from L2 decay - - i=i+1 - ISTUP(i)=1 - MOTHUP(1,i)=i+4 - IF (IDB2 .EQ. 25) MOTHUP(1,i)=i+2 - mf=0d0 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - IF (ABS(IDUP(i)) .EQ. 15) mf=mtau - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - - id_l=i - CHL=-SIGN(1,IDUP(i)) - IF ( (ABS(IDUP(i)) .EQ. 12) .OR. (ABS(IDUP(i)) .EQ. 14) - & .OR. (ABS(IDUP(i)) .EQ. 16) ) CHL=0 - -! B2 decay products (if any) and B2 - - IF (IDB2 .NE. 25) THEN ! B2 = W,Z, decay products first - - i0=i+3 - DO i=i0-2,i0-1 - ISTUP(i)=1 - MOTHUP(1,i)=i0 - mf=0d0 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - IF (ABS(IDUP(i)) .EQ. 15) mf=mtau - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - ENDDO - -! B2 - - i=i0 - id_VB=i0 - id_f1=i0-2 - id_f2=i0-1 - ISTUP(i)=2 - CHVB = IDUP(id_f1)+IDUP(id_f2) - IF (CHVB .EQ. 0) THEN - IDUP(i)=23 - ELSE - IDUP(i)=SIGN(24,CHVB) - ENDIF - MOTHUP(1,i)=i+1 - DO j=1,4 - PUP(j,i)=PUP(j,id_f1)+PUP(j,id_f2) - ENDDO - PUP(5,i)=SQRT(PUP(4,i)**2-PUP(1,i)**2-PUP(2,i)**2-PUP(3,i)**2) - - ELSE ! B1 = H, no decay - - i=i+1 - id_VB=i - CHVB=0 - ISTUP(i)=1 - MOTHUP(1,i)=i+1 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - IF (ABS(IDUP(i)) .EQ. 25) mf=MH - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - - ENDIF - -! Check - - IF (IDUP(id_VB) .NE. IDB2) THEN - PRINT *,'Error in B2' - STOP - ENDIF - -! L2 - - i=id_VB+1 - id_L2=i - ISTUP(i)=2 - CHL2 = CHVB+CHL - IF (CHL2 .EQ. 0) THEN - IDUP(i)=SIGN(18,IDUP(id_l)) - ELSE - IDUP(i)=-SIGN(17,CHL2) - ENDIF - IF ((IHRD .GE. 31) .AND. (IHRD .LE. 33)) THEN - MOTHUP(1,i)=1 - MOTHUP(2,i)=2 - ELSE - MOTHUP(1,i)=NUP - ENDIF - DO j=1,4 - PUP(j,i)=PUP(j,id_l)+PUP(j,id_VB) - ENDDO - PUP(5,i)=SQRT(PUP(4,i)**2-PUP(1,i)**2-PUP(2,i)**2-PUP(3,i)**2) - - IF ((IHRD .GE. 31) .AND. (IHRD .LE. 33)) RETURN - -! Resonance - - i=id_L2+1 - IF (i .NE. NUP) THEN - PRINT *,'Reconstruction error' - STOP - ENDIF - ISTUP(i)=2 - CHVB = CHL1+CHL2 - IF (CHVB .EQ. 0) THEN - IDUP(i)=32 - ELSE - IDUP(i)=SIGN(34,CHVB) - ENDIF - MOTHUP(1,i)=1 - MOTHUP(2,i)=2 - DO j=1,4 - PUP(j,i)=PUP(j,id_L1)+PUP(j,id_L2) - ENDDO - PUP(5,i)=SQRT(PUP(4,i)**2-PUP(1,i)**2-PUP(2,i)**2-PUP(3,i)**2) - - RETURN - -1231 PRINT 10002,lun - NUP = 0 - RETURN - diff --git a/Generators/Protos_i/Protos_i/BB.inc b/Generators/Protos_i/Protos_i/BB.inc deleted file mode 100644 index fd7ca8c852a51171f500df30a0fe9feebacfb506..0000000000000000000000000000000000000000 --- a/Generators/Protos_i/Protos_i/BB.inc +++ /dev/null @@ -1,351 +0,0 @@ -1052 NUP=20 - - READ (lun,*,END=1252) nn1,XWGTUP,SCALUP - ISIGNWT=1 - IF (XWGTUP .LT. 0) ISIGNWT=-1 - -! Initial codes and initial partons - - READ (lun,*) IDB1,IDB2 - IF (IDB1 .EQ. 23) NUP=NUP-4 - IF (IDB2 .EQ. 23) NUP=NUP-4 - IF (IDB1 .EQ. 25) NUP=NUP-6 - IF (IDB2 .EQ. 25) NUP=NUP-6 - - i=1 - ISTUP(i)=-1 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i),Pz - PUP(3,i)=Pz - PUP(4,i)=ABS(Pz) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - - i=2 - ISTUP(i)=-1 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i),Pz - PUP(3,i)=Pz - PUP(4,i)=ABS(Pz) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - -! Set pointers for first heavy quark - - id_HQ=3 - id_b=5 - IF (ABS(IDB1) .EQ. 24) THEN - id_Qt=id_b+4 - num_Qt=6 - ELSE - id_Qt=id_HQ - num_Qt=7 - ENDIF - -! b quark - - i=id_b - ISTUP(i)=1 - MOTHUP(1,i)=id_Qt - mf=0d0 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - IF (ABS(IDUP(i)) .EQ. 5) mf=mb - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - - IF (IDB1 .NE. 25) THEN - -! W or Z decay products - - i0=i+3 - id_VB=i0 - DO i=i0-2,i0-1 - ISTUP(i)=1 - MOTHUP(1,i)=i0 - mf=0d0 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - IF (ABS(IDUP(i)) .EQ. 15) mf=mtau - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - ENDDO - -! W or Z - - i=i0 - id_f1=i0-2 - id_f2=i0-1 - ISTUP(i)=2 - CHVB = IDUP(id_f1)+IDUP(id_f2) - IF (CHVB .EQ. 0) THEN - IDUP(i)=23 - ELSE - IDUP(i)=SIGN(24,CHVB) - ENDIF - MOTHUP(1,i)=id_Qt - DO j=1,4 - PUP(j,i)=PUP(j,id_f1)+PUP(j,id_f2) - ENDDO - PUP(5,i)=SQRT(PUP(4,i)**2-PUP(1,i)**2-PUP(2,i)**2-PUP(3,i)**2) - - ELSE - -! Read H - - i0=i+1 - i=i0 - id_VB=i0 - ISTUP(i)=1 - MOTHUP(1,i)=id_HQ - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ABS(IDUP(i)) .EQ. 25) mf=MH - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - - ENDIF - -! B or t - - i=id_Qt - ISTUP(i)=2 - IDUP(i)=SIGN(num_Qt,IDUP(id_b)) - - IF (ABS(IDB1) .EQ. 24) THEN - MOTHUP(1,i)=id_HQ - ELSE - MOTHUP(1,i)=1 - MOTHUP(2,i)=2 - ENDIF - DO j=1,4 - PUP(j,i)=PUP(j,id_VB)+PUP(j,id_b) - ENDDO - PUP(5,i)=SQRT(PUP(4,i)**2-PUP(1,i)**2-PUP(2,i)**2-PUP(3,i)**2) - ICOLUP(1,i)=ICOLUP(1,id_b) - ICOLUP(2,i)=ICOLUP(2,id_b) - -! -------------------- -! Extra bosons, if any -! -------------------- - - IF (ABS(IDB1) .EQ. 24) THEN - -! Read one more W - - i0=i+3 - DO i=i0-2,i0-1 - ISTUP(i)=1 - MOTHUP(1,i)=i0 - mf=0d0 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - IF (ABS(IDUP(i)) .EQ. 15) mf=mtau - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - ENDDO - - i=i0 - id_f1=i0-2 - id_f2=i0-1 - ISTUP(i)=2 - CHVB = IDUP(id_f1)+IDUP(id_f2) - IF (CHVB .EQ. 0) THEN - IDUP(i)=23 - ELSE - IDUP(i)=SIGN(24,CHVB) - ENDIF - MOTHUP(1,i)=id_HQ - DO j=1,4 - PUP(j,i)=PUP(j,id_f1)+PUP(j,id_f2) - ENDDO - PUP(5,i)=SQRT(PUP(4,i)**2-PUP(1,i)**2-PUP(2,i)**2-PUP(3,i)**2) - -! B - - id_VB=i0 - i=id_HQ - ISTUP(i)=2 - IDUP(i)=SIGN(7,IDUP(id_Qt)) - MOTHUP(1,i)=1 - MOTHUP(2,i)=2 - DO j=1,4 - PUP(j,i)=PUP(j,id_VB)+PUP(j,id_Qt) - ENDDO - PUP(5,i)=SQRT(PUP(4,i)**2-PUP(1,i)**2-PUP(2,i)**2-PUP(3,i)**2) - ICOLUP(1,i)=ICOLUP(1,id_Qt) - ICOLUP(2,i)=ICOLUP(2,id_Qt) - - ENDIF - -! =============================================== - -! Set pointers for second heavy quark - - id_HQ=4 - id_b=i0+1 - IF (ABS(IDB2) .EQ. 24) THEN - id_Qt=id_b+4 - num_Qt=6 - ELSE - id_Qt=id_HQ - num_Qt=7 - ENDIF - -! b quark - - i=id_b - ISTUP(i)=1 - MOTHUP(1,i)=id_Qt - mf=0d0 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - IF (ABS(IDUP(i)) .EQ. 5) mf=mb - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - - IF (IDB2 .NE. 25) THEN - -! W or Z decay products - - i0=i+3 - id_VB=i0 - DO i=i0-2,i0-1 - ISTUP(i)=1 - MOTHUP(1,i)=i0 - mf=0d0 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - IF (ABS(IDUP(i)) .EQ. 15) mf=mtau - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - ENDDO - -! W or Z - - i=i0 - id_f1=i0-2 - id_f2=i0-1 - ISTUP(i)=2 - CHVB = IDUP(id_f1)+IDUP(id_f2) - IF (CHVB .EQ. 0) THEN - IDUP(i)=23 - ELSE - IDUP(i)=SIGN(24,CHVB) - ENDIF - MOTHUP(1,i)=id_Qt - DO j=1,4 - PUP(j,i)=PUP(j,id_f1)+PUP(j,id_f2) - ENDDO - PUP(5,i)=SQRT(PUP(4,i)**2-PUP(1,i)**2-PUP(2,i)**2-PUP(3,i)**2) - - ELSE - -! Read H - - i0=i+1 - i=i0 - id_VB=i0 - ISTUP(i)=1 - MOTHUP(1,i)=id_HQ - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ABS(IDUP(i)) .EQ. 25) mf=MH - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - - ENDIF - -! B or t - - i=id_Qt - ISTUP(i)=2 - IDUP(i)=SIGN(num_Qt,IDUP(id_b)) - - IF (ABS(IDB2) .EQ. 24) THEN - MOTHUP(1,i)=id_HQ - ELSE - MOTHUP(1,i)=1 - MOTHUP(2,i)=2 - ENDIF - DO j=1,4 - PUP(j,i)=PUP(j,id_VB)+PUP(j,id_b) - ENDDO - PUP(5,i)=SQRT(PUP(4,i)**2-PUP(1,i)**2-PUP(2,i)**2-PUP(3,i)**2) - ICOLUP(1,i)=ICOLUP(1,id_b) - ICOLUP(2,i)=ICOLUP(2,id_b) - -! -------------------- -! Extra bosons, if any -! -------------------- - - IF (ABS(IDB2) .EQ. 24) THEN - -! Read one more W - - i0=i+3 - DO i=i0-2,i0-1 - ISTUP(i)=1 - MOTHUP(1,i)=i0 - mf=0d0 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - IF (ABS(IDUP(i)) .EQ. 15) mf=mtau - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - ENDDO - - i=i0 - id_f1=i0-2 - id_f2=i0-1 - ISTUP(i)=2 - CHVB = IDUP(id_f1)+IDUP(id_f2) - IF (CHVB .EQ. 0) THEN - IDUP(i)=23 - ELSE - IDUP(i)=SIGN(24,CHVB) - ENDIF - MOTHUP(1,i)=id_HQ - DO j=1,4 - PUP(j,i)=PUP(j,id_f1)+PUP(j,id_f2) - ENDDO - PUP(5,i)=SQRT(PUP(4,i)**2-PUP(1,i)**2-PUP(2,i)**2-PUP(3,i)**2) - -! B - - id_VB=i0 - i=id_HQ - ISTUP(i)=2 - IDUP(i)=SIGN(7,IDUP(id_Qt)) - MOTHUP(1,i)=1 - MOTHUP(2,i)=2 - DO j=1,4 - PUP(j,i)=PUP(j,id_VB)+PUP(j,id_Qt) - ENDDO - PUP(5,i)=SQRT(PUP(4,i)**2-PUP(1,i)**2-PUP(2,i)**2-PUP(3,i)**2) - ICOLUP(1,i)=ICOLUP(1,id_Qt) - ICOLUP(2,i)=ICOLUP(2,id_Qt) - - ENDIF - -! =============================================== - - RETURN - - -1252 PRINT 10002,lun - NUP = 0 - RETURN - - - diff --git a/Generators/Protos_i/Protos_i/Bj.inc b/Generators/Protos_i/Protos_i/Bj.inc deleted file mode 100644 index ecab3e0cf67066553fe3283915f8b5e86029a958..0000000000000000000000000000000000000000 --- a/Generators/Protos_i/Protos_i/Bj.inc +++ /dev/null @@ -1,210 +0,0 @@ -1063 IF (IHRD .EQ. 63) THEN - NUP=12 - NJET=1 - ELSE - NUP=13 - NJET=2 - ENDIF - - READ (lun,*,END=1263) nn1,XWGTUP,SCALUP - ISIGNWT=1 - IF (XWGTUP .LT. 0) ISIGNWT=-1 - -! Initial codes and initial partons - - READ (lun,*) IDB1 - IF (IDB1 .EQ. 23) NUP=NUP-4 - IF (IDB1 .EQ. 25) NUP=NUP-6 - - i=1 - ISTUP(i)=-1 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i),Pz - PUP(3,i)=Pz - PUP(4,i)=ABS(Pz) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - - i=2 - ISTUP(i)=-1 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i),Pz - PUP(3,i)=Pz - PUP(4,i)=ABS(Pz) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - -! Set pointers for first heavy quark - - id_HQ=3 - id_b=4 - IF (ABS(IDB1) .EQ. 24) THEN - id_Qt=id_b+4 - num_Qt=6 - ELSE - id_Qt=id_HQ - num_Qt=7 - ENDIF - -! b quark - - i=id_b - ISTUP(i)=1 - MOTHUP(1,i)=id_Qt - mf=0d0 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - IF (ABS(IDUP(i)) .EQ. 5) mf=mb - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - - IF (IDB1 .NE. 25) THEN - -! W or Z decay products - - i0=i+3 - id_VB=i0 - DO i=i0-2,i0-1 - ISTUP(i)=1 - MOTHUP(1,i)=i0 - mf=0d0 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - IF (ABS(IDUP(i)) .EQ. 15) mf=mtau - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - ENDDO - -! W or Z - - i=i0 - id_f1=i0-2 - id_f2=i0-1 - ISTUP(i)=2 - CHVB = IDUP(id_f1)+IDUP(id_f2) - IF (CHVB .EQ. 0) THEN - IDUP(i)=23 - ELSE - IDUP(i)=SIGN(24,CHVB) - ENDIF - MOTHUP(1,i)=id_Qt - DO j=1,4 - PUP(j,i)=PUP(j,id_f1)+PUP(j,id_f2) - ENDDO - PUP(5,i)=SQRT(PUP(4,i)**2-PUP(1,i)**2-PUP(2,i)**2-PUP(3,i)**2) - - ELSE - -! Read H - - i0=i+1 - i=i0 - id_VB=i0 - ISTUP(i)=1 - MOTHUP(1,i)=id_HQ - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ABS(IDUP(i)) .EQ. 25) mf=MH - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - - ENDIF - -! B or t - - i=id_Qt - ISTUP(i)=2 - IDUP(i)=SIGN(num_Qt,IDUP(id_b)) - - IF (ABS(IDB1) .EQ. 24) THEN - MOTHUP(1,i)=id_HQ - ELSE - MOTHUP(1,i)=1 - MOTHUP(2,i)=2 - ENDIF - DO j=1,4 - PUP(j,i)=PUP(j,id_VB)+PUP(j,id_b) - ENDDO - PUP(5,i)=SQRT(PUP(4,i)**2-PUP(1,i)**2-PUP(2,i)**2-PUP(3,i)**2) - ICOLUP(1,i)=ICOLUP(1,id_b) - ICOLUP(2,i)=ICOLUP(2,id_b) - -! -------------------- -! Extra bosons, if any -! -------------------- - - IF (ABS(IDB1) .EQ. 24) THEN - -! Read one more W - - i0=i+3 - DO i=i0-2,i0-1 - ISTUP(i)=1 - MOTHUP(1,i)=i0 - mf=0d0 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - IF (ABS(IDUP(i)) .EQ. 15) mf=mtau - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - ENDDO - - i=i0 - id_f1=i0-2 - id_f2=i0-1 - ISTUP(i)=2 - CHVB = IDUP(id_f1)+IDUP(id_f2) - IF (CHVB .EQ. 0) THEN - IDUP(i)=23 - ELSE - IDUP(i)=SIGN(24,CHVB) - ENDIF - MOTHUP(1,i)=id_HQ - DO j=1,4 - PUP(j,i)=PUP(j,id_f1)+PUP(j,id_f2) - ENDDO - PUP(5,i)=SQRT(PUP(4,i)**2-PUP(1,i)**2-PUP(2,i)**2-PUP(3,i)**2) - -! B - - id_VB=i0 - i=id_HQ - ISTUP(i)=2 - IDUP(i)=SIGN(7,IDUP(id_Qt)) - MOTHUP(1,i)=1 - MOTHUP(2,i)=2 - DO j=1,4 - PUP(j,i)=PUP(j,id_VB)+PUP(j,id_Qt) - ENDDO - PUP(5,i)=SQRT(PUP(4,i)**2-PUP(1,i)**2-PUP(2,i)**2-PUP(3,i)**2) - ICOLUP(1,i)=ICOLUP(1,id_Qt) - ICOLUP(2,i)=ICOLUP(2,id_Qt) - - ENDIF - -! =============================================== - - DO i=i0+1,i0+NJET - ISTUP(i)=1 - MOTHUP(1,i)=1 - MOTHUP(2,i)=2 - mf=0d0 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - IF (ABS(IDUP(i)) .EQ. 5) mf=mb - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - ENDDO - - RETURN - -1263 PRINT 10002,lun - NUP = 0 - RETURN - diff --git a/Generators/Protos_i/Protos_i/DD4l.inc b/Generators/Protos_i/Protos_i/DD4l.inc deleted file mode 100644 index e9e514335bc7fed214e1fd5b2f7f0ca93c1ac4b9..0000000000000000000000000000000000000000 --- a/Generators/Protos_i/Protos_i/DD4l.inc +++ /dev/null @@ -1,47 +0,0 @@ -1041 NUP=6 - - READ (lun,*,END=1241) nn1,XWGTUP,SCALUP - ISIGNWT=1 - IF (XWGTUP .LT. 0) ISIGNWT=-1 - -! Initial partons - - i=1 - ISTUP(i)=-1 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i),Pz - PUP(3,i)=Pz - PUP(4,i)=ABS(Pz) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - - i=2 - ISTUP(i)=-1 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i),Pz - PUP(3,i)=Pz - PUP(4,i)=ABS(Pz) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - -! Leptons - - i0=3 - DO i=i0,i0+3 - ISTUP(i)=1 - MOTHUP(1,i)=1 - MOTHUP(2,i)=2 - mf=0d0 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - IF (ABS(IDUP(i)) .EQ. 15) mf=mtau - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - ENDDO - - RETURN - -1241 PRINT 10002,lun - NUP = 0 - RETURN - diff --git a/Generators/Protos_i/Protos_i/Protos.inc b/Generators/Protos_i/Protos_i/Protos.inc deleted file mode 100644 index e31d4735770914295431819870adeb2374bd27b3..0000000000000000000000000000000000000000 --- a/Generators/Protos_i/Protos_i/Protos.inc +++ /dev/null @@ -1,10 +0,0 @@ -C Protos common block for Protos_i -c Nuno Castro (Sep 2010) - - INTEGER lun,IHRD - COMMON /PRdata/ lun,IHRD - REAL*8 PTbmax,IMATCH - COMMON /PRmatch/ PTbmax,IMATCH - INTEGER ISIGNWT - COMMON /PRinfo/ ISIGNWT - diff --git a/Generators/Protos_i/Protos_i/XX.inc b/Generators/Protos_i/Protos_i/XX.inc deleted file mode 100644 index f2e3df0a68f3c49c594c808755669a793bf81af9..0000000000000000000000000000000000000000 --- a/Generators/Protos_i/Protos_i/XX.inc +++ /dev/null @@ -1,244 +0,0 @@ -1053 NUP=18 - - READ (lun,*,END=1253) nn1,XWGTUP,SCALUP - ISIGNWT=1 - IF (XWGTUP .LT. 0) ISIGNWT=-1 - -! Initial codes and initial partons - - READ (lun,*) IDB1,IDB2 ! Not really used - - i=1 - ISTUP(i)=-1 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i),Pz - PUP(3,i)=Pz - PUP(4,i)=ABS(Pz) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - - i=2 - ISTUP(i)=-1 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i),Pz - PUP(3,i)=Pz - PUP(4,i)=ABS(Pz) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - -! Set pointers for first heavy quark - - id_b=3 - id_Qt=id_b+4 - num_Qt=6 - -! b quark - - i=id_b - ISTUP(i)=1 - MOTHUP(1,i)=id_Qt - mf=0d0 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - IF (ABS(IDUP(i)) .EQ. 5) mf=mb - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - -! W from top - - i0=i+3 - id_VB=i0 - DO i=i0-2,i0-1 - ISTUP(i)=1 - MOTHUP(1,i)=i0 - mf=0d0 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - IF (ABS(IDUP(i)) .EQ. 15) mf=mtau - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - ENDDO - - i=i0 - id_f1=i0-2 - id_f2=i0-1 - ISTUP(i)=2 - CHVB = IDUP(id_f1)+IDUP(id_f2) - IF (CHVB .EQ. 0) THEN - PRINT *,'No Z here!!!' - STOP -c IDUP(i)=23 - ELSE - IDUP(i)=SIGN(24,CHVB) - ENDIF - MOTHUP(1,i)=id_Qt - DO j=1,4 - PUP(j,i)=PUP(j,id_f1)+PUP(j,id_f2) - ENDDO - PUP(5,i)=SQRT(PUP(4,i)**2-PUP(1,i)**2-PUP(2,i)**2-PUP(3,i)**2) - -! t - - i=id_Qt - ISTUP(i)=2 - IDUP(i)=SIGN(num_Qt,IDUP(id_b)) - MOTHUP(1,i)=1 - MOTHUP(2,i)=2 - DO j=1,4 - PUP(j,i)=PUP(j,id_VB)+PUP(j,id_b) - ENDDO - PUP(5,i)=SQRT(PUP(4,i)**2-PUP(1,i)**2-PUP(2,i)**2-PUP(3,i)**2) - ICOLUP(1,i)=ICOLUP(1,id_b) - ICOLUP(2,i)=ICOLUP(2,id_b) - -! W from X - - i0=i+3 - DO i=i0-2,i0-1 - ISTUP(i)=1 - MOTHUP(1,i)=i0 - mf=0d0 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - IF (ABS(IDUP(i)) .EQ. 15) mf=mtau - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - ENDDO - - i=i0 - id_f1=i0-2 - id_f2=i0-1 - ISTUP(i)=2 - CHVB = IDUP(id_f1)+IDUP(id_f2) - IF (CHVB .EQ. 0) THEN - PRINT *,'No Z here!!!' - STOP -c IDUP(i)=23 - ELSE - IDUP(i)=SIGN(24,CHVB) - ENDIF - MOTHUP(1,i)=1 - MOTHUP(2,i)=2 - DO j=1,4 - PUP(j,i)=PUP(j,id_f1)+PUP(j,id_f2) - ENDDO - PUP(5,i)=SQRT(PUP(4,i)**2-PUP(1,i)**2-PUP(2,i)**2-PUP(3,i)**2) - -! =============================================== - -! Set pointers for second heavy quark - - id_b=i0+1 - id_Qt=id_b+4 - num_Qt=6 - -! b quark - - i=id_b - ISTUP(i)=1 - MOTHUP(1,i)=id_Qt - mf=0d0 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - IF (ABS(IDUP(i)) .EQ. 5) mf=mb - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - -! W from antitop - - i0=i+3 - id_VB=i0 - DO i=i0-2,i0-1 - ISTUP(i)=1 - MOTHUP(1,i)=i0 - mf=0d0 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - IF (ABS(IDUP(i)) .EQ. 15) mf=mtau - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - ENDDO - - i=i0 - id_f1=i0-2 - id_f2=i0-1 - ISTUP(i)=2 - CHVB = IDUP(id_f1)+IDUP(id_f2) - IF (CHVB .EQ. 0) THEN - PRINT *,'No Z here!!!' - STOP -c IDUP(i)=23 - ELSE - IDUP(i)=SIGN(24,CHVB) - ENDIF - MOTHUP(1,i)=id_Qt - DO j=1,4 - PUP(j,i)=PUP(j,id_f1)+PUP(j,id_f2) - ENDDO - PUP(5,i)=SQRT(PUP(4,i)**2-PUP(1,i)**2-PUP(2,i)**2-PUP(3,i)**2) - -! tbar - - i=id_Qt - ISTUP(i)=2 - IDUP(i)=SIGN(num_Qt,IDUP(id_b)) - MOTHUP(1,i)=1 - MOTHUP(2,i)=2 - DO j=1,4 - PUP(j,i)=PUP(j,id_VB)+PUP(j,id_b) - ENDDO - PUP(5,i)=SQRT(PUP(4,i)**2-PUP(1,i)**2-PUP(2,i)**2-PUP(3,i)**2) - ICOLUP(1,i)=ICOLUP(1,id_b) - ICOLUP(2,i)=ICOLUP(2,id_b) - -! W from X - - i0=i+3 - DO i=i0-2,i0-1 - ISTUP(i)=1 - MOTHUP(1,i)=i0 - mf=0d0 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - IF (ABS(IDUP(i)) .EQ. 15) mf=mtau - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - ENDDO - - i=i0 - id_f1=i0-2 - id_f2=i0-1 - ISTUP(i)=2 - CHVB = IDUP(id_f1)+IDUP(id_f2) - IF (CHVB .EQ. 0) THEN - PRINT *,'No Z here!!!' - STOP -c IDUP(i)=23 - ELSE - IDUP(i)=SIGN(24,CHVB) - ENDIF - MOTHUP(1,i)=1 - MOTHUP(2,i)=2 - DO j=1,4 - PUP(j,i)=PUP(j,id_f1)+PUP(j,id_f2) - ENDDO - PUP(5,i)=SQRT(PUP(4,i)**2-PUP(1,i)**2-PUP(2,i)**2-PUP(3,i)**2) - -! =============================================== - - RETURN - -1253 PRINT 10002,lun - NUP = 0 - RETURN - diff --git a/Generators/Protos_i/Protos_i/Xtj.inc b/Generators/Protos_i/Protos_i/Xtj.inc deleted file mode 100644 index ec5153d70574e81a1eb0f16e69828b79f8ffac22..0000000000000000000000000000000000000000 --- a/Generators/Protos_i/Protos_i/Xtj.inc +++ /dev/null @@ -1,228 +0,0 @@ -1069 NUP=16 - NJET=1 - - READ (lun,*,END=1269) nn1,XWGTUP,SCALUP - ISIGNWT=1 - IF (XWGTUP .LT. 0) ISIGNWT=-1 - -! Initial codes and initial partons - - READ (lun,*) IDB1 ! Not really used - - i=1 - ISTUP(i)=-1 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i),Pz - PUP(3,i)=Pz - PUP(4,i)=ABS(Pz) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - - i=2 - ISTUP(i)=-1 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i),Pz - PUP(3,i)=Pz - PUP(4,i)=ABS(Pz) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - -! Set pointers for first heavy quark - - id_b=3 - id_Qt=id_b+4 - num_Qt=6 - -! b quark - - i=id_b - ISTUP(i)=1 - MOTHUP(1,i)=id_Qt - mf=0d0 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - IF (ABS(IDUP(i)) .EQ. 5) mf=mb - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - -! W from top - - i0=i+3 - id_VB=i0 - DO i=i0-2,i0-1 - ISTUP(i)=1 - MOTHUP(1,i)=i0 - mf=0d0 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - IF (ABS(IDUP(i)) .EQ. 15) mf=mtau - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - ENDDO - - i=i0 - id_f1=i0-2 - id_f2=i0-1 - ISTUP(i)=2 - CHVB = IDUP(id_f1)+IDUP(id_f2) - IF (CHVB .EQ. 0) THEN - PRINT *,'No Z here!!!' - STOP -c IDUP(i)=23 - ELSE - IDUP(i)=SIGN(24,CHVB) - ENDIF - MOTHUP(1,i)=id_Qt - DO j=1,4 - PUP(j,i)=PUP(j,id_f1)+PUP(j,id_f2) - ENDDO - PUP(5,i)=SQRT(PUP(4,i)**2-PUP(1,i)**2-PUP(2,i)**2-PUP(3,i)**2) - -! t - - i=id_Qt - ISTUP(i)=2 - IDUP(i)=SIGN(num_Qt,IDUP(id_b)) - MOTHUP(1,i)=1 - MOTHUP(2,i)=2 - DO j=1,4 - PUP(j,i)=PUP(j,id_VB)+PUP(j,id_b) - ENDDO - PUP(5,i)=SQRT(PUP(4,i)**2-PUP(1,i)**2-PUP(2,i)**2-PUP(3,i)**2) - ICOLUP(1,i)=ICOLUP(1,id_b) - ICOLUP(2,i)=ICOLUP(2,id_b) - -! W from X - - i0=i+3 - DO i=i0-2,i0-1 - ISTUP(i)=1 - MOTHUP(1,i)=i0 - mf=0d0 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - IF (ABS(IDUP(i)) .EQ. 15) mf=mtau - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - ENDDO - - i=i0 - id_f1=i0-2 - id_f2=i0-1 - ISTUP(i)=2 - CHVB = IDUP(id_f1)+IDUP(id_f2) - IF (CHVB .EQ. 0) THEN - PRINT *,'No Z here!!!' - STOP -c IDUP(i)=23 - ELSE - IDUP(i)=SIGN(24,CHVB) - ENDIF - MOTHUP(1,i)=1 - MOTHUP(2,i)=2 - DO j=1,4 - PUP(j,i)=PUP(j,id_f1)+PUP(j,id_f2) - ENDDO - PUP(5,i)=SQRT(PUP(4,i)**2-PUP(1,i)**2-PUP(2,i)**2-PUP(3,i)**2) - -! =============================================== - -! Additional particles: top, jet - - id_b=i0+1 - id_Qt=i0+5 - num_Qt=6 - -! b quark - - i=id_b - ISTUP(i)=1 - MOTHUP(1,i)=id_Qt - mf=0d0 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - IF (ABS(IDUP(i)) .EQ. 5) mf=mb - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - -! W decay products - - i0=i+3 - id_VB=i0 - DO i=i0-2,i0-1 - ISTUP(i)=1 - MOTHUP(1,i)=i0 - mf=0d0 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - IF (ABS(IDUP(i)) .EQ. 15) mf=mtau - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - ENDDO - -! W - - i=i0 - id_f1=i0-2 - id_f2=i0-1 - ISTUP(i)=2 - CHVB = IDUP(id_f1)+IDUP(id_f2) - IF (CHVB .EQ. 0) THEN - PRINT *,'No Z here!!' - STOP - ELSE - IDUP(i)=SIGN(24,CHVB) - ENDIF - MOTHUP(1,i)=id_Qt - DO j=1,4 - PUP(j,i)=PUP(j,id_f1)+PUP(j,id_f2) - ENDDO - PUP(5,i)=SQRT(PUP(4,i)**2-PUP(1,i)**2-PUP(2,i)**2-PUP(3,i)**2) - -! t or tbar - - i=id_Qt - i0=id_Qt - ISTUP(i)=2 - IDUP(i)=SIGN(num_Qt,IDUP(id_b)) - - MOTHUP(1,i)=1 - MOTHUP(2,i)=2 - DO j=1,4 - PUP(j,i)=PUP(j,id_VB)+PUP(j,id_b) - ENDDO - PUP(5,i)=SQRT(PUP(4,i)**2-PUP(1,i)**2-PUP(2,i)**2-PUP(3,i)**2) - ICOLUP(1,i)=ICOLUP(1,id_b) - ICOLUP(2,i)=ICOLUP(2,id_b) - -! =============================================== - - DO i=i0+1,i0+NJET - ISTUP(i)=1 - MOTHUP(1,i)=1 - MOTHUP(2,i)=2 - mf=0d0 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - IF (ABS(IDUP(i)) .EQ. 5) mf=mb - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - ENDDO - - RETURN - - -1269 PRINT 10002,lun - NUP = 0 - RETURN - diff --git a/Generators/Protos_i/Protos_i/YY.inc b/Generators/Protos_i/Protos_i/YY.inc deleted file mode 100644 index a9f9ada854afe441ba10c2b89f34243e0cb6fb6b..0000000000000000000000000000000000000000 --- a/Generators/Protos_i/Protos_i/YY.inc +++ /dev/null @@ -1,145 +0,0 @@ -1054 NUP=10 - - READ (lun,*,END=1254) nn1,XWGTUP,SCALUP - ISIGNWT=1 - IF (XWGTUP .LT. 0) ISIGNWT=-1 - -! Initial codes and initial partons - - READ (lun,*) IDB1,IDB2 ! Not really used - - i=1 - ISTUP(i)=-1 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i),Pz - PUP(3,i)=Pz - PUP(4,i)=ABS(Pz) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - - i=2 - ISTUP(i)=-1 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i),Pz - PUP(3,i)=Pz - PUP(4,i)=ABS(Pz) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - -! Set pointers for first heavy quark - - id_b=3 - -! b quark - - i=id_b - ISTUP(i)=1 - MOTHUP(1,i)=1 - MOTHUP(2,i)=2 - mf=0d0 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - IF (ABS(IDUP(i)) .EQ. 5) mf=mb - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - -! W from Y - - i0=i+3 - id_VB=i0 - DO i=i0-2,i0-1 - ISTUP(i)=1 - MOTHUP(1,i)=i0 - mf=0d0 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - IF (ABS(IDUP(i)) .EQ. 15) mf=mtau - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - ENDDO - - i=i0 - id_f1=i0-2 - id_f2=i0-1 - ISTUP(i)=2 - CHVB = IDUP(id_f1)+IDUP(id_f2) - IF (CHVB .EQ. 0) THEN - PRINT *,'No Z here!!!' - STOP -c IDUP(i)=23 - ELSE - IDUP(i)=SIGN(24,CHVB) - ENDIF - MOTHUP(1,i)=1 - MOTHUP(2,i)=2 - DO j=1,4 - PUP(j,i)=PUP(j,id_f1)+PUP(j,id_f2) - ENDDO - PUP(5,i)=SQRT(PUP(4,i)**2-PUP(1,i)**2-PUP(2,i)**2-PUP(3,i)**2) - -! =============================================== - -! Set pointers for second heavy quark - - id_b=i0+1 - -! bbar - - i=id_b - ISTUP(i)=1 - MOTHUP(1,i)=1 - MOTHUP(2,i)=2 - mf=0d0 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - IF (ABS(IDUP(i)) .EQ. 5) mf=mb - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - -! W from Ybar - - i0=i+3 - id_VB=i0 - DO i=i0-2,i0-1 - ISTUP(i)=1 - MOTHUP(1,i)=i0 - mf=0d0 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - IF (ABS(IDUP(i)) .EQ. 15) mf=mtau - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - ENDDO - - i=i0 - id_f1=i0-2 - id_f2=i0-1 - ISTUP(i)=2 - CHVB = IDUP(id_f1)+IDUP(id_f2) - IF (CHVB .EQ. 0) THEN - PRINT *,'No Z here!!!' - STOP -c IDUP(i)=23 - ELSE - IDUP(i)=SIGN(24,CHVB) - ENDIF - MOTHUP(1,i)=1 - MOTHUP(2,i)=2 - DO j=1,4 - PUP(j,i)=PUP(j,id_f1)+PUP(j,id_f2) - ENDDO - PUP(5,i)=SQRT(PUP(4,i)**2-PUP(1,i)**2-PUP(2,i)**2-PUP(3,i)**2) - - RETURN - - -1254 PRINT 10002,lun - NUP = 0 - RETURN - diff --git a/Generators/Protos_i/Protos_i/Yj.inc b/Generators/Protos_i/Protos_i/Yj.inc deleted file mode 100644 index 6f2908edee1ba52e8a7731e6cac4bf5811b9a736..0000000000000000000000000000000000000000 --- a/Generators/Protos_i/Protos_i/Yj.inc +++ /dev/null @@ -1,110 +0,0 @@ -1065 IF (IHRD .EQ. 65) THEN - NUP=7 - NJET=1 - ELSE - NUP=8 - NJET=2 - ENDIF - - READ (lun,*,END=1265) nn1,XWGTUP,SCALUP - ISIGNWT=1 - IF (XWGTUP .LT. 0) ISIGNWT=-1 - -! Initial codes and initial partons - - READ (lun,*) IDB1 ! Not really used - - i=1 - ISTUP(i)=-1 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i),Pz - PUP(3,i)=Pz - PUP(4,i)=ABS(Pz) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - - i=2 - ISTUP(i)=-1 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i),Pz - PUP(3,i)=Pz - PUP(4,i)=ABS(Pz) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - -! Set pointers for first heavy quark - - id_b=3 - -! b quark - - i=id_b - ISTUP(i)=1 - MOTHUP(1,i)=1 - MOTHUP(2,i)=2 - mf=0d0 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - IF (ABS(IDUP(i)) .EQ. 5) mf=mb - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - -! W from Y - - i0=i+3 - id_VB=i0 - DO i=i0-2,i0-1 - ISTUP(i)=1 - MOTHUP(1,i)=i0 - mf=0d0 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - IF (ABS(IDUP(i)) .EQ. 15) mf=mtau - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - ENDDO - - i=i0 - id_f1=i0-2 - id_f2=i0-1 - ISTUP(i)=2 - CHVB = IDUP(id_f1)+IDUP(id_f2) - IF (CHVB .EQ. 0) THEN - PRINT *,'No Z here!!!' - STOP -c IDUP(i)=23 - ELSE - IDUP(i)=SIGN(24,CHVB) - ENDIF - MOTHUP(1,i)=1 - MOTHUP(2,i)=2 - DO j=1,4 - PUP(j,i)=PUP(j,id_f1)+PUP(j,id_f2) - ENDDO - PUP(5,i)=SQRT(PUP(4,i)**2-PUP(1,i)**2-PUP(2,i)**2-PUP(3,i)**2) - - -! =============================================== - - DO i=i0+1,i0+NJET - ISTUP(i)=1 - MOTHUP(1,i)=1 - MOTHUP(2,i)=2 - mf=0d0 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - IF (ABS(IDUP(i)) .EQ. 5) mf=mb - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - ENDDO - - RETURN - -1265 PRINT 10002,lun - NUP = 0 - RETURN - diff --git a/Generators/Protos_i/Protos_i/double_heavy_T.inc b/Generators/Protos_i/Protos_i/double_heavy_T.inc deleted file mode 100644 index bead4520f4421eae64328a98af67246d5ab61ad8..0000000000000000000000000000000000000000 --- a/Generators/Protos_i/Protos_i/double_heavy_T.inc +++ /dev/null @@ -1,372 +0,0 @@ -1051 NUP=12 - - READ (lun,*,END=1251) nn1,XWGTUP,SCALUP - ISIGNWT=1 - IF (XWGTUP .LT. 0) ISIGNWT=-1 - -! Initial codes and initial partons - - READ (lun,*) IDB1,IDB2 - IF (IDB1 .EQ. 23) NUP=NUP+4 - IF (IDB2 .EQ. 23) NUP=NUP+4 - IF (IDB1 .EQ. 25) NUP=NUP+2 - IF (IDB2 .EQ. 25) NUP=NUP+2 - - i=1 - ISTUP(i)=-1 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i),Pz - PUP(3,i)=Pz - PUP(4,i)=ABS(Pz) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - - i=2 - ISTUP(i)=-1 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i),Pz - PUP(3,i)=Pz - PUP(4,i)=ABS(Pz) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - -! Set pointers for first heavy quark - - id_HQ=3 - id_b=5 - IF (ABS(IDB1) .EQ. 24) THEN - id_Qt=id_HQ - num_Qt=8 - ELSE - id_Qt=id_b+4 - num_Qt=6 - ENDIF - -! b quark - - i=id_b - ISTUP(i)=1 - MOTHUP(1,i)=id_Qt - mf=0d0 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - IF (ABS(IDUP(i)) .EQ. 5) mf=mb - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - -! W+ decay products - - i0=i+3 - id_VB=i0 - DO i=i0-2,i0-1 - ISTUP(i)=1 - MOTHUP(1,i)=i0 - mf=0d0 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - IF (ABS(IDUP(i)) .EQ. 15) mf=mtau - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - ENDDO - -! W+ - - i=i0 - id_f1=i0-2 - id_f2=i0-1 - ISTUP(i)=2 - CHVB = IDUP(id_f1)+IDUP(id_f2) - IF (CHVB .EQ. 0) THEN - PRINT *,'No Z here!!' - STOP - ELSE - IDUP(i)=SIGN(24,CHVB) - ENDIF - MOTHUP(1,i)=id_Qt - DO j=1,4 - PUP(j,i)=PUP(j,id_f1)+PUP(j,id_f2) - ENDDO - PUP(5,i)=SQRT(PUP(4,i)**2-PUP(1,i)**2-PUP(2,i)**2-PUP(3,i)**2) - -! T or t - - i=id_Qt - ISTUP(i)=2 - IDUP(i)=SIGN(num_Qt,IDUP(id_b)) - - IF (ABS(IDB1) .EQ. 24) THEN - MOTHUP(1,i)=1 - MOTHUP(2,i)=2 - ELSE - MOTHUP(1,i)=id_HQ - ENDIF - DO j=1,4 - PUP(j,i)=PUP(j,id_VB)+PUP(j,id_b) - ENDDO - PUP(5,i)=SQRT(PUP(4,i)**2-PUP(1,i)**2-PUP(2,i)**2-PUP(3,i)**2) - ICOLUP(1,i)=ICOLUP(1,id_b) - ICOLUP(2,i)=ICOLUP(2,id_b) - -! -------------------- -! Extra bosons, if any -! -------------------- - - IF (IDB1 .EQ. 23) THEN - -! Read Z - - i0=i+3 - DO i=i0-2,i0-1 - ISTUP(i)=1 - MOTHUP(1,i)=i0 - mf=0d0 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - IF (ABS(IDUP(i)) .EQ. 15) mf=mtau - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - ENDDO - - i=i0 - id_f1=i0-2 - id_f2=i0-1 - ISTUP(i)=2 - CHVB = IDUP(id_f1)+IDUP(id_f2) - IF (CHVB .EQ. 0) THEN - IDUP(i)=23 - ELSE - PRINT *,'No W here!!' - STOP - ENDIF - MOTHUP(1,i)=id_HQ - DO j=1,4 - PUP(j,i)=PUP(j,id_f1)+PUP(j,id_f2) - ENDDO - PUP(5,i)=SQRT(PUP(4,i)**2-PUP(1,i)**2-PUP(2,i)**2-PUP(3,i)**2) - -! T - - id_VB=i0 - i=id_HQ - ISTUP(i)=2 - IDUP(i)=SIGN(8,IDUP(id_Qt)) - MOTHUP(1,i)=1 - MOTHUP(2,i)=2 - DO j=1,4 - PUP(j,i)=PUP(j,id_VB)+PUP(j,id_Qt) - ENDDO - PUP(5,i)=SQRT(PUP(4,i)**2-PUP(1,i)**2-PUP(2,i)**2-PUP(3,i)**2) - ICOLUP(1,i)=ICOLUP(1,id_Qt) - ICOLUP(2,i)=ICOLUP(2,id_Qt) - - ELSE IF (IDB1 .EQ. 25) THEN - -! Read H - - i0=i+1 - i=i0 - ISTUP(i)=1 - MOTHUP(1,i)=id_HQ - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ABS(IDUP(i)) .EQ. 25) mf=MH - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - -! T - - id_VB=i0 - i=id_HQ - ISTUP(i)=2 - IDUP(i)=SIGN(8,IDUP(id_Qt)) - MOTHUP(1,i)=1 - MOTHUP(2,i)=2 - DO j=1,4 - PUP(j,i)=PUP(j,id_VB)+PUP(j,id_Qt) - ENDDO - PUP(5,i)=SQRT(PUP(4,i)**2-PUP(1,i)**2-PUP(2,i)**2-PUP(3,i)**2) - ICOLUP(1,i)=ICOLUP(1,id_Qt) - ICOLUP(2,i)=ICOLUP(2,id_Qt) - - ENDIF - -! =============================================== - -! Set pointers for second heavy quark - - id_HQ=4 - id_b=i0+1 - IF (ABS(IDB2) .EQ. 24) THEN - id_Qt=id_HQ - num_Qt=8 - ELSE - id_Qt=id_b+4 - num_Qt=6 - ENDIF - -! b quark - - i=id_b - ISTUP(i)=1 - MOTHUP(1,i)=id_Qt - mf=0d0 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - IF (ABS(IDUP(i)) .EQ. 5) mf=mb - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - -! W+ decay products - - i0=i+3 - id_VB=i0 - DO i=i0-2,i0-1 - ISTUP(i)=1 - MOTHUP(1,i)=i0 - mf=0d0 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - IF (ABS(IDUP(i)) .EQ. 15) mf=mtau - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - ENDDO - -! W+ - - i=i0 - id_f1=i0-2 - id_f2=i0-1 - ISTUP(i)=2 - CHVB = IDUP(id_f1)+IDUP(id_f2) - IF (CHVB .EQ. 0) THEN - PRINT *,'No Z here!!' - STOP - ELSE - IDUP(i)=SIGN(24,CHVB) - ENDIF - MOTHUP(1,i)=id_Qt - DO j=1,4 - PUP(j,i)=PUP(j,id_f1)+PUP(j,id_f2) - ENDDO - PUP(5,i)=SQRT(PUP(4,i)**2-PUP(1,i)**2-PUP(2,i)**2-PUP(3,i)**2) - -! Tbar or tbar - - i=id_Qt - ISTUP(i)=2 - IDUP(i)=SIGN(num_Qt,IDUP(id_b)) - - IF (ABS(IDB2) .EQ. 24) THEN - MOTHUP(1,i)=1 - MOTHUP(2,i)=2 - ELSE - MOTHUP(1,i)=id_HQ - ENDIF - DO j=1,4 - PUP(j,i)=PUP(j,id_VB)+PUP(j,id_b) - ENDDO - PUP(5,i)=SQRT(PUP(4,i)**2-PUP(1,i)**2-PUP(2,i)**2-PUP(3,i)**2) - ICOLUP(1,i)=ICOLUP(1,id_b) - ICOLUP(2,i)=ICOLUP(2,id_b) - -! -------------------- -! Extra bosons, if any -! -------------------- - - IF (IDB2 .EQ. 23) THEN - -! Read Z - - i0=i+3 - DO i=i0-2,i0-1 - ISTUP(i)=1 - MOTHUP(1,i)=i0 - mf=0d0 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - IF (ABS(IDUP(i)) .EQ. 15) mf=mtau - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - ENDDO - - i=i0 - id_f1=i0-2 - id_f2=i0-1 - ISTUP(i)=2 - CHVB = IDUP(id_f1)+IDUP(id_f2) - IF (CHVB .EQ. 0) THEN - IDUP(i)=23 - ELSE - PRINT *,'No W here!!' - STOP - ENDIF - MOTHUP(1,i)=id_HQ - DO j=1,4 - PUP(j,i)=PUP(j,id_f1)+PUP(j,id_f2) - ENDDO - PUP(5,i)=SQRT(PUP(4,i)**2-PUP(1,i)**2-PUP(2,i)**2-PUP(3,i)**2) - -! Tbar - - id_VB=i0 - i=id_HQ - ISTUP(i)=2 - IDUP(i)=SIGN(8,IDUP(id_Qt)) - MOTHUP(1,i)=1 - MOTHUP(2,i)=2 - DO j=1,4 - PUP(j,i)=PUP(j,id_VB)+PUP(j,id_Qt) - ENDDO - PUP(5,i)=SQRT(PUP(4,i)**2-PUP(1,i)**2-PUP(2,i)**2-PUP(3,i)**2) - ICOLUP(1,i)=ICOLUP(1,id_Qt) - ICOLUP(2,i)=ICOLUP(2,id_Qt) - - ELSE IF (IDB2 .EQ. 25) THEN - -! Read H - - i0=i+1 - i=i0 - ISTUP(i)=1 - MOTHUP(1,i)=id_HQ - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ABS(IDUP(i)) .EQ. 25) mf=MH - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - -! Tbar - - id_VB=i0 - i=id_HQ - ISTUP(i)=2 - IDUP(i)=SIGN(8,IDUP(id_Qt)) - MOTHUP(1,i)=1 - MOTHUP(2,i)=2 - DO j=1,4 - PUP(j,i)=PUP(j,id_VB)+PUP(j,id_Qt) - ENDDO - PUP(5,i)=SQRT(PUP(4,i)**2-PUP(1,i)**2-PUP(2,i)**2-PUP(3,i)**2) - ICOLUP(1,i)=ICOLUP(1,id_Qt) - ICOLUP(2,i)=ICOLUP(2,id_Qt) - - ENDIF - -! =============================================== - - RETURN - -1251 PRINT 10002,lun - NUP = 0 - RETURN - diff --git a/Generators/Protos_i/Protos_i/heavy_Tj.inc b/Generators/Protos_i/Protos_i/heavy_Tj.inc deleted file mode 100644 index 4fbf79b1e193e08c1b7d00571ea8fc85480c6c6e..0000000000000000000000000000000000000000 --- a/Generators/Protos_i/Protos_i/heavy_Tj.inc +++ /dev/null @@ -1,304 +0,0 @@ -1061 IF (IHRD .EQ. 61) THEN - NUP=8 - NJET=1 - ELSE IF (IHRD .EQ. 62) THEN - NUP=9 - NJET=2 - ELSE IF (IHRD .EQ. 67) THEN - NUP=13 - NJET=1 - ENDIF - - READ (lun,*,END=1261) nn1,XWGTUP,SCALUP - ISIGNWT=1 - IF (XWGTUP .LT. 0) ISIGNWT=-1 - -! Initial codes and initial partons - - READ (lun,*) IDB1 - IF (IDB1 .EQ. 23) NUP=NUP+4 - IF (IDB1 .EQ. 25) NUP=NUP+2 - - i=1 - ISTUP(i)=-1 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i),Pz - PUP(3,i)=Pz - PUP(4,i)=ABS(Pz) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - - i=2 - ISTUP(i)=-1 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i),Pz - PUP(3,i)=Pz - PUP(4,i)=ABS(Pz) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - -! Set pointers for first heavy quark - - id_HQ=3 - id_b=4 - IF (ABS(IDB1) .EQ. 24) THEN - id_Qt=id_HQ - num_Qt=8 - ELSE - id_Qt=id_b+4 - num_Qt=6 - ENDIF - -! b quark - - i=id_b - ISTUP(i)=1 - MOTHUP(1,i)=id_Qt - mf=0d0 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - IF (ABS(IDUP(i)) .EQ. 5) mf=mb - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - -! W+ decay products - - i0=i+3 - id_VB=i0 - DO i=i0-2,i0-1 - ISTUP(i)=1 - MOTHUP(1,i)=i0 - mf=0d0 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - IF (ABS(IDUP(i)) .EQ. 15) mf=mtau - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - ENDDO - -! W+ - - i=i0 - id_f1=i0-2 - id_f2=i0-1 - ISTUP(i)=2 - CHVB = IDUP(id_f1)+IDUP(id_f2) - IF (CHVB .EQ. 0) THEN - PRINT *,'No Z here!!' - STOP - ELSE - IDUP(i)=SIGN(24,CHVB) - ENDIF - MOTHUP(1,i)=id_Qt - DO j=1,4 - PUP(j,i)=PUP(j,id_f1)+PUP(j,id_f2) - ENDDO - PUP(5,i)=SQRT(PUP(4,i)**2-PUP(1,i)**2-PUP(2,i)**2-PUP(3,i)**2) - -! T or t - - i=id_Qt - ISTUP(i)=2 - IDUP(i)=SIGN(num_Qt,IDUP(id_b)) - - IF (ABS(IDB1) .EQ. 24) THEN - MOTHUP(1,i)=1 - MOTHUP(2,i)=2 - ELSE - MOTHUP(1,i)=id_HQ - ENDIF - DO j=1,4 - PUP(j,i)=PUP(j,id_VB)+PUP(j,id_b) - ENDDO - PUP(5,i)=SQRT(PUP(4,i)**2-PUP(1,i)**2-PUP(2,i)**2-PUP(3,i)**2) - ICOLUP(1,i)=ICOLUP(1,id_b) - ICOLUP(2,i)=ICOLUP(2,id_b) - -! -------------------- -! Extra bosons, if any -! -------------------- - - IF (IDB1 .EQ. 23) THEN - -! Read Z - - i0=i+3 - DO i=i0-2,i0-1 - ISTUP(i)=1 - MOTHUP(1,i)=i0 - mf=0d0 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - IF (ABS(IDUP(i)) .EQ. 15) mf=mtau - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - ENDDO - - i=i0 - id_f1=i0-2 - id_f2=i0-1 - ISTUP(i)=2 - CHVB = IDUP(id_f1)+IDUP(id_f2) - IF (CHVB .EQ. 0) THEN - IDUP(i)=23 - ELSE - PRINT *,'No W here!!' - STOP - ENDIF - MOTHUP(1,i)=id_HQ - DO j=1,4 - PUP(j,i)=PUP(j,id_f1)+PUP(j,id_f2) - ENDDO - PUP(5,i)=SQRT(PUP(4,i)**2-PUP(1,i)**2-PUP(2,i)**2-PUP(3,i)**2) - -! T - - id_VB=i0 - i=id_HQ - ISTUP(i)=2 - IDUP(i)=SIGN(8,IDUP(id_Qt)) - MOTHUP(1,i)=1 - MOTHUP(2,i)=2 - DO j=1,4 - PUP(j,i)=PUP(j,id_VB)+PUP(j,id_Qt) - ENDDO - PUP(5,i)=SQRT(PUP(4,i)**2-PUP(1,i)**2-PUP(2,i)**2-PUP(3,i)**2) - ICOLUP(1,i)=ICOLUP(1,id_Qt) - ICOLUP(2,i)=ICOLUP(2,id_Qt) - - ELSE IF (IDB1 .EQ. 25) THEN - -! Read H - - i0=i+1 - i=i0 - ISTUP(i)=1 - MOTHUP(1,i)=id_HQ - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ABS(IDUP(i)) .EQ. 25) mf=MH - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - -! T - - id_VB=i0 - i=id_HQ - ISTUP(i)=2 - IDUP(i)=SIGN(8,IDUP(id_Qt)) - MOTHUP(1,i)=1 - MOTHUP(2,i)=2 - DO j=1,4 - PUP(j,i)=PUP(j,id_VB)+PUP(j,id_Qt) - ENDDO - PUP(5,i)=SQRT(PUP(4,i)**2-PUP(1,i)**2-PUP(2,i)**2-PUP(3,i)**2) - ICOLUP(1,i)=ICOLUP(1,id_Qt) - ICOLUP(2,i)=ICOLUP(2,id_Qt) - - ENDIF - -! =============================================== - -! Additional particles: jet, b, top - - IF (IHRD .EQ. 67) THEN - - id_b=i0+1 - id_Qt=i0+5 - num_Qt=6 - -! b quark - - i=id_b - ISTUP(i)=1 - MOTHUP(1,i)=id_Qt - mf=0d0 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - IF (ABS(IDUP(i)) .EQ. 5) mf=mb - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - -! W decay products - - i0=i+3 - id_VB=i0 - DO i=i0-2,i0-1 - ISTUP(i)=1 - MOTHUP(1,i)=i0 - mf=0d0 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - IF (ABS(IDUP(i)) .EQ. 15) mf=mtau - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - ENDDO - -! W - - i=i0 - id_f1=i0-2 - id_f2=i0-1 - ISTUP(i)=2 - CHVB = IDUP(id_f1)+IDUP(id_f2) - IF (CHVB .EQ. 0) THEN - PRINT *,'No Z here!!' - STOP - ELSE - IDUP(i)=SIGN(24,CHVB) - ENDIF - MOTHUP(1,i)=id_Qt - DO j=1,4 - PUP(j,i)=PUP(j,id_f1)+PUP(j,id_f2) - ENDDO - PUP(5,i)=SQRT(PUP(4,i)**2-PUP(1,i)**2-PUP(2,i)**2-PUP(3,i)**2) - -! t or tbar - - i=id_Qt - i0=id_Qt - ISTUP(i)=2 - IDUP(i)=SIGN(num_Qt,IDUP(id_b)) - - MOTHUP(1,i)=1 - MOTHUP(2,i)=2 - DO j=1,4 - PUP(j,i)=PUP(j,id_VB)+PUP(j,id_b) - ENDDO - PUP(5,i)=SQRT(PUP(4,i)**2-PUP(1,i)**2-PUP(2,i)**2-PUP(3,i)**2) - ICOLUP(1,i)=ICOLUP(1,id_b) - ICOLUP(2,i)=ICOLUP(2,id_b) - - ENDIF - -! =============================================== - - DO i=i0+1,i0+NJET - ISTUP(i)=1 - MOTHUP(1,i)=1 - MOTHUP(2,i)=2 - mf=0d0 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - IF (ABS(IDUP(i)) .EQ. 5) mf=mb - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - ENDDO - - RETURN - - -1261 PRINT 10002,lun - NUP = 0 - RETURN - diff --git a/Generators/Protos_i/Protos_i/tW.inc b/Generators/Protos_i/Protos_i/tW.inc deleted file mode 100644 index b4cd8ac4a8ee76a099e40e4d74dae0c8d421e845..0000000000000000000000000000000000000000 --- a/Generators/Protos_i/Protos_i/tW.inc +++ /dev/null @@ -1,153 +0,0 @@ -1006 IF ((IHRD .EQ. 6) .OR. (IHRD .EQ. 10)) THEN - NUP=10 - NJET=0 - ELSE IF (IHRD .EQ. 7) THEN - NUP=11 - NJET=1 - ENDIF - - READ (lun,*,END=1206) nn1,XWGTUP,SCALUP - ISIGNWT=1 - IF (XWGTUP .LT. 0) ISIGNWT=-1 - -! Initial partons - - i=1 - ISTUP(i)=-1 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i),Pz - PUP(3,i)=Pz - PUP(4,i)=ABS(Pz) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - - i=2 - ISTUP(i)=-1 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i),Pz - PUP(3,i)=Pz - PUP(4,i)=ABS(Pz) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - -! W1 decay products - - i0=5 - DO i=i0-2,i0-1 - ISTUP(i)=1 - MOTHUP(1,i)=i0 - mf=0d0 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - IF (ABS(IDUP(i)) .EQ. 15) mf=mtau - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - ENDDO - -! W1 - - i=i0 - id_f1=i0-2 - id_f2=i0-1 - ISTUP(i)=2 - CHVB = IDUP(id_f1)+IDUP(id_f2) - IF (CHVB .EQ. 0) THEN ! No Z bosons should be here -c IDUP(i)=23 - PRINT *,'No Z bosons should be here: ERROR' - STOP - ELSE - IDUP(i)=SIGN(24,CHVB) - ENDIF - MOTHUP(1,i)=i+2 - DO j=1,4 - PUP(j,i)=PUP(j,id_f1)+PUP(j,id_f2) - ENDDO - PUP(5,i)=SQRT(PUP(4,i)**2-PUP(1,i)**2-PUP(2,i)**2-PUP(3,i)**2) - -! b / bbar from t / tbar decay - - i=i0+1 - ISTUP(i)=1 - MOTHUP(1,i)=i+1 - mf=0d0 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - IF (ABS(IDUP(i)) .EQ. 5) mf=mb - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - -! t / tbar - - i=i+1 - id_VB=i-2 - id_q=i-1 - ISTUP(i)=2 - IDUP(i)=SIGN(6,IDUP(id_q)) - MOTHUP(1,i)=1 - MOTHUP(2,i)=2 - DO j=1,4 - PUP(j,i)=PUP(j,id_VB)+PUP(j,id_q) - ENDDO - PUP(5,i)=SQRT(PUP(4,i)**2-PUP(1,i)**2-PUP(2,i)**2-PUP(3,i)**2) - ICOLUP(1,i)=ICOLUP(1,id_q) - ICOLUP(2,i)=ICOLUP(2,id_q) - -! B2 ( = W,Z) decay products - - i0=i+3 - DO i=i0-2,i0-1 - ISTUP(i)=1 - MOTHUP(1,i)=i0 - mf=0d0 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - IF (ABS(IDUP(i)) .EQ. 15) mf=mtau - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - ENDDO - -! B2 - - i=i0 - id_f1=i0-2 - id_f2=i0-1 - ISTUP(i)=2 - CHVB = IDUP(id_f1)+IDUP(id_f2) - IF (CHVB .EQ. 0) THEN - IDUP(i)=23 - ELSE - IDUP(i)=SIGN(24,CHVB) - ENDIF - MOTHUP(1,i)=1 - MOTHUP(2,i)=2 - DO j=1,4 - PUP(j,i)=PUP(j,id_f1)+PUP(j,id_f2) - ENDDO - PUP(5,i)=SQRT(PUP(4,i)**2-PUP(1,i)**2-PUP(2,i)**2-PUP(3,i)**2) - -! b / bbar extra, if any - - DO i=i0+1,i0+NJET - ISTUP(i)=1 - MOTHUP(1,i)=1 - MOTHUP(2,i)=2 - mf=0d0 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - IF (ABS(IDUP(i)) .EQ. 5) mf=mb - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - ENDDO - - RETURN - -1206 PRINT 10002,lun - NUP = 0 - RETURN - diff --git a/Generators/Protos_i/Protos_i/tfcn.inc b/Generators/Protos_i/Protos_i/tfcn.inc deleted file mode 100644 index 909ccb2a792776e6f378c26fb938feeac9c264c4..0000000000000000000000000000000000000000 --- a/Generators/Protos_i/Protos_i/tfcn.inc +++ /dev/null @@ -1,135 +0,0 @@ -1011 NUP=10 - - READ (lun,*,END=1211) nn1,XWGTUP,SCALUP - ISIGNWT=1 - IF (XWGTUP .LT. 0) ISIGNWT=-1 - -! Initial partons - - i=1 - ISTUP(i)=-1 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i),Pz - PUP(3,i)=Pz - PUP(4,i)=ABS(Pz) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - - i=2 - ISTUP(i)=-1 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i),Pz - PUP(3,i)=Pz - PUP(4,i)=ABS(Pz) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - -! W+ / W- decay products - - i0=5 - DO i=i0-2,i0-1 - ISTUP(i)=1 - MOTHUP(1,i)=i0 - mf=0d0 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - IF (ABS(IDUP(i)) .EQ. 15) mf=mtau - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - ENDDO - -! W+ / W- - - i=i0 - id_f1=i0-2 - id_f2=i0-1 - ISTUP(i)=2 - CHVB = IDUP(id_f1)+IDUP(id_f2) - IF (CHVB .EQ. 0) THEN ! No Z bosons should be here -c IDUP(i)=23 - PRINT *,'No Z bosons should be here: ERROR' - STOP - ELSE - IDUP(i)=SIGN(24,CHVB) - ENDIF - MOTHUP(1,i)=i+2 - DO j=1,4 - PUP(j,i)=PUP(j,id_f1)+PUP(j,id_f2) - ENDDO - PUP(5,i)=SQRT(PUP(4,i)**2-PUP(1,i)**2-PUP(2,i)**2-PUP(3,i)**2) - -! (anti)quark from top decay - should always be b(bar) quark - - i=i0+1 - ISTUP(i)=1 - MOTHUP(1,i)=i+1 - mf=0d0 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - IF (ABS(IDUP(i)) .EQ. 5) mf=mb - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - -! t / tbar decaying to Wb - - i=i+1 - id_VB=i-2 - id_q=i-1 - ISTUP(i)=2 - IDUP(i)=SIGN(6,IDUP(id_q)) - MOTHUP(1,i)=1 - MOTHUP(2,i)=2 - DO j=1,4 - PUP(j,i)=PUP(j,id_VB)+PUP(j,id_q) - ENDDO - PUP(5,i)=SQRT(PUP(4,i)**2-PUP(1,i)**2-PUP(2,i)**2-PUP(3,i)**2) - ICOLUP(1,i)=ICOLUP(1,id_q) - ICOLUP(2,i)=ICOLUP(2,id_q) - -! Photon/gluon/Higgs and light quark (in this order) - - i0=i+3 - DO i=i0-2,i0-1 - ISTUP(i)=1 - MOTHUP(1,i)=i0 - mf=0d0 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - IF (ABS(IDUP(i)) .EQ. 5) mf=mb - IF (ABS(IDUP(i)) .EQ. 25) mf=MH - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - ENDDO - -! t / tbar with FCN decay - - i=i0 - id_VB=i-2 - id_q=i-1 - ISTUP(i)=2 - IDUP(i)=SIGN(6,IDUP(id_q)) - MOTHUP(1,i)=1 - MOTHUP(2,i)=2 - DO j=1,4 - PUP(j,i)=PUP(j,id_VB)+PUP(j,id_q) - ENDDO - PUP(5,i)=SQRT(PUP(4,i)**2-PUP(1,i)**2-PUP(2,i)**2-PUP(3,i)**2) - IF ((IDUP(id_VB) .EQ. 22) .OR. (IDUP(id_VB) .EQ. 25)) THEN - ICOLUP(1,i)=ICOLUP(1,id_q) - ICOLUP(2,i)=ICOLUP(2,id_q) - ELSE IF (IDUP(id_q) .GT. 0) THEN - ICOLUP(1,i)=ICOLUP(1,id_VB) - ELSE IF (IDUP(id_q) .LT. 0) THEN - ICOLUP(2,i)=ICOLUP(2,id_VB) - ENDIF - - RETURN - -1211 PRINT 10002,lun - NUP = 0 - RETURN - diff --git a/Generators/Protos_i/Protos_i/tj.inc b/Generators/Protos_i/Protos_i/tj.inc deleted file mode 100644 index 35ecd483bb7c22d3b11c93175234d842d22cde20..0000000000000000000000000000000000000000 --- a/Generators/Protos_i/Protos_i/tj.inc +++ /dev/null @@ -1,132 +0,0 @@ -1003 IF (IHRD .EQ. 3) THEN - NUP=8 - NJET=1 - ELSE IF (IHRD .EQ. 4) THEN - NUP=9 - NJET=2 - ELSE IF (IHRD .EQ. 5) THEN - NUP=8 - NJET=1 - ELSE IF (IHRD .EQ. 12) THEN - NUP=8 - NJET=1 - ELSE IF (IHRD .EQ. 14) THEN - NUP=7 - NJET=0 - ELSE IF (IHRD .EQ. 16) THEN - NUP=8 - NJET=1 - ENDIF - - READ (lun,*,END=1203) nn1,XWGTUP,SCALUP - ISIGNWT=1 - IF (XWGTUP .LT. 0) ISIGNWT=-1 - -! Initial partons - - i=1 - ISTUP(i)=-1 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i),Pz - PUP(3,i)=Pz - PUP(4,i)=ABS(Pz) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - - i=2 - ISTUP(i)=-1 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i),Pz - PUP(3,i)=Pz - PUP(4,i)=ABS(Pz) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - -! W decay products - - i0=5 - DO i=i0-2,i0-1 - ISTUP(i)=1 - MOTHUP(1,i)=i0 - mf=0d0 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - IF (ABS(IDUP(i)) .EQ. 15) mf=mtau - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - ENDDO - -! W - - i=i0 - id_f1=i0-2 - id_f2=i0-1 - ISTUP(i)=2 - CHVB = IDUP(id_f1)+IDUP(id_f2) - IF (CHVB .EQ. 0) THEN ! No Z bosons should be here -c IDUP(i)=23 - PRINT *,'No Z bosons should be here: ERROR' - STOP - ELSE - IDUP(i)=SIGN(24,CHVB) - ENDIF - MOTHUP(1,i)=i+2 - DO j=1,4 - PUP(j,i)=PUP(j,id_f1)+PUP(j,id_f2) - ENDDO - PUP(5,i)=SQRT(PUP(4,i)**2-PUP(1,i)**2-PUP(2,i)**2-PUP(3,i)**2) - -! b / bbar from t / tbar decay - - i=i0+1 - ISTUP(i)=1 - MOTHUP(1,i)=i+1 - mf=0d0 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - IF (ABS(IDUP(i)) .EQ. 5) mf=mb - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - -! t / tbar - - i=i+1 - id_VB=i-2 - id_q=i-1 - ISTUP(i)=2 - IDUP(i)=SIGN(6,IDUP(id_q)) - MOTHUP(1,i)=1 - MOTHUP(2,i)=2 - DO j=1,4 - PUP(j,i)=PUP(j,id_VB)+PUP(j,id_q) - ENDDO - PUP(5,i)=SQRT(PUP(4,i)**2-PUP(1,i)**2-PUP(2,i)**2-PUP(3,i)**2) - ICOLUP(1,i)=ICOLUP(1,id_q) - ICOLUP(2,i)=ICOLUP(2,id_q) - -! Additional particles: light quarks, b quarks, photons, Higgs - - i0=i - DO i=i0+1,i0+NJET - ISTUP(i)=1 - MOTHUP(1,i)=1 - MOTHUP(2,i)=2 - mf=0d0 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - IF (ABS(IDUP(i)) .EQ. 5) mf=mb - IF (ABS(IDUP(i)) .EQ. 25) mf=MH - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - ENDDO - - RETURN - -1203 PRINT 10002,lun - NUP = 0 - RETURN - diff --git a/Generators/Protos_i/Protos_i/tt.inc b/Generators/Protos_i/Protos_i/tt.inc deleted file mode 100644 index 9b938c4b49da2d2f0c4efc3a05572479771f6478..0000000000000000000000000000000000000000 --- a/Generators/Protos_i/Protos_i/tt.inc +++ /dev/null @@ -1,158 +0,0 @@ -1008 NUP=12 - - READ (lun,*,END=1208) nn1,XWGTUP,SCALUP - ISIGNWT=1 - IF (XWGTUP .LT. 0) ISIGNWT=-1 - -! Initial partons - - i=1 - ISTUP(i)=-1 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i),Pz - PUP(3,i)=Pz - PUP(4,i)=ABS(Pz) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - - i=2 - ISTUP(i)=-1 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i),Pz - PUP(3,i)=Pz - PUP(4,i)=ABS(Pz) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - -! B1 ( = W,Z) decay products - - i0=5 - DO i=i0-2,i0-1 - ISTUP(i)=1 - MOTHUP(1,i)=i0 - mf=0d0 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - IF (ABS(IDUP(i)) .EQ. 15) mf=mtau - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - ENDDO - -! B1 - - i=i0 - id_f1=i0-2 - id_f2=i0-1 - ISTUP(i)=2 - CHVB = IDUP(id_f1)+IDUP(id_f2) - IF (CHVB .EQ. 0) THEN - IDUP(i)=23 - ELSE - IDUP(i)=SIGN(24,CHVB) - ENDIF - MOTHUP(1,i)=i+2 - DO j=1,4 - PUP(j,i)=PUP(j,id_f1)+PUP(j,id_f2) - ENDDO - PUP(5,i)=SQRT(PUP(4,i)**2-PUP(1,i)**2-PUP(2,i)**2-PUP(3,i)**2) - -! quark from top decay: b or q - - i=i0+1 - ISTUP(i)=1 - MOTHUP(1,i)=i+1 - mf=0d0 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - IF (ABS(IDUP(i)) .EQ. 5) mf=mb - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - -! t - - i=i+1 - id_VB=i-2 - id_q=i-1 - ISTUP(i)=2 - IDUP(i)=SIGN(6,IDUP(id_q)) - MOTHUP(1,i)=1 - MOTHUP(2,i)=2 - DO j=1,4 - PUP(j,i)=PUP(j,id_VB)+PUP(j,id_q) - ENDDO - PUP(5,i)=SQRT(PUP(4,i)**2-PUP(1,i)**2-PUP(2,i)**2-PUP(3,i)**2) - ICOLUP(1,i)=ICOLUP(1,id_q) - ICOLUP(2,i)=ICOLUP(2,id_q) - -! B2 ( = W,Z) decay products - - i0=i+3 - DO i=i0-2,i0-1 - ISTUP(i)=1 - MOTHUP(1,i)=i0 - mf=0d0 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - IF (ABS(IDUP(i)) .EQ. 15) mf=mtau - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - ENDDO - -! B2 - - i=i0 - id_f1=i0-2 - id_f2=i0-1 - ISTUP(i)=2 - CHVB = IDUP(id_f1)+IDUP(id_f2) - IF (CHVB .EQ. 0) THEN - IDUP(i)=23 - ELSE - IDUP(i)=SIGN(24,CHVB) - ENDIF - MOTHUP(1,i)=i+2 - DO j=1,4 - PUP(j,i)=PUP(j,id_f1)+PUP(j,id_f2) - ENDDO - PUP(5,i)=SQRT(PUP(4,i)**2-PUP(1,i)**2-PUP(2,i)**2-PUP(3,i)**2) - -! antiquark from top decay: bbar or qbar - - i=i0+1 - ISTUP(i)=1 - MOTHUP(1,i)=i+1 - mf=0d0 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - IF (ABS(IDUP(i)) .EQ. 5) mf=mb - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - -! tbar - - i=i+1 - id_VB=i-2 - id_q=i-1 - ISTUP(i)=2 - IDUP(i)=SIGN(6,IDUP(id_q)) - MOTHUP(1,i)=1 - MOTHUP(2,i)=2 - DO j=1,4 - PUP(j,i)=PUP(j,id_VB)+PUP(j,id_q) - ENDDO - PUP(5,i)=SQRT(PUP(4,i)**2-PUP(1,i)**2-PUP(2,i)**2-PUP(3,i)**2) - ICOLUP(1,i)=ICOLUP(1,id_q) - ICOLUP(2,i)=ICOLUP(2,id_q) - - RETURN - -1208 PRINT 10002,lun - NUP = 0 - RETURN - diff --git a/Generators/Protos_i/Protos_i/tt4f.inc b/Generators/Protos_i/Protos_i/tt4f.inc deleted file mode 100644 index fba0813536b37221485c24b40dfd95923c1e2453..0000000000000000000000000000000000000000 --- a/Generators/Protos_i/Protos_i/tt4f.inc +++ /dev/null @@ -1,128 +0,0 @@ -1017 NUP=11 - - READ (lun,*,END=1217) nn1,XWGTUP,SCALUP - ISIGNWT=1 - IF (XWGTUP .LT. 0) ISIGNWT=-1 - -! Initial partons - - i=1 - ISTUP(i)=-1 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i),Pz - PUP(3,i)=Pz - PUP(4,i)=ABS(Pz) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - - i=2 - ISTUP(i)=-1 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i),Pz - PUP(3,i)=Pz - PUP(4,i)=ABS(Pz) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - -! top with SM decay - - i0=5 - DO i=i0-2,i0-1 - ISTUP(i)=1 - MOTHUP(1,i)=i0 - mf=0d0 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - IF (ABS(IDUP(i)) .EQ. 15) mf=mtau - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - ENDDO - -! W+ / W- - - i=i0 - id_f1=i0-2 - id_f2=i0-1 - ISTUP(i)=2 - CHVB = IDUP(id_f1)+IDUP(id_f2) - IF (CHVB .EQ. 0) THEN - PRINT *,'Should be W' - STOP - ELSE - IDUP(i)=SIGN(24,CHVB) - ENDIF - MOTHUP(1,i)=i+2 - DO j=1,4 - PUP(j,i)=PUP(j,id_f1)+PUP(j,id_f2) - ENDDO - PUP(5,i)=SQRT(PUP(4,i)**2-PUP(1,i)**2-PUP(2,i)**2-PUP(3,i)**2) - -! b - - i=i0+1 - ISTUP(i)=1 - MOTHUP(1,i)=i+1 - mf=0d0 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - IF (ABS(IDUP(i)) .EQ. 5) mf=mb - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - -! t - - i=i+1 - id_VB=i-2 - id_q=i-1 - ISTUP(i)=2 - IDUP(i)=SIGN(6,IDUP(id_q)) - MOTHUP(1,i)=1 - MOTHUP(2,i)=2 - DO j=1,4 - PUP(j,i)=PUP(j,id_VB)+PUP(j,id_q) - ENDDO - PUP(5,i)=SQRT(PUP(4,i)**2-PUP(1,i)**2-PUP(2,i)**2-PUP(3,i)**2) - ICOLUP(1,i)=ICOLUP(1,id_q) - ICOLUP(2,i)=ICOLUP(2,id_q) - -! top with 3-body decay - - i0=i+4 - DO i=i0-3,i0-1 - ISTUP(i)=1 - MOTHUP(1,i)=i0 - mf=0d0 - READ (lun,*) IDUP(i),ICOLUP(1,i),ICOLUP(2,i), - & PUP(1,i),PUP(2,i),PUP(3,i) - IF (ICOLUP(1,i) .NE. 0) ICOLUP(1,i)=500+ICOLUP(1,i) - IF (ICOLUP(2,i) .NE. 0) ICOLUP(2,i)=500+ICOLUP(2,i) - IF (ABS(IDUP(i)) .EQ. 15) mf=mtau - PUP(5,i)=mf - PUP(4,i)=SQRT(PUP(5,i)**2+PUP(1,i)**2+PUP(2,i)**2+PUP(3,i)**2) - ENDDO - -! tbar - - i=i0 - id_f1=i0-3 - id_f2=i0-2 - id_q=i0-1 - ISTUP(i)=2 - IDUP(i)=SIGN(6,IDUP(id_q)) - MOTHUP(1,i)=1 - MOTHUP(2,i)=2 - DO j=1,4 - PUP(j,i)=PUP(j,id_f1)+PUP(j,id_f2)+PUP(j,id_q) - ENDDO - PUP(5,i)=SQRT(PUP(4,i)**2-PUP(1,i)**2-PUP(2,i)**2-PUP(3,i)**2) - ICOLUP(1,i)=ICOLUP(1,id_q) - ICOLUP(2,i)=ICOLUP(2,id_q) - - RETURN - -1217 PRINT 10002,lun - NUP = 0 - RETURN - diff --git a/Generators/Protos_i/share/jobOptions_Protos_MC10.py b/Generators/Protos_i/share/jobOptions_Protos_MC10.py deleted file mode 100644 index 57e904d4c4d907b883477f304bc66b7f6e8a9161..0000000000000000000000000000000000000000 --- a/Generators/Protos_i/share/jobOptions_Protos_MC10.py +++ /dev/null @@ -1,62 +0,0 @@ -############################################################### -# -# JOB OPTIONS FILE. THIS FILE IS TO DEMONSTRATE HOW THE USER CAN -# CHANGE THE PYTHIA PARAMETERS. IT DOES NOT NECESARILY COMPLY TO -# THE ATLAS DEFAULTS FOR PHYSICS EVENT GENERATION. -#============================================================== -#-------------------------------------------------------------- -# Private Application Configuration option -from AthenaCommon.AppMgr import ServiceMgr -ServiceMgr.MessageSvc.OutputLevel = DEBUG - -#-------------------------------------------------------------- -# Event related parameters -#-------------------------------------------------------------- -# Number of events to be processed (default is 10) -theApp.EvtMax = 10 -#-------------------------------------------------------------- -# Algorithms Private Options -#-------------------------------------------------------------- -from AthenaServices.AthenaServicesConf import AtRndmGenSvc -ServiceMgr += AtRndmGenSvc() -ServiceMgr.AtRndmGenSvc.Seeds = ["PYTHIA 4789899 989240512", -"PYTHIA_INIT 820021 2347532"] -# ServiceManager.AtRndmGenSvc.ReadFromFile = true; - - -#-------------------------------------------------------------- -# Private Application Configuration options -#-------------------------------------------------------------- - -from AthenaCommon.AlgSequence import AlgSequence -topAlg=AlgSequence("TopAlg") -#from Pythia_i.Pythia_iConf import Pythia - -include ( "MC10JobOptions/MC10_Pythia_Common.py" ) - -Pythia.PythiaCommand = ["pyinit user protos", - "pydat1 parj 90 20000.", - "pydat3 mdcy 15 1 0" -] - -# ... Tauola -include ( "MC10JobOptions/MC10_Tauola_Fragment.py" ) - -# ... Photos -include ( "MC10JobOptions/MC10_Photos_Fragment.py" ) - -#from TruthExamples.TruthExamplesConf import DumpMC -#topAlg += DumpMC() - -#--------------------------------------------------------------- -# Pool Persistency -#--------------------------------------------------------------- -from AthenaPoolCnvSvc.WriteAthenaPool import AthenaPoolOutputStream -Stream1 = AthenaPoolOutputStream( "StreamEVGEN" ) -Stream1.OutputFile = "protos.pool.root" -Stream1.ItemList += [ 'EventInfo#*', 'McEventCollection#*' ] - -# -# End of job options file -# -############################################################### diff --git a/Generators/Protos_i/share/jobOptions_Protos_MC9.py b/Generators/Protos_i/share/jobOptions_Protos_MC9.py deleted file mode 100644 index 1e9ae98139d26b61dc076c0ebe719902a69ed494..0000000000000000000000000000000000000000 --- a/Generators/Protos_i/share/jobOptions_Protos_MC9.py +++ /dev/null @@ -1,62 +0,0 @@ -############################################################### -# -# JOB OPTIONS FILE. THIS FILE IS TO DEMONSTRATE HOW THE USER CAN -# CHANGE THE PYTHIA PARAMETERS. IT DOES NOT NECESARILY COMPLY TO -# THE ATLAS DEFAULTS FOR PHYSICS EVENT GENERATION. -#============================================================== -#-------------------------------------------------------------- -# Private Application Configuration option -from AthenaCommon.AppMgr import ServiceMgr -ServiceMgr.MessageSvc.OutputLevel = DEBUG - -#-------------------------------------------------------------- -# Event related parameters -#-------------------------------------------------------------- -# Number of events to be processed (default is 10) -theApp.EvtMax = 10 -#-------------------------------------------------------------- -# Algorithms Private Options -#-------------------------------------------------------------- -from AthenaServices.AthenaServicesConf import AtRndmGenSvc -ServiceMgr += AtRndmGenSvc() -ServiceMgr.AtRndmGenSvc.Seeds = ["PYTHIA 4789899 989240512", -"PYTHIA_INIT 820021 2347532"] -# ServiceManager.AtRndmGenSvc.ReadFromFile = true; - - -#-------------------------------------------------------------- -# Private Application Configuration options -#-------------------------------------------------------------- - -from AthenaCommon.AlgSequence import AlgSequence -topAlg=AlgSequence("TopAlg") -#from Pythia_i.Pythia_iConf import Pythia - -include ( "MC09JobOptions/MC9_Pythia_Common.py" ) - -Pythia.PythiaCommand = ["pyinit user protos", - "pydat1 parj 90 20000.", - "pydat3 mdcy 15 1 0" -] - -# ... Tauola -include ( "MC09JobOptions/MC9_Tauola_Fragment.py" ) - -# ... Photos -include ( "MC09JobOptions/MC9_Photos_Fragment.py" ) - -#from TruthExamples.TruthExamplesConf import DumpMC -#topAlg += DumpMC() - -#--------------------------------------------------------------- -# Pool Persistency -#--------------------------------------------------------------- -from AthenaPoolCnvSvc.WriteAthenaPool import AthenaPoolOutputStream -Stream1 = AthenaPoolOutputStream( "StreamEVGEN" ) -Stream1.OutputFile = "protos.pool.root" -Stream1.ItemList += [ 'EventInfo#*', 'McEventCollection#*' ] - -# -# End of job options file -# -############################################################### diff --git a/Generators/Protos_i/share/protos.dat b/Generators/Protos_i/share/protos.dat deleted file mode 100644 index 46f6d8d6811120dcd885514fac8ada2ea21d0fd8..0000000000000000000000000000000000000000 --- a/Generators/Protos_i/share/protos.dat +++ /dev/null @@ -1,10 +0,0 @@ - 8 ! Process code - 7000. ! CM energy -172.50 1.45 4.80 115.0 ! mt, Gt, mb, MH - 1.000 0.000 0.000 0.000 ! Re VL, Re VR, Re gL, Re gR (lep) - 0.0 0.000 0.000 0.000 ! Clqp, Im VR, Im gL, Im gR (lep) - 1.000 0.000 0.000 0.000 ! Re VL, Re VR, Re gL, Re gR (had) - 0.0 0.000 0.000 0.000 ! Cqqp, Im VR, Im gL, Im gR (had) - 1 ! Initial random seed - 4220982 ! unweighted events -0.543321E+02 0.426792E-02 ! tt cross section and error diff --git a/Generators/Protos_i/share/protos.events b/Generators/Protos_i/share/protos.events deleted file mode 100644 index dc8c05f406693ebb8df048dc7f147d792154cc3f..0000000000000000000000000000000000000000 --- a/Generators/Protos_i/share/protos.events +++ /dev/null @@ -1,90 +0,0 @@ - 1 0.100000E+01 0.345000E+03 - 21 1 2 0.15315344E+03 - 21 2 3 -.41468818E+03 - 14 0 0 -.13666744E+02 0.12122326E+02 0.33898671E+02 --13 0 0 0.66517994E+02 -.22415635E+02 0.14584560E+02 - 5 1 0 0.87135339E+02 -.52172331E+02 -.62062549E+02 - -2 0 12 -.13592566E+02 -.66064294E+01 0.14661776E+02 - 1 12 0 -.22397199E+02 -.15540970E+02 -.11417333E+03 - -5 0 3 -.10399682E+03 0.84613040E+02 -.14844387E+03 - 2 0.100000E+01 0.345000E+03 - -1 0 2 0.12810473E+03 - 1 1 0 -.51710847E+03 - 4 11 0 0.44880593E+02 -.11929287E+02 -.27159225E+02 - -3 0 11 0.12478341E+02 0.64287210E+02 -.43831883E+02 - 5 1 0 -.46045965E+02 0.12598012E+03 -.39199965E+02 --16 0 0 0.35819819E+02 -.12870109E+02 -.20890069E+02 - 15 0 0 -.26317436E+02 -.81384178E+02 -.39266171E+02 - -5 0 2 -.20815352E+02 -.84083755E+02 -.21865643E+03 - 3 0.100000E+01 0.345000E+03 - 21 1 2 0.85387871E+02 - 21 2 3 -.49779696E+03 - 12 0 0 0.26786308E+02 -.41373174E+02 -.14116060E+02 --11 0 0 0.43411223E+02 0.26573123E+02 0.20348290E+02 - 5 1 0 -.50742111E+01 0.40967871E+02 -.90265040E+02 - -2 0 12 -.47359312E+01 0.53289668E+02 -.91450658E+02 - 1 12 0 -.15036796E+01 -.19089603E+02 -.14761140E+03 - -5 0 3 -.58883709E+02 -.60367885E+02 -.89314218E+02 - 4 0.100000E+01 0.345000E+03 - 21 2 3 0.77166412E+03 - 21 1 2 -.75343013E+02 - 16 0 0 -.14081065E+02 0.66887166E+01 -.59980720E+01 --15 0 0 -.14458111E+02 0.50864783E+02 0.14261671E+03 - 5 1 0 -.10191371E+00 0.31634674E+02 -.37858998E+02 - -4 0 12 0.56377770E+02 -.34962426E+02 0.19716512E+03 - 3 12 0 -.11228153E+01 -.39930651E+01 -.75838586E+01 - -5 0 3 -.26613865E+02 -.50232683E+02 0.40798021E+03 - 5 0.100000E+01 0.345000E+03 - 21 1 2 0.19270450E+03 - 21 2 3 -.51268447E+03 - 12 0 0 0.12752014E+01 -.29707829E+02 0.25939166E+02 --11 0 0 0.37462534E+02 0.15369920E+02 -.38712073E+02 - 5 1 0 0.16785316E+03 0.42258862E+02 0.33439930E+02 - -2 0 12 0.32825741E+01 -.11735192E+02 -.47714143E+02 - 1 12 0 -.85635334E+02 0.57458600E+02 -.10416985E+03 - -5 0 3 -.12423813E+03 -.73644361E+02 -.18876301E+03 - 6 0.100000E+01 0.345000E+03 - -2 0 2 0.51518875E+02 - 2 1 0 -.22087228E+04 - 12 0 0 0.20980527E+02 -.37570413E+02 -.14840512E+03 --11 0 0 0.64542796E+02 -.99463974E+02 -.12146136E+04 - 5 1 0 -.43094027E+02 -.69310901E+01 -.54643418E+03 - -4 0 12 0.27460955E+02 -.24454158E+01 -.41505280E+02 - 3 12 0 -.51565082E+02 0.26896104E+02 -.13474654E+03 - -5 0 2 -.18325169E+02 0.11951479E+03 -.71499144E+02 - 7 0.100000E+01 0.345000E+03 - 21 2 3 0.55665008E+03 - 21 1 2 -.18063283E+03 - 12 0 0 -.65908248E+02 -.10666006E+03 -.12229213E+03 --11 0 0 -.40161527E+01 0.13197599E+02 -.28156676E+01 - 5 1 0 -.13668456E+02 0.58415056E+01 0.36587366E+02 - -4 0 12 -.36944835E+02 0.12768730E+02 0.17655606E+03 - 3 12 0 0.19004300E+02 0.39543658E+02 0.51643868E+02 - -5 0 3 0.10153339E+03 0.35308564E+02 0.23633775E+03 - 8 0.100000E+01 0.345000E+03 - 21 1 2 0.30771000E+03 - 21 2 3 -.16834468E+03 - 12 0 0 0.45851076E+02 0.61553669E+02 0.12692584E+03 --11 0 0 0.21522424E+02 -.24095402E+02 0.42921648E+02 - 5 1 0 -.43131370E+02 0.53411897E+02 0.23718059E+02 - -4 0 12 -.34045289E+02 0.98670077E+01 0.13403913E+02 - 3 12 0 0.19565143E+02 0.74415283E+01 -.48635805E+02 - -5 0 3 -.97619837E+01 -.10817870E+03 -.18968328E+02 - 9 0.100000E+01 0.345000E+03 - 21 2 3 0.16018865E+03 - 21 1 2 -.26453833E+03 - 4 11 0 0.48288820E+02 -.95850111E+01 -.27838604E+02 - -3 0 11 -.25746563E+02 0.22580486E+00 0.15306080E+02 - 5 1 0 -.94379025E+01 0.11445308E+01 -.15377959E+03 --16 0 0 -.15609474E+02 0.35526487E+02 -.16601645E+02 - 15 0 0 -.53791327E+02 -.26414558E+02 0.28567794E+02 - -5 0 3 0.56296446E+02 -.89725390E+00 0.49996287E+02 - 10 0.100000E+01 0.345000E+03 - -1 0 2 0.14149143E+03 - 1 1 0 -.26726900E+03 - 4 11 0 0.76839604E+02 -.48908312E+02 -.26249856E+02 - -3 0 11 0.49204170E+02 0.28015061E+02 0.22783783E+01 - 5 1 0 -.38081287E+02 -.31511950E+01 -.36144677E+02 --16 0 0 -.46477648E+02 -.50970117E+01 -.74367698E+02 - 15 0 0 -.16161691E+02 -.39617784E+02 0.50204889E+01 - -5 0 2 -.25323149E+02 0.68759241E+02 0.36857896E+01 diff --git a/Generators/Protos_i/src/initprotos.F b/Generators/Protos_i/src/initprotos.F deleted file mode 100644 index 2f7ec48f06cabe6f9f30aca3d43b0703dda8db80..0000000000000000000000000000000000000000 --- a/Generators/Protos_i/src/initprotos.F +++ /dev/null @@ -1,254 +0,0 @@ -********************************************************************************** -********************************************************************************** - SUBROUTINE INITPROTOS - IMPLICIT NONE - -#include "GeneratorFortranCommon/hepeup.inc" -#include "GeneratorFortranCommon/heprup.inc" - - print *, "*************************************" - print *, "* Protos_i interface for ATHENA *" - print *, "* version 00-00-06 19/5/2011 *" - print *, "* *" - print *, "* Nuno Castro (nuno.castro@cern.ch) *" - print *, "* LIP and Universidade do Minho *" - print *, "* *" - print *, "* based on protint.f, provided in *" - print *, "* Protos 2.1A *" - print *, "* *" - print *, "* Protos generator developed by *" - print *, "* Juan Antonio Aguilar Saavedra *" - print *, "* Universidad de Granada *" - print *, "*************************************" - -C...Event Weighting Strategy: +/- input weights - - IDWTUP = -3 - -C...Initialize Information Using Protos - - CALL PROTOS_INIT - - END - - -********************************************************************************** - - -********************************************************************************** -********************************************************************************** - SUBROUTINE PROTOS_INIT - IMPLICIT NONE - -#include "Protos_i/Protos.inc" -#include "GeneratorFortranCommon/heprup.inc" - -! External variables - - INTEGER LONGITUD - -! Local - - CHARACTER*100 string - INTEGER i,idum1,idum2 - REAL*8 ET - REAL*8 mt,Gt,mb,MH ! For Red and White - REAL*8 mL,GE,GN,mX,GX,mD,GD ! For Triada - REAL*8 mQ,GQ,Vmix ! For Rose - - lun=35 ! Select here some number not already used - -! Read the ASCII file with process information (named protos.dat) - - OPEN (lun,file='protos.dat') - READ (lun,*) IHRD - READ (lun,*) ET - -! Set p pbar and CM energy - - Write(*,*) " LHC considered: pp collisions at sqrt(s) = ", ET, " GeV" - IDBMUP(1)=2212 - IDBMUP(2)=2212 - EBMUP(1)=ET/2d0 - EBMUP(2)=ET/2d0 - Write(*,*) " Beam energy:",EBMUP(1) - -C...PROCESS TAGS - NPRUP = 1 - LPRUP(NPRUP)=600+IHRD - -! Masses - - IF ((IHRD .GE. 3) .AND. (IHRD .LE. 18)) THEN - READ (lun,*) mt,Gt,mb,MH - ELSE IF ((IHRD .GE. 31) .AND. (IHRD .LE. 33)) THEN - READ (lun,*) mL,GE,GN,MH - ELSE IF ((IHRD .GE. 34) .AND. (IHRD .LE. 38)) THEN - READ (lun,*) mX,GX,idum1,idum2 - READ (lun,*) mL,GE,GN,MH - ELSE IF ((IHRD .GE. 41) .AND. (IHRD .LE. 43)) THEN - READ (lun,*) mD,GD - ELSE IF ((IHRD .GE. 51) .AND. (IHRD .LE. 69)) THEN - READ (lun,*) mt,Gt,mb,MH - READ (lun,*) mQ,GQ,Vmix - ELSE - PRINT 10001,IHRD - STOP - ENDIF - - IF ((IHRD .GE. 3) .AND. (IHRD .LE. 18)) THEN - - WRITE (string,'(F6.2)') mt - i=LONGITUD(string) - CALL PYGIVE('PMAS(6,1)='//string(1:i)) - WRITE (string,'(F6.2)') Gt - i=LONGITUD(string) - CALL PYGIVE('PMAS(6,2)='//string(1:i)) - WRITE (string,'(F6.2)') mb - i=LONGITUD(string) - CALL PYGIVE('PMAS(5,1)='//string(1:i)) - WRITE (string,'(F6.2)') MH - i=LONGITUD(string) - CALL PYGIVE('PMAS(25,1)='//string(1:i)) - - ELSE IF ((IHRD .GE. 31) .AND. (IHRD .LE. 33)) THEN - - WRITE (string,'(F7.2)') mL - i=LONGITUD(string) - CALL PYGIVE('PMAS(17,1)='//string(1:i)) - CALL PYGIVE('PMAS(18,1)='//string(1:i)) - WRITE (string,'(F10.6)') GE - i=LONGITUD(string) - CALL PYGIVE('PMAS(17,2)='//string(1:i)) - WRITE (string,'(F10.6)') GN - i=LONGITUD(string) - CALL PYGIVE('PMAS(18,2)='//string(1:i)) - WRITE (string,'(F6.2)') MH - i=LONGITUD(string) - CALL PYGIVE('PMAS(25,1)='//string(1:i)) - - ELSE IF ((IHRD .GE. 34) .AND. (IHRD .LE. 36)) THEN - - WRITE (string,'(F7.1)') mX - i=LONGITUD(string) - IF (IHRD .NE. 35) THEN - CALL PYGIVE('PMAS(32,1)='//string(1:i)) - ELSE - CALL PYGIVE('PMAS(34,1)='//string(1:i)) - ENDIF - WRITE (string,'(F6.2)') GX - i=LONGITUD(string) - IF (IHRD .NE. 35) THEN - CALL PYGIVE('PMAS(32,2)='//string(1:i)) - ELSE - CALL PYGIVE('PMAS(34,2)='//string(1:i)) - ENDIF - WRITE (string,'(F7.2)') mL - i=LONGITUD(string) - CALL PYGIVE('PMAS(17,1)='//string(1:i)) - CALL PYGIVE('PMAS(18,1)='//string(1:i)) - WRITE (string,'(F10.6)') GE - i=LONGITUD(string) - CALL PYGIVE('PMAS(17,2)='//string(1:i)) - WRITE (string,'(F10.6)') GN - i=LONGITUD(string) - CALL PYGIVE('PMAS(18,2)='//string(1:i)) - WRITE (string,'(F6.2)') MH - i=LONGITUD(string) - CALL PYGIVE('PMAS(25,1)='//string(1:i)) - - ELSE IF (IHRD .EQ. 38) THEN - - WRITE (string,'(F7.1)') mX - i=LONGITUD(string) - CALL PYGIVE('PMAS(34,1)='//string(1:i)) - WRITE (string,'(F6.2)') GX - i=LONGITUD(string) - CALL PYGIVE('PMAS(34,2)='//string(1:i)) - WRITE (string,'(F7.2)') mL - i=LONGITUD(string) - CALL PYGIVE('PMAS(17,1)='//string(1:i)) - CALL PYGIVE('PMAS(18,1)='//string(1:i)) - WRITE (string,'(F10.6)') GE - i=LONGITUD(string) - CALL PYGIVE('PMAS(17,2)='//string(1:i)) - WRITE (string,'(F10.6)') GN - i=LONGITUD(string) - CALL PYGIVE('PMAS(18,2)='//string(1:i)) - WRITE (string,'(F6.2)') MH - i=LONGITUD(string) - CALL PYGIVE('PMAS(25,1)='//string(1:i)) - - ELSE IF ((IHRD .GE. 41) .AND. (IHRD .LE. 43)) THEN - -c WRITE (string,'(F7.1)') mD -c i=LONGITUD(string) -c CALL PYGIVE('PMAS(37,1)='//string(1:i)) -c CALL PYGIVE('PMAS(9900041,1)='//string(1:i)) -c WRITE (string,'(F10.6)') GD -c i=LONGITUD(string) -c CALL PYGIVE('PMAS(37,2)='//string(1:i)) -c CALL PYGIVE('PMAS(9900041,2)='//string(1:i)) - - ELSE IF ((IHRD .GE. 51) .AND. (IHRD .LE. 69)) THEN - - WRITE (string,'(F6.2)') mt - i=LONGITUD(string) - CALL PYGIVE('PMAS(6,1)='//string(1:i)) - WRITE (string,'(F7.2)') Gt - i=LONGITUD(string) - CALL PYGIVE('PMAS(6,2)='//string(1:i)) - WRITE (string,'(F6.2)') mb - i=LONGITUD(string) - CALL PYGIVE('PMAS(5,1)='//string(1:i)) - WRITE (string,'(F6.2)') MH - i=LONGITUD(string) - CALL PYGIVE('PMAS(25,1)='//string(1:i)) - - WRITE (string,'(F7.2)') mQ - i=LONGITUD(string) - CALL PYGIVE('PMAS(8,1)='//string(1:i)) - CALL PYGIVE('PMAS(7,1)='//string(1:i)) - WRITE (string,'(F6.2)') GQ - i=LONGITUD(string) - CALL PYGIVE('PMAS(8,2)='//string(1:i)) - CALL PYGIVE('PMAS(7,2)='//string(1:i)) - - ENDIF - -! Read matching parameters, if any - - IF ( (IHRD .EQ. 3) .OR. (IHRD .EQ. 61) .OR. (IHRD .EQ. 63) - & .OR. (IHRD .EQ. 65) ) THEN - READ (lun,*) IMATCH,PTbmax - IF (IMATCH .EQ. 2) CALL PYGIVE('MSTP(143)=1') - ELSE - IMATCH=0 - ENDIF - - CLOSE (lun) - -! Open the ASCII event files (named protos.events) - - OPEN (lun,file='protos.events') - -10001 FORMAT ('Unknown process IHRD = ',I2) - - END -********************************************************************************** - -********************************************************************************** -********************************************************************************** - INTEGER FUNCTION LONGITUD(name) - CHARACTER*100 name - INTEGER i - i = LEN(name) - DO WHILE (name(i:i) .EQ. ' ') - i = i - 1 - ENDDO - LONGITUD = i - RETURN - END -********************************************************************************** - - diff --git a/Generators/Protos_i/src/useprotos.F b/Generators/Protos_i/src/useprotos.F deleted file mode 100644 index e10bb0206932fec250632479b999536555e7702c..0000000000000000000000000000000000000000 --- a/Generators/Protos_i/src/useprotos.F +++ /dev/null @@ -1,239 +0,0 @@ - - SUBROUTINE USEPROTOS - IMPLICIT NONE - -#include "Protos_i/Protos.inc" -#include "GeneratorFortranCommon/hepeup.inc" -#include "GeneratorFortranCommon/heprup.inc" - -! Standard PYTHIA commonblocks. - - INTEGER KCHG - REAL*8 PMAS,PARF,VCKM - COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) - -! Local - - INTEGER NJET,CHVB,CHL - REAL*8 Pz,mf - REAL*8 mtau,mb,mt,MW,MZ,MH,mL,MZp,MWp,mQ - -! Dummy - - INTEGER i0,i,j,id_f1,id_f2,id_VB,id_q,id_l,id_b1,id_b2,nn1 - INTEGER IDB1,IDB2,id_L1,id_L2,CHL1,CHL2 - INTEGER ID_HQ,id_Qt,num_Qt,id_b - -! ---------------------------------------------------- - -! Clear arrays - - DO i=1,MAXNUP - MOTHUP(1,i)=0 - MOTHUP(2,i)=0 - ICOLUP(1,i)=0 - ICOLUP(2,i)=0 - SPINUP(I)=9d0 - PUP(1,i)=0d0 - PUP(2,i)=0d0 - PUP(5,i)=0d0 - VTIMUP(i)=0d0 - ENDDO - - IDPRUP=LPRUP(NPRUP) - - mtau=PMAS(15,1) - mb=PMAS(5,1) - mt=PMAS(6,1) - MW=PMAS(24,1) - MZ=PMAS(23,1) - MH=PMAS(25,1) - mL=PMAS(17,1) - MZp=PMAS(32,1) - MWp=PMAS(34,1) - mQ=PMAS(8,1) - -! ==================== -! Select process group -! ==================== - -! One top quark (plus jets, a photon or a Higgs) - - IF ( ((IHRD .GE. 3) .AND. (IHRD .LE. 5)) .OR. (IHRD .EQ. 12) - & .OR. (IHRD .EQ. 14) .OR. (IHRD .EQ. 16)) - & GOTO 1003 - -! One top quark and a W/Z boson (plus jets) - - IF ((IHRD .EQ. 6) .OR. (IHRD .EQ. 7) .OR. (IHRD .EQ. 10)) - & GOTO 1006 - -! A top quark pair decaying both to W/Z - - IF ((IHRD .EQ. 8) .OR. (IHRD .EQ. 9) .OR. (IHRD .EQ. 18)) - & GOTO 1008 - -! A top quark pair decaying to W/Z and a photon/gluon/Higgs - - IF ((IHRD .EQ. 11) .OR. (IHRD .EQ. 13) .OR. (IHRD .EQ. 15)) - & GOTO 1011 - -! A top quark pair decaying to W/Z and 3-body - - IF (IHRD .EQ. 17) GOTO 1017 - -! Two heavy leptons - - IF ((IHRD .GE. 31) .AND. (IHRD .LE. 36)) - & GOTO 1031 - -! One heavy lepton - - IF ((IHRD .GE. 37) .AND. (IHRD .LE. 38)) - & GOTO 1037 - -! Two scalar triplets decaying into four leptons - - IF ((IHRD .GE. 41) .AND. (IHRD .LE. 43)) - & GOTO 1041 - -! T Tbar - - IF (IHRD .EQ. 51) GOTO 1051 - -! B Bbar - - IF (IHRD .EQ. 52) GOTO 1052 - -! X Xbar - - IF (IHRD .EQ. 53) GOTO 1053 - -! Y Ybar - - IF (IHRD .EQ. 54) GOTO 1054 - -! One T quark plus j, bj, t j - - IF ((IHRD .EQ. 61) .OR. (IHRD .EQ. 62) .OR. (IHRD .EQ. 67)) - & GOTO 1061 - -! One B quark plus j, bj - - IF ((IHRD .EQ. 63) .OR. (IHRD .EQ. 64)) GOTO 1063 - -! One Y quark plus j, bj - - IF ((IHRD .EQ. 65) .OR. (IHRD .EQ. 66)) GOTO 1065 - - ! Xtj - - IF (IHRD .EQ. 69) GOTO 1069 - -! None of the above - - PRINT 10001,IHRD - STOP - -! ------------------------------------------------------ -! Read tj (3), tbj (4), tb (5), At (12), t (14), Ht (16) -! ------------------------------------------------------ - - include 'Protos_i/tj.inc' - -! ----------------------------- -! Read tW (6), tWb (7), Zt (10) -! ----------------------------- - - include 'Protos_i/tW.inc' - -! -------------------- -! Read tt (8), Zqt (9) -! -------------------- - - include 'Protos_i/tt.inc' - -! --------------------------------- -! Read Aqt (11), gqt (13), Hqt (15) -! --------------------------------- - - include 'Protos_i/tfcn.inc' - -! -------------- -! Read llqt (17) -! -------------- - - include 'Protos_i/tt4f.inc' - -! --------------------------------------------------------------------------- -! Read E+E- (31), EN (32), NN (33), Z'-> E+E- (34), W'-> EN (35), Z'-> NN(36) -! --------------------------------------------------------------------------- - - include 'Protos_i/2HL.inc' - -! -------------------------- -! Read lN (37), W'-> lN (38) -! -------------------------- - - include 'Protos_i/1HL.inc' - -! -------------------------------------------------- -! Read D++ D-- (41), D++D- / D+ D-- (42), D+ D- (43) -! -------------------------------------------------- - - include 'Protos_i/DD4l.inc' - -! ------------ -! Read TT (51) -! ------------ - - include 'Protos_i/double_heavy_T.inc' - -! ------------ -! Read BB (52) -! ------------ - - include 'Protos_i/BB.inc' - -! ------------ -! Read XX (53) -! ------------ - - include 'Protos_i/XX.inc' - -! ------------ -! Read YY (54) -! ------------ - - include 'Protos_i/YY.inc' - -! -------------------------------- -! Read Tj (61), Tbj (62), Ttj (67) -! -------------------------------- - - include 'Protos_i/heavy_Tj.inc' - -! ---------------------- -! Read Bj (63), Bbj (64) -! ---------------------- - - include 'Protos_i/Bj.inc' - -! ---------------------- -! Read Yj (65), Ybj (66) -! ---------------------- - - include 'Protos_i/Yj.inc' - -! ------------- -! Read Xtj (69) -! ------------- - - include 'Protos_i/Xtj.inc' - - -10001 FORMAT ('Unknown process IHRD = ',I2) -10002 FORMAT ('File end: NOT Doing Rewinding... ',I2) - - END - diff --git a/Generators/Protos_i/src/vetoprotos.F b/Generators/Protos_i/src/vetoprotos.F deleted file mode 100644 index abfd904aae2c06cf14345ba9cc892214f68b5f9f..0000000000000000000000000000000000000000 --- a/Generators/Protos_i/src/vetoprotos.F +++ /dev/null @@ -1,45 +0,0 @@ - SUBROUTINE VETOPROTOS(IVETO) - IMPLICIT NONE - - INTEGER IVETO - -#include "Protos_i/Protos.inc" -#include "GeneratorFortranCommon/hepeup.inc" -#include "GeneratorFortranCommon/heprup.inc" - -! Event record - - INTEGER N,NPAD,K - REAL*8 P,V - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) - -! Local - - INTEGER IDB,ib - REAL*8 Pb(0:3),PTb - -! ---------------------------------------------------- - - IVETO=0 - IF ((IHRD .NE. 3) .OR. (IMATCH .NE. 2)) RETURN - - IDB=IDUP(2) - ib=1 - - DO WHILE ((K(ib,2) .NE. -IDB) .OR. (K(ib,1) .NE. 3)) - ib=ib+1 - IF (ib .GT. N) RETURN - ENDDO - - Pb(0) = P(ib,4) - Pb(1) = P(ib,1) - Pb(2) = P(ib,2) - Pb(3) = P(ib,3) - - PTb=SQRT(Pb(1)**2+Pb(2)**2) - IF (PTb .GT. PTbmax) IVETO = 1 - - RETURN - - END - diff --git a/Generators/Pyquench_i/CMakeLists.txt b/Generators/Pyquench_i/CMakeLists.txt deleted file mode 100644 index ec72f132f9b6efe8127b1841133df44981256e4a..0000000000000000000000000000000000000000 --- a/Generators/Pyquench_i/CMakeLists.txt +++ /dev/null @@ -1,43 +0,0 @@ -################################################################################ -# Package: Pyquench_i -################################################################################ - -# Declare the package name: -atlas_subdir( Pyquench_i ) - -# Declare the package's dependencies: -atlas_depends_on_subdirs( PUBLIC - Generators/GeneratorModules - Generators/Pythia_i - Generators/Tauola_i - PRIVATE - Control/AthenaKernel - GaudiKernel - Generators/GeneratorUtils - Generators/TruthUtils ) - -# External dependencies: -find_package( CLHEP ) -find_package( HepMC COMPONENTS HepMC HepMCfio ) - -# Remove the --as-needed linker flags: -atlas_disable_as_needed() - -# Component(s) in the package: -atlas_add_library( Pyquench_iLib - src/*.cxx - src/*.f - PUBLIC_HEADERS Pyquench_i - PRIVATE_INCLUDE_DIRS ${CLHEP_INCLUDE_DIRS} ${HEPMC_INCLUDE_DIRS} - PRIVATE_DEFINITIONS ${CLHEP_DEFINITIONS} - LINK_LIBRARIES GeneratorModulesLib Pythia_iLib Tauola_iLib - PRIVATE_LINK_LIBRARIES ${CLHEP_LIBRARIES} ${HEPMC_LIBRARIES} AthenaKernel GaudiKernel TruthUtils ) - -atlas_add_component( Pyquench_i - src/components/*.cxx - INCLUDE_DIRS ${CLHEP_INCLUDE_DIRS} ${HEPMC_INCLUDE_DIRS} - LINK_LIBRARIES ${CLHEP_LIBRARIES} ${HEPMC_LIBRARIES} GeneratorModulesLib Pythia_iLib Tauola_iLib AthenaKernel GaudiKernel TruthUtils Pyquench_iLib ) - -# Install files from the package: -atlas_install_joboptions( share/*.py ) - diff --git a/Generators/Pyquench_i/Pyquench_i/Pyqpar.h b/Generators/Pyquench_i/Pyquench_i/Pyqpar.h deleted file mode 100644 index fbd9d568094964c4510a376a11afddac7792ce95..0000000000000000000000000000000000000000 --- a/Generators/Pyquench_i/Pyquench_i/Pyqpar.h +++ /dev/null @@ -1,105 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - - -#ifndef PYQUENCH_I_PYQPAR_H -#define PYQUENCH_I_PYQPAR_H - -/* Pyquen common block definition - /pyqpar/ T0u,tau0u,nfu,ienglu,ianglu -*/ - -extern "C" { void* pyqpar_address_(void); } -/** -@class Pyqpar - -@brief Class definition for Pyqpar, which is used - to modify the PYQUEN PYQPAR common. -*/ - -class Pyqpar { -public: - Pyqpar(); - ~Pyqpar(); - - double& T0u (void); - double& tau0u (void); - int& nfu (void); - int& ienglu (void); - int& ianglu (void); - -private: - - struct PYQPAR; - friend struct PYQPAR; - - struct PYQPAR - { - double T0u; - double tau0u; - int nfu; - int ienglu; - int ianglu; - - }; - void init(void); - static PYQPAR* s_pyqpar; -}; - -// set pointer to zero at start -Pyqpar::PYQPAR* Pyqpar::s_pyqpar =0; - -inline void -Pyqpar::init(void) -{ if (!s_pyqpar) s_pyqpar = static_cast<PYQPAR*>(pyqpar_address_()); } - -// Constructor -inline -Pyqpar::Pyqpar() -{} - -// Destructor -inline -Pyqpar::~Pyqpar() -{} - -inline double& -Pyqpar::T0u (void) -{ - init(); - return s_pyqpar->T0u; -} - -inline double& -Pyqpar::tau0u (void) -{ - init(); - return s_pyqpar->tau0u; -} - -inline int& -Pyqpar::nfu (void) -{ - init(); - return s_pyqpar->nfu; -} - -inline int& -Pyqpar::ienglu (void) -{ - init(); - return s_pyqpar->ienglu; -} - -inline int& -Pyqpar::ianglu (void) -{ - init(); - return s_pyqpar->ianglu; -} - - - - -#endif diff --git a/Generators/Pyquench_i/Pyquench_i/Pyquench.h b/Generators/Pyquench_i/Pyquench_i/Pyquench.h deleted file mode 100644 index 0b495b9d69a162253cd3dcee9fcdbc983edb3d77..0000000000000000000000000000000000000000 --- a/Generators/Pyquench_i/Pyquench_i/Pyquench.h +++ /dev/null @@ -1,139 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// -------------------------------------------------- -// -// File: GeneratorModules/Pythia.h -// Description: -// This code is used to get a PYTHIA Monte Carlo event. -// genInitialize() is used to read parameters -// callGenerator() makes the event -// genFinalize() writes log files etc -// fillEvt(GeneratorEvent* evt) passes the event to HepMC -// -// The output will be stored in the transient event store so it can be -// passed to the simulation. -// -// AuthorList: -// Brian Cole, Nathan Grau 2006 -// Modelled after the Pythia_i interface code by Ian Hinchclife -// -// -// - -#ifndef GENERATORMODULESPYQUENCH_H -#define GENERATORMODULESPYQUENCH_H -#include "GeneratorModules/GenModule.h" -#include "Pythia_i/Pydat1.h" -#include "Pythia_i/Pydat2.h" -#include "Pythia_i/Pydat3.h" -#include "Pythia_i/Pysubs.h" -#include "Pythia_i/Pypars.h" -#include "Pythia_i/Pydatr.h" -#include "Pythia_i/Pyint1.h" -#include "Pythia_i/Pyint2.h" -#include "Pythia_i/Pyint5.h" - -#include "Pyquench_i/Pyqpar.h" - -#include "Tauola_i/Atlas_HEPEVT.h" -#include <vector> -#include <string> - -class IAtRndmGenSvc; - -// Pyquench is a concrete instance of a generator (interface) module "GenModule" -// -class Pyquench : public GenModule -{ -public: - Pyquench(const std::string& name, ISvcLocator* pSvcLocator); - virtual ~Pyquench(); - - virtual StatusCode genInitialize(); - virtual StatusCode callGenerator(); - virtual StatusCode genFinalize(); - virtual StatusCode fillEvt(HepMC::GenEvent* evt); - - // Accessors to PYTHIA COMMONS - // reference to Pydat1, Pysubs and Pypars - // - Pydat1& pydat1() { return m_pydat1; } - Pydat2& pydat2() { return m_pydat2; } - Pydat3& pydat3() { return m_pydat3; } - Pysubs& pysubs() { return m_pysubs; } - Pypars& pypars() { return m_pypars; } - Pydatr& pydatr() { return m_pydatr; } - Pyint1& pyint1() { return m_pyint1; } - Pyint2& pyint2() { return m_pyint2; } - Pyint5& pyint5() { return m_pyint5; } - - Pyqpar& pyqpar() {return m_pyqpar;}; - // Pointer On AtRndmGenSvc - // - static IAtRndmGenSvc* m_AtRndmGenSvc_p; - static std::string m_pythia_stream; - -protected: - - void setPythiaParameters(); - - // User configurable parametera - // - int m_nuclearA; // A of the nuclke - bool m_minBias; - double m_bimpact; - double m_rootsNN; - int m_randomseed; - int m_tune_index; - // event counter - int m_events ; - std::vector<std::string> m_pythiaCommandVector; - // Vector for storing seeds - // - std::vector<long int> m_seeds; - - // members that provide access to Pythia common blocks - // - Pysubs m_pysubs; - - // Pydat1 data, methods - Pydat1 m_pydat1; - // Pypars data, methods - Pypars m_pypars; - // Pydat2 data, methods - Pydat2 m_pydat2; - // Pydat3 data, methods - Pydat3 m_pydat3; - // Pydatr access for random numbers (only set the 1st seed just now - Pydatr m_pydatr; - // Pyint1 access for data - Pyint1 m_pyint1; - // Pyint2 access for data - Pyint2 m_pyint2; - // Pyint5 access for data - Pyint5 m_pyint5; - - Pyqpar m_pyqpar; - // Method to Manage the random seed IO from/to a file - void RandomNumberIO(void); - - // I/O to HEPEVT - void store_Atlas_HEPEVT(void); - - static Atlas_HEPEVT* s_atlas_HEPEVT; -}; - - -#endif - - - - - - - - - - diff --git a/Generators/Pyquench_i/share/r1040b0quenchJobOpt.py b/Generators/Pyquench_i/share/r1040b0quenchJobOpt.py deleted file mode 100644 index d1fd824b667bce872cc55bf84cf4849d60a5ca16..0000000000000000000000000000000000000000 --- a/Generators/Pyquench_i/share/r1040b0quenchJobOpt.py +++ /dev/null @@ -1,76 +0,0 @@ -############################################################### -# -# Job options file for Pyquench_i -# -# Brian Cole, Nathan Grau, Mikhail Leltchouk, Nevis, April 2006 -#============================================================== - -# General Application Configuration options -#-------------------------------------------------------------- -import AthenaCommon.AtlasUnixGeneratorJob - -from AthenaCommon.AppMgr import theApp -from AthenaCommon.AppMgr import ServiceMgr - -# make sure we are loading the ParticleProperty service -from PartPropSvc.PartPropSvcConf import PartPropSvc -ServiceMgr += PartPropSvc() - -#-------------------------------------------------------------- -# Private Application Configuration options -#-------------------------------------------------------------- - -# Set output level threshold (2=DEBUG, 3=INFO, 4=WARNING, 5=ERROR, 6=FATAL ) -ServiceMgr.MessageSvc.OutputLevel = FATAL - -#-------------------------------------------------------------- -# Event related parameters -#-------------------------------------------------------------- - -# Set run number (default 0 causes problems) -#EventSelector = Service("EventSelector") -ServiceMgr.EventSelector.RunNumber = 1040 - -#-------------------------------------------------------------- -# Algorithms Private Options -#-------------------------------------------------------------- -from AthenaServices.AthenaServicesConf import AtRndmGenSvc -ServiceMgr += AtRndmGenSvc() -ServiceMgr.AtRndmGenSvc.Seeds = ["PYQUENCH 47895451 989454505", "PYQUENCH_INIT 489234453 71565781"] -# AtRndmGenSvc.ReadFromFile = true; - -from AthenaCommon.AlgSequence import AlgSequence -job=AlgSequence() -from Pyquench_i.Pyquench_iConf import Pyquench -job += Pyquench() -job.Pyquench.OutputLevel = 3 -job.Pyquench.nuclearA = 208 -job.Pyquench.minBiasYN = False -job.Pyquench.bimpact = 0. -job.Pyquench.ptmin = 100. -job.Pyquench.sqrtSNN = 5520. - -# Number of events to be processed (default is 10) -theApp.EvtMax = 50 - -#--------------------------------------------------------------- -# Pool Persistency -#--------------------------------------------------------------- -include("GeneratorObjectsAthenaPool/GeneratorObjectsAthenaPool_joboptions.py") - -include("AthenaServices/AthenaSealSvc_joboptions.py" ) -AthenaSealSvc.CheckDictionary = TRUE - - -from AthenaPoolCnvSvc.WriteAthenaPool import AthenaPoolOutputStream -Stream1 = AthenaPoolOutputStream( "StreamEVGEN" ) -Stream1.OutputFile = "r1040b0pyquench.root" -# 2101 = EventInfo -# 133273 = MCTruth (HepMC) -Stream1.ItemList += [ "2101#*", "133273#*" ] - -#============================================================== -# -# End of job options file -# -############################################################### diff --git a/Generators/Pyquench_i/src/Pyquench.cxx b/Generators/Pyquench_i/src/Pyquench.cxx deleted file mode 100644 index 781aa729dadcd1055013ca5aba943b0c8c8515b2..0000000000000000000000000000000000000000 --- a/Generators/Pyquench_i/src/Pyquench.cxx +++ /dev/null @@ -1,414 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// An interface to the Pyquen(ch) generator written by I.P. Lokhtin, -// A.M. Snigirev to model jet quenching on the output of Pythia. Largely -// modelled after the Pythia_i interface written by Ian Hinchcliffe. -// -// AuthorList: Brian Cole, Nathan Grau - -#include "Pyquench_i/Pyquench.h" -#include "TruthUtils/GeneratorName.h" -#include "GeneratorUtils/StringParse.h" -#include "AthenaKernel/IAtRndmGenSvc.h" - -#include "HepMC/IO_HEPEVT.h" -#include "HepMC/HEPEVT_Wrapper.h" -#include "CLHEP/Random/RandFlat.h" -#include <cstdlib> -#include <iomanip> -#include <sstream> - -// The following code provides an interface to the Pythia random number -// generator. It is implemented in Pythia_i but since we are replacing that -// code here we need to duplicate definition. -extern "C" double atl_pyr_( int* /* idummy */ ) { - CLHEP::HepRandomEngine* engine = Pyquench::m_AtRndmGenSvc_p->GetEngine(Pyquench::m_pythia_stream); - return CLHEP::RandFlat::shoot(engine); -} - -// Declare C interface to Pythia entry points -extern "C" { - void initpyblock_(int*, const char*); - int openrandom_(int*, int*, const char*); - void pyinit_(const char*, const char*, - const char*, double* , - int, // lengths of character strings - int, // (should be value, not reference) - int); - void pyevnt_(); - void pyevnw_(); - void pyexec_(); - void pystat_(int*); - void pylist_(int*); - void pyupda_(int*, int*); - void pyrget_(int*, int*); - void pyrset_(int*, int*); - int pycomp_(int*); - void pyhepc_(int*); - - // pyquen routine - void pyquen_(double*, int*, double*); -} - -// Instantiation of static data members -IAtRndmGenSvc* Pyquench::m_AtRndmGenSvc_p; -std::string Pyquench::m_pythia_stream = "PYTHIA_INIT"; -Atlas_HEPEVT* Pyquench::s_atlas_HEPEVT = new Atlas_HEPEVT(); - - -//-------------------------------------------------------------------------- - - -// Constructor -Pyquench::Pyquench(const std::string& name, ISvcLocator* pSvcLocator) - : GenModule(name, pSvcLocator), m_events(0) -{ - m_pythia_stream = "PYTHIA_INIT"; - declareProperty("nuclearA", m_nuclearA = 208); - declareProperty("minBiasYN",m_minBias = true ); - declareProperty("bimpact", m_bimpact = 0.0 ); - declareProperty("sqrtSNN", m_rootsNN = 2760.); - declareProperty("seed", m_randomseed = 19780503); - declareProperty("PythiaCommand", m_pythiaCommandVector); - declareProperty("TuneIndex", m_tune_index=129); - -} - - -//-------------------------------------------------------------------------- - - -Pyquench::~Pyquench() -{ } - - -//--------------------------------------------------------------------------- - - -StatusCode Pyquench::genInitialize() { - ATH_MSG_INFO("Generators/Pyquench ===> PYTHIA INITIALISING.\n"); - - // Initialize the random number generator stream - /// @todo Remove: this is already done by the GenModule base class - static const bool CREATEIFNOTTHERE(true); - StatusCode RndmStatus = service("AtRndmGenSvc", m_AtRndmGenSvc_p, CREATEIFNOTTHERE); - if (!RndmStatus.isSuccess() || 0 == Pyquench::m_AtRndmGenSvc_p) { - ATH_MSG_ERROR(" Could not initialize Random Number Service"); - return RndmStatus; - } - m_pythia_stream = "PYTHIA_INIT"; - - // Now setup up Pythia taking into account user input - setPythiaParameters(); - std::stringstream ss; - ss << std::setw(10) << "PYQPAR" - << std::setw(10) << this->pyqpar().T0u() - << std::setw(10) << this->pyqpar().tau0u() - << std::setw(10) << this->pyqpar().nfu() - << std::setw(10) << this->pyqpar().ienglu() - << std::setw(10) << this->pyqpar().ianglu() - << std::endl; - ATH_MSG_INFO(ss.str()); - std::cout << ss.str() << std::endl; - // Save the PYTHIA_INIT stream seeds.... - CLHEP::HepRandomEngine* engine = Pyquench::m_AtRndmGenSvc_p->GetEngine(m_pythia_stream); - const long* sip = engine->getSeeds(); - long int si1 = sip[0]; - long int si2 = sip[1]; - - // set up the input parameters to pyinit: these cannot yet be changed by the user - const char* frame = "CMS "; - const char* proj = "P "; - const char* targ = "P "; - - // Initialize Pythia - pyinit_(frame, proj, targ, &m_rootsNN, - strlen(frame), strlen(proj), strlen(targ)); - - ATH_MSG_INFO("Generators/Pyquench ===> pyinit_ was called \n"); - - // ... and set them back to the stream for proper save - m_AtRndmGenSvc_p->CreateStream(si1, si2, m_pythia_stream); - - // And now set up to the use "Pythia" generation stream - m_pythia_stream = "PYTHIA"; - - // pylist_(&minlist); - m_events = 0; - - // Set size of common blocks in HEPEVT: note these correspond to stdhep - HepMC::HEPEVT_Wrapper::set_sizeof_int(4); - HepMC::HEPEVT_Wrapper::set_sizeof_real(8); - HepMC::HEPEVT_Wrapper::set_max_number_entries(10000); - - return StatusCode::SUCCESS; -} - -StatusCode Pyquench::callGenerator() -{ - ATH_MSG_INFO(" PYQUEN generating."); - - // Write/Read the random numbers to/from file if requested - // - // if (m_RndmSwitch > 0) RandomNumberIO(); - - // Save the random number seeds in the event - // - CLHEP::HepRandomEngine* engine = m_AtRndmGenSvc_p->GetEngine(m_pythia_stream); - const long* s = engine->getSeeds(); - - m_seeds.clear(); - m_seeds.push_back(s[0]); - m_seeds.push_back(s[1]); - - - //eml 29.03.10 change mstj(1)=1 to mstj(1)=0 (fix from Nathan Grau) - this->pydat1().mstj(1)=0; - pyevnt_(); - int ifb=0; - if (m_minBias) ifb = 1; - - // Convert the nucleus A to a double - // - double inputA = m_nuclearA; - - pyquen_(&inputA, &ifb, &m_bimpact); - - // Now call pythia again with hadronization on - // - this->pydat1().mstj(1)=1; - pyexec_(); - - - // update event counter - ++m_events; - - // Convert from PYJETS to HEPEVT - // - int mconv = 1; - pyhepc_(&mconv); - HepMC::HEPEVT_Wrapper::set_event_number(m_events); - - return StatusCode::SUCCESS; -} - - -//-------------------------------------------------------------------------- - - -StatusCode Pyquench::genFinalize() { - ATH_MSG_INFO(" PYTHIA Ending."); - return StatusCode::SUCCESS; -} - - -//-------------------------------------------------------------------------- - - - -StatusCode Pyquench::fillEvt(HepMC::GenEvent* evt) -{ - ATH_MSG_DEBUG(" PYTHIA Atlas_HEPEVT Filling."); - store_Atlas_HEPEVT(); - - ATH_MSG_DEBUG(" PYTHIA Filling." ); - HepMC::IO_HEPEVT hepio; - hepio.set_print_inconsistency_errors(0); - - hepio.fill_next_event(evt); - evt->set_signal_process_id(this->pyint1().mint(1)); - evt->set_random_states(m_seeds); - evt->weights().push_back(this->pypars().pari(7)); - evt->weights().push_back(this->pypars().pari(9)); - evt->weights().push_back(this->pypars().pari(10)); - - // Set beam particle status = 4 - if (evt->valid_beam_particles()) { - evt->beam_particles().first->set_status(4); - evt->beam_particles().second->set_status(4); - } - - // PDF weights, using Pdf Info object: pdf_id, x_1, x_1, Q2, f_1, f_2 - const int id1=this->pypars().msti(15); - const int id2=this->pypars().msti(16); - const double x1=this->pypars().pari(33); - const double x2=this->pypars().pari(34); - const double q=this->pypars().pari(23); - const double pdf1=(double)this->pypars().pari(29); // x*pdf1 - const double pdf2=(double)this->pypars().pari(30); // x*pdf2 - const int pdfId1 = (int)this->pypars().mstp( 51 ); // LHAPDF set id of first parton - const int pdfId2 = (int)this->pypars().mstp( 51 ); // LHAPDF set id of second -- - - HepMC::PdfInfo tmp_pdi(id1, id2, x1, x2, q, pdf1, pdf2, pdfId1, pdfId2); - evt->set_pdf_info(tmp_pdi); - - ATH_MSG_DEBUG("pdfinfo: "<< evt->pdf_info()->id1()); - ATH_MSG_DEBUG("pdfinfo: "<< evt->pdf_info()->id2()); - ATH_MSG_DEBUG("pdfinfo: "<< evt->pdf_info()->x1()); - ATH_MSG_DEBUG("pdfinfo: "<< evt->pdf_info()->x2()); - ATH_MSG_DEBUG("pdfinfo: "<< evt->pdf_info()->scalePDF()); - ATH_MSG_DEBUG("pdfinfo: "<< evt->pdf_info()->pdf1()); - ATH_MSG_DEBUG("pdfinfo: "<< evt->pdf_info()->pdf2()); - ATH_MSG_DEBUG("pdfinfo: "<< evt->pdf_info()->pdf_id1()); - ATH_MSG_DEBUG("pdfinfo: "<< evt->pdf_info()->pdf_id2()); - - // Convert cm->mm and GeV->MeV - // cmTomm(evt); - GeVToMeV(evt); - - return StatusCode::SUCCESS; -} - - -//-------------------------------------------------------------------------- - - -void Pyquench::store_Atlas_HEPEVT(void) -{ - ATH_MSG_DEBUG("atlas_HEPEVT------" << s_atlas_HEPEVT->nhep() ); - ATH_MSG_DEBUG("atlas_HEPEVT------" << s_atlas_HEPEVT->isthep(10) ); - ATH_MSG_DEBUG("atlas_HEPEVT------" << s_atlas_HEPEVT->idhep(10) ); - ATH_MSG_DEBUG("atlas_HEPEVT------" << s_atlas_HEPEVT->jmohep(1,10) ); - ATH_MSG_DEBUG("atlas_HEPEVT------" << s_atlas_HEPEVT->jdahep(2,10) ); - - s_atlas_HEPEVT->fill(); - - Atlas_HEPEVT* ahep = new Atlas_HEPEVT(); - *(ahep) = *(s_atlas_HEPEVT); - static const std::string keyid = "Pythia"; - StatusCode sc = evtStore()->record(ahep, keyid); - if (!sc.isSuccess()) ATH_MSG_WARNING("Could not record Atlas_HEPEVT"); - } - -//-------------------------------------------------------------------------- - - -void Pyquench::setPythiaParameters() -{ - - this->pydatr().mrpy(1) = m_randomseed; - this->pypars().mstp(5) = m_tune_index; - - //set what is necessary for correct use of Pythia within Athena: - //----------------------------------------------------------------------------- - this->pypars().mstp(128) =1; // fix junk output for documentary particles - this->pydat1().mstu(21) =1; // error handling switch - this->pydat1().mstj(22)=2; // (Make K_S, Lambda stable) - //----------------------------------------------------------------------------- - ATH_MSG_INFO( "setPythiaTune: using Pythia internal tune via PYTUNE(" << m_tune_index <<") call."); - ATH_MSG_INFO( "setting parameters needed for desired functioning of Pythia within Athena "); - ATH_MSG_INFO( " mstp(128) =1; fix junk output for documentary particles "); - ATH_MSG_INFO( " mstu(21) =1; error handling switch "); - ATH_MSG_INFO( " mstj(22) =2; (Make K_S, Lambda stable) "); - ATH_MSG_INFO( " Please note: "); - ATH_MSG_INFO( " 1. in the jO overrides of the parameters set by PYTUNE # "<< m_tune_index <<" will have no effect " ); - ATH_MSG_INFO( " - this correspods to (standalone) Pythia behavior " ); - ATH_MSG_INFO( " 2. handling of non-existing PYTUNE tune is same as for (default) Pythia standalone." ); - - for (unsigned int i = 0; i < m_pythiaCommandVector.size(); i++) - { - ATH_MSG_INFO(" Command is: " << m_pythiaCommandVector[i]); - StringParse mystring(m_pythiaCommandVector[i]); - std::string myblock = mystring.piece(1); - std::string myentry = mystring.piece(2); - std::string mystr = mystring.piece(3); - std::string mystr2 = mystring.piece(4); - std::string mystr3 = mystring.piece(5); - int myint1 = mystring.intpiece(3); - int myint2 = mystring.intpiece(4); - int myint3 = mystring.intpiece(5); - int myint4 = mystring.intpiece(6); - //int myint5 = mystring.intpiece(7); - double myfl0 = mystring.numpiece(3); - double myfl1 = mystring.numpiece(4); - double myfl2 = mystring.numpiece(5); - double myfl3 = mystring.numpiece(6); - // For ExoGraviton_i and PythiaBc_i user param. input - //int myint6 = mystring.intpiece(2); - - // Note that Pythia needs doubles hence the convert here - if (myentry!="use_PYINIT") ATH_MSG_INFO(myblock << " block " << myentry << " item " << myint1 << " value " << myfl1); - else ATH_MSG_INFO(myblock << " block " << myentry << " set to " << mystr << " " <<mystr2<<" " <<mystr3<<" "<<myfl3); - - - if (myblock == "pysubs") - { - if(myentry == "msel") this->pysubs().msel()=myint1; - else if (myentry == "msub") this->pysubs().msub(myint1)=myint2; - else if (myentry == "ckin") this->pysubs().ckin(myint1)=myfl1; - else if (myentry == "kfin") this->pysubs().kfin(myint1,myint2)=myint3; - else ATH_MSG_ERROR("PYTHIA ERROR, block PYSUBS has MSEL, MSUB, KFIN AND CKIN: YOU HAVE SPECIFIED " << myentry); - } - else if (myblock == "pypars") - { - if(myentry == "mstp") this->pypars().mstp(myint1)=myint2; - else if(myentry == "msti") this->pypars().msti(myint1)=myint2; - else if(myentry == "parp") this->pypars().parp(myint1)=myfl1; - else if(myentry == "pari") this->pypars().pari(myint1)=myfl1; - else ATH_MSG_ERROR("PYTHIA ERROR, block PYPARS has MSTP,PARP, MSTI AND PARI: YOU HAVE SPECIFIED " << myentry); - } - else if (myblock == "pydat1") - { - if(myentry == "mstu") this->pydat1().mstu(myint1)=myint2; - else if(myentry == "mstj") this->pydat1().mstj(myint1)=myint2; - else if(myentry == "paru") this->pydat1().paru(myint1)=myfl1; - else if(myentry == "parj") this->pydat1().parj(myint1)=myfl1; - else ATH_MSG_ERROR("PYTHIA ERROR, block PYDAT1 HAS MSTU, MSTJ, PARU AND PARJ: YOU HAVE SPECIFIED " << myentry); - } - else if (myblock == "pydat2") - { - if(myentry == "kchg") this->pydat2().kchg(myint1,myint2)=myint3; - else if(myentry == "pmas") this->pydat2().pmas(pycomp_(&myint1),myint2)=myfl2; - else if(myentry == "parf") this->pydat2().parf(myint1)=myfl1; - else if(myentry == "vckm") this->pydat2().vckm(myint1,myint2)=myfl2; - else ATH_MSG_ERROR("PYTHIA ERROR, block PYDAT2 HAS KCHG, PMAS, PARF AND VCKM: YOU HAVE SPECIFIED " << myentry); - - } - else if (myblock == "pydat3") - { - if(myentry == "mdcy") this->pydat3().mdcy(myint1,myint2)=myint3; - else if(myentry == "mdme") this->pydat3().mdme(myint1,myint2)=myint3; - else if(myentry == "brat") this->pydat3().brat(myint1)=myfl1; - else if(myentry == "kfdp") this->pydat3().kfdp(myint1,myint2)=myint3; - else ATH_MSG_ERROR("PYTHIA ERROR, block PYDAT3 HAS KFDP, MDCY, BRAT AND MDME : YOU HAVE SPECIFIED " << myentry); - } - else if (myblock == "pydatr") - { - if(myentry == "mrpy") - { - ATH_MSG_INFO(" !!!!!!!!!! WARNING ON PYTHIA RANDOM NUMBERS !!!!!!!! "); - ATH_MSG_INFO(" THE ATHENA/PYTHIA DOES NOT USE ANY MORE THE STANDARD "); - ATH_MSG_INFO(" PYTHIA RANDOM NUMBER SERVICES. SINCE RELEASE 5.2.0 THE"); - ATH_MSG_INFO(" ATHENA SERVICE AtRndmGenSvc IS USED. PLEASE FOR MORE "); - ATH_MSG_INFO(" DETAILS LOOK IN "); - ATH_MSG_INFO(" http://atlassw1.phy.bnl.gov/lxrsource/current/atlas/Generators/GeneratorModules/doc/Pythia.pdf "); - ATH_MSG_INFO(" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! "); - - this->pydatr().mrpy(myint1)=myint2; - } - else if(myentry == "rrpy") this->pydatr().rrpy(myint1)=myfl1; - else ATH_MSG_ERROR("PYTHIA ERROR, block PYDATR HAS MRPY AND RRPY: YOU HAVE SPECIFIED " << myentry); - } - - else if (myblock == "pyint2") - { - if (myentry == "iset") this->pyint2().iset(myint1)=myint2; - else if (myentry == "kfpr") this->pyint2().kfpr(myint1,myint2)=myint3; - else if (myentry == "coef") this->pyint2().coef(myint1,myint2)=myfl2; - else if (myentry == "icol") this->pyint2().icol(myint1,myint2,myint3)=myint4; - else ATH_MSG_ERROR("PYTHIA ERROR, block PYINT2 has ISET KFPR COEF AND ICOL: YOU HAVE SPECIFIED "<< myentry); - } - else if (myblock == "pyqpar") - { - if(myentry == "T") this->pyqpar().T0u()=myfl0; - else if(myentry == "tau") this->pyqpar().tau0u()=myfl0; - else if(myentry == "nfu") this->pyqpar().nfu()=myint1; - else if(myentry == "ienglu") this->pyqpar().ienglu()=myint1; - else if(myentry == "ianglu") this->pyqpar().ianglu()=myint1; - else ATH_MSG_ERROR("PYTHIA ERROR, block PYQPAR has T tau nfu ienlu and ianglu: YOU HAVE SPECIFIED " << myentry); - } - - }//end loop -} diff --git a/Generators/Pyquench_i/src/components/Pythia_i_entries.cxx b/Generators/Pyquench_i/src/components/Pythia_i_entries.cxx deleted file mode 100644 index f6d50bfe7bb65384d76efbf6c42b59084f7d6f86..0000000000000000000000000000000000000000 --- a/Generators/Pyquench_i/src/components/Pythia_i_entries.cxx +++ /dev/null @@ -1,4 +0,0 @@ -#include "Pyquench_i/Pyquench.h" - -DECLARE_COMPONENT( Pyquench ) - diff --git a/Generators/Pyquench_i/src/gpyqar.f b/Generators/Pyquench_i/src/gpyqar.f deleted file mode 100644 index 6a633daa0d1ab3f08feb087d792fd7fe196ee069..0000000000000000000000000000000000000000 --- a/Generators/Pyquench_i/src/gpyqar.f +++ /dev/null @@ -1,10 +0,0 @@ - INTEGER*4 FUNCTION PYQPAR_ADDRESS() - IMPLICIT NONE - INTEGER nfu,ienglu,ianglu - DOUBLE PRECISION T0u,tau0u - COMMON/PYQPAR/ T0u,tau0u,nfu,ienglu,ianglu - INTEGER*4 GETADDR - - PYQPAR_ADDRESS = GETADDR(T0u) - RETURN - END diff --git a/Generators/Pyquench_i/src/pyquen.f b/Generators/Pyquench_i/src/pyquen.f deleted file mode 100644 index 73976b55ba2e0d645582ddfff182d3127fe43464..0000000000000000000000000000000000000000 --- a/Generators/Pyquench_i/src/pyquen.f +++ /dev/null @@ -1,1507 +0,0 @@ - -*---------------------------------------------------------------------- -* -* Filename : PYQUEN.F -* -* Author : Igor Lokhtin (Igor.Lokhtin@cern.ch) -* Version : PYQUEN1_5.f, v.1.5.1 -* Last revision v.5.1 : 19-DEC-2007 -* Last revision v.5.1.1 : 06-MAY-2010 -* -*====================================================================== -* -* Description : Event generator for simulation of parton rescattering -* and energy loss in expanding quark-gluon plasma created -* in ultrarelativistic heavy ion AA collisons -* (implemented as modification of standard Pythia jet event) -* -* Reference: I.P. Lokhtin, A.M. Snigirev, Eur. Phys. J. C 46 (2006) 211 -* -*====================================================================== - - SUBROUTINE PYQUEN(A,ifb,bfix) - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - INTEGER PYK,PYCHGE,PYCOMP - external pydata - external pyp,pyr,pyk,pyjoin,pyshow - external funbip,prhoaa,pfunc1 - common /pyjets/ n,npad,k(4000,5),p(4000,5),v(4000,5) - common /pydat1/ mstu(200),paru(200),mstj(200),parj(200) - common /pysubs/ msel,mselpd,msub(500),kfin(2,-40:40),ckin(200) - common /plpar1/ tau0,T0,TC,sigqq,AW,RA,mvisc,nf - common /plglur/ glur(1000,4),kglu(1000,6),nrg,nrgm - common /plquar/ pqua(1000,5),kqua(1000,5),nrq - common /parimp/ b1,psib1,rb1,rb2,noquen - common /pyqpar/ T0u,tau0u,nfu,ienglu,ianglu - common /plfpar/ bgen - common /pygeom/ BC - common /pythic/ PBAB(110),PTAB(110),PTAAB(110) - common /pynup1/ bp,x - save/pyjets/,/pydat1/,/pysubs/,/plglur/,/plquar/,/pygeom/, - > /pythic/,/plpar1/,/parimp/,/pyqpar/,/plfpar/ - dimension ijoik(2),ijoin(1000),ijoin0(1000),nis(500),nss(500), - > nas(500),nus(500) - -* set initial event paramters - AW=A ! atomic weight - RA=1.15d0*AW**0.333333d0 ! nucleus radius in fm - RA3=3.d0*RA - mvisc=0 ! flag of QGP viscosity (off here) - TC=0.2d0 ! crutical temperature - - if(nfu.ne.0.and.nfu.ne.1.and.nfu.ne.2.and.nfu.ne.3) nfu=0 - nf=nfu ! number of active flavours in QGP - if(tau0u.lt.0.01d0.or.tau0u.gt.10.d0) tau0u=0.1d0 - tau0=tau0u ! proper time of QGP formation - if(T0u.lt.0.2d0.or.T0u.gt.2.d0) T0u=1.d0 - T0=T0u*(AW/207.d0)**0.166667d0 ! initial QGP temperatute at b=0 - if(ienglu.ne.0.and.ienglu.ne.1.and.ienglu.ne.2) ienglu=0 ! e-loss type - if(ianglu.ne.0.and.ianglu.ne.1.and.ianglu.ne.2) ianglu=0 ! angular spec. -* - pi=3.14159d0 - -* avoid stopping run if pythia does not conserve energy due to collisional loss - mstu(21)=1 - -* creation of arrays for tabulation of beam/target nuclear thickness function - Z2=4.d0*RA - Z1=-1.d0*Z2 - H=0.01d0*(Z2-Z1) - do ib=1,110 - BC=RA3*(ib-1)/109.d0 - CALL SIMPA(Z1,Z2,H,0.005d0,1.d-8,prhoaa,Z,RES,AIH,AIABS) - PBAB(ib)=BC - PTAB(ib)=AW*RES - end do - -* calculation of beam/target nuclear overlap function at b=0 -* if ifb=1: creation of arrays for tabulation of nuclear overlap function - npb=1 - if (ifb.eq.1) npb=110 - Z1=0.d0 - Z2=6.28318d0 - H=0.01d0*(Z2-Z1) - do ib=1,npb - bp=PBAB(ib) - CALL SIMPA(Z1,Z2,H,0.05d0,1.d-8,PFUNC1,X,RES,AIH,AIABS) - PTAAB(ib)=RES - end do - -* generate impact parameter of A-A collision with jet production - if(ifb.eq.0) then - if(bfix.lt.0.d0) then - write(6,*) 'Impact parameter less than zero!' - bfix=0.d0 - end if - if (bfix.gt.RA3) then - write(6,*) 'Impact parameter larger than three nuclear radius!' - bfix=RA3 - end if - b1=bfix - else - call bipsear(fmax1,xmin1) - fmax=fmax1 - xmin=xmin1 - 11 bb1=xmin*pyr(0) - ff1=fmax*pyr(0) - fb=funbip(bb1) - if(ff1.gt.fb) goto 11 - b1=bb1 - end if - bgen=b1 - -* generate single event with partonic energy loss - nrg=0 - ehard=ckin(3) - call plinit(ehard) - call plevnt(ehard) - -* reset all in-vacuum radiated guark 4-momenta and codes to zero - do i=1,1000 - do j=1,5 - pqua(i,j)=0.d0 - kqua(i,j)=0 - end do - end do - nrq=0 - -* generate final state shower in vacuum if it was excluded before - nrgm=nrg ! fix number of in-medium emitted gluons - ip1=0 - ip2=0 - ip01=0 - ip02=0 - ip001=0 - ip002=0 - if(mstj(41).ne.0) goto 5 - mstj(41)=1 - nn=n - do i=9,nn - if(k(i,3).eq.7) then - ip1=i ! first hard parton (line ip1) - kfh1=k(i,1) ! status code of first hard parton - qmax1=pyp(i,10) ! transverse momentum of first hard parton - end if - if(k(i,3).eq.8) then - ip2=i ! second hard parton (line ip2) - kfh2=k(i,1) ! status code of second hard parton - qmax2=pyp(i,10) ! transverse momentum of second hard parton - end if - end do - - n1=n - call pyshow(ip1,0,qmax1) ! vacuum showering for first hard parton - if(n.eq.n1) ip1=0 - n2=n - call pyshow(ip2,0,qmax2) ! vacuum showering for second hard parton - if(n.eq.n2) ip2=0 - mstj(41)=0 - if(n.eq.nn) goto 5 - -* find two leading partons after showering - do i=nn+1,n - if(k(i,3).eq.ip1) ip001=i ! first daughter of first hard parton - if(k(i,3).eq.ip2) ip002=i ! first daughter of second hard parton - end do - ptle1=0.d0 - ptle2=0.d0 - do i=nn+1,n - if (k(i,1).eq.14) goto 3 - if(i.ge.ip002.and.ip002.gt.0) then - ptl02=pyp(i,10) - if(ptl02.gt.ptle2.and.k(i,2).eq.k(ip2,2)) then - ip02=i ! leading parton in second shower (line ip02) - ptle2=ptl02 ! pt of the leading parton - end if - elseif(ip001.gt.0) then - ptl01=pyp(i,10) - if(ptl01.gt.ptle1.and.k(i,2).eq.k(ip1,2)) then - ip01=i ! leading parton in first shower (line ip01) - ptle1=ptl01 ! pt of the leading parton - end if - end if - 3 continue - end do - -* replace two hard partons by two leading partons in original event record - if(ip1.gt.0) then - do j=1,5 - v(ip1,j)=v(ip01,j) - p(ip1,j)=p(ip01,j) - end do - k(ip1,1)=kfh1 -* fix first/last daughter for moving entry - do jgl=1,n - if(k(jgl,4).eq.ip01) k(jgl,4)=ip1 - if(k(jgl,5).eq.ip01) k(jgl,5)=ip1 - end do -* - end if - if(ip2.gt.0) then - do j=1,5 - v(ip2,j)=v(ip02,j) - p(ip2,j)=p(ip02,j) - end do - k(ip2,1)=kfh2 -* fix first/last daughter for moving entry - do jgl=1,n - if(k(jgl,4).eq.ip02) k(jgl,4)=ip2 - if(k(jgl,5).eq.ip02) k(jgl,5)=ip2 - end do -* - end if - -* add final showering gluons to the list of in-medium emitted gluons, -* fill the list of emitted quarks by final showering quark pairs, -* and remove showering gluons and quarks from the event record - do i=nn+1,n - if(k(i,1).eq.14.or.i.eq.ip01.or.i.eq.ip02) goto 12 - if(k(i,2).ne.21) then ! filling 'plquar' arrays for quarks - nrq=nrq+1 - do j=1,5 - kqua(nrq,j)=k(i,j) - pqua(nrq,j)=p(i,j) - end do - kqua(nrq,1)=2 - goto 12 - end if - if(i.ge.ip002.and.ip002.gt.0) then - ish=ip2 - else - ish=ip1 - end if - nrg=nrg+1 - nur=nrg - 7 ishm=kglu(nur-1,6) - if(ish.ge.ishm.or.nur.le.2) goto 6 ! adding gluons in 'plglur' arrays - do j=1,6 - kglu(nur,j)=kglu(nur-1,j) - end do - do j=1,4 - glur(nur,j)=glur(nur-1,j) - end do - nur=nur-1 - goto 7 - 6 kglu(nur,1)=2 ! status code - kglu(nur,2)=k(i,2) ! particle identificator - kglu(nur,3)=k(ish,3) ! parent line number - kglu(nur,4)=0 ! special colour info - kglu(nur,5)=0 ! special colour info - kglu(nur,6)=ish ! associated parton number - glur(nur,1)=p(i,4) ! energy - glur(nur,2)=pyp(i,10) ! pt - glur(nur,3)=pyp(i,15) ! phi - glur(nur,4)=pyp(i,19) ! eta - 12 continue -* remove partons from event list - do j=1,5 - v(i,j)=0.d0 - k(i,j)=0 - p(i,j)=0.d0 - end do - end do - n=nn - - 5 continue - -* stop generate event if there are no additional gluons - if(nrg.lt.1) goto 1 - -* define number of stirngs (ns) and number of entries in strings before -* in-medium radiation (nis(ns)) - ns=0 - nes=0 - i0=0 - i1=0 - do i=1,500 - nis(i)=0 - nas(i)=0 - nss(i)=0 - nus(i)=0 - end do - do i=9,n - ks=k(i,1) - ksp=k(i-1,1) - if(ks.eq.2) then - nis(ns+1)=nis(ns+1)+1 - elseif(ks.eq.1.and.nis(ns+1).gt.0) then - nis(ns+1)=nis(ns+1)+1 - nes=nes+nis(ns+1) ! nes - total number of entries - nss(ns+1)=nes - ns=ns+1 - elseif(ks.ne.2.and.ksp.ne.2.and.ns.gt.0) then - i1=i1+1 ! last i1 lines not included in strings - end if - end do - i0=n-nes-i1 ! first i0 lines not included in strings - do i=1,ns - nss(i)=nss(i)+i0 - end do - -* move fragmented particles in bottom of event list - i=i0+1 - 2 ks=k(i,1) - ksp=k(i-1,1) - if(ks.ne.2.and.ksp.ne.2) then - n=n+1 - do j=1,5 - v(n,j)=v(i,j) - k(n,j)=k(i,j) - p(n,j)=p(i,j) - end do -* fix first/last daughter for moving entry - do jgl=1,n - if(k(jgl,4).eq.i) k(jgl,4)=n - if(k(jgl,5).eq.i) k(jgl,5)=n - end do -* - do in=i+1,n - do j=1,5 - v(in-1,j)=v(in,j) - k(in-1,j)=k(in,j) - p(in-1,j)=p(in,j) - end do -* fix first/last daughter for moving entry - do jgl=1,n - if(k(jgl,4).eq.in) k(jgl,4)=in-1 - if(k(jgl,5).eq.in) k(jgl,5)=in-1 - end do -* - end do - do ip=1,nrg - ku=kglu(ip,6) - if(ku.gt.i) kglu(ip,6)=ku-1 - end do - n=n-1 - else - i=i+1 - end if - if(i.le.n-i1) goto 2 - -* define number of additional entries in strings, nas(ns) - do i=1,nrg - kas=kglu(i,6) - if(kas.le.nss(1)) then - nas(1)=nas(1)+1 - else - do j=2,ns - if(kas.le.nss(j).and.kas.gt.nss(j-1)) - > nas(j)=nas(j)+1 - end do - end if - end do - do j=1,ns - do i=1,j - nus(j)=nus(j)+nas(i) - end do - end do - -* add emitted gluons in event list - nu=n - n=n+nrg - do i=nu,nu-i1,-1 - is=i+nrg - do j=1,5 - v(is,j)=v(i,j) - k(is,j)=k(i,j) - p(is,j)=p(i,j) - end do -* fix first/last daughter for moving entries - do jgl=1,n - if(k(jgl,4).eq.i) k(jgl,4)=is - if(k(jgl,5).eq.i) k(jgl,5)=is - end do -* - end do - - do ia=ns-1,1,-1 - do i=nss(ia+1)-1,nss(ia),-1 - is=i+nus(ia) - do j=1,5 - v(is,j)=v(i,j) - k(is,j)=k(i,j) - p(is,j)=p(i,j) - end do -* fix first/last daughter for moving entries - do jgl=1,n - if(k(jgl,4).eq.i) k(jgl,4)=is - if(k(jgl,5).eq.i) k(jgl,5)=is - end do -* - end do - end do - - do i=1,nrg - if(i.le.nus(1)) then - ia=nss(1)-1+i - else - do in=2,ns - if(i.le.nus(in).and.i.gt.nus(in-1)) - > ia=nss(in)-1+i - end do - end if - eg=glur(i,1) - ptg=glur(i,2) - phig=glur(i,3) - etag=glur(i,4) - do j=1,5 - v(ia,j)=0.d0 - k(ia,j)=kglu(i,j) - end do - p(ia,1)=ptg*dcos(phig) - p(ia,2)=ptg*dsin(phig) - p(ia,3)=dsqrt(abs(eg*eg-ptg*ptg)) - if(etag.lt.0.d0) p(ia,3)=-1.d0*p(ia,3) - p(ia,4)=dsqrt(ptg*ptg+p(ia,3)**2) - p(ia,5)=0.d0 - end do - -* rearrange partons to form strings in event list - do ij=1,1000 - ijoin(ij)=0 - ijoin0(ij)=0 - end do - do i=1,ns - njoin=nis(i)+nas(i) - if(i.eq.1) then - do j=1,njoin - ijoin(j)=i0+j - end do - else - do j=1,njoin - ijoin(j)=nss(i-1)+nus(i-1)+j - end do - end if - -* re-oder additional gluons by z-coordinate along the string - if(nas(i).gt.0) then - ja=njoin-nas(i) - jo1=ijoin(1) - jon=ijoin(njoin) - etasum=0.d0 - detaj=pyp(jo1,19)-pyp(jon,19) - do j=ja,njoin-1 - jnum=0 - etaj=pyp(jo1+j-1,19) - etasum=etasum+etaj - do jj=ja,njoin-1 - etajj=pyp(jo1+jj-1,19) - if(detaj.lt.0) then - if(etajj.lt.etaj.and.j.ne.jj) jnum=jnum+1 - else - if(etajj.gt.etaj.and.j.ne.jj) jnum=jnum+1 - end if - if(etajj.eq.etaj.and.j.lt.jj) jnum=jnum+1 - end do - ijoin(ja+jnum)=jo1+j-1 - end do - detas1=abs(pyp(jo1,19)-etasum) - detasn=abs(pyp(jon,19)-etasum) - if(detasn.gt.detas1) then - do j=1,njoin - ijoin0(j)=ijoin(j) - end do - do j=2,nas(i)+1 - ijoin(j)=ijoin0(ja+j-2) - end do - do j=nas(i)+2,njoin-1 - ijoin(j)=ijoin0(j-nas(i)) - end do - end if - end if - -* form strings - call pyjoin(njoin,ijoin) - - end do - -* add in-vacuum emitted quark pairs - if(nrq.lt.2) goto 1 - do i=1,nrq,2 - n=n+2 - do j=1,5 - v(n-1,j)=0.d0 - k(n-1,j)=kqua(i,j) - p(n-1,j)=pqua(i,j) - end do - in=i+1 - 4 ktest=k(n-1,2)+kqua(in,2) - if(ktest.eq.0.or.in.eq.nrq) goto 8 - in=in+1 - goto 4 - 8 do j=1,5 - v(n,j)=0.d0 - k(n,j)=kqua(in,j) - p(n,j)=pqua(in,j) - end do - if(in.gt.i+1) then - do j=1,5 - kqua(in,j)=kqua(i+1,j) - pqua(in,j)=pqua(i+1,j) - end do - end if - end do - - do ij=1,2 - ijoik(ij)=0 - end do - do i=1,nrq-1,2 - k(n+1-i,1)=1 - ijoik(1)=n-i - ijoik(2)=n+1-i - call pyjoin(2,ijoik) - end do - - 1 continue - - return - end - -********************************* PLINIT *************************** - SUBROUTINE PLINIT(ET) -* set time-dependence of plasma parameters - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - external plvisc - common /plpar1/ tau0,T0,TC,sigqq,AW,RA,mvisc,nf - common /plpar2/ pln0,taupl,tauh,sigpl,sigh,sigplh,sigqqh,rg,rgn - common /plevol/ taup(5000),temp(5000),denp(5000),enep(5000) - save /plevol/,/plpar1/,/plpar2/ -* - pi=3.14159d0 - pi2=pi*pi - -* set number degrees of freedom in QGP - hgd=3.d0 - rg=(16.d0+10.5d0*nf)/hgd - rgn=(16.d0+9.d0*nf)/hgd - -* set 'fiction' sigma for parton rescattering in QGP - sigqq=4.2d0 - sigpl=2.25d0*2.25d0*sigqq*(16.d0+4.d0*nf)/(16.d0+9.d0*nf) - -* set intial plasma temperature, density and energy density in perfect -* (if mvisc=0) or viscous (mvisc=1,2) QGP with PLVISC subroitine - hst=0.15d0 - if(T0.gt.1.5d0.or.mvisc.eq.2) hst=0.25d0 - if(T0.gt.1.5d0.and.mvisc.ne.0) hst=0.9d0 - T01=T0*5.06d0 - TC1=TC*5.06d0 - pln0=(16.d0+9.d0*nf)*1.2d0*(T01**3)/pi2 - ened0=pi2*(16.d0+10.5d0*nf)*(T01**4)/30.d0 - hh=hst*tau0 - tau=tau0 ! proper time - T=T01 ! temperature - den=pln0 ! number density - ened=ened0 ! energy density - -* create array of parameters to configurate QGP time evolution - DO I=1,5000 - taup(i)=tau ! proper time - temp(i)=T/5.06d0 ! temperature - denp(i)=den ! number density - enep(i)=ened/5.06d0 ! energy density - ened1=0.5d0*hh*(1.3333d0*plvisc(T)/(tau*tau)-1.3333d0 - > *ened/tau)+ened - T1=(30.d0*ened1/((16.d0+10.5d0*nf)*pi2))**0.25d0 - tau1=tau+0.5d0*hh - ened=hh*(1.3333d0*plvisc(T1)/(tau1*tau1)-1.3333d0 - > *ened1/tau1)+ened - TPR=T - T=(30.d0*ened/((16.d0+10.5d0*nf)*pi2))**0.25d0 - den=(16.d0+9.d0*nf)*1.2d0*(T**3)/pi2 - tau=tau+hh - if(TPR.gt.TC1.and.T.le.TC1) taupl=tau-0.5d0*hh ! QGP lifetime taupl - END DO - tauh=taupl*rg ! mixed phase lifetime - - return - end -******************************** END PLINIT ************************** - -******************************* PLEVNT ****************************** - SUBROUTINE PLEVNT(ET) -* generate hard parton production vertex and passing with rescattering, -* collisional and radiative energy loss of each parton through plasma - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - INTEGER PYK,PYCHGE,PYCOMP - external plthik, pln, plt, pls, gauss, gluang - external pyp,pyr,pyk - common /plpar1/ tau0,T0,TC,sigqq,AW,RA,mvisc,nf - common /plpar2/ pln0,taupl,tauh,sigpl,sigh,sigplh,sigqqh,rg,rgn - common /thikpa/ fmax,xmin - common /pyjets/ n,npad,k(4000,5),p(4000,5),v(4000,5) - common /pyqpar/ T0u,tau0u,nfu,ienglu,ianglu - common /plglur/ glur(1000,4),kglu(1000,6),nrg,nrgm - common /factor/ cfac, kf - common /pleave/ taul, temlev - common /parimp/ b1, psib1, rb1, rb2, noquen - common /plen/ epartc, um - common /plos/ elr,rsk - common /numje1/ nuj1, nuj2 - save/pyjets/,/plglur/,/plpar1/,/plpar2/,/thikpa/,/factor/, - < /pleave/,/parimp/,/plen/,/plos/,/numje1/ -* - pi=3.14159d0 - -* find minimum of nuclear thikness function with subroutine plsear - psib1=pi*(2.d0*pyr(0)-1.d0) - call plsear (fmax1,xmin1) - fmax=fmax1 - xmin=xmin1 - -* generate vertex of jet production - iv=0 - 1 rr1=xmin*pyr(0) - ff1=fmax*pyr(0) - f=plthik(rr1) - iv=iv+1 - if(ff1.gt.f.and.iv.le.100000) goto 1 - r0=rr1 - rb1=dsqrt(abs(r0*r0+b1*b1/4.d0+r0*b1*dcos(psib1))) - rb2=dsqrt(abs(r0*r0+b1*b1/4.d0-r0*b1*dcos(psib1))) - rb1=max(rb1,1.d-4) - rb2=max(rb2,1.d-4) -* no quenching if noquen=1 or jet production vertex is out of effective dense zone - if(noquen.eq.1.or.rb1.gt.RA.or.rb2.gt.RA) goto 7 - -* find maximum of angular spectrum of radiated gluons with subroutine gluang - temin=0.5d0*pi - temax=0.5d0*(1.d0+dsqrt(5.d0))*0.0863d0 - ftemax=gluang(temax) - -* reset all radiated gluon 4-momenta and codes to zero ------------------- - do i=1,1000 - do j=1,4 - glur(i,j)=0.d0 - kglu(i,j)=0 - end do - kglu(i,5)=0 - kglu(i,6)=0 - end do - nrg=0 - -* generate changing 4-momentum of partons due to rescattering and energy loss -* (for partons with |eta|<3.5 and pt>3 GeV/c) - nuj1=9 ! minimum line number of rescattered parton - nuj2=n ! maximum line number of rescattered parton - do 2 ip=nuj1,nuj2 ! cycle on travelling partons - irasf=0 - iraz=0 - ks=k(ip,1) ! parton status code - kf=k(ip,2) ! parton identificator - ka=abs(kf) - ko=k(ip,3) ! origin (parent line number) - epart=abs(pyp(ip,10)) ! parton transverse momentum - etar=pyp(ip,19) ! parton pseudorapidity - if(ko.gt.6.and.epart.ge.3.d0.and.abs(etar). - > le.7.d0) then - if(ka.eq.21.or.ka.eq.1.or.ka.eq.2.or.ka.eq.3. - > or.ka.eq.4.or.ka.eq.5.or.ka.eq.6.or.ka.eq.7. - > or.ka.eq.8) then - if(ks.eq.2.or.ks.eq.1) then - phir=pyp(ip,15) ! parton azimuthal angle - tetr=pyp(ip,13) ! parton polar angle - yrr=pyp(ip,17) ! parton rapidity - stetr=dsin(tetr) ! parton sin(theta) - if(abs(stetr).le.1.d-05) then - if(stetr.ge.0.d0) then - stetr=1.d-05 - else - stetr=-1.d-05 - end if - end if - phir1=-1.d0*phir - tetr1=-1.d0*tetr - -* set colour factor - if(kf.eq.21) then - cfac=1.d0 ! for gluon - else - cfac=0.44444444d0 ! for quark - end if - -* boost from laboratory system to system of hard parton - ipar=ip - bet0=(r0*dcos(psib1)+0.5d0*b1)/rb1 - if(bet0.le.-1.d0) bet0=-0.99999d0 - if(bet0.ge.1.d0) bet0=0.99999d0 - bet=dacos(bet0) - if(psib1.lt.0.d0) bet=-1.d0*bet - phip=phir-bet - if(phip.gt.pi) phip=phip-2.d0*pi - if(phip.lt.-1.d0*pi) phip=phip+2.d0*pi - call pyrobo(ip,ip,0.d0,phir1,0.d0,0.d0,0.d0) - call pyrobo(ip,ip,tetr1,0.d0,0.d0,0.d0,0.d0) - -* calculate proper time of parton leaving the effective dense zone - aphin=(r0*r0-b1*b1/4.d0)/(rb1*rb2) - if(aphin.le.-1.d0) aphin=-0.99999d0 - if(aphin.ge.1.d0) aphin=0.99999d0 - phin=dacos(aphin) - if(psib1.le.0.d0) phin=-1.d0*phin - phid=phip-phin - if(phid.gt.pi) phid=phid-2.d0*pi - if(phid.lt.-1.d0*pi) phid=phid+2.d0*pi - taul1=abs(dsqrt(abs(RA*RA-(rb1*dsin(phip))**2))-rb1*dcos(phip)) - taul2=abs(dsqrt(abs(RA*RA-(rb2*dsin(phid))**2))-rb2*dcos(phid)) - taul=min(taul1,taul2) ! escape time taul - temlev=plt(taul,rb1,rb2,yrr) ! QGP temperature at taul - if(taul.le.tau0) goto 100 ! escape from QGP if taul<tau0 - -* start parton rescattering in QGP with proper time iterations - tau=tau0 - xj=r0*dcos(psib1) - yj=r0*dsin(psib1) - rj1=rb1 - rj2=rb2 - 3 tfs=plt(tau,rj1,rj2,yrr) - xi=-10.d0*dlog(max(pyr(0),1.d-10))/(sigpl*pln(tau,rj1,rj2,yrr)) - vel=abs(p(ip,3))/dsqrt(p(ip,3)**2+p(ip,5)**2) ! parton velocity - if(vel.lt.0.3d0) goto 4 - tau=tau+xi*vel - xj=xj+xi*vel*dcos(phir) - yj=yj+xi*vel*dsin(phir) - rj1=sqrt(abs(yj**2+(xj+0.5d0*b1)**2)) - rj2=sqrt(abs(yj**2+(xj-0.5d0*b1)**2)) - if(tfs.le.TC) goto 100 ! escape if temperature drops below TC - -* transform parton 4-momentum due to next scattering with subroutine pljetr - epartc=p(ip,4) ! parton energy - um=p(ip,5) ! parton mass - sigtr=pls(tfs)*cfac*((p(ip,4)/pyp(ip,8))**2) - prob=sigpl/(sigtr/stetr+sigpl) - ran=pyr(0) - irasf=irasf+1 - if(irasf.gt.100000) goto 100 - if(ran.lt.prob) goto 3 - pltp=plt(tau,rj1,rj2,yrr) - if(pltp.le.TC) goto 100 ! escape if temperature drops below TC - pltp3=3.d0*pltp - pass=50.6d0/(pln(tau,rj1,rj2,yrr)*sigtr) - elr=0.d0 - rsk=0.d0 - call pljetr(tau,pass,pltp,ipar,epart) - irasf=0 - -* set 4-momentum (in lab system) of next radiated gluon for parton number >8 -* and fill arrays of radiated gluons in common block plglur - if(nrg.le.1000) then - if(abs(elr).gt.0.1d0.and.ip.gt.8) then -* generate the angle of emitted gluon - if(ianglu.eq.0) then - 6 te1=temin*pyr(0) - fte1=ftemax*pyr(0) - fte2=gluang(te1) - if(fte1.gt.fte2) goto 6 - tgl=te1 - elseif (ianglu.eq.1) then - tgl=((0.5d0*pi*epartc)**pyr(0))/epartc - else - tgl=0.d0 - end if - pgl=pi*(2.d0*pyr(0)-1.d0) -* in comoving system - pxgl=abs(elr)*stetr*(dcos(phir)*dcos(tgl)- - > dsin(phir)*dsin(tgl)*dsin(pgl)) - pygl=abs(elr)*stetr*(dsin(phir)*dcos(tgl)+ - > dcos(phir)*dsin(tgl)*dsin(pgl)) - pzgl=-1.d0*abs(elr)*stetr*dsin(tgl)*dcos(pgl) - ptgl=dsqrt(abs(pxgl*pxgl+pygl*pygl)) - psgl=dsqrt(abs(ptgl*ptgl+pzgl*pzgl)) -* recalculate in lab system - dyg=0.5d0*dlog(max(1.d-9,(psgl+pzgl)/(psgl-pzgl))) - pzgl=ptgl*dsinh(yrr+dyg) - psgl=dsqrt(abs(ptgl*ptgl+pzgl*pzgl)) -* - dpgl=pygl/pxgl - glur1=abs(elr) ! energy - glur3=datan(dpgl) ! phi - if(pxgl.lt.0.d0) then - if(pygl.ge.0.d0) then - glur3=glur3+pi - else - glur3=glur3-pi - end if - end if - glur4=0.5d0*dlog(max(1.d-9,(psgl+pzgl)/(psgl-pzgl))) ! eta - glur2=glur1/dcosh(glur4) ! pt - -* put in event list radiated gluons with pt > 0.2 GeV only - if(glur2.ge.0.2d0) then - nrg=nrg+1 -* set gluon 4-momentum - glur(nrg,1)=glur1 ! energy - glur(nrg,2)=glur2 ! pt - glur(nrg,3)=glur3 ! phi - glur(nrg,4)=glur4 ! eta -* set gluon codes - kglu(nrg,1)=2 ! status code - kglu(nrg,2)=21 ! particle identificator - kglu(nrg,3)=k(ipar,3) ! parent line number - kglu(nrg,4)=0 ! special colour info - kglu(nrg,5)=0 ! special colour info - kglu(nrg,6)=ipar ! associated parton number - end if - end if - else - write(6,*) 'Warning! Number of emitted gluons is too large!' - end if - -* set parton "thermalization" if pt<T - if(abs(p(ip,3)).gt.pltp3) goto 3 - 4 continue - if(p(ip,3).ge.0.d0) then - sigp=1.d0 - else - sigp=-1.d0 - end if - 5 iraz=iraz+1 - if(iraz.gt.100000) goto 100 - ep0=-0.15d0*(dlog(max(1.d-10,pyr(0)))+dlog(max(1.d-10,pyr(0)))+ - > dlog(max(1.d-10,pyr(0)))) - if(ep0.le.p(ip,5).or.ep0.ge.100.d0) goto 5 - pp0=dsqrt(abs(ep0**2-p(ip,5)**2)) - probt=pp0/ep0 - if(pyr(0).gt.probt) goto 5 - ctp0=2.d0*pyr(0)-1.d0 - stp0=dsqrt(abs(1.d0-ctp0**2)) - php0=pi*(2.d0*pyr(0)-1.d0) - p(ip,1)=pp0*stp0*dcos(php0) - p(ip,2)=pp0*stp0*dsin(php0) - p(ip,3)=sigp*pp0*ctp0 - p(ip,4)=dsqrt(p(ip,1)**2+p(ip,2)**2+p(ip,3)**2+p(ip,5)**2) - -* boost to laboratory system - 100 call pyrobo(ip,ip,tetr,phir,0.d0,0.d0,0.d0) - end if - end if - end if - 2 continue - 7 continue - - return - end -******************************* END PLEVNT ************************* - -******************************* PLJETR ***************************** - SUBROUTINE PLJETR(tau,y,x,ip,epart) -* transform parton 4-momentum due to scattering in plasma at time = tau - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - INTEGER PYK,PYCHGE,PYCOMP - external plfun1, pls - external pyp,pyr - common /plpar1/ tau0,T0,TC,sigqq,AW,RA,mvisc,nf - common /plpar2/ pln0,taupl,tauh,sigpl,sigh,sigplh,sigqqh,rg,rgn - common /pyjets/ n,npad,k(4000,5),p(4000,5),v(4000,5) - common /pyqpar/ T0u,tau0u,nfu,ienglu,ianglu - common /pljdat/ ej, z, ygl, alfs, um, epa - common /pleave/ taul, temlev - common /radcal/ aa, bb - common /factor/ cfac, kf - common /plos/ elr,rsk - save /pyjets/,/plpar1/,/plpar2/,/pyqpar/,/pljdat/,/pleave/,/plos/, - < /factor/,/radcal/ -* - pi=3.14159d0 - spi=dsqrt(pi) - tauu=x ! redenote temerature tauu=x - i=ip ! redenote parton number i=ip - iter=0 - iraz=0 - -* boost to system of comoving plasma constituent - phir=pyp(i,15) ! parton phi - tetr=pyp(i,13) ! parton theta - phir1=-1.d0*phir - tetr1=-1.d0*tetr - call pyrobo(i,i,0.d0,phir1,0.d0,0.d0,0.d0) - call pyrobo(i,i,tetr1,0.d0,0.d0,0.d0,0.d0) - pp=pyp(i,8) ! parton total momentum - ppl=abs(p(i,3)) ! parton pz - um=p(i,5) ! parton mass - epa=p(i,4) ! parton energy - ppt=pyp(i,10) ! parton pt - pphi=pyp(i,15) ! parton phi - - if(ppl.lt.3.d0) goto 222 ! no energy loss if pz<3 GeV/c - -* generation hard parton-plasma scattering with momentum transfer rsk - 221 ep0=-1.*tauu*(dlog(max(1.d-10,pyr(0)))+dlog(max(1.d-10, - > pyr(0)))+dlog(max(1.d-10,pyr(0)))) ! energy of 'thermal' parton - iter=iter+1 - if(ep0.lt.1.d-10.and.iter.le.100000) goto 221 - scm=2.*ep0*epa+um*um+ep0*ep0 - qm2=(scm-((um+ep0)**2))*(scm-((um-ep0)**2))/scm - bub=4.d0*tauu/TC - alf=6.d0*pi/((33.d0-2.d0*nf)*dlog(max(bub,1.d-10))) - z=abs(pi*4.d0*tauu*tauu*alf*(1.+nf/6.d0)) - bubs=dsqrt(z)/TC - alfs=6.d0*pi/((33.d0-2.d0*nf)*dlog(max(bubs,1.d-10))) - phmin2=z - phmax2=max(phmin2,qm2) - fqmax2=1.d0/(dlog(max(phmin2/(TC*TC),1.d-10)))**2 - 12 rn1=pyr(0) - tp=1.d0/(rn1/phmax2+(1.d0-rn1)/phmin2) - ftp=1.d0/(dlog(max(tp/(TC*TC),1.d-10)))**2 - fprob=ftp/fqmax2 - rn2=pyr(0) - if(fprob.lt.rn2) goto 12 - rsk=dsqrt(abs(tp)) - if(rsk.gt.ppl) rsk=ppl - -* calculate radiative energy loss per given scattering with subroutine plfun1 - ygl=y*cfac ! mean gluon free path in GeV^{-1} - elp=ygl*z ! mimimum radiated energy in LPM regime - ej=ppl - bb=ej ! maximum radiated energy - bbi=max(dsqrt(z),1.000001d0*elp) - aa=min(bb,bbi) ! minimum radiated energy - hh=0.00001d0*(bb-aa) - REPS=0.01d0 - AEPS=1.d-8 - CALL SIMPA(aa,bb,hh,REPS,AEPS,plfun1,om,resun,AIH,AIABS) -* ! integral over omega for radiative loss - call radsear(ermax1,eomin1) - ermax=ermax1 - eomin=eomin1 - 11 resu=eomin*pyr(0)+aa - fres=ermax*pyr(0) - fres1=plfun1(resu) - iraz=iraz+1 - if(fres.gt.fres1.and.iraz.lt.100000) goto 11 - elr=resu*resun ! energy of radiated gluon - -* to chancel radiative energy loss (optional case) - if(ienglu.eq.2) elr=0.d0 -* to chancel collisional energy loss (optional case) - if(ienglu.eq.1) rsk=0.d0 - -* determine the direction of parton moving - if(p(i,3).ge.0.d0) then - sigp=1.d0 - else - sigp=-1.d0 - end if - -* calculate new 4-momentum of hard parton - phirs=2.d0*pi*pyr(0) - epan=epa-rsk*rsk/(2.d0*ep0)-abs(elr) - if(epan.lt.0.1d0) then - epan=epan+abs(elr) - elr=0.d0 - if(epan.lt.0.1d0) then - rsk=0.d0 - epan=epa - end if - end if - pptn=dsqrt(abs(rsk*rsk+(rsk**4)*(1.d0-epa*epa/(ppl*ppl))/ - > (4.d0*ep0*ep0)-(rsk**4)*epa/(2.d0*ep0*ppl*ppl)-(rsk**4)/ - > (4.d0*ppl*ppl))) - ppln=dsqrt(abs(epan*epan-pptn*pptn-p(i,5)**2)) - p(i,1)=pptn*dcos(phirs) ! px - p(i,2)=pptn*dsin(phirs) ! py - p(i,3)=sigp*ppln ! pz - p(i,4)=dsqrt(p(i,1)**2+p(i,2)**2+p(i,3)**2+p(i,5)**2) ! E -* boost to system of hard parton - 222 call pyrobo(i,i,tetr,phir,0.d0,0.d0,0.d0) - - return - end -******************************* END PLJETR ************************** - -******************************** PLSEAR *************************** - SUBROUTINE PLSEAR (fmax,xmin) -* find maximum and 'sufficient minimum' of jet production vertex distribution -* xm, fm are outputs. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - external plthik - common /plpar1/ tau0,T0,TC,sigqq,AW,RA,mvisc,nf - save /plpar1/ - xmin=3.d0*RA - fmax=0.d0 - do 10 j=1,1000 - x=xmin*(j-1)/999.d0 - f=plthik(x) - if(f.gt.fmax) then - fmax=f - end if - 10 continue - return - end -****************************** END PLSEAR ************************** - -******************************** RADSEAR *************************** - SUBROUTINE RADSEAR (fmax,xmin) -* find maximum and 'sufficient minimum' of radiative energy loss distribution -* xm, fm are outputs. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - external plfun1 - common /radcal/ aa, bb - save /radcal/ - xmin=bb-aa - fmax=0.d0 - do j=1,1000 - x=aa+xmin*(j-1)/999.d0 - f=plfun1(x) - if(f.gt.fmax) then - fmax=f - end if - end do - return - end -****************************** END RADSEAR ************************** - -********************************* BIPSEAR *************************** - SUBROUTINE BIPSEAR (fmax,xmin) -* find maximum and 'sufficient minimum' of jet production cross section -* as a function of impact paramater (xm, fm are outputs) - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - external funbip - common /plpar1/ tau0,T0,TC,sigqq,AW,RA,mvisc,nf - save /plpar1/ - xmin=3.d0*RA - fmax=0.d0 - do j=1,1000 - x=xmin*(j-1)/999.d0 - f=funbip(x) - if(f.gt.fmax) then - fmax=f - end if - end do - return - end -****************************** END RADSEAR ************************** - -**************************** SIMPA ********************************** - SUBROUTINE SIMPA (A1,B1,H1,REPS1,AEPS1,FUNCT,X, - 1 AI,AIH,AIABS) -* calculate intergal of function FUNCT(X) on the interval from A1 to B1 - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - DIMENSION F(7), P(5) - H=dSIGN ( H1, B1-A1 ) - S=dSIGN (1.d0, H ) - A=A1 - B=B1 - AI=0.0d0 - AIH=0.0d0 - AIABS=0.0d0 - P(2)=4.d0 - P(4)=4.d0 - P(3)=2.d0 - P(5)=1.d0 - IF(B-A)1,2,1 - 1 REPS=ABS(REPS1) - AEPS=ABS(AEPS1) - DO 3 K=1,7 - 3 F(K)=10.d16 - X=A - C=0.d0 - F(1)=FUNCT(X)/3.d0 - 4 X0=X - IF( (X0+4.d0*H-B)*S)5,5,6 - 6 H=(B-X0)/4.d0 - IF ( H ) 7,2,7 - 7 DO 8 K=2,7 - 8 F(K)=10.d16 - C=1.d0 - 5 DI2=F (1) - DI3=ABS( F(1) ) - DO 9 K=2,5 - X=X+H - IF((X-B)*S)23,24,24 - 24 X=B - 23 IF(F(K)-10.d16)10,11,10 - 11 F(K)=FUNCT(X)/3.d0 - 10 DI2=DI2+P(K)*F(K) - 9 DI3=DI3+P(K)*ABS(F(K)) - DI1=(F(1)+4.*F(3)+F(5))*2.d0*H - DI2=DI2*H - DI3=DI3*H - IF (REPS) 12,13,12 - 13 IF (AEPS) 12,14,12 - 12 EPS=ABS((AIABS+DI3)*REPS) - IF(EPS-AEPS)15,16,16 - 15 EPS=AEPS - 16 DELTA=ABS(DI2-DI1) - IF(DELTA-EPS)20,21,21 - 20 IF(DELTA-EPS/8.d0)17,14,14 - 17 H=2.d0*H - F(1)=F(5) - F(2)=F(6) - F(3)=F(7) - DO 19 K=4,7 - 19 F(K)=10.d16 - GO TO 18 - 14 F(1)=F(5) - F(3)=F(6) - F(5)=F(7) - F(2)=10.d16 - F(4)=10.d16 - F(6)=10.d16 - F(7)=10.d16 - 18 DI1=DI2+(DI2-DI1)/15.d0 - AI=AI+DI1 - AIH=AIH+DI2 - AIABS=AIABS+DI3 - GO TO 22 - 21 H=H/2.d0 - F(7)=F(5) - F(6)=F(4) - F(5)=F(3) - F(3)=F(2) - F(2)=10.d16 - F(4)=10.d16 - X=X0 - C=0. - GO TO 5 - 22 IF(C)2,4,2 - 2 RETURN - END -************************* END SIMPA ******************************* - -**************************** SIMPB ********************************** - SUBROUTINE SIMPB (A1,B1,H1,REPS1,AEPS1,FUNCT,X, - 1 AI,AIH,AIABS) -* calculate intergal of function FUNCT(X) on the interval from A1 to B1 - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - DIMENSION F(7), P(5) - H=dSIGN ( H1, B1-A1 ) - S=dSIGN (1.d0, H ) - A=A1 - B=B1 - AI=0.0d0 - AIH=0.0d0 - AIABS=0.0d0 - P(2)=4.d0 - P(4)=4.d0 - P(3)=2.d0 - P(5)=1.d0 - IF(B-A)1,2,1 - 1 REPS=ABS(REPS1) - AEPS=ABS(AEPS1) - DO 3 K=1,7 - 3 F(K)=10.d16 - X=A - C=0.d0 - F(1)=FUNCT(X)/3.d0 - 4 X0=X - IF( (X0+4.d0*H-B)*S)5,5,6 - 6 H=(B-X0)/4.d0 - IF ( H ) 7,2,7 - 7 DO 8 K=2,7 - 8 F(K)=10.d16 - C=1.d0 - 5 DI2=F (1) - DI3=ABS( F(1) ) - DO 9 K=2,5 - X=X+H - IF((X-B)*S)23,24,24 - 24 X=B - 23 IF(F(K)-10.d16)10,11,10 - 11 F(K)=FUNCT(X)/3.d0 - 10 DI2=DI2+P(K)*F(K) - 9 DI3=DI3+P(K)*ABS(F(K)) - DI1=(F(1)+4.*F(3)+F(5))*2.d0*H - DI2=DI2*H - DI3=DI3*H - IF (REPS) 12,13,12 - 13 IF (AEPS) 12,14,12 - 12 EPS=ABS((AIABS+DI3)*REPS) - IF(EPS-AEPS)15,16,16 - 15 EPS=AEPS - 16 DELTA=ABS(DI2-DI1) - IF(DELTA-EPS)20,21,21 - 20 IF(DELTA-EPS/8.d0)17,14,14 - 17 H=2.d0*H - F(1)=F(5) - F(2)=F(6) - F(3)=F(7) - DO 19 K=4,7 - 19 F(K)=10.d16 - GO TO 18 - 14 F(1)=F(5) - F(3)=F(6) - F(5)=F(7) - F(2)=10.d16 - F(4)=10.d16 - F(6)=10.d16 - F(7)=10.d16 - 18 DI1=DI2+(DI2-DI1)/15.d0 - AI=AI+DI1 - AIH=AIH+DI2 - AIABS=AIABS+DI3 - GO TO 22 - 21 H=H/2.d0 - F(7)=F(5) - F(6)=F(4) - F(5)=F(3) - F(3)=F(2) - F(2)=10.d16 - F(4)=10.d16 - X=X0 - C=0. - GO TO 5 - 22 IF(C)2,4,2 - 2 RETURN - END -************************* END SIMPB ******************************* - -************************* PARINV ********************************** - SUBROUTINE PARINV(X,A,F,N,R) -* gives interpolation of function F(X) with arrays A(N) and F(N) - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - DIMENSION A(N),F(N) - IF(X.LT.A(1))GO TO 11 - IF(X.GT.A(N))GO TO 4 - K1=1 - K2=N - 2 K3=K2-K1 - IF(K3.LE.1)GO TO 6 - K3=K1+K3/2 - IF(A(K3)-X) 7,8,9 - 7 K1=K3 - GOTO2 - 9 K2=K3 - GOTO2 - 8 P=F(K3) - RETURN - 3 B1=A(K1) - B2=A(K1+1) - B3=A(K1+2) - B4=F(K1) - B5=F(K1+1) - B6=F(K1+2) - R=B4*((X-B2)*(X-B3))/((B1-B2)*(B1-B3))+B5*((X-B1)*(X-B3))/ - 1 ((B2-B1)*(B2-B3))+B6*((X-B1)*(X-B2))/((B3-B1)*(B3-B2)) - RETURN - 6 IF(K2.NE.N)GO TO 3 - K1=N-2 - GOTO3 - 4 C=ABS(X-A(N)) - IF(C.LT.0.1d-7) GO TO 5 - K1=N-2 - 13 CONTINUE -C13 PRINT 41,X -C41 FORMAT(25H X IS OUT OF THE INTERVAL,3H X=,F15.9) - GO TO 3 - 5 R=F(N) - RETURN - 11 C=ABS(X-A(1)) - IF(C.LT.0.1d-7) GO TO 12 - K1=1 - GOTO 13 - 12 R=F(1) - RETURN - END -C************************** END PARINV ************************************* - -* quark-quark scattering differential cross section - double precision FUNCTION PLSIGH(Z) - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - common /plpar1/ tau0,T0,TC,sigqq,AW,RA,mvisc,nf - save /plpar1/ - pi=3.14159d0 - beta=(33.d0-2.d0*nf)/(12.d0*pi) - alfs=1.d0/(beta*dlog(max(1.d-10,z/(TC*TC)))) - PLSIGH=8.d0*pi*alfs*alfs/(9.d0*z*z) - return - end - -* differential radiated gluon spectrum in BDMS model - double precision FUNCTION PLFUN1(or) - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - common /plpar1/ tau0,T0,TC,sigqq,AW,RA,mvisc,nf - common /pljdat/ ej, z, ygl, alfs, um, epa - common /pleave/ taul, temlev - common /factor/ cfac, kf - save /plpar1/,/pljdat/,/pleave/,/factor/ - pi=3.14159d0 - x=min((1.d0-ygl*z/or),or/ej) - if(x.le.0.d0) x=0.d0 - if(x.ge.1.d0) x=0.9999d0 - if(kf.eq.21) then - if(x.ge.0.5d0) x=1.d0-x - spinf=0.5d0*(1.+(1.d0-x)**4+x**4)/(1.d0-x) - else - spinf=1.d0-x+0.5d0*x*x - end if - ak=ygl*z/(or*(1.d0-x)) - al=taul*5.06d0 - uu=0.5d0*al*dsqrt(abs(0.5d0*(1.d0-x+cfac*x*x)*ak* - > dlog(max(16.d0/ak,1.d-10))))/ygl -* if quark production outside the QGP then -* arg=(((dsin(uu)*cosh(uu))**2)+((dcos(uu)*sinh(uu))**2))/(2.d0*uu*uu); -* here quark production inside the QGP - arg=((dcos(uu)*cosh(uu))**2)+((dsin(uu)*sinh(uu))**2) - gl1=(ygl/(cfac*z))**0.3333333d0 - gl2=(um/epa)**1.333333d0 - dc=1.d0/((1.d0+((gl1*gl2*or)**1.5d0))**2) ! massive parton -c dc=1.d0 !massless parton - plfun1=dc*3.d0*alfs*ygl*dlog(max(arg,1.d-20))*spinf/(pi*al*or) - return - end - -* angular distribution of emitted gluons - double precision function gluang(x) - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - s=0.0863d0 - gluang=x*dexp(-1.d0*(x-s)*(x-s)/(2.d0*s*s)) - return - end - -* temperature-dependence of parton-plasma integral cross section - double precision FUNCTION PLS(X) - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - external plsigh - common /plpar1/ tau0,T0,TC,sigqq,AW,RA,mvisc,nf - common /plpar2/ pln0,taupl,tauh,sigpl,sigh,sigplh,sigqqh,rg,rgn - common /plen/ epartc, um - save /plpar1/,/plpar2/,/plen/ - t=X - pi=3.14159d0 - bub=4.d0*t/TC - alf=6.d0*pi/((33.d0-2.d0*nf)*dlog(max(bub,1.d-10))) - ZZ0=4.d0*t*t*pi*alf*(1.d0+nf/6.d0) - scm=4.d0*t*epartc+um*um+4.d0*t*t - ZZ1=max((scm-((um+2.d0*t)**2))*(scm-((um-2.d0*t)**2))/scm,ZZ0) - HH1=0.01d0*ZZ1 - REPS=0.01d0 - AEPS=1.d-8 - CALL SIMPA(ZZ0,ZZ1,HH1,REPS,AEPS,plsigh,ZZ,RESS,AIH,AIABS) - PLS=0.39d0*2.25d0*2.25d0*RESS*(16.d0+4.d0*nf)/(16.d0+9.d0*nf) - return - end - -* temperature-dependence of QGP viscosity (if mvisc=1,2) - double precision FUNCTION PLVISC(X) - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - common /plpar1/ tau0,T0,TC,sigqq,AW,RA,mvisc,nf - save /plpar1/ - pi=3.14159d0 - T=X - TC1=5.06d0*TC - if(X.le.TC1) T=TC1 - if(mvisc.eq.0) then - c=0.d0 - elseif(mvisc.eq.1) then - a=3.4d0*(1.d0+0.12d0*(2.d0*nf+1.d0)) - b=15.d0*(1.d0+0.06d0*nf) - c=4.d0*pi*pi*(10.5d0*nf/a+16.d0/b)/675.d0 - else - c=(1.7d0*nf+1.d0)*0.342d0/(1.d0+nf/6.d0) - end if - bub=4.d0*T/TC1 - alf=6.d0*pi/((33.d0-2.d0*nf)*dlog(max(bub,1.d-10))) - alf1=1.d0/alf - PLVISC=c*(T**3)/(alf*alf*dlog(max(1.d-10,alf1))) - return - end - -* space-time dependence of QGP number density - double precision FUNCTION PLN(X,r1,r2,y) - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - external pythik - common /plpar1/ tau0,T0,TC,sigqq,AW,RA,mvisc,nf - common /plpar2/ pln0,taupl,tauh,sigpl,sigh,sigplh,sigqqh,rg,rgn - common /plevol/ taup(5000),temp(5000),denp(5000),enep(5000) - common /pythic/ PBAB(110),PTAB(110),PTAAB(110) - save /plpar1/,/plpar2/,/plevol/,/pythic/ - pi=3.14159d0 - t=X - if(t.lt.taupl) then - call parinv(t,taup,denp,5000,res) - else - res=1.2d0*(16.d0+9.d0*nf)*((5.06d0*TC)**3)/(pi*pi) - end if - res=res*(pythik(r1)*pythik(r2)*pi*RA*RA/PTAAB(1))**0.75d0 - res=res*dexp(-1.d0*y*y/24.5d0) - PLN=max(1.d-8,res) - return - end - -* space-time dependence of QGP temperature - double precision FUNCTION PLT(X,r1,r2,y) - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - common /plpar1/ tau0,T0,TC,sigqq,AW,RA,mvisc,nf - common /plpar2/ pln0,taupl,tauh,sigpl,sigh,sigplh,sigqqh,rg,rgn - common /plevol/ taup(5000),temp(5000),denp(5000),enep(5000) - common /pythic/ PBAB(110),PTAB(110),PTAAB(110) - save /plpar1/,/plpar2/,/plevol/,/pythic/ - pi=3.14159d0 - t=X - if(t.lt.taupl) then - call parinv(t,taup,temp,5000,res) - else - res=TC - end if - res=res*(pythik(r1)*pythik(r2)*pi*RA*RA/PTAAB(1))**0.25d0 - res=res*(dexp(-1.d0*y*y/24.5d0))**0.333333d0 - PLT=max(1.d-8,res) - return - end - -* impact parameter dependence of jet production cross section - double precision function funbip(x) - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - external ftaa - common /pyint7/ sigt(0:6,0:6,0:5) - save /pyint7/ - br=x - sigin=sigt(0,0,0)-sigt(0,0,1) - taa=ftaa(br) - funbip=taa*br*(1.d0-dexp(-0.1d0*taa*sigin)) - return - end - -* distribution over jet production vertex position - double precision FUNCTION plthik(X) - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - external pythik - common /parimp/ b1, psib1, rb1, rb2, noquen - save /parimp/ - bu=X - r12=dsqrt(abs(bu*bu+b1*b1/4.d0+bu*b1*dcos(psib1))) - r22=dsqrt(abs(bu*bu+b1*b1/4.d0-bu*b1*dcos(psib1))) - PLTHIK=bu*pythik(r12)*pythik(r22) - return - end - -* nuclear overlap function at impact parameter b - double precision function ftaa(r) - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - common /pythic/ PBAB(110),PTAB(110),PTAAB(110) - save /pythic/ - call parinv(r,PBAB,PTAAB,110,RES) - ftaa=RES - return - end -* - double precision function PFUNC1(x) - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - external PFUNC2 - common /pynup1/ bp,xx - common /plpar1/ tau0,T0,TC,sigqq,AW,RA,mvisc,nf - save /plpar1/ - xx=x - EPS=0.05d0 - A=0.d0 - B=3.d0*RA - H=0.01d0*(B-A) - CALL SIMPB(A,B,H,EPS,1.d-8,PFUNC2,Y,RES,AIH,AIABS) - PFUNC1=RES - return - end -* - double precision function PFUNC2(y) - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - external pythik - common /pynup1/ bp,x - r1=sqrt(abs(y*y+bp*bp/4.+y*bp*cos(x))) - r2=sqrt(abs(y*y+bp*bp/4.-y*bp*cos(x))) - PFUNC2=y*pythik(r1)*pythik(r2) - return - end - -* nuclear thickness function - double precision function pythik(r) - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - common /pythic/ PBAB(110),PTAB(110),PTAAB(110) - save /pythic/ - call parinv(r,PBAB,PTAB,110,RES) - pythik=RES - return - end - -* Wood-Saxon nucleon distrubution - double precision function prhoaa(z) - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - common /plpar1/ tau0,T0,TC,sigqq,AW,RA,mvisc,nf - common /pygeom/ BC - save /plpar1/,/pygeom/ - pi=3.14159d0 - df=0.54d0 - r=sqrt(bc*bc+z*z) - rho0=3.d0/(4.d0*pi*RA**3)/(1.d0+(pi*df/RA)**2) - prhoaa=rho0/(1.d0+exp((r-RA)/df)) - return - end - -* function to generate gauss distribution - double precision function gauss(x0,sig) - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - 41 u1=pyr(0) - u2=pyr(0) - v1=2.d0*u1-1.d0 - v2=2.d0*u2-1.d0 - s=v1**2+v2**2 - if(s.gt.1) go to 41 - gauss=v1*dsqrt(-2.d0*dlog(s)/s)*sig+x0 - return - end -************************************************************************** diff --git a/Generators/PythiaB/CMakeLists.txt b/Generators/PythiaB/CMakeLists.txt deleted file mode 100644 index 91a5c0100621e9c83df03a76aa8fdc3bbf5e9e9e..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/CMakeLists.txt +++ /dev/null @@ -1,97 +0,0 @@ -################################################################################ -# Package: PythiaB -################################################################################ - -# Declare the package name: -atlas_subdir( PythiaB ) - -# Declare the package's dependencies: -atlas_depends_on_subdirs( PUBLIC - Control/StoreGate - GaudiKernel - Generators/GeneratorModules - Generators/GeneratorObjects - Generators/Pythia_i - PRIVATE - Control/AthenaKernel - Generators/GeneratorUtils - Generators/TruthUtils ) - -# External dependencies: -find_package( CLHEP ) -find_package( HepMC COMPONENTS HepMC HepMCfio ) - -# Remove the --as-needed linker flags: -atlas_disable_as_needed() - -# Component(s) in the package: -atlas_add_library( PythiaBLib - src/PythiaB.cxx - src/charm.F - src/children.F - src/qualify.F - src/anti_beauty.F - src/find_children.F - src/anti_charm.F - src/finsel.F - src/trig1.F - src/trig2.F - src/bbbb_luexec.F - src/swop_ludat3.F - src/copy_pydat3.F - src/forced.F - src/uinit.F - src/bbcc_luexec.F - src/multi_flav_luexec.F - src/user_finsel.F - src/bcopy.F - src/off_line.F - src/beauty.F - src/parsel.F - src/comons.F - src/fill_ntup.F - src/ulast.F - src/uf_Skeleton.F - src/uf_DsPhiX.F - src/uf_LambdabJpsimumuLambda.F - src/uf_LambdabmumuLambda.F - src/uf_BsJpsimumuphiKK.F - src/uf_BdJpsimumuK0starKpi.F - src/uf_BsAngles.F - src/uf_BsAnglesCDF.F - src/uf_BdAnglesCDF.F - src/uf_bbmumu.F - src/uf_KstarMuMu.F - src/uf_PhiMuMu.F - src/uf_GammaMuMu.F - src/uf_DK1.F - src/uf_ChHadr.F - src/btreedel.F - src/coef.F - src/comfunc.F - src/formfactors_KstMuMu.F - src/formfactors_PhiMuMu.F - src/formfactors_b2gmm.F - src/daughterline.F - src/matrix_and_kinematics_KstMuMu.F - src/matrix_and_kinematics_PhiMuMu.F - src/matrix_and_kinematics_b2gmm.F - src/matrix_for_fortran_KstMuMu.F - src/matrix_for_fortran_PhiMuMu.F - src/matrix_for_fortran_b2gmm.F - src/rotat.F - PUBLIC_HEADERS PythiaB - PRIVATE_INCLUDE_DIRS ${CLHEP_INCLUDE_DIRS} ${HEPMC_INCLUDE_DIRS} - PRIVATE_DEFINITIONS ${CLHEP_DEFINITIONS} - LINK_LIBRARIES GaudiKernel GeneratorObjects StoreGateLib SGtests GeneratorModulesLib Pythia_iLib - PRIVATE_LINK_LIBRARIES ${CLHEP_LIBRARIES} ${HEPMC_LIBRARIES} AthenaKernel TruthUtils ) - -atlas_add_component( PythiaB - src/components/*.cxx - INCLUDE_DIRS ${CLHEP_INCLUDE_DIRS} ${HEPMC_INCLUDE_DIRS} - LINK_LIBRARIES ${CLHEP_LIBRARIES} ${HEPMC_LIBRARIES} StoreGateLib SGtests GaudiKernel GeneratorModulesLib GeneratorObjects Pythia_iLib AthenaKernel TruthUtils PythiaBLib ) - -# Install files from the package: -atlas_install_joboptions( share/*.py ) -atlas_install_runtime( share/Bdecays0.dat ) - diff --git a/Generators/PythiaB/PythiaB/PythiaB.h b/Generators/PythiaB/PythiaB/PythiaB.h deleted file mode 100644 index 7dce05cf656b4bdd1818f640028cdb2f7a099132..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/PythiaB/PythiaB.h +++ /dev/null @@ -1,99 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - - -#ifndef GENERATORMODULESPYTHIAB_H -#define GENERATORMODULESPYTHIAB_H -#include "Pythia_i/Pythia.h" -#include "GeneratorModules/GenModule.h" -// commons from input cards -//#include "Cutbq.h" - -#include "Pythia_i/Pydat1.h" -#include "Pythia_i/Pydat2.h" -#include "Pythia_i/Pydat3.h" -#include "Pythia_i/Pysubs.h" -#include "Pythia_i/Pypars.h" -#include "Pythia_i/Pydatr.h" -#include "Pythia_i/Pymssm.h" -#include "Pythia_i/Pyint2.h" -#include "Pythia_i/Pyint5.h" - -#include "GeneratorObjects/McEventCollection.h" -#include "StoreGate/DataHandle.h" - -using std::string; -typedef std::vector<std::string> CommandVector; - -/** -@class PythiaB - -@brief This code is used to get a PYTHIA Monte Carlo event. - - genInitialize() is used to read parameters - - callGenerator() makes the event - - genFinalize() writes log files etc - - fillEvt(GeneratorEvent* evt) passes the event to HepMC - - The output will be stored in the transient event store so it can be - passed to the simulation. - -@author M.Smizanska - - Ian Hinchliffe June 2000 - - Modeled after the CDF code by Stan Thompson - added access to pyint2 common Feb 2001 - - W.Walkowiak, 2006-04-02 added m_maxTriesHard, m_forceDecayChannel - and m_decayChannelParameters - (for user_finsel.F reorganization) - - E.Lobodzinska doxygen docu (Jan. 2008) -*/ - -class PythiaB : public Pythia -{ -public: - PythiaB(const std::string& name, ISvcLocator* pSvcLocator); - virtual ~PythiaB(); - - virtual StatusCode genuserInitialize(); - virtual StatusCode callGenerator(); - virtual StatusCode genFinalize(); - // Pyint5& pyint5(); - - virtual StatusCode fillEvt(HepMC::GenEvent* evt); - -private: - StatusCode storeBEvent(); - long pCounter(HepMC::GenEvent* myEvt) const; - - McEventCollection m_BEventBuffer; - // HepMC::GenEvent currentEvent; - - CommandVector m_cutbqVector; - string m_cutbqandor; - std::vector<double> m_lvl1cut; - std::vector<double> m_lvl2cut; - std::vector<double> m_offcut; - double m_cutbqp, m_cutbqe, m_cutabqp, m_cutabqe; - double m_mhad; - double m_xhad; - double m_fla; - double m_Ntup; - - double m_maxTriesHard; - string m_forceDecayChannel; - std::vector<double> m_decayChannelParameters; - - string m_forceb; - string m_forcec; - -}; - -#endif diff --git a/Generators/PythiaB/doc/PythiaB.pdf b/Generators/PythiaB/doc/PythiaB.pdf deleted file mode 100644 index 70ea691ed77afc15ac9f4a30ce8b94f63eafd6e9..0000000000000000000000000000000000000000 Binary files a/Generators/PythiaB/doc/PythiaB.pdf and /dev/null differ diff --git a/Generators/PythiaB/doc/PythiaB.tex b/Generators/PythiaB/doc/PythiaB.tex deleted file mode 100644 index 1d66d5e153629b4597379d48979800a195eaaf4f..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/doc/PythiaB.tex +++ /dev/null @@ -1,855 +0,0 @@ -\documentstyle[12pt,epsfig]{article} -%\documentclass[11pt]{cernrep} - -\topmargin 0cm -%\headheight 0pt -%\headsep 0pt -\topskip 0pt - -\oddsidemargin -5mm -%\evensidemargin -3mm -\textheight 22cm -\textwidth 160mm -%\parindent 7mm -\itemsep -5mm -\newcommand{\tabulka}[3]{ - \begin{table}[h] - \begin{center} - #1 - \end{center} - \caption{#2} - \label{#3} - \end{table}} - -\newcommand{\psubt}{\mbox{$p_{T}\ $}} -\newcommand{\bquark}{\mbox{$\rm b\ $}} -\newcommand{\abquark}{\mbox{$\rm \overline{b}\ $}} -\newcommand{\bab}{\mbox{$\rm b\overline{b}\ $}} - -\begin{document} -\title{\Large{ \bf PythiaB} \\ -\large{\bf interface to Pythia6 dedicated to simulation of beauty events.}} -\author{ \normalsize Maria Smizanska (maria.smizanska@cern.ch)\\ - University Lancaster} - - -\normalsize -%\today - -\maketitle - - -%\begin{tabular*}{\textwidth}{@{}l@{\extracolsep{\fill}}rrr} -\begin{scriptsize} -\begin{tabular}{|l|l|l|l|} -\hline - -release 3.1.0 & PythiaBModule - algorithm & new & M.Smizanska based on \\ - April 2002 & and related code & & PythiaModule and atgenb \\ \hline -release 4.4.0 & PythiaBModule & update & \\ - Oct.2002 & Event store at repeated hadronization & & M.Muller, P.Calafiura \\ - & bbbb, bbcc if forced decay& & M.Smizanska \\ \cline{2-4} - - & BSignalFiler - algorithm & new & M.Muller based on \\ - & & &EventFilter and HistSample \\ -\hline -release 5.0.0 & Btune.py & new & M.Smizanska \\ - 2.Dec.2002 & & & Pythia6 B-tuned parameters \\ \cline{2-4} - & $\rm PythiaB\_Signal.py$ & updated & M.Smizanska\\ - & $\rm PythiaB\_bbmu6X.py$ & " & " \\ \hline - release 6.5.0 & PythiaBModule renamed to PythiaB & reorganization & G.Stavropoulos, \\ - 3.Aug.2003 & replaced from former & of Generators &I.Hinchcliffe\\ - & /Generators/GeneratorModules/PythiaBModule & &\\ - & to /Generators/PythiaB & &\\ \cline{2-4} - & $\rm PythiaB\_Signal.py$ & updated to & M.Smizanska\\ - & $\rm PythiaB\_bbmu6X.py$ & new Rndm Number & \\ - & & service & \\ \hline -\end{tabular} - -\end{scriptsize} -\tableofcontents -\newpage -\section{Shortly} -\begin{tabular}{|l|l|} - \hline -& \\ - \bf{athena $\rm PythiaB\_bbmu6X.py$} &simulate $\rm \bab \rightarrow -\mu(6GeV) X$ \\ -& \\ -\hline & \\ -\bf{athena $\rm PythiaB\_Signal.py$} & simulate one exclusive B-channel \\ - & default $ \rm B_{s} \rightarrow J/\psi(\mu\mu) \phi $ \\ - & other examples inside $\rm PythiaB\_Signal.py $\\ -\hline -\end{tabular} -\section{What PythiaB provides } - -{\bf PythiaB} provides an interface to Pythia6 allowing to: {\bf -1.}~speed up B events simulations, {\bf 2.}~simulate only wanted -decay channel, {\bf 3.}~apply selection cuts organized in several -levels: after parton showering ( before hadronization), after -hadronization: trigger-like cuts and off-line type of cuts, {\bf -4.}~define b-production parameters - optimal parameters are -prepared as default. User can control 1.-4. by datacards contained -in jobOptions.py file. - - PythiaB inherits from Pythia and GenModule, so the event is converted - from Pythia common block HEPEVT to c++ HepMc tree structure - and stored in Storegate as a transient object and finally written to a root persistency. - -\section{Where to use PythiaB} - -PythiaB can be used for a generation of beauty events -written into a persistent root file, which can serve as an input into -a detector simulation -(atlsim) or into ATFAST. PythiaB can also work in the same job with ATLFAST - in this case the HepMC tree is passed from PythiaB to ATLFAST in - a transient form. -\section{How to use PythiaB} - - - -\subsection{Just changing jobOptions.py, linking only PythiaB files} - - -To work just with PythiaB avoiding to connect large number of - unwanted files to your -TestRelease area you simply do following: - - -\begin{enumerate} - -\vspace{-3mm}\item set up athena under cmt, see cmt manual -\cite{cmt} and Athena manual \cite{athena}. -\vspace{3mm}\item cmt co TestRelease -\vspace{-3mm} \item cd TestRelease/TestRelease-00-*/cmt -\vspace{-3mm} \item edit requirements -and change following lines: -%\end{enumerate} - -\begin{verbatim} - - O R I G I N A L - - use AtlasRelease AtlasRelease-* - -\end{verbatim} - -\begin{verbatim} - - R E W R I T T E N - -#use AtlasRelease AtlasRelease-* -use PythiaB PythiaB-00-* Generators -use AthenaCommon AthenaCommon-* Control -use AtlasROOT AtlasROOT-* External -use EventHdrAthenaRoot EventHdrAthenaRoot-* Event -use EventSelectorAthenaRoot EventSelectorAthenaRoot-* Database/AthenaRoot - - -\end{verbatim} - -%\begin{enumerate} - \vspace{-3mm} \item source setup.sh -\vspace{-3mm}\item gmake -\vspace{-3mm} \item cd TestRelease/TestRelease-00-*/run -\vspace{-3mm} \item edit and adopt jobOptions.py to your needs - \vspace{-3mm}\item to run interactively: athena jobOptions.py $>$output.log -\end{enumerate} - - - - - - - - -\subsection{Changing an existing Athena code} -I want to change some of the existing code, e.g. apply dedicated -selection criteria in user$\_$finsel.F, or change PythiaB.cxx. -Then do following: \\ - -\begin{enumerate} -\vspace{-3mm}\item set up Athena under cmt -\vspace{-3mm}\item cmt co TestRelease -\vspace{-3mm}\item cmt co Generators/PythiaB -\vspace{-3mm}\item cd Generators/PythiaB/src/ -\vspace{-3mm}\item edit and adopt user$\_$finsel.F -\vspace{-3mm}\item edit and adopt PythiaB.cxx -\vspace{-3mm}\item cd TestRelease/TestRelease-00-*/cmt -\vspace{-3mm}\item change the default requirements to the -requirements as written at the item 4 of the subsection 4.1 -\vspace{-3mm}\item source setup.sh -\vspace{-3mm}\item cmt broadcast gmake -\vspace{-3mm}\item cd TestRelease/TestRelease-00-*/run -\vspace{-3mm}\item (edit and adopt jobOptions.py if you need) -\vspace{-3mm}\item to run interactively: athena jobOptions.py $>$ -output.log - \end{enumerate} - - The release 6.5.0 allows also running in the InstallArea, - so you can as well do the last three points as follows: - - \begin{itemize} - \vspace{-3mm}\item[11.] cd InstallArea/jobOptions/PythiaB -\vspace{-3mm}\item[12.] (edit and adopt jobOptions.pyif you need) -\vspace{-3mm}\item[13.] to run interactively: athena jobOptions.py $>$ -output.log - \end{itemize} - - -\subsection{Changing an existing Pythia6 subroutine } -I have my own physics model in fortran. -I want to pluck it into an existing PYTHIA6 subroutine PYxyz.F. -It is similar to previous case. -So you do following: \\ - - - -\begin{enumerate} -\vspace{-3mm}\item set up Athena under cmt -\vspace{-3mm}\item cmt co TestRelease -\vspace{-3mm}\item cmt co Generators/PythiaB -\vspace{-3mm}\item cd Generators/PythiaB/src/ -\vspace{-3mm}\item cp ${\$}$MYSPACE/PYxyz.F ./ -\vspace{-3mm}\item cd Generators/PythiaB/cmt/ -edit requirements -and change following lines: - -\begin{verbatim} - - O R I G I N A L - - charm.F \ - children.F \ - -\end{verbatim} - -\begin{verbatim} - - R E W R I T T E N - charm.F \ - PYxyz.F \ - children.F \ - - -\end{verbatim} - -\vspace{-3mm}\item cd TestRelease/TestRelease-00-*/cmt -\vspace{-3mm}\item change the default requirements to the -requirements as written at the point 4 of the subsection 4.1 -\vspace{-3mm}\item source setup.sh -\vspace{-3mm}\item cmt broadcast gmake -\vspace{-3mm}\item cd TestRelease/TestRelease-00-*/run -\vspace{-3mm}\item (edit and adopt jobOptions.py if you need) -\vspace{-3mm}\item to run interactively: athena jobOptions.py $>$ output.log - - - - - \end{enumerate} - - or - - -\begin{itemize} - \vspace{-3mm}\item[11.] cd InstallArea/jobOptions/PythiaB -\vspace{-3mm}\item[12.] (edit and adopt jobOptions.py if you need) -\vspace{-3mm}\item[13.] to run interactively: athena jobOptions.py $>$ -output.log - \end{itemize} - -\section{Why dedicated code for b-physics } - -\subsection{Speed up simulation} -Pythia6 is a phenomenological model that provides three -mechanisms to produce b-quark. They are classified as a flavour -creation ($ \rm gg \rightarrow b \overline{b}$, $ \rm qq -\rightarrow b \overline{b}$), flavour excitation ($\rm gb -\rightarrow gb$) and gluon splitting ($g \rightarrow b -\overline{b}$). All these three mechanisms are activated if -following Pythia processes are allowed: - isub=11 f + f' $\rightarrow$ f + f' (QCD) , - isub=12 f + fbar $\rightarrow$ f' + fbar' , - isub=13 f + fbar $\rightarrow$ g + g , - isub=28 f + g $\rightarrow$ f + g , - isub=53 g + g $\rightarrow$ f + fbar , - isub=68 g + g $\rightarrow$ g + g , - with parameter "pysubs msel=1". - In this regime beauty quark is -produced approximately in $1\%$ of events (the number depends on -the selected phase space). There is another mechanism which is -activated by selecting "pysubs msel 5" - here b-quark is produced -in each event in a hard scattering processes of type: $ \rm gg -\rightarrow b \overline{b}$, $ \rm qq \rightarrow b \overline{b}$ -using mass matrix elements. This mechanism however does not -describe known b-production data from Fermilab. The difference is -so large that it is not suggested to use it for simulations. The -details can be found for instance in \cite{my5}. - -In order to speed up the simulation in "pysubs msel 1" mode -PythiaB interrupts a simulation after the parton development (just -before the hadronization) to check for the presence of $b -\overline{b}$ quarks satisfying user's defined limits in \psubt -and $\eta$. If user wants the hadronization is repeated several -(MHAD) times using the same parton part of the event. The -resulting cross section is then divided by MHAD. It is suggested -that user selects MHAD such that the average number of accepted -events with the same parton part is close to 1. The latter value -is printed out by PythiaB in an output log file. - - -\subsection{Simulate only wanted channel} -It is not difficult to select only wanted channel in Pythia. -PythiaB does nothing special - just saves your time and work: -1.~by providing an interface to datacards allowing user to close -and open channels without an intervention in the code, 2.~by -providing special datacard files allowing to close large groups of -unwanted channels. For more details see section 6.2. PythiaB -provides also datacards allowing user to apply trigger-like cuts -and offline-like selection cuts. - -\subsection{How should I calculate a cross section} - -If a user did not force any of B-decays, then the cross section -is calculated in PythiaB and appeares in the output.log file under -the name: - CROSSSECTION OF YOUR B-CHANNEL IS. If you forced any channel in B-decay chain - you should multiply the PythaBModule cross section by a branching ratio for this - channel. -\tabulka{\begin{tabular}{||c|c|c|c||} \hline - - MEANING & ATLAS VALUE & Pythia6 default \\ - \hline - b-quark production-related parameters & &\\ - Structure fuction & "pypars mstp 51 1 (CTEQ3)" & CTEQ5 \\ -Min bias & "pysubs msel 1", & 1 \\ -Max parton virtuality & & \\ -factor to multiply $Q^2_{\mbox{hard}}$ & "pypars parp 67 1", & 1\\ -The factorization scale $Q^2_{\mbox{hard}}= $& &\\ -$\psubt^2 (P_1^2 + P_2^2 + m_3^2+m_4^2)/2$ & "pypars mstp 32 8" & 8 \\ - -\hline -B hadron related parameters & &\\ - - -Spin s=1 probability & "pydat1 parj 13 0.65" & 0.75\\ -j=1 l=1 s=0 & "pydat1 parj 14 0.12", & 0\\ -j=0 l=1 s=1 & "pydat1 parj 15 0.04", & 0\\ -j=1 s=1 l=1 & "pydat1 parj 16 0.12", & 0\\ -j=2 s=1 l=1 & "pydat1 parj 17 0.2", & 0\\ -Peterson fragmentation $\epsilon_b$ & "pydat1 parj 55 -.006" & -.005 \\ - - -No B-oscillations & "pydat1 mstj 26 0", &\\ - - - \hline - -Multiple interactions parameters & &\\ -Model & "pypars mstp 82 4 (double gauss)", & 1 (step fcn)\\ - Regularization \psubt scale & "pypars parp 82 1.4", & 1.9\\ - Double gauss parameters &"pypars parp 83 0.5", & 0.5\\ - " & "pypars parp 84 0.4", & 0.2\\ - Gluon probability &"pypars parp 85 0.9", & 0.33\\ - Two gluon probability & "pypars parp 86 0.95", & 0.66\\ - Energy scale for parp 82 & "pypars parp 89 1800", & 1000\\ - Power of energy rescaling &"pypars parp 90 0.25". & 0.16 \\ - - \hline - \end{tabular}} - {The optimized set of B-physics-related Pythia6 parameters, values for ATLAS simulations.} - {table:abab} - - - - - - - -\subsection{Optimal B-simulation parameters} -PythiaB provides an interface to datacards allowing user to define -beauty production parameters. The optimal values of these -parameters were selected in \cite{my6} and are summarized in -the Table \ref{table:abab}. This set is provided by PythiaB -as a default. - The new structure functions CTEQ5 -('mstp 51 7' ) fails to describe the b-production data -while the older CTEQ3 ('mstp 51 1') fits fairly well \cite{my6}. -The reason is that Pythia contains many parameters that influence the -b-production and a complex tuning have been done -by phenomenologists only for CTEQ3, \cite{Py6,Py6Nor}. For CTEQ5 the job still needs to be -done. Such a job exceeds possibilities of our -group. Currently we recommend user to use 'mstp 51 1' in a combination with the other -parameter values of the optimized set provided by PythiaB. -%We do not -%see this inconsistent with the fact that ATLAS minimum bias events -%are simulated with CTEQ5. - - - - -\section{Datacards} - - -In Athena a user controls the simulation using the datacards -contained in files jobOptions.py. For PythiaB you will find in -release two prepared files: {\bf $\rm PythiaB\_bbmu6X.py$} and -{\bf $\rm PythiaB\_Signal.py$} from which you can easily derive -your case. File {\bf $\rm PythiaB\_bbmu6X.py$} simulates events -$\bab \rightarrow \mu6 X$. File {\bf $\rm PythiaB\_Signal.py$} -simulates one exclusive B-channel ( default is for $ \rm B_{s} -\rightarrow J/\psi(\mu\mu) \phi $). - - -\subsection{ Job control Datacards } -\begin{tabular}{|p{75mm}|p{90mm}|} -\hline & \\ - -\verb!Generator.Members = [!& \\ \hline - \verb!"PythiaB",! & Simulate b-event in HepMc into transient - store\\ \hline - \verb!"DumpMC" ,! & Dump HepMc for each accepted event into log file\\ - & do not use with large statistics \\ \hline - \verb! "BSignalFilter"]! & Finds all B-decay chains and store in ntuple\\ - & for print level=2 also dumps B chains into log file \\ - \hline -\verb!ApplicationMgr.EvtMax = 10! & Number of events to be accepted \\ -\hline -\verb!EventSelector.RunNumber = 1;!& Defines a Run numb. in the job \\ -\hline -\verb!EventSelector.FirstEvent = 1;!& Defines the first evt numb. in the job\\ -\hline -\verb!AtRndmGenSvc.Seeds =! & User random number seeds\\ -\verb!["PYTHIA 4789899 989240512", ! &\\ -\verb!"PYTHIA_INIT 820021 2347532"]! &\\ \hline - - - -\end{tabular} - - - -\subsection{ Opening - closing decay channels } - - - -\begin{tabular}{|p{75mm}|p{90mm}|} -\hline & Channel\\ \hline - & \\ -\verb!#include "CloseAntibQuark.py"; - PythiaB.PythiaCommand+=[ - "pydat3 mdme 1120 1 1", - "pydat3mdme 996 1 0", - "pydat3 mdme 998 1 0" ]! & - $ \rm B_{s} \rightarrow J/\psi(\mu\mu) \phi $ \\ - - & \\ \hline -\verb!#include "CloseAntibQuark.py"; - #include"Dsphipi.py"; - PythiaB.PythiaCommand += [ - "pydat3 mdme 1105 1 1"]! & - $ \rm B_{s} \rightarrow D_{s} (\phi \pi) \pi$ \\ \hline - -& \\ - \verb!#include "CloseAntibQuark.py"; - PythiaB.PythiaCommand+= [ - "pydat3 mdme 1027 1 1", - "pydat3 mdme 996 1 0", - "pydat3 mdme 998 1 0" ]! & -$ \rm B_{s} \rightarrow J/\psi(\mu\mu) K^0(\pi^{+}\pi^{-}) $ \\ - \hline - -\end{tabular} - - - -Be carefull: there should be just one space between numbers in -'datacards mdme'. If you put two or more - program will not -complain, but ignore your 'datacard'. - -\subsection{ How to change Pythia parameters} - - The optimized Pythia6 B-physics-related parameters (Table.\ref{table:abab}) - are defined in ATHENA by the file Btune.py, - which is included in the standard $\rm PythiaB\_Signal.py$ and - $\rm PythiaB\_bbmu6X.py$. To change any value you can just copy a - corresponding line from Btune.py into $\rm PythiaB\_Signal.py$ - placing it after the line \verb!#include "Btune.py"! and changing the value - of parameter to a wanted one. It is suggested that the large background samples - of general use are always generated using the values defined in Btune.py. - - - -%\begin{tabular}{|p{75mm}|p{90mm}|} -%\hline - -%\verb!PythiaB.PythiaCommand += { ! & \\ - -% \verb!"pysubs ckin 3 10.",! & \psubt limit of hard scattering\\ -% \verb!"pysubs ckin 9 -3.5",! & $\eta$ limit of hard scattering for the\\ -% \verb!"pysubs ckin 10 3.5",! & \hspace{16mm} product with larger $|\eta$| \\ -% \verb!"pysubs ckin 11 -3.5",! & $\eta$ limit of hard scattering for the\\ -% \verb!"pysubs ckin 12 3.5",! & \hspace{16mm} product with smaller $|\eta$| \\ -% \verb!"pysubs msel 1",! & 1=all \bab production mechanisms \\ -% & 5=\bab massive matrix el. \\ -% \verb!"pydat1 mstj 26 0",! & 0= B mixing off, 1=B mixing on\\ -% \verb! "pypars mstp 51 1"};! & 1=CTEQ3(use CTEQ3) \hspace{3mm} -% 7=CTEQ5\\ \hline - - -%\end{tabular} - - - -\subsection{ Define your selection cuts } - -\begin{tabular}{|p{85mm}|p{80mm}|} -\hline - -\verb!PythiaB.cutbq = ! -& b-quark cuts: pT, eta, and(or) \\ -\verb!["7. 3.5 or 7. 3.5"]! &antib-quark cuts: pT, eta\\ - -\hline -\verb!PythiaB.lvl1cut = { 1., 6., 2.5};! & lvl1 single muon cuts: switch on(1)/off(0) pT eta\\ - -\hline - \verb!PythiaB.lvl2cut = !&lvl2 second lepton cuts: \\ -\verb![ 0., 13., 6., 2.5]!& switch on(1)/off(0), -PID(13mu~or~11e),pT, eta\\ \hline - \verb!PythiaB.offcut = ! & offline cuts: applied on stable particles \\ - \verb![ 1., 0.5, 2.5, 0.5, 2.5, 0.5, 2.5]! & at the end of B-decay chain \\ - & switch -on(1)/off(0), pT, eta of K/pi/p, - pT, eta of muon, pT, eta of electron \\ -\hline -\verb!PythiaB.mhadr = 10. ;! & number of repeated hadronizations \\ - -& select MHAD such that the average number of accepted -events with the same parton part is close to 1. The latter value -is printed out by PythiaB in the output log file. \\ -\hline -\verb!BSignalFilter.SignaltoNtup = 50.; ! & For how many events store B-chains into NTUPLE \\ - - -\hline -\verb!PythiaB.SignalDumptoAscii = 0.; ! & For how many events store exclusive signal B-chain into ascii fort.50 \\ -\hline -\verb!PythiaB.flavour = 5.;! & wanted heavy flavour b(5) or c(4-not yet installed)\\ -\hline - - - - -\end{tabular} - - - - -\subsection{ Data cards to define output files } - -Data cards to define output files are in the section {\bf Output files}. - - - -\section{ Output files } - -\subsection{NTUPLE file for B-decays chains} - -\begin{verbatim} - -//-------------------------------------------------------------- -// NTuple output file -//-------------------------------------------------------------- - -NTupleSvc.Output = [ "FILE1 - DATAFILE='pythiaB.ntup' - OPT='NEW' - TYP='HBOOK'" ] - - -\end{verbatim} - - -For each secondary particle from a B-signal and any other B-decay -chain in the event a following values in column-wise Ntuple are -written: - -\begin{verbatim} - "particles", - "event_number", - "chain_number", - "particle_number", - "id", - "status", - "child_of", - - "px", - "py", - "pz", - "pe", - "pt", - "mass", - - "phi", - "rapidity", - "pseudorapidity" - - -\end{verbatim} - - - - -\subsection{B-signal chain, ascii file } - -Formated ascii file fort.50 containing lines each with one -particle from a B-signal chain. Was used before BSignaFilter was -written. The file is created automatically if user defines non -zero values in PythiaB.SignalDumptoAscii = 10. and in -PythiaB.offcut = { 1., ...}. - - -Each line contains following information: -\begin{verbatim} - - float(ieve) ! this accepted ev number - float(ITB) ! # of evs hadronised to get this one - float(ntree)! # of particles in B-chain - float(itree)! this particle number in Bchain - float(I) ! this particle number in PYJET - - float(K(I,1)) - float(K(I,2)) - float(K(I,3)) - float(K(I,4)) - float(K(I,5)) - - P(I,1) - P(I,2) - P(I,3) - P(I,4) - P(I,5) - - V(I,1) - V(I,2) - V(I,3) - V(I,4) - V(I,5) - - -\end{verbatim} - - - -\subsection{Output log file} - - - -Contains Pythia messages. List of all input datacards. -Pylist12 - list of all decay channels including status: opened-closed. -Cross section table. Summary of principle parameters and cuts. -Here is a part of log file: -\begin{verbatim} - - ============================================================================== - I I I I - I Subprocess I Number of points I Sigma I - I I I I - I----------------------------------I----------------------------I (mb) I - I I I I - I N:o Type I Generated Tried I I - I I I I - ============================================================================== - I I I I - I 0 All included subprocesses I 3095 32166 I 1.138E+00 I - I 11 f + f' -> f + f' (QCD) I 72 783 I 2.631E-02 I - I 12 f + fbar -> f' + fbar' I 3 6 I 3.266E-04 I - I 13 f + fbar -> g + g I 2 4 I 4.345E-04 I - I 28 f + g -> f + g I 818 10581 I 2.974E-01 I - I 53 g + g -> f + fbar I 67 262 I 2.491E-02 I - I 68 g + g -> g + g I 2133 20530 I 7.886E-01 I - I I I I - ============================================================================== - - ********* Fraction of events that fail fragmentation cuts = 0.00000 ********* - -I===================================================================================== -I CROSSSECTION OF YOUR B-CHANNEL IS I -I BX= PX*NB/AC/MHAD= I 2.77963e-05 mbarn -I I -I IN CASE YOU FORCED ANY DECAY YOU SHOULD I -I CORRECT CROSS SECTION BX FURTHER, MULTIPLYING I -I BX BY BRANCHING RATIO(S) OF YOUR FORCED I -I DECAY(S) AND BY A FACTOR OF 2 FOR SYMMETRY I -I I -I MORE DETAILS ON CROSS SECTION I -I PYTHIA MSEL=1 CROSS SECTION IS PX= I 1.13794 mbarn -I NUMBER OF ACCEPTED MSEL=1 EVENTS AC= I 32166 -I NUMBER OF ACCEPTED B-EVENTS IS NB= I 11 -I REPEATED HADRONIZATIONS IN EACH EVENT MHAD= I 14 -I AVERAGE NUM OF ACCEPTED EVTS IN HADRONIZATION LOOP I 1.1 -I IN CASE YOU FORCED ANY DECAY YOU SHOULD I -I CORRECT CROSS SECTION BX FURTHER, MULTIPLYING I -I BX BY BRANCHING RATIO(S) OF YOUR FORCED I -I DECAY(S) AND BY A FACTOR OF 2 FOR SYMMETRY I -I I -I===================================================================================== - -I===================================================================================== -I YOUR MAIN SIMULATION PARAMETERS AND CUTS -I===================================================================================== -I HARD SCATTERING CUT pysubs().ckin(3) PT I 15 -I STRUCTURE FCN (1=CTEQ3 7=CTEQ5) pypars().mstp(51) I 1 -I CUTS ON b and/or anti b QUARK I 0 ; 102.5 ; and ; 10 ; 2.5 -I LVL1 MUON CUTS: PT AND ETA I 6 ; 2.5 -I LVL2 CUTS: ON(1)/OFF(0); PARTICLE-ID; PT AND ETA I 0 ; 13 ; 6 ; 2.5 -I CUTS FOR STABLE PARTICLES IN B-DECAY: ON(1)/OFF(0) I 1 -I CHARGED HADRONS: PT AND ETA I 0.5 ; 2.5 -I MUONS: PT AND ETA I 3 ; 2.5 -I ELECTRONS: PT AND ETA I 0.5 ; 2.5 -I===================================================================================== - - -\end{verbatim} - - -\subsection{AthenaRoot Persistency} - -Produced Pythia B events are stored in root persistent file -PythiaB.root. This file serves as an input to atlsim (detector simulation) -or atlfast. - -\begin{verbatim} -//-------------------------------------------------------------- -// AthenaRoot Persistency -//-------------------------------------------------------------- - -ApplicationMgr.DLLs += [ "EventHdrAthenaRoot", "GeneratorObjectsAthenaRoot"] -ApplicationMgr.DLLs += [ "RootSvcModules", "EventSelectorAthenaRoot", "AthenaRootCnvSvc"] -ApplicationMgr.ExtSvc += [ "RootSvc", "AthenaRootCnvSvc" ] -ApplicationMgr.DLLs += ["McEventSelector"] -ApplicationMgr.ExtSvc += [ "McCnvSvc", "McEventSelector/EventSelector" ] -EventPersistencySvc.CnvServices += [ "McCnvSvc" ] -ApplicationMgr.OutStream = [ "Stream1" ] -ApplicationMgr.OutStreamType = "AthenaOutputStream"; -// for StoreGate -Stream1.ItemList = [ "2101#*", "133273#*"] -RootSvc.Output =["PythiaB.root"] -EventPersistencySvc.CnvServices += [ "AthenaRootCnvSvc" ] -Stream1.EvtConversionSvc = "AthenaRootCnvSvc" - -\end{verbatim} - -%\section{Bookeeping and cataloging} -\subsection{Which output files we store in CASTOR} -B-physics group has a space in CASTOR -/afs/cern.ch/atlas/project/bphys/. -For password into this area contact maria.smizanska@cern.ch. -Following files are to be stored: - -\begin{itemize} -\vspace{-3mm}\item PythiaB.root -\vspace{-3mm}\item pythiaB.ntup -\vspace{-3mm}\item output.log -\end{itemize} - - -%\subsection{Logical file names for Generator production.} - -%Ouput files are recognized by their Logical File name defined -%as: \\ -% \verb!LFN=$PROJECT.$DSET.$STEP.$PARTNR.$PGROUP.$DESCRIPTOR!. - -%\begin{tabular}{|p{60mm}|p{100mm}|} -%\hline - -%& \\ -% PROJECT & =dc1 or dc2 \\ \hline -% DSET & Number taken from a range of DSET numbers - -% given to B-physics group. -% Each institute participating in B-group will be given a subset -% according to their request. -% Contact maria.Smizanska@cern.ch \\ \hline -% STEP & =evgen \\ \hline -% OUTPARTNR & one DSET have several OUTPARTNR assigned at atlsim simulation step. -% e.q. 5000 Generator events with one DSET number will be simulated -% in atlsim in bunches of 500 events they will have 10 -% OUTPARTNR numbers \\ \hline -% PARTNR & one DSET have several OUTPARTNR assigned when sending jobs. -% e.q. 5000 Generator events with one DSET number will be generated -% in 5 bunches of 1000 events they will have 5 -% OUTPARTNR numbers \\ \hline - -% PGROUP & =Bphys \\ \hline -%DESCRIPTOR & e.q. \verb! Bd_Jpsi_mu6mu3_K0! \ -% \verb! bb_Jpsi_mumu_X ! \ \verb! Bs_Ds_phi_KK_pi ! \\ -% & \\ \hline - - -%\end{tabular} - - -\section{List of all ATHENA files dedicated to B-physics simulation } -\begin{itemize} -\vspace{-3mm}\item PythiaB/src/PythiaB.cxx \vspace{-3mm}\item -PythiaB/src/$\rm PythiaB\_entries.cxx$ - \vspace{-3mm}\item -PythiaB/src/$\rm PythiaB\_load.cxx$ \vspace{-3mm}\item -PythiaB/src/*.F \vspace{-3mm}\item PythiaB/PythiaB/PythiaB.h - -\vspace{-3mm}\item PythiaB/share/$\rm PythiaB\_Signal.py$ -\vspace{-3mm}\item PythiaB/share/$\rm PythiaB\_bbmu6X.py$ -\vspace{-3mm}\item PythiaB/share/Btune.py \vspace{-3mm}\item -PythiaB/share/CloseAntibQuark.py \vspace{-3mm}\item -PythiaB/share/Dsphipi.py - -? - - -\vspace{12mm} \vspace{-3mm}\item -GeneratorFilters/src/BSignalFilter.cxx \vspace{-3mm} -\item -GeneratorFilters/GeneratorFilters/BSignalFilter.h - -\end{itemize} - -\section{Classes PythiaB inheriths from} -Pythia, GenModule - -%\newpage -%\section{Structure of PythiaB code - Fig.} -%\begin{figure}[h] -% \mbox{\epsfig{file=img2.eps,height=16.cm,width=17.cm}} -% \end{figure} - -%\newpage -%\section{ PythiaB I$/$O - Fig.} -% \begin{figure}[h] -% \mbox{\epsfig{file=img3.eps,height=16.cm,width=17.cm}} -% \end{figure} - -\begin{thebibliography}{9} - -\bibitem{cmt} ATLAS software developers guide, - \begin{verbatim} http://atlas-sw.cern.ch/cgi-bin/cvsweb.cgi/~checkout~/offline/ -AtlasDoc/doc/SwDevUserGuide/userguide.html -\end{verbatim} -and cmt manual -\begin{verbatim} http://atlas.web.cern.ch/Atlas/GROUPS/SOFTWARE/OO/tools/cmt/Tutorial.html -\end{verbatim} -\bibitem{athena} Athena User Guide, - -\begin{verbatim} http://atlas.web.cern.ch/Atlas/GROUPS/SOFTWARE/OO/architecture/General/index.html -\end{verbatim} - -\bibitem{Py6} T. Sjostrand et al, PYTHIA 6.206 manual, LU TP 01-21 [hep-ph/0108264], - -\bibitem{Py6Nor} E.Norrbin, QCD phenomenology of Heavy particle dynamics, PhD theses, Lun University, Oct.2000. -\bibitem{my5} S.P.Baranov, M.Smizanska, Phys.Rev.D62:014012,2000 and ATL-PHYS-98-133. -\bibitem{my6} Pythia6 Tuning for B-physics simulations in ATLAS. -NOTE under the preparation. - -\end{thebibliography} -\end{document} diff --git a/Generators/PythiaB/doc/packagedoc.h b/Generators/PythiaB/doc/packagedoc.h deleted file mode 100644 index 9d1c72b0d37b009acbebddca77a338bc938481b7..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/doc/packagedoc.h +++ /dev/null @@ -1,31 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -/** - - <i> -Interface to Pythia6 dedicated to simulation of beauty events. - -PythiaB can be used for a generation of beauty events -written into a persistent root file, which can serve as an input into -a detector simulation -(atlsim) or into ATFAST. PythiaB can also work in the same job with ATLFAST - in this case the HepMC tree is passed from PythiaB to ATLFAST in - a transient form. - - The description of pysics related to the PythiaB, as well as instructions how to run PythiaB can be found here: -http://atlas-sw.cern.ch/cgi-bin/viewcvs-atlas.cgi/offline/Generators/PythiaB/doc/PythiaB.pdf - - -</i> - -@author Maria Smizanska (maria.smizanska@cern.ch), - - doxygen doc - Ewelina Lobodzinska (Jan. 2008) - -@page PythiaB_page - - - -*/ diff --git a/Generators/PythiaB/share/Bdecays0.dat b/Generators/PythiaB/share/Bdecays0.dat deleted file mode 100644 index d975b31959044bd6e8ce5b8629aa850a3bfa9fa0..0000000000000000000000000000000000000000 Binary files a/Generators/PythiaB/share/Bdecays0.dat and /dev/null differ diff --git a/Generators/PythiaB/share/BtoJpsieeK0s.py b/Generators/PythiaB/share/BtoJpsieeK0s.py deleted file mode 100644 index 6ea95b442a9086831be4aed9afd51a172a924647..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/share/BtoJpsieeK0s.py +++ /dev/null @@ -1,170 +0,0 @@ -############################################################### -# -# Job options file for generation of B-events -# in user selected exclusive channel -# -#============================================================== -#-------------------------------------------------------------- -# General Application Configuration options -#-------------------------------------------------------------- -#theApp.setup( MONTECARLO ) -include( "AthenaCommon/Atlas_Gen.UnixStandardJob.py" ) - -include( "PartPropSvc/PartPropSvc.py" ) - -#-------------------------------------------------------------- -# Private Application Configuration options -#-------------------------------------------------------------- -theApp.Dlls += [ "GaudiAlg" ] -theApp.Dlls += [ "TruthExamples", "PythiaB" ] -theApp.Dlls += [ "GaudiAud" ] -theApp.Dlls += [ "HbookCnv" ] -theApp.Dlls += [ "GeneratorFilters" ] -theAuditorSvc = AuditorSvc() -theAuditorSvc.Auditors = [ "ChronoAuditor" ] -#-------------------------------------------------------------- -# Algorithms -#-------------------------------------------------------------- -theApp.TopAlg = ["PythiaB" , "BSignalFilter"] -theApp.ExtSvc += ["AtRndmGenSvc"] -#-------------------------------------------------------------- -# Number of events to be accepted !! (default is 10) -# re-written if use B job submition script -# RunNumber, FirstEvent re-written if use B job submition script -#-------------------------------------------------------------- -theApp.EvtMax = 5 -EventSelector.RunNumber = 1 -EventSelector.FirstEvent = 1 -#-------------------------------------------------------------- -#User random number seeds - re-written if use B job submition script -#-------------------------------------------------------------- -AtRndmGenSvc = Service( "AtRndmGenSvc" ) -AtRndmGenSvc.Seeds = ["PYTHIA 4789899 989240512", "PYTHIA_INIT 820021 2347532"] -# AtRndmGenSvc.ReadFromFile = true; -# Set output level threshold (2=DEBUG, 3=INFO, 4=WARNING, 5=ERROR, 6=FATAL ) -MessageSvc.OutputLevel = 3 -#-------------------------------------------------------------- -# PARAMETERS SPECIFIC TO PYTHIAB -#-------------------------------------------------------------- -#PythiaB.ForceBDecay = "no"; -PythiaB = Algorithm( "PythiaB" ) -PythiaB.ForceCDecay = "no" -#-------------------------------------------------------------- -# ------------- FORCE YOUR B CHANNEL HERE ------------- -#-------------------------------------------------------------- -# To force your B-decay channels decomment following 2 lines: -include( "CloseAntibQuark.py" ) - -PythiaB.ForceBDecay = "yes" -# T H R E E E X A M P L E S T O O P E N Y O U R C H A N N E L -# Decomment one of following examples or create your analogically -# open your exclusive channel here Bs -> J/psi(mumu) phi -#PythiaB.PythiaCommand += ["pydat3 mdme 982 1 1", -# "pydat3 mdme 858 1 0", -# "pydat3 mdme 860 1 0" ] -# open your exclusive channel here Bs -> Ds pi with Ds->phi pi -##include "Dsphipi.txt" -#PythiaB.PythiaCommand += {"pydat3 mdme 967 1 1", -# "pydat3 mdme 831 1 1" }; -#PythiaB.ForceCDecay = "yes"; -# open your exclusive channel here Bs -> J/psi(mumu) K0 -#PythiaB.PythiaCommand += {"pydat3 mdme 889 1 1", -# "pydat3 mdme 858 1 0", -# "pydat3 mdme 860 1 0" }; -# open your exclusive channel here Bs -> J/psi(ee) K0 -PythiaB.PythiaCommand += ["pydat3 mdme 889 1 1", - "pydat3 mdme 858 1 1" ,"pydat3 brat 858 1." - "pydat3 mdme 859 1 0", - "pydat3 mdme 860 1 0" ] -#-------------------------------------------------------------- -# -------- PYTHIA PARAMETERS OPTIMAL FOR BEAUTY PRODUCTION -- -#-------------------------------------------------------------- -# 'msel 5' is only for fast tests! -# for correct b-producion you should use 'msel 1' -# 'mstj 26 0' = no mixing was defined in Btune as default -# 'mstj 22 2' = no K0S, Lambda0 decays in Pythia - defined in Btune as default - -include( "Btune.py" ) - -PythiaB.PythiaCommand += ["pysubs ckin 3 15.", - "pysubs ckin 9 -3.5", - "pysubs ckin 10 3.5", - "pysubs ckin 11 -3.5", - "pysubs ckin 12 3.5", - "pysubs msel 1"] -#-------------------------------------------------------------- -# ------------- DEFINE SELECTION CUTS ------------- -#-------------------------------------------------------------- -# ------------- Selections on b quarks ------------- -# simulate only b-flavour events -PythiaB.flavour = 5. -# PythiaB force exclusive decay channels only on b=-5 side -# ------------------- b=5 --- and/or --- b=-5 -------- -PythiaB.cutbq = ["10. 2.5 and 10. 2.5"] -#PythiaB.cutbq = ["6. 2.5 and 6. 2.5"] -# ------------- LVL1 muon cuts 0=OFF 1=ON ------------- -PythiaB.lvl1cut = [ 1., 6., 2.5] -# ------------- LVL2 muon/electron cuts 0=OFF 1=ON------------- -PythiaB.lvl2cut = [ 0., 13., 6., 2.5] -# ------------- Offline cuts 0=OFF 1=ON ------------- -PythiaB.offcut = [ 1., 0.5, 2.5, 3., 2.5, 0.5, 2.5] -# ------------- Number of repeated hadronization mhadr ------------- -PythiaB.mhadr = 15. -# ------------- For how many events store B-chain in NTUPLE ------------- -BSignalFilter = Algorithm( "BSignalFilter" ) -BSignalFilter.SignaltoNtup = 50 -# ------------- For how many events store B-chain in ascii ------------- -PythiaB.SignalDumptoAscii = 50. - - - -############################################################### - -#-------------------------------------------------------------- -# Histogram & Ntuple Persistency -#-------------------------------------------------------------- -# Change the following line to "RootHistCnv" for ROOT persistency -#theApp.Dlls += [ "RootHistCnv" ] -# Change the following line to "ROOT" for ROOT persistency -#theApp.HistogramPersistency = "ROOT" -#-------------------------------------------------------------- -# NTuple output file -#-------------------------------------------------------------- -#RootHistSvc = Service( "RootHistSvc" ) -#HbookHistSvc.NPAWC = 1500000 -#HistogramPersistencySvc = Service( "HistogramPersistencySvc" ) -#HistogramPersistencySvc.OutputFile = "histo.root" -#NTupleSvc = Service( "NTupleSvc" ) -#NTupleSvc.Output = [ "FILE1 DATAFILE='pythiaB.root' OPT='NEW' TYP='ROOT'" ] - -# Change since 12.0.3 -theApp.Dlls += [ "AnalysisTools" ] -THistSvc = Service ( "THistSvc" ) -THistSvc.Output = ["AANT DATAFILE='pythiaB.root' OPT='NEW'"] -theApp.TopAlg += [ "AANTupleStream" ] -AANTupleStream = Algorithm( "AANTupleStream" ) -AANTupleStream.ExtraRefNames = [ "" ] -AANTupleStream.OutputName = 'pythiaB.root' -AANTupleStream.ExistDataHeader = False -AANTupleStream.OutputLevel = VERBOSE - - - -############################################################### -# Add POOL persistency -include( "AthenaPoolCnvSvc/WriteAthenaPool_jobOptions.py" ) -include( "GeneratorObjectsAthenaPool/GeneratorObjectsAthenaPool_joboptions.py" ) -# 2101 = EventInfo -# 133273 = MCTruth (HepMC) -Stream1.ItemList += [ "2101#*", "133273#*" ] -include("AthenaServices/AthenaSealSvc_joboptions.py" ) -AthenaSealSvc.CheckDictionary = TRUE -Stream1.OutputFile = "pythiaB.pool.root" - - - -#============================================================== -# -# End of job options file -# -############################################################### diff --git a/Generators/PythiaB/share/BtoJpsieeX.py b/Generators/PythiaB/share/BtoJpsieeX.py deleted file mode 100644 index a0218cbddefe56825388778de8e3e608a17bf107..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/share/BtoJpsieeX.py +++ /dev/null @@ -1,166 +0,0 @@ -############################################################### -# -# Job options file for generation of B-events -# in user selected exclusive channel -# -#============================================================== -#-------------------------------------------------------------- -# General Application Configuration options -#-------------------------------------------------------------- -#theApp.setup( MONTECARLO ) -include( "AthenaCommon/Atlas_Gen.UnixStandardJob.py" ) - -include( "PartPropSvc/PartPropSvc.py" ) - -#-------------------------------------------------------------- -# Private Application Configuration options -#-------------------------------------------------------------- -theApp.Dlls += [ "GaudiAlg" ] -theApp.Dlls += [ "TruthExamples", "PythiaB" ] -theApp.Dlls += [ "GaudiAud" ] -theApp.Dlls += [ "HbookCnv" ] -theApp.Dlls += [ "GeneratorFilters" ] -theAuditorSvc = AuditorSvc() -theAuditorSvc.Auditors = [ "ChronoAuditor" ] -#-------------------------------------------------------------- -# Algorithms -#-------------------------------------------------------------- -theApp.TopAlg = ["PythiaB" , "BSignalFilter"] -theApp.ExtSvc += ["AtRndmGenSvc"] -#-------------------------------------------------------------- -# Number of events to be accepted !! (default is 10) -# re-written if use B job submition script -# RunNumber, FirstEvent re-written if use B job submition script -#-------------------------------------------------------------- -theApp.EvtMax = 5 -EventSelector.RunNumber = 1 -EventSelector.FirstEvent = 1 -#-------------------------------------------------------------- -#User random number seeds - re-written if use B job submition script -#-------------------------------------------------------------- -AtRndmGenSvc = Service( "AtRndmGenSvc" ) -AtRndmGenSvc.Seeds = ["PYTHIA 4789899 989240512", "PYTHIA_INIT 820021 2347532"] -# AtRndmGenSvc.ReadFromFile = true; -# Set output level threshold (2=DEBUG, 3=INFO, 4=WARNING, 5=ERROR, 6=FATAL ) -MessageSvc.OutputLevel = 3 -#-------------------------------------------------------------- -# PARAMETERS SPECIFIC TO PYTHIAB -#-------------------------------------------------------------- -#PythiaB.ForceBDecay = "no"; -PythiaB = Algorithm( "PythiaB" ) -PythiaB.ForceCDecay = "no" -#-------------------------------------------------------------- -# ------------- FORCE YOUR B CHANNEL HERE ------------- -#-------------------------------------------------------------- -# To force your B-decay channels decomment following 2 lines: -include( "CloseAntibQuark.py" ) - -PythiaB.ForceBDecay = "yes" - -# -# Inclusive B -> J/psi(ee) X production -# - -include( "Jpsichannels.py" ) - -#-------------------------------------------------------------- -# -------- PYTHIA PARAMETERS OPTIMAL FOR BEAUTY PRODUCTION -- -#-------------------------------------------------------------- -# 'msel 5' is only for fast tests! -# for correct b-producion you should use 'msel 1' -# 'mstj 26 0' = no mixing -# 'mstj 22 2' = no K0S, Lambda0 decays in Pythia - defined in Btune as default - - -include( "Btune.py" ) - -# Force J/psi to e+ e- -PythiaB.PythiaCommand += ["pydat3 mdme 889 1 1", - "pydat3 mdme 858 1 1" ,"pydat3 brat 858 1." - "pydat3 mdme 859 1 0", - "pydat3 mdme 860 1 0" ] - -PythiaB.PythiaCommand += ["pysubs ckin 3 9.", - "pysubs ckin 9 -3.5", - "pysubs ckin 10 3.5", - "pysubs ckin 11 -3.5", - "pysubs ckin 12 3.5", - "pysubs msel 1"] -#-------------------------------------------------------------- -# ------------- DEFINE SELECTION CUTS ------------- -#-------------------------------------------------------------- -# ------------- Selections on b quarks ------------- -# simulate only b-flavour events -PythiaB.flavour = 5. -# PythiaB force exclusive decay channels only on b=-5 side -# ------------------- b=5 --- and/or --- b=-5 -------- -PythiaB.cutbq = ["10. 2.5 and 10. 2.5"] -# ------------- LVL1 muon cuts 0=OFF 1=ON ------------- -PythiaB.lvl1cut = [ 1., 6., 2.5] -# ------------- LVL2 muon/electron cuts 0=OFF 1=ON------------- -#PythiaB.lvl2cut = [ 0., 13., 3., 2.5] -#PythiaB.lvl2cut = { 0., 11., 6., 2.5}; -# ------------- Offline cuts 0=OFF 1=ON ------------- -PythiaB.offcut = [ 1., 0.0, 102.5, 0., 102.5, 0.5, 2.5] -# ------------- Number of repeated hadronization mhadr ------------- -PythiaB.mhadr = 15. -# ------------- For how many events store B-chain in NTUPLE ------------- -BSignalFilter = Algorithm( "BSignalFilter" ) -BSignalFilter.SignaltoNtup = 50 -# ------------- For how many events store B-chain in ascii ------------- -PythiaB.SignalDumptoAscii = 50. - - -############################################################### - -#-------------------------------------------------------------- -# Histogram & Ntuple Persistency -#-------------------------------------------------------------- -# Change the following line to "RootHistCnv" for ROOT persistency -#theApp.Dlls += [ "RootHistCnv" ] -# Change the following line to "ROOT" for ROOT persistency -#theApp.HistogramPersistency = "ROOT" -#-------------------------------------------------------------- -# NTuple output file -#-------------------------------------------------------------- -#RootHistSvc = Service( "RootHistSvc" ) -#HbookHistSvc.NPAWC = 1500000 -#HistogramPersistencySvc = Service( "HistogramPersistencySvc" ) -#HistogramPersistencySvc.OutputFile = "histo.root" -#NTupleSvc = Service( "NTupleSvc" ) -#NTupleSvc.Output = [ "FILE1 DATAFILE='pythiaB.root' OPT='NEW' TYP='ROOT'" ] - -# Change since 12.0.3 -theApp.Dlls += [ "AnalysisTools" ] -THistSvc = Service ( "THistSvc" ) -THistSvc.Output = ["AANT DATAFILE='pythiaB.root' OPT='NEW'"] -theApp.TopAlg += [ "AANTupleStream" ] -AANTupleStream = Algorithm( "AANTupleStream" ) -AANTupleStream.ExtraRefNames = [ "" ] -AANTupleStream.OutputName = 'pythiaB.root' -AANTupleStream.ExistDataHeader = False -AANTupleStream.OutputLevel = VERBOSE - - - - - -############################################################### -# Add POOL persistency -include( "AthenaPoolCnvSvc/WriteAthenaPool_jobOptions.py" ) -include( "GeneratorObjectsAthenaPool/GeneratorObjectsAthenaPool_joboptions.py" ) -# 2101 = EventInfo -# 133273 = MCTruth (HepMC) -Stream1.ItemList += [ "2101#*", "133273#*" ] -include("AthenaServices/AthenaSealSvc_joboptions.py" ) -AthenaSealSvc.CheckDictionary = TRUE -Stream1.OutputFile = "pythiaB.pool.root" - - - - -#============================================================== -# -# End of job options file -# -############################################################### diff --git a/Generators/PythiaB/share/Btune.py b/Generators/PythiaB/share/Btune.py deleted file mode 100644 index ea96b6713cd651481fec4d36f79966a9ccf5ab77..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/share/Btune.py +++ /dev/null @@ -1,87 +0,0 @@ -# -# CTEQ6L with UE tuning by Arthur Moraes -# -# author: B-Physics group, 2006-11-09 -# -#-------------------------------------------------------------------------- -PythiaB = topAlg.PythiaB -#PythiaB.PythiaCommand += [ -# eta ranges -# "pysubs ckin 9 -4.5", -# "pysubs ckin 10 4.5", -# "pysubs ckin 11 -4.5", -# "pysubs ckin 12 4.5", -# no B-B mixing -# "pydat1 mstj 26 0", -# parton decay length scheme: -# particle decayed if average proper lifetime -# c\tau < PARJ(71): default PARJ(71):= 10 mm -# "pydat1 mstj 22 2", -# Peterson / SLAC fragmentaton function for b-quark (def: -0.005) -# "pydat1 parj 55 -0.006", -# Excited B-meson parameters -# "pydat1 parj 13 0.65", -# "pydat1 parj 14 0.12", -# "pydat1 parj 15 0.04", -# "pydat1 parj 16 0.12", -# "pydat1 parj 17 0.2" -# ] - -PythiaB.PythiaCommand += [ - "pysubs ckin 9 -4.5", - "pysubs ckin 10 4.5", - "pysubs ckin 11 -4.5", - "pysubs ckin 12 4.5", - "pydat1 mstj 26 0", - "pydat1 mstj 22 2", - "pydat1 parj 13 0.65", - "pydat1 parj 14 0.12", - "pydat1 parj 15 0.04", - "pydat1 parj 16 0.12", - "pydat1 parj 17 0.2", - "pydat1 parj 55 -0.006", - ] - - -######################################################################################### -####################### Arthur Moraes tuning (for reference) ############################ - -# lambda value for alpha_s -# "pydat1 parj 81 0.14", -# effects the amount of color reconnection -# "pypars parp 78 0.2", -# suppression probability for string pieces reattaching beam remnant -# to hard scatter -# "pypars parp 80 0.01", -# effective pT_min for MI (pt0 scale) -# "pypars parp 82 1.9", -# matter distribution -# "pypars parp 83 0.3", -# "pypars parp 84 0.5", -# pT0 scale -# "pypars parp 89 1800", -# "pypars parp 90 0.22", -# ISR -# "pypars mstp 70 2", -# max scale for FSR dipoles -# "pypars mstp 72 0", -# new multiple interaction model and new parton shower selected -# "pypars mstp 81 1", -# MPI -# "pypars mstp 82 4", -# ISR -# "pypars mstp 84 1", -# FSR -# "pypars mstp 85 1", -# MPI -# "pypars mstp 86 2", -# sea quarks: large x behavior of assumed gluon distribution -# "pypars mstp 87 4", -# color reconnection -# "pypars mstp 88 0", -# "pypars mstp 89 1", -# "pypars mstp 90 1", -# "pypars mstp 95 1", -# -######################################################################################### -######################################################################################### diff --git a/Generators/PythiaB/share/CSC.016701.PythiaB_Bs_Ds_PhiPi_Pi_Signal3.py b/Generators/PythiaB/share/CSC.016701.PythiaB_Bs_Ds_PhiPi_Pi_Signal3.py deleted file mode 100644 index 5139310058f5121782433da3f34b12ea482180c1..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/share/CSC.016701.PythiaB_Bs_Ds_PhiPi_Pi_Signal3.py +++ /dev/null @@ -1,141 +0,0 @@ -############################################################### -# -# Job options file for generation of B-events -# in user selected exclusive channel -# -# Decay channel: B0s->Ds(Phi(K+K-)Pi)Pi -# -# Author: W. Walkowiak, 2006-04-02 -# (adjusted after a template provided by PythiaB) -# Changes: WW, 2006-04-13 -# Removed CBNT_ lines; added RootHistSvc again -# PRODUCTION SYSTEM FRAGMENT -#============================================================== -from AthenaCommon.AlgSequence import AlgSequence -topAlg = AlgSequence("TopAlg") - -from PythiaB.PythiaBConf import PythiaB -topAlg += PythiaB() - -#-------------------------------------------------------------- -# Algorithms -#-------------------------------------------------------------- -#PythiaB.ForceBDecay = "no"; -PythiaB = topAlg.PythiaB -PythiaB.ForceCDecay = "no" -#-------------------------------------------------------------- -# ------------- FORCE YOUR B CHANNEL HERE ------------- -#-------------------------------------------------------------- -# To force your B-decay channels decomment following 2 lines: -include( "PythiaB/CloseAntibQuark.py" ) -PythiaB.ForceBDecay = "yes" -# -# open your exclusive channel here Bs -> Ds pi with Ds->phi pi -# -include( "PythiaB/Dsphipi.py" ) -# 959: Bs -> Ds-mu+nu -# 967: Bs -> Ds-Pi+ -# 969: Bs -> Ds-a1+ -# 831: Ds- -> PhiPi- - -PythiaB.PythiaCommand += [ "pydat3 mdme 967 1 1", - "pydat3 mdme 831 1 1" ]; -PythiaB.ForceCDecay = "yes"; - -# -# w.w., 2006-04-02 revised: -# -# user_finsel.F decay particle channel -# -PythiaB.ForceDecayChannel = "DsPhiX"; -# -# Decay particle selection for DsPhiX: -# 0. (off)/ 1. (on) -- ordered as follows: -# 1 : PhiKK decay -- Phi -> K+K- -# ((from B0s, B0bar or B-) or (from B0sbar, B0 or B+)) -# 2 : DsPhi decay -- Ds*- -> Ds-X, Ds- -> Phi pi-, Phi -> K+K- -# (from B0s, B0bar or B-) or (from B0sbar, B0 or B+)) -# 3 : A1RhoPi decay -- a1 -> RhoPi (from B0s) -# 4 : RhoPiPi decay -- Rho -> Pi+Pi- (from B0s) -PythiaB.DecayChannelParameters = [1., 0., 0., 0.]; - -# -#-------------------------------------------------------------- -# -------- PYTHIA PARAMETERS OPTIMAL FOR BEAUTY PRODUCTION -- -#-------------------------------------------------------------- -# 'msel 5' is only for fast tests! -# for correct b-production you should use 'msel 1' -# 'mstj 26 0' = no mixing was defined in Btune as default -# 'mstj 22 2' = no K0S, Lambda0 decays in Pythia - defined in Btune as default - -PythiaB.PythiaCommand += [ - "pysubs ckin 9 -4.5", - "pysubs ckin 10 4.5", - "pysubs ckin 11 -4.5", - "pysubs ckin 12 4.5", - "pydat1 mstj 26 0", - "pydat1 mstj 22 2", - "pydat1 parj 13 0.65", - "pydat1 parj 14 0.12", - "pydat1 parj 15 0.04", - "pydat1 parj 16 0.12", - "pydat1 parj 17 0.2", - "pydat1 parj 55 -0.006", - ] -PythiaB.PythiaCommand += [ - "pypars mstp 70 2", - "pypars mstp 72 0", - "pypars mstp 81 21", - "pypars mstp 82 4", - "pypars mstp 84 1", - "pypars mstp 85 1", - "pypars mstp 86 2", - "pypars mstp 87 4", - "pypars mstp 88 0", - "pypars mstp 89 1", - "pypars mstp 90 1", - "pypars mstp 95 1", - "pypars parp 78 0.2", - "pypars parp 80 0.01", - "pypars parp 82 1.9", - "pypars parp 83 0.3", - "pypars parp 84 0.5", - "pypars parp 89 1800", - "pypars parp 90 0.22", - "pydat1 parj 81 0.14"] - - -# PythiaB.PythiaCommand += ["pysubs ckin 3 6.", -PythiaB.PythiaCommand += ["pysubs ckin 3 10.", - "pysubs ckin 9 -3.5", - "pysubs ckin 10 3.5", - "pysubs ckin 11 -3.5", - "pysubs ckin 12 3.5", - "pysubs msel 1"] -#-------------------------------------------------------------- -# ------------- DEFINE SELECTION CUTS ------------- -#-------------------------------------------------------------- -# ------------- Selections on b quarks ------------- -# simulate only b-flavour events -PythiaB.flavour = 5. -# PythiaB force exclusive decay channels only on b=-5 side -# ------------------- b=5 --- and/or --- b=-5 -------- -PythiaB.cutbq = ["6.0 2.5 and 6.0 2.5"] -# PythiaB.cutbq = ["6.0 4.5 and 6.0 4.5"] -# ------------- LVL1 muon cuts 0=OFF 1=ON ------------- -PythiaB.lvl1cut = [ 1., 6., 2.5] -# ------------- LVL2 muon/electron cuts 0=OFF 1=ON------------- -PythiaB.lvl2cut = [ 0., 13., 6., 2.5] -# ------------- Offline cuts 0=OFF 1=ON ------------- -PythiaB.offcut = [ 1., 0.5, 2.5, 3., 2.5, 0.5, 2.5] -# -# ------------- Maximum number of tries for hard process ------------- -PythiaB.maxTriesHard = 50000. -# -# ------------- Number of repeated hadronization mhadr ------------- -PythiaB.mhadr = 100. -#============================================================== -# -# End of job options file -# -############################################################### diff --git a/Generators/PythiaB/share/CSC.017500.PythiaB_bbmu6X.py b/Generators/PythiaB/share/CSC.017500.PythiaB_bbmu6X.py deleted file mode 100644 index fccca8dde94ff6c534527ae3e7ab8405a78528c8..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/share/CSC.017500.PythiaB_bbmu6X.py +++ /dev/null @@ -1,91 +0,0 @@ -############################################################### -# PRODUCTION SYSTEM FRAGMENT -# Job options file for generation of B events -# no decay channel is specified. -# Only events containing at least one muon -# with pT>6GeV |eta|<2.5 are written to output -# Selection criteria can be changed by datacards -#============================================================== - -from AthenaCommon.AlgSequence import AlgSequence -topAlg = AlgSequence("TopAlg") - -from PythiaB.PythiaBConf import PythiaB -topAlg += PythiaB() - -#-------------------------------------------------------------- -# Algorithms -#-------------------------------------------------------------- -#-------------------------------------------------------------- -# PARAMETERS SPECIFIC TO PYTHIABMODULE -#-------------------------------------------------------------- -PythiaB = topAlg.PythiaB -PythiaB.ForceBDecay = "no" -PythiaB.ForceCDecay = "no" -#-------------------------------------------------------------- -# -------- PYTHIA PARAMETERS OPTIMAL FOR BEAUTY PRODUCTION -- -#-------------------------------------------------------------- -# 'msel 5' is only for fast tests! -# for correct b-producion you should use 'msel 1' -# 'mstj 26 0' = no mixing was defined in Btune as default -# 'mstj 22 2' = no K0S, Lambda0 decays in Pythia - defined in Btune as default - -PythiaB.PythiaCommand += [ - "pysubs ckin 9 -4.5", - "pysubs ckin 10 4.5", - "pysubs ckin 11 -4.5", - "pysubs ckin 12 4.5", - "pydat1 mstj 26 0", - "pydat1 mstj 22 2", - "pydat1 parj 13 0.65", - "pydat1 parj 14 0.12", - "pydat1 parj 15 0.04", - "pydat1 parj 16 0.12", - "pydat1 parj 17 0.2", - "pydat1 parj 55 -0.006", - ] - -PythiaB.PythiaCommand += [ - "pypars mstp 70 2", - "pypars mstp 72 0", - "pypars mstp 81 21", - "pypars mstp 82 4", - "pypars mstp 84 1", - "pypars mstp 85 1", - "pypars mstp 86 2", - "pypars mstp 87 4", - "pypars mstp 88 0", - "pypars mstp 89 1", - "pypars mstp 90 1", - "pypars mstp 95 1", - "pypars parp 78 0.2", - "pypars parp 80 0.01", - "pypars parp 82 1.9", - "pypars parp 83 0.3", - "pypars parp 84 0.5", - "pypars parp 89 1800", - "pypars parp 90 0.22", - "pydat1 parj 81 0.14"] - -PythiaB.PythiaCommand += ["pysubs ckin 3 6.", - "pysubs msel 1"] -#-------------------------------------------------------------- -# ------------- DEFINE SELECTION CUTS ------------- -#-------------------------------------------------------------- -PythiaB.flavour = 5. -# ------------- Selections on b quarks ------------- -PythiaB.cutbq = ["7. 4.5 or 7. 4.5"] -# ------------- LVL1 muon cuts 0=OFF 1=ON ------------- -PythiaB.lvl1cut = [ 1., 6., 2.5] -# ------------- LVL2 muon/electron cuts 0=OFF 1=ON------------- -PythiaB.lvl2cut = [ 0., 13., 6., 2.5] -#PythiaB.lvl2cut = { 0., 11., 6., 2.5}; -# ------------- Offline cuts 0=OFF 1=ON ------------- -PythiaB.offcut = [ 0., 0., 102.5, 0., 102.5, 0., 102.5] -# ------------- Number of repeated hadronization mhadr ------------- -PythiaB.mhadr = 9. -#============================================================== -# -# End of job options file -# -############################################################### diff --git a/Generators/PythiaB/share/CSC.017501.PythiaB_bbmu4X.py b/Generators/PythiaB/share/CSC.017501.PythiaB_bbmu4X.py deleted file mode 100644 index d96d0ad663342a87e0074cc2041a4001cc8f48bc..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/share/CSC.017501.PythiaB_bbmu4X.py +++ /dev/null @@ -1,99 +0,0 @@ -############################################################### -# -# Job options file fragment for generation of B events -# no decay channel is specified. -# Only events containing at least one muon -# with pT>4GeV |eta|<2.5 are written to output -# Selection criteria can be changed by datacards -#============================================================== -#-------------------------------------------------------------- -# Private Application Configuration options -#-------------------------------------------------------------- -from AthenaCommon.AlgSequence import AlgSequence -topAlg = AlgSequence("TopAlg") - -from PythiaB.PythiaBConf import PythiaB -topAlg += PythiaB() - -#-------------------------------------------------------------- -# Algorithms -#-------------------------------------------------------------- -#-------------------------------------------------------------- -# PARAMETERS SPECIFIC TO PYTHIABMODULE -#-------------------------------------------------------------- -PythiaB = topAlg.PythiaB -PythiaB.ForceBDecay = "no" -PythiaB.ForceCDecay = "no" -#-------------------------------------------------------------- -# -------- PYTHIA PARAMETERS OPTIMAL FOR BEAUTY PRODUCTION -- -#-------------------------------------------------------------- -# 'msel 5' is only for fast tests! -# for correct b-producion you should use 'msel 1' -# 'mstj 26 0' = no mixing was defined in Btune as default -# 'mstj 22 2' = no K0S, Lambda0 decays in Pythia - defined in Btune as default - -include( "PythiaB/Btune.py" ) - -PythiaB.PythiaCommand += [ - # lambda value for alpha_s - "pydat1 parj 81 0.14", - # effects the amount of color reconnection - "pypars parp 78 0.2", - # suppression probability for string pieces reattaching beam remnant - # to hard scatter - "pypars parp 80 0.01", - # effective pT_min for MI (pt0 scale) - "pypars parp 82 1.9", - # matter distribution - "pypars parp 83 0.3", - "pypars parp 84 0.5", - # pT0 scale - "pypars parp 89 1800", - "pypars parp 90 0.22", - # ISR - "pypars mstp 70 2", - # max scale for FSR dipoles - "pypars mstp 72 0", - # new multiple interaction model and new parton shower selected - "pypars mstp 81 1", - # MPI - "pypars mstp 82 4", - # ISR - "pypars mstp 84 1", - # FSR - "pypars mstp 85 1", - # MPI - "pypars mstp 86 2", - # sea quarks: large x behavior of assumed gluon distribution - "pypars mstp 87 4", - # color reconnection - "pypars mstp 88 0", - "pypars mstp 89 1", - "pypars mstp 90 1", - "pypars mstp 95 1", - ] - -PythiaB.PythiaCommand += ["pysubs ckin 3 6.", - "pysubs msel 1"] -#-------------------------------------------------------------- -# ------------- DEFINE SELECTION CUTS ------------- -#-------------------------------------------------------------- -PythiaB.flavour = 5. -# ------------- Selections on b quarks ------------- -PythiaB.cutbq = ["5. 4.5 or 5. 4.5"] -# ------------- LVL1 muon cuts 0=OFF 1=ON ------------- -PythiaB.lvl1cut = [ 1., 4., 2.5] -# ------------- LVL2 muon/electron cuts 0=OFF 1=ON------------- -PythiaB.lvl2cut = [ 0., 13., 6., 2.5] -#PythiaB.lvl2cut = { 0., 11., 6., 2.5}; -# ------------- Offline cuts 0=OFF 1=ON ------------- -PythiaB.offcut = [ 0., 0., 102.5, 0., 102.5, 0., 102.5] -# ------------- Number of repeated hadronization mhadr ------------- -PythiaB.mhadr = 7. -############################################################### - -#============================================================== -# -# End of job options file -# -############################################################### diff --git a/Generators/PythiaB/share/CSC.017503.Pythia_directJpsimu6mu4.py b/Generators/PythiaB/share/CSC.017503.Pythia_directJpsimu6mu4.py deleted file mode 100644 index 3aa4f27f42d2413746410b351511c2a414802619..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/share/CSC.017503.Pythia_directJpsimu6mu4.py +++ /dev/null @@ -1,231 +0,0 @@ -############################################################### -# PRODUCTION SYSTEM FRAGMENT -# jobOptions for quarkonium production in the -# NRQCD colour-octet framework -# Author: Darren D Price ( Darren.Price@cern.ch ) -# Date: Jun 2006 -# Modified: Oct 2006 -#============================================================== - -#-------------------------------------------------------------- -# Private Application Configuration options -#-------------------------------------------------------------- -from AthenaCommon.AlgSequence import AlgSequence -topAlg = AlgSequence("TopAlg") - -from Pythia_i.Pythia_iConf import Pythia -topAlg += Pythia() - - -from GeneratorFilters.GeneratorFiltersConf import BSignalFilter -topAlg += BSignalFilter() - - -# AtRndmGenSvc.ReadFromFile = true; -Pythia = topAlg.Pythia - -Pythia.PythiaCommand += [ - "pypars mstp 70 2", - "pypars mstp 72 0", - "pypars mstp 81 21", - "pypars mstp 82 4", - "pypars mstp 84 1", - "pypars mstp 85 1", - "pypars mstp 86 2", - "pypars mstp 87 4", - "pypars mstp 88 0", - "pypars mstp 89 1", - "pypars mstp 90 1", - "pypars mstp 95 1", - "pypars parp 78 0.2", - "pypars parp 80 0.01", - "pypars parp 82 1.9", - "pypars parp 83 0.3", - "pypars parp 84 0.5", - "pypars parp 89 1800", - "pypars parp 90 0.22", - "pydat1 parj 81 0.14"] - -Pythia.PythiaCommand += [ # quarkonium processes - - #"pysubs msel 0", # user chooses decay mode(s) - "pysubs msel 61", # colour octet charmonium production (421-439) - #"pysubs msel 62", # colour octet bottomonium production (461-479) - #"pysubs msel 63", # colour octet onium production (msel 61+62) - - # ----- J/Psi production ----- - # --- 3S1(1) - #"pysubs msub 421 1", # gg->cc~[3S1(1)]+g - # --- 3S1(8) - #"pysubs msub 422 1", # gg->cc~[3S1(8)]+g - #"pysubs msub 425 1", # gq->q+cc~[3S1(8)] - #"pysubs msub 428 1", # qq~->g+cc~[3S1(8)] - # --- 1S0(8) - #"pysubs msub 423 1", # gg->cc~[1S0(8)]+g - #"pysubs msub 426 1", # gq->q+cc~[1S0(8)] - #"pysubs msub 429 1", # qq~->g+cc~[1S0(8)] - # --- 3PJ(8) - #"pysubs msub 424 1", # gg->cc~[3PJ(8)]+g - #"pysubs msub 427 1", # gq->q+cc~[3PJ(8)] - #"pysubs msub 430 1", # qq~->g+cc~[3PJ(8)] - - # ----- Chi's ----- - #"pysubs msub 431 1", # gg->cc~[3P0(1)]+g - #"pysubs msub 432 1", # gg->cc~[3P1(1)]+g - #"pysubs msub 433 1", # gg->cc~[3P2(1)]+g - #"pysubs msub 434 1", # qg->q+cc~[3P0(1)] - #"pysubs msub 435 1", # qg->q+cc~[3P1(1)] - #"pysubs msub 436 1", # qg->q+cc~[3P2(1)] - #"pysubs msub 437 1", # qq~->cc~[3P0(1)]+g - #"pysubs msub 438 1", # qq~->cc~[3P1(1)]+g - #"pysubs msub 439 1", # qq~->cc~[3P2(1)]+g - - # ----- Upsilon production ----- - # --- 3S1(1) - #"pysubs msub 461 1", # gg->bb~[3S1(1)]+g - # --- 3S1(8) - #"pysubs msub 462 1", # gg->bb~[3S1(8)]+g - #"pysubs msub 465 1", # gq->q+bb~[3S1(8)] - #"pysubs msub 468 1", # qq~->g+bb~[3S1(8)] - # --- 1S0(8) - #"pysubs msub 463 1", # gg->bb~[1S0(8)]+g - #"pysubs msub 466 1", # gq->q+bb~[1S0(8)] - #"pysubs msub 469 1", # qq~->g+bb~[1S0(8)] - # --- 3PJ(8) - #"pysubs msub 464 1", # gg->bb~[3PJ(8)]+g - #"pysubs msub 467 1", # gq->q+bb~[3PJ(8)] - #"pysubs msub 470 1", # qq~->g+bb~[3PJ(8)] - - # ----- Chi's ----- - #"pysubs msub 471 1", # gg->bb~[3P0(1)]+g - #"pysubs msub 472 1", # gg->bb~[3P1(1)]+g - #"pysubs msub 473 1", # gg->bb~[3P2(1)]+g - #"pysubs msub 474 1", # qg->q+bb~[3P0(1)] - #"pysubs msub 475 1", # qg->q+bb~[3P1(1)] - #"pysubs msub 476 1", # qg->q+bb~[3P2(1)] - #"pysubs msub 477 1", # qq~->bb~[3P0(1)]+g - #"pysubs msub 478 1", # qq~->bb~[3P1(1)]+g - #"pysubs msub 479 1", # qq~->bb~[3P2(1)]+g - - ] - -Pythia.PythiaCommand += [ # force decays - - "pydat3 mdme 858 1 0", # J/psi->e+e- - "pydat3 mdme 859 1 1", # J/psi->mumu (br 0.06) - "pydat3 mdme 860 1 0", # J/psi->rndmflavpairs - - "pydat3 mdme 1501 1 1", # chi0c->J/psi gamma (br 0.007) - "pydat3 mdme 1502 1 0", # chi0c->rfp - - "pydat3 mdme 1555 1 1", # chi1c->J/psi gamma (br 0.273) - "pydat3 mdme 1556 1 0", # chi1c->rfp - - "pydat3 mdme 861 1 1", # chi2c->J/psi gamma (br 0.135) - "pydat3 mdme 862 1 0", # chi2c->rfp - - "pydat3 mdme 1034 1 0", # Upsilon->e+e- (br 0.0254) - "pydat3 mdme 1035 1 1", # Upsilon->mu+mu- (br 0.0248) - "pydat3 mdme 1036 1 0", # Upsilon->tau+tau- (br 0.0267) - "pydat3 mdme 1037 1 0", # Upsilon->ddbar - "pydat3 mdme 1038 1 0", # Upsilon->uubar - "pydat3 mdme 1039 1 0", # Upsilon->ssbar - "pydat3 mdme 1040 1 0", # Upsilon->ccbar - "pydat3 mdme 1041 1 0", # Upsilon->ggg - "pydat3 mdme 1042 1 0", # Upsilon->gamma gg - - "pydat3 mdme 1520 1 1", # chi0b->Upsilon gamma (br 0.02) - "pydat3 mdme 1521 1 0", # chi0b->gg - - "pydat3 mdme 1565 1 1", # chi1b->Upsilon gamma (br 0.35) - "pydat3 mdme 1566 1 0", # chi1b->gg - - "pydat3 mdme 1043 1 1", # chi2b->Upsilon gamma (br 0.22) - "pydat3 mdme 1044 1 0", # chi2b->gg - - ] - -Pythia.PythiaCommand += [ # NRQCD matrix elements - - "pypars parp 141 1.16", # Jpsi-3S1(1) NRQCD ME - "pypars parp 142 0.0119", # Jpsi-3S1(8) NRQCD ME - "pypars parp 143 0.01", # Jpsi-1S0(8) NRQCD ME - "pypars parp 144 0.01", # Jpsi-3P0(8) NRQCD ME / m_c^2 - "pypars parp 145 0.05", # chi_c0-3P0(1) NRQCD ME / m_c^2 - - "pypars parp 146 9.28", # Upsilon-3S1(1) NRQCD ME - "pypars parp 147 0.15", # Upsilon-3S1(8) NRQCD ME - "pypars parp 148 0.02", # Upsilon-1S0(8) NRQCD ME - "pypars parp 149 0.02", # Upsilon-3P0(8) NRQCD ME / m_b^2 - "pypars parp 150 0.085", # chi_b0-3P0(1) NRQCD ME / m_b^2 - - ] - -#Pythia.PythiaCommand += [ ### Moraes tunings (here for reference only) - -# "pypars mstp 70 2", -# "pypars mstp 72 0", - -# "pypars mstp 81 1", -# "pypars mstp 82 4", - -# "pypars mstp 84 1", -# "pypars mstp 85 1", -# "pypars mstp 86 2", -# "pypars mstp 87 4", -# "pypars mstp 88 0", -# "pypars mstp 89 1", -# "pypars mstp 90 1", - -# "pypars mstp 95 1", - -# "pypars parp 78 0.2", -# "pypars parp 80 0.01", -# "pypars parp 82 1.9", -# "pypars parp 83 0.3", -# "pypars parp 84 0.5", -# "pypars parp 89 1800", -# "pypars parp 90 0.22", - -# "pydat1 parj 81 0.14", - -# ] - - -Pythia.PythiaCommand += [ - - "pysubs ckin 3 4.5", # lower pT cut on hard process in GeV - - #"pypars mstp 61 0", # inital state showers off - #"pypars mstp 71 0", # final state showers off - #"pypars mstp 111 0" # fragmentation/hadronisation off - - ] - -Pythia.PythiaCommand += ["pyinit pylistf 1", - "pystat mstat 1", - "pyinit dumpr 0 3",#dump this event range to screen - ] - - -#------- Muon Trigger Cuts -------- -BSignalFilter = topAlg.BSignalFilter -#-------------- Level 1 Muon Cuts --------------------- -BSignalFilter.LVL1MuonCutOn = True -BSignalFilter.LVL1MuonCutPT = 6000.0 -BSignalFilter.LVL1MuonCutEta = 2.5 -#-------------- Level 2 lepton cuts ------------------- -# These will only function if LVL1 trigger used. -BSignalFilter.LVL2MuonCutOn = True -BSignalFilter.LVL2MuonCutPT = 4000.0 -BSignalFilter.LVL2MuonCutEta = 2.5 -try: - Stream1.RequireAlgs += ["BSignalFilter"] -except Exception, e: - pass - -#============================================================== -# -# End of job options file -# -############################################################### diff --git a/Generators/PythiaB/share/CSC.017506.PythiaB_bbmu6mu4X.py b/Generators/PythiaB/share/CSC.017506.PythiaB_bbmu6mu4X.py deleted file mode 100644 index c0f3e6244de3901e5bad4f84cf20eec3b9541630..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/share/CSC.017506.PythiaB_bbmu6mu4X.py +++ /dev/null @@ -1,92 +0,0 @@ -############################################################### -# PRODUCTION SYSTEM FRAGMENT -# Job options file for generation of B events -# no decay channel is specified. -# Only events containing at least one muon -# with pT>6GeV |eta|<2.5 are written to output -# Selection criteria can be changed by datacards -#============================================================== -from AthenaCommon.AlgSequence import AlgSequence -topAlg = AlgSequence("TopAlg") - -from PythiaB.PythiaBConf import PythiaB -topAlg += PythiaB() - -#-------------------------------------------------------------- -# Algorithms -#-------------------------------------------------------------- -#-------------------------------------------------------------- -# PARAMETERS SPECIFIC TO PYTHIABMODULE -#-------------------------------------------------------------- -PythiaB = topAlg.PythiaB -PythiaB.ForceBDecay = "no" -PythiaB.ForceCDecay = "no" -#-------------------------------------------------------------- -# -------- PYTHIA PARAMETERS OPTIMAL FOR BEAUTY PRODUCTION -- -#-------------------------------------------------------------- -# 'msel 5' is only for fast tests! -# for correct b-producion you should use 'msel 1' -# 'mstj 26 0' = no mixing was defined in Btune as default -# 'mstj 22 2' = no K0S, Lambda0 decays in Pythia - defined in Btune as default - -PythiaB.PythiaCommand += [ - "pysubs ckin 9 -4.5", - "pysubs ckin 10 4.5", - "pysubs ckin 11 -4.5", - "pysubs ckin 12 4.5", - "pydat1 mstj 26 0", - "pydat1 mstj 22 2", - "pydat1 parj 13 0.65", - "pydat1 parj 14 0.12", - "pydat1 parj 15 0.04", - "pydat1 parj 16 0.12", - "pydat1 parj 17 0.2", - "pydat1 parj 55 -0.006", - ] - -PythiaB.PythiaCommand += [ - "pypars mstp 70 2", - "pypars mstp 72 0", - "pypars mstp 81 21", - "pypars mstp 82 4", - "pypars mstp 84 1", - "pypars mstp 85 1", - "pypars mstp 86 2", - "pypars mstp 87 4", - "pypars mstp 88 0", - "pypars mstp 89 1", - "pypars mstp 90 1", - "pypars mstp 95 1", - "pypars parp 78 0.2", - "pypars parp 80 0.01", - "pypars parp 82 1.9", - "pypars parp 83 0.3", - "pypars parp 84 0.5", - "pypars parp 89 1800", - "pypars parp 90 0.22", - "pydat1 parj 81 0.14"] - -PythiaB.PythiaCommand += ["pysubs ckin 3 10.", - "pysubs msel 1"] -#-------------------------------------------------------------- -# ------------- DEFINE SELECTION CUTS ------------- -#-------------------------------------------------------------- -PythiaB.flavour = 5. -# ------------- Selections on b quarks ------------- -PythiaB.cutbq = ["7. 4.5 or 7. 4.5"] -# ------------- LVL1 muon cuts 0=OFF 1=ON ------------- -PythiaB.lvl1cut = [ 1., 6., 2.5] -# ------------- LVL2 muon/electron cuts 0=OFF 1=ON------------- -PythiaB.lvl2cut = [ 1., 13., 4., 2.5] -#PythiaB.lvl2cut = { 0., 11., 6., 2.5}; -# ------------- Offline cuts 0=OFF 1=ON ------------- -PythiaB.offcut = [ 0., 0., 102.5, 0., 102.5, 0., 102.5] -# ------------- Number of repeated hadronization mhadr ------------- -PythiaB.mhadr = 20. -# ------------- For how many events store B-chain in NTUPLE ------------- - -#============================================================== -# -# End of job options file -# -############################################################### diff --git a/Generators/PythiaB/share/CSC.017516.PythiaB_bb_Jpsimu6mu4X.py b/Generators/PythiaB/share/CSC.017516.PythiaB_bb_Jpsimu6mu4X.py deleted file mode 100644 index ecafc2db77ee6934cffc7e3dc6fa7e3eab5d015b..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/share/CSC.017516.PythiaB_bb_Jpsimu6mu4X.py +++ /dev/null @@ -1,127 +0,0 @@ -############################################################### -# PRODUCTION SYSTEM SCRIPT -# Job options file for generation of B-events -# in user selected exclusive channel -# -#============================================================== -#-------------------------------------------------------------- -# Private Application Configuration options -#-------------------------------------------------------------- -from AthenaCommon.AlgSequence import AlgSequence -topAlg = AlgSequence("TopAlg") - -from PythiaB.PythiaBConf import PythiaB -topAlg += PythiaB() - -#-------------------------------------------------------------- -# Algorithms -#-------------------------------------------------------------- -from GeneratorFilters.GeneratorFiltersConf import BSignalFilter -topAlg += BSignalFilter() - -#-------------------------------------------------------------- -# PARAMETERS SPECIFIC TO PYTHIAB -#-------------------------------------------------------------- -#PythiaB.ForceBDecay = "no"; -PythiaB = topAlg.PythiaB -PythiaB.ForceCDecay = "no" -#-------------------------------------------------------------- -# ------------- FORCE YOUR B CHANNEL HERE ------------- -#-------------------------------------------------------------- -# To force your B-decay channels decomment following 2 lines: -include( "PythiaB/CloseAntibQuark.py" ) - -PythiaB.ForceBDecay = "yes" - -# -# Inclusive B -> J/psi(mumu) X production -# - -include( "PythiaB/Jpsichannels.py" ) - -#-------------------------------------------------------------- -# -------- PYTHIA PARAMETERS OPTIMAL FOR BEAUTY PRODUCTION -- -#-------------------------------------------------------------- -# 'msel 5' is only for fast tests! -# for correct b-producion you should use 'msel 1' -# 'mstj 26 0' = no mixing -# 'mstj 22 2' = no K0S, Lambda0 decays in Pythia - defined in Btune as default - -PythiaB.PythiaCommand += [ - "pysubs ckin 9 -4.5", - "pysubs ckin 10 4.5", - "pysubs ckin 11 -4.5", - "pysubs ckin 12 4.5", - "pydat1 mstj 26 0", - "pydat1 mstj 22 2", - "pydat1 parj 13 0.65", - "pydat1 parj 14 0.12", - "pydat1 parj 15 0.04", - "pydat1 parj 16 0.12", - "pydat1 parj 17 0.2", - "pydat1 parj 55 -0.006", - ] - -PythiaB.PythiaCommand += [ - "pypars mstp 70 2", - "pypars mstp 72 0", - "pypars mstp 81 21", - "pypars mstp 82 4", - "pypars mstp 84 1", - "pypars mstp 85 1", - "pypars mstp 86 2", - "pypars mstp 87 4", - "pypars mstp 88 0", - "pypars mstp 89 1", - "pypars mstp 90 1", - "pypars mstp 95 1", - "pypars parp 78 0.2", - "pypars parp 80 0.01", - "pypars parp 82 1.9", - "pypars parp 83 0.3", - "pypars parp 84 0.5", - "pypars parp 89 1800", - "pypars parp 90 0.22", - "pydat1 parj 81 0.14"] - -# Force J/psi to mu+ mu- -PythiaB.PythiaCommand += ["pydat3 mdme 889 1 1", - "pydat3 mdme 858 1 0", - "pydat3 mdme 859 1 1", - "pydat3 brat 859 1.", - "pydat3 mdme 860 1 0" ] - -PythiaB.PythiaCommand += ["pysubs ckin 3 9.", - "pysubs ckin 9 -3.5", - "pysubs ckin 10 3.5", - "pysubs ckin 11 -3.5", - "pysubs ckin 12 3.5", - "pysubs msel 1"] -#-------------------------------------------------------------- -# ------------- DEFINE SELECTION CUTS ------------- -#-------------------------------------------------------------- -# ------------- Selections on b quarks ------------- -# simulate only b-flavour events -PythiaB.flavour = 5. -# PythiaB force exclusive decay channels only on b=-5 side -# ------------------- b=5 --- and/or --- b=-5 -------- -PythiaB.cutbq = ["0. 102.5 and 10. 2.5"] -# ------------- LVL1 muon cuts 0=OFF 1=ON ------------- -PythiaB.lvl1cut = [ 1., 6., 2.5] -# ------------- LVL2 muon/electron cuts 0=OFF 1=ON------------- -PythiaB.lvl2cut = [ 1., 13., 4., 2.5] -#PythiaB.lvl2cut = { 0., 11., 6., 2.5}; -# ------------- Offline cuts 0=OFF 1=ON ------------- -PythiaB.offcut = [ 0., 0.5, 2.5, 3., 2.5, 0.5, 2.5] -# ------------- Number of repeated hadronization mhadr ------------- -PythiaB.mhadr = 2. -# ------------- For how many events store B-chain in NTUPLE ------------- - - -############################################################### - -#============================================================== -# -# End of job options file -# -############################################################### diff --git a/Generators/PythiaB/share/CSC.017700.PythiaB_Bs_Jpsi_mu6mu3_phi_KK.py b/Generators/PythiaB/share/CSC.017700.PythiaB_Bs_Jpsi_mu6mu3_phi_KK.py deleted file mode 100644 index e252311535f0b7f76f25576f752e1e01158687b4..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/share/CSC.017700.PythiaB_Bs_Jpsi_mu6mu3_phi_KK.py +++ /dev/null @@ -1,126 +0,0 @@ -############################################################### -# -# Job options file for generation of B-events -# in user selected exclusive channel -# -#============================================================== -#-------------------------------------------------------------- -# General Application Configuration options -#-------------------------------------------------------------- -#-------------------------------------------------------------- -# Private Application Configuration options -#-------------------------------------------------------------- -from AthenaCommon.AlgSequence import AlgSequence -topAlg = AlgSequence("TopAlg") - -from PythiaB.PythiaBConf import PythiaB -topAlg += PythiaB() - -#------------------------------------------------------------- -# Algorithms -#-------------------------------------------------------------- -#-------------------------------------------------------------- -# PARAMETERS SPECIFIC TO PYTHIAB -#-------------------------------------------------------------- -#PythiaB.ForceBDecay = "no"; -PythiaB = topAlg.PythiaB -PythiaB.ForceCDecay = "no" -#-------------------------------------------------------------- -# ------------- FORCE YOUR B CHANNEL HERE ------------- -#-------------------------------------------------------------- -# To force your B-decay channels decomment following 2 lines: -include( "PythiaB/CloseAntibQuark.py" ) - -PythiaB.ForceBDecay = "yes" -# T H R E E E X A M P L E S T O O P E N Y O U R C H A N N E L -# Decomment one of following examples or create your analogically -# open your exclusive channel here Bs -> J/psi(mumu) phi - PythiaB.PythiaCommand += ["pydat3 mdme 982 1 1", - "pydat3 mdme 858 1 0", - "pydat3 mdme 860 1 0" ] -# This phis which have originated from Bs to decay into two kaons. Other phis -# are left to decay as normal. Comment this line to prevent the phi forcing. -# See user_finsel.F (in src directory) for more such forcing options. -PythiaB.ForceDecayChannel = "BsJpsimumuphiKK" -# open your exclusive channel here Bs -> Ds pi with Ds->phi pi -##include "Dsphipi.txt" -#PythiaB.PythiaCommand += {"pydat3 mdme 967 1 1", -# "pydat3 mdme 831 1 1" }; -#PythiaB.ForceCDecay = "yes"; -# open your exclusive channel here Bs -> J/psi(mumu) K0 -#PythiaB.PythiaCommand += {"pydat3 mdme 889 1 1", -# "pydat3 mdme 858 1 0", -# "pydat3 mdme 860 1 0" }; -#-------------------------------------------------------------- -# -------- PYTHIA PARAMETERS OPTIMAL FOR BEAUTY PRODUCTION -- -#------------------------------------------------------------- -# 'msel 5' is only for fast tests! -# for correct b-producion you should use 'msel 1' -# 'mstj 26 0' = no mixing was defined in Btune as default -# 'mstj 22 2' = no K0S, Lambda0 decays in Pythia - defined in Btune as default - -PythiaB.PythiaCommand += [ - "pysubs ckin 9 -4.5", - "pysubs ckin 10 4.5", - "pysubs ckin 11 -4.5", - "pysubs ckin 12 4.5", - "pydat1 mstj 26 0", - "pydat1 mstj 22 2", - "pydat1 parj 13 0.65", - "pydat1 parj 14 0.12", - "pydat1 parj 15 0.04", - "pydat1 parj 16 0.12", - "pydat1 parj 17 0.2", - "pydat1 parj 55 -0.006", - ] -PythiaB.PythiaCommand += [ - "pypars mstp 70 2", - "pypars mstp 72 0", - "pypars mstp 81 21", - "pypars mstp 82 4", - "pypars mstp 84 1", - "pypars mstp 85 1", - "pypars mstp 86 2", - "pypars mstp 87 4", - "pypars mstp 88 0", - "pypars mstp 89 1", - "pypars mstp 90 1", - "pypars mstp 95 1", - "pypars parp 78 0.2", - "pypars parp 80 0.01", - "pypars parp 82 1.9", - "pypars parp 83 0.3", - "pypars parp 84 0.5", - "pypars parp 89 1800", - "pypars parp 90 0.22", - "pydat1 parj 81 0.14"] - -PythiaB.PythiaCommand += ["pysubs ckin 3 12.", - "pysubs ckin 9 -3.5", - "pysubs ckin 10 3.5", - "pysubs ckin 11 -3.5", - "pysubs ckin 12 3.5", - "pysubs msel 1"] -#-------------------------------------------------------------- -# ------------- DEFINE SELECTION CUTS ------------- -#-------------------------------------------------------------- -# ------------- Selections on b quarks ------------- -# simulate only b-flavour events -PythiaB.flavour = 5. -# PythiaB force exclusive decay channels only on b=-5 side -# ------------------- b=5 --- and/or --- b=-5 -------- -PythiaB.cutbq = ["0. 102.5 and 10. 2.5"] -# ------------- LVL1 muon cuts 0=OFF 1=ON ------------- -PythiaB.lvl1cut = [ 0., 6., 2.5] -# ------------- LVL2 muon/electron cuts 0=OFF 1=ON------------- -PythiaB.lvl2cut = [ 0., 13., 6., 2.5] -#PythiaB.lvl2cut = { 0., 11., 6., 2.5}; -# ------------- Offline cuts 0=OFF 1=ON ------------- -PythiaB.offcut = [ 1., 6.0, 2.5, 6., 2.5, 6.0, 2.5] -# ------------- Number of repeated hadronization mhadr ------------- -PythiaB.mhadr = 14. -#============================================================== -# -# End of job options file -# -############################################################### diff --git a/Generators/PythiaB/share/CSC.017900.PythiaB_Bs_mu6mu4.py b/Generators/PythiaB/share/CSC.017900.PythiaB_Bs_mu6mu4.py deleted file mode 100644 index 32a5bf9fcc6e03d7cf6300e8ec147b6ee8b975d7..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/share/CSC.017900.PythiaB_Bs_mu6mu4.py +++ /dev/null @@ -1,128 +0,0 @@ -############################################################### -# -# Job options file for generation of B-events -# in user selected exclusive channel -# PRODUCTION SYSTEM FRAGMENT -#============================================================== -#-------------------------------------------------------------- -# Private Application Configuration options -#-------------------------------------------------------------- -from AthenaCommon.AlgSequence import AlgSequence -topAlg = AlgSequence("TopAlg") - -from PythiaB.PythiaBConf import PythiaB -topAlg += PythiaB() - -#-------------------------------------------------------------- -# Algorithms -#-------------------------------------------------------------- -#-------------------------------------------------------------- -# PARAMETERS SPECIFIC TO PYTHIAB -#-------------------------------------------------------------- -#PythiaB.ForceBDecay = "no"; -PythiaB = topAlg.PythiaB -PythiaB.ForceCDecay = "no" -#-------------------------------------------------------------- -# ------------- FORCE YOUR B CHANNEL HERE ------------- -#-------------------------------------------------------------- -# To force your B-decay channels decomment following 2 lines: -include( "PythiaB/CloseAntibQuark.py" ) - -PythiaB.ForceBDecay = "yes" -# T H R E E E X A M P L E S T O O P E N Y O U R C H A N N E L -# Decomment one of following examples or create your analogically -# open your exclusive channel here Bs -> J/psi(mumu) phi -# PythiaB.PythiaCommand += ["pydat3 mdme 982 1 1", -# "pydat3 mdme 858 1 0", -# "pydat3 mdme 860 1 0" ] - -# open your exclusive channel here Bs -> mumu -PythiaB.PythiaCommand += ["pydat3 mdme 977 1 1", - "pydat3 kfdp 977 1 13", - "pydat3 kfdp 977 2 -13" ] - - - -# open your exclusive channel here Bs -> Ds pi with Ds->phi pi -##include "Dsphipi.txt" -#PythiaB.PythiaCommand += {"pydat3 mdme 967 1 1", -# "pydat3 mdme 831 1 1" }; -#PythiaB.ForceCDecay = "yes"; -# open your exclusive channel here Bs -> J/psi(mumu) K0 -#PythiaB.PythiaCommand += {"pydat3 mdme 889 1 1", -# "pydat3 mdme 858 1 0", -# "pydat3 mdme 860 1 0" }; -#-------------------------------------------------------------- -# -------- PYTHIA PARAMETERS OPTIMAL FOR BEAUTY PRODUCTION -- -#-------------------------------------------------------------- -# 'msel 5' is only for fast tests! -# for correct b-producion you should use 'msel 1' -# 'mstj 26 0' = no mixing was defined in Btune as default -# 'mstj 22 2' = no K0S, Lambda0 decays in Pythia - defined in Btune as default - -PythiaB.PythiaCommand += [ - "pysubs ckin 9 -4.5", - "pysubs ckin 10 4.5", - "pysubs ckin 11 -4.5", - "pysubs ckin 12 4.5", - "pydat1 mstj 26 0", - "pydat1 mstj 22 2", - "pydat1 parj 13 0.65", - "pydat1 parj 14 0.12", - "pydat1 parj 15 0.04", - "pydat1 parj 16 0.12", - "pydat1 parj 17 0.2", - "pydat1 parj 55 -0.006", - ] -PythiaB.PythiaCommand += [ - "pypars mstp 70 2", - "pypars mstp 72 0", - "pypars mstp 81 21", - "pypars mstp 82 4", - "pypars mstp 84 1", - "pypars mstp 85 1", - "pypars mstp 86 2", - "pypars mstp 87 4", - "pypars mstp 88 0", - "pypars mstp 89 1", - "pypars mstp 90 1", - "pypars mstp 95 1", - "pypars parp 78 0.2", - "pypars parp 80 0.01", - "pypars parp 82 1.9", - "pypars parp 83 0.3", - "pypars parp 84 0.5", - "pypars parp 89 1800", - "pypars parp 90 0.22", - "pydat1 parj 81 0.14"] - -PythiaB.PythiaCommand += ["pysubs ckin 3 10.", - "pysubs ckin 9 -3.5", - "pysubs ckin 10 3.5", - "pysubs ckin 11 -3.5", - "pysubs ckin 12 3.5", - "pysubs msel 1"] -#-------------------------------------------------------------- -# ------------- DEFINE SELECTION CUTS ------------- -#-------------------------------------------------------------- -# ------------- Selections on b quarks ------------- -# simulate only b-flavour events -PythiaB.flavour = 5. -# PythiaB force exclusive decay channels only on b=-5 side -# ------------------- b=5 --- and/or --- b=-5 -------- -PythiaB.cutbq = ["0. 102.5 and 10. 2.5"] -# ------------- LVL1 muon cuts 0=OFF 1=ON ------------- -PythiaB.lvl1cut = [ 1., 6., 2.5] -# ------------- LVL2 muon/electron cuts 0=OFF 1=ON------------- -PythiaB.lvl2cut = [ 0., 13., 6., 2.5] -#PythiaB.lvl2cut = { 0., 11., 6., 2.5}; -# ------------- Offline cuts 0=OFF 1=ON ------------- -PythiaB.offcut = [ 1., 0.5, 2.5, 4., 2.5, 0.5, 2.5] -# ------------- Number of repeated hadronization mhadr ------------- -PythiaB.mhadr = 10. -# ------------- For how many events store B-chain in NTUPLE ------------- -#============================================================== -# -# End of job options file -# -############################################################### diff --git a/Generators/PythiaB/share/CSC.017901.PythiaB_Bd_KstarMuMu_Signal_F.py b/Generators/PythiaB/share/CSC.017901.PythiaB_Bd_KstarMuMu_Signal_F.py deleted file mode 100644 index dca03f2e6c720e36624f3681e83fd2af3b97a622..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/share/CSC.017901.PythiaB_Bd_KstarMuMu_Signal_F.py +++ /dev/null @@ -1,112 +0,0 @@ -############################################################### -# -# Job options file for generation of B-events -# in user selected exclusive channel -# -#============================================================== -#-------------------------------------------------------------- -# Private Application Configuration options -#-------------------------------------------------------------- -from AthenaCommon.AlgSequence import AlgSequence -topAlg = AlgSequence("TopAlg") - -from PythiaB.PythiaBConf import PythiaB -topAlg += PythiaB() - -#-------------------------------------------------------------- -# Algorithms -#-------------------------------------------------------------- -from GeneratorFilters.GeneratorFiltersConf import BSignalFilter -topAlg += BSignalFilter() - -#-------------------------------------------------------------- -# PARAMETERS SPECIFIC TO PYTHIAB -#-------------------------------------------------------------- -#PythiaB.ForceBDecay = "no"; -PythiaB = topAlg.PythiaB -PythiaB.ForceCDecay = "no" -#-------------------------------------------------------------- -# ------------- FORCE YOUR B CHANNEL HERE ------------- -#-------------------------------------------------------------- -# To force your B-decay channels decomment following 2 lines: -include( "PythiaB/CloseAntibQuark.py" ) - -PythiaB.ForceBDecay = "yes" -# T O O P E N T H E U S E R C H A N N E L -# For Bd -> Kstar(892) mu+ mu- -# -PythiaB.PythiaCommand += ["pydat3 mdme 875 1 1", - "pydat3 kfdp 875 1 13", - "pydat3 kfdp 875 2 -13", - "pydat3 kfdp 875 3 313", - "pydat3 kfdp 875 4 0", - "pydat3 kfdp 875 5 0", - "pydat3 brat 875 0.0000001" ] -PythiaB.ForceDecayChannel = "BdKstarMuMu" -# lvl1 and lvl2 cuts pt_L1 eta_L1 pt_L2 eta_L2 -PythiaB.DecayChannelParameters = [1., 6.0, 2.5, 1., 6.0, 2.5] ; -#-------------------------------------------------------------- -# -------- PYTHIA PARAMETERS OPTIMAL FOR BEAUTY PRODUCTION -- -#-------------------------------------------------------------- -# 'msel 5' is only for fast tests! -# for correct b-producion you should use 'msel 1' -# 'mstj 26 0' = no mixing was defined in Btune as default -# 'mstj 22 2' = no K0S, Lambda0 decays in Pythia - defined in Btune as default - -PythiaB.PythiaCommand += [ - "pysubs ckin 9 -4.5", - "pysubs ckin 10 4.5", - "pysubs ckin 11 -4.5", - "pysubs ckin 12 4.5", - "pydat1 mstj 26 0", - "pydat1 mstj 22 2", - "pydat1 parj 13 0.65", - "pydat1 parj 14 0.12", - "pydat1 parj 15 0.04", - "pydat1 parj 16 0.12", - "pydat1 parj 17 0.2", - "pydat1 parj 55 -0.006", - ] - -PythiaB.PythiaCommand += ["pysubs ckin 3 15.", - "pysubs ckin 9 -3.5", - "pysubs ckin 10 3.5", - "pysubs ckin 11 -3.5", - "pysubs ckin 12 3.5", - "pysubs msel 1"] -#-------------------------------------------------------------- -# ------------- DEFINE SELECTION CUTS ------------- -#-------------------------------------------------------------- -# ------------- Selections on b quarks ------------- -# simulate only b-flavour events -PythiaB.flavour = 5. -# PythiaB force exclusive decay channels only on b=-5 side -# ------------------- b=5 --- and/or --- b=-5 -------- -PythiaB.cutbq = ["0. 102.5 and 10. 2.5"] -# ------------- LVL1 muon cuts 0=OFF 1=ON ------------- -# for BsPhiMuMu, BdKstarMuMu BsGammaMuMu lvl1,lvl2 must be OFF -PythiaB.lvl1cut = [ 0., 6., 2.5] -# ------------- LVL2 muon/electron cuts 0=OFF 1=ON------------- -PythiaB.lvl2cut = [ 0., 13., 6., 2.5] -#PythiaB.lvl2cut = { 0., 11., 6., 2.5}; -# ??? ------------- Offline cuts 0=OFF 1=ON ------------- -PythiaB.offcut = [ 0., 0.5, 2.5, 3., 2.5, 0.5, 2.5] -# ------------- Number of repeated hadronization mhadr ------------- -PythiaB.mhadr = 4. -# ------------- For how many events store B-chain in NTUPLE ------------- -BSignalFilter = topAlg.BSignalFilter -BSignalFilter.Cuts_Final_hadrons_switch = TRUE -BSignalFilter.Cuts_Final_hadrons_pT = 500.0 -BSignalFilter.Cuts_Final_hadrons_eta = 2.5 -BSignalFilter.BParticle_cuts = 511 -############################################################### -# Add POOL persistency -try: - Stream1.RequireAlgs += ["BSignalFilter"] -except Exception, e: - pass -#============================================================== -# -# End of job options file -# -############################################################### diff --git a/Generators/PythiaB/share/CSC.017902.PythiaB_Bs_PhiMuMu_Signal.py b/Generators/PythiaB/share/CSC.017902.PythiaB_Bs_PhiMuMu_Signal.py deleted file mode 100644 index 432112bf03655f80fa0e8673482f1c068a2f508c..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/share/CSC.017902.PythiaB_Bs_PhiMuMu_Signal.py +++ /dev/null @@ -1,118 +0,0 @@ -############################################################### -# -# Job options file for generation of B-events -# in user selected exclusive channel -# -#============================================================== -#-------------------------------------------------------------- -# Private Application Configuration options -#-------------------------------------------------------------- -from AthenaCommon.AlgSequence import AlgSequence -topAlg = AlgSequence("TopAlg") - -from PythiaB.PythiaBConf import PythiaB -topAlg += PythiaB() - -#-------------------------------------------------------------- -# Algorithms -#-------------------------------------------------------------- -from GeneratorFilters.GeneratorFiltersConf import BSignalFilter -topAlg += BSignalFilter() - -#------------------------------------------------------------- -# PARAMETERS SPECIFIC TO PYTHIAB -#-------------------------------------------------------------- -#PythiaB.ForceBDecay = "no"; -PythiaB = topAlg.PythiaB -PythiaB.ForceCDecay = "no" -#------------------------------------------------------------- -# ------------- FORCE YOUR B CHANNEL HERE ------------- -#-------------------------------------------------------------- -# To force your B-decay channels decomment following 2 lines: -include( "PythiaB/CloseAntibQuark.py" ) - -PythiaB.ForceBDecay = "yes" -# T O O P E N T H E U S E R C H A N N E L -# Bs -> phi mu+ mu- -PythiaB.PythiaCommand += ["pydat3 mdme 965 1 1", - "pydat3 kfdp 965 1 13", - "pydat3 kfdp 965 2 -13", - "pydat3 kfdp 965 3 333", - "pydat3 kfdp 965 4 0", - "pydat3 kfdp 965 5 0", - "pydat3 brat 0.000001" ] - - -PythiaB.ForceDecayChannel = "BsPhiMuMu" -# lvl1 and lvl2 cuts KEY_L1(0/1) pt_L1 eta_L1 KEY_L2 pt_L2 eta_L2 -PythiaB.DecayChannelParameters = [1., 6.0, 2.5, 1., 4.0, 2.5] ; -#-------------------------------------------------------------- -# -------- PYTHIA PARAMETERS OPTIMAL FOR BEAUTY PRODUCTION -- -#-------------------------------------------------------------- -# 'msel 5' is only for fast tests! -# for correct b-producion you should use 'msel 1' -# 'mstj 26 0' = no mixing was defined in Btune as default -# 'mstj 22 2' = no K0S, Lambda0 decays in Pythia - defined in Btune as default - -PythiaB.PythiaCommand += [ - "pysubs ckin 9 -4.5", - "pysubs ckin 10 4.5", - "pysubs ckin 11 -4.5", - "pysubs ckin 12 4.5", - "pydat1 mstj 26 0", - "pydat1 mstj 22 2", - "pydat1 parj 13 0.65", - "pydat1 parj 14 0.12", - "pydat1 parj 15 0.04", - "pydat1 parj 16 0.12", - "pydat1 parj 17 0.2", - "pydat1 parj 55 -0.006", - ] - -PythiaB.PythiaCommand += ["pysubs ckin 3 15.", - "pysubs ckin 9 -3.5", - "pysubs ckin 10 3.5", - "pysubs ckin 11 -3.5", - "pysubs ckin 12 3.5", - "pysubs msel 1"] -#-------------------------------------------------------------- -# ------------- DEFINE SELECTION CUTS ------------- -#------------------------------------------------------------- -# ------------- Selections on b quarks ------------- -# simulate only b-flavour events -PythiaB.flavour = 5. -# PythiaB force exclusive decay channels only on b=-5 side -# ------------------- b=5 --- and/or --- b=-5 -------- -PythiaB.cutbq = ["0. 102.5 and 10. 2.5"] -# ------------- LVL1 muon cuts 0=OFF 1=ON ------------- -# for BsPhiMuMu, BdKstarMuMu BsGammaMuMu lvl1,lvl2 must be OFF -PythiaB.lvl1cut = [ 0., 6., 2.5] -# ------------- LVL2 muon/electron cuts 0=OFF 1=ON------------- -PythiaB.lvl2cut = [ 0., 13., 6., 2.5] -#PythiaB.lvl2cut = { 0., 11., 6., 2.5}; -# ??? ------------- Offline cuts 0=OFF 1=ON ------------- -PythiaB.offcut = [ 0., 0.5, 2.5, 3., 2.5, 0.5, 2.5] -# ------------- Number of repeated hadronization mhadr ------------- -PythiaB.mhadr = 14. -# ------------- For how many events store B-chain in NTUPLE ------------- -BSignalFilter = topAlg.BSignalFilter -BSignalFilter.Cuts_Final_hadrons_switch = TRUE -BSignalFilter.Cuts_Final_hadrons_pT = 500.0 -BSignalFilter.Cuts_Final_hadrons_eta = 2.5 -BSignalFilter.BParticle_cuts = 531 - -############################################################### - -# Change since 12.0.3 -# 2101 = EventInfo -# 133273 = MCTruth (HepMC) -try: - Stream1.RequireAlgs += ["BSignalFilter"] -except Exception, e: - pass - -#============================================================== -# -# End of job options file -# -############################################################### diff --git a/Generators/PythiaB/share/CSC.017981.B_Kpi.py b/Generators/PythiaB/share/CSC.017981.B_Kpi.py deleted file mode 100644 index 01be05d49316c715cb7e2dfe31277e54b466352a..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/share/CSC.017981.B_Kpi.py +++ /dev/null @@ -1,130 +0,0 @@ -############################################################### -# -# Job options file for generation of B-events -# in user selected exclusive channel -# -#============================================================== -#-------------------------------------------------------------- -# General Application Configuration options -#-------------------------------------------------------------- -#-------------------------------------------------------------- -# Private Application Configuration options -#-------------------------------------------------------------- -from AthenaCommon.AlgSequence import AlgSequence -topAlg = AlgSequence("TopAlg") - -from PythiaB.PythiaBConf import PythiaB -topAlg += PythiaB() - -#------------------------------------------------------------- -# Algorithms -#-------------------------------------------------------------- -#-------------------------------------------------------------- -# PARAMETERS SPECIFIC TO PYTHIAB -#-------------------------------------------------------------- -#PythiaB.ForceBDecay = "no"; -PythiaB = topAlg.PythiaB -PythiaB.ForceCDecay = "no" -#-------------------------------------------------------------- -# ------------- FORCE YOUR B CHANNEL HERE ------------- -#-------------------------------------------------------------- -# To force your B-decay channels decomment following 2 lines: -include( "PythiaB/CloseAntibQuark.py" ) - -PythiaB.ForceBDecay = "yes" -# T H R E E E X A M P L E S T O O P E N Y O U R C H A N N E L -# Decomment one of following examples or create your analogically -# open your exclusive channel here Bs -> J/psi(mumu) phi -# PythiaB.PythiaCommand += ["pydat3 mdme 982 1 1", -# "pydat3 mdme 858 1 0", -# "pydat3 mdme 860 1 0" ] - -# open your exclusive channel here Bs -> mumu -PythiaB.PythiaCommand += ["pydat3 mdme 977 1 1", - "pydat3 kfdp 977 1 -321", - "pydat3 kfdp 977 2 211" ] - - - -# open your exclusive channel here Bs -> Ds pi with Ds->phi pi -##include "Dsphipi.txt" -#PythiaB.PythiaCommand += {"pydat3 mdme 967 1 1", -# "pydat3 mdme 831 1 1" }; -#PythiaB.ForceCDecay = "yes"; -# open your exclusive channel here Bs -> J/psi(mumu) K0 -#PythiaB.PythiaCommand += {"pydat3 mdme 889 1 1", -# "pydat3 mdme 858 1 0", -# "pydat3 mdme 860 1 0" }; -#-------------------------------------------------------------- -# -------- PYTHIA PARAMETERS OPTIMAL FOR BEAUTY PRODUCTION -- -#------------------------------------------------------------- -# 'msel 5' is only for fast tests! -# for correct b-producion you should use 'msel 1' -# 'mstj 26 0' = no mixing was defined in Btune as default -# 'mstj 22 2' = no K0S, Lambda0 decays in Pythia - defined in Btune as default - -PythiaB.PythiaCommand += [ - "pysubs ckin 9 -4.5", - "pysubs ckin 10 4.5", - "pysubs ckin 11 -4.5", - "pysubs ckin 12 4.5", - "pydat1 mstj 26 0", - "pydat1 mstj 22 2", - "pydat1 parj 13 0.65", - "pydat1 parj 14 0.12", - "pydat1 parj 15 0.04", - "pydat1 parj 16 0.12", - "pydat1 parj 17 0.2", - "pydat1 parj 55 -0.006", - ] -PythiaB.PythiaCommand += [ - "pypars mstp 70 2", - "pypars mstp 72 0", - "pypars mstp 81 21", - "pypars mstp 82 4", - "pypars mstp 84 1", - "pypars mstp 85 1", - "pypars mstp 86 2", - "pypars mstp 87 4", - "pypars mstp 88 0", - "pypars mstp 89 1", - "pypars mstp 90 1", - "pypars mstp 95 1", - "pypars parp 78 0.2", - "pypars parp 80 0.01", - "pypars parp 82 1.9", - "pypars parp 83 0.3", - "pypars parp 84 0.5", - "pypars parp 89 1800", - "pypars parp 90 0.22", - "pydat1 parj 81 0.14"] - -PythiaB.PythiaCommand += ["pysubs ckin 3 12.", - "pysubs ckin 9 -3.5", - "pysubs ckin 10 3.5", - "pysubs ckin 11 -3.5", - "pysubs ckin 12 3.5", - "pysubs msel 1"] -#-------------------------------------------------------------- -# ------------- DEFINE SELECTION CUTS ------------- -#-------------------------------------------------------------- -# ------------- Selections on b quarks ------------- -# simulate only b-flavour events -PythiaB.flavour = 5. -# PythiaB force exclusive decay channels only on b=-5 side -# ------------------- b=5 --- and/or --- b=-5 -------- -PythiaB.cutbq = ["0. 102.5 and 10. 2.5"] -# ------------- LVL1 muon cuts 0=OFF 1=ON ------------- -PythiaB.lvl1cut = [ 0., 6., 2.5] -# ------------- LVL2 muon/electron cuts 0=OFF 1=ON------------- -PythiaB.lvl2cut = [ 0., 13., 6., 2.5] -#PythiaB.lvl2cut = { 0., 11., 6., 2.5}; -# ------------- Offline cuts 0=OFF 1=ON ------------- -PythiaB.offcut = [ 1., 6.0, 2.5, 6., 2.5, 6.0, 2.5] -# ------------- Number of repeated hadronization mhadr ------------- -PythiaB.mhadr = 14. -#============================================================== -# -# End of job options file -# -############################################################### diff --git a/Generators/PythiaB/share/CSC.018101.PythiaB_Bd_Jpsie3e3K0s.py b/Generators/PythiaB/share/CSC.018101.PythiaB_Bd_Jpsie3e3K0s.py deleted file mode 100644 index ca5ce27eb2cc7bda69d76a027396cde2c2c38ed8..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/share/CSC.018101.PythiaB_Bd_Jpsie3e3K0s.py +++ /dev/null @@ -1,139 +0,0 @@ -############################################################### -# -# Job options file for generation of B-events -# in user selected exclusive channel -# -#============================================================== -#-------------------------------------------------------------- -# Private Application Configuration options -#-------------------------------------------------------------- - -from AthenaCommon.AlgSequence import AlgSequence -topAlg = AlgSequence("TopAlg") - -from PythiaB.PythiaBConf import PythiaB -topAlg += PythiaB() - -#-------------------------------------------------------------- -# Algorithms -#-------------------------------------------------------------- -from GeneratorFilters.GeneratorFiltersConf import BSignalFilter -topAlg += BSignalFilter() - -from GeneratorFilters.GeneratorFiltersConf import MultiLeptonFilter -topAlg += MultiLeptonFilter() - -#-------------------------------------------------------------- -# PARAMETERS SPECIFIC TO PYTHIAB -#-------------------------------------------------------------- -PythiaB = topAlg.PythiaB -PythiaB.ForceCDecay = "no" -PythiaB.ForceBDecay = "yes" -#-------------------------------------------------------------- -# ------------- FORCE YOUR B CHANNEL HERE ------------- -#-------------------------------------------------------------- -# To force your B-decay channels decomment following 2 lines: -include( "PythiaB/CloseAntibQuark.py" ) - -PythiaB.PythiaCommand += ["pydat3 mdme 889 1 1", - "pydat3 mdme 858 1 1", - "pydat3 mdme 859 1 0", - "pydat3 mdme 860 1 0" ] -#-------------------------------------------------------------- -# -------- PYTHIA PARAMETERS OPTIMAL FOR BEAUTY PRODUCTION -- -#-------------------------------------------------------------- - -include( "PythiaB/Btune.py" ) - -PythiaB.PythiaCommand += [ # Arthur Moraes tuning - # lambda value for alpha_s - "pydat1 parj 81 0.14", - # affects the amount of color reconnection - "pypars parp 78 0.2", - # suppression probability for string pieces reattaching beam remnant - # to hard scatter - "pypars parp 80 0.01", - # effective pT_min for MI (pt0 scale) - "pypars parp 82 1.9", - # matter distribution - "pypars parp 83 0.3", - "pypars parp 84 0.5", - # pT0 scale - "pypars parp 89 1800", - "pypars parp 90 0.22", - # ISR - "pypars mstp 70 2", - # max scale for FSR dipoles - "pypars mstp 72 0", - # new multiple interaction model and new parton shower selected - "pypars mstp 81 1", - # MPI - "pypars mstp 82 4", - # ISR - "pypars mstp 84 1", - # FSR - "pypars mstp 85 1", - # MPI - "pypars mstp 86 2", - # sea quarks: large x behavior of assumed gluon distribution - "pypars mstp 87 4", - # color reconnection - "pypars mstp 88 0", - "pypars mstp 89 1", - "pypars mstp 90 1", - "pypars mstp 95 1", - ] - -PythiaB.PythiaCommand += ["pysubs ckin 3 15.", - "pysubs ckin 9 -3.5", - "pysubs ckin 10 3.5", - "pysubs ckin 11 -3.5", - "pysubs ckin 12 3.5", - "pydat1 mstj 22 1", - "pysubs msel 1"] -#-------------------------------------------------------------- -# ------------- DEFINE SELECTION CUTS ------------- -#-------------------------------------------------------------- -# ------------- Selections on b quarks ------------- -# simulate only b-flavour events -PythiaB.flavour = 5. -# PythiaB force exclusive decay channels only on b=-5 side -# ------------------- b=5 --- and/or --- b=-5 -------- -PythiaB.cutbq = ["10. 2.5 and 10. 2.5"] -#PythiaB.cutbq = ["6. 2.5 and 6. 2.5"] -# ------------- LVL1 muon cuts 0=OFF 1=ON ------------- -PythiaB.lvl1cut = [ 1., 6., 2.5] -# ------------- LVL2 muon/electron cuts 0=OFF 1=ON------------- -PythiaB.lvl2cut = [ 0., 13., 6., 2.5] -# ------------- Offline cuts 0=OFF 1=ON ------------- -PythiaB.offcut = [ 1., 0.0, 102.5, 0., 102.5, 3.0, 2.5] -# ------------- Number of repeated hadronization mhadr ------------- -PythiaB.mhadr = 15. - -# Add the filters: -BSignalFilter = topAlg.BSignalFilter -BSignalFilter.LVL1MuonCutOn = TRUE -BSignalFilter.LVL1MuonCutPT = 6000.0 -BSignalFilter.LVL1MuonCutEta = 2.5 -BSignalFilter.Cuts_Final_e_switch = TRUE -BSignalFilter.Cuts_Final_e_pT = 3000.0 -BSignalFilter.Cuts_Final_e_eta = 2.5 - -MultiLeptonFilter = topAlg.MultiLeptonFilter -#MultiLeptonFilter.Ptcut = 3.0*GeV -MultiLeptonFilter.Ptcut = 3000.0 -MultiLeptonFilter.Etacut = 2.5 -MultiLeptonFilter.NLeptons = 3 - -############################################################### -# Add POOL persistency -try: - Stream1.RequireAlgs += [ "BSignalFilter" ] -except Exception, e: - pass - -#============================================================== -# -# End of job options file -# -############################################################### diff --git a/Generators/PythiaB/share/CSC.018673.Bplus_Jpsi_mu6mu4_Kplus.py b/Generators/PythiaB/share/CSC.018673.Bplus_Jpsi_mu6mu4_Kplus.py deleted file mode 100644 index 06d5b62fcc1a85b69acaa2d461b61104c78ade0d..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/share/CSC.018673.Bplus_Jpsi_mu6mu4_Kplus.py +++ /dev/null @@ -1,117 +0,0 @@ -############################################################### -# -# Job options file for generation of B-events -# in user selected exclusive channel -# -#============================================================== -#-------------------------------------------------------------- -# General Application Configuration options -#-------------------------------------------------------------- -#-------------------------------------------------------------- -# Private Application Configuration options -#-------------------------------------------------------------- -from AthenaCommon.AlgSequence import AlgSequence -topAlg = AlgSequence("TopAlg") - -from PythiaB.PythiaBConf import PythiaB -topAlg += PythiaB() - -#-------------------------------------------------------------- -# Algorithms -#-------------------------------------------------------------- -#-------------------------------------------------------------- -#-------------------------------------------------------------- -# PARAMETERS SPECIFIC TO PYTHIAB -#-------------------------------------------------------------- -PythiaB = topAlg.PythiaB -PythiaB.ForceCDecay = "no" -#-------------------------------------------------------------- -# ------------- FORCE YOUR B CHANNEL HERE ------------- -#-------------------------------------------------------------- -# To force your B-decay channels decomment following 2 lines: -include( "PythiaB/CloseAntibQuark.py" ) -PythiaB.ForceBDecay = "yes" -# open Channel B+ -> J/psi(mumu) K+ -PythiaB.PythiaCommand += ["pydat3 mdme 934 1 1", - "pydat3 mdme 858 1 0", - "pydat3 mdme 860 1 0" ] - -#-------------------------------------------------------------- -# -------- PYTHIA PARAMETERS OPTIMAL FOR BEAUTY PRODUCTION -- -#-------------------------------------------------------------- -# 'msel 5' is only for fast tests! -# for correct b-producion you should use 'msel 1' -# 'mstj 26 0' = no mixing was defined in Btune as default -# 'mstj 22 2' = no K0S, Lambda0 decays in Pythia - defined in Btune as default - -PythiaB.PythiaCommand += [ - "pysubs ckin 9 -4.5", - "pysubs ckin 10 4.5", - "pysubs ckin 11 -4.5", - "pysubs ckin 12 4.5", - "pydat1 mstj 26 0", - "pydat1 mstj 22 2", - "pydat1 parj 13 0.65", - "pydat1 parj 14 0.12", - "pydat1 parj 15 0.04", - "pydat1 parj 16 0.12", - "pydat1 parj 17 0.2", - "pydat1 parj 55 -0.006", - ] - -PythiaB.PythiaCommand += [ - "pypars mstp 70 2", - "pypars mstp 72 0", - "pypars mstp 81 21", - "pypars mstp 82 4", - "pypars mstp 84 1", - "pypars mstp 85 1", - "pypars mstp 86 2", - "pypars mstp 87 4", - "pypars mstp 88 0", - "pypars mstp 89 1", - "pypars mstp 90 1", - "pypars mstp 95 1", - "pypars parp 78 0.2", - "pypars parp 80 0.01", - "pypars parp 82 1.9", - "pypars parp 83 0.3", - "pypars parp 84 0.5", - "pypars parp 89 1800", - "pypars parp 90 0.22", - "pydat1 parj 81 0.14"] - -PythiaB.PythiaCommand += ["pysubs ckin 3 15.", - "pysubs ckin 9 -3.5", - "pysubs ckin 10 3.5", - "pysubs ckin 11 -3.5", - "pysubs ckin 12 3.5", - "pysubs msel 1"] -#-------------------------------------------------------------- -# ------------- DEFINE SELECTION CUTS ------------- -#-------------------------------------------------------------- -# ------------- Selections on b quarks ------------- -# simulate only b-flavour events -PythiaB.flavour = 5. -# PythiaB force exclusive decay channels only on b=-5 side -# ------------------- b=5 --- and/or --- b=-5 -------- -PythiaB.cutbq = ["0. 102.5 and 10. 2.5"] -# ------------- LVL1 muon cuts 0=OFF 1=ON ------------- -PythiaB.lvl1cut = [ 1., 6., 2.5] -# ------------- LVL2 muon/electron cuts 0=OFF 1=ON------------- -PythiaB.lvl2cut = [ 0., 13., 6., 2.5] -#PythiaB.lvl2cut = { 0., 11., 6., 2.5}; -# ------------- Offline cuts 0=OFF 1=ON ------------- -PythiaB.offcut = [ 1., 0.5, 2.5, 4., 2.5, 0.5, 2.5] -# ------------- Number of repeated hadronization mhadr ------------- -#mhadr = 2 for Channel B+ -> J/psi(mumu) K+ -PythiaB.PythiaCommand += ["pydat3 mdme 934 1 1", - "pydat3 mdme 858 1 0", - "pydat3 mdme 860 1 0" ] -PythiaB.mhadr = 2. - -#============================================================== -# -# End of job options file -# -############################################################### diff --git a/Generators/PythiaB/share/CSC.018701.PythiaB_Bs_Ds_PhiPi_A1_Signal3.py b/Generators/PythiaB/share/CSC.018701.PythiaB_Bs_Ds_PhiPi_A1_Signal3.py deleted file mode 100644 index 7664501527ec36d8d837b08d6530802bd6396ae9..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/share/CSC.018701.PythiaB_Bs_Ds_PhiPi_A1_Signal3.py +++ /dev/null @@ -1,141 +0,0 @@ -############################################################### -# -# Job options file for generation of B-events -# in user selected exclusive channel -# -# Decay channel: B0s->Ds(Phi(K+K-)Pi)A1(Rho(Pi+Pi-)Pi) -# -# Author : W. Walkowiak, 2006-04-02 -# (adjusted after a template provided by PythiaB) -# Changes: WW, 2006-04-13 -# Removed CBNT_ lines; added RootHistSvc again -# PRODUCTION FRAGMENT -#============================================================== -from AthenaCommon.AlgSequence import AlgSequence -topAlg = AlgSequence("TopAlg") - -from PythiaB.PythiaBConf import PythiaB -topAlg += PythiaB() - -# Algorithms -#-------------------------------------------------------------- -#PythiaB.ForceBDecay = "no"; -PythiaB = topAlg.PythiaB -PythiaB.ForceCDecay = "no" -#-------------------------------------------------------------- -# ------------- FORCE YOUR B CHANNEL HERE ------------- -#-------------------------------------------------------------- -# To force your B-decay channels decomment following 2 lines: -include( "PythiaB/CloseAntibQuark.py" ) -PythiaB.ForceBDecay = "yes" -# -# open your exclusive channel here Bs -> Ds a1 with Ds->phi pi -# -include( "PythiaB/Dsphipi.py" ) -# 959: Bs -> Ds-mu+nu -# 967: Bs -> Ds-Pi+ -# 969: Bs -> Ds-a1+ -# 831: Ds- -> PhiPi- - -PythiaB.PythiaCommand += [ "pydat3 mdme 969 1 1", - "pydat3 mdme 831 1 1" ]; -PythiaB.ForceCDecay = "yes"; - -# -# w.w., 2006-04-02 revised: -# -# user_finsel.F decay particle channel -# -PythiaB.ForceDecayChannel = "DsPhiX"; -# -# Decay particle selection for DsPhiX: -# 0. (off)/ 1. (on) -- ordered as follows: -# 1 : PhiKK decay -- Phi -> K+K- -# ((from B0s, B0bar or B-) or (from B0sbar, B0 or B+)) -# 2 : DsPhi decay -- Ds*- -> Ds-X, Ds- -> Phi pi-, Phi -> K+K- -# (from B0s, B0bar or B-) or (from B0sbar, B0 or B+)) -# 3 : A1RhoPi decay -- a1 -> RhoPi (from B0s) -# 4 : RhoPiPi decay -- Rho -> Pi+Pi- (from B0s) -# -PythiaB.DecayChannelParameters = [1., 0., 1., 1.]; - -# -#-------------------------------------------------------------- -# -------- PYTHIA PARAMETERS OPTIMAL FOR BEAUTY PRODUCTION -- -#-------------------------------------------------------------- -# 'msel 5' is only for fast tests! -# for correct b-production you should use 'msel 1' -# 'mstj 26 0' = no mixing was defined in Btune as default -# 'mstj 22 2' = no K0S, Lambda0 decays in Pythia - defined in Btune as default - -PythiaB.PythiaCommand += [ - "pysubs ckin 9 -4.5", - "pysubs ckin 10 4.5", - "pysubs ckin 11 -4.5", - "pysubs ckin 12 4.5", - "pydat1 mstj 26 0", - "pydat1 mstj 22 2", - "pydat1 parj 13 0.65", - "pydat1 parj 14 0.12", - "pydat1 parj 15 0.04", - "pydat1 parj 16 0.12", - "pydat1 parj 17 0.2", - "pydat1 parj 55 -0.006", - ] -PythiaB.PythiaCommand += [ - "pypars mstp 70 2", - "pypars mstp 72 0", - "pypars mstp 81 21", - "pypars mstp 82 4", - "pypars mstp 84 1", - "pypars mstp 85 1", - "pypars mstp 86 2", - "pypars mstp 87 4", - "pypars mstp 88 0", - "pypars mstp 89 1", - "pypars mstp 90 1", - "pypars mstp 95 1", - "pypars parp 78 0.2", - "pypars parp 80 0.01", - "pypars parp 82 1.9", - "pypars parp 83 0.3", - "pypars parp 84 0.5", - "pypars parp 89 1800", - "pypars parp 90 0.22", - "pydat1 parj 81 0.14"] - -# PythiaB.PythiaCommand += ["pysubs ckin 3 6.", -PythiaB.PythiaCommand += ["pysubs ckin 3 10.", - "pysubs ckin 9 -3.5", - "pysubs ckin 10 3.5", - "pysubs ckin 11 -3.5", - "pysubs ckin 12 3.5", - "pysubs msel 1"] -#-------------------------------------------------------------- -# ------------- DEFINE SELECTION CUTS ------------- -#-------------------------------------------------------------- -# ------------- Selections on b quarks ------------- -# simulate only b-flavour events -PythiaB.flavour = 5. -# PythiaB force exclusive decay channels only on b=-5 side -# ------------------- b=5 --- and/or --- b=-5 -------- -PythiaB.cutbq = ["6.0 2.5 and 6.0 2.5"] -# PythiaB.cutbq = ["6.0 4.5 and 6.0 4.5"] -# ------------- LVL1 muon cuts 0=OFF 1=ON ------------- -PythiaB.lvl1cut = [ 1., 6., 2.5] -# ------------- LVL2 muon/electron cuts 0=OFF 1=ON------------- -PythiaB.lvl2cut = [ 0., 13., 6., 2.5] -# ------------- Offline cuts 0=OFF 1=ON ------------- -PythiaB.offcut = [ 1., 0.5, 2.5, 3., 2.5, 0.5, 2.5] -# -# ------------- Maximum number of tries for hard process ------------- -PythiaB.maxTriesHard = 100000. -# -# ------------- Number of repeated hadronization mhadr ------------- -PythiaB.mhadr = 100. -# ------------- For how many events store B-chain in NTUPLE ------------- -#============================================================== -# -# End of job options file -# -############################################################### diff --git a/Generators/PythiaB/share/CSC.019250.Bs_Kmunu.py b/Generators/PythiaB/share/CSC.019250.Bs_Kmunu.py deleted file mode 100644 index 476ddd768866769629c30079a83682aa75538d16..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/share/CSC.019250.Bs_Kmunu.py +++ /dev/null @@ -1,123 +0,0 @@ -############################################################### -# -# Job options file for generation of B-events -# in user selected exclusive channel -# -#============================================================== -#-------------------------------------------------------------- -# Private Application Configuration options -#-------------------------------------------------------------- -from AthenaCommon.AlgSequence import AlgSequence -topAlg = AlgSequence("TopAlg") - -from PythiaB.PythiaBConf import PythiaB -topAlg += PythiaB() - -#-------------------------------------------------------------- -# Algorithms -#-------------------------------------------------------------- -#-------------------------------------------------------------- -# PARAMETERS SPECIFIC TO PYTHIAB -#-------------------------------------------------------------- -#PythiaB.ForceBDecay = "no"; -PythiaB = topAlg.PythiaB -PythiaB.ForceCDecay = "no" -#-------------------------------------------------------------- -# ------------- FORCE YOUR B CHANNEL HERE ------------- -#-------------------------------------------------------------- -# To force your B-decay channels decomment following 2 lines: -include( "PythiaB/CloseAntibQuark.py" ) - -PythiaB.ForceBDecay = "yes" -# T H R E E E X A M P L E S T O O P E N Y O U R C H A N N E L -# Decomment one of following examples or create your analogically -# open your exclusive channel here Bs -> J/psi(mumu) phi -# PythiaB.PythiaCommand += ["pydat3 mdme 982 1 1", -# "pydat3 mdme 858 1 0", -# "pydat3 mdme 860 1 0" ] - -# open your exclusive channel here B0 -> Kmunu -PythiaB.PythiaCommand += ["pydat3 mdme 962 1 1", - "pydat3 kfdp 962 1 -321", - "pydat3 kfdp 962 2 13", - "pydat3 kfdp 962 3 14" ] - - - -# open your exclusive channel here Bs -> Ds pi with Ds->phi pi -##include "Dsphipi.txt" -#PythiaB.PythiaCommand += {"pydat3 mdme 967 1 1", -# "pydat3 mdme 831 1 1" }; -#PythiaB.ForceCDecay = "yes"; -# open your exclusive channel here Bs -> J/psi(mumu) K0 -#PythiaB.PythiaCommand += {"pydat3 mdme 889 1 1", -# "pydat3 mdme 858 1 0", -# "pydat3 mdme 860 1 0" }; -#-------------------------------------------------------------- -# -------- PYTHIA PARAMETERS OPTIMAL FOR BEAUTY PRODUCTION -- -#-------------------------------------------------------------- -# 'msel 5' is only for fast tests! -# for correct b-producion you should use 'msel 1' -# 'mstj 26 0' = no mixing was defined in Btune as default -# 'mstj 22 2' = no K0S, Lambda0 decays in Pythia - defined in Btune as default - -PythiaB.PythiaCommand += [ - "pysubs ckin 9 -4.5", - "pysubs ckin 10 4.5", - "pysubs ckin 11 -4.5", - "pysubs ckin 12 4.5", - "pydat1 mstj 26 0", - "pydat1 mstj 22 2", - "pydat1 parj 13 0.65", - "pydat1 parj 14 0.12", - "pydat1 parj 15 0.04", - "pydat1 parj 16 0.12", - "pydat1 parj 17 0.2", - "pydat1 parj 55 -0.006", - ] -PythiaB.PythiaCommand += [ - "pypars mstp 70 2", - "pypars mstp 72 0", - "pypars mstp 81 21", - "pypars mstp 82 4", - "pypars mstp 84 1", - "pypars mstp 85 1", - "pypars mstp 86 2", - "pypars mstp 87 4", - "pypars mstp 88 0", - "pypars mstp 89 1", - "pypars mstp 90 1", - "pypars mstp 95 1", - "pypars parp 78 0.2", - "pypars parp 80 0.01", - "pypars parp 82 1.9", - "pypars parp 83 0.3", - "pypars parp 84 0.5", - "pypars parp 89 1800", - "pypars parp 90 0.22", - "pydat1 parj 81 0.14"] - -PythiaB.PythiaCommand += ["pysubs ckin 3 15.", - "pysubs ckin 9 -3.5", - "pysubs ckin 10 3.5", - "pysubs ckin 11 -3.5", - "pysubs ckin 12 3.5", - "pysubs msel 1"] -#-------------------------------------------------------------- -# ------------- DEFINE SELECTION CUTS ------------- -#-------------------------------------------------------------- -# ------------- Selections on b quarks ------------- -# simulate only b-flavour events -PythiaB.flavour = 5. -# PythiaB force exclusive decay channels only on b=-5 side -# ------------------- b=5 --- and/or --- b=-5 -------- -PythiaB.cutbq = ["0. 102.5 and 10. 2.5"] -# ------------- LVL1 muon cuts 0=OFF 1=ON ------------- -PythiaB.lvl1cut = [ 1., 6., 2.5] -# ------------- LVL2 muon/electron cuts 0=OFF 1=ON------------- -PythiaB.lvl2cut = [ 0., 13., 6., 2.5] -#PythiaB.lvl2cut = { 0., 11., 6., 2.5}; -# ------------- Offline cuts 0=OFF 1=ON ------------- -PythiaB.offcut = [ 1., 4., 2.5, 6., 2.5, 0.5, 2.5] -# ------------- Number of repeated hadronization mhadr ------------- -PythiaB.mhadr = 6. diff --git a/Generators/PythiaB/share/CSC.019251.Bs_Kmunu.py b/Generators/PythiaB/share/CSC.019251.Bs_Kmunu.py deleted file mode 100644 index f05573309159cb221d7d187d7f916f44161325aa..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/share/CSC.019251.Bs_Kmunu.py +++ /dev/null @@ -1,123 +0,0 @@ -############################################################### -# -# Job options file for generation of B-events -# in user selected exclusive channel -# -#============================================================== -#-------------------------------------------------------------- -# Private Application Configuration options -#-------------------------------------------------------------- -from AthenaCommon.AlgSequence import AlgSequence -topAlg = AlgSequence("TopAlg") - -from PythiaB.PythiaBConf import PythiaB -topAlg += PythiaB() - -#-------------------------------------------------------------- -# Algorithms -#-------------------------------------------------------------- -#-------------------------------------------------------------- -# PARAMETERS SPECIFIC TO PYTHIAB -#-------------------------------------------------------------- -#PythiaB.ForceBDecay = "no"; -PythiaB = topAlg.PythiaB -PythiaB.ForceCDecay = "no" -#-------------------------------------------------------------- -# ------------- FORCE YOUR B CHANNEL HERE ------------- -#-------------------------------------------------------------- -# To force your B-decay channels decomment following 2 lines: -include( "PythiaB/CloseAntibQuark.py" ) - -PythiaB.ForceBDecay = "yes" -# T H R E E E X A M P L E S T O O P E N Y O U R C H A N N E L -# Decomment one of following examples or create your analogically -# open your exclusive channel here Bs -> J/psi(mumu) phi -# PythiaB.PythiaCommand += ["pydat3 mdme 982 1 1", -# "pydat3 mdme 858 1 0", -# "pydat3 mdme 860 1 0" ] - -# open your exclusive channel here B0 -> Kmunu -PythiaB.PythiaCommand += ["pydat3 mdme 962 1 1", - "pydat3 kfdp 962 1 -321", - "pydat3 kfdp 962 2 -13", - "pydat3 kfdp 962 3 14" ] - - - -# open your exclusive channel here Bs -> Ds pi with Ds->phi pi -##include "Dsphipi.txt" -#PythiaB.PythiaCommand += {"pydat3 mdme 967 1 1", -# "pydat3 mdme 831 1 1" }; -#PythiaB.ForceCDecay = "yes"; -# open your exclusive channel here Bs -> J/psi(mumu) K0 -#PythiaB.PythiaCommand += {"pydat3 mdme 889 1 1", -# "pydat3 mdme 858 1 0", -# "pydat3 mdme 860 1 0" }; -#-------------------------------------------------------------- -# -------- PYTHIA PARAMETERS OPTIMAL FOR BEAUTY PRODUCTION -- -#-------------------------------------------------------------- -# 'msel 5' is only for fast tests! -# for correct b-producion you should use 'msel 1' -# 'mstj 26 0' = no mixing was defined in Btune as default -# 'mstj 22 2' = no K0S, Lambda0 decays in Pythia - defined in Btune as default - -PythiaB.PythiaCommand += [ - "pysubs ckin 9 -4.5", - "pysubs ckin 10 4.5", - "pysubs ckin 11 -4.5", - "pysubs ckin 12 4.5", - "pydat1 mstj 26 0", - "pydat1 mstj 22 2", - "pydat1 parj 13 0.65", - "pydat1 parj 14 0.12", - "pydat1 parj 15 0.04", - "pydat1 parj 16 0.12", - "pydat1 parj 17 0.2", - "pydat1 parj 55 -0.006", - ] -PythiaB.PythiaCommand += [ - "pypars mstp 70 2", - "pypars mstp 72 0", - "pypars mstp 81 21", - "pypars mstp 82 4", - "pypars mstp 84 1", - "pypars mstp 85 1", - "pypars mstp 86 2", - "pypars mstp 87 4", - "pypars mstp 88 0", - "pypars mstp 89 1", - "pypars mstp 90 1", - "pypars mstp 95 1", - "pypars parp 78 0.2", - "pypars parp 80 0.01", - "pypars parp 82 1.9", - "pypars parp 83 0.3", - "pypars parp 84 0.5", - "pypars parp 89 1800", - "pypars parp 90 0.22", - "pydat1 parj 81 0.14"] - -PythiaB.PythiaCommand += ["pysubs ckin 3 15.", - "pysubs ckin 9 -3.5", - "pysubs ckin 10 3.5", - "pysubs ckin 11 -3.5", - "pysubs ckin 12 3.5", - "pysubs msel 1"] -#-------------------------------------------------------------- -# ------------- DEFINE SELECTION CUTS ------------- -#-------------------------------------------------------------- -# ------------- Selections on b quarks ------------- -# simulate only b-flavour events -PythiaB.flavour = 5. -# PythiaB force exclusive decay channels only on b=-5 side -# ------------------- b=5 --- and/or --- b=-5 -------- -PythiaB.cutbq = ["0. 102.5 and 10. 2.5"] -# ------------- LVL1 muon cuts 0=OFF 1=ON ------------- -PythiaB.lvl1cut = [ 1., 6., 2.5] -# ------------- LVL2 muon/electron cuts 0=OFF 1=ON------------- -PythiaB.lvl2cut = [ 0., 13., 6., 2.5] -#PythiaB.lvl2cut = { 0., 11., 6., 2.5}; -# ------------- Offline cuts 0=OFF 1=ON ------------- -PythiaB.offcut = [ 1., 4., 2.5, 6., 2.5, 0.5, 2.5] -# ------------- Number of repeated hadronization mhadr ------------- -PythiaB.mhadr = 6. diff --git a/Generators/PythiaB/share/CSC.019300.Chib.py b/Generators/PythiaB/share/CSC.019300.Chib.py deleted file mode 100644 index 1914281b1fae5bd27ca3fc8508dba9435e5eac58..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/share/CSC.019300.Chib.py +++ /dev/null @@ -1,72 +0,0 @@ - -try: - Stream1.RequireAlgs += ["BSignalFilter"] -except Exception, e: - pass - -StoreGateSvc = Service( "StoreGateSvc" ) - -#-------------------------------------------------------------- -# Private Application Configuration options -#-------------------------------------------------------------- -from AthenaCommon.AlgSequence import AlgSequence -topAlg = AlgSequence("TopAlg") - -from Pythia_i.Pythia_iConf import Pythia -topAlg += Pythia() - -from GeneratorFilters.GeneratorFiltersConf import BSignalFilter -topAlg += BSignalFilter() - -from GeneratorFilters.GeneratorFiltersConf import BSignalFilter -topAlg += BSignalFilter() - - -#-------------------------------------------------------------- -# Algorithms Private Options -#-------------------------------------------------------------- -Pythia = topAlg.Pythia - -Pythia.PythiaCommand = [ "pysubs msel 0", #user chooses decay - "pysubs msub 471 1", #gg->bb~[3P0(1)]+g - "pysubs msub 474 1", #qg->q+bb~[3P0(1)] -# Force chi_b ->J/psi J/psi - "pydat3 mdme 1521 1 0", #chi_0b->gg - "pydat3 mdme 1520 1 1", #chi_0b->Y+gamma - "pydat3 kfdp 1520 1 443", #chi_0b->J/psi+gamma - "pydat3 kfdp 1520 2 443", #chi_0b->J/psi+J/psi - - -# J/Psi Decays (close ee-pairs and random flavours production, and open only mumu pairs production. - - "pydat3 mdme 860 1 0", - "pydat3 mdme 859 1 1", - "pydat3 mdme 858 1 0", - -# Other stuff (pysubs ckin 3 3- mean that i demand pt > 3 GeV - -# "pyinit pylistf 1", - "pyinit dumpr 0 3", - "pysubs ckin 3 3"] - -TopSequence = topAlg.TopSequence -TopSequence.Members += ["Sequencer/Filter"] - -#------- Muon Trigger Cuts -------- -BSignalFilter = topAlg.BSignalFilter -#-------------- Level 1 Muon Cuts --------------------- -BSignalFilter.LVL1MuonCutOn = "true" -BSignalFilter.LVL1MuonCutPT = 1000.0 -BSignalFilter.LVL1MuonCutEta = 2.5 -#-------------- Level 2 lepton cuts ------------------- -# These will only function if LVL1 trigger used. -BSignalFilter.LVL2MuonCutOn = "true" -BSignalFilter.LVL2MuonCutPT = 1000.0 -BSignalFilter.LVL2MuonCutEta = 2.5 - -#============================================================== -# -# End of job options file -# -############################################################### - diff --git a/Generators/PythiaB/share/CSC.019900.Pythia_directUpsilonmu6mu4.py b/Generators/PythiaB/share/CSC.019900.Pythia_directUpsilonmu6mu4.py deleted file mode 100644 index 1ec5a7b69cc7f98b30a651e38ee7223159f11930..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/share/CSC.019900.Pythia_directUpsilonmu6mu4.py +++ /dev/null @@ -1,229 +0,0 @@ -############################################################### -# -# jobOptions for quarkonium production in the -# NRQCD colour-octet framework -# Author: Darren D Price ( Darren.Price@cern.ch ) -# Date: June 2006 -# Feb 2007 -- updated UE tuning to use CSC jobO -#============================================================== -#-------------------------------------------------------------- -# General Application Configuration options -#-------------------------------------------------------------- -from AthenaCommon.AlgSequence import AlgSequence -topAlg = AlgSequence("TopAlg") - -from Pythia_i.Pythia_iConf import Pythia -topAlg += Pythia() - - -from GeneratorFilters.GeneratorFiltersConf import BSignalFilter -topAlg += BSignalFilter() - - -Pythia = topAlg.Pythia -#Pythia.newScenario = FALSE - -# New tuning for CTEQ6L and Pythia new showering -include( "PythiaB/Btune.py" ) - -Pythia.PythiaCommand += [ - # lambda value for alpha_s - "pydat1 parj 81 0.14", - # effects the amount of color reconnection - "pypars parp 78 0.2", - # suppression probability for string pieces reattaching beam remnant - # to hard scatter - "pypars parp 80 0.01", - # effective pT_min for MI (pt0 scale) - "pypars parp 82 1.9", - # matter distribution - "pypars parp 83 0.3", - "pypars parp 84 0.5", - # pT0 scale - "pypars parp 89 1800", - "pypars parp 90 0.22", - # ISR - "pypars mstp 70 2", - # max scale for FSR dipoles - "pypars mstp 72 0", - # new multiple interaction model and new parton shower selected - "pypars mstp 81 1", - # MPI - "pypars mstp 82 4", - # ISR - "pypars mstp 84 1", - # FSR - "pypars mstp 85 1", - # MPI - "pypars mstp 86 2", - # sea quarks: large x behavior of assumed gluon distribution - "pypars mstp 87 4", - # color reconnection - "pypars mstp 88 0", - "pypars mstp 89 1", - "pypars mstp 90 1", - "pypars mstp 95 1", - ] - -Pythia.PythiaCommand += [ # quarkonium processes - - #"pysubs msel 0", # user chooses decay mode(s) - #"pysubs msel 61", # colour octet charmonium production (421-439) - "pysubs msel 62", # colour octet bottomonium production (461-479) - #"pysubs msel 63", # colour octet onium production (msel 61+62) - - # ----- J/Psi production ----- - # --- 3S1(1) - #"pysubs msub 421 1", # gg->cc~[3S1(1)]+g - # --- 3S1(8) - #"pysubs msub 422 1", # gg->cc~[3S1(8)]+g - #"pysubs msub 425 1", # gq->q+cc~[3S1(8)] - #"pysubs msub 428 1", # qq~->g+cc~[3S1(8)] - # --- 1S0(8) - #"pysubs msub 423 1", # gg->cc~[1S0(8)]+g - #"pysubs msub 426 1", # gq->q+cc~[1S0(8)] - #"pysubs msub 429 1", # qq~->g+cc~[1S0(8)] - # --- 3PJ(8) - #"pysubs msub 424 1", # gg->cc~[3PJ(8)]+g - #"pysubs msub 427 1", # gq->q+cc~[3PJ(8)] - #"pysubs msub 430 1", # qq~->g+cc~[3PJ(8)] - - # ----- Chi's ----- - #"pysubs msub 431 1", # gg->cc~[3P0(1)]+g - #"pysubs msub 432 1", # gg->cc~[3P1(1)]+g - #"pysubs msub 433 1", # gg->cc~[3P2(1)]+g - #"pysubs msub 434 1", # qg->q+cc~[3P0(1)] - #"pysubs msub 435 1", # qg->q+cc~[3P1(1)] - #"pysubs msub 436 1", # qg->q+cc~[3P2(1)] - #"pysubs msub 437 1", # qq~->cc~[3P0(1)]+g - #"pysubs msub 438 1", # qq~->cc~[3P1(1)]+g - #"pysubs msub 439 1", # qq~->cc~[3P2(1)]+g - - # ----- Upsilon production ----- - # --- 3S1(1) - #"pysubs msub 461 1", # gg->bb~[3S1(1)]+g - # --- 3S1(8) - #"pysubs msub 462 1", # gg->bb~[3S1(8)]+g - #"pysubs msub 465 1", # gq->q+bb~[3S1(8)] - #"pysubs msub 468 1", # qq~->g+bb~[3S1(8)] - # --- 1S0(8) - #"pysubs msub 463 1", # gg->bb~[1S0(8)]+g - #"pysubs msub 466 1", # gq->q+bb~[1S0(8)] - #"pysubs msub 469 1", # qq~->g+bb~[1S0(8)] - # --- 3PJ(8) - #"pysubs msub 464 1", # gg->bb~[3PJ(8)]+g - #"pysubs msub 467 1", # gq->q+bb~[3PJ(8)] - #"pysubs msub 470 1", # qq~->g+bb~[3PJ(8)] - - # ----- Chi's ----- - #"pysubs msub 471 1", # gg->bb~[3P0(1)]+g - #"pysubs msub 472 1", # gg->bb~[3P1(1)]+g - #"pysubs msub 473 1", # gg->bb~[3P2(1)]+g - #"pysubs msub 474 1", # qg->q+bb~[3P0(1)] - #"pysubs msub 475 1", # qg->q+bb~[3P1(1)] - #"pysubs msub 476 1", # qg->q+bb~[3P2(1)] - #"pysubs msub 477 1", # qq~->bb~[3P0(1)]+g - #"pysubs msub 478 1", # qq~->bb~[3P1(1)]+g - #"pysubs msub 479 1", # qq~->bb~[3P2(1)]+g - - ] - -Pythia.PythiaCommand += [ # force decays - - "pydat3 mdme 858 1 0", # J/psi->e+e- - "pydat3 mdme 859 1 1", # J/psi->mumu (br 0.06) - "pydat3 mdme 860 1 0", # J/psi->rndmflavpairs - - "pydat3 mdme 1501 1 1", # chi0c->J/psi gamma (br 0.007) - "pydat3 mdme 1502 1 0", # chi0c->rfp - - "pydat3 mdme 1555 1 1", # chi1c->J/psi gamma (br 0.273) - "pydat3 mdme 1556 1 0", # chi1c->rfp - - "pydat3 mdme 861 1 1", # chi2c->J/psi gamma (br 0.135) - "pydat3 mdme 862 1 0", # chi2c->rfp - - "pydat3 mdme 1034 1 0", # Upsilon->e+e- (br 0.0254) - "pydat3 mdme 1035 1 1", # Upsilon->mu+mu- (br 0.0248) - "pydat3 mdme 1036 1 0", # Upsilon->tau+tau- (br 0.0267) - "pydat3 mdme 1037 1 0", # Upsilon->ddbar - "pydat3 mdme 1038 1 0", # Upsilon->uubar - "pydat3 mdme 1039 1 0", # Upsilon->ssbar - "pydat3 mdme 1040 1 0", # Upsilon->ccbar - "pydat3 mdme 1041 1 0", # Upsilon->ggg - "pydat3 mdme 1042 1 0", # Upsilon->gamma gg - - "pydat3 mdme 1520 1 1", # chi0b->Upsilon gamma (br 0.02) - "pydat3 mdme 1521 1 0", # chi0b->gg - - "pydat3 mdme 1565 1 1", # chi1b->Upsilon gamma (br 0.35) - "pydat3 mdme 1566 1 0", # chi1b->gg - - "pydat3 mdme 1043 1 1", # chi2b->Upsilon gamma (br 0.22) - "pydat3 mdme 1044 1 0", # chi2b->gg - - ] - -Pythia.PythiaCommand += [ # NRQCD matrix elements - - "pypars parp 141 1.16", # Jpsi-3S1(1) NRQCD ME - "pypars parp 142 0.0119", # Jpsi-3S1(8) NRQCD ME - "pypars parp 143 0.01", # Jpsi-1S0(8) NRQCD ME - "pypars parp 144 0.01", # Jpsi-3P0(8) NRQCD ME / m_c^2 - "pypars parp 145 0.05", # chi_c0-3P0(1) NRQCD ME / m_c^2 - - "pypars parp 146 9.28", # Upsilon-3S1(1) NRQCD ME - "pypars parp 147 0.15", # Upsilon-3S1(8) NRQCD ME - "pypars parp 148 0.02", # Upsilon-1S0(8) NRQCD ME - "pypars parp 149 0.02", # Upsilon-3P0(8) NRQCD ME / m_b^2 - "pypars parp 150 0.085", # chi_b0-3P0(1) NRQCD ME / m_b^2 - - ] - -Pythia.PythiaCommand += [ - - "pysubs ckin 3 1.", # lower pT cut on hard process in GeV - - # LHAPDF parameters for CTEQ6M - #"pypars mstp 51 10050", - #"pypars mstp 53 10050", - #"pypars mstp 55 10050", - #"pypars mstp 52 2", - #"pypars mstp 54 2", - #"pypars mstp 56 2", - - - #"pypars mstp 61 0", # inital state showers off - #"pypars mstp 71 0", # final state showers off - #"pypars mstp 111 0" # fragmentation/hadronisation off - - ] - -Pythia.PythiaCommand += ["pyinit pylistf 1", - "pystat mstat 1", - "pyinit dumpr 0 3",#dump this event range to screen - ] - - -#------- Muon Trigger Cuts -------- -BSignalFilter = topAlg.BSignalFilter -#-------------- Level 1 Muon Cuts --------------------- -BSignalFilter.LVL1MuonCutOn = "true" -BSignalFilter.LVL1MuonCutPT = 6000.0 -BSignalFilter.LVL1MuonCutEta = 2.5 -#-------------- Level 2 lepton cuts ------------------- -# These will only function if LVL1 trigger used. -BSignalFilter.LVL2MuonCutOn = "true" -BSignalFilter.LVL2MuonCutPT = 4000.0 -BSignalFilter.LVL2MuonCutEta = 2.5 - -try: - Stream1.RequireAlgs += ["BSignalFilter"] -except Exception, e: - pass - -#============================================================== -# -# End of job options file -# -############################################################### diff --git a/Generators/PythiaB/share/CloseAntibQuark.py b/Generators/PythiaB/share/CloseAntibQuark.py deleted file mode 100644 index f5dae1a76f2eac9e2ec17b1b967525e21ec07582..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/share/CloseAntibQuark.py +++ /dev/null @@ -1,377 +0,0 @@ -PythiaB = topAlg.PythiaB -PythiaB.PythiaCommand += [ "pydat3 mdme 863 1 3" - ,"pydat3 mdme 864 1 3" - ,"pydat3 mdme 865 1 3" - ,"pydat3 mdme 866 1 3" - ,"pydat3 mdme 867 1 3" - ,"pydat3 mdme 868 1 3" - ,"pydat3 mdme 869 1 3" - ,"pydat3 mdme 870 1 3" - ,"pydat3 mdme 871 1 3" - ,"pydat3 mdme 872 1 3" - ,"pydat3 mdme 873 1 3" - ,"pydat3 mdme 874 1 3" - ,"pydat3 mdme 875 1 3" - ,"pydat3 mdme 876 1 3" - ,"pydat3 mdme 877 1 3" - ,"pydat3 mdme 878 1 3" - ,"pydat3 mdme 879 1 3" - ,"pydat3 mdme 880 1 3" - ,"pydat3 mdme 881 1 3" - ,"pydat3 mdme 882 1 3" - ,"pydat3 mdme 883 1 3" - ,"pydat3 mdme 884 1 3" - ,"pydat3 mdme 885 1 3" - ,"pydat3 mdme 886 1 3" - ,"pydat3 mdme 887 1 3" - ,"pydat3 mdme 888 1 3" - ,"pydat3 mdme 889 1 3" - ,"pydat3 mdme 890 1 3" - ,"pydat3 mdme 891 1 3" - ,"pydat3 mdme 892 1 3" - ,"pydat3 mdme 893 1 3" - ,"pydat3 mdme 894 1 3" - ,"pydat3 mdme 895 1 3" - ,"pydat3 mdme 896 1 3" - ,"pydat3 mdme 897 1 3" - ,"pydat3 mdme 898 1 3" - ,"pydat3 mdme 908 1 3" - ,"pydat3 mdme 909 1 3" - ,"pydat3 mdme 910 1 3" - ,"pydat3 mdme 911 1 3" - ,"pydat3 mdme 912 1 3" - ,"pydat3 mdme 913 1 3" - ,"pydat3 mdme 914 1 3" - ,"pydat3 mdme 915 1 3" - ,"pydat3 mdme 916 1 3" - ,"pydat3 mdme 917 1 3" - ,"pydat3 mdme 918 1 3" - ,"pydat3 mdme 919 1 3" - ,"pydat3 mdme 920 1 3" - ,"pydat3 mdme 921 1 3" - ,"pydat3 mdme 922 1 3" - ,"pydat3 mdme 923 1 3" - ,"pydat3 mdme 924 1 3" - ,"pydat3 mdme 925 1 3" - ,"pydat3 mdme 926 1 3" - ,"pydat3 mdme 927 1 3" - ,"pydat3 mdme 928 1 3" - ,"pydat3 mdme 929 1 3" - ,"pydat3 mdme 930 1 3" - ,"pydat3 mdme 931 1 3" - ,"pydat3 mdme 932 1 3" - ,"pydat3 mdme 933 1 3" - ,"pydat3 mdme 934 1 3" - ,"pydat3 mdme 935 1 3" - ,"pydat3 mdme 936 1 3" - ,"pydat3 mdme 937 1 3" - ,"pydat3 mdme 938 1 3" - ,"pydat3 mdme 939 1 3" - ,"pydat3 mdme 940 1 3" - ,"pydat3 mdme 941 1 3" - ,"pydat3 mdme 942 1 3" - ,"pydat3 mdme 943 1 3" - ,"pydat3 mdme 953 1 3" - ,"pydat3 mdme 954 1 3" - ,"pydat3 mdme 955 1 3" - ,"pydat3 mdme 956 1 3" - ,"pydat3 mdme 957 1 3" - ,"pydat3 mdme 958 1 3" - ,"pydat3 mdme 959 1 3" - ,"pydat3 mdme 960 1 3" - ,"pydat3 mdme 961 1 3" - ,"pydat3 mdme 962 1 3" - ,"pydat3 mdme 963 1 3" - ,"pydat3 mdme 964 1 3" - ,"pydat3 mdme 965 1 3" - ,"pydat3 mdme 966 1 3" - ,"pydat3 mdme 967 1 3" - ,"pydat3 mdme 968 1 3" - ,"pydat3 mdme 969 1 3" - ,"pydat3 mdme 970 1 3" - ,"pydat3 mdme 971 1 3" - ,"pydat3 mdme 972 1 3" - ,"pydat3 mdme 973 1 3" - ,"pydat3 mdme 974 1 3" - ,"pydat3 mdme 975 1 3" - ,"pydat3 mdme 976 1 3" - ,"pydat3 mdme 977 1 3" - ,"pydat3 mdme 978 1 3" - ,"pydat3 mdme 979 1 3" - ,"pydat3 mdme 980 1 3" - ,"pydat3 mdme 981 1 3" - ,"pydat3 mdme 982 1 3" - ,"pydat3 mdme 983 1 3" - ,"pydat3 mdme 984 1 3" - ,"pydat3 mdme 985 1 3" - ,"pydat3 mdme 986 1 3" - ,"pydat3 mdme 987 1 3" - ,"pydat3 mdme 988 1 3" - ,"pydat3 mdme 989 1 3" - ,"pydat3 mdme 990 1 3" - ,"pydat3 mdme 991 1 3" - ,"pydat3 mdme 997 1 3" - ,"pydat3 mdme 998 1 3" - ,"pydat3 mdme 999 1 3" - ,"pydat3 mdme 1000 1 3" - ,"pydat3 mdme 1001 1 3" - ,"pydat3 mdme 1002 1 3" - ,"pydat3 mdme 1003 1 3" - ,"pydat3 mdme 1004 1 3" - ,"pydat3 mdme 1005 1 3" - ,"pydat3 mdme 1006 1 3" - ,"pydat3 mdme 1007 1 3" - ,"pydat3 mdme 1008 1 3" - ,"pydat3 mdme 1009 1 3" - ,"pydat3 mdme 1010 1 3" - ,"pydat3 mdme 1011 1 3" - ,"pydat3 mdme 1012 1 3" - ,"pydat3 mdme 1013 1 3" - ,"pydat3 mdme 1014 1 3" - ,"pydat3 mdme 1015 1 3" - ,"pydat3 mdme 1016 1 3" - ,"pydat3 mdme 1017 1 3" - ,"pydat3 mdme 1018 1 3" - ,"pydat3 mdme 1019 1 3" - ,"pydat3 mdme 1020 1 3" - ,"pydat3 mdme 1021 1 3" - ,"pydat3 mdme 1022 1 3" - ,"pydat3 mdme 1023 1 3" - ,"pydat3 mdme 1024 1 3" - ,"pydat3 mdme 1025 1 3" - ,"pydat3 mdme 1026 1 3" - ,"pydat3 mdme 1027 1 3" - ,"pydat3 mdme 1219 1 2" - ,"pydat3 mdme 1220 1 2" - ,"pydat3 mdme 1221 1 2" - ,"pydat3 mdme 1222 1 2" - ,"pydat3 mdme 1223 1 2" - ,"pydat3 mdme 1224 1 2" - ,"pydat3 mdme 1225 1 2" - ,"pydat3 mdme 1226 1 2" - ,"pydat3 mdme 1227 1 2" - ,"pydat3 mdme 1228 1 2" - ,"pydat3 mdme 1229 1 2" - ,"pydat3 mdme 1230 1 2" - ,"pydat3 mdme 1231 1 2" - ,"pydat3 mdme 1232 1 2" - ,"pydat3 mdme 1233 1 2" - ,"pydat3 mdme 1234 1 2" - ,"pydat3 mdme 1235 1 2" - ,"pydat3 mdme 1236 1 2" - ,"pydat3 mdme 1237 1 2" - ,"pydat3 mdme 1238 1 2" - ,"pydat3 mdme 1239 1 2" - ,"pydat3 mdme 1240 1 2" - ,"pydat3 mdme 1241 1 2" - ,"pydat3 mdme 1242 1 2" - ,"pydat3 mdme 1243 1 2" - ,"pydat3 mdme 1244 1 2" - ,"pydat3 mdme 1245 1 2" - ,"pydat3 mdme 1246 1 2" - ,"pydat3 mdme 1247 1 2" - ,"pydat3 mdme 1248 1 2" - ,"pydat3 mdme 1249 1 2" - ,"pydat3 mdme 1250 1 2" - ,"pydat3 mdme 1251 1 2" - ,"pydat3 mdme 1252 1 2" - ,"pydat3 mdme 1253 1 2" - ,"pydat3 mdme 1258 1 2" - ,"pydat3 mdme 1259 1 2" - ,"pydat3 mdme 1260 1 2" - ,"pydat3 mdme 1261 1 2" - ,"pydat3 mdme 1262 1 2" - ,"pydat3 mdme 1263 1 2" - ,"pydat3 mdme 1264 1 2" - ,"pydat3 mdme 1265 1 2" - ,"pydat3 mdme 1266 1 2" - ,"pydat3 mdme 1267 1 2" - ,"pydat3 mdme 1268 1 2" - ,"pydat3 mdme 1269 1 2" - ,"pydat3 mdme 1270 1 2" - ,"pydat3 mdme 1271 1 2" - ,"pydat3 mdme 1272 1 2" - ,"pydat3 mdme 1273 1 2" - ,"pydat3 mdme 1274 1 2" - ,"pydat3 mdme 1275 1 2" - ,"pydat3 mdme 1280 1 2" - ,"pydat3 mdme 1281 1 2" - ,"pydat3 mdme 1282 1 2" - ,"pydat3 mdme 1283 1 2" - ,"pydat3 mdme 1284 1 2" - ,"pydat3 mdme 1285 1 2" - ,"pydat3 mdme 1286 1 2" - ,"pydat3 mdme 1287 1 2" - ,"pydat3 mdme 1288 1 2" - ,"pydat3 mdme 1290 1 2" - ,"pydat3 mdme 1291 1 2" - ,"pydat3 mdme 1292 1 2" - ,"pydat3 mdme 1293 1 2" - ,"pydat3 mdme 1294 1 2" - ,"pydat3 mdme 1295 1 2" - ,"pydat3 mdme 1296 1 2" - ,"pydat3 mdme 1297 1 2" - ,"pydat3 mdme 1298 1 2" - ,"pydat3 mdme 1299 1 2" - ,"pydat3 mdme 1300 1 2" - ,"pydat3 mdme 1301 1 2" - ,"pydat3 mdme 1302 1 2" - ,"pydat3 mdme 1303 1 2" - ,"pydat3 mdme 1304 1 2" - ,"pydat3 mdme 1305 1 2" - ,"pydat3 mdme 1306 1 2" - ,"pydat3 mdme 1307 1 2" - ,"pydat3 mdme 1308 1 2" - ,"pydat3 mdme 1309 1 2" - ,"pydat3 mdme 1310 1 2" - ,"pydat3 mdme 1311 1 2" - ,"pydat3 mdme 1312 1 2" - ,"pydat3 mdme 1313 1 2" - ,"pydat3 mdme 1314 1 2" - ,"pydat3 mdme 1315 1 2" - ,"pydat3 mdme 1316 1 2" - ,"pydat3 mdme 1317 1 2" - ,"pydat3 mdme 1318 1 2" - ,"pydat3 mdme 1319 1 2" - ,"pydat3 mdme 1320 1 2" - ,"pydat3 mdme 1321 1 2" - ,"pydat3 mdme 1322 1 2" - ,"pydat3 mdme 1323 1 2" - ,"pydat3 mdme 1324 1 2" - ,"pydat3 mdme 1325 1 2" - ,"pydat3 mdme 1326 1 2" - ,"pydat3 mdme 1327 1 2" - ,"pydat3 mdme 1328 1 2" - ,"pydat3 mdme 1329 1 2" - ,"pydat3 mdme 1330 1 2" - ,"pydat3 mdme 1331 1 2" - ,"pydat3 mdme 1332 1 2" - ,"pydat3 mdme 1333 1 2" - ,"pydat3 mdme 1334 1 2" - ,"pydat3 mdme 1335 1 2" - ,"pydat3 mdme 1336 1 2" - ,"pydat3 mdme 1337 1 2" - ,"pydat3 mdme 1338 1 2" - ,"pydat3 mdme 1339 1 2" - ,"pydat3 mdme 1340 1 2" - ,"pydat3 mdme 1341 1 2" - ,"pydat3 mdme 1342 1 2" - ,"pydat3 mdme 1343 1 2" - ,"pydat3 mdme 1344 1 2" - ,"pydat3 mdme 1345 1 2" - ,"pydat3 mdme 1346 1 2" - ,"pydat3 mdme 1347 1 2" - ,"pydat3 mdme 1348 1 2" - ,"pydat3 mdme 1349 1 2" - ,"pydat3 mdme 1350 1 2" - ,"pydat3 mdme 1351 1 2" - ,"pydat3 mdme 1352 1 2" - ,"pydat3 mdme 1353 1 2" - ,"pydat3 mdme 1354 1 2" - ,"pydat3 mdme 1355 1 2" - ,"pydat3 mdme 1356 1 2" - ,"pydat3 mdme 1357 1 2" - ,"pydat3 mdme 1358 1 2" - ,"pydat3 mdme 1359 1 2" - ,"pydat3 mdme 1360 1 2" - ,"pydat3 mdme 1361 1 2" - ,"pydat3 mdme 1362 1 2" - ,"pydat3 mdme 1363 1 2" - ,"pydat3 mdme 1364 1 2" - ,"pydat3 mdme 1365 1 2" - ,"pydat3 mdme 1366 1 2" - ,"pydat3 mdme 1367 1 2" - ,"pydat3 mdme 1368 1 2" - ,"pydat3 mdme 1369 1 2" - ,"pydat3 mdme 1370 1 2" - ,"pydat3 mdme 1371 1 2" - ,"pydat3 mdme 1372 1 2" - ,"pydat3 mdme 1373 1 2" - ,"pydat3 mdme 1374 1 2" - ,"pydat3 mdme 1375 1 2" - ,"pydat3 mdme 1376 1 2" - ,"pydat3 mdme 1377 1 2" - ,"pydat3 mdme 1378 1 2" - ,"pydat3 mdme 1379 1 2" - ,"pydat3 mdme 1380 1 2" - ,"pydat3 mdme 1381 1 2" - ,"pydat3 mdme 1382 1 2" - ,"pydat3 mdme 1383 1 2" - ,"pydat3 mdme 1384 1 2" - ,"pydat3 mdme 1385 1 2" - ,"pydat3 mdme 1386 1 2" - ,"pydat3 mdme 1387 1 2" - ,"pydat3 mdme 1388 1 2" - ,"pydat3 mdme 1389 1 2" - ,"pydat3 mdme 1390 1 2" - ,"pydat3 mdme 1391 1 2" - ,"pydat3 mdme 1392 1 2" - ,"pydat3 mdme 1393 1 2" - ,"pydat3 mdme 1394 1 2" - ,"pydat3 mdme 1395 1 2" - ,"pydat3 mdme 1396 1 2" - ,"pydat3 mdme 1397 1 2" - ,"pydat3 mdme 1398 1 2" - ,"pydat3 mdme 1399 1 2" - ,"pydat3 mdme 1400 1 2" - ,"pydat3 mdme 1401 1 2" - ,"pydat3 mdme 1402 1 2" - ,"pydat3 mdme 1403 1 2" - ,"pydat3 mdme 1404 1 2" - ,"pydat3 mdme 1405 1 2" - ,"pydat3 mdme 1406 1 2" - ,"pydat3 mdme 1407 1 2" - ,"pydat3 mdme 1408 1 2" - ,"pydat3 mdme 1409 1 2" - ,"pydat3 mdme 1410 1 2" - ,"pydat3 mdme 1411 1 2" - ,"pydat3 mdme 1412 1 2" - ,"pydat3 mdme 1413 1 2" - ,"pydat3 mdme 1414 1 2" - ,"pydat3 mdme 1415 1 2" - ,"pydat3 mdme 1416 1 2" - ,"pydat3 mdme 1417 1 2" - ,"pydat3 mdme 1418 1 2" - ,"pydat3 mdme 1419 1 2" - ,"pydat3 mdme 1420 1 2" - ,"pydat3 mdme 1421 1 2" - ,"pydat3 mdme 1422 1 2" - ,"pydat3 mdme 1423 1 2" - ,"pydat3 mdme 1424 1 2" - ,"pydat3 mdme 1425 1 2" - ,"pydat3 mdme 1426 1 2" - ,"pydat3 mdme 1427 1 2" - ,"pydat3 mdme 1428 1 2" - ,"pydat3 mdme 1429 1 2" - ,"pydat3 mdme 1430 1 2" - ,"pydat3 mdme 1431 1 2" - ,"pydat3 mdme 1432 1 2" - ,"pydat3 mdme 1433 1 2" - ,"pydat3 mdme 1434 1 2" - ,"pydat3 mdme 1435 1 2" - ,"pydat3 mdme 1436 1 2" - ,"pydat3 mdme 1437 1 2" - ,"pydat3 mdme 1438 1 2" - ,"pydat3 mdme 1439 1 2" - ,"pydat3 mdme 1440 1 2" - ,"pydat3 mdme 1441 1 2" - ,"pydat3 mdme 1442 1 2" - ,"pydat3 mdme 1443 1 2" - ,"pydat3 mdme 1444 1 2" - ,"pydat3 mdme 1445 1 2" - ,"pydat3 mdme 1446 1 2" - ,"pydat3 mdme 1447 1 2" - ,"pydat3 mdme 1448 1 2" - ,"pydat3 mdme 1449 1 2" - ,"pydat3 mdme 1450 1 2" - ,"pydat3 mdme 1451 1 2" - ,"pydat3 mdme 545 1 2" - ,"pydat3 mdme 546 1 2" - ,"pydat3 mdme 547 1 2" - ,"pydat3 mdme 548 1 2" - ,"pydat3 mdme 549 1 2" - ,"pydat3 mdme 550 1 2" - ,"pydat3 mdme 551 1 2" - ,"pydat3 mdme 552 1 2" - ,"pydat3 mdme 553 1 2" - ] diff --git a/Generators/PythiaB/share/CloseD0bar.py b/Generators/PythiaB/share/CloseD0bar.py deleted file mode 100644 index 9040364402230d322017946f0ef82c3fe2be0dcf..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/share/CloseD0bar.py +++ /dev/null @@ -1,67 +0,0 @@ -# -# $Id: CloseD0bar.py,v 1.1 2007-03-01 17:15:38 msmizans Exp $ -# -PythiaB = Algorithm( "PythiaB" ) -PythiaB.PythiaCommand += [ - "pydat3 mdme 747 1 2", - "pydat3 mdme 748 1 2", - "pydat3 mdme 749 1 2", - "pydat3 mdme 750 1 2", - "pydat3 mdme 751 1 2", - "pydat3 mdme 752 1 2", - "pydat3 mdme 753 1 2", - "pydat3 mdme 754 1 2", - "pydat3 mdme 755 1 2", - "pydat3 mdme 756 1 2", - "pydat3 mdme 757 1 2", - "pydat3 mdme 758 1 2", - "pydat3 mdme 759 1 2", - "pydat3 mdme 760 1 2", - "pydat3 mdme 761 1 2", - "pydat3 mdme 762 1 2", - "pydat3 mdme 763 1 2", - "pydat3 mdme 764 1 2", - "pydat3 mdme 765 1 2", - "pydat3 mdme 766 1 2", - "pydat3 mdme 767 1 2", - "pydat3 mdme 768 1 2", - "pydat3 mdme 769 1 2", - "pydat3 mdme 770 1 2", - "pydat3 mdme 771 1 2", - "pydat3 mdme 772 1 2", - "pydat3 mdme 773 1 2", - "pydat3 mdme 774 1 2", - "pydat3 mdme 775 1 2", - "pydat3 mdme 776 1 2", - "pydat3 mdme 777 1 2", - "pydat3 mdme 778 1 2", - "pydat3 mdme 779 1 2", - "pydat3 mdme 780 1 2", - "pydat3 mdme 781 1 2", - "pydat3 mdme 782 1 2", - "pydat3 mdme 783 1 2", - "pydat3 mdme 784 1 2", - "pydat3 mdme 785 1 2", - "pydat3 mdme 786 1 2", - "pydat3 mdme 787 1 2", - "pydat3 mdme 788 1 2", - "pydat3 mdme 789 1 2", - "pydat3 mdme 790 1 2", - "pydat3 mdme 791 1 2", - "pydat3 mdme 792 1 2", - "pydat3 mdme 793 1 2", - "pydat3 mdme 794 1 2", - "pydat3 mdme 795 1 2", - "pydat3 mdme 796 1 2", - "pydat3 mdme 797 1 2", - "pydat3 mdme 798 1 2", - "pydat3 mdme 799 1 2", - "pydat3 mdme 800 1 2", - "pydat3 mdme 801 1 2", - "pydat3 mdme 802 1 2", - "pydat3 mdme 803 1 2", - "pydat3 mdme 804 1 2", - "pydat3 mdme 805 1 2", - "pydat3 mdme 806 1 2", - "pydat3 mdme 807 1 2" - ] diff --git a/Generators/PythiaB/share/DXphipi.py b/Generators/PythiaB/share/DXphipi.py deleted file mode 100644 index eb67a18adef6ea5cab47f001c8daa7f5eb49b989..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/share/DXphipi.py +++ /dev/null @@ -1,148 +0,0 @@ -# -# $Id: DXphipi.py,v 1.1 2007-03-01 17:15:46 msmizans Exp $ -# -PythiaB = Algorithm( "PythiaB" ) - -# For Ds- -> phipi-: open Ds channels only for particle Ds+ -if DXChannel == "Dsphipi": - PythiaB.PythiaCommand += [ "pydat3 mdme 818 1 2" - ,"pydat3 mdme 819 1 2" - ,"pydat3 mdme 820 1 2" - ,"pydat3 mdme 821 1 2" - ,"pydat3 mdme 822 1 2" - ,"pydat3 mdme 823 1 2" - ,"pydat3 mdme 824 1 2" - ,"pydat3 mdme 825 1 2" - ,"pydat3 mdme 826 1 2" - ,"pydat3 mdme 827 1 2" - ,"pydat3 mdme 828 1 2" - ,"pydat3 mdme 829 1 2" - ,"pydat3 mdme 830 1 2" - ,"pydat3 mdme 831 1 2" - ,"pydat3 mdme 832 1 2" - ,"pydat3 mdme 833 1 2" - ,"pydat3 mdme 834 1 2" - ,"pydat3 mdme 835 1 2" - ,"pydat3 mdme 836 1 2" - ,"pydat3 mdme 837 1 2" - ,"pydat3 mdme 838 1 2" - ,"pydat3 mdme 839 1 2" - ,"pydat3 mdme 840 1 2" - ,"pydat3 mdme 841 1 2" - ,"pydat3 mdme 842 1 2" - ,"pydat3 mdme 843 1 2" - ,"pydat3 mdme 844 1 2" - ,"pydat3 mdme 845 1 2" - ,"pydat3 mdme 846 1 2" - ,"pydat3 mdme 847 1 2" - ,"pydat3 mdme 848 1 2" - ,"pydat3 mdme 849 1 2" - ,"pydat3 mdme 850 1 2" - ] - - -# For Ds+ -> phipi+: open Ds channels only for antiparticle Ds- -if DXChannel == "Dsbarphipi": - PythiaB.PythiaCommand += [ "pydat3 mdme 818 1 3" - ,"pydat3 mdme 819 1 3" - ,"pydat3 mdme 820 1 3" - ,"pydat3 mdme 821 1 3" - ,"pydat3 mdme 822 1 3" - ,"pydat3 mdme 823 1 3" - ,"pydat3 mdme 824 1 3" - ,"pydat3 mdme 825 1 3" - ,"pydat3 mdme 826 1 3" - ,"pydat3 mdme 827 1 3" - ,"pydat3 mdme 828 1 3" - ,"pydat3 mdme 829 1 3" - ,"pydat3 mdme 830 1 3" - ,"pydat3 mdme 831 1 3" - ,"pydat3 mdme 832 1 3" - ,"pydat3 mdme 833 1 3" - ,"pydat3 mdme 834 1 3" - ,"pydat3 mdme 835 1 3" - ,"pydat3 mdme 836 1 3" - ,"pydat3 mdme 837 1 3" - ,"pydat3 mdme 838 1 3" - ,"pydat3 mdme 839 1 3" - ,"pydat3 mdme 840 1 3" - ,"pydat3 mdme 841 1 3" - ,"pydat3 mdme 842 1 3" - ,"pydat3 mdme 843 1 3" - ,"pydat3 mdme 844 1 3" - ,"pydat3 mdme 845 1 3" - ,"pydat3 mdme 846 1 3" - ,"pydat3 mdme 847 1 3" - ,"pydat3 mdme 848 1 3" - ,"pydat3 mdme 849 1 3" - ,"pydat3 mdme 850 1 3" - ] - - -# For D- -> phipi-: open D channels only for particle D+ -if DXChannel == "Dphipi": - PythiaB.PythiaCommand += [ "pydat3 mdme 673 1 2" - ,"pydat3 mdme 674 1 2" - ,"pydat3 mdme 675 1 2" - ,"pydat3 mdme 676 1 2" - ,"pydat3 mdme 677 1 2" - ,"pydat3 mdme 678 1 2" - ,"pydat3 mdme 679 1 2" - ,"pydat3 mdme 680 1 2" - ,"pydat3 mdme 681 1 2" - ,"pydat3 mdme 682 1 2" - ,"pydat3 mdme 683 1 2" - ,"pydat3 mdme 684 1 2" - ,"pydat3 mdme 685 1 2" - ,"pydat3 mdme 686 1 2" - ,"pydat3 mdme 687 1 2" - ,"pydat3 mdme 688 1 2" - ,"pydat3 mdme 689 1 2" - ,"pydat3 mdme 690 1 2" - ,"pydat3 mdme 691 1 2" - ,"pydat3 mdme 692 1 2" - ,"pydat3 mdme 693 1 2" - ,"pydat3 mdme 694 1 2" - ,"pydat3 mdme 695 1 2" - ,"pydat3 mdme 696 1 2" - ,"pydat3 mdme 697 1 2" - ,"pydat3 mdme 698 1 2" - ,"pydat3 mdme 699 1 2" - ,"pydat3 mdme 700 1 2" - ,"pydat3 mdme 701 1 2" - ,"pydat3 mdme 702 1 2" - ,"pydat3 mdme 703 1 2" - ,"pydat3 mdme 704 1 2" - ,"pydat3 mdme 705 1 2" - ,"pydat3 mdme 706 1 2" - ,"pydat3 mdme 707 1 2" - ,"pydat3 mdme 708 1 2" - ,"pydat3 mdme 709 1 2" - ,"pydat3 mdme 710 1 2" - ,"pydat3 mdme 711 1 2" - ,"pydat3 mdme 712 1 2" - ,"pydat3 mdme 713 1 2" - ,"pydat3 mdme 714 1 2" - ,"pydat3 mdme 715 1 2" - ,"pydat3 mdme 716 1 2" - ,"pydat3 mdme 717 1 2" - ,"pydat3 mdme 718 1 2" - ,"pydat3 mdme 719 1 2" - ,"pydat3 mdme 720 1 2" - ,"pydat3 mdme 721 1 2" - ,"pydat3 mdme 722 1 2" - ,"pydat3 mdme 723 1 2" - ,"pydat3 mdme 724 1 2" - ,"pydat3 mdme 725 1 2" - ,"pydat3 mdme 726 1 2" - ,"pydat3 mdme 727 1 2" - ,"pydat3 mdme 728 1 2" - ,"pydat3 mdme 729 1 2" - ,"pydat3 mdme 730 1 2" - ,"pydat3 mdme 731 1 2" - ,"pydat3 mdme 732 1 2" - ,"pydat3 mdme 733 1 2" - ,"pydat3 mdme 734 1 2" - ,"pydat3 mdme 735 1 2" - ] - diff --git a/Generators/PythiaB/share/Dsphipi.py b/Generators/PythiaB/share/Dsphipi.py deleted file mode 100644 index cf1b8ee47a927d6f1c6417f60c592146f70e73cc..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/share/Dsphipi.py +++ /dev/null @@ -1,35 +0,0 @@ -PythiaB = topAlg.PythiaB -PythiaB.PythiaCommand += [ "pydat3 mdme 818 1 2" - ,"pydat3 mdme 819 1 2" - ,"pydat3 mdme 820 1 2" - ,"pydat3 mdme 821 1 2" - ,"pydat3 mdme 822 1 2" - ,"pydat3 mdme 823 1 2" - ,"pydat3 mdme 824 1 2" - ,"pydat3 mdme 825 1 2" - ,"pydat3 mdme 826 1 2" - ,"pydat3 mdme 827 1 2" - ,"pydat3 mdme 828 1 2" - ,"pydat3 mdme 829 1 2" - ,"pydat3 mdme 830 1 2" - ,"pydat3 mdme 831 1 2" - ,"pydat3 mdme 832 1 2" - ,"pydat3 mdme 833 1 2" - ,"pydat3 mdme 834 1 2" - ,"pydat3 mdme 835 1 2" - ,"pydat3 mdme 836 1 2" - ,"pydat3 mdme 837 1 2" - ,"pydat3 mdme 838 1 2" - ,"pydat3 mdme 839 1 2" - ,"pydat3 mdme 840 1 2" - ,"pydat3 mdme 841 1 2" - ,"pydat3 mdme 842 1 2" - ,"pydat3 mdme 843 1 2" - ,"pydat3 mdme 844 1 2" - ,"pydat3 mdme 845 1 2" - ,"pydat3 mdme 846 1 2" - ,"pydat3 mdme 847 1 2" - ,"pydat3 mdme 848 1 2" - ,"pydat3 mdme 849 1 2" - ,"pydat3 mdme 850 1 2" - ] diff --git a/Generators/PythiaB/share/Jpsichannels.py b/Generators/PythiaB/share/Jpsichannels.py deleted file mode 100644 index b9a3e9fbd590e7d21f6d3e96bc3fe6766f8cdfcf..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/share/Jpsichannels.py +++ /dev/null @@ -1,400 +0,0 @@ -PythiaB = topAlg.PythiaB -# Force selected anti-b-quark hadron decays (B+, B0, Bs, anti-Lambda_b etc.) -# -# B0 decays -# repoint to place 4501, 96 decays including new ones -PythiaB.PythiaCommand += [ "pydat3 mdcy 134 2 4501" ,"pydat3 mdcy 134 3 96" ,"pydat3 mdcy 134 1 1" - ,"pydat3 mdme 4501 1 3" ,"pydat3 mdme 4501 2 42" ,"pydat3 brat 4501 0.02000" ,"pydat3 kfdp 4501 1 12" ,"pydat3 kfdp 4501 2 -11" ,"pydat3 kfdp 4501 3 -411" - ,"pydat3 mdme 4502 1 3" ,"pydat3 mdme 4502 2 42" ,"pydat3 brat 4502 0.05500" ,"pydat3 kfdp 4502 1 12" ,"pydat3 kfdp 4502 2 -11" ,"pydat3 kfdp 4502 3 -413" - ,"pydat3 mdme 4503 1 3" ,"pydat3 mdme 4503 2 42" ,"pydat3 brat 4503 0.00500" ,"pydat3 kfdp 4503 1 12" ,"pydat3 kfdp 4503 2 -11" ,"pydat3 kfdp 4503 3 -10413" - ,"pydat3 mdme 4504 1 3" ,"pydat3 mdme 4504 2 42" ,"pydat3 brat 4504 0.00500" ,"pydat3 kfdp 4504 1 12" ,"pydat3 kfdp 4504 2 -11" ,"pydat3 kfdp 4504 3 -10411" - ,"pydat3 mdme 4505 1 3" ,"pydat3 mdme 4505 2 42" ,"pydat3 brat 4505 0.00800" ,"pydat3 kfdp 4505 1 12" ,"pydat3 kfdp 4505 2 -11" ,"pydat3 kfdp 4505 3 -20413" - ,"pydat3 mdme 4506 1 3" ,"pydat3 mdme 4506 2 42" ,"pydat3 brat 4506 0.01200" ,"pydat3 kfdp 4506 1 12" ,"pydat3 kfdp 4506 2 -11" ,"pydat3 kfdp 4506 3 -415" - ,"pydat3 mdme 4507 1 3" ,"pydat3 mdme 4507 2 42" ,"pydat3 brat 4507 0.02000" ,"pydat3 kfdp 4507 1 14" ,"pydat3 kfdp 4507 2 -13" ,"pydat3 kfdp 4507 3 -411" - ,"pydat3 mdme 4508 1 3" ,"pydat3 mdme 4508 2 42" ,"pydat3 brat 4508 0.05500" ,"pydat3 kfdp 4508 1 14" ,"pydat3 kfdp 4508 2 -13" ,"pydat3 kfdp 4508 3 -413" - ,"pydat3 mdme 4509 1 3" ,"pydat3 mdme 4509 2 42" ,"pydat3 brat 4509 0.00500" ,"pydat3 kfdp 4509 1 14" ,"pydat3 kfdp 4509 2 -13" ,"pydat3 kfdp 4509 3 -10413" - ,"pydat3 mdme 4510 1 3" ,"pydat3 mdme 4510 2 42" ,"pydat3 brat 4510 0.00500" ,"pydat3 kfdp 4510 1 14" ,"pydat3 kfdp 4510 2 -13" ,"pydat3 kfdp 4510 3 -10411" - ,"pydat3 mdme 4511 1 3" ,"pydat3 mdme 4511 2 42" ,"pydat3 brat 4511 0.00800" ,"pydat3 kfdp 4511 1 14" ,"pydat3 kfdp 4511 2 -13" ,"pydat3 kfdp 4511 3 -20413" - ,"pydat3 mdme 4512 1 3" ,"pydat3 mdme 4512 2 42" ,"pydat3 brat 4512 0.01200" ,"pydat3 kfdp 4512 1 14" ,"pydat3 kfdp 4512 2 -13" ,"pydat3 kfdp 4512 3 -415" - ,"pydat3 mdme 4513 1 3" ,"pydat3 mdme 4513 2 42" ,"pydat3 brat 4513 0.01000" ,"pydat3 kfdp 4513 1 16" ,"pydat3 kfdp 4513 2 -15" ,"pydat3 kfdp 4513 3 -411" - ,"pydat3 mdme 4514 1 3" ,"pydat3 mdme 4514 2 42" ,"pydat3 brat 4514 0.03000" ,"pydat3 kfdp 4514 1 16" ,"pydat3 kfdp 4514 2 -15" ,"pydat3 kfdp 4514 3 -413" - ,"pydat3 mdme 4515 1 3" ,"pydat3 brat 4515 0.00350" ,"pydat3 kfdp 4515 1 -411" ,"pydat3 kfdp 4515 2 211" - ,"pydat3 mdme 4516 1 3" ,"pydat3 brat 4516 0.01100" ,"pydat3 kfdp 4516 1 -411" ,"pydat3 kfdp 4516 2 213" - ,"pydat3 mdme 4517 1 3" ,"pydat3 brat 4517 0.00550" ,"pydat3 kfdp 4517 1 -411" ,"pydat3 kfdp 4517 2 20213" - ,"pydat3 mdme 4518 1 3" ,"pydat3 brat 4518 0.00420" ,"pydat3 kfdp 4518 1 -413" ,"pydat3 kfdp 4518 2 211" - ,"pydat3 mdme 4519 1 3" ,"pydat3 brat 4519 0.00900" ,"pydat3 kfdp 4519 1 -413" ,"pydat3 kfdp 4519 2 213" - ,"pydat3 mdme 4520 1 3" ,"pydat3 brat 4520 0.01800" ,"pydat3 kfdp 4520 1 -413" ,"pydat3 kfdp 4520 2 20213" - ,"pydat3 mdme 4521 1 3" ,"pydat3 brat 4521 0.01500" ,"pydat3 kfdp 4521 1 -411" ,"pydat3 kfdp 4521 2 431" - ,"pydat3 mdme 4522 1 3" ,"pydat3 brat 4522 0.01850" ,"pydat3 kfdp 4522 1 -411" ,"pydat3 kfdp 4522 2 433" - ,"pydat3 mdme 4523 1 3" ,"pydat3 brat 4523 0.01350" ,"pydat3 kfdp 4523 1 -413" ,"pydat3 kfdp 4523 2 431" - ,"pydat3 mdme 4524 1 3" ,"pydat3 brat 4524 0.02500" ,"pydat3 kfdp 4524 1 -413" ,"pydat3 kfdp 4524 2 433" - ,"pydat3 mdme 4525 1 3" ,"pydat3 brat 4525 0.00040" ,"pydat3 kfdp 4525 1 441" ,"pydat3 kfdp 4525 2 311" - ,"pydat3 mdme 4526 1 3" ,"pydat3 brat 4526 0.00070" ,"pydat3 kfdp 4526 1 441" ,"pydat3 kfdp 4526 2 313" - ,"pydat3 mdme 4527 1 1" ,"pydat3 brat 4527 0.00094" ,"pydat3 kfdp 4527 1 443" ,"pydat3 kfdp 4527 2 311" - ,"pydat3 mdme 4528 1 1" ,"pydat3 brat 4528 0.00132" ,"pydat3 kfdp 4528 1 443" ,"pydat3 kfdp 4528 2 313" - ,"pydat3 mdme 4529 1 1" ,"pydat3 brat 4529 0.00013" ,"pydat3 kfdp 4529 1 20443" ,"pydat3 kfdp 4529 2 311" - ,"pydat3 mdme 4530 1 1" ,"pydat3 brat 4530 0.00018" ,"pydat3 kfdp 4530 1 20443" ,"pydat3 kfdp 4530 2 313" - ,"pydat3 mdme 4531 1 3" ,"pydat3 mdme 4531 2 48" ,"pydat3 brat 4531 0.42910" ,"pydat3 kfdp 4531 1 2" ,"pydat3 kfdp 4531 2 -1" ,"pydat3 kfdp 4531 3 -4" ,"pydat3 kfdp 4531 4 1" - ,"pydat3 mdme 4532 1 3" ,"pydat3 mdme 4532 2 13" ,"pydat3 brat 4532 0.08000" ,"pydat3 kfdp 4532 1 2" ,"pydat3 kfdp 4532 2 -4" ,"pydat3 kfdp 4532 3 -1" ,"pydat3 kfdp 4532 4 1" - ,"pydat3 mdme 4533 1 3" ,"pydat3 mdme 4533 2 13" ,"pydat3 brat 4533 0.07000" ,"pydat3 kfdp 4533 1 4" ,"pydat3 kfdp 4533 2 -3" ,"pydat3 kfdp 4533 3 -4" ,"pydat3 kfdp 4533 4 1" - ,"pydat3 mdme 4534 1 3" ,"pydat3 mdme 4534 2 13" ,"pydat3 brat 4534 0.02000" ,"pydat3 kfdp 4534 1 4" ,"pydat3 kfdp 4534 2 -4" ,"pydat3 kfdp 4534 3 -3" ,"pydat3 kfdp 4534 4 1" - ,"pydat3 mdme 4535 1 3" ,"pydat3 mdme 4535 2 42" ,"pydat3 brat 4535 0.01500" ,"pydat3 kfdp 4535 1 2" ,"pydat3 kfdp 4535 2 -1" ,"pydat3 kfdp 4535 3 -2" ,"pydat3 kfdp 4535 4 1" - ,"pydat3 mdme 4536 1 3" ,"pydat3 mdme 4536 2 42" ,"pydat3 brat 4536 0.00500" ,"pydat3 kfdp 4536 1 4" ,"pydat3 kfdp 4536 2 -3" ,"pydat3 kfdp 4536 3 -2" ,"pydat3 kfdp 4536 4 1" - ,"pydat3 mdme 4537 1 1" ,"pydat3 brat 4537 0.00140" ,"pydat3 kfdp 4537 1 443" ,"pydat3 kfdp 4537 2 10313" - ,"pydat3 mdme 4538 1 1" ,"pydat3 brat 4538 0.00003" ,"pydat3 kfdp 4538 1 443" ,"pydat3 kfdp 4538 2 111" - ,"pydat3 mdme 4539 1 1" ,"pydat3 brat 4539 0.00001" ,"pydat3 kfdp 4539 1 443" ,"pydat3 kfdp 4539 2 221" - ,"pydat3 mdme 4540 1 1" ,"pydat3 brat 4540 0.00002" ,"pydat3 kfdp 4540 1 443" ,"pydat3 kfdp 4540 2 113" - ,"pydat3 mdme 4541 1 1" ,"pydat3 brat 4541 0.00002" ,"pydat3 kfdp 4541 1 443" ,"pydat3 kfdp 4541 2 223" - ,"pydat3 mdme 4542 1 1" ,"pydat3 brat 4542 0.00001" ,"pydat3 kfdp 4542 1 443" ,"pydat3 kfdp 4542 2 333" - ,"pydat3 mdme 4543 1 1" ,"pydat3 brat 4543 0.00001" ,"pydat3 kfdp 4543 1 443" ,"pydat3 kfdp 4543 2 331" - ,"pydat3 mdme 4544 1 1" ,"pydat3 brat 4544 0.00029" ,"pydat3 kfdp 4544 1 443" ,"pydat3 kfdp 4544 2 321" ,"pydat3 kfdp 4544 3 -211" - ,"pydat3 mdme 4545 1 1" ,"pydat3 brat 4545 0.00014" ,"pydat3 kfdp 4545 1 443" ,"pydat3 kfdp 4545 2 311" ,"pydat3 kfdp 4545 3 111" - ,"pydat3 mdme 4546 1 1" ,"pydat3 brat 4546 0.00008" ,"pydat3 kfdp 4546 1 443" ,"pydat3 kfdp 4546 2 311" ,"pydat3 kfdp 4546 3 333" - ,"pydat3 mdme 4547 1 1" ,"pydat3 brat 4547 0.00003" ,"pydat3 kfdp 4547 1 443" ,"pydat3 kfdp 4547 2 211" ,"pydat3 kfdp 4547 3 -211" - ,"pydat3 mdme 4548 1 1" ,"pydat3 brat 4548 0.00072" ,"pydat3 kfdp 4548 1 443" ,"pydat3 kfdp 4548 2 323" ,"pydat3 kfdp 4548 3 -211" - ,"pydat3 mdme 4549 1 1" ,"pydat3 brat 4549 0.00036" ,"pydat3 kfdp 4549 1 443" ,"pydat3 kfdp 4549 2 313" ,"pydat3 kfdp 4549 3 111" - ,"pydat3 mdme 4550 1 1" ,"pydat3 brat 4550 0.00058" ,"pydat3 kfdp 4550 1 443" ,"pydat3 kfdp 4550 2 321" ,"pydat3 kfdp 4550 3 -213" - ,"pydat3 mdme 4551 1 1" ,"pydat3 brat 4551 0.00029" ,"pydat3 kfdp 4551 1 443" ,"pydat3 kfdp 4551 2 311" ,"pydat3 kfdp 4551 3 113" - ,"pydat3 mdme 4552 1 1" ,"pydat3 brat 4552 0.00059" ,"pydat3 kfdp 4552 1 443" ,"pydat3 kfdp 4552 2 313" ,"pydat3 kfdp 4552 3 211" ,"pydat3 kfdp 4552 4 -211" - ,"pydat3 mdme 4553 1 1" ,"pydat3 brat 4553 0.00041" ,"pydat3 kfdp 4553 1 443" ,"pydat3 kfdp 4553 2 311" ,"pydat3 kfdp 4553 3 211" ,"pydat3 kfdp 4553 4 -211" - ,"pydat3 mdme 4554 1 1" ,"pydat3 brat 4554 0.00027" ,"pydat3 kfdp 4554 1 443" ,"pydat3 kfdp 4554 2 321" ,"pydat3 kfdp 4554 3 -211" ,"pydat3 kfdp 4554 4 111" - ,"pydat3 mdme 4555 1 1" ,"pydat3 brat 4555 0.00027" ,"pydat3 kfdp 4555 1 443" ,"pydat3 kfdp 4555 2 311" ,"pydat3 kfdp 4555 3 111" ,"pydat3 kfdp 4555 4 111" - ,"pydat3 mdme 4556 1 1" ,"pydat3 brat 4556 0.00021" ,"pydat3 kfdp 4556 1 100443" ,"pydat3 kfdp 4556 2 311" - ,"pydat3 mdme 4557 1 1" ,"pydat3 brat 4557 0.00030" ,"pydat3 kfdp 4557 1 100443" ,"pydat3 kfdp 4557 2 313" - ,"pydat3 mdme 4558 1 1" ,"pydat3 brat 4558 0.00032" ,"pydat3 kfdp 4558 1 100443" ,"pydat3 kfdp 4558 2 10313" - ,"pydat3 mdme 4559 1 1" ,"pydat3 brat 4559 0.00001" ,"pydat3 kfdp 4559 1 100443" ,"pydat3 kfdp 4559 2 111" - ,"pydat3 mdme 4560 1 1" ,"pydat3 brat 4560 0.00007" ,"pydat3 kfdp 4560 1 100443" ,"pydat3 kfdp 4560 2 321" ,"pydat3 kfdp 4560 3 -211" - ,"pydat3 mdme 4561 1 1" ,"pydat3 brat 4561 0.00003" ,"pydat3 kfdp 4561 1 100443" ,"pydat3 kfdp 4561 2 311" ,"pydat3 kfdp 4561 3 111" - ,"pydat3 mdme 4562 1 1" ,"pydat3 brat 4562 0.00002" ,"pydat3 kfdp 4562 1 100443" ,"pydat3 kfdp 4562 2 311" ,"pydat3 kfdp 4562 3 333" - ,"pydat3 mdme 4563 1 1" ,"pydat3 brat 4563 0.00001" ,"pydat3 kfdp 4563 1 100443" ,"pydat3 kfdp 4563 2 211" ,"pydat3 kfdp 4563 3 -211" - ,"pydat3 mdme 4564 1 1" ,"pydat3 brat 4564 0.00016" ,"pydat3 kfdp 4564 1 100443" ,"pydat3 kfdp 4564 2 323" ,"pydat3 kfdp 4564 3 -211" - ,"pydat3 mdme 4565 1 1" ,"pydat3 brat 4565 0.00008" ,"pydat3 kfdp 4565 1 100443" ,"pydat3 kfdp 4565 2 313" ,"pydat3 kfdp 4565 3 111" - ,"pydat3 mdme 4566 1 1" ,"pydat3 brat 4566 0.00013" ,"pydat3 kfdp 4566 1 100443" ,"pydat3 kfdp 4566 2 321" ,"pydat3 kfdp 4566 3 -213" - ,"pydat3 mdme 4567 1 1" ,"pydat3 brat 4567 0.00007" ,"pydat3 kfdp 4567 1 100443" ,"pydat3 kfdp 4567 2 311" ,"pydat3 kfdp 4567 3 113" - ,"pydat3 mdme 4568 1 1" ,"pydat3 brat 4568 0.00013" ,"pydat3 kfdp 4568 1 100443" ,"pydat3 kfdp 4568 2 313" ,"pydat3 kfdp 4568 3 211" ,"pydat3 kfdp 4568 4 -211" - ,"pydat3 mdme 4569 1 1" ,"pydat3 brat 4569 0.00009" ,"pydat3 kfdp 4569 1 100443" ,"pydat3 kfdp 4569 2 311" ,"pydat3 kfdp 4569 3 211" ,"pydat3 kfdp 4569 4 -211" - ,"pydat3 mdme 4570 1 1" ,"pydat3 brat 4570 0.00006" ,"pydat3 kfdp 4570 1 100443" ,"pydat3 kfdp 4570 2 321" ,"pydat3 kfdp 4570 3 -211" ,"pydat3 kfdp 4570 4 111" - ,"pydat3 mdme 4571 1 1" ,"pydat3 brat 4571 0.00006" ,"pydat3 kfdp 4571 1 100443" ,"pydat3 kfdp 4571 2 311" ,"pydat3 kfdp 4571 3 111" ,"pydat3 kfdp 4571 4 111" - ,"pydat3 mdme 4572 1 1" ,"pydat3 brat 4572 0.00019" ,"pydat3 kfdp 4572 1 20443" ,"pydat3 kfdp 4572 2 10313" - ,"pydat3 mdme 4573 1 1" ,"pydat3 brat 4573 0.00004" ,"pydat3 kfdp 4573 1 20443" ,"pydat3 kfdp 4573 2 321" ,"pydat3 kfdp 4573 3 -211" - ,"pydat3 mdme 4574 1 1" ,"pydat3 brat 4574 0.00002" ,"pydat3 kfdp 4574 1 20443" ,"pydat3 kfdp 4574 2 311" ,"pydat3 kfdp 4574 3 111" - ,"pydat3 mdme 4575 1 1" ,"pydat3 brat 4575 0.00001" ,"pydat3 kfdp 4575 1 20443" ,"pydat3 kfdp 4575 2 311" ,"pydat3 kfdp 4575 3 333" - ,"pydat3 mdme 4576 1 1" ,"pydat3 brat 4576 0.00010" ,"pydat3 kfdp 4576 1 20443" ,"pydat3 kfdp 4576 2 323" ,"pydat3 kfdp 4576 3 -211" - ,"pydat3 mdme 4577 1 1" ,"pydat3 brat 4577 0.00005" ,"pydat3 kfdp 4577 1 20443" ,"pydat3 kfdp 4577 2 313" ,"pydat3 kfdp 4577 3 111" - ,"pydat3 mdme 4578 1 1" ,"pydat3 brat 4578 0.00008" ,"pydat3 kfdp 4578 1 20443" ,"pydat3 kfdp 4578 2 321" ,"pydat3 kfdp 4578 3 -213" - ,"pydat3 mdme 4579 1 1" ,"pydat3 brat 4579 0.00004" ,"pydat3 kfdp 4579 1 20443" ,"pydat3 kfdp 4579 2 311" ,"pydat3 kfdp 4579 3 113" - ,"pydat3 mdme 4580 1 1" ,"pydat3 brat 4580 0.00008" ,"pydat3 kfdp 4580 1 20443" ,"pydat3 kfdp 4580 2 313" ,"pydat3 kfdp 4580 3 211" ,"pydat3 kfdp 4580 4 -211" - ,"pydat3 mdme 4581 1 1" ,"pydat3 brat 4581 0.00006" ,"pydat3 kfdp 4581 1 20443" ,"pydat3 kfdp 4581 2 311" ,"pydat3 kfdp 4581 3 211" ,"pydat3 kfdp 4581 4 -211" - ,"pydat3 mdme 4582 1 1" ,"pydat3 brat 4582 0.00004" ,"pydat3 kfdp 4582 1 20443" ,"pydat3 kfdp 4582 2 321" ,"pydat3 kfdp 4582 3 -211" ,"pydat3 kfdp 4582 4 111" - ,"pydat3 mdme 4583 1 1" ,"pydat3 brat 4583 0.00004" ,"pydat3 kfdp 4583 1 20443" ,"pydat3 kfdp 4583 2 311" ,"pydat3 kfdp 4583 3 111" ,"pydat3 kfdp 4583 4 111" - ,"pydat3 mdme 4584 1 1" ,"pydat3 brat 4584 0.00004" ,"pydat3 kfdp 4584 1 445" ,"pydat3 kfdp 4584 2 311" - ,"pydat3 mdme 4585 1 1" ,"pydat3 brat 4585 0.00006" ,"pydat3 kfdp 4585 1 445" ,"pydat3 kfdp 4585 2 313" - ,"pydat3 mdme 4586 1 1" ,"pydat3 brat 4586 0.00006" ,"pydat3 kfdp 4586 1 445" ,"pydat3 kfdp 4586 2 10313" - ,"pydat3 mdme 4587 1 1" ,"pydat3 brat 4587 0.00001" ,"pydat3 kfdp 4587 1 445" ,"pydat3 kfdp 4587 2 321" ,"pydat3 kfdp 4587 3 -211" - ,"pydat3 mdme 4588 1 1" ,"pydat3 brat 4588 0.00001" ,"pydat3 kfdp 4588 1 445" ,"pydat3 kfdp 4588 2 311" ,"pydat3 kfdp 4588 3 111" - ,"pydat3 mdme 4589 1 1" ,"pydat3 brat 4589 0.00003" ,"pydat3 kfdp 4589 1 445" ,"pydat3 kfdp 4589 2 323" ,"pydat3 kfdp 4589 3 -211" - ,"pydat3 mdme 4590 1 1" ,"pydat3 brat 4590 0.00002" ,"pydat3 kfdp 4590 1 445" ,"pydat3 kfdp 4590 2 313" ,"pydat3 kfdp 4590 3 111" - ,"pydat3 mdme 4591 1 1" ,"pydat3 brat 4591 0.00003" ,"pydat3 kfdp 4591 1 445" ,"pydat3 kfdp 4591 2 321" ,"pydat3 kfdp 4591 3 -213" - ,"pydat3 mdme 4592 1 1" ,"pydat3 brat 4592 0.00001" ,"pydat3 kfdp 4592 1 445" ,"pydat3 kfdp 4592 2 311" ,"pydat3 kfdp 4592 3 113" - ,"pydat3 mdme 4593 1 1" ,"pydat3 brat 4593 0.00003" ,"pydat3 kfdp 4593 1 445" ,"pydat3 kfdp 4593 2 313" ,"pydat3 kfdp 4593 3 211" ,"pydat3 kfdp 4593 4 -211" - ,"pydat3 mdme 4594 1 1" ,"pydat3 brat 4594 0.00002" ,"pydat3 kfdp 4594 1 445" ,"pydat3 kfdp 4594 2 311" ,"pydat3 kfdp 4594 3 211" ,"pydat3 kfdp 4594 4 -211" - ,"pydat3 mdme 4595 1 1" ,"pydat3 brat 4595 0.00001" ,"pydat3 kfdp 4595 1 445" ,"pydat3 kfdp 4595 2 321" ,"pydat3 kfdp 4595 3 -211" ,"pydat3 kfdp 4595 4 111" - ,"pydat3 mdme 4596 1 1" ,"pydat3 brat 4596 0.00001" ,"pydat3 kfdp 4596 1 445" ,"pydat3 kfdp 4596 2 311" ,"pydat3 kfdp 4596 3 111" ,"pydat3 kfdp 4596 4 111" -# B+ decays -# repoint to place 4601, 87 decays including new ones - ,"pydat3 mdcy 137 2 4601" ,"pydat3 mdcy 137 3 87" ,"pydat3 mdcy 137 1 1" - ,"pydat3 mdme 4601 1 3" ,"pydat3 mdme 4601 2 42" ,"pydat3 brat 4601 0.02000" ,"pydat3 kfdp 4601 1 12" ,"pydat3 kfdp 4601 2 -11" ,"pydat3 kfdp 4601 3 -421" - ,"pydat3 mdme 4602 1 3" ,"pydat3 mdme 4602 2 42" ,"pydat3 brat 4602 0.05500" ,"pydat3 kfdp 4602 1 12" ,"pydat3 kfdp 4602 2 -11" ,"pydat3 kfdp 4602 3 -423" - ,"pydat3 mdme 4603 1 3" ,"pydat3 mdme 4603 2 42" ,"pydat3 brat 4603 0.00500" ,"pydat3 kfdp 4603 1 12" ,"pydat3 kfdp 4603 2 -11" ,"pydat3 kfdp 4603 3 -10423" - ,"pydat3 mdme 4604 1 3" ,"pydat3 mdme 4604 2 42" ,"pydat3 brat 4604 0.00500" ,"pydat3 kfdp 4604 1 12" ,"pydat3 kfdp 4604 2 -11" ,"pydat3 kfdp 4604 3 -10421" - ,"pydat3 mdme 4605 1 3" ,"pydat3 mdme 4605 2 42" ,"pydat3 brat 4605 0.00800" ,"pydat3 kfdp 4605 1 12" ,"pydat3 kfdp 4605 2 -11" ,"pydat3 kfdp 4605 3 -20423" - ,"pydat3 mdme 4606 1 3" ,"pydat3 mdme 4606 2 42" ,"pydat3 brat 4606 0.01200" ,"pydat3 kfdp 4606 1 12" ,"pydat3 kfdp 4606 2 -11" ,"pydat3 kfdp 4606 3 -425" - ,"pydat3 mdme 4607 1 3" ,"pydat3 mdme 4607 2 42" ,"pydat3 brat 4607 0.02000" ,"pydat3 kfdp 4607 1 14" ,"pydat3 kfdp 4607 2 -13" ,"pydat3 kfdp 4607 3 -421" - ,"pydat3 mdme 4608 1 3" ,"pydat3 mdme 4608 2 42" ,"pydat3 brat 4608 0.05500" ,"pydat3 kfdp 4608 1 14" ,"pydat3 kfdp 4608 2 -13" ,"pydat3 kfdp 4608 3 -423" - ,"pydat3 mdme 4609 1 3" ,"pydat3 mdme 4609 2 42" ,"pydat3 brat 4609 0.00500" ,"pydat3 kfdp 4609 1 14" ,"pydat3 kfdp 4609 2 -13" ,"pydat3 kfdp 4609 3 -10423" - ,"pydat3 mdme 4610 1 3" ,"pydat3 mdme 4610 2 42" ,"pydat3 brat 4610 0.00500" ,"pydat3 kfdp 4610 1 14" ,"pydat3 kfdp 4610 2 -13" ,"pydat3 kfdp 4610 3 -10421" - ,"pydat3 mdme 4611 1 3" ,"pydat3 mdme 4611 2 42" ,"pydat3 brat 4611 0.00800" ,"pydat3 kfdp 4611 1 14" ,"pydat3 kfdp 4611 2 -13" ,"pydat3 kfdp 4611 3 -20423" - ,"pydat3 mdme 4612 1 3" ,"pydat3 mdme 4612 2 42" ,"pydat3 brat 4612 0.01200" ,"pydat3 kfdp 4612 1 14" ,"pydat3 kfdp 4612 2 -13" ,"pydat3 kfdp 4612 3 -425" - ,"pydat3 mdme 4613 1 3" ,"pydat3 mdme 4613 2 42" ,"pydat3 brat 4613 0.01000" ,"pydat3 kfdp 4613 1 16" ,"pydat3 kfdp 4613 2 -15" ,"pydat3 kfdp 4613 3 -421" - ,"pydat3 mdme 4614 1 3" ,"pydat3 mdme 4614 2 42" ,"pydat3 brat 4614 0.03000" ,"pydat3 kfdp 4614 1 16" ,"pydat3 kfdp 4614 2 -15" ,"pydat3 kfdp 4614 3 -423" - ,"pydat3 mdme 4615 1 3" ,"pydat3 brat 4615 0.00350" ,"pydat3 kfdp 4615 1 -421" ,"pydat3 kfdp 4615 2 211" - ,"pydat3 mdme 4616 1 3" ,"pydat3 brat 4616 0.01100" ,"pydat3 kfdp 4616 1 -421" ,"pydat3 kfdp 4616 2 213" - ,"pydat3 mdme 4617 1 3" ,"pydat3 brat 4617 0.00550" ,"pydat3 kfdp 4617 1 -421" ,"pydat3 kfdp 4617 2 20213" - ,"pydat3 mdme 4618 1 3" ,"pydat3 brat 4618 0.00420" ,"pydat3 kfdp 4618 1 -423" ,"pydat3 kfdp 4618 2 211" - ,"pydat3 mdme 4619 1 3" ,"pydat3 brat 4619 0.00900" ,"pydat3 kfdp 4619 1 -423" ,"pydat3 kfdp 4619 2 213" - ,"pydat3 mdme 4620 1 3" ,"pydat3 brat 4620 0.01800" ,"pydat3 kfdp 4620 1 -423" ,"pydat3 kfdp 4620 2 20213" - ,"pydat3 mdme 4621 1 3" ,"pydat3 brat 4621 0.01500" ,"pydat3 kfdp 4621 1 -421" ,"pydat3 kfdp 4621 2 431" - ,"pydat3 mdme 4622 1 3" ,"pydat3 brat 4622 0.01850" ,"pydat3 kfdp 4622 1 -421" ,"pydat3 kfdp 4622 2 433" - ,"pydat3 mdme 4623 1 3" ,"pydat3 brat 4623 0.01350" ,"pydat3 kfdp 4623 1 -423" ,"pydat3 kfdp 4623 2 431" - ,"pydat3 mdme 4624 1 3" ,"pydat3 brat 4624 0.02500" ,"pydat3 kfdp 4624 1 -423" ,"pydat3 kfdp 4624 2 433" - ,"pydat3 mdme 4625 1 3" ,"pydat3 brat 4625 0.00040" ,"pydat3 kfdp 4625 1 441" ,"pydat3 kfdp 4625 2 321" - ,"pydat3 mdme 4626 1 3" ,"pydat3 brat 4626 0.00070" ,"pydat3 kfdp 4626 1 441" ,"pydat3 kfdp 4626 2 323" - ,"pydat3 mdme 4627 1 1" ,"pydat3 brat 4627 0.00094" ,"pydat3 kfdp 4627 1 443" ,"pydat3 kfdp 4627 2 321" - ,"pydat3 mdme 4628 1 1" ,"pydat3 brat 4628 0.00132" ,"pydat3 kfdp 4628 1 443" ,"pydat3 kfdp 4628 2 323" - ,"pydat3 mdme 4629 1 1" ,"pydat3 brat 4629 0.00013" ,"pydat3 kfdp 4629 1 20443" ,"pydat3 kfdp 4629 2 321" - ,"pydat3 mdme 4630 1 1" ,"pydat3 brat 4630 0.00018" ,"pydat3 kfdp 4630 1 20443" ,"pydat3 kfdp 4630 2 323" - ,"pydat3 mdme 4631 1 3" ,"pydat3 mdme 4631 2 48" ,"pydat3 brat 4631 0.42910" ,"pydat3 kfdp 4631 1 2" ,"pydat3 kfdp 4631 2 -1" ,"pydat3 kfdp 4631 3 -4" ,"pydat3 kfdp 4631 4 2" - ,"pydat3 mdme 4632 1 3" ,"pydat3 mdme 4632 2 13" ,"pydat3 brat 4632 0.08000" ,"pydat3 kfdp 4632 1 2" ,"pydat3 kfdp 4632 2 -4" ,"pydat3 kfdp 4632 3 -1" ,"pydat3 kfdp 4632 4 2" - ,"pydat3 mdme 4633 1 3" ,"pydat3 mdme 4633 2 13" ,"pydat3 brat 4633 0.07000" ,"pydat3 kfdp 4633 1 4" ,"pydat3 kfdp 4633 2 -3" ,"pydat3 kfdp 4633 3 -4" ,"pydat3 kfdp 4633 4 2" - ,"pydat3 mdme 4634 1 3" ,"pydat3 mdme 4634 2 13" ,"pydat3 brat 4634 0.02000" ,"pydat3 kfdp 4634 1 4" ,"pydat3 kfdp 4634 2 -4" ,"pydat3 kfdp 4634 3 -3" ,"pydat3 kfdp 4634 4 2" - ,"pydat3 mdme 4635 1 3" ,"pydat3 mdme 4635 2 42" ,"pydat3 brat 4635 0.01500" ,"pydat3 kfdp 4635 1 2" ,"pydat3 kfdp 4635 2 -1" ,"pydat3 kfdp 4635 3 -2" ,"pydat3 kfdp 4635 4 2" - ,"pydat3 mdme 4636 1 3" ,"pydat3 mdme 4636 2 42" ,"pydat3 brat 4636 0.00500" ,"pydat3 kfdp 4636 1 4" ,"pydat3 kfdp 4636 2 -3" ,"pydat3 kfdp 4636 3 -2" ,"pydat3 kfdp 4636 4 2" - ,"pydat3 mdme 4637 1 1" ,"pydat3 brat 4637 0.00140" ,"pydat3 kfdp 4637 1 443" ,"pydat3 kfdp 4637 2 10323" - ,"pydat3 mdme 4638 1 1" ,"pydat3 brat 4638 0.00003" ,"pydat3 kfdp 4638 1 443" ,"pydat3 kfdp 4638 2 211" - ,"pydat3 mdme 4639 1 1" ,"pydat3 brat 4639 0.00002" ,"pydat3 kfdp 4639 1 443" ,"pydat3 kfdp 4639 2 213" - ,"pydat3 mdme 4640 1 1" ,"pydat3 brat 4640 0.00029" ,"pydat3 kfdp 4640 1 443" ,"pydat3 kfdp 4640 2 311" ,"pydat3 kfdp 4640 3 211" - ,"pydat3 mdme 4641 1 1" ,"pydat3 brat 4641 0.00014" ,"pydat3 kfdp 4641 1 443" ,"pydat3 kfdp 4641 2 321" ,"pydat3 kfdp 4641 3 111" - ,"pydat3 mdme 4642 1 1" ,"pydat3 brat 4642 0.00005" ,"pydat3 kfdp 4642 1 443" ,"pydat3 kfdp 4642 2 321" ,"pydat3 kfdp 4642 3 333" - ,"pydat3 mdme 4643 1 1" ,"pydat3 brat 4643 0.00076" ,"pydat3 kfdp 4643 1 443" ,"pydat3 kfdp 4643 2 313" ,"pydat3 kfdp 4643 3 211" - ,"pydat3 mdme 4644 1 1" ,"pydat3 brat 4644 0.00038" ,"pydat3 kfdp 4644 1 443" ,"pydat3 kfdp 4644 2 323" ,"pydat3 kfdp 4644 3 111" - ,"pydat3 mdme 4645 1 1" ,"pydat3 brat 4645 0.00058" ,"pydat3 kfdp 4645 1 443" ,"pydat3 kfdp 4645 2 311" ,"pydat3 kfdp 4645 3 213" - ,"pydat3 mdme 4646 1 1" ,"pydat3 brat 4646 0.00029" ,"pydat3 kfdp 4646 1 443" ,"pydat3 kfdp 4646 2 321" ,"pydat3 kfdp 4646 3 113" - ,"pydat3 mdme 4647 1 1" ,"pydat3 brat 4647 0.00001" ,"pydat3 kfdp 4647 1 443" ,"pydat3 kfdp 4647 2 -3122" ,"pydat3 kfdp 4647 3 2212" - ,"pydat3 mdme 4648 1 1" ,"pydat3 brat 4648 0.00069" ,"pydat3 kfdp 4648 1 443" ,"pydat3 kfdp 4648 2 321" ,"pydat3 kfdp 4648 3 -211" ,"pydat3 kfdp 4648 4 211" - ,"pydat3 mdme 4649 1 1" ,"pydat3 brat 4649 0.00045" ,"pydat3 kfdp 4649 1 443" ,"pydat3 kfdp 4649 2 321" ,"pydat3 kfdp 4649 3 111" ,"pydat3 kfdp 4649 4 111" - ,"pydat3 mdme 4650 1 1" ,"pydat3 brat 4650 0.00045" ,"pydat3 kfdp 4650 1 443" ,"pydat3 kfdp 4650 2 311" ,"pydat3 kfdp 4650 3 211" ,"pydat3 kfdp 4650 4 111" - ,"pydat3 mdme 4651 1 1" ,"pydat3 brat 4651 0.00021" ,"pydat3 kfdp 4651 1 100443" ,"pydat3 kfdp 4651 2 321" - ,"pydat3 mdme 4652 1 1" ,"pydat3 brat 4652 0.00030" ,"pydat3 kfdp 4652 1 100443" ,"pydat3 kfdp 4652 2 323" - ,"pydat3 mdme 4653 1 1" ,"pydat3 brat 4653 0.00032" ,"pydat3 kfdp 4653 1 100443" ,"pydat3 kfdp 4653 2 10323" - ,"pydat3 mdme 4654 1 1" ,"pydat3 brat 4654 0.00001" ,"pydat3 kfdp 4654 1 100443" ,"pydat3 kfdp 4654 2 211" - ,"pydat3 mdme 4655 1 1" ,"pydat3 brat 4655 0.00007" ,"pydat3 kfdp 4655 1 100443" ,"pydat3 kfdp 4655 2 311" ,"pydat3 kfdp 4655 3 211" - ,"pydat3 mdme 4656 1 1" ,"pydat3 brat 4656 0.00003" ,"pydat3 kfdp 4656 1 100443" ,"pydat3 kfdp 4656 2 321" ,"pydat3 kfdp 4656 3 111" - ,"pydat3 mdme 4657 1 1" ,"pydat3 brat 4657 0.00001" ,"pydat3 kfdp 4657 1 100443" ,"pydat3 kfdp 4657 2 321" ,"pydat3 kfdp 4657 3 333" - ,"pydat3 mdme 4658 1 1" ,"pydat3 brat 4658 0.00017" ,"pydat3 kfdp 4658 1 100443" ,"pydat3 kfdp 4658 2 313" ,"pydat3 kfdp 4658 3 211" - ,"pydat3 mdme 4659 1 1" ,"pydat3 brat 4659 0.00009" ,"pydat3 kfdp 4659 1 100443" ,"pydat3 kfdp 4659 2 323" ,"pydat3 kfdp 4659 3 111" - ,"pydat3 mdme 4660 1 1" ,"pydat3 brat 4660 0.00013" ,"pydat3 kfdp 4660 1 100443" ,"pydat3 kfdp 4660 2 311" ,"pydat3 kfdp 4660 3 213" - ,"pydat3 mdme 4661 1 1" ,"pydat3 brat 4661 0.00007" ,"pydat3 kfdp 4661 1 100443" ,"pydat3 kfdp 4661 2 321" ,"pydat3 kfdp 4661 3 113" - ,"pydat3 mdme 4662 1 1" ,"pydat3 brat 4662 0.00016" ,"pydat3 kfdp 4662 1 100443" ,"pydat3 kfdp 4662 2 321" ,"pydat3 kfdp 4662 3 -211" ,"pydat3 kfdp 4662 4 211" - ,"pydat3 mdme 4663 1 1" ,"pydat3 brat 4663 0.00010" ,"pydat3 kfdp 4663 1 100443" ,"pydat3 kfdp 4663 2 321" ,"pydat3 kfdp 4663 3 111" ,"pydat3 kfdp 4663 4 111" - ,"pydat3 mdme 4664 1 1" ,"pydat3 brat 4664 0.00010" ,"pydat3 kfdp 4664 1 100443" ,"pydat3 kfdp 4664 2 311" ,"pydat3 kfdp 4664 3 211" ,"pydat3 kfdp 4664 4 111" - ,"pydat3 mdme 4665 1 1" ,"pydat3 brat 4665 0.00019" ,"pydat3 kfdp 4665 1 20443" ,"pydat3 kfdp 4665 2 10323" - ,"pydat3 mdme 4666 1 1" ,"pydat3 brat 4666 0.00004" ,"pydat3 kfdp 4666 1 20443" ,"pydat3 kfdp 4666 2 311" ,"pydat3 kfdp 4666 3 211" - ,"pydat3 mdme 4667 1 1" ,"pydat3 brat 4667 0.00002" ,"pydat3 kfdp 4667 1 20443" ,"pydat3 kfdp 4667 2 321" ,"pydat3 kfdp 4667 3 111" - ,"pydat3 mdme 4668 1 1" ,"pydat3 brat 4668 0.00001" ,"pydat3 kfdp 4668 1 20443" ,"pydat3 kfdp 4668 2 321" ,"pydat3 kfdp 4668 3 333" - ,"pydat3 mdme 4669 1 1" ,"pydat3 brat 4669 0.00010" ,"pydat3 kfdp 4669 1 20443" ,"pydat3 kfdp 4669 2 313" ,"pydat3 kfdp 4669 3 211" - ,"pydat3 mdme 4670 1 1" ,"pydat3 brat 4670 0.00005" ,"pydat3 kfdp 4670 1 20443" ,"pydat3 kfdp 4670 2 323" ,"pydat3 kfdp 4670 3 111" - ,"pydat3 mdme 4671 1 1" ,"pydat3 brat 4671 0.00008" ,"pydat3 kfdp 4671 1 20443" ,"pydat3 kfdp 4671 2 311" ,"pydat3 kfdp 4671 3 213" - ,"pydat3 mdme 4672 1 1" ,"pydat3 brat 4672 0.00004" ,"pydat3 kfdp 4672 1 20443" ,"pydat3 kfdp 4672 2 321" ,"pydat3 kfdp 4672 3 113" - ,"pydat3 mdme 4673 1 1" ,"pydat3 brat 4673 0.00009" ,"pydat3 kfdp 4673 1 20443" ,"pydat3 kfdp 4673 2 321" ,"pydat3 kfdp 4673 3 -211" ,"pydat3 kfdp 4673 4 211" - ,"pydat3 mdme 4674 1 1" ,"pydat3 brat 4674 0.00006" ,"pydat3 kfdp 4674 1 20443" ,"pydat3 kfdp 4674 2 321" ,"pydat3 kfdp 4674 3 111" ,"pydat3 kfdp 4674 4 111" - ,"pydat3 mdme 4675 1 1" ,"pydat3 brat 4675 0.00006" ,"pydat3 kfdp 4675 1 20443" ,"pydat3 kfdp 4675 2 311" ,"pydat3 kfdp 4675 3 211" ,"pydat3 kfdp 4675 4 111" - ,"pydat3 mdme 4676 1 1" ,"pydat3 brat 4676 0.00004" ,"pydat3 kfdp 4676 1 443" ,"pydat3 kfdp 4676 2 321" - ,"pydat3 mdme 4677 1 1" ,"pydat3 brat 4677 0.00006" ,"pydat3 kfdp 4677 1 443" ,"pydat3 kfdp 4677 2 323" - ,"pydat3 mdme 4678 1 1" ,"pydat3 brat 4678 0.00006" ,"pydat3 kfdp 4678 1 443" ,"pydat3 kfdp 4678 2 10323" - ,"pydat3 mdme 4679 1 1" ,"pydat3 brat 4679 0.00001" ,"pydat3 kfdp 4679 1 443" ,"pydat3 kfdp 4679 2 311" ,"pydat3 kfdp 4679 3 211" - ,"pydat3 mdme 4680 1 1" ,"pydat3 brat 4680 0.00001" ,"pydat3 kfdp 4680 1 443" ,"pydat3 kfdp 4680 2 321" ,"pydat3 kfdp 4680 3 111" - ,"pydat3 mdme 4681 1 1" ,"pydat3 brat 4681 0.00003" ,"pydat3 kfdp 4681 1 443" ,"pydat3 kfdp 4681 2 313" ,"pydat3 kfdp 4681 3 211" - ,"pydat3 mdme 4682 1 1" ,"pydat3 brat 4682 0.00002" ,"pydat3 kfdp 4682 1 443" ,"pydat3 kfdp 4682 2 323" ,"pydat3 kfdp 4682 3 111" - ,"pydat3 mdme 4683 1 1" ,"pydat3 brat 4683 0.00002" ,"pydat3 kfdp 4683 1 443" ,"pydat3 kfdp 4683 2 311" ,"pydat3 kfdp 4683 3 213" - ,"pydat3 mdme 4684 1 1" ,"pydat3 brat 4684 0.00001" ,"pydat3 kfdp 4684 1 443" ,"pydat3 kfdp 4684 2 321" ,"pydat3 kfdp 4684 3 113" - ,"pydat3 mdme 4685 1 1" ,"pydat3 brat 4685 0.00003" ,"pydat3 kfdp 4685 1 443" ,"pydat3 kfdp 4685 2 321" ,"pydat3 kfdp 4685 3 -211" ,"pydat3 kfdp 4685 4 211" - ,"pydat3 mdme 4686 1 1" ,"pydat3 brat 4686 0.00002" ,"pydat3 kfdp 4686 1 443" ,"pydat3 kfdp 4686 2 321" ,"pydat3 kfdp 4686 3 111" ,"pydat3 kfdp 4686 4 111" - ,"pydat3 mdme 4687 1 1" ,"pydat3 brat 4687 0.00002" ,"pydat3 kfdp 4687 1 443" ,"pydat3 kfdp 4687 2 311" ,"pydat3 kfdp 4687 3 211" ,"pydat3 kfdp 4687 4 111" -# Bs decays -# repoint to place 4701, 73 decays including new ones - ,"pydat3 mdcy 140 2 4701" ,"pydat3 mdcy 140 3 73" ,"pydat3 mdcy 140 1 1" - ,"pydat3 mdme 4701 1 3" ,"pydat3 mdme 4701 2 42" ,"pydat3 brat 4701 0.02000" ,"pydat3 kfdp 4701 1 12" ,"pydat3 kfdp 4701 2 -11" ,"pydat3 kfdp 4701 3 -431" - ,"pydat3 mdme 4702 1 3" ,"pydat3 mdme 4702 2 42" ,"pydat3 brat 4702 0.05500" ,"pydat3 kfdp 4702 1 12" ,"pydat3 kfdp 4702 2 -11" ,"pydat3 kfdp 4702 3 -433" - ,"pydat3 mdme 4703 1 3" ,"pydat3 mdme 4703 2 42" ,"pydat3 brat 4703 0.00500" ,"pydat3 kfdp 4703 1 12" ,"pydat3 kfdp 4703 2 -11" ,"pydat3 kfdp 4703 3 -10433" - ,"pydat3 mdme 4704 1 3" ,"pydat3 mdme 4704 2 42" ,"pydat3 brat 4704 0.00500" ,"pydat3 kfdp 4704 1 12" ,"pydat3 kfdp 4704 2 -11" ,"pydat3 kfdp 4704 3 -10431" - ,"pydat3 mdme 4705 1 3" ,"pydat3 mdme 4705 2 42" ,"pydat3 brat 4705 0.00800" ,"pydat3 kfdp 4705 1 12" ,"pydat3 kfdp 4705 2 -11" ,"pydat3 kfdp 4705 3 -20433" - ,"pydat3 mdme 4706 1 3" ,"pydat3 mdme 4706 2 42" ,"pydat3 brat 4706 0.01200" ,"pydat3 kfdp 4706 1 12" ,"pydat3 kfdp 4706 2 -11" ,"pydat3 kfdp 4706 3 -435" - ,"pydat3 mdme 4707 1 3" ,"pydat3 mdme 4707 2 42" ,"pydat3 brat 4707 0.02000" ,"pydat3 kfdp 4707 1 14" ,"pydat3 kfdp 4707 2 -13" ,"pydat3 kfdp 4707 3 -431" - ,"pydat3 mdme 4708 1 3" ,"pydat3 mdme 4708 2 42" ,"pydat3 brat 4708 0.05500" ,"pydat3 kfdp 4708 1 14" ,"pydat3 kfdp 4708 2 -13" ,"pydat3 kfdp 4708 3 -433" - ,"pydat3 mdme 4709 1 3" ,"pydat3 mdme 4709 2 42" ,"pydat3 brat 4709 0.00500" ,"pydat3 kfdp 4709 1 14" ,"pydat3 kfdp 4709 2 -13" ,"pydat3 kfdp 4709 3 -10433" - ,"pydat3 mdme 4710 1 3" ,"pydat3 mdme 4710 2 42" ,"pydat3 brat 4710 0.00500" ,"pydat3 kfdp 4710 1 14" ,"pydat3 kfdp 4710 2 -13" ,"pydat3 kfdp 4710 3 -10431" - ,"pydat3 mdme 4711 1 3" ,"pydat3 mdme 4711 2 42" ,"pydat3 brat 4711 0.00800" ,"pydat3 kfdp 4711 1 14" ,"pydat3 kfdp 4711 2 -13" ,"pydat3 kfdp 4711 3 -20433" - ,"pydat3 mdme 4712 1 3" ,"pydat3 mdme 4712 2 42" ,"pydat3 brat 4712 0.01200" ,"pydat3 kfdp 4712 1 14" ,"pydat3 kfdp 4712 2 -13" ,"pydat3 kfdp 4712 3 -435" - ,"pydat3 mdme 4713 1 3" ,"pydat3 mdme 4713 2 42" ,"pydat3 brat 4713 0.01000" ,"pydat3 kfdp 4713 1 16" ,"pydat3 kfdp 4713 2 -15" ,"pydat3 kfdp 4713 3 -431" - ,"pydat3 mdme 4714 1 3" ,"pydat3 mdme 4714 2 42" ,"pydat3 brat 4714 0.03000" ,"pydat3 kfdp 4714 1 16" ,"pydat3 kfdp 4714 2 -15" ,"pydat3 kfdp 4714 3 -433" - ,"pydat3 mdme 4715 1 3" ,"pydat3 brat 4715 0.00350" ,"pydat3 kfdp 4715 1 -431" ,"pydat3 kfdp 4715 2 211" - ,"pydat3 mdme 4716 1 3" ,"pydat3 brat 4716 0.01100" ,"pydat3 kfdp 4716 1 -431" ,"pydat3 kfdp 4716 2 213" - ,"pydat3 mdme 4717 1 3" ,"pydat3 brat 4717 0.00550" ,"pydat3 kfdp 4717 1 -431" ,"pydat3 kfdp 4717 2 20213" - ,"pydat3 mdme 4718 1 3" ,"pydat3 brat 4718 0.00420" ,"pydat3 kfdp 4718 1 -433" ,"pydat3 kfdp 4718 2 211" - ,"pydat3 mdme 4719 1 3" ,"pydat3 brat 4719 0.00900" ,"pydat3 kfdp 4719 1 -433" ,"pydat3 kfdp 4719 2 213" - ,"pydat3 mdme 4720 1 3" ,"pydat3 brat 4720 0.01800" ,"pydat3 kfdp 4720 1 -433" ,"pydat3 kfdp 4720 2 20213" - ,"pydat3 mdme 4721 1 3" ,"pydat3 brat 4721 0.01500" ,"pydat3 kfdp 4721 1 -431" ,"pydat3 kfdp 4721 2 431" - ,"pydat3 mdme 4722 1 3" ,"pydat3 brat 4722 0.01850" ,"pydat3 kfdp 4722 1 -431" ,"pydat3 kfdp 4722 2 433" - ,"pydat3 mdme 4723 1 3" ,"pydat3 brat 4723 0.01350" ,"pydat3 kfdp 4723 1 -433" ,"pydat3 kfdp 4723 2 431" - ,"pydat3 mdme 4724 1 3" ,"pydat3 brat 4724 0.02500" ,"pydat3 kfdp 4724 1 -433" ,"pydat3 kfdp 4724 2 433" - ,"pydat3 mdme 4725 1 3" ,"pydat3 brat 4725 0.00020" ,"pydat3 kfdp 4725 1 441" ,"pydat3 kfdp 4725 2 221" - ,"pydat3 mdme 4726 1 3" ,"pydat3 brat 4726 0.00020" ,"pydat3 kfdp 4726 1 441" ,"pydat3 kfdp 4726 2 331" - ,"pydat3 mdme 4727 1 3" ,"pydat3 brat 4727 0.00070" ,"pydat3 kfdp 4727 1 441" ,"pydat3 kfdp 4727 2 333" - ,"pydat3 mdme 4728 1 1" ,"pydat3 brat 4728 0.00012" ,"pydat3 kfdp 4728 1 443" ,"pydat3 kfdp 4728 2 221" - ,"pydat3 mdme 4729 1 1" ,"pydat3 brat 4729 0.00034" ,"pydat3 kfdp 4729 1 443" ,"pydat3 kfdp 4729 2 331" - ,"pydat3 mdme 4730 1 1" ,"pydat3 brat 4730 0.00093" ,"pydat3 kfdp 4730 1 443" ,"pydat3 kfdp 4730 2 333" - ,"pydat3 mdme 4731 1 1" ,"pydat3 brat 4731 0.00002" ,"pydat3 kfdp 4731 1 20443" ,"pydat3 kfdp 4731 2 221" - ,"pydat3 mdme 4732 1 1" ,"pydat3 brat 4732 0.00005" ,"pydat3 kfdp 4732 1 20443" ,"pydat3 kfdp 4732 2 331" - ,"pydat3 mdme 4733 1 1" ,"pydat3 brat 4733 0.00013" ,"pydat3 kfdp 4733 1 20443" ,"pydat3 kfdp 4733 2 333" - ,"pydat3 mdme 4734 1 3" ,"pydat3 mdme 4734 2 48" ,"pydat3 brat 4734 0.42910" ,"pydat3 kfdp 4734 1 2" ,"pydat3 kfdp 4734 2 -1" ,"pydat3 kfdp 4734 3 -4" ,"pydat3 kfdp 4734 4 3" - ,"pydat3 mdme 4735 1 3" ,"pydat3 mdme 4735 2 13" ,"pydat3 brat 4735 0.08000" ,"pydat3 kfdp 4735 1 2" ,"pydat3 kfdp 4735 2 -4" ,"pydat3 kfdp 4735 3 -1" ,"pydat3 kfdp 4735 4 3" - ,"pydat3 mdme 4736 1 3" ,"pydat3 mdme 4736 2 13" ,"pydat3 brat 4736 0.07000" ,"pydat3 kfdp 4736 1 4" ,"pydat3 kfdp 4736 2 -3" ,"pydat3 kfdp 4736 3 -4" ,"pydat3 kfdp 4736 4 3" - ,"pydat3 mdme 4737 1 3" ,"pydat3 mdme 4737 2 13" ,"pydat3 brat 4737 0.02000" ,"pydat3 kfdp 4737 1 4" ,"pydat3 kfdp 4737 2 -4" ,"pydat3 kfdp 4737 3 -3" ,"pydat3 kfdp 4737 4 3" - ,"pydat3 mdme 4738 1 3" ,"pydat3 mdme 4738 2 42" ,"pydat3 brat 4738 0.01500" ,"pydat3 kfdp 4738 1 2" ,"pydat3 kfdp 4738 2 -1" ,"pydat3 kfdp 4738 3 -2" ,"pydat3 kfdp 4738 4 3" - ,"pydat3 mdme 4739 1 3" ,"pydat3 mdme 4739 2 42" ,"pydat3 brat 4739 0.00500" ,"pydat3 kfdp 4739 1 4" ,"pydat3 kfdp 4739 2 -3" ,"pydat3 kfdp 4739 3 -2" ,"pydat3 kfdp 4739 4 3" - ,"pydat3 mdme 4740 1 1" ,"pydat3 brat 4740 0.00130" ,"pydat3 kfdp 4740 1 443" ,"pydat3 kfdp 4740 2 321" ,"pydat3 kfdp 4740 3 -321" - ,"pydat3 mdme 4741 1 1" ,"pydat3 brat 4741 0.00130" ,"pydat3 kfdp 4741 1 443" ,"pydat3 kfdp 4741 2 311" ,"pydat3 kfdp 4741 3 -311" - ,"pydat3 mdme 4742 1 1" ,"pydat3 brat 4742 0.00012" ,"pydat3 kfdp 4742 1 443" ,"pydat3 kfdp 4742 2 221" ,"pydat3 kfdp 4742 3 111" - ,"pydat3 mdme 4743 1 1" ,"pydat3 brat 4743 0.00034" ,"pydat3 kfdp 4743 1 443" ,"pydat3 kfdp 4743 2 331" ,"pydat3 kfdp 4743 3 111" - ,"pydat3 mdme 4744 1 1" ,"pydat3 brat 4744 0.00093" ,"pydat3 kfdp 4744 1 443" ,"pydat3 kfdp 4744 2 333" ,"pydat3 kfdp 4744 3 111" - ,"pydat3 mdme 4745 1 1" ,"pydat3 brat 4745 0.00130" ,"pydat3 kfdp 4745 1 443" ,"pydat3 kfdp 4745 2 321" ,"pydat3 kfdp 4745 3 -321" ,"pydat3 kfdp 4745 4 111" - ,"pydat3 mdme 4746 1 1" ,"pydat3 brat 4746 0.00130" ,"pydat3 kfdp 4746 1 443" ,"pydat3 kfdp 4746 2 311" ,"pydat3 kfdp 4746 3 -311" ,"pydat3 kfdp 4746 4 111" - ,"pydat3 mdme 4747 1 1" ,"pydat3 brat 4747 0.00003" ,"pydat3 kfdp 4747 1 100443" ,"pydat3 kfdp 4747 2 221" - ,"pydat3 mdme 4748 1 1" ,"pydat3 brat 4748 0.00008" ,"pydat3 kfdp 4748 1 100443" ,"pydat3 kfdp 4748 2 331" - ,"pydat3 mdme 4749 1 1" ,"pydat3 brat 4749 0.00021" ,"pydat3 kfdp 4749 1 100443" ,"pydat3 kfdp 4749 2 333" - ,"pydat3 mdme 4750 1 1" ,"pydat3 brat 4750 0.00030" ,"pydat3 kfdp 4750 1 100443" ,"pydat3 kfdp 4750 2 321" ,"pydat3 kfdp 4750 3 -321" - ,"pydat3 mdme 4751 1 1" ,"pydat3 brat 4751 0.00030" ,"pydat3 kfdp 4751 1 100443" ,"pydat3 kfdp 4751 2 311" ,"pydat3 kfdp 4751 3 -311" - ,"pydat3 mdme 4752 1 1" ,"pydat3 brat 4752 0.00003" ,"pydat3 kfdp 4752 1 100443" ,"pydat3 kfdp 4752 2 221" ,"pydat3 kfdp 4752 3 111" - ,"pydat3 mdme 4753 1 1" ,"pydat3 brat 4753 0.00008" ,"pydat3 kfdp 4753 1 100443" ,"pydat3 kfdp 4753 2 331" ,"pydat3 kfdp 4753 3 111" - ,"pydat3 mdme 4754 1 1" ,"pydat3 brat 4754 0.00021" ,"pydat3 kfdp 4754 1 100443" ,"pydat3 kfdp 4754 2 333" ,"pydat3 kfdp 4754 3 111" - ,"pydat3 mdme 4755 1 1" ,"pydat3 brat 4755 0.00030" ,"pydat3 kfdp 4755 1 100443" ,"pydat3 kfdp 4755 2 321" ,"pydat3 kfdp 4755 3 -321" ,"pydat3 kfdp 4755 4 111" - ,"pydat3 mdme 4756 1 1" ,"pydat3 brat 4756 0.00030" ,"pydat3 kfdp 4756 1 100443" ,"pydat3 kfdp 4756 2 311" ,"pydat3 kfdp 4756 3 -311" ,"pydat3 kfdp 4756 4 111" - ,"pydat3 mdme 4757 1 1" ,"pydat3 brat 4757 0.00018" ,"pydat3 kfdp 4757 1 20443" ,"pydat3 kfdp 4757 2 321" ,"pydat3 kfdp 4757 3 -321" - ,"pydat3 mdme 4758 1 1" ,"pydat3 brat 4758 0.00018" ,"pydat3 kfdp 4758 1 20443" ,"pydat3 kfdp 4758 2 311" ,"pydat3 kfdp 4758 3 -311" - ,"pydat3 mdme 4759 1 1" ,"pydat3 brat 4759 0.00002" ,"pydat3 kfdp 4759 1 20443" ,"pydat3 kfdp 4759 2 221" ,"pydat3 kfdp 4759 3 111" - ,"pydat3 mdme 4760 1 1" ,"pydat3 brat 4760 0.00005" ,"pydat3 kfdp 4760 1 20443" ,"pydat3 kfdp 4760 2 331" ,"pydat3 kfdp 4760 3 111" - ,"pydat3 mdme 4761 1 1" ,"pydat3 brat 4761 0.00013" ,"pydat3 kfdp 4761 1 20443" ,"pydat3 kfdp 4761 2 333" ,"pydat3 kfdp 4761 3 111" - ,"pydat3 mdme 4762 1 1" ,"pydat3 brat 4762 0.00018" ,"pydat3 kfdp 4762 1 20443" ,"pydat3 kfdp 4762 2 321" ,"pydat3 kfdp 4762 3 -321" ,"pydat3 kfdp 4762 4 111" - ,"pydat3 mdme 4763 1 1" ,"pydat3 brat 4763 0.00018" ,"pydat3 kfdp 4763 1 20443" ,"pydat3 kfdp 4763 2 311" ,"pydat3 kfdp 4763 3 -311" ,"pydat3 kfdp 4763 4 111" - ,"pydat3 mdme 4764 1 1" ,"pydat3 brat 4764 0.00001" ,"pydat3 kfdp 4764 1 445" ,"pydat3 kfdp 4764 2 221" - ,"pydat3 mdme 4765 1 1" ,"pydat3 brat 4765 0.00002" ,"pydat3 kfdp 4765 1 445" ,"pydat3 kfdp 4765 2 331" - ,"pydat3 mdme 4766 1 1" ,"pydat3 brat 4766 0.00004" ,"pydat3 kfdp 4766 1 445" ,"pydat3 kfdp 4766 2 333" - ,"pydat3 mdme 4767 1 1" ,"pydat3 brat 4767 0.00006" ,"pydat3 kfdp 4767 1 445" ,"pydat3 kfdp 4767 2 321" ,"pydat3 kfdp 4767 3 -321" - ,"pydat3 mdme 4768 1 1" ,"pydat3 brat 4768 0.00006" ,"pydat3 kfdp 4768 1 445" ,"pydat3 kfdp 4768 2 311" ,"pydat3 kfdp 4768 3 -311" - ,"pydat3 mdme 4769 1 1" ,"pydat3 brat 4769 0.00001" ,"pydat3 kfdp 4769 1 445" ,"pydat3 kfdp 4769 2 221" ,"pydat3 kfdp 4769 3 111" - ,"pydat3 mdme 4770 1 1" ,"pydat3 brat 4770 0.00002" ,"pydat3 kfdp 4770 1 445" ,"pydat3 kfdp 4770 2 331" ,"pydat3 kfdp 4770 3 111" - ,"pydat3 mdme 4771 1 1" ,"pydat3 brat 4771 0.00004" ,"pydat3 kfdp 4771 1 445" ,"pydat3 kfdp 4771 2 333" ,"pydat3 kfdp 4771 3 111" - ,"pydat3 mdme 4772 1 1" ,"pydat3 brat 4772 0.00006" ,"pydat3 kfdp 4772 1 445" ,"pydat3 kfdp 4772 2 321" ,"pydat3 kfdp 4772 3 -321" ,"pydat3 kfdp 4772 4 111" - ,"pydat3 mdme 4773 1 1" ,"pydat3 brat 4773 0.00006" ,"pydat3 kfdp 4773 1 445" ,"pydat3 kfdp 4773 2 311" ,"pydat3 kfdp 4773 3 -311" ,"pydat3 kfdp 4773 4 111" -# Lambda_b decays -# repoint to place 4801, 55 decays including new ones - ,"pydat3 mdcy 210 2 4801" ,"pydat3 mdcy 210 3 55" ,"pydat3 mdcy 210 1 1" - ,"pydat3 mdme 4801 1 2" ,"pydat3 mdme 4801 2 42" ,"pydat3 brat 4801 0.10500" ,"pydat3 kfdp 4801 1 -12" ,"pydat3 kfdp 4801 2 11" ,"pydat3 kfdp 4801 3 4122" - ,"pydat3 mdme 4802 1 2" ,"pydat3 mdme 4802 2 42" ,"pydat3 brat 4802 0.10500" ,"pydat3 kfdp 4802 1 -14" ,"pydat3 kfdp 4802 2 13" ,"pydat3 kfdp 4802 3 4122" - ,"pydat3 mdme 4803 1 2" ,"pydat3 mdme 4803 2 42" ,"pydat3 brat 4803 0.04000" ,"pydat3 kfdp 4803 1 -16" ,"pydat3 kfdp 4803 2 15" ,"pydat3 kfdp 4803 3 4122" - ,"pydat3 mdme 4804 1 2" ,"pydat3 brat 4804 0.00770" ,"pydat3 kfdp 4804 1 4122" ,"pydat3 kfdp 4804 2 -211" - ,"pydat3 mdme 4805 1 2" ,"pydat3 brat 4805 0.02000" ,"pydat3 kfdp 4805 1 4122" ,"pydat3 kfdp 4805 2 -213" - ,"pydat3 mdme 4806 1 2" ,"pydat3 brat 4806 0.02350" ,"pydat3 kfdp 4806 1 4122" ,"pydat3 kfdp 4806 2 -20213" - ,"pydat3 mdme 4807 1 2" ,"pydat3 brat 4807 0.02850" ,"pydat3 kfdp 4807 1 4122" ,"pydat3 kfdp 4807 2 -431" - ,"pydat3 mdme 4808 1 2" ,"pydat3 brat 4808 0.04350" ,"pydat3 kfdp 4808 1 4122" ,"pydat3 kfdp 4808 2 -433" - ,"pydat3 mdme 4809 1 2" ,"pydat3 brat 4809 0.00110" ,"pydat3 kfdp 4809 1 441" ,"pydat3 kfdp 4809 2 3122" - ,"pydat3 mdme 4810 1 1" ,"pydat3 brat 4810 0.00047" ,"pydat3 kfdp 4810 1 443" ,"pydat3 kfdp 4810 2 3122" - ,"pydat3 mdme 4811 1 1" ,"pydat3 brat 4811 0.00006" ,"pydat3 kfdp 4811 1 20443" ,"pydat3 kfdp 4811 2 3122" - ,"pydat3 mdme 4812 1 2" ,"pydat3 mdme 4812 2 48" ,"pydat3 brat 4812 0.42910" ,"pydat3 kfdp 4812 1 -2" ,"pydat3 kfdp 4812 2 1" ,"pydat3 kfdp 4812 3 4" ,"pydat3 kfdp 4812 4 2101" - ,"pydat3 mdme 4813 1 2" ,"pydat3 mdme 4813 2 13" ,"pydat3 brat 4813 0.08000" ,"pydat3 kfdp 4813 1 -2" ,"pydat3 kfdp 4813 2 4" ,"pydat3 kfdp 4813 3 1" ,"pydat3 kfdp 4813 4 2101" - ,"pydat3 mdme 4814 1 2" ,"pydat3 mdme 4814 2 13" ,"pydat3 brat 4814 0.07000" ,"pydat3 kfdp 4814 1 -4" ,"pydat3 kfdp 4814 2 3" ,"pydat3 kfdp 4814 3 4" ,"pydat3 kfdp 4814 4 2101" - ,"pydat3 mdme 4815 1 2" ,"pydat3 mdme 4815 2 13" ,"pydat3 brat 4815 0.02000" ,"pydat3 kfdp 4815 1 -4" ,"pydat3 kfdp 4815 2 4" ,"pydat3 kfdp 4815 3 3" ,"pydat3 kfdp 4815 4 2101" - ,"pydat3 mdme 4816 1 2" ,"pydat3 mdme 4816 2 42" ,"pydat3 brat 4816 0.01500" ,"pydat3 kfdp 4816 1 -2" ,"pydat3 kfdp 4816 2 1" ,"pydat3 kfdp 4816 3 2" ,"pydat3 kfdp 4816 4 2101" - ,"pydat3 mdme 4817 1 2" ,"pydat3 mdme 4817 2 42" ,"pydat3 brat 4817 0.00500" ,"pydat3 kfdp 4817 1 -4" ,"pydat3 kfdp 4817 2 3" ,"pydat3 kfdp 4817 3 2" ,"pydat3 kfdp 4817 4 2101" - ,"pydat3 mdme 4818 1 1" ,"pydat3 brat 4818 0.00047" ,"pydat3 kfdp 4818 1 443" ,"pydat3 kfdp 4818 2 3212" - ,"pydat3 mdme 4819 1 1" ,"pydat3 brat 4819 0.00024" ,"pydat3 kfdp 4819 1 443" ,"pydat3 kfdp 4819 2 -321" ,"pydat3 kfdp 4819 3 2212" - ,"pydat3 mdme 4820 1 1" ,"pydat3 brat 4820 0.00024" ,"pydat3 kfdp 4820 1 443" ,"pydat3 kfdp 4820 2 -311" ,"pydat3 kfdp 4820 3 2112" - ,"pydat3 mdme 4821 1 1" ,"pydat3 brat 4821 0.00047" ,"pydat3 kfdp 4821 1 443" ,"pydat3 kfdp 4821 2 -321" ,"pydat3 kfdp 4821 3 211" ,"pydat3 kfdp 4821 4 2112" - ,"pydat3 mdme 4822 1 1" ,"pydat3 brat 4822 0.00024" ,"pydat3 kfdp 4822 1 443" ,"pydat3 kfdp 4822 2 -321" ,"pydat3 kfdp 4822 3 111" ,"pydat3 kfdp 4822 4 2212" - ,"pydat3 mdme 4823 1 1" ,"pydat3 brat 4823 0.00047" ,"pydat3 kfdp 4823 1 443" ,"pydat3 kfdp 4823 2 -311" ,"pydat3 kfdp 4823 3 -211" ,"pydat3 kfdp 4823 4 2212" - ,"pydat3 mdme 4824 1 1" ,"pydat3 brat 4824 0.00024" ,"pydat3 kfdp 4824 1 443" ,"pydat3 kfdp 4824 2 -311" ,"pydat3 kfdp 4824 3 111" ,"pydat3 kfdp 4824 4 2112" - ,"pydat3 mdme 4825 1 1" ,"pydat3 brat 4825 0.00047" ,"pydat3 kfdp 4825 1 443" ,"pydat3 kfdp 4825 2 3122" ,"pydat3 kfdp 4825 3 111" - ,"pydat3 mdme 4826 1 1" ,"pydat3 brat 4826 0.00047" ,"pydat3 kfdp 4826 1 443" ,"pydat3 kfdp 4826 2 3212" ,"pydat3 kfdp 4826 3 111" - ,"pydat3 mdme 4827 1 1" ,"pydat3 brat 4827 0.00011" ,"pydat3 kfdp 4827 1 100443" ,"pydat3 kfdp 4827 2 3122" - ,"pydat3 mdme 4828 1 1" ,"pydat3 brat 4828 0.00011" ,"pydat3 kfdp 4828 1 100443" ,"pydat3 kfdp 4828 2 3212" - ,"pydat3 mdme 4829 1 1" ,"pydat3 brat 4829 0.00005" ,"pydat3 kfdp 4829 1 100443" ,"pydat3 kfdp 4829 2 -321" ,"pydat3 kfdp 4829 3 2212" - ,"pydat3 mdme 4830 1 1" ,"pydat3 brat 4830 0.00005" ,"pydat3 kfdp 4830 1 100443" ,"pydat3 kfdp 4830 2 -311" ,"pydat3 kfdp 4830 3 2112" - ,"pydat3 mdme 4831 1 1" ,"pydat3 brat 4831 0.00011" ,"pydat3 kfdp 4831 1 100443" ,"pydat3 kfdp 4831 2 -321" ,"pydat3 kfdp 4831 3 211" ,"pydat3 kfdp 4831 4 2112" - ,"pydat3 mdme 4832 1 1" ,"pydat3 brat 4832 0.00005" ,"pydat3 kfdp 4832 1 100443" ,"pydat3 kfdp 4832 2 -321" ,"pydat3 kfdp 4832 3 111" ,"pydat3 kfdp 4832 4 2212" - ,"pydat3 mdme 4833 1 1" ,"pydat3 brat 4833 0.00011" ,"pydat3 kfdp 4833 1 100443" ,"pydat3 kfdp 4833 2 -311" ,"pydat3 kfdp 4833 3 -211" ,"pydat3 kfdp 4833 4 2212" - ,"pydat3 mdme 4834 1 1" ,"pydat3 brat 4834 0.00005" ,"pydat3 kfdp 4834 1 100443" ,"pydat3 kfdp 4834 2 -311" ,"pydat3 kfdp 4834 3 111" ,"pydat3 kfdp 4834 4 2112" - ,"pydat3 mdme 4835 1 1" ,"pydat3 brat 4835 0.00011" ,"pydat3 kfdp 4835 1 100443" ,"pydat3 kfdp 4835 2 3122" ,"pydat3 kfdp 4835 3 111" - ,"pydat3 mdme 4836 1 1" ,"pydat3 brat 4836 0.00011" ,"pydat3 kfdp 4836 1 100443" ,"pydat3 kfdp 4836 2 3212" ,"pydat3 kfdp 4836 3 111" - ,"pydat3 mdme 4837 1 1" ,"pydat3 brat 4837 0.00006" ,"pydat3 kfdp 4837 1 20443" ,"pydat3 kfdp 4837 2 3212" - ,"pydat3 mdme 4838 1 1" ,"pydat3 brat 4838 0.00003" ,"pydat3 kfdp 4838 1 20443" ,"pydat3 kfdp 4838 2 -321" ,"pydat3 kfdp 4838 3 2212" - ,"pydat3 mdme 4839 1 1" ,"pydat3 brat 4839 0.00003" ,"pydat3 kfdp 4839 1 20443" ,"pydat3 kfdp 4839 2 -311" ,"pydat3 kfdp 4839 3 2112" - ,"pydat3 mdme 4840 1 1" ,"pydat3 brat 4840 0.00006" ,"pydat3 kfdp 4840 1 20443" ,"pydat3 kfdp 4840 2 -321" ,"pydat3 kfdp 4840 3 211" ,"pydat3 kfdp 4840 4 2112" - ,"pydat3 mdme 4841 1 1" ,"pydat3 brat 4841 0.00003" ,"pydat3 kfdp 4841 1 20443" ,"pydat3 kfdp 4841 2 -321" ,"pydat3 kfdp 4841 3 111" ,"pydat3 kfdp 4841 4 2212" - ,"pydat3 mdme 4842 1 1" ,"pydat3 brat 4842 0.00006" ,"pydat3 kfdp 4842 1 20443" ,"pydat3 kfdp 4842 2 -311" ,"pydat3 kfdp 4842 3 -211" ,"pydat3 kfdp 4842 4 2212" - ,"pydat3 mdme 4843 1 1" ,"pydat3 brat 4843 0.00003" ,"pydat3 kfdp 4843 1 20443" ,"pydat3 kfdp 4843 2 -311" ,"pydat3 kfdp 4843 3 111" ,"pydat3 kfdp 4843 4 2112" - ,"pydat3 mdme 4844 1 1" ,"pydat3 brat 4844 0.00006" ,"pydat3 kfdp 4844 1 20443" ,"pydat3 kfdp 4844 2 3122" ,"pydat3 kfdp 4844 3 111" - ,"pydat3 mdme 4845 1 1" ,"pydat3 brat 4845 0.00006" ,"pydat3 kfdp 4845 1 20443" ,"pydat3 kfdp 4845 2 3212" ,"pydat3 kfdp 4845 3 111" - ,"pydat3 mdme 4846 1 1" ,"pydat3 brat 4846 0.00002" ,"pydat3 kfdp 4846 1 445" ,"pydat3 kfdp 4846 2 3122" - ,"pydat3 mdme 4847 1 1" ,"pydat3 brat 4847 0.00002" ,"pydat3 kfdp 4847 1 445" ,"pydat3 kfdp 4847 2 3212" - ,"pydat3 mdme 4848 1 1" ,"pydat3 brat 4848 0.00001" ,"pydat3 kfdp 4848 1 445" ,"pydat3 kfdp 4848 2 -321" ,"pydat3 kfdp 4848 3 2212" - ,"pydat3 mdme 4849 1 1" ,"pydat3 brat 4849 0.00001" ,"pydat3 kfdp 4849 1 445" ,"pydat3 kfdp 4849 2 -311" ,"pydat3 kfdp 4849 3 2112" - ,"pydat3 mdme 4850 1 1" ,"pydat3 brat 4850 0.00002" ,"pydat3 kfdp 4850 1 445" ,"pydat3 kfdp 4850 2 -321" ,"pydat3 kfdp 4850 3 211" ,"pydat3 kfdp 4850 4 2112" - ,"pydat3 mdme 4851 1 1" ,"pydat3 brat 4851 0.00001" ,"pydat3 kfdp 4851 1 445" ,"pydat3 kfdp 4851 2 -321" ,"pydat3 kfdp 4851 3 111" ,"pydat3 kfdp 4851 4 2212" - ,"pydat3 mdme 4852 1 1" ,"pydat3 brat 4852 0.00002" ,"pydat3 kfdp 4852 1 445" ,"pydat3 kfdp 4852 2 -311" ,"pydat3 kfdp 4852 3 -211" ,"pydat3 kfdp 4852 4 2212" - ,"pydat3 mdme 4853 1 1" ,"pydat3 brat 4853 0.00001" ,"pydat3 kfdp 4853 1 445" ,"pydat3 kfdp 4853 2 -311" ,"pydat3 kfdp 4853 3 111" ,"pydat3 kfdp 4853 4 2112" - ,"pydat3 mdme 4854 1 1" ,"pydat3 brat 4854 0.00002" ,"pydat3 kfdp 4854 1 445" ,"pydat3 kfdp 4854 2 3122" ,"pydat3 kfdp 4854 3 111" - ,"pydat3 mdme 4855 1 1" ,"pydat3 brat 4855 0.00002" ,"pydat3 kfdp 4855 1 445" ,"pydat3 kfdp 4855 2 3212" ,"pydat3 kfdp 4855 3 111" -# Ksi_b0 decays -# repoint to place 4901, 17 decays including new ones - ,"pydat3 mdcy 219 2 4901" ,"pydat3 mdcy 219 3 17" ,"pydat3 mdcy 219 1 1" - ,"pydat3 mdme 4901 1 2" ,"pydat3 mdme 4901 2 85" ,"pydat3 brat 4901 0.99992" - ,"pydat3 mdme 4902 1 1" ,"pydat3 brat 4902 0.00047" ,"pydat3 kfdp 4902 1 443" ,"pydat3 kfdp 4902 2 3322" - ,"pydat3 mdme 4903 1 1" ,"pydat3 brat 4903 0.00047" ,"pydat3 kfdp 4903 1 443" ,"pydat3 kfdp 4903 2 3322" ,"pydat3 kfdp 4903 3 111" - ,"pydat3 mdme 4904 1 1" ,"pydat3 brat 4904 0.00024" ,"pydat3 kfdp 4904 1 443" ,"pydat3 kfdp 4904 2 -321" ,"pydat3 kfdp 4904 3 3222" - ,"pydat3 mdme 4905 1 1" ,"pydat3 brat 4905 0.00024" ,"pydat3 kfdp 4905 1 443" ,"pydat3 kfdp 4905 2 -311" ,"pydat3 kfdp 4905 3 3212" - ,"pydat3 mdme 4906 1 1" ,"pydat3 brat 4906 0.00011" ,"pydat3 kfdp 4906 1 100443" ,"pydat3 kfdp 4906 2 3322" - ,"pydat3 mdme 4907 1 1" ,"pydat3 brat 4907 0.00011" ,"pydat3 kfdp 4907 1 100443" ,"pydat3 kfdp 4907 2 3322" ,"pydat3 kfdp 4907 3 111" - ,"pydat3 mdme 4908 1 1" ,"pydat3 brat 4908 0.00005" ,"pydat3 kfdp 4908 1 100443" ,"pydat3 kfdp 4908 2 -321" ,"pydat3 kfdp 4908 3 3222" - ,"pydat3 mdme 4909 1 1" ,"pydat3 brat 4909 0.00005" ,"pydat3 kfdp 4909 1 100443" ,"pydat3 kfdp 4909 2 -311" ,"pydat3 kfdp 4909 3 3212" - ,"pydat3 mdme 4910 1 1" ,"pydat3 brat 4910 0.00006" ,"pydat3 kfdp 4910 1 20443" ,"pydat3 kfdp 4910 2 3322" - ,"pydat3 mdme 4911 1 1" ,"pydat3 brat 4911 0.00006" ,"pydat3 kfdp 4911 1 20443" ,"pydat3 kfdp 4911 2 3322" ,"pydat3 kfdp 4911 3 111" - ,"pydat3 mdme 4912 1 1" ,"pydat3 brat 4912 0.00003" ,"pydat3 kfdp 4912 1 20443" ,"pydat3 kfdp 4912 2 -321" ,"pydat3 kfdp 4912 3 3222" - ,"pydat3 mdme 4913 1 1" ,"pydat3 brat 4913 0.00003" ,"pydat3 kfdp 4913 1 20443" ,"pydat3 kfdp 4913 2 -311" ,"pydat3 kfdp 4913 3 3212" - ,"pydat3 mdme 4914 1 1" ,"pydat3 brat 4914 0.00002" ,"pydat3 kfdp 4914 1 445" ,"pydat3 kfdp 4914 2 3322" - ,"pydat3 mdme 4915 1 1" ,"pydat3 brat 4915 0.00002" ,"pydat3 kfdp 4915 1 445" ,"pydat3 kfdp 4915 2 3322" ,"pydat3 kfdp 4915 3 111" - ,"pydat3 mdme 4916 1 1" ,"pydat3 brat 4916 0.00001" ,"pydat3 kfdp 4916 1 445" ,"pydat3 kfdp 4916 2 -321" ,"pydat3 kfdp 4916 3 3222" - ,"pydat3 mdme 4917 1 1" ,"pydat3 brat 4917 0.00001" ,"pydat3 kfdp 4917 1 445" ,"pydat3 kfdp 4917 2 -311" ,"pydat3 kfdp 4917 3 3212" -# Ksi_b- decays -# repoint to place 4921, 17 decays including new ones - ,"pydat3 mdcy 211 2 4921" ,"pydat3 mdcy 211 3 17" ,"pydat3 mdcy 211 1 1" - ,"pydat3 mdme 4921 1 2" ,"pydat3 mdme 4921 2 85" ,"pydat3 brat 4921 0.99992" - ,"pydat3 mdme 4922 1 1" ,"pydat3 brat 4922 0.00047" ,"pydat3 kfdp 4922 1 443" ,"pydat3 kfdp 4922 2 3312" - ,"pydat3 mdme 4923 1 1" ,"pydat3 brat 4923 0.00047" ,"pydat3 kfdp 4923 1 443" ,"pydat3 kfdp 4923 2 3312" ,"pydat3 kfdp 4923 3 111" - ,"pydat3 mdme 4924 1 1" ,"pydat3 brat 4924 0.00024" ,"pydat3 kfdp 4924 1 443" ,"pydat3 kfdp 4924 2 -321" ,"pydat3 kfdp 4924 3 3212" - ,"pydat3 mdme 4925 1 1" ,"pydat3 brat 4925 0.00024" ,"pydat3 kfdp 4925 1 443" ,"pydat3 kfdp 4925 2 -311" ,"pydat3 kfdp 4925 3 3112" - ,"pydat3 mdme 4926 1 1" ,"pydat3 brat 4926 0.00011" ,"pydat3 kfdp 4926 1 100443" ,"pydat3 kfdp 4926 2 3312" - ,"pydat3 mdme 4927 1 1" ,"pydat3 brat 4927 0.00011" ,"pydat3 kfdp 4927 1 100443" ,"pydat3 kfdp 4927 2 3312" ,"pydat3 kfdp 4927 3 111" - ,"pydat3 mdme 4928 1 1" ,"pydat3 brat 4928 0.00005" ,"pydat3 kfdp 4928 1 100443" ,"pydat3 kfdp 4928 2 -321" ,"pydat3 kfdp 4928 3 3212" - ,"pydat3 mdme 4929 1 1" ,"pydat3 brat 4929 0.00005" ,"pydat3 kfdp 4929 1 100443" ,"pydat3 kfdp 4929 2 -311" ,"pydat3 kfdp 4929 3 3112" - ,"pydat3 mdme 4930 1 1" ,"pydat3 brat 4930 0.00006" ,"pydat3 kfdp 4930 1 20443" ,"pydat3 kfdp 4930 2 3312" - ,"pydat3 mdme 4931 1 1" ,"pydat3 brat 4931 0.00006" ,"pydat3 kfdp 4931 1 20443" ,"pydat3 kfdp 4931 2 3312" ,"pydat3 kfdp 4931 3 111" - ,"pydat3 mdme 4932 1 1" ,"pydat3 brat 4932 0.00003" ,"pydat3 kfdp 4932 1 20443" ,"pydat3 kfdp 4932 2 -321" ,"pydat3 kfdp 4932 3 3212" - ,"pydat3 mdme 4933 1 1" ,"pydat3 brat 4933 0.00003" ,"pydat3 kfdp 4933 1 20443" ,"pydat3 kfdp 4933 2 -311" ,"pydat3 kfdp 4933 3 3112" - ,"pydat3 mdme 4934 1 1" ,"pydat3 brat 4934 0.00002" ,"pydat3 kfdp 4934 1 445" ,"pydat3 kfdp 4934 2 3312" - ,"pydat3 mdme 4935 1 1" ,"pydat3 brat 4935 0.00002" ,"pydat3 kfdp 4935 1 445" ,"pydat3 kfdp 4935 2 3312" ,"pydat3 kfdp 4935 3 111" - ,"pydat3 mdme 4936 1 1" ,"pydat3 brat 4936 0.00001" ,"pydat3 kfdp 4936 1 445" ,"pydat3 kfdp 4936 2 -321" ,"pydat3 kfdp 4936 3 3212" - ,"pydat3 mdme 4937 1 1" ,"pydat3 brat 4937 0.00001" ,"pydat3 kfdp 4937 1 445" ,"pydat3 kfdp 4937 2 -311" ,"pydat3 kfdp 4937 3 3112" -# Omega_b- decays -# repoint to place 4941, 17 decays including new ones - ,"pydat3 mdcy 227 2 4941" ,"pydat3 mdcy 227 3 17" ,"pydat3 mdcy 227 1 1" - ,"pydat3 mdme 4941 1 2" ,"pydat3 mdme 4941 2 85" ,"pydat3 brat 4941 0.99992" - ,"pydat3 mdme 4942 1 1" ,"pydat3 brat 4942 0.00047" ,"pydat3 kfdp 4942 1 443" ,"pydat3 kfdp 4942 2 3334" - ,"pydat3 mdme 4943 1 1" ,"pydat3 brat 4943 0.00047" ,"pydat3 kfdp 4943 1 443" ,"pydat3 kfdp 4943 2 3334" ,"pydat3 kfdp 4943 3 111" - ,"pydat3 mdme 4944 1 1" ,"pydat3 brat 4944 0.00024" ,"pydat3 kfdp 4944 1 443" ,"pydat3 kfdp 4944 2 -321" ,"pydat3 kfdp 4944 3 3322" - ,"pydat3 mdme 4945 1 1" ,"pydat3 brat 4945 0.00024" ,"pydat3 kfdp 4945 1 443" ,"pydat3 kfdp 4945 2 -311" ,"pydat3 kfdp 4945 3 3312" - ,"pydat3 mdme 4946 1 1" ,"pydat3 brat 4946 0.00011" ,"pydat3 kfdp 4946 1 100443" ,"pydat3 kfdp 4946 2 3334" - ,"pydat3 mdme 4947 1 1" ,"pydat3 brat 4947 0.00011" ,"pydat3 kfdp 4947 1 100443" ,"pydat3 kfdp 4947 2 3334" ,"pydat3 kfdp 4947 3 111" - ,"pydat3 mdme 4948 1 1" ,"pydat3 brat 4948 0.00005" ,"pydat3 kfdp 4948 1 100443" ,"pydat3 kfdp 4948 2 -321" ,"pydat3 kfdp 4948 3 3322" - ,"pydat3 mdme 4949 1 1" ,"pydat3 brat 4949 0.00005" ,"pydat3 kfdp 4949 1 100443" ,"pydat3 kfdp 4949 2 -311" ,"pydat3 kfdp 4949 3 3312" - ,"pydat3 mdme 4950 1 1" ,"pydat3 brat 4950 0.00006" ,"pydat3 kfdp 4950 1 20443" ,"pydat3 kfdp 4950 2 3334" - ,"pydat3 mdme 4951 1 1" ,"pydat3 brat 4951 0.00006" ,"pydat3 kfdp 4951 1 20443" ,"pydat3 kfdp 4951 2 3334" ,"pydat3 kfdp 4951 3 111" - ,"pydat3 mdme 4952 1 1" ,"pydat3 brat 4952 0.00003" ,"pydat3 kfdp 4952 1 20443" ,"pydat3 kfdp 4952 2 -321" ,"pydat3 kfdp 4952 3 3322" - ,"pydat3 mdme 4953 1 1" ,"pydat3 brat 4953 0.00003" ,"pydat3 kfdp 4953 1 20443" ,"pydat3 kfdp 4953 2 -311" ,"pydat3 kfdp 4953 3 3312" - ,"pydat3 mdme 4954 1 1" ,"pydat3 brat 4954 0.00002" ,"pydat3 kfdp 4954 1 445" ,"pydat3 kfdp 4954 2 3334" - ,"pydat3 mdme 4955 1 1" ,"pydat3 brat 4955 0.00002" ,"pydat3 kfdp 4955 1 445" ,"pydat3 kfdp 4955 2 3334" ,"pydat3 kfdp 4955 3 111" - ,"pydat3 mdme 4956 1 1" ,"pydat3 brat 4956 0.00001" ,"pydat3 kfdp 4956 1 445" ,"pydat3 kfdp 4956 2 -321" ,"pydat3 kfdp 4956 3 3322" - ,"pydat3 mdme 4957 1 1" ,"pydat3 brat 4957 0.00001" ,"pydat3 kfdp 4957 1 445" ,"pydat3 kfdp 4957 2 -311" ,"pydat3 kfdp 4957 3 3312" -# -# The above assumes that psi', chi_0c, chi_1c and chi_2c are forced to J/psi -# switch off other psi' channels - ,"pydat3 mdme 1567 1 0" - ,"pydat3 mdme 1568 1 0" - ,"pydat3 mdme 1569 1 0" - ,"pydat3 mdme 1577 1 0" -# switch off other chi_0c channels - ,"pydat3 mdme 1502 1 0" -# switch off other chi_1c channels - ,"pydat3 mdme 1556 1 0" -# switch off other chi_2c channels - ,"pydat3 mdme 862 1 0" - ] diff --git a/Generators/PythiaB/share/MC11.108424.PythiaB_Bs_Jpsi_mu0mu0_phi_KK_nopTcuts_PhysAngles.py b/Generators/PythiaB/share/MC11.108424.PythiaB_Bs_Jpsi_mu0mu0_phi_KK_nopTcuts_PhysAngles.py deleted file mode 100644 index 9bc83e112f789c111df1ebca3733c2fe0cf0513e..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/share/MC11.108424.PythiaB_Bs_Jpsi_mu0mu0_phi_KK_nopTcuts_PhysAngles.py +++ /dev/null @@ -1,95 +0,0 @@ -############################################################################### -# -# MC11.108424.PythiaB_Bs_Jpsi_mu0mu0_phi_KK_nopTcuts.py -# Author: ATLAS B-physics group -# Generator of Bs -> phi(K+K-) J/psi(mu+mu-) decay -# PRODUCTION SYSTEM FRAGMENT -# -############################################################################### - -#------------------------------------------------------------------------------ -# Production driving parameters -#------------------------------------------------------------------------------ - -from MC11JobOptions.PythiaBEvgenConfig import evgenConfig -evgenConfig.minevents = 100 - -#------------------------------------------------------------------------------ -# Import all needed algorithms (in the proper order) -#------------------------------------------------------------------------------ - -from AthenaCommon.AlgSequence import AlgSequence -topAlg = AlgSequence("TopAlg") - -include( "MC11JobOptions/MC11_PythiaB_Common.py" ) - -#from GeneratorFilters.GeneratorFiltersConf import BSignalFilter -#topAlg += BSignalFilter() -#BSignalFilter = topAlg.BSignalFilter - -#------------------------------------------------------------------------------ -# PythiaB parameters settings -#------------------------------------------------------------------------------ - -PythiaB.ForceCDecay = "no" -PythiaB.ForceBDecay = "yes" - -# Updated B-decays list (changes B-hadron decay tables including mdme line -# number to start from 4500 - see also ...CloseAntibQuarkNew.py below) -include( "MC11JobOptions/MC11_PythiaB_Bchannels.py" ) - -# Clasical PythiaB way of producing exclusive decay channel -# (close whole the decay and then open only the one requested channel) -include( "MC11JobOptions/MC11_PythiaB_CloseAntibQuarkNew.py" ) - -# Open channel for B0s -> phi J/psi and ban other than J/psi->mumu decays -PythiaB.PythiaCommand += [ "pydat3 mdme 4730 1 1", - "pydat3 mdme 858 1 0", - "pydat3 mdme 860 1 0" ] - -# User-finsel to accept only charged phi daughters -PythiaB.ForceDecayChannel = "BsAngles" -# Parameter of the finsel: flat(0)/physics(1), pT_L1_mu, pT_L2_mu, eta_mu, kaon pT,eta, Bs pT,eta, (Bs lifetime) -PythiaB.DecayChannelParameters = [ 1.0, 0.0, 0.0, 100.0, 0.0, 100.0, 0.0, 100.0, 0.0, 0.0 ] - -# Correct B0s lifetime as in PDG2010 -PythiaB.PythiaCommand += ["pydat2 pmas 531 4 0.4599"] - -# Production settings -include( "MC11JobOptions/MC11_PythiaB_Btune.py" ) -PythiaB.PythiaCommand += [ "pysubs ckin 3 8.0", - "pysubs ckin 9 -3.0", - "pysubs ckin 10 3.0", - "pysubs ckin 11 -3.0", - "pysubs ckin 12 3.0", - "pysubs msel 1" ] - -# Simulate only b-flavour events -PythiaB.flavour = 5. - -# Pythia b-quark cuts -PythiaB.cutbq = [ "0. 102.5 and 6.0 3.5" ] - -# Repeated hadronization -PythiaB.mhadr = 10. - -#------------------------------------------------------------------------------ -# Signal event filtering -#------------------------------------------------------------------------------ - -# LVL1: pT_L1, eta_L1 -PythiaB.lvl1cut = [ 1., 0.0, 102.5 ] -# LVL2: pdg (muon/electron), pT_L2, eta_L2 -PythiaB.lvl2cut = [ 0., 13., 0., 2.5 ] -# Offline: pT, eta cuts for kaon/pion, muon, electron -PythiaB.offcut = [ 0., 0.5, 2.5, 2.5, 2.5, 0.5, 2.5 ] - -# Ntuple content settings -#BSignalFilter.SignaltoNtup = 10.0*float(evgenConfig.minevents)/float(evgenConfig.efficiency) -#BSignalFilter.StoreBQuarks = True - -############################################################################### -# -# End of job options fragment for B0s -> phi(K+K-) J/psi(mu+mu-) -# -############################################################################### diff --git a/Generators/PythiaB/share/MC8.108424.PythiaB_Bs_Jpsi_mu6mu4_phi_KK.py b/Generators/PythiaB/share/MC8.108424.PythiaB_Bs_Jpsi_mu6mu4_phi_KK.py deleted file mode 100644 index ed498765966d8e7c5bad0f4346bb80f5c67d2f1d..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/share/MC8.108424.PythiaB_Bs_Jpsi_mu6mu4_phi_KK.py +++ /dev/null @@ -1,89 +0,0 @@ -############################################################### -# -# Job options file for generation of B-events -# in user selected exclusive channel -# -#============================================================== -#-------------------------------------------------------------- -# General Application Configuration options -#-------------------------------------------------------------- -from EvgenJobOptions.PythiaBEvgenConfig import evgenConfig -evgenConfig.minevents = 500 -#-------------------------------------------------------------- -# Private Application Configuration options -#-------------------------------------------------------------- -from AthenaCommon.AlgSequence import AlgSequence -topAlg = AlgSequence("TopAlg") - -include ( "EvgenJobOptions/MC8_PythiaB_Common.py" ) - -#-------------------------------------------------------------- -# PARAMETERS SPECIFIC TO PYTHIAB -#-------------------------------------------------------------- -PythiaB.ForceCDecay = "no" -#-------------------------------------------------------------- -# ------------- FORCE YOUR B CHANNEL HERE ------------- -#-------------------------------------------------------------- -# To force your B-decay channels decomment following 2 lines: -include( "EvgenJobOptions/MC8_PythiaB_CloseAntibQuark.py" ) - -PythiaB.ForceBDecay = "yes" -# T H R E E E X A M P L E S T O O P E N Y O U R C H A N N E L -# Decomment one of following examples or create your analogically -# open your exclusive channel here Bs -> J/psi(mumu) phi -PythiaB.PythiaCommand += ["pydat3 mdme 982 1 1", - "pydat3 mdme 858 1 0", - "pydat3 mdme 860 1 0" ] -# This phis which have originated from Bs to decay into two kaons. Other phis -# are left to decay as normal. Comment this line to prevent the phi forcing. -# See user_finsel.F (in src directory) for more such forcing options. -PythiaB.ForceDecayChannel = "BsAngles" -# open your exclusive channel here Bs -> Ds pi with Ds->phi pi -##include "Dsphipi.txt" -#PythiaB.PythiaCommand += {"pydat3 mdme 967 1 1", -# "pydat3 mdme 831 1 1" }; -#PythiaB.ForceCDecay = "yes"; -# open your exclusive channel here Bs -> J/psi(mumu) K0 -#PythiaB.PythiaCommand += {"pydat3 mdme 889 1 1", -# "pydat3 mdme 858 1 0", -# "pydat3 mdme 860 1 0" }; -#-------------------------------------------------------------- -# -------- PYTHIA PARAMETERS OPTIMAL FOR BEAUTY PRODUCTION -- -#------------------------------------------------------------- -# 'msel 5' is only for fast tests! -# for correct b-producion you should use 'msel 1' -# 'mstj 26 0' = no mixing was defined in Btune as default -# 'mstj 22 2' = no K0S, Lambda0 decays in Pythia - defined in Btune as default - -include( "EvgenJobOptions/MC8_PythiaB_Btune.py" ) - -PythiaB.PythiaCommand += ["pysubs ckin 3 15.", - "pysubs ckin 9 -3.5", - "pysubs ckin 10 3.5", - "pysubs ckin 11 -3.5", - "pysubs ckin 12 3.5", - "pysubs msel 1"] -#-------------------------------------------------------------- -# ------------- DEFINE SELECTION CUTS ------------- -#-------------------------------------------------------------- -# ------------- Selections on b quarks ------------- -# simulate only b-flavour events -PythiaB.flavour = 5. -# PythiaB force exclusive decay channels only on b=-5 side -# ------------------- b=5 --- and/or --- b=-5 -------- -PythiaB.cutbq = ["0. 102.5 and 10. 2.5"] -# ------------- LVL1 muon cuts 0=OFF 1=ON ------------- -PythiaB.lvl1cut = [ 0., 6., 2.5] -# ------------- LVL2 muon/electron cuts 0=OFF 1=ON------------- -PythiaB.lvl2cut = [ 0., 13., 6., 2.5] -#PythiaB.lvl2cut = { 0., 11., 6., 2.5}; -# ------------- Offline cuts 0=OFF 1=ON ------------- -PythiaB.offcut = [ 1., 0.0, 102.5, 0., 102.5, 0., 102.5] -# ------------- Number of repeated hadronization mhadr ------------- -PythiaB.mhadr = 40. -#============================================================== -# -# End of job options file -# -############################################################### - diff --git a/Generators/PythiaB/share/PythiaB_B0_DPhiA1_Signal3.py b/Generators/PythiaB/share/PythiaB_B0_DPhiA1_Signal3.py deleted file mode 100644 index 119ec068a83bfd325f0cb92725c27460d80a8ae9..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/share/PythiaB_B0_DPhiA1_Signal3.py +++ /dev/null @@ -1,209 +0,0 @@ - ############################################################### -# -# Job options file for generation of B-events -# in user selected exclusive channel -# -# Decay channel: B0->D(Phi(K+K-)Pi)A1(Rho(Pi+Pi-)Pi) -# -# Author : W. Walkowiak, 2006-12-11 -# (adjusted after a template provided by PythiaB) -# changed: -# -# $Id: PythiaB_B0_DPhiA1_Signal3.py,v 1.2 2007-03-20 14:21:33 msmizans Exp $ -# -#============================================================== -# -varInit = dir() - -# default options (can be overwritten by command line options) -PythiaBDecayFlags = { - 'BtuneOptionsFile' : "Btune.py" - } - -# set variable to default or from personalized JobOptions -# if not already set (code taken from RecExCommon) -for o in [ o for o in PythiaBDecayFlags.keys() if not o in varInit ]: - exec '%s = PythiaBDecayFlags["%s"]' % (o,o) - -#-------------------------------------------------------------- -# General Application Configuration options -#-------------------------------------------------------------- -#theApp.setup( MONTECARLO ) -include( "AthenaCommon/Atlas_Gen.UnixStandardJob.py" ) - -include( "PartPropSvc/PartPropSvc.py" ) - -#-------------------------------------------------------------- -# Private Application Configuration options -#-------------------------------------------------------------- -theApp.Dlls += [ "GaudiAlg" ] -theApp.Dlls += [ "TruthExamples", "PythiaB" ] -theApp.Dlls += [ "GaudiAud" ] -theApp.Dlls += [ "HbookCnv" ] -theApp.Dlls += [ "GeneratorFilters" ] -theAuditorSvc = AuditorSvc() -theAuditorSvc.Auditors = [ "ChronoAuditor" ] -#-------------------------------------------------------------- -# Algorithms -#-------------------------------------------------------------- -theApp.TopAlg = ["PythiaB" , "BSignalFilter"] -theApp.ExtSvc += ["AtRndmGenSvc"] -#-------------------------------------------------------------- -# Number of events to be accepted !! (default is 10) -# re-written if use B job submition script -# RunNumber, FirstEvent re-written if use B job submission script -#-------------------------------------------------------------- -theApp.EvtMax = 100 -EventSelector.RunNumber = 1 -EventSelector.FirstEvent = 1 -#-------------------------------------------------------------- -#User random number seeds - re-written if use B job submission script -#-------------------------------------------------------------- -AtRndmGenSvc = Service( "AtRndmGenSvc" ) -AtRndmGenSvc.Seeds = ["PYTHIA 4789899 989240512", "PYTHIA_INIT 820021 2347532"] -AtRndmGenSvc.ReadFromFile = True; -# Set output level threshold (2=DEBUG, 3=INFO, 4=WARNING, 5=ERROR, 6=FATAL ) -MessageSvc.OutputLevel = 3 -#-------------------------------------------------------------- -# PARAMETERS SPECIFIC TO PYTHIAB -#-------------------------------------------------------------- -PythiaB = Algorithm( "PythiaB" ) -PythiaB.ForceCDecay = "no" -#-------------------------------------------------------------- -# ------------- FORCE YOUR B CHANNEL HERE ------------- -#-------------------------------------------------------------- -# To force your B-decay channels decomment following 2 lines: -include( "CloseAntibQuark.py" ) -PythiaB.ForceBDecay = "yes" -# -# open your exclusive channel here B0 -> D- a1+ with D->phi pi -# -# DXChannel to be set here (close all D- -> phi pi- channels) -DXChannel = "Dphipi" -include( "DXphipi.py" ) -# -# 879: B0 -> D- a1+ -# 715: D- -> Phi Pi- -# -PythiaB.PythiaCommand += [ "pydat3 mdme 879 1 1", - "pydat3 mdme 715 1 1" ]; -PythiaB.ForceCDecay = "yes"; - -# -# w.w., 2006-12-11 revised: -# -# user_finsel.F decay particle channel -# -PythiaB.ForceDecayChannel = "DsPhiX"; -# -# Decay particle selection for DsPhiX: -# 0. (off)/ 1. (on) -- ordered as follows: -# 1 : PhiKK decay -- Phi -> K+K- -# ((from B0s, B0bar or B-) or (from B0sbar, B0 or B+) -# or (from B0->D-X) or (from B0bar->D+X)) -# 2 : DsPhi decay -- Ds*- -> Ds-X, Ds- -> Phi pi-, Phi -> K+K- -# (from B0s, B0bar or B-) or (from B0sbar, B0 or B+)) -# 3 : A1RhoPi decay -- a1 -> RhoPi (from B0s) -# 4 : RhoPiPi decay -- Rho -> Pi+Pi- (from B0s) -# -PythiaB.DecayChannelParameters = [1., 0., 1., 1.]; - -# -#-------------------------------------------------------------- -# -------- PYTHIA PARAMETERS OPTIMAL FOR BEAUTY PRODUCTION -- -#-------------------------------------------------------------- -# 'msel 5' is only for fast tests! -# for correct b-production you should use 'msel 1' -# 'mstj 26 0' = no mixing was defined in Btune as default -# 'mstj 22 2' = no K0S, Lambda0 decays in Pythia - defined in Btune as default - -include( BtuneOptionsFile ) - -# PythiaB.PythiaCommand += ["pysubs ckin 3 6.", -PythiaB.PythiaCommand += ["pysubs ckin 3 10.", - "pysubs ckin 9 -3.5", - "pysubs ckin 10 3.5", - "pysubs ckin 11 -3.5", - "pysubs ckin 12 3.5", - "pysubs msel 1"] - -#-------------------------------------------------------------- -# ------------- DEFINE SELECTION CUTS ------------- -#-------------------------------------------------------------- -# ------------- Selections on b quarks ------------- -# simulate only b-flavour events -PythiaB.flavour = 5. -# PythiaB force exclusive decay channels only on b=-5 side -# ------------------- b=5 --- and/or --- b=-5 -------- -PythiaB.cutbq = ["6.0 2.5 and 6.0 2.5"] -# PythiaB.cutbq = ["6.0 4.5 and 6.0 4.5"] -# ------------- LVL1 muon cuts 0=OFF 1=ON ------------- -PythiaB.lvl1cut = [ 1., 6., 2.5] -# ------------- LVL2 muon/electron cuts 0=OFF 1=ON------------- -PythiaB.lvl2cut = [ 0., 13., 6., 2.5] -# ------------- Offline cuts 0=OFF 1=ON ------------- -PythiaB.offcut = [ 1., 0.5, 2.5, 3., 2.5, 0.5, 2.5] -# -# ------------- Maximum number of tries for hard process ------------- -PythiaB.maxTriesHard = 100000. -# -# ------------- Number of repeated hadronization mhadr ------------- -PythiaB.mhadr = 100. -# ------------- For how many events store B-chain in NTUPLE ------------- -BSignalFilter = Algorithm( "BSignalFilter" ) -BSignalFilter.SignaltoNtup = 400 -# ------------- For how many events store B-chain in ascii ------------- -PythiaB.SignalDumptoAscii = 10. - -#-------------------------------------------------------------- -# CBNT output -#-------------------------------------------------------------- -CBNTAthenaAware=True -include( "CBNT_Athena/CBNT_AthenaAware_jobOptions.py" ) -include( "CBNT_Athena/CBNT_EventInfo_jobOptions.py" ) -# include( "RecExCommon/CBNT_Truth_jobOptions.py" ) -include( "CBNT_Truth_jobOptions.py" ) -CBNT_Truth.MaxNbParticles = 6000 # maximum number of particles in the ntuple -CBNT_Truth.MaxNbVertices = 6000 # maximum number of vertices in the ntuple -All.Enable = True # save ALL particles - -#-------------------------------------------------------------- -# Histogram & Ntuple Persistency -#-------------------------------------------------------------- -theApp.Dlls += [ "RootHistCnv" ] -theApp.HistogramPersistency = "ROOT" - -#-------------------------------------------------------------- -# NTuple output file -#-------------------------------------------------------------- -RootHistSvc = Service( "RootHistSvc" ) -NtupleSvc = Service( "NtupleSvc" ) -NtupleSvc.Output = ["FILE1 DATAFILE='pythiaB.root' TYP='ROOT' OPT='NEW'"] - -# Change since 12.0.3 -theApp.Dlls += [ "AnalysisTools" ] -THistSvc = Service ( "THistSvc" ) -THistSvc.Output = ["AANT DATAFILE='pythiaB.root' OPT='NEW'"] -theApp.TopAlg += [ "AANTupleStream" ] -AANTupleStream = Algorithm( "AANTupleStream" ) -AANTupleStream.ExtraRefNames = [ "" ] -AANTupleStream.OutputName = 'pythiaB.root' -AANTupleStream.ExistDataHeader = False -AANTupleStream.OutputLevel = INFO - -#---------------------------------------------------------------- # Pool persistency -#---------------------------------------------------------------- -include( "AthenaPoolCnvSvc/WriteAthenaPool_jobOptions.py" ) -include( "GeneratorObjectsAthenaPool/GeneratorObjectsAthenaPool_joboptions.py" ) -# 2101 = EventInfo -# 133273 = MCTruth (HepMC) -Stream1.ItemList += ["2101#*", "133273#*" ] -include("AthenaServices/AthenaSealSvc_joboptions.py" ) -AthenaSealSvc.CheckDictionary = TRUE -Stream1.OutputFile = "pythiaB.pool.root" - -#============================================================== -# -# End of job options file -# -############################################################### diff --git a/Generators/PythiaB/share/PythiaB_B0_DPhiPi_Signal3.py b/Generators/PythiaB/share/PythiaB_B0_DPhiPi_Signal3.py deleted file mode 100644 index 7edf96451b1dff1d37fd5d9c1e4d14068c5fb391..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/share/PythiaB_B0_DPhiPi_Signal3.py +++ /dev/null @@ -1,212 +0,0 @@ -############################################################### -# -# Job options file for generation of B-events -# in user selected exclusive channel -# -# Decay channel: B0->D(Phi(K+K-)Pi)Pi -# -# Author: W. Walkowiak, 2006-04-02 -# (adjusted after a template provided by PythiaB) -# Changes: BE, 2006-12-11 -# Adjusted for B0->DPi channel -# WW, 2006-12-12 -# added default options section -# -# $Id: PythiaB_B0_DPhiPi_Signal3.py,v 1.2 2007-03-20 14:21:41 msmizans Exp $ -# -#============================================================== -# -varInit = dir() - -# default options (can be overwritten by command line options) -PythiaBDecayFlags = { - 'NEventGen' : 400, - 'BtuneOptionsFile' : "Btune.py" - } - -# set variable to default or from personalized JobOptions -# if not already set (code taken from RecExCommon) -for o in [ o for o in PythiaBDecayFlags.keys() if not o in varInit ]: - exec '%s = PythiaBDecayFlags["%s"]' % (o,o) - -#-------------------------------------------------------------- -# General Application Configuration options -#-------------------------------------------------------------- -#theApp.setup( MONTECARLO ) -include( "AthenaCommon/Atlas_Gen.UnixStandardJob.py" ) - -include( "PartPropSvc/PartPropSvc.py" ) - -#-------------------------------------------------------------- -# Private Application Configuration options -#-------------------------------------------------------------- -theApp.Dlls += [ "GaudiAlg" ] -theApp.Dlls += [ "TruthExamples", "PythiaB" ] -theApp.Dlls += [ "GaudiAud" ] -theApp.Dlls += [ "HbookCnv" ] -theApp.Dlls += [ "GeneratorFilters" ] -theAuditorSvc = AuditorSvc() -theAuditorSvc.Auditors = [ "ChronoAuditor" ] -#-------------------------------------------------------------- -# Algorithms -#-------------------------------------------------------------- -theApp.TopAlg = ["PythiaB" , "BSignalFilter"] -theApp.ExtSvc += ["AtRndmGenSvc"] -#-------------------------------------------------------------- -# Number of events to be accepted !! (default is 10) -# re-written if use B job submition script -# RunNumber, FirstEvent re-written if use B job submission script -#-------------------------------------------------------------- -theApp.EvtMax = NEventGen -EventSelector.RunNumber = 1 -EventSelector.FirstEvent = 1 -#-------------------------------------------------------------- -#User random number seeds - re-written if use B job submission script -#-------------------------------------------------------------- -AtRndmGenSvc = Service( "AtRndmGenSvc" ) -AtRndmGenSvc.Seeds = ["PYTHIA 4789899 989240512", "PYTHIA_INIT 820021 2347532"] -AtRndmGenSvc.ReadFromFile = True; -# Set output level threshold (2=DEBUG, 3=INFO, 4=WARNING, 5=ERROR, 6=FATAL ) -MessageSvc.OutputLevel = 3 -#-------------------------------------------------------------- -# PARAMETERS SPECIFIC TO PYTHIAB -#-------------------------------------------------------------- -#PythiaB.ForceBDecay = "no"; -PythiaB = Algorithm( "PythiaB" ) -PythiaB.ForceCDecay = "no" -#-------------------------------------------------------------- -# ------------- FORCE YOUR B CHANNEL HERE ------------- -#-------------------------------------------------------------- -# To force your B-decay channels decomment following 2 lines: -include( "CloseAntibQuark.py" ) -PythiaB.ForceBDecay = "yes" -# -# open your exclusive channel here B0 -> D-pi+ with D->phi pi -# -#background channel B0->D-Pi+ -# 877: B0 -> D-Pi+ -# 715: D- -> PhiPi- - -# DXChannel has to be set before DXphipi.py is included -DXChannel = "Dphipi" -include( "DXphipi.py" ) - -PythiaB.PythiaCommand += [ "pydat3 mdme 877 1 1", - "pydat3 mdme 715 1 1" ]; -PythiaB.ForceCDecay = "yes"; - -# -# w.w., 2006-04-02 revised: -# -# user_finsel.F decay particle channel -# -PythiaB.ForceDecayChannel = "DsPhiX"; -# -# Decay particle selection for DsPhiX: -# 0. (off)/ 1. (on) -- ordered as follows: -# 1 : PhiKK decay -- Phi -> K+K- -# ((from B0s, B0bar or B-) or (from B0sbar, B0 or B+)) -# 2 : DsPhi decay -- Ds*- -> Ds-X, Ds- -> Phi pi-, Phi -> K+K- -# (from B0s, B0bar or B-) or (from B0sbar, B0 or B+)) -# 3 : A1RhoPi decay -- a1 -> RhoPi (from B0s) -# 4 : RhoPiPi decay -- Rho -> Pi+Pi- (from B0s) -PythiaB.DecayChannelParameters = [1., 0., 0., 0.]; - -# -#-------------------------------------------------------------- -# -------- PYTHIA PARAMETERS OPTIMAL FOR BEAUTY PRODUCTION -- -#-------------------------------------------------------------- -# 'msel 5' is only for fast tests! -# for correct b-production you should use 'msel 1' -# 'mstj 26 0' = no mixing was defined in Btune as default -# 'mstj 22 2' = no K0S, Lambda0 decays in Pythia - defined in Btune as default - -include( BtuneOptionsFile ) - -# PythiaB.PythiaCommand += ["pysubs ckin 3 6.", -PythiaB.PythiaCommand += ["pysubs ckin 3 10.", - "pysubs ckin 9 -3.5", - "pysubs ckin 10 3.5", - "pysubs ckin 11 -3.5", - "pysubs ckin 12 3.5", - "pysubs msel 1"] -#-------------------------------------------------------------- -# ------------- DEFINE SELECTION CUTS ------------- -#-------------------------------------------------------------- -# ------------- Selections on b quarks ------------- -# simulate only b-flavour events -PythiaB.flavour = 5. -# PythiaB force exclusive decay channels only on b=-5 side -# ------------------- b=5 --- and/or --- b=-5 -------- -PythiaB.cutbq = ["6.0 2.5 and 6.0 2.5"] -# PythiaB.cutbq = ["6.0 4.5 and 6.0 4.5"] -# ------------- LVL1 muon cuts 0=OFF 1=ON ------------- -PythiaB.lvl1cut = [ 1., 6., 2.5] -# ------------- LVL2 muon/electron cuts 0=OFF 1=ON------------- -PythiaB.lvl2cut = [ 0., 13., 6., 2.5] -# ------------- Offline cuts 0=OFF 1=ON ------------- -PythiaB.offcut = [ 1., 0.5, 2.5, 3., 2.5, 0.5, 2.5] -# -# ------------- Maximum number of tries for hard process ------------- -PythiaB.maxTriesHard = 50000. -# -# ------------- Number of repeated hadronization mhadr ------------- -PythiaB.mhadr = 100. -# ------------- For how many events store B-chain in NTUPLE ------------- -BSignalFilter = Algorithm( "BSignalFilter" ) -BSignalFilter.SignaltoNtup = NEventGen -# ------------- For how many events store B-chain in ascii ------------- -PythiaB.SignalDumptoAscii = 10. - -#-------------------------------------------------------------- -# CBNT output -#-------------------------------------------------------------- -CBNTAthenaAware=True -include( "CBNT_Athena/CBNT_AthenaAware_jobOptions.py" ) -include( "CBNT_Athena/CBNT_EventInfo_jobOptions.py" ) -# include( "RecExCommon/CBNT_Truth_jobOptions.py" ) -include( "CBNT_Truth_jobOptions.py" ) -CBNT_Truth.MaxNbParticles = 6000 # maximum number of particles in the ntuple -CBNT_Truth.MaxNbVertices = 6000 # maximum number of vertices in the ntuple -All.Enable = True # save ALL particles - -#-------------------------------------------------------------- -# Histogram & Ntuple Persistency -#-------------------------------------------------------------- -theApp.Dlls += [ "RootHistCnv" ] -theApp.HistogramPersistency = "ROOT" - -#-------------------------------------------------------------- -# NTuple output file -#-------------------------------------------------------------- -RootHistSvc = Service( "RootHistSvc" ) -NtupleSvc = Service( "NtupleSvc" ) -NtupleSvc.Output = ["FILE1 DATAFILE='pythiaB.root' TYP='ROOT' OPT='NEW'"] - -# Change since 12.0.3 -theApp.Dlls += [ "AnalysisTools" ] -THistSvc = Service ( "THistSvc" ) -THistSvc.Output = ["AANT DATAFILE='pythiaB.root' OPT='NEW'"] -theApp.TopAlg += [ "AANTupleStream" ] -AANTupleStream = Algorithm( "AANTupleStream" ) -AANTupleStream.ExtraRefNames = [ "" ] -AANTupleStream.OutputName = 'pythiaB.root' -AANTupleStream.ExistDataHeader = False -AANTupleStream.OutputLevel = INFO - -#---------------------------------------------------------------- # Pool persistency -#---------------------------------------------------------------- -include( "AthenaPoolCnvSvc/WriteAthenaPool_jobOptions.py" ) -include( "GeneratorObjectsAthenaPool/GeneratorObjectsAthenaPool_joboptions.py" ) -# 2101 = EventInfo -# 133273 = MCTruth (HepMC) -Stream1.ItemList += ["2101#*", "133273#*" ] -include("AthenaServices/AthenaSealSvc_joboptions.py" ) -AthenaSealSvc.CheckDictionary = TRUE -Stream1.OutputFile = "pythiaB.pool.root" - -#============================================================== -# -# End of job options file -# -############################################################### diff --git a/Generators/PythiaB/share/PythiaB_B0_DsPhiA1_Signal3.py b/Generators/PythiaB/share/PythiaB_B0_DsPhiA1_Signal3.py deleted file mode 100644 index 69b5daf9482c3a57936283fb9640dff3aeabcc81..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/share/PythiaB_B0_DsPhiA1_Signal3.py +++ /dev/null @@ -1,215 +0,0 @@ - ############################################################### -# -# Job options file for generation of B-events -# in user selected exclusive channel -# -# Decay channel: B0->Ds(Phi(K+K-)Pi)A1(Rho(Pi+Pi-)Pi) -# -# Author : W. Walkowiak, 2006-12-11 -# (adjusted after a template provided by PythiaB) -# changed: -# -# $Id: PythiaB_B0_DsPhiA1_Signal3.py,v 1.2 2007-03-20 14:21:49 msmizans Exp $ -# -#============================================================== -# -varInit = dir() - -# default options (can be overwritten by command line options) -PythiaBDecayFlags = { - 'NEventGen' : 400, - 'BtuneOptionsFile' : "Btune.py" - } - -# set variable to default or from personalized JobOptions -# if not already set (code taken from RecExCommon) -for o in [ o for o in PythiaBDecayFlags.keys() if not o in varInit ]: - exec '%s = PythiaBDecayFlags["%s"]' % (o,o) - -#-------------------------------------------------------------- -# General Application Configuration options -#-------------------------------------------------------------- -#theApp.setup( MONTECARLO ) -include( "AthenaCommon/Atlas_Gen.UnixStandardJob.py" ) - -include( "PartPropSvc/PartPropSvc.py" ) - -#-------------------------------------------------------------- -# Private Application Configuration options -#-------------------------------------------------------------- -theApp.Dlls += [ "GaudiAlg" ] -theApp.Dlls += [ "TruthExamples", "PythiaB" ] -theApp.Dlls += [ "GaudiAud" ] -theApp.Dlls += [ "HbookCnv" ] -theApp.Dlls += [ "GeneratorFilters" ] -theAuditorSvc = AuditorSvc() -theAuditorSvc.Auditors = [ "ChronoAuditor" ] -#-------------------------------------------------------------- -# Algorithms -#-------------------------------------------------------------- -theApp.TopAlg = ["PythiaB" , "BSignalFilter"] -theApp.ExtSvc += ["AtRndmGenSvc"] -#-------------------------------------------------------------- -# Number of events to be accepted !! (default is 10) -# re-written if use B job submition script -# RunNumber, FirstEvent re-written if use B job submission script -#-------------------------------------------------------------- -theApp.EvtMax = NEventGen -EventSelector.RunNumber = 1 -EventSelector.FirstEvent = 1 -#-------------------------------------------------------------- -#User random number seeds - re-written if use B job submission script -#-------------------------------------------------------------- -AtRndmGenSvc = Service( "AtRndmGenSvc" ) -AtRndmGenSvc.Seeds = ["PYTHIA 4789899 989240512", "PYTHIA_INIT 820021 2347532"] -AtRndmGenSvc.ReadFromFile = True; -# Set output level threshold (2=DEBUG, 3=INFO, 4=WARNING, 5=ERROR, 6=FATAL ) -MessageSvc.OutputLevel = 3 -#-------------------------------------------------------------- -# PARAMETERS SPECIFIC TO PYTHIAB -#-------------------------------------------------------------- -PythiaB = Algorithm( "PythiaB" ) -PythiaB.ForceCDecay = "no" -#-------------------------------------------------------------- -# ------------- FORCE YOUR B CHANNEL HERE ------------- -#-------------------------------------------------------------- -# To force your B-decay channels decomment following 2 lines: -include( "CloseAntibQuark.py" ) -PythiaB.ForceBDecay = "yes" -# -# open your exclusive channel here B0 -> Ds+a1- with Ds->phi pi -# (charge conjugated) -# -# DXChannel to be set here (close all Ds- -> phi pi- decays) -DXChannel = "Dsbarphipi" -include( "DXphipi.py" ) -# -# 898: B0 -> Ds+ a1- -# -PythiaB.PythiaCommand += [ "pydat3 mdme 898 1 2", - "pydat3 mdme 898 2 0", - "pydat3 kfdp 898 1 431", - "pydat3 kfdp 898 2 -20213", - "pydat3 kfdp 898 3 0", - "pydat3 kfdp 898 4 0", - "pydat3 mdme 831 1 1"]; -PythiaB.ForceCDecay = "yes"; - -# -# w.w., 2006-12-11 revised: -# -# user_finsel.F decay particle channel -# -PythiaB.ForceDecayChannel = "DsPhiX"; -# -# Decay particle selection for DsPhiX: -# 0. (off)/ 1. (on) -- ordered as follows:x -# 1 : PhiKK decay -- Phi -> K+K- -# ((from B0s, B0bar or B-) or (from B0sbar, B0 or B+) -# or (from B0->D-X) or (from B0bar->D+X)) -# 2 : DsPhi decay -- Ds*- -> Ds-X, Ds- -> Phi pi-, Phi -> K+K- -# (from B0s, B0bar or B-) or (from B0sbar, B0 or B+)) -# 3 : A1RhoPi decay -- a1 -> RhoPi (from B0s) -# 4 : RhoPiPi decay -- Rho -> Pi+Pi- (from B0s) -# -PythiaB.DecayChannelParameters = [1., 0., 1., 1.]; - -# -#-------------------------------------------------------------- -# -------- PYTHIA PARAMETERS OPTIMAL FOR BEAUTY PRODUCTION -- -#-------------------------------------------------------------- -# 'msel 5' is only for fast tests! -# for correct b-production you should use 'msel 1' -# 'mstj 26 0' = no mixing was defined in Btune as default -# 'mstj 22 2' = no K0S, Lambda0 decays in Pythia - defined in Btune as default - -include( BtuneOptionsFile ) - -# PythiaB.PythiaCommand += ["pysubs ckin 3 6.", -PythiaB.PythiaCommand += ["pysubs ckin 3 10.", - "pysubs ckin 9 -3.5", - "pysubs ckin 10 3.5", - "pysubs ckin 11 -3.5", - "pysubs ckin 12 3.5", - "pysubs msel 1"] - -#-------------------------------------------------------------- -# ------------- DEFINE SELECTION CUTS ------------- -#-------------------------------------------------------------- -# ------------- Selections on b quarks ------------- -# simulate only b-flavour events -PythiaB.flavour = 5. -# PythiaB force exclusive decay channels only on b=-5 side -# ------------------- b=5 --- and/or --- b=-5 -------- -PythiaB.cutbq = ["6.0 2.5 and 6.0 2.5"] -# PythiaB.cutbq = ["6.0 4.5 and 6.0 4.5"] -# ------------- LVL1 muon cuts 0=OFF 1=ON ------------- -PythiaB.lvl1cut = [ 1., 6., 2.5] -# ------------- LVL2 muon/electron cuts 0=OFF 1=ON------------- -PythiaB.lvl2cut = [ 0., 13., 6., 2.5] -# ------------- Offline cuts 0=OFF 1=ON ------------- -PythiaB.offcut = [ 1., 0.5, 2.5, 3., 2.5, 0.5, 2.5] -# -# ------------- Maximum number of tries for hard process ------------- -PythiaB.maxTriesHard = 100000. -# -# ------------- Number of repeated hadronization mhadr ------------- -PythiaB.mhadr = 100. -# ------------- For how many events store B-chain in NTUPLE ------------- -BSignalFilter = Algorithm( "BSignalFilter" ) -BSignalFilter.SignaltoNtup = NEventGen -# ------------- For how many events store B-chain in ascii ------------- -PythiaB.SignalDumptoAscii = 10. - -#-------------------------------------------------------------- -# CBNT output -#-------------------------------------------------------------- -CBNTAthenaAware=True -include( "CBNT_Athena/CBNT_AthenaAware_jobOptions.py" ) -include( "CBNT_Athena/CBNT_EventInfo_jobOptions.py" ) -# include( "RecExCommon/CBNT_Truth_jobOptions.py" ) -include( "CBNT_Truth_jobOptions.py" ) -CBNT_Truth.MaxNbParticles = 6000 # maximum number of particles in the ntuple -CBNT_Truth.MaxNbVertices = 6000 # maximum number of vertices in the ntuple -All.Enable = True # save ALL particles - -#-------------------------------------------------------------- -# Histogram & Ntuple Persistency -#-------------------------------------------------------------- -theApp.Dlls += [ "RootHistCnv" ] -theApp.HistogramPersistency = "ROOT" - -#-------------------------------------------------------------- -# NTuple output file -#-------------------------------------------------------------- -RootHistSvc = Service( "RootHistSvc" ) -NtupleSvc = Service( "NtupleSvc" ) -NtupleSvc.Output = ["FILE1 DATAFILE='pythiaB.root' TYP='ROOT' OPT='NEW'"] - -# Change since 12.0.3 -theApp.Dlls += [ "AnalysisTools" ] -THistSvc = Service ( "THistSvc" ) -THistSvc.Output = ["AANT DATAFILE='pythiaB.root' OPT='NEW'"] -theApp.TopAlg += [ "AANTupleStream" ] -AANTupleStream = Algorithm( "AANTupleStream" ) -AANTupleStream.ExtraRefNames = [ "" ] -AANTupleStream.OutputName = 'pythiaB.root' -AANTupleStream.ExistDataHeader = False -AANTupleStream.OutputLevel = INFO - -#---------------------------------------------------------------- # Pool persistency -#---------------------------------------------------------------- -include( "AthenaPoolCnvSvc/WriteAthenaPool_jobOptions.py" ) -include( "GeneratorObjectsAthenaPool/GeneratorObjectsAthenaPool_joboptions.py" ) -# 2101 = EventInfo -# 133273 = MCTruth (HepMC) -Stream1.ItemList += ["2101#*", "133273#*" ] -include("AthenaServices/AthenaSealSvc_joboptions.py" ) -AthenaSealSvc.CheckDictionary = TRUE -Stream1.OutputFile = "pythiaB.pool.root" - -#============================================================== -# -# End of job options file -# -############################################################### diff --git a/Generators/PythiaB/share/PythiaB_B0_DsPhiPi_Signal3.py b/Generators/PythiaB/share/PythiaB_B0_DsPhiPi_Signal3.py deleted file mode 100644 index 54e51fa4d91104588e3fd7d20aaec4140cd2989c..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/share/PythiaB_B0_DsPhiPi_Signal3.py +++ /dev/null @@ -1,217 +0,0 @@ -############################################################### -# -# Job options file for generation of B-events -# in user selected exclusive channel -# -# Decay channel: B0->Ds(Phi(K+K-)Pi)Pi -# -# Author: W. Walkowiak, 2006-04-02 -# (adjusted after a template provided by PythiaB) -# Changes: BE, 2006-12-11 -# Adjusted for B0->DsPi channel -# WW, 2006-12-12 -# added default options section -# -# $Id: PythiaB_B0_DsPhiPi_Signal3.py,v 1.2 2007-03-20 14:21:56 msmizans Exp $ -# -#============================================================== -# -varInit = dir() - -# default options (can be overwritten by command line options) -PythiaBDecayFlags = { - 'NEventGen' : 400, - 'BtuneOptionsFile' : "Btune.py" - } - -# set variable to default or from personalized JobOptions -# if not already set (code taken from RecExCommon) -for o in [ o for o in PythiaBDecayFlags.keys() if not o in varInit ]: - exec '%s = PythiaBDecayFlags["%s"]' % (o,o) - -#-------------------------------------------------------------- -# General Application Configuration options -#-------------------------------------------------------------- -#theApp.setup( MONTECARLO ) -include( "AthenaCommon/Atlas_Gen.UnixStandardJob.py" ) - -include( "PartPropSvc/PartPropSvc.py" ) - -#-------------------------------------------------------------- -# Private Application Configuration options -#-------------------------------------------------------------- -theApp.Dlls += [ "GaudiAlg" ] -theApp.Dlls += [ "TruthExamples", "PythiaB" ] -theApp.Dlls += [ "GaudiAud" ] -theApp.Dlls += [ "HbookCnv" ] -theApp.Dlls += [ "GeneratorFilters" ] -theAuditorSvc = AuditorSvc() -theAuditorSvc.Auditors = [ "ChronoAuditor" ] -#-------------------------------------------------------------- -# Algorithms -#-------------------------------------------------------------- -theApp.TopAlg = ["PythiaB" , "BSignalFilter"] -theApp.ExtSvc += ["AtRndmGenSvc"] -#-------------------------------------------------------------- -# Number of events to be accepted !! (default is 10) -# re-written if use B job submition script -# RunNumber, FirstEvent re-written if use B job submission script -#-------------------------------------------------------------- -theApp.EvtMax = NEventGen -EventSelector.RunNumber = 1 -EventSelector.FirstEvent = 1 -#-------------------------------------------------------------- -#User random number seeds - re-written if use B job submission script -#-------------------------------------------------------------- -AtRndmGenSvc = Service( "AtRndmGenSvc" ) -AtRndmGenSvc.Seeds = ["PYTHIA 4789899 989240512", "PYTHIA_INIT 820021 2347532"] -AtRndmGenSvc.ReadFromFile = True; -# Set output level threshold (2=DEBUG, 3=INFO, 4=WARNING, 5=ERROR, 6=FATAL ) -MessageSvc.OutputLevel = 3 -MessageSvc.defaultLimit = 9999999 # all messages -#-------------------------------------------------------------- -# PARAMETERS SPECIFIC TO PYTHIAB -#-------------------------------------------------------------- -#PythiaB.ForceBDecay = "no"; -PythiaB = Algorithm( "PythiaB" ) -PythiaB.ForceCDecay = "no" -#-------------------------------------------------------------- -# ------------- FORCE YOUR B CHANNEL HERE ------------- -#-------------------------------------------------------------- -# To force your B-decay channels decomment following 2 lines: -include( "CloseAntibQuark.py" ) -PythiaB.ForceBDecay = "yes" -# -# open your exclusive channel here B0 -> Ds pi with Ds->phi pi -# -# background channel B0->Ds+(phiPi+)Pi- is c.c. -# 898: B0 -> Ds+Pi- has to be created from B0 -> csbar - -# DXChannel has to be set before DXphipi.py is included -DXChannel = "Dsbarphipi" -include( "DXphipi.py" ) - -PythiaB.PythiaCommand += [ "pydat3 mdme 898 1 2", - "pydat3 mdme 898 2 0", - "pydat3 kfdp 898 1 431", - "pydat3 kfdp 898 2 -211", - "pydat3 kfdp 898 3 0", - "pydat3 kfdp 898 4 0", - "pydat3 mdme 831 1 1" ]; -PythiaB.ForceCDecay = "yes"; - -# -# w.w., 2006-04-02 revised: -# -# user_finsel.F decay particle channel -# -PythiaB.ForceDecayChannel = "DsPhiX"; -# -# Decay particle selection for DsPhiX: -# 0. (off)/ 1. (on) -- ordered as follows: -# 1 : PhiKK decay -- Phi -> K+K- -# ((from B0s, B0bar or B-) or (from B0sbar, B0 or B+)) -# 2 : DsPhi decay -- Ds*- -> Ds-X, Ds- -> Phi pi-, Phi -> K+K- -# (from B0s, B0bar or B-) or (from B0sbar, B0 or B+)) -# 3 : A1RhoPi decay -- a1 -> RhoPi (from B0s) -# 4 : RhoPiPi decay -- Rho -> Pi+Pi- (from B0s) -PythiaB.DecayChannelParameters = [1., 0., 0., 0.]; - -# -#-------------------------------------------------------------- -# -------- PYTHIA PARAMETERS OPTIMAL FOR BEAUTY PRODUCTION -- -#-------------------------------------------------------------- -# 'msel 5' is only for fast tests! -# for correct b-production you should use 'msel 1' -# 'mstj 26 0' = no mixing was defined in Btune as default -# 'mstj 22 2' = no K0S, Lambda0 decays in Pythia - defined in Btune as default - -include( BtuneOptionsFile ) - -# PythiaB.PythiaCommand += ["pysubs ckin 3 6.", -PythiaB.PythiaCommand += ["pysubs ckin 3 10.", - "pysubs ckin 9 -3.5", - "pysubs ckin 10 3.5", - "pysubs ckin 11 -3.5", - "pysubs ckin 12 3.5", - "pysubs msel 1"] -#-------------------------------------------------------------- -# ------------- DEFINE SELECTION CUTS ------------- -#-------------------------------------------------------------- -# ------------- Selections on b quarks ------------- -# simulate only b-flavour events -PythiaB.flavour = 5. -# PythiaB force exclusive decay channels only on b=-5 side -# ------------------- b=5 --- and/or --- b=-5 -------- -PythiaB.cutbq = ["6.0 2.5 and 6.0 2.5"] -# PythiaB.cutbq = ["6.0 4.5 and 6.0 4.5"] -# ------------- LVL1 muon cuts 0=OFF 1=ON ------------- -PythiaB.lvl1cut = [ 1., 6., 2.5] -# ------------- LVL2 muon/electron cuts 0=OFF 1=ON------------- -PythiaB.lvl2cut = [ 0., 13., 6., 2.5] -# ------------- Offline cuts 0=OFF 1=ON ------------- -PythiaB.offcut = [ 1., 0.5, 2.5, 3., 2.5, 0.5, 2.5] -# -# ------------- Maximum number of tries for hard process ------------- -PythiaB.maxTriesHard = 50000. -# -# ------------- Number of repeated hadronization mhadr ------------- -PythiaB.mhadr = 100. -# ------------- For how many events store B-chain in NTUPLE ------------- -BSignalFilter = Algorithm( "BSignalFilter" ) -BSignalFilter.SignaltoNtup = NEventGen -# ------------- For how many events store B-chain in ascii ------------- -PythiaB.SignalDumptoAscii = 10. - -#-------------------------------------------------------------- -# CBNT output -#-------------------------------------------------------------- -CBNTAthenaAware=True -include( "CBNT_Athena/CBNT_AthenaAware_jobOptions.py" ) -include( "CBNT_Athena/CBNT_EventInfo_jobOptions.py" ) -# include( "RecExCommon/CBNT_Truth_jobOptions.py" ) -include( "CBNT_Truth_jobOptions.py" ) -CBNT_Truth.MaxNbParticles = 6000 # maximum number of particles in the ntuple -CBNT_Truth.MaxNbVertices = 6000 # maximum number of vertices in the ntuple -All.Enable = True # save ALL particles - -#-------------------------------------------------------------- -# Histogram & Ntuple Persistency -#-------------------------------------------------------------- -theApp.Dlls += [ "RootHistCnv" ] -theApp.HistogramPersistency = "ROOT" - -#-------------------------------------------------------------- -# NTuple output file -#-------------------------------------------------------------- -RootHistSvc = Service( "RootHistSvc" ) -NtupleSvc = Service( "NtupleSvc" ) -NtupleSvc.Output = ["FILE1 DATAFILE='pythiaB.root' TYP='ROOT' OPT='NEW'"] - -# Change since 12.0.3 -theApp.Dlls += [ "AnalysisTools" ] -THistSvc = Service ( "THistSvc" ) -THistSvc.Output = ["AANT DATAFILE='pythiaB.root' OPT='NEW'"] -theApp.TopAlg += [ "AANTupleStream" ] -AANTupleStream = Algorithm( "AANTupleStream" ) -AANTupleStream.ExtraRefNames = [ "" ] -AANTupleStream.OutputName = 'pythiaB.root' -AANTupleStream.ExistDataHeader = False -AANTupleStream.OutputLevel = INFO - -#---------------------------------------------------------------- # Pool persistency -#---------------------------------------------------------------- -include( "AthenaPoolCnvSvc/WriteAthenaPool_jobOptions.py" ) -include( "GeneratorObjectsAthenaPool/GeneratorObjectsAthenaPool_joboptions.py" ) -# 2101 = EventInfo -# 133273 = MCTruth (HepMC) -Stream1.ItemList += ["2101#*", "133273#*" ] -include("AthenaServices/AthenaSealSvc_joboptions.py" ) -AthenaSealSvc.CheckDictionary = TRUE -Stream1.OutputFile = "pythiaB.pool.root" - -#============================================================== -# -# End of job options file -# -############################################################### diff --git a/Generators/PythiaB/share/PythiaB_Bp_D0MuNu_Signal3.py b/Generators/PythiaB/share/PythiaB_Bp_D0MuNu_Signal3.py deleted file mode 100644 index 07ac577f9427dca5eb2ec3144d355d5cabfab0e0..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/share/PythiaB_Bp_D0MuNu_Signal3.py +++ /dev/null @@ -1,237 +0,0 @@ -############################################################### -# -# Job options file for generation of B-events -# in user selected exclusive channel -# -# Decay channel: Bp->D0 mu nu -# -# Author : W. Walkowiak, 2006-04-02 -# (adjusted after a template provided by PythiaB) -# changed: 2006-09-07, w.w. -- added Btune options -# 2006-11-10, w.w. -- adjusted for release 12 -# -# $Id: PythiaB_Bp_D0MuNu_Signal3.py,v 1.2 2007-03-20 14:22:12 msmizans Exp $ -# -#============================================================== -# -varInit = dir() - -# default options (can be overwritten by command line options) -PythiaBDecayFlags = { - 'BtuneOptionsFile' : "Btune.py" - } - -# set variable to default or from personalized JobOptions -# if not already set (code taken from RecExCommon) -for o in [ o for o in PythiaBDecayFlags.keys() if not o in varInit ]: - exec '%s = PythiaBDecayFlags["%s"]' % (o,o) - -#-------------------------------------------------------------- -# General Application Configuration options -#-------------------------------------------------------------- -#theApp.setup( MONTECARLO ) -include( "AthenaCommon/Atlas_Gen.UnixStandardJob.py" ) - -include( "PartPropSvc/PartPropSvc.py" ) - -#-------------------------------------------------------------- -# Private Application Configuration options -#-------------------------------------------------------------- -theApp.Dlls += [ "GaudiAlg" ] -theApp.Dlls += [ "TruthExamples", "PythiaB" ] -theApp.Dlls += [ "GaudiAud" ] -theApp.Dlls += [ "HbookCnv" ] -theApp.Dlls += [ "GeneratorFilters" ] -theAuditorSvc = AuditorSvc() -theAuditorSvc.Auditors = [ "ChronoAuditor" ] -#-------------------------------------------------------------- -# Algorithms -#-------------------------------------------------------------- -theApp.TopAlg = ["PythiaB" , "BSignalFilter"] -theApp.ExtSvc += ["AtRndmGenSvc"] -#-------------------------------------------------------------- -# Number of events to be accepted !! (default is 10) -# re-written if use B job submition script -# RunNumber, FirstEvent re-written if use B job submission script -#-------------------------------------------------------------- -theApp.EvtMax = 100 -EventSelector.RunNumber = 1 -EventSelector.FirstEvent = 1 -#-------------------------------------------------------------- -#User random number seeds - re-written if use B job submission script -#-------------------------------------------------------------- -AtRndmGenSvc = Service( "AtRndmGenSvc" ) -AtRndmGenSvc.Seeds = ["PYTHIA 4789899 989240512", "PYTHIA_INIT 820021 2347532"] -AtRndmGenSvc.ReadFromFile = True; -# Set output level threshold (2=DEBUG, 3=INFO, 4=WARNING, 5=ERROR, 6=FATAL ) -MessageSvc.OutputLevel = 3 -#-------------------------------------------------------------- -# PARAMETERS SPECIFIC TO PYTHIAB -#-------------------------------------------------------------- -#PythiaB.ForceBDecay = "no"; -PythiaB = Algorithm( "PythiaB" ) -PythiaB.ForceCDecay = "no" -#-------------------------------------------------------------- -# ------------- FORCE YOUR B CHANNEL HERE ------------- -#-------------------------------------------------------------- -# To force your B-decay channels decomment following 2 lines: -include( "CloseAntibQuark.py" ) -PythiaB.ForceBDecay = "yes" -# -# open your exclusive channel here Bs -> D0bar mu+ nu with -# -# close all D0bar decay channels here -# include( "CloseD0bar.py" ) - -# 831: Ds+ -> PhiPi+ -# 851: D*s+ -> Ds+gam -# 852: D*s+ -> Ds+pi0 -# 953: Bs -> Ds-e+nu -# 954: Bs -> D*s-e+nu -# 959: Bs -> Ds-mu+nu -# 960: Bs -> D*s-mu+nu -# 965: Bs -> Ds-tau+nu -# 966: Bs -> D*s-tau+nu -# 967: Bs -> Ds-Pi+ -# 968: Bs -> Ds-rho+ -# 969: Bs -> Ds-a1+ -# 970: Bs -> D*s-Pi+ -# 971: Bs -> D*s-rho+ -# 972: Bs -> D*s-a1+ -# 973: Bs -> Ds-Ds+ -# 974 Bs -> Ds-D*s+ -# 975 Bs -> D*s-Ds+ -# 976 Bs -> D*s-D*s+ -# -# 914 B+ -> D0bar mu+ nu_mu - -PythiaB.PythiaCommand += [ "pydat3 mdme 914 1 1" - ]; - -PythiaB.ForceCDecay = "yes"; -# -# w.w., 2006-04-02 revised: -# -# user_finsel.F decay particle channel -# -## PythiaB.ForceDecayChannel = "DsPhiX"; -# -# Decay particle selection for DsPhiX: -# 0. (off)/ 1. (on) -- ordered as follows: -# 1 : PhiKK decay -- Phi -> K+K- -# ((from B0s, B0bar or B-) or (from B0sbar, B0 or B+)) -# 2 : DsPhi decay -- Ds*- -> Ds-X, Ds- -> Phi pi-, Phi -> K+K- -# (from B0s, B0bar or B-) or (from B0sbar, B0 or B+)) -# 3 : A1RhoPi decay -- a1 -> RhoPi (from B0s) -# 4 : RhoPiPi decay -- Rho -> Pi+Pi- (from B0s) -# -PythiaB.DecayChannelParameters = [0., 0., 0., 0.]; - -# -#-------------------------------------------------------------- -# -------- PYTHIA PARAMETERS OPTIMAL FOR BEAUTY PRODUCTION -- -#-------------------------------------------------------------- -# 'msel 5' is only for fast tests! -# for correct b-production you should use 'msel 1' -# 'mstj 26 0' = no mixing was defined in Btune as default -# 'mstj 22 2' = no K0S, Lambda0 decays in Pythia - defined in Btune as default - -include( BtuneOptionsFile ) - -# PythiaB.PythiaCommand += ["pysubs ckin 3 6.", -PythiaB.PythiaCommand += ["pysubs ckin 3 10.", - "pysubs ckin 9 -3.5", - "pysubs ckin 10 3.5", - "pysubs ckin 11 -3.5", - "pysubs ckin 12 3.5", - "pysubs msel 1"] - -#-------------------------------------------------------------- -# ------------- DEFINE SELECTION CUTS ------------- -#-------------------------------------------------------------- -# ------------- Selections on b quarks ------------- -# simulate only b-flavour events -PythiaB.flavour = 5. -# PythiaB force exclusive decay channels only on b=-5 side -# ------------------- b=5 --- and/or --- b=-5 -------- -PythiaB.cutbq = ["6.0 2.5 and 6.0 2.5"] -# PythiaB.cutbq = ["6.0 4.5 and 6.0 4.5"] -# ------------- LVL1 muon cuts 0=OFF 1=ON ------------- -PythiaB.lvl1cut = [ 1., 6., 2.5] -# ------------- LVL2 muon/electron cuts 0=OFF 1=ON------------- -PythiaB.lvl2cut = [ 1., 13., 5., 2.5] -# ------------- Offline cuts 0=OFF 1=ON ------------- -PythiaB.offcut = [ 1., 0.5, 2.5, 3., 2.5, 0.5, 2.5] -# -# ------------- Maximum number of tries for hard process ------------- -PythiaB.maxTriesHard = 100000. -# -# ------------- Number of repeated hadronization mhadr ------------- -PythiaB.mhadr = 100. -# ------------- For how many events store B-chain in NTUPLE ------------- -BSignalFilter = Algorithm( "BSignalFilter" ) -BSignalFilter.SignaltoNtup = 400 -# ------------- For how many events store B-chain in ascii ------------- -PythiaB.SignalDumptoAscii = 10. - -#-------------------------------------------------------------- -# CBNT output -#-------------------------------------------------------------- -# include( "CBNT_Athena/CBNT_Athena_jobOptions.py" ) -# include( "CBNT_Athena/CBNT_EventInfo_jobOptions.py" ) -# include( "RecExCommon/CBNT_Truth_jobOptions.py" ) -# CBNT_Truth.MaxNbParticles = 6000 # maximum number of particles in the ntuple -# CBNT_Truth.MaxNbVertices = 6000 # maximum number of vertices in the ntuple -# CBNT_Athena.NtupleLocID = "/FILE1/CBNT/t3333" # name of the tree -# All.Enable = True # save ALL particles - -CBNTAthenaAware=True -include( "CBNT_Athena/CBNT_AthenaAware_jobOptions.py" ) -include( "CBNT_Athena/CBNT_EventInfo_jobOptions.py" ) -# include( "RecExCommon/CBNT_Truth_jobOptions.py" ) -include( "CBNT_Truth_jobOptions.py" ) -CBNT_Truth.MaxNbParticles = 6000 # maximum number of particles in the ntuple -CBNT_Truth.MaxNbVertices = 6000 # maximum number of vertices in the ntuple -# CBNT_AthenaAware.NtupleLocID = "/FILE1/CBNT/t3333" # name of the tree -All.Enable = True # save ALL particles - -#-------------------------------------------------------------- -# Histogram & Ntuple Persistency -#-------------------------------------------------------------- -theApp.Dlls += [ "RootHistCnv" ] -theApp.HistogramPersistency = "ROOT" - -#-------------------------------------------------------------- -# NTuple output file -#-------------------------------------------------------------- -RootHistSvc = Service( "RootHistSvc" ) -NtupleSvc = Service( "NtupleSvc" ) -NtupleSvc.Output = ["FILE1 DATAFILE='pythiaB.root' TYP='ROOT' OPT='NEW'"] - -# Change since 12.0.3 -theApp.Dlls += [ "AnalysisTools" ] -THistSvc = Service ( "THistSvc" ) -THistSvc.Output = ["AANT DATAFILE='pythiaB.root' OPT='NEW'"] -theApp.TopAlg += [ "AANTupleStream" ] -AANTupleStream = Algorithm( "AANTupleStream" ) -AANTupleStream.ExtraRefNames = [ "" ] -AANTupleStream.OutputName = 'pythiaB.root' -AANTupleStream.ExistDataHeader = False -AANTupleStream.OutputLevel = INFO - -#---------------------------------------------------------------- # Pool persistency -#---------------------------------------------------------------- -include( "AthenaPoolCnvSvc/WriteAthenaPool_jobOptions.py" ) -include( "GeneratorObjectsAthenaPool/GeneratorObjectsAthenaPool_joboptions.py" ) -# 2101 = EventInfo -# 133273 = MCTruth (HepMC) -Stream1.ItemList += ["2101#*", "133273#*" ] -include("AthenaServices/AthenaSealSvc_joboptions.py" ) -AthenaSealSvc.CheckDictionary = TRUE -Stream1.OutputFile = "pythiaB.pool.root" - -#============================================================== -# -# End of job options file -# -############################################################### diff --git a/Generators/PythiaB/share/PythiaB_Bs_DsPhiMuNu_Signal3.py b/Generators/PythiaB/share/PythiaB_Bs_DsPhiMuNu_Signal3.py deleted file mode 100644 index 07e0457aecaf738b544e861e17ad8651b6d9e48a..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/share/PythiaB_Bs_DsPhiMuNu_Signal3.py +++ /dev/null @@ -1,184 +0,0 @@ -############################################################### -# -# Job options file for generation of B-events -# in user selected exclusive channel -# -# Decay channel: B0s->Ds(Phi(K+K-)Pi)A1MuNu -# -# Author: W. Walkowiak, 2006-04-02 -# (adjusted after a template provided by PythiaB) -# Changes: WW, 2006-04-13 -# Removed CBNT_ lines; added RootHistSvc again -# -#============================================================== -#-------------------------------------------------------------- -# General Application Configuration options -#-------------------------------------------------------------- -#theApp.setup( MONTECARLO ) -include( "AthenaCommon/Atlas_Gen.UnixStandardJob.py" ) - -include( "PartPropSvc/PartPropSvc.py" ) - -#-------------------------------------------------------------- -# Private Application Configuration options -#-------------------------------------------------------------- -theApp.Dlls += [ "GaudiAlg" ] -theApp.Dlls += [ "TruthExamples", "PythiaB" ] -theApp.Dlls += [ "GaudiAud" ] -theApp.Dlls += [ "HbookCnv" ] -theApp.Dlls += [ "GeneratorFilters" ] -theAuditorSvc = AuditorSvc() -theAuditorSvc.Auditors = [ "ChronoAuditor" ] -#-------------------------------------------------------------- -# Algorithms -#-------------------------------------------------------------- -theApp.TopAlg = ["PythiaB" , "BSignalFilter"] -theApp.ExtSvc += ["AtRndmGenSvc"] -#-------------------------------------------------------------- -# Number of events to be accepted !! (default is 10) -# re-written if use B job submition script -# RunNumber, FirstEvent re-written if use B job submission script -#-------------------------------------------------------------- -theApp.EvtMax = 100 -EventSelector.RunNumber = 1 -EventSelector.FirstEvent = 1 -#-------------------------------------------------------------- -#User random number seeds - re-written if use B job submission script -#-------------------------------------------------------------- -AtRndmGenSvc = Service( "AtRndmGenSvc" ) -AtRndmGenSvc.Seeds = ["PYTHIA 4789899 989240512", "PYTHIA_INIT 820021 2347532"] -AtRndmGenSvc.ReadFromFile = True; -# Set output level threshold (2=DEBUG, 3=INFO, 4=WARNING, 5=ERROR, 6=FATAL ) -MessageSvc.OutputLevel = 3 -#-------------------------------------------------------------- -# PARAMETERS SPECIFIC TO PYTHIAB -#-------------------------------------------------------------- -#PythiaB.ForceBDecay = "no"; -PythiaB = Algorithm( "PythiaB" ) -PythiaB.ForceCDecay = "no" -#-------------------------------------------------------------- -# ------------- FORCE YOUR B CHANNEL HERE ------------- -#-------------------------------------------------------------- -# To force your B-decay channels decomment following 2 lines: -include( "CloseAntibQuark.py" ) -PythiaB.ForceBDecay = "yes" -# -# open your exclusive channel here Bs -> Ds mu nu with Ds->phi pi -# -include( "Dsphipi.py" ) -# 959: Bs -> Ds-mu+nu -# 967: Bs -> Ds-Pi+ -# 969: Bs -> Ds-a1+ -# 831: Ds- -> PhiPi- - -PythiaB.PythiaCommand += [ "pydat3 mdme 959 1 1", - "pydat3 mdme 831 1 1" ]; -PythiaB.ForceCDecay = "yes"; - -# -# w.w., 2006-04-02 revised: -# -# user_finsel.F decay particle channel -# -PythiaB.ForceDecayChannel = "DsPhiX"; -# -# Decay particle selection for DsPhiX: -# 0. (off)/ 1. (on) -- ordered as follows: -# 1 : PhiKK decay -- Phi -> K+K- -# ((from B0s, B0bar or B-) or (from B0sbar, B0 or B+)) -# 2 : DsPhi decay -- Ds*- -> Ds-X, Ds- -> Phi pi-, Phi -> K+K- -# (from B0s, B0bar or B-) or (from B0sbar, B0 or B+)) -# 3 : A1RhoPi decay -- a1 -> RhoPi (from B0s) -# 4 : RhoPiPi decay -- Rho -> Pi+Pi- (from B0s) -# -PythiaB.DecayChannelParameters = [1., 0., 0., 0.]; - -# -#-------------------------------------------------------------- -# -------- PYTHIA PARAMETERS OPTIMAL FOR BEAUTY PRODUCTION -- -#-------------------------------------------------------------- -# 'msel 5' is only for fast tests! -# for correct b-production you should use 'msel 1' -# 'mstj 26 0' = no mixing was defined in Btune as default -# 'mstj 22 2' = no K0S, Lambda0 decays in Pythia - defined in Btune as default - -include( "Btune.py" ) - -# PythiaB.PythiaCommand += ["pysubs ckin 3 6.", -PythiaB.PythiaCommand += ["pysubs ckin 3 10.", - "pysubs ckin 9 -3.5", - "pysubs ckin 10 3.5", - "pysubs ckin 11 -3.5", - "pysubs ckin 12 3.5", - "pysubs msel 1"] -#-------------------------------------------------------------- -# ------------- DEFINE SELECTION CUTS ------------- -#-------------------------------------------------------------- -# ------------- Selections on b quarks ------------- -# simulate only b-flavour events -PythiaB.flavour = 5. -# PythiaB force exclusive decay channels only on b=-5 side -# ------------------- b=5 --- and/or --- b=-5 -------- -PythiaB.cutbq = ["6.0 2.5 and 6.0 2.5"] -# PythiaB.cutbq = ["6.0 4.5 and 6.0 4.5"] -# ------------- LVL1 muon cuts 0=OFF 1=ON ------------- -PythiaB.lvl1cut = [ 1., 6., 2.5] -# ------------- LVL2 muon/electron cuts 0=OFF 1=ON------------- -# PythiaB.lvl2cut = [ 0., 13., 6., 2.5] -PythiaB.lvl2cut = [ 1., 13., 5., 2.5] -# ------------- Offline cuts 0=OFF 1=ON ------------- -PythiaB.offcut = [ 1., 0.5, 2.5, 3., 2.5, 0.5, 2.5] -# -# ------------- Maximum number of tries for hard process ------------- -PythiaB.maxTriesHard = 500000. -# -# ------------- Number of repeated hadronization mhadr ------------- -PythiaB.mhadr = 100. -# ------------- For how many events store B-chain in NTUPLE ------------- -BSignalFilter = Algorithm( "BSignalFilter" ) -BSignalFilter.SignaltoNtup = 50 -# ------------- For how many events store B-chain in ascii ------------- -PythiaB.SignalDumptoAscii = 10. - -#-------------------------------------------------------------- -# Histogram & Ntuple Persistency -#-------------------------------------------------------------- -#theApp.Dlls += [ "RootHistCnv" ] -#theApp.HistogramPersistency = "ROOT" - -#-------------------------------------------------------------- -# NTuple output file -#-------------------------------------------------------------- -#RootHistSvc = Service( "RootHistSvc" ) -#NtupleSvc = Service( "NtupleSvc" ) -#NtupleSvc.Output = ["FILE1 DATAFILE='pythiaB.root' TYP='ROOT' OPT='NEW'"] - -# Change since 12.0.3 -theApp.Dlls += [ "AnalysisTools" ] -THistSvc = Service ( "THistSvc" ) -THistSvc.Output = ["AANT DATAFILE='pythiaB.root' OPT='NEW'"] -theApp.TopAlg += [ "AANTupleStream" ] -AANTupleStream = Algorithm( "AANTupleStream" ) -AANTupleStream.ExtraRefNames = [ "" ] -AANTupleStream.OutputName = 'pythiaB.root' -AANTupleStream.ExistDataHeader = False -AANTupleStream.OutputLevel = VERBOSE - - - -#---------------------------------------------------------------- # Pool persistency -#---------------------------------------------------------------- -include( "AthenaPoolCnvSvc/WriteAthenaPool_jobOptions.py" ) -include( "GeneratorObjectsAthenaPool/GeneratorObjectsAthenaPool_joboptions.py" ) -# 2101 = EventInfo -# 133273 = MCTruth (HepMC) -Stream1.ItemList += ["2101#*", "133273#*" ] -include("AthenaServices/AthenaSealSvc_joboptions.py" ) -AthenaSealSvc.CheckDictionary = TRUE -Stream1.OutputFile = "pythiaB.pool.root" - -#============================================================== -# -# End of job options file -# -############################################################### diff --git a/Generators/PythiaB/share/PythiaB_Bs_DsStDsPhiA1_Signal3.py b/Generators/PythiaB/share/PythiaB_Bs_DsStDsPhiA1_Signal3.py deleted file mode 100644 index 87f02a859fc22f6c6800fbb2abf8fac95557d7c2..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/share/PythiaB_Bs_DsStDsPhiA1_Signal3.py +++ /dev/null @@ -1,235 +0,0 @@ -############################################################### -# -# Job options file for generation of B-events -# in user selected exclusive channel -# -# Decay channel: B0s->DsSt(Ds(Phi(K+K-)Pi)X)A1(Rho(Pi+Pi-)Pi) -# -# Author : W. Walkowiak, 2006-04-02 -# (adjusted after a template provided by PythiaB) -# changed: 2006-09-07, w.w. -- added Btune options -# 2006-11-10, w.w. -- adjusted for release 12 -# -# $Id: PythiaB_Bs_DsStDsPhiA1_Signal3.py,v 1.2 2007-03-20 14:22:55 msmizans Exp $ -# -#============================================================== -# -varInit = dir() - -# default options (can be overwritten by command line options) -PythiaBDecayFlags = { - 'BtuneOptionsFile' : "Btune.py" - } - -# set variable to default or from personalized JobOptions -# if not already set (code taken from RecExCommon) -for o in [ o for o in PythiaBDecayFlags.keys() if not o in varInit ]: - exec '%s = PythiaBDecayFlags["%s"]' % (o,o) - -#-------------------------------------------------------------- -# General Application Configuration options -#-------------------------------------------------------------- -#theApp.setup( MONTECARLO ) -include( "AthenaCommon/Atlas_Gen.UnixStandardJob.py" ) - -include( "PartPropSvc/PartPropSvc.py" ) - -#-------------------------------------------------------------- -# Private Application Configuration options -#-------------------------------------------------------------- -theApp.Dlls += [ "GaudiAlg" ] -theApp.Dlls += [ "TruthExamples", "PythiaB" ] -theApp.Dlls += [ "GaudiAud" ] -theApp.Dlls += [ "HbookCnv" ] -theApp.Dlls += [ "GeneratorFilters" ] -theAuditorSvc = AuditorSvc() -theAuditorSvc.Auditors = [ "ChronoAuditor" ] -#-------------------------------------------------------------- -# Algorithms -#-------------------------------------------------------------- -theApp.TopAlg = ["PythiaB" , "BSignalFilter"] -theApp.ExtSvc += ["AtRndmGenSvc"] -#-------------------------------------------------------------- -# Number of events to be accepted !! (default is 10) -# re-written if use B job submition script -# RunNumber, FirstEvent re-written if use B job submission script -#-------------------------------------------------------------- -theApp.EvtMax = 100 -EventSelector.RunNumber = 1 -EventSelector.FirstEvent = 1 -#-------------------------------------------------------------- -#User random number seeds - re-written if use B job submission script -#-------------------------------------------------------------- -AtRndmGenSvc = Service( "AtRndmGenSvc" ) -AtRndmGenSvc.Seeds = ["PYTHIA 4789899 989240512", "PYTHIA_INIT 820021 2347532"] -AtRndmGenSvc.ReadFromFile = True; -# Set output level threshold (2=DEBUG, 3=INFO, 4=WARNING, 5=ERROR, 6=FATAL ) -MessageSvc.OutputLevel = 3 -#-------------------------------------------------------------- -# PARAMETERS SPECIFIC TO PYTHIAB -#-------------------------------------------------------------- -#PythiaB.ForceBDecay = "no"; -PythiaB = Algorithm( "PythiaB" ) -PythiaB.ForceCDecay = "no" -#-------------------------------------------------------------- -# ------------- FORCE YOUR B CHANNEL HERE ------------- -#-------------------------------------------------------------- -# To force your B-decay channels decomment following 2 lines: -include( "CloseAntibQuark.py" ) -PythiaB.ForceBDecay = "yes" -# -# open your exclusive channel here Bs -> Ds* a1 with Ds* -> Ds X, Ds->phi pi -# -include( "Dsphipi.py" ) - -# 831: Ds+ -> PhiPi+ -# 851: D*s+ -> Ds+gam -# 852: D*s+ -> Ds+pi0 -# 953: Bs -> Ds-e+nu -# 954: Bs -> D*s-e+nu -# 959: Bs -> Ds-mu+nu -# 960: Bs -> D*s-mu+nu -# 965: Bs -> Ds-tau+nu -# 966: Bs -> D*s-tau+nu -# 967: Bs -> Ds-Pi+ -# 968: Bs -> Ds-rho+ -# 969: Bs -> Ds-a1+ -# 970: Bs -> D*s-Pi+ -# 971: Bs -> D*s-rho+ -# 972: Bs -> D*s-a1+ -# 973: Bs -> Ds-Ds+ -# 974 Bs -> Ds-D*s+ -# 975 Bs -> D*s-Ds+ -# 976 Bs -> D*s-D*s+ - -PythiaB.PythiaCommand += [ "pydat3 mdme 972 1 1", - "pydat3 mdme 851 1 1", - "pydat3 mdme 852 1 1", - "pydat3 mdme 831 1 1" ]; -PythiaB.ForceCDecay = "yes"; -# -# w.w., 2006-04-02 revised: -# -# user_finsel.F decay particle channel -# -PythiaB.ForceDecayChannel = "DsPhiX"; -# -# Decay particle selection for DsPhiX: -# 0. (off)/ 1. (on) -- ordered as follows: -# 1 : PhiKK decay -- Phi -> K+K- -# ((from B0s, B0bar or B-) or (from B0sbar, B0 or B+)) -# 2 : DsPhi decay -- Ds*- -> Ds-X, Ds- -> Phi pi-, Phi -> K+K- -# (from B0s, B0bar or B-) or (from B0sbar, B0 or B+)) -# 3 : A1RhoPi decay -- a1 -> RhoPi (from B0s) -# 4 : RhoPiPi decay -- Rho -> Pi+Pi- (from B0s) -# -PythiaB.DecayChannelParameters = [0., 1., 1., 1.]; - -# -#-------------------------------------------------------------- -# -------- PYTHIA PARAMETERS OPTIMAL FOR BEAUTY PRODUCTION -- -#-------------------------------------------------------------- -# 'msel 5' is only for fast tests! -# for correct b-production you should use 'msel 1' -# 'mstj 26 0' = no mixing was defined in Btune as default -# 'mstj 22 2' = no K0S, Lambda0 decays in Pythia - defined in Btune as default - -include( BtuneOptionsFile ) - -# PythiaB.PythiaCommand += ["pysubs ckin 3 6.", -PythiaB.PythiaCommand += ["pysubs ckin 3 10.", - "pysubs ckin 9 -3.5", - "pysubs ckin 10 3.5", - "pysubs ckin 11 -3.5", - "pysubs ckin 12 3.5", - "pysubs msel 1"] - -#-------------------------------------------------------------- -# ------------- DEFINE SELECTION CUTS ------------- -#-------------------------------------------------------------- -# ------------- Selections on b quarks ------------- -# simulate only b-flavour events -PythiaB.flavour = 5. -# PythiaB force exclusive decay channels only on b=-5 side -# ------------------- b=5 --- and/or --- b=-5 -------- -PythiaB.cutbq = ["6.0 2.5 and 6.0 2.5"] -# PythiaB.cutbq = ["6.0 4.5 and 6.0 4.5"] -# ------------- LVL1 muon cuts 0=OFF 1=ON ------------- -PythiaB.lvl1cut = [ 1., 6., 2.5] -# ------------- LVL2 muon/electron cuts 0=OFF 1=ON------------- -PythiaB.lvl2cut = [ 0., 13., 6., 2.5] -# ------------- Offline cuts 0=OFF 1=ON ------------- -PythiaB.offcut = [ 1., 0.5, 2.5, 3., 2.5, 0.5, 2.5] -# -# ------------- Maximum number of tries for hard process ------------- -PythiaB.maxTriesHard = 100000. -# -# ------------- Number of repeated hadronization mhadr ------------- -PythiaB.mhadr = 100. -# ------------- For how many events store B-chain in NTUPLE ------------- -BSignalFilter = Algorithm( "BSignalFilter" ) -BSignalFilter.SignaltoNtup = 400 -# ------------- For how many events store B-chain in ascii ------------- -PythiaB.SignalDumptoAscii = 10. - -#-------------------------------------------------------------- -# CBNT output -#-------------------------------------------------------------- -# include( "CBNT_Athena/CBNT_Athena_jobOptions.py" ) -# include( "CBNT_Athena/CBNT_EventInfo_jobOptions.py" ) -# include( "RecExCommon/CBNT_Truth_jobOptions.py" ) -# CBNT_Truth.MaxNbParticles = 6000 # maximum number of particles in the ntuple -# CBNT_Truth.MaxNbVertices = 6000 # maximum number of vertices in the ntuple -# CBNT_Athena.NtupleLocID = "/FILE1/CBNT/t3333" # name of the tree -# All.Enable = True # save ALL particles - -CBNTAthenaAware=True -include( "CBNT_Athena/CBNT_AthenaAware_jobOptions.py" ) -include( "CBNT_Athena/CBNT_EventInfo_jobOptions.py" ) -# include( "RecExCommon/CBNT_Truth_jobOptions.py" ) -include( "CBNT_Truth_jobOptions.py" ) -CBNT_Truth.MaxNbParticles = 6000 # maximum number of particles in the ntuple -CBNT_Truth.MaxNbVertices = 6000 # maximum number of vertices in the ntuple -# CBNT_AthenaAware.NtupleLocID = "/FILE1/CBNT/t3333" # name of the tree -All.Enable = True # save ALL particles - -#-------------------------------------------------------------- -# Histogram & Ntuple Persistency -#-------------------------------------------------------------- -theApp.Dlls += [ "RootHistCnv" ] -theApp.HistogramPersistency = "ROOT" - -#-------------------------------------------------------------- -# NTuple output file -#-------------------------------------------------------------- -RootHistSvc = Service( "RootHistSvc" ) -NtupleSvc = Service( "NtupleSvc" ) -NtupleSvc.Output = ["FILE1 DATAFILE='pythiaB.root' TYP='ROOT' OPT='NEW'"] - -# Change since 12.0.3 -theApp.Dlls += [ "AnalysisTools" ] -THistSvc = Service ( "THistSvc" ) -THistSvc.Output = ["AANT DATAFILE='pythiaB.root' OPT='NEW'"] -theApp.TopAlg += [ "AANTupleStream" ] -AANTupleStream = Algorithm( "AANTupleStream" ) -AANTupleStream.ExtraRefNames = [ "" ] -AANTupleStream.OutputName = 'pythiaB.root' -AANTupleStream.ExistDataHeader = False -AANTupleStream.OutputLevel = INFO - -#---------------------------------------------------------------- # Pool persistency -#---------------------------------------------------------------- -include( "AthenaPoolCnvSvc/WriteAthenaPool_jobOptions.py" ) -include( "GeneratorObjectsAthenaPool/GeneratorObjectsAthenaPool_joboptions.py" ) -# 2101 = EventInfo -# 133273 = MCTruth (HepMC) -Stream1.ItemList += ["2101#*", "133273#*" ] -include("AthenaServices/AthenaSealSvc_joboptions.py" ) -AthenaSealSvc.CheckDictionary = TRUE -Stream1.OutputFile = "pythiaB.pool.root" - -#============================================================== -# -# End of job options file -# -############################################################### diff --git a/Generators/PythiaB/share/PythiaB_Bs_GammaMuMu_Signal.py b/Generators/PythiaB/share/PythiaB_Bs_GammaMuMu_Signal.py deleted file mode 100644 index b3458eb19ecc135d656c95ac3584b6d7c61ba085..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/share/PythiaB_Bs_GammaMuMu_Signal.py +++ /dev/null @@ -1,166 +0,0 @@ -############################################################### -# -# Job options file for generation of B-events -# in user selected exclusive channel -# -#============================================================== -#-------------------------------------------------------------- -# General Application Configuration options -#-------------------------------------------------------------- -#theApp.setup( MONTECARLO ) -include( "AthenaCommon/Atlas_Gen.UnixStandardJob.py" ) - -include( "PartPropSvc/PartPropSvc.py" ) - -#-------------------------------------------------------------- -# Private Application Configuration options -#-------------------------------------------------------------- -theApp.Dlls += [ "GaudiAlg" ] -theApp.Dlls += [ "TruthExamples", "PythiaB" ] -theApp.Dlls += [ "GaudiAud" ] -theApp.Dlls += [ "HbookCnv" ] -theApp.Dlls += [ "GeneratorFilters" ] -theAuditorSvc = AuditorSvc() -theAuditorSvc.Auditors = [ "ChronoAuditor" ] -#-------------------------------------------------------------- -# Algorithms -#-------------------------------------------------------------- -theApp.TopAlg = ["PythiaB" , "BSignalFilter"] -theApp.ExtSvc += ["AtRndmGenSvc"] -#-------------------------------------------------------------- -# Number of events to be accepted !! (default is 10) -# re-written if use B job submition script -# RunNumber, FirstEvent re-written if use B job submition script -#-------------------------------------------------------------- -theApp.EvtMax = 50 -EventSelector.RunNumber = 1 -EventSelector.FirstEvent = 1 -#-------------------------------------------------------------- -#User random number seeds - re-written if use B job submition script -#-------------------------------------------------------------- -AtRndmGenSvc = Service( "AtRndmGenSvc" ) -AtRndmGenSvc.Seeds = ["PYTHIA 4789899 989240512", "PYTHIA_INIT 820021 2347532"] -# AtRndmGenSvc.ReadFromFile = true; -# Set output level threshold (2=DEBUG, 3=INFO, 4=WARNING, 5=ERROR, 6=FATAL ) -MessageSvc.OutputLevel = 3 -#-------------------------------------------------------------- -# PARAMETERS SPECIFIC TO PYTHIAB -#-------------------------------------------------------------- -#PythiaB.ForceBDecay = "no"; -PythiaB = Algorithm( "PythiaB" ) -PythiaB.ForceCDecay = "no" -#-------------------------------------------------------------- -# ------------- FORCE YOUR B CHANNEL HERE ------------- -#-------------------------------------------------------------- -# To force your B-decay channels decomment following 2 lines: -include( "CloseAntibQuark.py" ) - -PythiaB.ForceBDecay = "yes" -# T O O P E N T H E U S E R C H A N N E L -# Bs -> gamma mu+ mu- -PythiaB.PythiaCommand += ["pydat3 mdme 965 1 1", - "pydat3 kfdp 965 1 13", - "pydat3 kfdp 965 2 -13", - "pydat3 kfdp 965 3 22", - "pydat3 kfdp 965 4 0", - "pydat3 kfdp 965 5 0", - "pydat3 brat 965 0.000000001" ] - - -PythiaB.ForceDecayChannel = "BsGammaMuMu" -# lvl1 and lvl2 cuts pt_L1 eta_L1 pt_L2 eta_L2 -PythiaB.DecayChannelParameters = [1., 5.8, 2.5, 1., 5.8, 2.5] ; -#-------------------------------------------------------------- -# -------- PYTHIA PARAMETERS OPTIMAL FOR BEAUTY PRODUCTION -- -#-------------------------------------------------------------- -# 'msel 5' is only for fast tests! -# for correct b-producion you should use 'msel 1' -# 'mstj 26 0' = no mixing was defined in Btune as default -# 'mstj 22 2' = no K0S, Lambda0 decays in Pythia - defined in Btune as default - -include( "Btune.py" ) - -PythiaB.PythiaCommand += ["pysubs ckin 3 15.", - "pysubs ckin 9 -3.5", - "pysubs ckin 10 3.5", - "pysubs ckin 11 -3.5", - "pysubs ckin 12 3.5", - "pysubs msel 1"] -#-------------------------------------------------------------- -# ------------- DEFINE SELECTION CUTS ------------- -#-------------------------------------------------------------- -# ------------- Selections on b quarks ------------- -# simulate only b-flavour events -PythiaB.flavour = 5. -# PythiaB force exclusive decay channels only on b=-5 side -# ------------------- b=5 --- and/or --- b=-5 -------- -PythiaB.cutbq = ["0. 102.5 and 10. 2.5"] -# ------------- LVL1 muon cuts 0=OFF 1=ON ------------- -# for BsPhiMuMu, BdKstarMuMu BsGammaMuMu lvl1,lvl2 must be OFF -PythiaB.lvl1cut = [ 0., 6., 2.5] -# ------------- LVL2 muon/electron cuts 0=OFF 1=ON------------- -PythiaB.lvl2cut = [ 0., 13., 6., 2.5] -#PythiaB.lvl2cut = { 0., 11., 6., 2.5}; -# ??? ------------- Offline cuts 0=OFF 1=ON ------------- -PythiaB.offcut = [ 0., 0.5, 2.5, 3., 2.5, 0.5, 2.5] -# ------------- Number of repeated hadronization mhadr ------------- -PythiaB.mhadr = 6. -# ------------- For how many events store B-chain in NTUPLE ------------- -BSignalFilter = Algorithm( "BSignalFilter" ) -BSignalFilter.SignaltoNtup = 50 -# ------------- For how many events store B-chain in ascii ------------- -PythiaB.SignalDumptoAscii = 50. - - - -############################################################### - -#-------------------------------------------------------------- -# Histogram & Ntuple Persistency -#-------------------------------------------------------------- -# Change the following line to "RootHistCnv" for ROOT persistency -#theApp.Dlls += [ "RootHistCnv" ] -# Change the following line to "ROOT" for ROOT persistency -#theApp.HistogramPersistency = "ROOT" -#-------------------------------------------------------------- -# NTuple output file -#-------------------------------------------------------------- -#RootHistSvc = Service( "RootHistSvc" ) -#HbookHistSvc.NPAWC = 1500000 -#HistogramPersistencySvc = Service( "HistogramPersistencySvc" ) -#HistogramPersistencySvc.OutputFile = "histo.root" -#NTupleSvc = Service( "NTupleSvc" ) -#NTupleSvc.Output = [ "FILE1 DATAFILE='pythiaB.root' OPT='NEW' TYP='ROOT'" ] - -# Change since 12.0.3 -theApp.Dlls += [ "AnalysisTools" ] -THistSvc = Service ( "THistSvc" ) -THistSvc.Output = ["AANT DATAFILE='pythiaB.root' OPT='NEW'"] -theApp.TopAlg += [ "AANTupleStream" ] -AANTupleStream = Algorithm( "AANTupleStream" ) -AANTupleStream.ExtraRefNames = [ "" ] -AANTupleStream.OutputName = 'pythiaB.root' -AANTupleStream.ExistDataHeader = False -AANTupleStream.OutputLevel = VERBOSE - - - - -############################################################### -# Add POOL persistency -include( "AthenaPoolCnvSvc/WriteAthenaPool_jobOptions.py" ) -include( "GeneratorObjectsAthenaPool/GeneratorObjectsAthenaPool_joboptions.py" ) -# 2101 = EventInfo -# 133273 = MCTruth (HepMC) -Stream1.ItemList += [ "2101#*", "133273#*" ] -include("AthenaServices/AthenaSealSvc_joboptions.py" ) -AthenaSealSvc.CheckDictionary = TRUE -Stream1.OutputFile = "pythiaB.pool.root" - - - -#============================================================== -# -# End of job options file -# -############################################################### diff --git a/Generators/PythiaB/share/PythiaB_Master.py b/Generators/PythiaB/share/PythiaB_Master.py deleted file mode 100644 index 3bd5da789a20ed92eedb923e54d3a6aec7c88939..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/share/PythiaB_Master.py +++ /dev/null @@ -1,68 +0,0 @@ -############################################################################### -# -# PythiaB_Master.py -# Author: ATLAS B-physics group -# Use this script to execute standard production job options. -# -############################################################################### - -#------------------------------------------------------------------------------ -# General Application Configuration options -#------------------------------------------------------------------------------ - -import AthenaCommon.AtlasUnixGeneratorJob -include( "PartPropSvc/PartPropSvc.py" ) -from AthenaCommon.AppMgr import theApp -from AthenaCommon.AppMgr import ServiceMgr - -#------------------------------------------------------------------------------ -# Events to execute -#------------------------------------------------------------------------------ - -theApp.EvtMax = 100 -ServiceMgr.EventSelector.RunNumber = 108524 -ServiceMgr.EventSelector.FirstEvent = 1 - -#------------------------------------------------------------------------------ -# Random seeds initialization -#------------------------------------------------------------------------------ - -from AthenaServices.AthenaServicesConf import AtRndmGenSvc -AtRndmGenSvc = AtRndmGenSvc() -ServiceMgr += AtRndmGenSvc - -# See EvgenJobTransforms/Evgen_randomseeds.py -AtRndmGenSvc.Seeds = ['PYTHIA 47898993 0', 'PYTHIA_INIT 820021 2347532'] - -#------------------------------------------------------------------------------ -# Output level threshold: 1=VERBOSE 2=DEBUG 3=INFO 4=WARNING 5=ERROR 6=FATAL -#------------------------------------------------------------------------------ - -ServiceMgr.MessageSvc.OutputLevel = INFO -ServiceMgr.MessageSvc.defaultLimit = 9999999 # all messages - -#------------------------------------------------------------------------------ -# HERE INCLUDE THE PRODUCTION JOB-OPTIONS FRAGMENT -#------------------------------------------------------------------------------ - -include( "MC11.108424.PythiaB_Bs_Jpsi_mu0mu0_phi_KK_nopTcuts_PhysAngles.py" ) - -# Set CMS energy -PythiaB.PythiaCommand += [ "pyinit win 7000"] - -#------------------------------------------------------------------------------ -# POOL persistency -#------------------------------------------------------------------------------ - -from AthenaPoolCnvSvc.WriteAthenaPool import AthenaPoolOutputStream -Stream1 = AthenaPoolOutputStream( "StreamEVGEN" ) - -# 2101 = EventInfo, 133273 = MCTruth (HepMC) -Stream1.ItemList += [ "2101#*", "133273#*" ] -Stream1.OutputFile = "evgen.pool.root" - -############################################################################### -# -# End of PythiaB_Master.py job-options -# -############################################################################### diff --git a/Generators/PythiaB/share/PythiaB_Signal.py b/Generators/PythiaB/share/PythiaB_Signal.py deleted file mode 100644 index 5152bff9f706c78a06ff3b2058170a754b6c8657..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/share/PythiaB_Signal.py +++ /dev/null @@ -1,166 +0,0 @@ -############################################################### -# -# Job options file for generation of B-events -# in user selected exclusive channel -# -#============================================================== -#-------------------------------------------------------------- -# General Application Configuration options -#-------------------------------------------------------------- -#theApp.setup( MONTECARLO ) -include( "AthenaCommon/Atlas_Gen.UnixStandardJob.py" ) - -include( "PartPropSvc/PartPropSvc.py" ) - -#-------------------------------------------------------------- -# Private Application Configuration options -#-------------------------------------------------------------- -theApp.Dlls += [ "GaudiAlg" ] -theApp.Dlls += [ "TruthExamples", "PythiaB" ] -theApp.Dlls += [ "GaudiAud" ] -theApp.Dlls += [ "HbookCnv" ] -theApp.Dlls += [ "GeneratorFilters" ] -theAuditorSvc = AuditorSvc() -theAuditorSvc.Auditors = [ "ChronoAuditor" ] -#-------------------------------------------------------------- -# Algorithms -#-------------------------------------------------------------- -theApp.TopAlg = ["PythiaB" , "BSignalFilter"] -theApp.ExtSvc += ["AtRndmGenSvc"] -#-------------------------------------------------------------- -# Number of events to be accepted !! (default is 10) -# re-written if use B job submition script -# RunNumber, FirstEvent re-written if use B job submition script -#-------------------------------------------------------------- -theApp.EvtMax = 5 -EventSelector.RunNumber = 1 -EventSelector.FirstEvent = 1 -#-------------------------------------------------------------- -#User random number seeds - re-written if use B job submition script -#-------------------------------------------------------------- -AtRndmGenSvc = Service( "AtRndmGenSvc" ) -AtRndmGenSvc.Seeds = ["PYTHIA 4789899 989240512", "PYTHIA_INIT 820021 2347532"] -# AtRndmGenSvc.ReadFromFile = true; -# Set output level threshold (2=DEBUG, 3=INFO, 4=WARNING, 5=ERROR, 6=FATAL ) -MessageSvc.OutputLevel = 3 -#-------------------------------------------------------------- -# PARAMETERS SPECIFIC TO PYTHIAB -#-------------------------------------------------------------- -#PythiaB.ForceBDecay = "no"; -PythiaB = Algorithm( "PythiaB" ) -PythiaB.ForceCDecay = "no" -#-------------------------------------------------------------- -# ------------- FORCE YOUR B CHANNEL HERE ------------- -#-------------------------------------------------------------- -# To force your B-decay channels decomment following 2 lines: -include( "CloseAntibQuark.py" ) - -PythiaB.ForceBDecay = "yes" -# T H R E E E X A M P L E S T O O P E N Y O U R C H A N N E L -# Decomment one of following examples or create your analogically -# open your exclusive channel here Bs -> J/psi(mumu) phi -PythiaB.PythiaCommand += ["pydat3 mdme 982 1 1", - "pydat3 mdme 858 1 0", - "pydat3 mdme 860 1 0" ] -# open your exclusive channel here Bs -> Ds pi with Ds->phi pi -##include "Dsphipi.txt" -#PythiaB.PythiaCommand += {"pydat3 mdme 967 1 1", -# "pydat3 mdme 831 1 1" }; -#PythiaB.ForceCDecay = "yes"; -# open your exclusive channel here Bs -> J/psi(mumu) K0 -#PythiaB.PythiaCommand += {"pydat3 mdme 889 1 1", -# "pydat3 mdme 858 1 0", -# "pydat3 mdme 860 1 0" }; -#-------------------------------------------------------------- -# -------- PYTHIA PARAMETERS OPTIMAL FOR BEAUTY PRODUCTION -- -#-------------------------------------------------------------- -# 'msel 5' is only for fast tests! -# for correct b-producion you should use 'msel 1' -# 'mstj 26 0' = no mixing was defined in Btune as default -# 'mstj 22 2' = no K0S, Lambda0 decays in Pythia - defined in Btune as default - -include( "Btune.py" ) - -PythiaB.PythiaCommand += ["pysubs ckin 3 15.", - "pysubs ckin 9 -3.5", - "pysubs ckin 10 3.5", - "pysubs ckin 11 -3.5", - "pysubs ckin 12 3.5", - "pysubs msel 1"] -#-------------------------------------------------------------- -# ------------- DEFINE SELECTION CUTS ------------- -#-------------------------------------------------------------- -# ------------- Selections on b quarks ------------- -# simulate only b-flavour events -PythiaB.flavour = 5. -# PythiaB force exclusive decay channels only on b=-5 side -# ------------------- b=5 --- and/or --- b=-5 -------- -PythiaB.cutbq = ["0. 102.5 and 10. 2.5"] -# ------------- LVL1 muon cuts 0=OFF 1=ON ------------- -PythiaB.lvl1cut = [ 1., 6., 2.5] -# ------------- LVL2 muon/electron cuts 0=OFF 1=ON------------- -PythiaB.lvl2cut = [ 0., 13., 6., 2.5] -#PythiaB.lvl2cut = { 0., 11., 6., 2.5}; -# ------------- Offline cuts 0=OFF 1=ON ------------- -PythiaB.offcut = [ 1., 0.5, 2.5, 3., 2.5, 0.5, 2.5] -# ------------- Number of repeated hadronization mhadr ------------- -PythiaB.mhadr = 14. -# ------------- For how many events store B-chain in NTUPLE ------------- -BSignalFilter = Algorithm( "BSignalFilter" ) -BSignalFilter.SignaltoNtup = 50 -# ------------- For how many events store B-chain in ascii ------------- -PythiaB.SignalDumptoAscii = 50. - - - -############################################################### - -#-------------------------------------------------------------- -# Histogram & Ntuple Persistency -#-------------------------------------------------------------- -# Change the following line to "RootHistCnv" for ROOT persistency -#theApp.Dlls += [ "RootHistCnv" ] -## Change the following line to "ROOT" for ROOT persistency -#theApp.HistogramPersistency = "ROOT" -#-------------------------------------------------------------- -# NTuple output file -#-------------------------------------------------------------- -#RootHistSvc = Service( "RootHistSvc" ) -##HbookHistSvc.NPAWC = 1500000 -##HistogramPersistencySvc = Service( "HistogramPersistencySvc" ) -##HistogramPersistencySvc.OutputFile = "histo.root" -#NTupleSvc = Service( "NTupleSvc" ) -#NTupleSvc.Output = [ "FILE1 DATAFILE='pythiaB.root' OPT='NEW' TYP='ROOT'" ] - -# Change since 12.0.3 -theApp.Dlls += [ "AnalysisTools" ] -THistSvc = Service ( "THistSvc" ) -THistSvc.Output = ["AANT DATAFILE='pythiaB.root' OPT='NEW'"] -theApp.TopAlg += [ "AANTupleStream" ] -AANTupleStream = Algorithm( "AANTupleStream" ) -AANTupleStream.ExtraRefNames = [ "" ] -AANTupleStream.OutputName = 'pythiaB.root' -AANTupleStream.ExistDataHeader = False -AANTupleStream.OutputLevel = VERBOSE - - - - -############################################################### -# Add POOL persistency -include( "AthenaPoolCnvSvc/WriteAthenaPool_jobOptions.py" ) -include( "GeneratorObjectsAthenaPool/GeneratorObjectsAthenaPool_joboptions.py" ) -# 2101 = EventInfo -# 133273 = MCTruth (HepMC) -Stream1.ItemList += [ "2101#*", "133273#*" ] -include("AthenaServices/AthenaSealSvc_joboptions.py" ) -AthenaSealSvc.CheckDictionary = TRUE -Stream1.OutputFile = "pythiaB.pool.root" - - - -#============================================================== -# -# End of job options file -# -############################################################### diff --git a/Generators/PythiaB/share/PythiaB_bbe10X.py b/Generators/PythiaB/share/PythiaB_bbe10X.py deleted file mode 100644 index 99fe9f3f2ddab0981fc870af304ede6920bf6a9b..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/share/PythiaB_bbe10X.py +++ /dev/null @@ -1,137 +0,0 @@ -############################################################### -# -# Job options file for generation of B events -# no decay channel is specified. -# Only events containing at least one muon -# with pT>6GeV |eta|<2.5 are written to output -# Selection criteria can be changed by datacards -#============================================================== -#-------------------------------------------------------------- -# General Application Configuration options -#-------------------------------------------------------------- -#theApp.setup( MONTECARLO ) -include( "AthenaCommon/Atlas_Gen.UnixStandardJob.py" ) - -include( "PartPropSvc/PartPropSvc.py" ) - -#-------------------------------------------------------------- -# Private Application Configuration options -#-------------------------------------------------------------- -theApp.Dlls += [ "GaudiAlg" ] -theApp.Dlls += [ "TruthExamples", "PythiaB" ] -theApp.Dlls += [ "GaudiAud" ] -theApp.Dlls += [ "HbookCnv" ] -theApp.Dlls += [ "GeneratorFilters" ] -theAuditorSvc = AuditorSvc() -theAuditorSvc.Auditors = [ "ChronoAuditor" ] -#-------------------------------------------------------------- -# Algorithms -#-------------------------------------------------------------- -theApp.TopAlg = ["PythiaB" , "BSignalFilter"] -theApp.ExtSvc += ["AtRndmGenSvc"] -#-------------------------------------------------------------- -# Number of events to be accepted !! (default is 10) -# re-written if use B job submition script -# RunNumber, FirstEvent re-written if use B job submition script -#-------------------------------------------------------------- -theApp.EvtMax = 10 -EventSelector.RunNumber = 1 -EventSelector.FirstEvent = 1 -#-------------------------------------------------------------- -#User random number seeds - re-written if use B job submition script -#-------------------------------------------------------------- -AtRndmGenSvc = Service( "AtRndmGenSvc" ) -AtRndmGenSvc.Seeds = ["PYTHIA 4789899 989240512", "PYTHIA_INIT 820021 2347532"] -# AtRndmGenSvc.ReadFromFile = true; -# Set output level threshold (2=DEBUG, 3=INFO, 4=WARNING, 5=ERROR, 6=FATAL ) -MessageSvc.OutputLevel = 3 -#-------------------------------------------------------------- -# PARAMETERS SPECIFIC TO PYTHIABMODULE -#-------------------------------------------------------------- -PythiaB = Algorithm( "PythiaB" ) -PythiaB.ForceBDecay = "no" -PythiaB.ForceCDecay = "no" -#-------------------------------------------------------------- -# -------- PYTHIA PARAMETERS OPTIMAL FOR BEAUTY PRODUCTION -- -#-------------------------------------------------------------- -# 'msel 5' is only for fast tests! -# for correct b-producion you should use 'msel 1' -# 'mstj 26 0' = no mixing was defined in Btune as default -# 'mstj 22 2' = no K0S, Lambda0 decays in Pythia - defined in Btune as default - -include( "Btune.py" ) - -PythiaB.PythiaCommand += ["pysubs ckin 3 10.", - "pysubs msel 1"] -#-------------------------------------------------------------- -# ------------- DEFINE SELECTION CUTS ------------- -#-------------------------------------------------------------- -PythiaB.flavour = 5. -# ------------- Selections on b quarks ------------- -PythiaB.cutbq = ["7. 4.5 or 7. 4.5"] -# ------------- LVL1 muon cuts 0=OFF 1=ON ------------- -PythiaB.lvl1cut = [ 0., 6., 2.5] -# ------------- LVL2 muon/electron cuts 0=OFF 1=ON------------- -#PythiaB.lvl2cut = [ 0., 13., 6., 2.5] -PythiaB.lvl2cut = [ 1., 11., 10., 2.5] -# ------------- Offline cuts 0=OFF 1=ON ------------- -PythiaB.offcut = [ 0., 0., 102.5, 0., 102.5, 0., 102.5] -# ------------- Number of repeated hadronization mhadr ------------- -PythiaB.mhadr = 9. -# ------------- For how many events store B-chain in NTUPLE ------------- -BSignalFilter = Algorithm( "BSignalFilter" ) -BSignalFilter.SignaltoNtup = 10 -# ------------- For how many events store B-chain in ascii ------------- -PythiaB.SignalDumptoAscii = 10. - -############################################################### - -#-------------------------------------------------------------- -# Histogram & Ntuple Persistency -#-------------------------------------------------------------- -# Change the following line to "RootHistCnv" for ROOT persistency -#theApp.Dlls += [ "RootHistCnv" ] -# Change the following line to "ROOT" for ROOT persistency -#theApp.HistogramPersistency = "ROOT" -#-------------------------------------------------------------- -# NTuple output file -#-------------------------------------------------------------- -#RootHistSvc = Service( "RootHistSvc" ) -#HbookHistSvc.NPAWC = 1500000 -#HistogramPersistencySvc = Service( "HistogramPersistencySvc" ) -#HistogramPersistencySvc.OutputFile = "histo.root" -#NTupleSvc = Service( "NTupleSvc" ) -#NTupleSvc.Output = [ "FILE1 DATAFILE='pythiaB.root' OPT='NEW' TYP='ROOT'" ] - -# Change since 12.0.3 -theApp.Dlls += [ "AnalysisTools" ] -THistSvc = Service ( "THistSvc" ) -THistSvc.Output = ["AANT DATAFILE='pythiaB.root' OPT='NEW'"] -theApp.TopAlg += [ "AANTupleStream" ] -AANTupleStream = Algorithm( "AANTupleStream" ) -AANTupleStream.ExtraRefNames = [ "" ] -AANTupleStream.OutputName = 'pythiaB.root' -AANTupleStream.ExistDataHeader = False -AANTupleStream.OutputLevel = VERBOSE - - - - -############################################################### -# Add POOL persistency -include( "AthenaPoolCnvSvc/WriteAthenaPool_jobOptions.py" ) -include( "GeneratorObjectsAthenaPool/GeneratorObjectsAthenaPool_joboptions.py" ) -# 2101 = EventInfo -# 133273 = MCTruth (HepMC) -Stream1.ItemList += [ "2101#*", "133273#*" ] -include("AthenaServices/AthenaSealSvc_joboptions.py" ) -AthenaSealSvc.CheckDictionary = TRUE -Stream1.OutputFile = "pythiaB.pool.root" - - - -#============================================================== -# -# End of job options file -# -############################################################### diff --git a/Generators/PythiaB/share/PythiaB_bbmu12mu12X.py b/Generators/PythiaB/share/PythiaB_bbmu12mu12X.py deleted file mode 100644 index ad08d333bf61b0dad5b48534307999276a53ea7e..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/share/PythiaB_bbmu12mu12X.py +++ /dev/null @@ -1,136 +0,0 @@ -############################################################### -# -# Job options file for generation of B events -# no decay channel is specified. -# Only events containing at least one muon -# with pT>6GeV |eta|<2.5 are written to output -# Selection criteria can be changed by datacards -#============================================================== -#-------------------------------------------------------------- -# General Application Configuration options -#-------------------------------------------------------------- -#theApp.setup( MONTECARLO ) -include( "AthenaCommon/Atlas_Gen.UnixStandardJob.py" ) - -include( "PartPropSvc/PartPropSvc.py" ) - -#-------------------------------------------------------------- -# Private Application Configuration options -#-------------------------------------------------------------- -theApp.Dlls += [ "GaudiAlg" ] -theApp.Dlls += [ "TruthExamples", "PythiaB" ] -theApp.Dlls += [ "GaudiAud" ] -theApp.Dlls += [ "HbookCnv" ] -theApp.Dlls += [ "GeneratorFilters" ] -theAuditorSvc = AuditorSvc() -theAuditorSvc.Auditors = [ "ChronoAuditor" ] -#-------------------------------------------------------------- -# Algorithms -#-------------------------------------------------------------- -theApp.TopAlg = ["PythiaB" , "BSignalFilter"] -theApp.ExtSvc += ["AtRndmGenSvc"] -#-------------------------------------------------------------- -# Number of events to be accepted !! (default is 10) -# re-written if use B job submition script -# RunNumber, FirstEvent re-written if use B job submition script -#-------------------------------------------------------------- -theApp.EvtMax = 10 -EventSelector.RunNumber = 1 -EventSelector.FirstEvent = 1 -#-------------------------------------------------------------- -#User random number seeds - re-written if use B job submition script -#-------------------------------------------------------------- -AtRndmGenSvc = Service( "AtRndmGenSvc" ) -AtRndmGenSvc.Seeds = ["PYTHIA 4789899 989240512", "PYTHIA_INIT 820021 2347532"] -# AtRndmGenSvc.ReadFromFile = true; -# Set output level threshold (2=DEBUG, 3=INFO, 4=WARNING, 5=ERROR, 6=FATAL ) -MessageSvc.OutputLevel = 3 -#-------------------------------------------------------------- -# PARAMETERS SPECIFIC TO PYTHIABMODULE -#-------------------------------------------------------------- -PythiaB = Algorithm( "PythiaB" ) -PythiaB.ForceBDecay = "no" -PythiaB.ForceCDecay = "no" -#-------------------------------------------------------------- -# -------- PYTHIA PARAMETERS OPTIMAL FOR BEAUTY PRODUCTION -- -#-------------------------------------------------------------- -# 'msel 5' is only for fast tests! -# for correct b-producion you should use 'msel 1' -# 'mstj 26 0' = no mixing was defined in Btune as default -# 'mstj 22 2' = no K0S, Lambda0 decays in Pythia - defined in Btune as default - -include( "Btune.py" ) - -PythiaB.PythiaCommand += ["pysubs ckin 3 12.", - "pysubs msel 1"] -#-------------------------------------------------------------- -# ------------- DEFINE SELECTION CUTS ------------- -#-------------------------------------------------------------- -PythiaB.flavour = 5. -# ------------- Selections on b quarks ------------- -PythiaB.cutbq = ["12. 4.5 or 12. 4.5"] -# ------------- LVL1 muon cuts 0=OFF 1=ON ------------- -PythiaB.lvl1cut = [ 1., 12., 2.5] -# ------------- LVL2 muon/electron cuts 0=OFF 1=ON------------- -PythiaB.lvl2cut = [ 1., 13., 12., 2.5] -#PythiaB.lvl2cut = { 0., 11., 6., 2.5}; -# ------------- Offline cuts 0=OFF 1=ON ------------- -PythiaB.offcut = [ 0., 0., 102.5, 0., 102.5, 0., 102.5] -# ------------- Number of repeated hadronization mhadr ------------- -PythiaB.mhadr = 20. -# ------------- For how many events store B-chain in NTUPLE ------------- -BSignalFilter = Algorithm( "BSignalFilter" ) -BSignalFilter.SignaltoNtup = 10 -# ------------- For how many events store B-chain in ascii ------------- -PythiaB.SignalDumptoAscii = 10. - -############################################################### - -#-------------------------------------------------------------- -# Histogram & Ntuple Persistency -#-------------------------------------------------------------- -# Change the following line to "RootHistCnv" for ROOT persistency -#theApp.Dlls += [ "RootHistCnv" ] -# Change the following line to "ROOT" for ROOT persistency -#theApp.HistogramPersistency = "ROOT" -#-------------------------------------------------------------- -# NTuple output file -#-------------------------------------------------------------- -#RootHistSvc = Service( "RootHistSvc" ) -##HbookHistSvc.NPAWC = 1500000 -##HistogramPersistencySvc = Service( "HistogramPersistencySvc" ) -##HistogramPersistencySvc.OutputFile = "histo.root" -#NTupleSvc = Service( "NTupleSvc" ) -#NTupleSvc.Output = [ "FILE1 DATAFILE='pythiaB.root' OPT='NEW' TYP='ROOT'" ] - -# Change since 12.0.3 -theApp.Dlls += [ "AnalysisTools" ] -THistSvc = Service ( "THistSvc" ) -THistSvc.Output = ["AANT DATAFILE='pythiaB.root' OPT='NEW'"] -theApp.TopAlg += [ "AANTupleStream" ] -AANTupleStream = Algorithm( "AANTupleStream" ) -AANTupleStream.ExtraRefNames = [ "" ] -AANTupleStream.OutputName = 'pythiaB.root' -AANTupleStream.ExistDataHeader = False -AANTupleStream.OutputLevel = VERBOSE - - - -############################################################### -# Add POOL persistency -include( "AthenaPoolCnvSvc/WriteAthenaPool_jobOptions.py" ) -include( "GeneratorObjectsAthenaPool/GeneratorObjectsAthenaPool_joboptions.py" ) -# 2101 = EventInfo -# 133273 = MCTruth (HepMC) -Stream1.ItemList += [ "2101#*", "133273#*" ] -include("AthenaServices/AthenaSealSvc_joboptions.py" ) -AthenaSealSvc.CheckDictionary = TRUE -Stream1.OutputFile = "pythiaB.pool.root" - - - -#============================================================== -# -# End of job options file -# -############################################################### diff --git a/Generators/PythiaB/share/PythiaB_bbmu4_ChHadr.py b/Generators/PythiaB/share/PythiaB_bbmu4_ChHadr.py deleted file mode 100644 index 16dace2b6218609670a057c8a245909cd21a54c7..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/share/PythiaB_bbmu4_ChHadr.py +++ /dev/null @@ -1,113 +0,0 @@ -############################################################### -# PRODUCTION FRAGMENT -# -# Job options file for generation of bb events, -# -# Only events containing at least one muon -# with pT>4GeV |eta|<2.8 -# and at least one Charm Hadron in the decay of interest -# are written to output. -# -# Author : Leonid Gladilin (gladilin@mail.cern.ch), 2008-0004-14 -# -# Selection criteria can be changed by datacards -#============================================================== -from AthenaCommon.AlgSequence import AlgSequence -topAlg = AlgSequence("TopAlg") - -from PythiaB.PythiaBConf import PythiaB -topAlg += PythiaB() - -#-------------------------------------------------------------- -# Algorithms -#-------------------------------------------------------------- -#-------------------------------------------------------------- -# PARAMETERS SPECIFIC TO PYTHIABMODULE -#-------------------------------------------------------------- -PythiaB = topAlg.PythiaB -PythiaB.ForceBDecay = "no" -PythiaB.ForceCDecay = "no" -# -PythiaB.ForceDecayChannel = "CharmHadrons" -# lvl1 and lvl2 cuts pt_L1 eta_L1 pt_L2 eta_L2 -# D+- Ds+- Lc+- D*(2)pi D*mu D*el D0(2) D0mu D0el |eta| -PythiaB.DecayChannelParameters = [ 4.5, 4.5, -4.5, 4.5, 4.5, 0.0, 0.0, 0.0, 0.0, 2.8] -#-------------------------------------------------------------- -# -------- PYTHIA PARAMETERS OPTIMAL FOR BEAUTY PRODUCTION -- -#-------------------------------------------------------------- -# 'msel 5' is only for fast tests! -# for correct b-producion you should use 'msel 1' -# 'mstj 26 0' = no mixing was defined in Btune as default -# 'mstj 22 2' = no K0S, Lambda0 decays in Pythia - defined in Btune as default - -PythiaB.PythiaCommand += [ - "pysubs ckin 7 -4.", - "pysubs ckin 8 4.", - "pydat1 mstj 26 0", - "pydat1 mstj 22 2", - "pydat1 parj 13 0.65", - "pydat1 parj 14 0.12", - "pydat1 parj 15 0.04", - "pydat1 parj 16 0.12", - "pydat1 parj 17 0.2", - "pydat1 parj 55 -0.006", - ] - -PythiaB.PythiaCommand += [ - "pypars mstp 70 2", - "pypars mstp 72 0", - "pypars mstp 81 21", - "pypars mstp 82 4", - "pypars mstp 84 1", - "pypars mstp 85 1", - "pypars mstp 86 2", - "pypars mstp 87 4", - "pypars mstp 88 0", - "pypars mstp 89 1", - "pypars mstp 90 1", - "pypars mstp 95 1", - "pypars parp 78 0.2", - "pypars parp 80 0.01", - "pypars parp 82 1.9", - "pypars parp 83 0.3", - "pypars parp 84 0.5", - "pypars parp 89 1800", - "pypars parp 90 0.22", - "pydat1 parj 81 0.14"] - -PythiaB.PythiaCommand += ["pysubs ckin 3 5.", - "pysubs msel 1"] - -#-------------------------------------------------------------- -# ------------- DEFINE SELECTION CUTS ------------- -#-------------------------------------------------------------- -PythiaB.flavour = 5. -# ------------- Selections on b quarks ------------- -PythiaB.cutbq = ["4. 4.5 or 4. 4.5"] -# ------------- LVL1 muon cuts 0=OFF 1=ON ------------- -PythiaB.lvl1cut = [ 1., 4., 2.8] -# ------------- LVL2 muon/electron cuts 0=OFF 1=ON------------- -PythiaB.lvl2cut = [ 0., 13., 6., 2.8] -# ------------- Offline cuts 0=OFF 1=ON ------------- -PythiaB.offcut = [ 0., 0.5, 2.5, 3., 2.5, 0.5, 2.5] -# ------------- Number of repeated hadronization mhadr ------------- -PythiaB.mhadr = 10 -#============================================================== -# -# End of job options file -# -#-------------------------------------------------------------- -# Number of events to be processed (default is 10) -theApp.EvtMax = 10 -#-------------------------------------------------------------- -# -#--------------------------------------------------------------- -# Pool Persistency -#--------------------------------------------------------------- -from AthenaPoolCnvSvc.WriteAthenaPool import AthenaPoolOutputStream -Stream1 = AthenaPoolOutputStream( "StreamEVGEN" ) -Stream1.OutputFile = "pythia.bbmu4ch.pool.root" -Stream1.ItemList += [ 'EventInfo#*', 'McEventCollection#*' ] -############################################################### -# -############################################################### diff --git a/Generators/PythiaB/share/PythiaB_bbmu6e4X.py b/Generators/PythiaB/share/PythiaB_bbmu6e4X.py deleted file mode 100644 index 861f5185fd382da996000697984e13e1d5e0366e..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/share/PythiaB_bbmu6e4X.py +++ /dev/null @@ -1,136 +0,0 @@ -############################################################### -# -# Job options file for generation of B events -# no decay channel is specified. -# Only events containing at least one muon -# with pT>6GeV |eta|<2.5 are written to output -# Selection criteria can be changed by datacards -#============================================================== -#-------------------------------------------------------------- -# General Application Configuration options -#-------------------------------------------------------------- -#theApp.setup( MONTECARLO ) -include( "AthenaCommon/Atlas_Gen.UnixStandardJob.py" ) - -include( "PartPropSvc/PartPropSvc.py" ) - -#-------------------------------------------------------------- -# Private Application Configuration options -#-------------------------------------------------------------- -theApp.Dlls += [ "GaudiAlg" ] -theApp.Dlls += [ "TruthExamples", "PythiaB" ] -theApp.Dlls += [ "GaudiAud" ] -theApp.Dlls += [ "HbookCnv" ] -theApp.Dlls += [ "GeneratorFilters" ] -theAuditorSvc = AuditorSvc() -theAuditorSvc.Auditors = [ "ChronoAuditor" ] -#-------------------------------------------------------------- -# Algorithms -#-------------------------------------------------------------- -theApp.TopAlg = ["PythiaB" , "BSignalFilter"] -theApp.ExtSvc += ["AtRndmGenSvc"] -#-------------------------------------------------------------- -# Number of events to be accepted !! (default is 10) -# re-written if use B job submition script -# RunNumber, FirstEvent re-written if use B job submition script -#-------------------------------------------------------------- -theApp.EvtMax = 5 -EventSelector.RunNumber = 1 -EventSelector.FirstEvent = 1 -#-------------------------------------------------------------- -#User random number seeds - re-written if use B job submition script -#-------------------------------------------------------------- -AtRndmGenSvc = Service( "AtRndmGenSvc" ) -AtRndmGenSvc.Seeds = ["PYTHIA 4789899 989240512", "PYTHIA_INIT 820021 2347532"] -# AtRndmGenSvc.ReadFromFile = true; -# Set output level threshold (2=DEBUG, 3=INFO, 4=WARNING, 5=ERROR, 6=FATAL ) -MessageSvc.OutputLevel = 3 -#-------------------------------------------------------------- -# PARAMETERS SPECIFIC TO PYTHIABMODULE -#-------------------------------------------------------------- -PythiaB = Algorithm( "PythiaB" ) -PythiaB.ForceBDecay = "no" -PythiaB.ForceCDecay = "no" -#-------------------------------------------------------------- -# -------- PYTHIA PARAMETERS OPTIMAL FOR BEAUTY PRODUCTION -- -#-------------------------------------------------------------- -# 'msel 5' is only for fast tests! -# for correct b-producion you should use 'msel 1' -# 'mstj 26 0' = no mixing was defined in Btune as default -# 'mstj 22 2' = no K0S, Lambda0 decays in Pythia - defined in Btune as default - -include( "Btune.py" ) - -PythiaB.PythiaCommand += ["pysubs ckin 3 10.", - "pysubs msel 1"] -#-------------------------------------------------------------- -# ------------- DEFINE SELECTION CUTS ------------- -#-------------------------------------------------------------- -PythiaB.flavour = 5. -# ------------- Selections on b quarks ------------- -PythiaB.cutbq = ["7. 4.5 or 7. 4.5"] -# ------------- LVL1 muon cuts 0=OFF 1=ON ------------- -PythiaB.lvl1cut = [ 1., 6., 2.5] -# ------------- LVL2 muon/electron cuts 0=OFF 1=ON------------- -#PythiaB.lvl2cut = [ 1., 13., 4., 2.5] -PythiaB.lvl2cut = [ 1., 11., 4., 2.5] -# ------------- Offline cuts 0=OFF 1=ON ------------- -PythiaB.offcut = [ 0., 0., 102.5, 0., 102.5, 0., 102.5] -# ------------- Number of repeated hadronization mhadr ------------- -PythiaB.mhadr = 20. -# ------------- For how many events store B-chain in NTUPLE ------------- -BSignalFilter = Algorithm( "BSignalFilter" ) -BSignalFilter.SignaltoNtup = 10 -# ------------- For how many events store B-chain in ascii ------------- -PythiaB.SignalDumptoAscii = 10. - -############################################################### - -#-------------------------------------------------------------- -# Histogram & Ntuple Persistency -#-------------------------------------------------------------- -# Change the following line to "RootHistCnv" for ROOT persistency -#theApp.Dlls += [ "RootHistCnv" ] -# Change the following line to "ROOT" for ROOT persistency -#theApp.HistogramPersistency = "ROOT" -#-------------------------------------------------------------- -# NTuple output file -#-------------------------------------------------------------- -#RootHistSvc = Service( "RootHistSvc" ) -#HbookHistSvc.NPAWC = 1500000 -#HistogramPersistencySvc = Service( "HistogramPersistencySvc" ) -#HistogramPersistencySvc.OutputFile = "histo.root" -#NTupleSvc = Service( "NTupleSvc" ) -#NTupleSvc.Output = [ "FILE1 DATAFILE='pythiaB.root' OPT='NEW' TYP='ROOT'" ] - -# Change since 12.0.3 -theApp.Dlls += [ "AnalysisTools" ] -THistSvc = Service ( "THistSvc" ) -THistSvc.Output = ["AANT DATAFILE='pythiaB.root' OPT='NEW'"] -theApp.TopAlg += [ "AANTupleStream" ] -AANTupleStream = Algorithm( "AANTupleStream" ) -AANTupleStream.ExtraRefNames = [ "" ] -AANTupleStream.OutputName = 'pythiaB.root' -AANTupleStream.ExistDataHeader = False -AANTupleStream.OutputLevel = VERBOSE - - - -############################################################### -# Add POOL persistency -include( "AthenaPoolCnvSvc/WriteAthenaPool_jobOptions.py" ) -include( "GeneratorObjectsAthenaPool/GeneratorObjectsAthenaPool_joboptions.py" ) -# 2101 = EventInfo -# 133273 = MCTruth (HepMC) -Stream1.ItemList += [ "2101#*", "133273#*" ] -include("AthenaServices/AthenaSealSvc_joboptions.py" ) -AthenaSealSvc.CheckDictionary = TRUE -Stream1.OutputFile = "pythiaB.pool.root" - - - -#============================================================== -# -# End of job options file -# -############################################################### diff --git a/Generators/PythiaB/share/PythiaB_bbmu6mu4_massX.py b/Generators/PythiaB/share/PythiaB_bbmu6mu4_massX.py deleted file mode 100644 index 2c23716a030649afe318476b40cbacc6ee3fe495..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/share/PythiaB_bbmu6mu4_massX.py +++ /dev/null @@ -1,144 +0,0 @@ -############################################################### -# -# Job options file for generation of B events -# no decay channel is specified. -# Only events containing at least one muon -# with pT>6GeV |eta|<2.5 are written to output -# Selection criteria can be changed by datacards -#============================================================== -#-------------------------------------------------------------- -# General Application Configuration options -#-------------------------------------------------------------- -#theApp.setup( MONTECARLO ) -include( "AthenaCommon/Atlas_Gen.UnixStandardJob.py" ) - -include( "PartPropSvc/PartPropSvc.py" ) - -#-------------------------------------------------------------- -# Private Application Configuration options -#-------------------------------------------------------------- -theApp.Dlls += [ "GaudiAlg" ] -theApp.Dlls += [ "TruthExamples", "PythiaB" ] -theApp.Dlls += [ "GaudiAud" ] -theApp.Dlls += [ "HbookCnv" ] -theApp.Dlls += [ "GeneratorFilters" ] -theAuditorSvc = AuditorSvc() -theAuditorSvc.Auditors = [ "ChronoAuditor" ] -#-------------------------------------------------------------- -# Algorithms -#-------------------------------------------------------------- -theApp.TopAlg = ["PythiaB" , "BSignalFilter"] -theApp.ExtSvc += ["AtRndmGenSvc"] -#-------------------------------------------------------------- -# Number of events to be accepted !! (default is 10) -# re-written if use B job submition script -# RunNumber, FirstEvent re-written if use B job submition script -#-------------------------------------------------------------- -theApp.EvtMax = 5 -EventSelector.RunNumber = 1 -EventSelector.FirstEvent = 1 -#-------------------------------------------------------------- -#User random number seeds - re-written if use B job submition script -#-------------------------------------------------------------- -AtRndmGenSvc = Service( "AtRndmGenSvc" ) -AtRndmGenSvc.Seeds = ["PYTHIA 4789899 989240512", "PYTHIA_INIT 820021 2347532"] -# AtRndmGenSvc.ReadFromFile = true; -# Set output level threshold (2=DEBUG, 3=INFO, 4=WARNING, 5=ERROR, 6=FATAL ) -MessageSvc.OutputLevel = 3 -#-------------------------------------------------------------- -# PARAMETERS SPECIFIC TO PYTHIABMODULE -#-------------------------------------------------------------- -PythiaB = Algorithm( "PythiaB" ) -PythiaB.ForceBDecay = "no" -PythiaB.ForceCDecay = "no" -#-------------------------------------------------------------- -# -------- PYTHIA PARAMETERS OPTIMAL FOR BEAUTY PRODUCTION -- -#-------------------------------------------------------------- -# 'msel 5' is only for fast tests! -# for correct b-producion you should use 'msel 1' -# 'mstj 26 0' = no mixing was defined in Btune as default -# 'mstj 22 2' = no K0S, Lambda0 decays in Pythia - defined in Btune as default - -include( "Btune.py" ) - -PythiaB.PythiaCommand += ["pysubs ckin 3 10.", - "pysubs msel 1"] - -# -# Select user_finsel.F decay channel and parameters -# -PythiaB.ForceDecayChannel = "bbmumu" - -PythiaB.DecayChannelParameters = [8.0] - -#-------------------------------------------------------------- -# ------------- DEFINE SELECTION CUTS ------------- -#-------------------------------------------------------------- -PythiaB.flavour = 5. -# ------------- Selections on b quarks ------------- -PythiaB.cutbq = ["7. 4.5 or 7. 4.5"] -# ------------- LVL1 muon cuts 0=OFF 1=ON ------------- -PythiaB.lvl1cut = [ 1., 6., 2.5] -# ------------- LVL2 muon/electron cuts 0=OFF 1=ON------------- -PythiaB.lvl2cut = [ 1., 13., 4., 2.5] -#PythiaB.lvl2cut = [ 1., 11., 4., 2.5] -# ------------- Offline cuts 0=OFF 1=ON ------------- -PythiaB.offcut = [ 0., 0., 102.5, 0., 102.5, 0., 102.5] -# ------------- Number of repeated hadronization mhadr ------------- -PythiaB.mhadr = 20. -# ------------- For how many events store B-chain in NTUPLE ------------- -BSignalFilter = Algorithm( "BSignalFilter" ) -BSignalFilter.SignaltoNtup = 10 -# ------------- For how many events store B-chain in ascii ------------- -PythiaB.SignalDumptoAscii = 10. - -############################################################### - -#-------------------------------------------------------------- -# Histogram & Ntuple Persistency -#-------------------------------------------------------------- -# Change the following line to "RootHistCnv" for ROOT persistency -#theApp.Dlls += [ "RootHistCnv" ] -# Change the following line to "ROOT" for ROOT persistency -#theApp.HistogramPersistency = "ROOT" -#-------------------------------------------------------------- -# NTuple output file -#-------------------------------------------------------------- -#RootHistSvc = Service( "RootHistSvc" ) -#HbookHistSvc.NPAWC = 1500000 -#HistogramPersistencySvc = Service( "HistogramPersistencySvc" ) -#HistogramPersistencySvc.OutputFile = "histo.root" -#NTupleSvc = Service( "NTupleSvc" ) -#NTupleSvc.Output = [ "FILE1 DATAFILE='pythiaB.root' OPT='NEW' TYP='ROOT'" ] - - -# Change since 12.0.3 -theApp.Dlls += [ "AnalysisTools" ] -THistSvc = Service ( "THistSvc" ) -THistSvc.Output = ["AANT DATAFILE='pythiaB.root' OPT='NEW'"] -theApp.TopAlg += [ "AANTupleStream" ] -AANTupleStream = Algorithm( "AANTupleStream" ) -AANTupleStream.ExtraRefNames = [ "" ] -AANTupleStream.OutputName = 'pythiaB.root' -AANTupleStream.ExistDataHeader = False -AANTupleStream.OutputLevel = VERBOSE - - -############################################################### -# Add POOL persistency -include( "AthenaPoolCnvSvc/WriteAthenaPool_jobOptions.py" ) -include( "GeneratorObjectsAthenaPool/GeneratorObjectsAthenaPool_joboptions.py" ) -# 2101 = EventInfo -# 133273 = MCTruth (HepMC) -Stream1.ItemList += [ "2101#*", "133273#*" ] -include("AthenaServices/AthenaSealSvc_joboptions.py" ) -AthenaSealSvc.CheckDictionary = TRUE -Stream1.OutputFile = "pythiaB.pool.root" - - - -#============================================================== -# -# End of job options file -# -############################################################### diff --git a/Generators/PythiaB/share/PythiaB_ccmu4_ChHadr.py b/Generators/PythiaB/share/PythiaB_ccmu4_ChHadr.py deleted file mode 100644 index 0e0711a4f7b48576fac8151ee6305a28e2203647..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/share/PythiaB_ccmu4_ChHadr.py +++ /dev/null @@ -1,113 +0,0 @@ -############################################################### -# PRODUCTION FRAGMENT -# -# Job options file for generation of cc events, -# -# Only events containing at least one muon -# with pT>4GeV |eta|<2.8 -# and at least one Charm Hadron in the decay of interest -# are written to output. -# -# Author : Leonid Gladilin (gladilin@mail.cern.ch), 2008-0004-14 -# -# Selection criteria can be changed by datacards -#============================================================== -from AthenaCommon.AlgSequence import AlgSequence -topAlg = AlgSequence("TopAlg") - -from PythiaB.PythiaBConf import PythiaB -topAlg += PythiaB() - -#-------------------------------------------------------------- -# Algorithms -#-------------------------------------------------------------- -#-------------------------------------------------------------- -# PARAMETERS SPECIFIC TO PYTHIABMODULE -#-------------------------------------------------------------- -PythiaB = topAlg.PythiaB -PythiaB.ForceBDecay = "no" -PythiaB.ForceCDecay = "no" -# -PythiaB.ForceDecayChannel = "CharmHadrons" -# lvl1 and lvl2 cuts pt_L1 eta_L1 pt_L2 eta_L2 -# D+- Ds+- Lc+- D*(2)pi D*mu D*el D0(2) D0mu D0el |eta| -PythiaB.DecayChannelParameters = [ 4.5, 4.5, -4.5, 4.5, 4.5, 0.0, 0.0, 0.0, 0.0, 2.8] -#-------------------------------------------------------------- -# -------- PYTHIA PARAMETERS OPTIMAL FOR BEAUTY PRODUCTION -- -#-------------------------------------------------------------- -# 'msel 5' is only for fast tests! -# for correct b-producion you should use 'msel 1' -# 'mstj 26 0' = no mixing was defined in Btune as default -# 'mstj 22 2' = no K0S, Lambda0 decays in Pythia - defined in Btune as default - -PythiaB.PythiaCommand += [ - "pysubs ckin 7 -4.", - "pysubs ckin 8 4.", - "pydat1 mstj 26 0", - "pydat1 mstj 22 2", - "pydat1 parj 13 0.65", - "pydat1 parj 14 0.12", - "pydat1 parj 15 0.04", - "pydat1 parj 16 0.12", - "pydat1 parj 17 0.2", - "pydat1 parj 55 -0.006", - ] - -PythiaB.PythiaCommand += [ - "pypars mstp 70 2", - "pypars mstp 72 0", - "pypars mstp 81 21", - "pypars mstp 82 4", - "pypars mstp 84 1", - "pypars mstp 85 1", - "pypars mstp 86 2", - "pypars mstp 87 4", - "pypars mstp 88 0", - "pypars mstp 89 1", - "pypars mstp 90 1", - "pypars mstp 95 1", - "pypars parp 78 0.2", - "pypars parp 80 0.01", - "pypars parp 82 1.9", - "pypars parp 83 0.3", - "pypars parp 84 0.5", - "pypars parp 89 1800", - "pypars parp 90 0.22", - "pydat1 parj 81 0.14"] - -PythiaB.PythiaCommand += ["pysubs ckin 3 5.", - "pysubs msel 1"] - -#-------------------------------------------------------------- -# ------------- DEFINE SELECTION CUTS ------------- -#-------------------------------------------------------------- -PythiaB.flavour = 4. -# ------------- Selections on b quarks ------------- -PythiaB.cutbq = ["4. 4.5 or 4. 4.5"] -# ------------- LVL1 muon cuts 0=OFF 1=ON ------------- -PythiaB.lvl1cut = [ 1., 4., 2.8] -# ------------- LVL2 muon/electron cuts 0=OFF 1=ON------------- -PythiaB.lvl2cut = [ 0., 13., 6., 2.8] -# ------------- Offline cuts 0=OFF 1=ON ------------- -PythiaB.offcut = [ 0., 0.5, 2.5, 3., 2.5, 0.5, 2.5] -# ------------- Number of repeated hadronization mhadr ------------- -PythiaB.mhadr = 10 -#============================================================== -# -# End of job options file -# -#-------------------------------------------------------------- -# Number of events to be processed (default is 10) -theApp.EvtMax = 10 -#-------------------------------------------------------------- -# -#--------------------------------------------------------------- -# Pool Persistency -#--------------------------------------------------------------- -from AthenaPoolCnvSvc.WriteAthenaPool import AthenaPoolOutputStream -Stream1 = AthenaPoolOutputStream( "StreamEVGEN" ) -Stream1.OutputFile = "pythia.ccmu4ch.pool.root" -Stream1.ItemList += [ 'EventInfo#*', 'McEventCollection#*' ] -############################################################### -# -############################################################### diff --git a/Generators/PythiaB/share/ReadGen.py b/Generators/PythiaB/share/ReadGen.py deleted file mode 100644 index b3a9b8633f0b2b61a0355e79afa3eb2d711c7a53..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/share/ReadGen.py +++ /dev/null @@ -1,284 +0,0 @@ -############################################################################### -# -# ReadGen.py -# Author: Pavel Reznicek (Pavel.Reznicek@cern.ch) -# Reads the Hep-MC record and eventually dumps it to screen or an ntuple. -# Supports b-quark chains ntuple storage and CBNT. -# Allows also to rerun EvtGen (inclusive) over the MC collection. -# -############################################################################### - -#------------------------------------------------------------------------------ -# Global job-driving options -#------------------------------------------------------------------------------ - -# Dump Hep-MC on the screen -if not 'doPrintMC' in locals(): doPrintMC = True -# Create B-chains ntuple -if not 'doBphysNtuple' in locals(): doBphysNtuple = True -# Create CBNT -if not 'doCBNT' in locals(): doCBNT = True -# Rerun EvtGen -if not 'doEvtGen' in locals(): doEvtGen = False - -# Messages level for the analysis algorithm -if not 'outputLevel' in locals(): outputLevel = INFO -#maxEvents = MYNOEVENTS -if not 'maxEvents' in locals(): maxEvents = 1000 -#skipEvents = MYSKIP -if not 'skipEvents' in locals(): skipEvents = 0 -# Mostly for the POOL convertors and configurables -if not 'usedRelease' in locals(): usedRelease = 16 -# Hep-MC event key in the data file (GEN_EVENT, GEN_AOD, TruthEvent) -if not 'mcEventKey' in locals(): mcEventKey = "GEN_EVENT" -# Input datafile(s) -if not 'inputData' in locals(): - inputData = [ "evgen.pool.root" ] - -#------------------------------------------------------------------------------ -# General Application Configuration options -#------------------------------------------------------------------------------ - -if usedRelease >= 13: - from AthenaCommon.AppMgr import theApp - from AthenaCommon.AppMgr import ServiceMgr - from AthenaCommon.AlgSequence import AlgSequence - topSequence = AlgSequence() - -#------------------------------------------------------------------------------ -# To read out Athena POOL files -#------------------------------------------------------------------------------ - -if usedRelease >= 13: - import AthenaPoolCnvSvc.ReadAthenaPool -else: - include( "AthenaPoolCnvSvc/ReadAthenaPool_jobOptions.py" ) - -#------------------------------------------------------------------------------ -# Particle properties -#------------------------------------------------------------------------------ - -include( "PartPropSvc/PartPropSvc.py" ) - -#------------------------------------------------------------------------------ -# The POOL converters -#------------------------------------------------------------------------------ - -if usedRelease <= 11: - include( "ParticleEventAthenaPool/AOD_PoolCnv_jobOptions.py" ) - -if usedRelease >= 12: - include( "ParticleBuilderOptions/ESD_PoolCnv_jobOptions.py" ) - include( "ParticleBuilderOptions/AOD_PoolCnv_jobOptions.py" ) - include( "ParticleBuilderOptions/McAOD_PoolCnv_jobOptions.py" ) - include( "EventAthenaPool/EventAthenaPool_joboptions.py" ) - -#------------------------------------------------------------------------------ -# Output level threshold: 1=VERBOSE 2=DEBUG 3=INFO 4=WARNING 5=ERROR 6=FATAL -#------------------------------------------------------------------------------ - -if usedRelease >= 13: - if not hasattr( ServiceMgr , "MessageSvc" ): - from GaudiSvc.GaudiSvcConf import MessageSvc - ServiceMgr += MessageSvc() - MessageSvc = ServiceMgr.MessageSvc -else: - MessageSvc = Service( "MessageSvc" ) - -MessageSvc.OutputLevel = outputLevel -MessageSvc.defaultLimit = 9999999 # all messages - -#------------------------------------------------------------------------------ -# Event related parameters -#------------------------------------------------------------------------------ - -if usedRelease >= 13: - # The import and registration with ServiceMgr is done in AthenaPoolCnvSvc.ReadAthenaPool - EventSelector = ServiceMgr.EventSelector -else: - EventSelector = Service( "EventSelector" ) - -EventSelector.InputCollections = inputData - -#------------------------------------------------------------------------------ -# Number of events to be processed and skipped -#------------------------------------------------------------------------------ - -theApp.EvtMax = maxEvents -EventSelector.SkipEvents = skipEvents - -#------------------------------------------------------------------------------ -# Rerun EvtGen on the input data file -#------------------------------------------------------------------------------ - -if doEvtGen: - - # Copy the orignal events collection and make it writeable - if usedRelease >= 13: - from HepMCTools.HepMCToolsConf import CopyMcCollection - topSequence += CopyMcCollection() - CopyMcCollection = topSequence.CopyMcCollection - else: - theApp.Dlls += [ "HepMCTools" ] - theApp.TopAlg += [ "CopyMcCollection" ] - CopyMcCollection = Algorithm( "CopyMcCollection" ) - - # Replace the collection in place - CopyMcCollection.oldCollectionKey = mcEventKey - CopyMcCollection.newCollectionKey = mcEventKey - CopyMcCollection.deleteOldCollection = True - - # Run EvtGen on that new copy of the collection - # TODO - translate particle codes service - if usedRelease >= 13: - from EvtGen_i.EvtGen_iConf import EvtInclusiveDecay - topSequence += EvtInclusiveDecay() - EvtInclusiveDecay = topSequence.EvtInclusiveDecay - else: - theApp.Dlls += [ "EvtGen_i" ] - theApp.TopAlg += [ "EvtInclusiveDecay" ] - EvtInclusiveDecay = Algorithm( "EvtInclusiveDecay" ) - -#------------------------------------------------------------------------------ -# Dump Hep-MC to the screen (or log file) -#------------------------------------------------------------------------------ - -if doPrintMC: - - if usedRelease >= 13: - from TruthExamples.TruthExamplesConf import PrintMC - topSequence += PrintMC() - PrintMC = topSequence.PrintMC - else: - theApp.Dlls += [ "TruthExamples" ] - theApp.TopAlg += [ "PrintMC" ] - PrintMC = Algorithm( "PrintMC" ) - - # Hep-MC event key in pool file - PrintMC.McEventKey = mcEventKey - # Do you want output at all? TRUE/FALSE - PrintMC.VerboseOutput = True - # Event print style Vertex(traditional)/Barcode(barcode ordered) - PrintMC.PrintStyle = "Barcode" - # Vertex infomration - PrintMC.VertexInfo = False - # First and last event to print, if no last events => job end are printed - PrintMC.FirstEvent = 0 - PrintMC.LastEvent = 100000000 - -#------------------------------------------------------------------------------ -# Store the b-quark chains -#------------------------------------------------------------------------------ - -if doBphysNtuple: - - if usedRelease >= 13: - from GeneratorFilters.GeneratorFiltersConf import BSignalFilter - topSequence += BSignalFilter() - BSignalFilter = topSequence.BSignalFilter - else: - theApp.Dlls += [ "GeneratorFilters" ] - theApp.TopAlg += [ "BSignalFilter" ] - BSignalFilter = Algorithm( "BSignalFilter" ) - - # Hep-MC event key in pool file - BSignalFilter.McEventKey = mcEventKey - # No. events to be written to b-chains ntuple - BSignalFilter.SignaltoNtup = maxEvents - # Store also the b-quarks properties - BSignalFilter.StoreBQuarks = True - -#------------------------------------------------------------------------------ -# CBNT configuration -#------------------------------------------------------------------------------ - -if doCBNT: - - if usedRelease >= 12: - include( "CBNT_Athena/CBNT_AthenaAware_jobOptions.py" ) - CBNT_AthenaAware.TreeName = "t3333" - else: - include( "CBNT_Athena/CBNT_Athena_jobOptions.py" ) - CBNT_Athena.NtupleLocID = "/FILE1/CBNT/t3333" - include( "CBNT_Athena/CBNT_EventInfo_jobOptions.py" ) - include( "RecExCommon/CBNT_Truth_jobOptions.py" ) - if usedRelease >= 13: - CBNT_Truth = theCBNTAA_Truth - - # Maximum number of particles in the ntuple - CBNT_Truth.MaxNbParticles = 10000 - # Maximum number of vertices in the ntuple - CBNT_Truth.MaxNbVertices = 10000 - CBNT_Truth.McEventsName = mcEventKey - # Save ALL particles - All.Enable = True - -#------------------------------------------------------------------------------ -# Ntuple configuration -#------------------------------------------------------------------------------ - -if doBphysNtuple or doCBNT: - - if usedRelease >= 12: - - if usedRelease >= 13: - if not hasattr( ServiceMgr, "THistSvc" ): - from GaudiSvc.GaudiSvcConf import THistSvc - ServiceMgr += THistSvc() - THistSvc = ServiceMgr.THistSvc - else: - theApp.Dlls += [ "AnalysisTools" ] - THistSvc = Service ( "THistSvc" ) - THistSvc.Output = [ "AANT DATAFILE='ntuple.root' TYP='ROOT' OPT='NEW'" ] - - if doBphysNtuple: - if usedRelease >= 13: - if not hasattr( topSequence, "AANTStreamBchains" ): - if usedRelease >= 16: - from AnalysisTools.AthAnalysisToolsConf import AANTupleStream - else: - from AnalysisTools.AnalysisToolsConf import AANTupleStream - topSequence += AANTupleStream( "AANTStreamBchains" ) - AANTStreamBchains = getattr( topSequence, "AANTStreamBchains" ) - else: - theApp.TopAlg += [ "AANTupleStream/AANTStreamBchains" ] - AANTStreamBchains = Algorithm( "AANTStreamBchains" ) - AANTStreamBchains.ExtraRefNames = [ "StreamESD", "Stream1" ] - AANTStreamBchains.WriteInputDataHeader = True - AANTStreamBchains.OutputName = "ntuple.root" - - if doCBNT: - if usedRelease >= 13: - if not hasattr( topSequence, "AANTStreamCBNT" ): - if usedRelease >= 16: - from AnalysisTools.AthAnalysisToolsConf import AANTupleStream - else: - from AnalysisTools.AnalysisToolsConf import AANTupleStream - topSequence += AANTupleStream( "AANTStreamCBNT" ) - AANTStreamCBNT = getattr( topSequence, "AANTStreamCBNT" ) - else: - theApp.TopAlg += [ "AANTupleStream/AANTStreamCBNT" ] - AANTStreamCBNT = Algorithm( "AANTStreamCBNT" ) - AANTStreamCBNT.ExtraRefNames = [ "StreamESD", "Stream1" ] - AANTStreamCBNT.WriteInputDataHeader = True - AANTStreamCBNT.OutputName = "ntuple.root" - AANTStreamCBNT.TreeName = "t3333" - - else: - - HistogramPersistencySvc = Service( "HistogramPersistencySvc" ) - HistogramPersistencySvc.OutputFile = "histo.root" - theApp.Dlls += [ "RootHistCnv" ] - theApp.HistogramPersistency = "ROOT" - #theApp.DLLs += [ "HbookCnv" ] - #theApp.HistogramPersistency = "HBOOK" - #HbookHistSvc = Service( "HbookHistSvc") - #HbookHistSvc.NPAWC = 1500000 - NTupleSvc = Service( "NTupleSvc" ) - NTupleSvc.Output = [ "FILE1 DATAFILE='ntuple.root' TYP='ROOT' OPT='NEW'" ] - -############################################################################### -# -# End of ReadGen.py job-options -# -############################################################################### diff --git a/Generators/PythiaB/src/PythiaB.cxx b/Generators/PythiaB/src/PythiaB.cxx deleted file mode 100644 index 7f2e05c06f142755047ad39e75436c828f7d3dc4..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/src/PythiaB.cxx +++ /dev/null @@ -1,552 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// ------------------------------------------------------------- File: -// GeneratorModules/PythiaB.cxx -// Description: Allows the user -// to generate pythia events and store the result in the -// Transient Store. -// adapted for use by the B group. -// This should not be used in the same job as PythiaGenerator -// -// AuthorList:U -// Ian Hinchliffe: Initial Code June: 2000 -// Modeled after the CDF code by Stan Thompson -// parsing added August 2000 -// more switches added Feb 2001 -// B version by Maria Smizanska (March 2002) -// Modified and Incorporated into Generator Modules by IH (March 2002) -// Update on repeated hadronization by Malte Muller and M.Smizanska (August 2002) -// New: PythiaB::storeBEvent PythiaB::fillEvt by Malte Muller(August 2002) -// Special treatment for bbbb, bbcc events if forced channels, M.Smizanska (August 2002) -// Changes due to re-organization of Generators by G. Stavropoulos and I.Hinchliffe (August 2003) -// W.Walkowiak, 2006-04-02 added m_maxTriesHard, m_forceDecayChannel -// and m_decayChannelParameters -// (for user_finsel.F reorganization) -// 2006-04-09, W. Walkowiak -// added uf_BsJpsimumuphiKK() -- code by James Catmore -// 2006-04-17, W. Walkowiak -// added uf_bbmumu() -- code by Sergey Sivoklokov -// 2006-09-02, S.Sivoklokov -// added uf_kstarmumu() -- code by Sergey Sivoklokov -// added uf_phimumu() -- code by Sergey Sivoklokov -// added uf_gammamumu() -- code by Sergey Sivoklokov -// 2008-05-09, L. Gladilin -// added uf_ChHadr() -- code by Leonid Gladilin -// 2010-08-26, P. Reznicek -// added uf_BdJpsimumuK0starKpi() -- code by Pavel Reznicek -// - -// Header for this module:- - -#include "Pythia_i/Pythia.h" -#include "PythiaB/PythiaB.h" - -// Framework Related Headers:- -#include "GaudiKernel/MsgStream.h" -#include "GaudiKernel/Algorithm.h" - -#include "GeneratorObjects/McEventCollection.h" -#include "StoreGate/StoreGateSvc.h" - -#include "HepMC/IO_HEPEVT.h" -#include "HepMC/HEPEVT_Wrapper.h" - -#include "TruthUtils/GeneratorName.h" - -// Other classes used by this class:- -#include "GeneratorUtils/StringParse.h" -#include <stdlib.h> -//------------------------------- -#include "CLHEP/Random/RandFlat.h" -#include "AthenaKernel/IAtRndmGenSvc.h" - -// calls to fortran routines -extern "C" { - void initpyblock_(int*, const char*); - void pyinit_(const char*, - const char*, - const char*, - double* , - int, // lengths of character strings - int,// (should be value, not reference) - int - ); -// void pyevnt_(); - void pyevnw_(); - void pyexec_(); - void pystat_(int*); - void pylist_(int*); - void pyupda_(int*, int*); - void pydocu_(); -// void lunhep_(int*); // STDHEP routine for PYJETS->HEPEVT -void pyhepc_(int*); - int opdcay_(const char*, int*, char*, int, int); - void cldcay_(int*); - void parsel_(int*,int*,int*); - void multi_flav_luexec_(); - void finsel_(int*); -// void comons_( double*,const char*, double*,double*,double*, double*, double*, double*); - void comons_( double*,double*, double*,double*,double*, double*, double*, double*,int*,double*); - void bcopy_(int*); - void xsect_(int*); - void wri_ludat3_(int*); void copy_pydat3_(); -} -//----------------------------------- -// File scope declarations:- - -//-------------------------------------------------------------------------- -PythiaB::PythiaB(const std::string& name, - ISvcLocator* pSvcLocator) - : Pythia(name,pSvcLocator), - m_cutbqp(0.), m_cutbqe(0.), m_cutabqp(0.), m_cutabqe(0.), - m_xhad(0.) -{ -//-------------------------------------------------------------------------- - declareProperty("cutbq", m_cutbqVector); - declareProperty("lvl1cut", m_lvl1cut ); - declareProperty("lvl2cut", m_lvl2cut); - declareProperty("offcut", m_offcut); - declareProperty("mhadr",m_mhad = 1); - declareProperty("flavour", m_fla = 5); - declareProperty("SignalDumptoAscii", m_Ntup = 50); - declareProperty("ForceBDecay", m_forceb = "no"); - declareProperty("ForceCDecay", m_forcec = "no"); - - declareProperty("maxTriesHard", m_maxTriesHard = 50000); - declareProperty("ForceDecayChannel", m_forceDecayChannel = "none"); - declareProperty("DecayChannelParameters", m_decayChannelParameters ); -} - - -//-------------------------------------------------------------------------- - PythiaB::~PythiaB(){ -//-------------------------------------------------------------------------- -} - -//--------------------------------------------------------------------------- -StatusCode PythiaB::genuserInitialize() { - //--------------------------------------------------------------------------- - // Initialise the listing output, parameter and decay data input streams - // - ATH_MSG_INFO( " PYTHIAB INITIALISING. \n" ); - - // Define default input parameter values (stored in vectors ), - // can be overwritten by users datacards - m_cutbqVector.push_back("0. 100. or 0. 100."); - m_lvl1cut.push_back(0.); m_lvl1cut.push_back(0.); m_lvl1cut.push_back(100.); - m_lvl2cut.push_back(0.); m_lvl2cut.push_back(13.);m_lvl2cut.push_back(0.);m_lvl2cut.push_back(100.); - m_offcut.push_back(0.); - m_offcut.push_back(0.);m_offcut.push_back(100.); - m_offcut.push_back(0.);m_offcut.push_back(100.); - m_offcut.push_back(0.);m_offcut.push_back(100.); - - // Preset values for decay channel parameters to be used in - // user_finsel.F extensions (10 parameters total) - for (int i=0; i<10; i++) { - m_decayChannelParameters.push_back(0.); - } - -// store decay tables default and users defined in memory to allow later manipulations -// int ii=1; -// wri_ludat3_(&ii); // writes out file with defaul pydat3 - use only ones with unbiased b.txt - copy_pydat3_(); - - - // set up the input parameters additional to Pythia - double c0[4], c1[3], c2[4], c3[7]; - unsigned int i = 0; - ATH_MSG_DEBUG( " Command is: " << m_cutbqVector[i] ); - StringParse mystring(m_cutbqVector[i]); - ATH_MSG_DEBUG( " I am after StringParse mystring i=" ); - ATH_MSG_DEBUG( " mystring.numpiece(1)=" << mystring.numpiece(1) ); - ATH_MSG_DEBUG( " mystring.numpiece(4)=" << mystring.numpiece(4) ); - ATH_MSG_DEBUG( " mystring.piece(5)=" << mystring.piece(5) ); - c0[0]=mystring.numpiece(1); - c0[1]=mystring.numpiece(2); - c0[2]=mystring.numpiece(4); - c0[3]=mystring.numpiece(5); - - m_cutbqp=c0[0]; - m_cutbqe=c0[1]; - m_cutabqp=c0[2]; - m_cutabqe=c0[3]; - m_cutbqandor=mystring.piece(3) ; - ATH_MSG_DEBUG( " m_cutbqandor=" << m_cutbqandor ); - -// double c0[4], c1[3], c2[4], c3[7]; - for ( int ii=0; ii<= 6; ii++ ) - { - - if(ii<=2) c1[ii]=m_lvl1cut[ii]; - if(ii<=3) c2[ii]=m_lvl2cut[ii]; - if(ii<=6) c3[ii]=m_offcut[ii]; - } - - - double cutbqao= 1. ; - - if(m_cutbqandor=="and" ) cutbqao = 1. ; - if(m_cutbqandor=="AND" ) cutbqao = 1. ; - if(m_cutbqandor=="or" ) cutbqao = -1. ; - if(m_cutbqandor=="OR" ) cutbqao = -1. ; - -// user_finsel.F decay channel number and parameters -// New channels need to have a number assigned here! - int idc = -1; - if ( m_forceDecayChannel == "none" ) { - idc = -1; - } else if ( m_forceDecayChannel == "Skeleton" ) { - idc = 0; - } else if ( m_forceDecayChannel == "DsPhiX" ) { - idc = 1; - } else if ( m_forceDecayChannel == "LambdabmumuLambda" ) { - idc = 2; - } else if ( m_forceDecayChannel == "LambdabJpsimumuLambda" ) { - idc = 3; - } else if ( m_forceDecayChannel == "BsJpsimumuphiKK" ) { - idc = 4; - } else if ( m_forceDecayChannel == "bbmumu" ) { - idc = 5; - } else if ( m_forceDecayChannel == "BdKstarMuMu" ) { - idc = 6; - } else if ( m_forceDecayChannel == "BsPhiMuMu" ) { - idc = 7; - } else if ( m_forceDecayChannel == "BsGammaMuMu" ) { - idc = 8; - } else if ( m_forceDecayChannel == "CharmHadrons" ) { - idc = 9; - } else if ( m_forceDecayChannel == "BsAngles" ) { - idc = 10; - } else if ( m_forceDecayChannel == "BdJpsimumuK0starKpi" ) { - idc = 11; - } else if ( m_forceDecayChannel == "BsAnglesCDF" ) { - idc = 12; - } else if ( m_forceDecayChannel == "BdAnglesCDF" ) { - idc = 13; - } else { - ATH_MSG_WARNING( "Decay channel " << m_forceDecayChannel << " is not defined!" ); - } - - // parameters for user defined decay channels - double cdcp[10]; - for ( int ii=0; ii<10; ii++ ) { - cdcp[ii] = m_decayChannelParameters[ii]; - } - - ATH_MSG_DEBUG( "m_cutbqandor =" << m_cutbqandor << m_cutbqandor ); - ATH_MSG_DEBUG( " m_forceb= " << m_forceb << m_forceb ); - ATH_MSG_DEBUG( " idc = " << idc << " for channel " << m_forceDecayChannel ); - - comons_(c0,&cutbqao,c1,c2,c3,&m_mhad,&m_fla,&m_Ntup,&idc, - cdcp); - - m_xhad=0.; - -// check decay table after initialization - int ilist; - ilist=12; - pylist_(&ilist); - - m_BEventBuffer.erase( m_BEventBuffer.begin(), m_BEventBuffer.end() ); - - Pythia::pythia_stream = "PYTHIA"; - - // Should follow what is in Pythia_i genInitialize - HepMC::HEPEVT_Wrapper::set_sizeof_int(sizeof(int)); - HepMC::HEPEVT_Wrapper::set_sizeof_real(8); - HepMC::HEPEVT_Wrapper::set_max_number_entries(10000); - - return StatusCode::SUCCESS; - } - - -//--------------------------------------------------------------------------- -StatusCode PythiaB::callGenerator() { -//--------------------------------------------------------------------------- - ATH_MSG_DEBUG( " PYTHIA generating." ); - - if( !m_BEventBuffer.empty() ) { - ATH_MSG_DEBUG( "PythiaB skipped - still events in buffer" ); - return StatusCode::SUCCESS; // there are still buffered events. - }; - - // Save the random number seeds in the event - CLHEP::HepRandomEngine* engine = Pythia::p_AtRndmGenSvc->GetEngine(Pythia::pythia_stream); - const long* s = engine->getSeeds(); - m_seeds.clear(); - m_seeds.push_back(s[0]); - m_seeds.push_back(s[1]); - -//////////////////////////////// -// Generate partonic part of event -//////////////////////////////// - - int rejectSecondary = 2; - bool eventsAccepted = false; - int iiloop=0; - - while (!eventsAccepted) { - - ++iiloop; - if(iiloop>=m_maxTriesHard) { - ATH_MSG_ERROR( " PYTHIA generating inefficiently: Check your cuts. \n " ); - ATH_MSG_ERROR( " PYTHIA generating inefficiently: The cross section at the output may be wrong. \n" ); - break; - }; - - // Stop hadronization - int ip1=111; - int ip2=0; - this->pypars().mstp(ip1)=ip2; - - int rejectPrimary=2; // reject event as dafault - -// pyevnt_(); // create event - pyevnw_(); // create event -///////////////////////////////////////////////////////// -// First Event selection after hard process -///////////////////////////////////////////////////////// - int ibq=0; int icq=0; // count number of b and c pair-of-quarks in event - bool hardok = false; - parsel_(&rejectPrimary, &ibq, &icq); - double mhad_inter = m_mhad; - if (m_forceb=="yes" && ibq>1 ) mhad_inter = 2 * m_mhad; - // cout << "PythiaB: after 1st cut rejectPrimary = "<< rejectPrimary <<endl; - - if (rejectPrimary==0) { // passed first cut -///////////////////////////////////////////////////////// -// Haronization mhad times -///////////////////////////////////////////////////////// - - int icopy=1; - bcopy_(&icopy); // Remember partonic part of pyjets - - // Allow hadronization - ip2=1; - this->pypars().mstp(ip1)=ip2; - - - for ( int ihad=1; ihad<=mhad_inter ; ihad++ ) { // Repeat hadronization - - icopy=2; - bcopy_(&icopy); // Put back parton part removing all hadronization from pyjets - - // Execute event now - // Normal regime: for bb, cc, cccc or if no forced channel - // If forced channel: special multiflav treatment for bbbb, bbcc(m_forcec=yes) , bbbbcc, bbbbcccc - - - if(m_forceb=="no" || (ibq==1 && icq==0) || (ibq==0 && icq>=1) ) pyexec_(); - if(m_forceb=="yes" && ibq==1 && m_forcec =="no" && icq>=1 ) pyexec_(); - if(m_forceb=="yes" && ibq==1 && m_forcec =="yes" && icq>=1 ) multi_flav_luexec_(); - if(m_forceb=="yes" && ibq>1 ) multi_flav_luexec_(); - -/////////////////////////////////////////////////////////////// -// Event selections after hadronization -// Statistics, cross sections, listings, coversion to HEPEVT -/////////////////////////////////////////////////////////////// - - finsel_(&rejectSecondary); - - //cout << "PythiaB: outer loop index = " << iiloop - // << " , repeat hadro ihad = " << ihad - // << " out of "<< m_mhad - // << " , status rejectSecondary = " << rejectSecondary << endl; - - if(rejectSecondary==0) { - - hardok = true; - eventsAccepted = true; - ++m_events; - - ATH_MSG_INFO( "PythiaB: event number m_events accepted : "<< m_events ); - - // cout << "PythiaB: before conversion to HEPEVT" <<endl; - int mconv=1; // convert from PYJETS to HEPEVT, - //lunhep_(&mconv); // using STDHEP translation routine 1999/01/27 CG - pyhepc_(&mconv); - HepMC::HEPEVT_Wrapper::set_event_number(m_events); - StatusCode sc = this->storeBEvent(); - if ( sc.isFailure() ) return sc; // should newer happen (see storeBEvent()) - - }; - }; // end of repeat hadronization loop - - // calculate number of accepted hard processes for which at least one event was accepted after hadronization - if(hardok) m_xhad=m_xhad+1. ; - }; // end of if(rejectPrimary==0) after First cut - }; // end of while(!eventsAccepted) - - ATH_MSG_DEBUG( " PYTHIA generating done" ); - - return StatusCode::SUCCESS; - -} // end call Generator - - -//--------------------------------------------------------------------------- -StatusCode PythiaB::storeBEvent() { -//--------------------------------------------------------------------------- - -// HepMC::HEPEVT_Wrapper::print_hepevt(); - - HepMC::GenEvent* evt = new HepMC::GenEvent(1,1); - - HepMC::IO_HEPEVT hepio; - hepio.fill_next_event(evt); - evt->set_random_states(m_seeds); - - /* - cout << endl - << "***********************************************************" << endl - << "PythiaB::storeBEvent => Print evt after conversion " << endl - << "***********************************************************" << endl - << endl; - evt->print(); - */ - - m_BEventBuffer.push_back(evt); - - return StatusCode::SUCCESS; -} - - -long PythiaB::pCounter(HepMC::GenEvent* myEvt) const -{ - HepMC::GenEvent::particle_iterator pitr; - long n = 0; - for( pitr=myEvt->particles_begin(); pitr!=myEvt->particles_end(); ++pitr ) { n++; }; - return n; -} - - -//--------------------------------------------------------------------------- -StatusCode PythiaB::fillEvt(HepMC::GenEvent* evt) { -//--------------------------------------------------------------------------- - - if( m_BEventBuffer.empty() ) { - ATH_MSG_ERROR( "PythiaB: No events in buffer" ); - return StatusCode::FAILURE; - }; - - // Not sure if this is really needed and whether it works correctly, - // but following the Pythia_i code. Should have only effect if using - // PythiaB in conjunction with Tauola_i - store_Atlas_HEPEVT(); - - /* - cout << endl - << "****************************************************" << endl - << "PythiaB::fillEvt => Print event from Buffer" << endl - << "****************************************************" << endl - << endl; - m_BEventBuffer.back()->pGenEvt()->print(); - */ - -// *evt = *(m_BEventBuffer.back()->pGenEvt()); -// McEvent* mcevt = m_BEventBuffer.back(); -// evt = mcevt->pGenEvt(); -// evt = m_BEventBuffer.back(); - *evt = *(m_BEventBuffer.back()); - - // Should follow Pythia_i fillEvt as closely as possible - int pr_id = PYTHIA + m_ExternalProcess + this->pyint1().mint(1); - if (m_ExternalProcess > 0) pr_id = PYTHIA + m_ExternalProcess; - evt->set_signal_process_id(pr_id); - evt->set_random_states(m_seeds); - evt->weights().push_back(this->pypars().pari(7)); - evt->weights().push_back(this->pypars().pari(9)); - evt->weights().push_back(this->pypars().pari(10)); - //PDF WEIGHTS - using Pdf Info object.. - //pdf_id x_1, x_1, Q2, f_1, f_2 - int id1=this->pypars().msti(15); - int id2=this->pypars().msti(16); - double x1=this->pypars().pari(33); - double x2=this->pypars().pari(34); - double q=this->pypars().pari(23); - double pdf1=(double)this->pypars().mstp(51); //pdg id - awkward but.. - double pdf2=0.; //dummy - HepMC::PdfInfo tmp_pdi(id1,id2,x1,x2,q,pdf1,pdf2); - evt->set_pdf_info(tmp_pdi); - - // Convert cm->mm and GeV->MeV -// cmTomm(evt); - GeVToMeV(evt); - - - - - /* - cout << endl - << "****************************************************" << endl - << "PythiaB::fillEvt => Print evt after copy" << endl - << "****************************************************" << endl - << endl; - evt->print(); - */ - - m_BEventBuffer.pop_back(); - - ATH_MSG_DEBUG( "PythiaB using event from buffer (" << m_BEventBuffer.size() << " left) \n" ); - - return StatusCode::SUCCESS; -} - - -//--------------------------------------------------------------------------- -StatusCode PythiaB::genFinalize() { - //--------------------------------------------------------------------------- - ATH_MSG_INFO( " PYTHIABModule Ending. \n" ); - int mstat = 1; - - ATH_MSG_INFO( "Call PYSTAT at endRun" ); - ATH_MSG_INFO( "PythiaB::genFinalize m_events accepted "<< m_events ); - pystat_(&mstat); - - float bx[1]; float cx[1]; - bx[0]=this->pyint5().xsec(0,3)*m_events/this->pyint5().ngen(0,2)/m_mhad; - cx[0]=(1.*m_events)/m_xhad; - - ATH_MSG_ALWAYS( " I===================================================================================== " ); - ATH_MSG_ALWAYS( " I CROSSSECTION OF YOUR B-CHANNEL IS I " ); - ATH_MSG_ALWAYS( " I BX= PX*NB/AC/MHAD= I " << bx[0] << " mbarn" ); - ATH_MSG_ALWAYS( " I I " ); - ATH_MSG_ALWAYS( " I IN CASE YOU FORCED ANY DECAY YOU SHOULD I " ); - ATH_MSG_ALWAYS( " I CORRECT CROSS SECTION BX FURTHER, MULTIPLYING I " ); - ATH_MSG_ALWAYS( " I BX BY BRANCHING RATIO(S) OF YOUR FORCED I " ); - ATH_MSG_ALWAYS( " I DECAY(S) AND BY A FACTOR OF 2 FOR SYMMETRY I " ); - ATH_MSG_ALWAYS( " I I " ); - ATH_MSG_ALWAYS( " I MORE DETAILS ON CROSS SECTION I " ); - ATH_MSG_ALWAYS( " I PYTHIA MSEL=1 CROSS SECTION IS PX= I " << this->pyint5().xsec(0,3)<<" mbarn" ); - ATH_MSG_ALWAYS( " I NUMBER OF ACCEPTED MSEL=1 EVENTS AC= I " << this->pyint5().ngen(0,2) ); - ATH_MSG_ALWAYS( " I NUMBER OF ACCEPTED B-EVENTS IS NB= I " << m_events ); - ATH_MSG_ALWAYS( " I REPEATED HADRONIZATIONS IN EACH EVENT MHAD= I " << m_mhad ); - ATH_MSG_ALWAYS( " I AVERAGE NUM OF ACCEPTED EVTS IN HADRONIZATION LOOP I " << cx[0] ); - ATH_MSG_ALWAYS( " I IN CASE YOU FORCED ANY DECAY YOU SHOULD I " ); - ATH_MSG_ALWAYS( " I CORRECT CROSS SECTION BX FURTHER, MULTIPLYING I " ); - ATH_MSG_ALWAYS( " I BX BY BRANCHING RATIO(S) OF YOUR FORCED I " ); - ATH_MSG_ALWAYS( " I DECAY(S) AND BY A FACTOR OF 2 FOR SYMMETRY I " ); - ATH_MSG_ALWAYS( " I I " ); - ATH_MSG_ALWAYS( " I===================================================================================== " ); - - ATH_MSG_ALWAYS( " " ); - ATH_MSG_ALWAYS( " I===================================================================================== " ); - ATH_MSG_ALWAYS( " I YOUR MAIN SIMULATION PARAMETERS AND CUTS " ); - ATH_MSG_ALWAYS( " I===================================================================================== " ); - ATH_MSG_ALWAYS( " I HARD SCATTERING CUT pysubs().ckin(3) PT I " << this->pysubs().ckin(3) ); - ATH_MSG_ALWAYS( " I STRUCTURE FCN (1=CTEQ3 7=CTEQ5) pypars().mstp(51) I " << this->pypars().mstp(51) ); - ATH_MSG_ALWAYS( " I CUTS ON b and/or anti b QUARK I " << m_cutbqp << " ; " << m_cutbqe << " ; " << m_cutbqandor <<" ; " <<m_cutabqp << " ; " << m_cutabqe ); - ATH_MSG_ALWAYS( " I LVL1 MUON CUTS: PT AND ETA I " << m_lvl1cut[1] << " ; " << m_lvl1cut[2] ); - ATH_MSG_ALWAYS( " I LVL2 CUTS: ON(1)/OFF(0); PARTICLE-ID; PT AND ETA I " << m_lvl2cut[0] << " ; " << m_lvl2cut[1] << " ; " << m_lvl2cut[2] << " ; " << m_lvl2cut[3] ); - ATH_MSG_ALWAYS( " I CUTS FOR STABLE PARTICLES IN B-DECAY: ON(1)/OFF(0) I " << m_offcut[0] ); - ATH_MSG_ALWAYS( " I CHARGED HADRONS: PT AND ETA I " << m_offcut[1]<< " ; " << m_offcut[2] ); - ATH_MSG_ALWAYS( " I MUONS: PT AND ETA I " << m_offcut[3]<< " ; " << m_offcut[4] ); - ATH_MSG_ALWAYS( " I ELECTRONS: PT AND ETA I " << m_offcut[5]<< " ; " << m_offcut[6] ); - ATH_MSG_ALWAYS( " I===================================================================================== " ); - - std::cout << "MetaData: cross-section (nb)= " << bx[0]*1000000. << std::endl; - - return StatusCode::SUCCESS; -} diff --git a/Generators/PythiaB/src/README.user_finsel b/Generators/PythiaB/src/README.user_finsel deleted file mode 100644 index a3ad6dcbf477f884550f821fb42c943edfa84418..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/src/README.user_finsel +++ /dev/null @@ -1,144 +0,0 @@ - -README.user_finsel: README file for re-organized user_finsel.F - and it's extensions - -Author : W. Walkowiak, 2006-04-04 -Changes: w.w., 2006-04-09 -- added uf_BsJpsimumuphiKK.F - p.r., 2010-08-26 -- added uf_BdJpsimumuK0starKpi.F - ------------------------------------------------------------------------------ - - I. Introduction - II. Status of implemented uf_XXXXX.F files -III. Instructions for users - IV. Instructions for experts - -I. INTRODUCTION -=============== -Now, the FORTRAN subroutine user_finsel() should only provide switching -to the appropriate uf_XXXXX() subroutine which is located in the -appropriate uf_XXXXX.F file. For selecting the choosen uf_XXXX() the -jobOption switch - PythiaB.ForceDecayChannel = "XXXXX" -has been provided. -In addition, up to ten parameters (type double) may be passed to the -uf_XXXXX() subroutine via the jobOption - PythiaB.DecayChannelParameters = [0.0, 0.0, ..., 0.0] . -The meaning of the parameters is defined by the author of the uf_XXXXX.F file. -A skeleton file (uf_Skeleton.F) has been provided for code development. - - -II. STATUS OF IMPLEMENTED uf_XXXXX.F FILES -========================================== -uf_Skeleton.F: - Skeleton provided for user development and testing of - user_finsel code. - See below for instructions on how to use it. - -uf_DsPhiX.F: - user_finsel code for the decays B0s->Ds(PhiPi)Pi, B0s->Ds(PhiPi)A1 - and B0s->Ds(PhiPi)MuNu. - See the example jobOptions files for sample settings and use - of parameters to select the wanted decays. - This code has been tested. - -uf_LambdabmumuLambda.F: - Code provided by Pavel R. - Compiles but hasn't been tested. - -uf_LambdabJpsimumuLambda.F: - Code provided by Michigan group. - Compiles but hasn't been tested. - -uf_BsJpsimumuphiKK.F: - Code provided by James Catmore. - Compiles but hasn't been tested. - -uf_bbmumu.F - Code provided by Sergey Sivoklokov. - compiles but hasn't been tested. - -uf_ChHadr.F - Code provided by Leonid Gladilin - for selection 9 charm hadron decays with backgrounds. - This code has been tested. - -uf_BdJpsimumuK0starKpi.F: - Code provided by Pavel Reznicek (but based on James's BsJpsimumuphiKK) - This code has been tested. - - -III. INSTRUCTIONS FOR USERS -=========================== -The integration of code for a new (signal) decay chain in user_finsel -should proceed according to the following steps: -1) Edit uf_Skeleton.F and add your code there. - Note, that you may access the ten double precision parameters - which are set by PythiaB.DecayChannelParameters =[] - via the double precision array cufdcp(i). - These parameters are simply passed through from the jobOptions - to uf_Skeleton.F. -2) Add - PythiaB.ForceDecayChannel = "Skeleton" - PythiaB.DecayChannelParameters = [0.0, 0.0, ..., 0.0] - to your jobOptions file. - It is helpful to document the meaning of your parameters - in uf_Skeleton.F as well as the jobOptions file. -3) Run and test your code. -4) Once you are satisfied, please email the code, ie your - modified version of uf_Skeleton.F and an example jobOptions file - together with your suggestion for naming the decay ("XXXXX") to - Maria Smizanska <Maria.Smizanska@cern.ch> and - Wolfgang Walkowiak <walkowiak@hep.physik.uni-siegen.de> - who will take care of the integration of your code into PythiaB as - a new uf_XXXXXX() subroutine using your naming suggestion if appropriate. - - -IV. INSTRUCTIONS FOR EXPERTS -============================= -The integration of new uf_XXXXX() subroutines is simple: -1) Decide upon the name, e.g. XXXXX = NewDecaySelection -2) Rename the user supplied uf_Skeleton.F to uf_XXXXX, e.g. - uf_NewDecaySelection.F and edit the file accordingly - to adjust the subroutine name to uf_XXXXX(IRET), - e.g. uf_NewDecaySelection(IRET). -3) Edit user_finsel.F and add a call to uf_XXXXX() to - the following section, e.g.: - c - c select user defined decay channel - c - c 0: decay channel skeleton - if ( iufdc .eq. 0 ) call uf_Skeleton(iret) - ... - c - c 4: NewDecaySelection (provided by NewAnalysisGroup) - if ( iufdc .eq. 4 ) call uf_NewDecaySelection(iret) - c - Please choose the next free integer label for the decay - (4 in this example), take note of it. -4) Edit PythiaB.cxx and add a new switch for XXXXX to the following - section (e.g.): - // New channels need to have a number assigned here! - int idc = -1; - if ( m_forceDecayChannel == "none" ) { - idc = -1; - } else if ( m_forceDecayChannel == "Skeleton" ) { - idc = 0; - ... - } else if ( m_forceDecayChannel == "NewDecayChannel" ) { - idc = 4; // Add the integer label here! - } else { - ... - Make sure you add the correct integer label here and choose - the character string for the jobOption switch accordingly. -5) Check the user supplied jobOptions example file and modify the line - PythiaB.ForceDecayChannel = "Skeleton" - to - PythiaB.ForceDecayChannel = "NewDecayChannel" - and copy the file to the PythiaB/share/ directory. - - - - - - diff --git a/Generators/PythiaB/src/anti_beauty.F b/Generators/PythiaB/src/anti_beauty.F deleted file mode 100644 index 524d54cdc057fb13c78ce1790676df9a576f6a6a..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/src/anti_beauty.F +++ /dev/null @@ -1,64 +0,0 @@ -*CMZ : 02/08/2001 11.40.22 by Maria Smizanska -*-- Author : Maria Smizanska 22/09/96 - FUNCTION anti_beauty(I) -* * -*----------------------------------------------------------------------* -* * -* Name : anti_beauty * -* (module) * -* * -* Description : Is it anti_beauty hadron ? Selects only hadrons with * -* b quark (B-, Baryons ...) * -* Arguments : I particle line # in LUJETS * -* * -* * -* Banks/Tables: * -* LUJETS used * -* * -*----------------------------------------------------------------------* -* * -* Author : Maria Smizanska Date : 20/09/96 * -* * -* * -* Last modifications : * -* [name] Date : [date] * -* * -* Keywords : * -* [keywords] * -*----------------------------------------------------------------------* -* -c +CDE, TYPING. -*KEEP,DOUB. -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) -*KEEP,LUJETS. - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) - integer anti_beauty -*KEEP,FAMILY. - name_self(I)=K(I,2) - name_selv(I)=abs(K(I,2)) - name_father(I)=K(K(I,3),2) - name_grandpa(I)=K(K(K(I,3),3),2) - name_daughter1(I)=K(K(I,4),2) - name_daughter2(I)=K(K(I,5),2) - - link_self(I)=I - link_father(I)=K(I,3) - link_grandpa(I)=K(K(I,3),3) - link_daughter1(I)=K(I,4) - link_daughter2(I)=K(I,5) -*KEND. -C ----------- end CDE -------------------------------------------------- - anti_beauty=0 - - if(name_self(I).eq.-511.or.name_self(I).eq.-521.or. - + name_self(I).eq.-531.or.name_self(I).eq.-541.or. - + name_self(I).eq.5122.or.name_self(I).eq.5132.or. - + name_self(I).eq.5232.or.name_self(I).eq.5332) - +anti_beauty=1 - - - return -* - END ! BEAUTY diff --git a/Generators/PythiaB/src/anti_charm.F b/Generators/PythiaB/src/anti_charm.F deleted file mode 100644 index 927147e685a11d223a160ddbde92bfd360ca0983..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/src/anti_charm.F +++ /dev/null @@ -1,67 +0,0 @@ -*CMZ : 02/08/2001 11.40.55 by Maria Smizanska -*-- Author : Maria Smizanska 22/09/96 - FUNCTION anti_charm(I) -* * -*----------------------------------------------------------------------* -* * -* Name : anti_charm * -* (module) * -* * -* Description : Is it anti_charm hadron ? Selects only hadrons with * -* c quark (D+, Baryons Lambdac+) * -* Arguments : I particle line # in LUJETS * -* * -* * -* Banks/Tables: * -* LUJETS used * -* * -*----------------------------------------------------------------------* -* * -* Author : Maria Smizanska Date : 20/09/96 * -* * -* * -* Last modifications : * -* [name] Date : [date] * -* * -* Keywords : * -* [keywords] * -*----------------------------------------------------------------------* -* -c +CDE, TYPING. -*KEEP,DOUB. -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) -*KEEP,LUJETS. - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) - integer anti_charm -*KEEP,FAMILY. - name_self(I)=K(I,2) - name_selv(I)=abs(K(I,2)) - name_father(I)=K(K(I,3),2) - name_grandpa(I)=K(K(K(I,3),3),2) - name_daughter1(I)=K(K(I,4),2) - name_daughter2(I)=K(K(I,5),2) - - link_self(I)=I - link_father(I)=K(I,3) - link_grandpa(I)=K(K(I,3),3) - link_daughter1(I)=K(I,4) - link_daughter2(I)=K(I,5) -*KEND. -C ----------- end CDE -------------------------------------------------- - anti_charm=0 -c if((name_self(I).ge.400.and.name_self(I).lt.500).or. -c + (name_self(I).gt.4000.and.name_self(I).le.5000)) -c +anti_charm=1 - - if(name_self(I).eq.411.or.name_self(I).eq.421.or. - + name_self(I).eq.431.or. - + name_self(I).eq.4122.or.name_self(I).eq.4132.or. - + name_self(I).eq.4232.or.name_self(I).eq.4332) - +anti_charm=1 - - - return -* - END ! anti_charm diff --git a/Generators/PythiaB/src/bbbb_luexec.F b/Generators/PythiaB/src/bbbb_luexec.F deleted file mode 100644 index cf1cca7dbf85dfb750e294169fc7598e252d0ae7..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/src/bbbb_luexec.F +++ /dev/null @@ -1,211 +0,0 @@ -*CMZ : 02/08/2001 11.41.18 by Maria Smizanska -*-- Author : Maria Smizanska 22/07/2000 - - - - subroutine bbbb_luexec(INPAR) -c ----------------------------------------------------------------------- -c -c bbbb special -c -c if NOFORCED decays: normal regime, call luexec. -c if FORCED decay and INPAR=1 decay one B+antiB, and stop decay other B-aB -c if FORCED decay and INPAR=2 then decay the other pair with noforce table -c Hadronization is reapeated twice. -c -c ----------------------------------------------------------------------- - - -c INPUT PARAMETERS: input selects two functions of this subroutine - -*KEEP,DOUB. -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) -c INTEGER PYK,PYCHGE - INTEGER PYCOMP -*KEEP,HEAVYFLAV. -* store info about multiple heavy flavour produced in event - common/multif/ibq,icq -* remeber links of B and antiB chosen to decay free in bbbb - common/fixedB/is1,is2 - -*KEEP,LUDAT3. - COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5) -*KEEP,LUJETS. - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) -*KEEP,BBMOD. -* internal number to recognise bb decay regime - common/bbmod/IBBMOD -*KEEP,FAMILY. - name_self(I)=K(I,2) - name_selv(I)=abs(K(I,2)) - name_father(I)=K(K(I,3),2) - name_grandpa(I)=K(K(K(I,3),3),2) - name_daughter1(I)=K(K(I,4),2) - name_daughter2(I)=K(K(I,5),2) - - link_self(I)=I - link_father(I)=K(I,3) - link_grandpa(I)=K(K(I,3),3) - link_daughter1(I)=K(I,4) - link_daughter2(I)=K(I,5) -*KEND. - integer beauty - integer anti_beauty - - idebug=0 - - - - -c ----------------------------------------------------------------- - - if(ibq.le.1) return - - - - - if(INPAR.eq.1) then - -C ALL OTHER CASES -11 continue - - - - -c -c First call provides forced decays of one B and anti B -c - -c close all B-hadron weak decays (this is what we force) - - mdcy(pycomp(511),1)=0 - mdcy(pycomp(521),1)=0 - mdcy(pycomp(531),1)=0 - mdcy(pycomp(541),1)=0 - mdcy(pycomp(5122),1)=0 - mdcy(pycomp(5132),1)=0 - mdcy(pycomp(5232),1)=0 - mdcy(pycomp(5332),1)=0 - -c performe event - - call pyexec - if(idebug.ne.0) print *,'bbbb_luexec: called pylist1' - if(idebug.ne.0) call pylist(1) - -c -c find 4 beauty hadrons and select B and antiB that will remain stable -c in next pyexec call while allowing to decay the rest two according to -c forced decay table defined by user -c - - mdcy(pycomp(511),1)=1 - mdcy(pycomp(521),1)=1 - mdcy(pycomp(531),1)=1 - mdcy(pycomp(541),1)=1 - mdcy(pycomp(5122),1)=1 - mdcy(pycomp(5132),1)=1 - mdcy(pycomp(5232),1)=1 - mdcy(pycomp(5332),1)=1 - - -c i1=rndm(0.)+1.5 -c i2=rndm(0.)+1.5 - i1=PYR(0.)+1.5 - i2=PYR(0.)+1.5 - i1b=0 - i2b=0 - - - do ii=1,N - if(beauty(ii).eq.1) then - i1b=i1b+1 - if(i1.eq.i1b) then - K(ii,1)=16 - go to 1 - endif - endif - enddo -1 continue - - do jj=1,N - if(anti_beauty(jj).eq.1) then - i2b=i2b+1 - if(i2.eq.i2b) then - K(jj,1)=16 - go to 2 - endif - endif - enddo -2 continue - - is1=ii - is2=jj - - if(idebug.ne.0) print *,'bbbb_luexec: called pylist12-0' - if(idebug.ne.0) call pylist(12) - if(idebug.ne.0) then - do ii=1,N - if(beauty(ii).eq.1.or.anti_beauty(ii).eq.1) - + print *,'bbbb_luexec: B hadron',ii, name_self(ii),K(ii,1) - enddo - print *,'bbbb_luexec: particles remain stable',is1, - + name_self(is1),K(is1,1),is2,name_self(is2),K(is2,1) - endif - - call pyexec - if(idebug.ne.0) print *,'bbbb_luexec: called pylist1-2' - if(idebug.ne.0) call pylist(1) - - endif ! INPAR=1 - - if(INPAR.eq.2) then - - -c ----------------------------------------------------------------- -c -c decays remaining B and anti B with free decay table -c this is called after finsel selects the event - - - -c -c swap to free decay table -c - -12 call SWOP_LUDAT3(1) - if(idebug.ne.0) print *,'bbbb_luexec: called pylist12-1' - if(idebug.ne.0) call pylist(12) - -c -c now decay undecayed B-hadrons, -c - - do ii=1,N - if(beauty(ii).eq.1.and.K(ii,1).eq.16) K(ii,1)=1 - if(anti_beauty(ii).eq.1.and.K(ii,1).eq.16) K(ii,1)=1 - enddo - - call pyexec - if(idebug.ne.0) print *,'bbbb_luexec: called pylist1-3' - if(idebug.ne.0) call pylist(1) - -c -c swap back to user decay table -c - - call SWOP_LUDAT3(2) - - if(idebug.ne.0) print *,'bbbb_luexec: called pylist12-2' - if(idebug.ne.0) call pylist(12) - - endif ! INPAR=2 - -c ------------------------------------------------------------ - return - end - - - diff --git a/Generators/PythiaB/src/bbcc_luexec.F b/Generators/PythiaB/src/bbcc_luexec.F deleted file mode 100644 index fb4ce07103f524cac47ec551c6467d214cc74ef5..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/src/bbcc_luexec.F +++ /dev/null @@ -1,202 +0,0 @@ -*CMZ : 02/08/2001 11.41.41 by Maria Smizanska -*-- Author : Maria Smizanska 22/07/2000 - - - - subroutine bbcc_luexec -c ----------------------------------------------------------------------- -c -c bbcc special: prevent that directly produced charm hadron -c is not forced to decay as the one from B-hadron (if so) -c example: Bs->Ds->phipi. -c if NOFORCED decays: normal regime, call luexec. -c if B-FORCED decay: first close all charm decays then -c decay B+antiB, then find charm hadrons coming from forced B-decay -c and decay them, then decay table and decay rest of charm. -c -c ----------------------------------------------------------------------- - - -c INPUT PARAMETERS: input selects two functions of this subroutine - -*KEEP,DOUB. -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - INTEGER PYCOMP -*KEEP,HEAVYFLAV. -* store info about multiple heavy flavour produced in event - common/multif/ibq,icq -* remeber links of B and antiB chosen to decay free in bbbb - common/fixedB/is1,is2 - -*KEEP,LUDAT3. - COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5) -*KEEP,LUJETS. - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) -*KEEP,BBMOD. -* internal number to recognise bb decay regime - common/bbmod/IBBMOD -*KEND. - dimension ic2(4) -*KEEP,FAMILY. - name_self(I)=K(I,2) - name_selv(I)=abs(K(I,2)) - name_father(I)=K(K(I,3),2) - name_grandpa(I)=K(K(K(I,3),3),2) - name_daughter1(I)=K(K(I,4),2) - name_daughter2(I)=K(K(I,5),2) - - link_self(I)=I - link_father(I)=K(I,3) - link_grandpa(I)=K(K(I,3),3) - link_daughter1(I)=K(I,4) - link_daughter2(I)=K(I,5) -*KEND. - integer beauty - integer charm - integer anti_charm - - idebug=0 - - if(idebug.ne.0) - + print *,'bbcc_luexec: begin ibq, icq',ibq,icq - - -c ----------------------------------------------------------------- - - - if(ibq.le.0.or.icq.le.0) return - - - - - -C ALL OTHER bbcc CASES when B-was forced - - - - - -c -c First call provides forced decays of B and anti B -c - -c close all C-hadrons - weak decays - - mdcy(pycomp(411),1)=0 - mdcy(pycomp(421),1)=0 - mdcy(pycomp(431),1)=0 - mdcy(pycomp(4122),1)=0 - mdcy(pycomp(4132),1)=0 - mdcy(pycomp(4232),1)=0 - mdcy(pycomp(4332),1)=0 - -c performe event - - call pyexec - if(idebug.ne.0) print *,'bbcc_luexec: called pylist1' - if(idebug.ne.0) call pylist(1) - -c -c find 3 charm hadrons: 2 not coming from B-decays -c and one coming from B- (etc.) hadrons where we do not require forcing -c - - mdcy(pycomp(411),1)=1 - mdcy(pycomp(421),1)=1 - mdcy(pycomp(431),1)=1 - mdcy(pycomp(4122),1)=1 - mdcy(pycomp(4132),1)=1 - mdcy(pycomp(4232),1)=1 - mdcy(pycomp(4332),1)=1 - - ic1=0 -c call vzero(ic2,4) - do ii=1,4 - ic2(ii)=0 - enddo - - - do 100 ii=1,N - if(charm(ii).eq.0.and.anti_charm(ii).eq.0) go to 100 - if(idebug.ne.0) print *,'bbcc_luexec: C-hadron', - + ii,name_self(ii),name_father(ii),name_grandpa(ii) - iii=ii - kk=0 -11 continue - jj=link_father(iii) - if(beauty(jj).eq.1) go to 100 - iii=jj - kk=kk+1 - if(kk.gt.100) then - print *,'bbcc_luexec: trapped in loop, forced to finish' - go to 100 - endif - if(name_selv(jj).ge.400) go to 11 - K(ii,1)=16 - ic1=ic1 + 1 - if(ic1.le.4) ic2(ic1)=ii -100 continue - - - - if(idebug.ne.0) then - print *,'bbcc_luexec: direct C-hadrons' - print *,'bbcc_luexec: links',ic2 - print *,'bbcc_luexec: names', - + name_self(ic2(1)),name_father(ic2(1)),name_grandpa(ic2(1)), - + name_self(ic2(2)),name_father(ic2(2)),name_grandpa(ic2(2)), - + name_self(ic2(3)),name_father(ic2(2)),name_grandpa(ic2(3)) - endif - - call pyexec - if(idebug.ne.0) print *,'bbcc_luexec: called pylist1-2' - if(idebug.ne.0) call pylist(1) - - - - -c ----------------------------------------------------------------- -c -c decays remaining C and anti C with free decay table -c but before close the decay of B-hadron(B+, etc.) that was not required -c by user to decay - - -c -c swap to free decay table -c - -12 call SWOP_LUDAT3(1) - - -c -c now decay undecayed C-hadrons -c - do ii=1,N - if(charm(ii).eq.1.and.K(ii,1).eq.16) K(ii,1)=1 - if(anti_charm(ii).eq.1.and.K(ii,1).eq.16) K(ii,1)=1 - if(beauty(ii).eq.1.and.K(ii,1).eq.1) K(ii,1)=16 - enddo - - call pyexec - if(idebug.ne.0) print *,'bbcc_luexec: called pylist1-3' - if(idebug.ne.0) call pylist(1) - -c -c swap back to user decay table -c - - call SWOP_LUDAT3(2) - - - - - -c ------------------------------------------------------------ - return - end - - - diff --git a/Generators/PythiaB/src/bcopy.F b/Generators/PythiaB/src/bcopy.F deleted file mode 100644 index 65d0690a643e07d1a6dff7af84fc15a3ea4f07dd..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/src/bcopy.F +++ /dev/null @@ -1,40 +0,0 @@ - subroutine bcopy(ic) - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) -c COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) -c COMMON/COPYJET/NN,NNPAD,KK(4000,5),PP(4000,5),VV(4000,5) - - COMMON/PYJETS/INT(20002),REA(40000) - COMMON/COPYJET/INTC(20002),REAC(40000) - - if(ic.eq.1) then -c store PYJETS to COPYJET after hard process - do ii=1,20002 - INTC(ii)=INT(ii) - enddo - do ii=1,40000 - REAC(ii)=REA(ii) - enddo - endif - - if(ic.eq.2) then -c store COPYJET to PYJETS before repeated fragmentation - do ii=1,20002 - INT(ii)=INTC(ii) - enddo - do ii=1,40000 - REA(ii)=REAC(ii) - enddo - - - endif - - if(ic.ne.1.and.ic.ne.2) - + print *,'COPY: error, input should be 1 or 2 ' - - return - end - - - return - end diff --git a/Generators/PythiaB/src/beauty.F b/Generators/PythiaB/src/beauty.F deleted file mode 100644 index 86b44bd07ce1a3cbb74004758fc80e91c0d0a07c..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/src/beauty.F +++ /dev/null @@ -1,69 +0,0 @@ -*CMZ : 02/08/2001 11.42.13 by Maria Smizanska -*-- Author : Maria Smizanska 22/09/96 - FUNCTION BEAUTY(I) -* * -*----------------------------------------------------------------------* -* * -* Name : BEAUTY * -* (module) * -* * -* Description : Is it beauty hadron ? Selects only hadrons with * -* anti_b quark (B+, antiBaryons ...) * -* because exclusive signal channels are forced * -* for these hadrons * -* Arguments : I particle line # in LUJETS * -* * -* * -* Banks/Tables: * -* LUJETS used * -* * -*----------------------------------------------------------------------* -* * -* Author : Maria Smizanska Date : 20/09/96 * -* * -* * -* Last modifications : * -* [name] Date : [date] * -* * -* Keywords : * -* [keywords] * -*----------------------------------------------------------------------* -* -c +CDE, TYPING. -*KEEP,DOUB. -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) -*KEEP,LUJETS. - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) - integer beauty -*KEEP,FAMILY. - name_self(I)=K(I,2) - name_selv(I)=abs(K(I,2)) - name_father(I)=K(K(I,3),2) - name_grandpa(I)=K(K(K(I,3),3),2) - name_daughter1(I)=K(K(I,4),2) - name_daughter2(I)=K(K(I,5),2) - - link_self(I)=I - link_father(I)=K(I,3) - link_grandpa(I)=K(K(I,3),3) - link_daughter1(I)=K(I,4) - link_daughter2(I)=K(I,5) -*KEND. -C ----------- end CDE -------------------------------------------------- - beauty=0 -c if((name_self(I).ge.500.and.name_self(I).lt.600).or. -c + (name_self(I).gt.-6000.and.name_self(I).le.-5000)) -c +beauty=1 - - if(name_self(I).eq.511.or.name_self(I).eq.521.or. - + name_self(I).eq.531.or.name_self(I).eq.541.or. - + name_self(I).eq.-5122.or.name_self(I).eq.-5132.or. - + name_self(I).eq.-5232.or.name_self(I).eq.-5332) - +beauty=1 - - - return -* - END ! BEAUTY diff --git a/Generators/PythiaB/src/btreedel.F b/Generators/PythiaB/src/btreedel.F deleted file mode 100644 index 8be30a833e229e4e649b71d10e208349b97a2c5f..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/src/btreedel.F +++ /dev/null @@ -1,393 +0,0 @@ -c ******************************************************************* -c * * -c * subroutines TREEDEL_v103 * -c * (for PYTHIA 6.207) * -c * * -c * For delete the tree of the partical dotted * -c * * -c * The last modification: 18.02.2004 * -c * * -c * Author: Nickolay Nikitin, nik679@monet.npi.msu.su * -c * * -c ******************************************************************* - - subroutine TREEDEL (ijkl) - -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) -c INTEGER PYK,PYCHGE,PYCOMP - -c......Standard COMMON blocs - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) - COMMON/PYINT1/MINT(400),VINT(400) - COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2) - COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3) - COMMON/PYUPPR/NUP,KUP(20,7),NFUP,IFUP(10,2),PUP(20,5),Q2UP(0:10) - - - SAVE /PYJETS/,/PYDAT1/,/PYDAT2/ - SAVE /PYPARS/,/PYINT1/,/PYINT2/,/PYINT5/,/PYUPPR/ - - -c print *, ' ' -c print *,'Level 0' -c print *, ' KF code =', k(ijkl,2) -c print *,ijkl,' dotted strings:',k(ijkl,4), -c #' - ',k(ijkl,5) -c print *,' ' - - jkm=0 - do jkm=k(ijkl,4),k(ijkl,5) - - if(k(jkm,4).NE.0) then - call treedel1(jkm) - endif - -c print *,jkm,' treedel -OK!' - do i=1,5 - k(jkm,i)=0 -c print *,' k(',jkm,',',i,') =', k(jkm,i) - enddo - - do i=1,5 - p(jkm,i)=0.D0 -c print *,' p(',jkm,',',i,') =', p(jkm,i) - enddo - - do i=1,5 - v(jkm,i)=0.D0 -c print *,' v(',jkm,',',i,') =', v(jkm,i) - enddo -c print *,' ' - - enddo - - return - - end - - - - subroutine TREEDEL1 (ijkl) - -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) -c INTEGER PYK,PYCHGE,PYCOMP - -c......Standard COMMON blocs - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) - COMMON/PYINT1/MINT(400),VINT(400) - COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2) - COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3) - COMMON/PYUPPR/NUP,KUP(20,7),NFUP,IFUP(10,2),PUP(20,5),Q2UP(0:10) - - SAVE /PYJETS/,/PYDAT1/,/PYDAT2/ - SAVE /PYPARS/,/PYINT1/,/PYINT2/,/PYINT5/,/PYUPPR/ - -c print *,'Level 1' -c print *, ' KF code =', k(ijkl,2) -c print *,ijkl,' dotted strings:',k(ijkl,4), -c #' - ',k(ijkl,5) -c print *,' ' - - do jkm=k(ijkl,4),k(ijkl,5) - if(k(jkm,4).NE.0) then - call treedel2(jkm) - endif - -c print *,jkm,' treedel -OK!' - do i=1,5 - k(jkm,i)=0 -c print *,' k(',jkm,',',i,') =', k(jkm,i) - enddo - - do i=1,5 - p(jkm,i)=0.D0 -c print *,' p(',jkm,',',i,') =', p(jkm,i) - enddo - - do i=1,5 - v(jkm,i)=0.D0 -c print *,' v(',jkm,',',i,') =', v(jkm,i) - enddo -c print *,' ' - - enddo - - return - - end - - - - subroutine TREEDEL2 (ijkl) - -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) -c INTEGER PYK,PYCHGE,PYCOMP - -c......Standard COMMON blocs - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) - COMMON/PYINT1/MINT(400),VINT(400) - COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2) - COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3) - COMMON/PYUPPR/NUP,KUP(20,7),NFUP,IFUP(10,2),PUP(20,5),Q2UP(0:10) - - SAVE /PYJETS/,/PYDAT1/,/PYDAT2/ - SAVE /PYPARS/,/PYINT1/,/PYINT2/,/PYINT5/,/PYUPPR/ - -c print *,'Level 2' -c print *, ' KF code =', k(ijkl,2) -c print *,ijkl,' dotted strings:',k(ijkl,4), -c #' - ',k(ijkl,5) -c print *,' ' - - do jkm=k(ijkl,4),k(ijkl,5) - if(k(jkm,4).NE.0) then - call treedel3(jkm) - endif - -c print *,jkm,' treedel -OK!' - do i=1,5 - k(jkm,i)=0 -c print *,' k(',jkm,',',i,') =', k(jkm,i) - enddo - - do i=1,5 - p(jkm,i)=0.D0 -c print *,' p(',jkm,',',i,') =', p(jkm,i) - enddo - - do i=1,5 - v(jkm,i)=0.D0 -c print *,' v(',jkm,',',i,') =', v(jkm,i) - enddo -c print *,' ' - - enddo - - return - - end - - - - subroutine TREEDEL3 (ijkl) - -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) -c INTEGER PYK,PYCHGE,PYCOMP - -c......Standard COMMON blocs - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) - COMMON/PYINT1/MINT(400),VINT(400) - COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2) - COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3) - COMMON/PYUPPR/NUP,KUP(20,7),NFUP,IFUP(10,2),PUP(20,5),Q2UP(0:10) - - SAVE /PYJETS/,/PYDAT1/,/PYDAT2/ - SAVE /PYPARS/,/PYINT1/,/PYINT2/,/PYINT5/,/PYUPPR/ - -c print *,'Level 3' -c print *,ijkl,' dotted strings:',k(ijkl,4), -c #' - ',k(ijkl,5) -c print *,' ' - - do jkm=k(ijkl,4),k(ijkl,5) - if(k(jkm,4).NE.0) then - call treedel4(jkm) - endif - -c print *,jkm,' treedel -OK!' - do i=1,5 - k(jkm,i)=0 -c print *,' k(',jkm,',',i,') =', k(jkm,i) - enddo - - do i=1,5 - p(jkm,i)=0.D0 -c print *,' p(',jkm,',',i,') =', p(jkm,i) - enddo - - do i=1,5 - v(jkm,i)=0.D0 -c print *,' v(',jkm,',',i,') =', v(jkm,i) - enddo -c print *,' ' - - enddo - return - - end - - - subroutine TREEDEL4 (ijkl) - -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) -c INTEGER PYK,PYCHGE,PYCOMP - -c......Standard COMMON blocs - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) - COMMON/PYINT1/MINT(400),VINT(400) - COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2) - COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3) - COMMON/PYUPPR/NUP,KUP(20,7),NFUP,IFUP(10,2),PUP(20,5),Q2UP(0:10) - - SAVE /PYJETS/,/PYDAT1/,/PYDAT2/ - SAVE /PYPARS/,/PYINT1/,/PYINT2/,/PYINT5/,/PYUPPR/ - -c print *,'Level 4' -c print *,ijkl,' dotted strings:',k(ijkl,4), -c #' - ',k(ijkl,5) -c print *,' ' - - do jkm=k(ijkl,4),k(ijkl,5) - if(k(jkm,4).NE.0) then - call treedel5(jkm) - endif - -c print *,jkm,' treedel -OK!' - do i=1,5 - k(jkm,i)=0 -c print *,' k(',jkm,',',i,') =', k(jkm,i) - enddo - - do i=1,5 - p(jkm,i)=0.D0 -c print *,' p(',jkm,',',i,') =', p(jkm,i) - enddo - - do i=1,5 - v(jkm,i)=0.D0 -c print *,' v(',jkm,',',i,') =', v(jkm,i) - enddo -c print *,' ' - - enddo - return - - end - - - subroutine TREEDEL5 (ijkl) - -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) -c INTEGER PYK,PYCHGE,PYCOMP - -c......Standard COMMON blocs - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) - COMMON/PYINT1/MINT(400),VINT(400) - COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2) - COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3) - COMMON/PYUPPR/NUP,KUP(20,7),NFUP,IFUP(10,2),PUP(20,5),Q2UP(0:10) - - SAVE /PYJETS/,/PYDAT1/,/PYDAT2/ - SAVE /PYPARS/,/PYINT1/,/PYINT2/,/PYINT5/,/PYUPPR/ - -c print *,'Level 5' -c print *,ijkl,' dotted strings:',k(ijkl,4), -c #' - ',k(ijkl,5) -c print *,' ' - - do jkm=k(ijkl,4),k(ijkl,5) - if(k(jkm,4).NE.0) then - call treedel6(jkm) - endif - -c print *,jkm,' treedel -OK!' - do i=1,5 - k(jkm,i)=0 -c print *,' k(',jkm,',',i,') =', k(jkm,i) - enddo - - do i=1,5 - p(jkm,i)=0.D0 -c print *,' p(',jkm,',',i,') =', p(jkm,i) - enddo - - do i=1,5 - v(jkm,i)=0.D0 -c print *,' v(',jkm,',',i,') =', v(jkm,i) - enddo -c print *,' ' - - enddo - return - - end - - - subroutine TREEDEL6 (ijkl) - -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) -c INTEGER PYK,PYCHGE,PYCOMP - -c......Standard COMMON blocs - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) - COMMON/PYINT1/MINT(400),VINT(400) - COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2) - COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3) - COMMON/PYUPPR/NUP,KUP(20,7),NFUP,IFUP(10,2),PUP(20,5),Q2UP(0:10) - - SAVE /PYJETS/,/PYDAT1/,/PYDAT2/ - SAVE /PYPARS/,/PYINT1/,/PYINT2/,/PYINT5/,/PYUPPR/ - -c print *,'Level 6' -c print *,ijkl,' dotted strings:',k(ijkl,4), -c #' - ',k(ijkl,5) -c print *,' ' - - do jkm=k(ijkl,4),k(ijkl,5) - -c print *,jkm,' treedel -OK!' - do i=1,5 - k(jkm,i)=0 -c print *,' k(',jkm,',',i,') =', k(jkm,i) - enddo - - do i=1,5 - p(jkm,i)=0.D0 -c print *,' p(',jkm,',',i,') =', p(jkm,i) - enddo - - do i=1,5 - v(jkm,i)=0.D0 -c print *,' v(',jkm,',',i,') =', v(jkm,i) - enddo -c print *,' ' - - enddo - return - end - diff --git a/Generators/PythiaB/src/charm.F b/Generators/PythiaB/src/charm.F deleted file mode 100644 index f36da521baa74f3c0679ecd9fa992f55c6e5d489..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/src/charm.F +++ /dev/null @@ -1,70 +0,0 @@ -*CMZ : 02/08/2001 11.42.47 by Maria Smizanska -*-- Author : Maria Smizanska 22/09/96 - FUNCTION charm(I) -* * -*----------------------------------------------------------------------* -* * -* Name : charm * -* (module) * -* * -* Description : Is it charm hadron ? Selects only hadrons with * -* anti_c quark (D-, antiBaryons Lambdac-) * -* because exclusive signal channels are forced * -* for these hadrons * -* Arguments : I particle line # in LUJETS * -* * -* * -* Banks/Tables: * -* LUJETS used * -* * -*----------------------------------------------------------------------* -* * -* Author : Maria Smizanska Date : 20/09/96 * -* * -* * -* Last modifications : * -* [name] Date : [date] * -* * -* Keywords : * -* [keywords] * -*----------------------------------------------------------------------* -* -c +CDE, TYPING. -*KEEP,DOUB. -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) -c INTEGER PYK,PYCHGE,PYCOMP -*KEEP,LUJETS. - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) - integer charm -*KEEP,FAMILY. - name_self(I)=K(I,2) - name_selv(I)=abs(K(I,2)) - name_father(I)=K(K(I,3),2) - name_grandpa(I)=K(K(K(I,3),3),2) - name_daughter1(I)=K(K(I,4),2) - name_daughter2(I)=K(K(I,5),2) - - link_self(I)=I - link_father(I)=K(I,3) - link_grandpa(I)=K(K(I,3),3) - link_daughter1(I)=K(I,4) - link_daughter2(I)=K(I,5) -*KEND. -C ----------- end CDE -------------------------------------------------- - charm=0 -c if((name_self(I).ge.400.and.name_self(I).lt.500).or. -c + (name_self(I).gt.4000.and.name_self(I).le.5000)) -c +charm=1 - - if(name_self(I).eq.-411.or.name_self(I).eq.-421.or. - + name_self(I).eq.-431.or. - + name_self(I).eq.-4122.or.name_self(I).eq.-4132.or. - + name_self(I).eq.-4232.or.name_self(I).eq.-4332) - +charm=1 - - - return -* - END ! charm diff --git a/Generators/PythiaB/src/children.F b/Generators/PythiaB/src/children.F deleted file mode 100644 index 69fc83e01d4ba878f295a95980cbf80eebadbc59..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/src/children.F +++ /dev/null @@ -1,51 +0,0 @@ -*CMZ : 02/08/2001 11.43.16 by Maria Smizanska -*-- Author : Maria Smizanska 22/09/96 - - - FUNCTION CHILDREN(I) -* * -*----------------------------------------------------------------------* -* * -* Name : CHILDREN * -* (module) * -* * -* Description : * -* [description] * -* * -* Arguments : * -* [name] ([in | out | in/out]) [description] * -* * -* Banks/Tables: * -* [name] ([filled | used | modified]) * -* * -*----------------------------------------------------------------------* -* * -* Author : Maria Smizanska Date : 22/09/96 * -* * -* * -* Last modifications : * -* [name] Date : [date] * -* * -* Keywords : * -* [keywords] * -*----------------------------------------------------------------------* -* -C +CDE, TYPING. -*KEEP,DOUB. -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) -*KEEP,LUJETS. - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) -*KEND. - integer children - -C ----------- end CDE -------------------------------------------------- -* - idebug=0 - children=abs(K(I,5)-K(I,4))+1 - if(K(I,4).eq.0) children=0 - - return -* - END ! CHILDREN diff --git a/Generators/PythiaB/src/coef.F b/Generators/PythiaB/src/coef.F deleted file mode 100644 index acf213aa4bfba1f0ee5cb26a0695c4ab1bae90de..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/src/coef.F +++ /dev/null @@ -1,1382 +0,0 @@ -c 28.10.2002; 29.10.2002; 07.04.2003; 08.04.2003 -c 09.04.2003; 13.04.2003; 14.04.2003; 15.04.2003 -c 13.05.2003; 17.05.2003; 21.05.2003; 30.06.2003 -c 08.07.2003; - - - -c * The strong running coupling constant by PDG * -c * * -c * mu - the scale parameter ( in GeV ); * -c * Nf - number of "effective" flavours ( Nf=5 for b-quark); * -c * the number of the collors = 3; * -c * ias - the number for Lms[]: * -c * = 0 Lms=min Lms, * -c * = 1 the mean value, * -c * = 2 Lms=max Lms. * - - subroutine myAs(mu,Nf,ias) - - COMMON /nikwc/ n_as, n_c1, n_c2, n_c3, n_c4, n_c5, n_c6, n_c7 - SAVE /nikwc/ - - dimension PLms(3) - - real n_as, n_c1, n_c2, n_c3, n_c4, n_c5, n_c6, n_c7 ! /nikwc/ - - real mu - integer Nf, ias - real as, ass, las, mm - real b0, b1, b2 - real pi -c * the Lms - parametr, which represented the experimental * -c * value of the As(Mz) in the \bar {MS}-schime * - real PLms - - n_as=0.0 - -c print *, ' BEGIN of the subroutine myAs(...)' - - pi=3.1415927 - - PLms(1)=185.0 ! MeV - PLms(2)=208.0 ! MeV - PLms(3)=233.0 ! MeV - - b0=11.-2.*(float(Nf))/3. - b1=51.-19.*(float(Nf))/3. - b2=2857.-5033.*(float(Nf))/9.+325.*(float(Nf**2))/27. - - mm=(mu*1000.0/PLms(ias+1))**2 - -c * the running coupling constant * - las=alog(alog(mm)) - ass=(las-0.5)**2+b2*b0/(8.*b1*b1)-5./4. - ass=ass/((b0**4)*(alog(mm)**2)) - as=1.0-2.0*b1*las/((b0**2)*alog(mm)) - as=as+4.0*b1*b1*ass - as=4.0*pi*as/(b0*alog(mm)) - - n_as=as - - return - end - - - - -c ********************************************************************* -c ********************************************************************* -c ** BEGIN THE CALCULATION OF THE WILSON COEFFICIENTS ** -c ********************************************************************* -c ********************************************************************* - - -c * Spenser function * -c * in serial representation * -c * ( w <= 1.0 ) * -c * * - subroutine myLi2(w,Lii) - - real w - real Lii - integer k - - Lii=0.0 - - do k=1,10 - Lii=Lii+w**k/k**2 - enddo - - return - end - - -c * Coefficient myC1(mu) * -c * by A.J.Buras and M.Munz, Phys.Rev. D52, 186. * - subroutine myC1(mu, Mw, Nf, ias) - - COMMON /nikwc/ n_as, n_c1, n_c2, n_c3, n_c4, n_c5, n_c6, n_c7 - SAVE /nikwc/ - - dimension a(8), ak1(8) - - real n_as, n_c1, n_c2, n_c3, n_c4, n_c5, n_c6, n_c7 ! /nikwc/ - - real mu, Mw - integer Nf, ias - real CC1 - real eta - real asW ! the strong coupling constant at the scale Mw - real asmu ! the strong coupling constant at the scale mu - integer i - - real a - real ak1 - - n_c1=0.0 - - call myAs(Mw,Nf,ias) - asW=n_as - call myAs(mu,Nf,ias) - asmu=n_as - - eta=asW/asmu - - a(1) = 14.0/23.0 - a(2) = 16.0/23.0 - a(3) = 6.0/23.0 - a(4) = (-12.0)/23.0 - a(5) = 0.4086 - a(6) = -0.4230 - a(7) = -0.8994 - a(8) = 0.1456 - - ak1(1) = 0.0 - ak1(2) = 0.0 - ak1(3) = 0.5 - ak1(4) = -0.5 - ak1(5) = 0.0 - ak1(6) = 0.0 - ak1(7) = 0.0 - ak1(8) = 0.0 - - CC1=0.0 - do i=1,8 - CC1=CC1+ak1(i)*eta**a(i) - enddo - - n_c1=CC1 - - return - end - - -c * Coefficient myC2(mu) * -c * by A.J.Buras and M.Munz, Phys.Rev. D52, 186. * - subroutine myC2(mu, Mw, Nf, ias) - - COMMON /nikwc/ n_as, n_c1, n_c2, n_c3, n_c4, n_c5, n_c6, n_c7 - SAVE /nikwc/ - - dimension a(8), ak2(8) - - real n_as, n_c1, n_c2, n_c3, n_c4, n_c5, n_c6, n_c7 ! /nikwc/ - - real mu, Mw - integer Nf, ias - real CC2 - real eta - real asW ! the strong coupling constant at the scale Mw - real asmu ! the strong coupling constant at the scale mu - integer i - - real a - real ak2 - - n_c2=0.0 - - call myAs(Mw,Nf,ias) - asW=n_as - call myAs(mu,Nf,ias) - asmu=n_as - - eta=asW/asmu - - a(1) = 14.0/23.0 - a(2) = 16.0/23.0 - a(3) = 6.0/23.0 - a(4) = (-12.0)/23.0 - a(5) = 0.4086 - a(6) = -0.4230 - a(7) = -0.8994 - a(8) = 0.1456 - - ak2(1) = 0.0 - ak2(2) = 0.0 - ak2(3) = 0.5 - ak2(4) = 0.5 - ak2(5) = 0.0 - ak2(6) = 0.0 - ak2(7) = 0.0 - ak2(8) = 0.0 - - CC2=0.0 - do i=1,8 - CC2=CC2+ak2(i)*eta**a(i) - enddo - - n_c2=CC2 - - return - end - - - -c * Coefficient myC3(mu) * -c * by A.J.Buras and M.Munz, Phys.Rev. D52, 186. * - subroutine myC3(mu, Mw, Nf, ias) - - COMMON /nikwc/ n_as, n_c1, n_c2, n_c3, n_c4, n_c5, n_c6, n_c7 - SAVE /nikwc/ - - dimension a(8), ak3(8) - - real n_as, n_c1, n_c2, n_c3, n_c4, n_c5, n_c6, n_c7 ! /nikwc/ - - real mu, Mw - integer Nf, ias - real CC3 - real eta - real asW ! the strong coupling constant at the scale Mw - real asmu ! the strong coupling constant at the scale mu - integer i - - real a - real ak3 - - n_c3=0.0 - - call myAs(Mw,Nf,ias) - asW=n_as - call myAs(mu,Nf,ias) - asmu=n_as - - eta=asW/asmu - - a(1) = 14.0/23.0 - a(2) = 16.0/23.0 - a(3) = 6.0/23.0 - a(4) = (-12.0)/23.0 - a(5) = 0.4086 - a(6) = -0.4230 - a(7) = -0.8994 - a(8) = 0.1456 - - ak3(1) = 0.0 - ak3(2) = 0.0 - ak3(3) = (-1.0)/14.0 - ak3(4) = 1.0/6.0 - ak3(5) = 0.0510 - ak3(6) = -0.1403 - ak3(7) = -0.0113 - ak3(8) = 0.0054 - - CC3=0.0 - do i=1,8 - CC3=CC3+ak3(i)*eta**a(i) - enddo - - n_c3=CC3 - - return - end - - - -c * Coefficient myC4(mu) * -c * by A.J.Buras and M.Munz, Phys.Rev. D52, 186. * - subroutine myC4(mu, Mw, Nf, ias) - - COMMON /nikwc/ n_as, n_c1, n_c2, n_c3, n_c4, n_c5, n_c6, n_c7 - SAVE /nikwc/ - - dimension a(8), ak4(8) - - real n_as, n_c1, n_c2, n_c3, n_c4, n_c5, n_c6, n_c7 ! /nikwc/ - - real mu, Mw - integer Nf, ias - real CC4 - real eta - real asW ! the strong coupling constant at the scale Mw - real asmu ! the strong coupling constant at the scale mu - integer i - - real a - real ak4 - - n_c4=0.0 - - call myAs(Mw,Nf,ias) - asW=n_as - call myAs(mu,Nf,ias) - asmu=n_as - - eta=asW/asmu - - a(1) = 14.0/23.0 - a(2) = 16.0/23.0 - a(3) = 6.0/23.0 - a(4) = (-12.0)/23.0 - a(5) = 0.4086 - a(6) = -0.4230 - a(7) = -0.8994 - a(8) = 0.1456 - - ak4(1) = 0.0 - ak4(2) = 0.0 - ak4(3) = (-1.0)/14.0 - ak4(4) = (-1.0)/6.0 - ak4(5) = 0.0984 - ak4(6) = 0.1214 - ak4(7) = 0.0156 - ak4(8) = 0.0026 - - CC4=0.0 - do i=1,8 - CC4=CC4+ak4(i)*eta**a(i) - enddo - - n_c4=CC4 - - return - end - - - -c * Coefficient myC5(mu) * -c * by A.J.Buras and M.Munz, Phys.Rev. D52, 186. * - subroutine myC5(mu, Mw, Nf, ias) - - COMMON /nikwc/ n_as, n_c1, n_c2, n_c3, n_c4, n_c5, n_c6, n_c7 - SAVE /nikwc/ - - dimension a(8), ak5(8) - - real n_as, n_c1, n_c2, n_c3, n_c4, n_c5, n_c6, n_c7 ! /nikwc/ - - real mu, Mw - integer Nf, ias - real CC5 - real eta - real asW ! the strong coupling constant at the scale Mw - real asmu ! the strong coupling constant at the scale mu - integer i - - real a - real ak5 - - n_c5=0.0 - - call myAs(Mw,Nf,ias) - asW=n_as - call myAs(mu,Nf,ias) - asmu=n_as - - eta=asW/asmu - - a(1) = 14.0/23.0 - a(2) = 16.0/23.0 - a(3) = 6.0/23.0 - a(4) = (-12.0)/23.0 - a(5) = 0.4086 - a(6) = -0.4230 - a(7) = -0.8994 - a(8) = 0.1456 - - ak5(1) = 0.0 - ak5(2) = 0.0 - ak5(3) = 0.0 - ak5(4) = 0.0 - ak5(5) = -0.0397 - ak5(6) = 0.0117 - ak5(7) = -0.0025 - ak5(8) = 0.0304 - - CC5=0.0 - do i=1,8 - CC5=CC5+ak5(i)*eta**a(i) - enddo - - n_c5=CC5 - - return - end - - - -c * Coefficient myC6(mu) * -c * by A.J.Buras and M.Munz, Phys.Rev. D52, 186. * - subroutine myC6(mu, Mw, Nf, ias) - - COMMON /nikwc/ n_as, n_c1, n_c2, n_c3, n_c4, n_c5, n_c6, n_c7 - SAVE /nikwc/ - - dimension a(8), ak6(8) - - real n_as, n_c1, n_c2, n_c3, n_c4, n_c5, n_c6, n_c7 ! /nikwc/ - - real mu, Mw - integer Nf, ias - real CC6 - real eta - real asW ! the strong coupling constant at the scale Mw - real asmu ! the strong coupling constant at the scale mu - integer i - - real a - real ak6 - - n_c6=0.0 - - call myAs(Mw,Nf,ias) - asW=n_as - call myAs(mu,Nf,ias) - asmu=n_as - - eta=asW/asmu - - a(1) = 14.0/23.0 - a(2) = 16.0/23.0 - a(3) = 6.0/23.0 - a(4) = (-12.0)/23.0 - a(5) = 0.4086 - a(6) = -0.4230 - a(7) = -0.8994 - a(8) = 0.1456 - - ak6(1) = 0.0 - ak6(2) = 0.0 - ak6(3) = 0.0 - ak6(4) = 0.0 - ak6(5) = 0.0335 - ak6(6) = 0.0239 - ak6(7) = -0.0462 - ak6(8) = -0.0112 - - CC6=0.0 - do i=1,8 - CC6=CC6+ak6(i)*eta**a(i) - enddo - - n_c6=CC6 - - return - end - - - -c * by A.J.Buras and M.Munz, Phys.Rev. D52, 186. * - subroutine myA(z,AA) - - real z, AA - - AA=z*(8.0*z**2+5.0*z-7.0)/(12.0*(z-1.0)**3) - AA=AA+z**2*(2.0-3.0*z)*alog(z)/(2.0*(z-1.0)**4.0) - - return - end - - - -c * by A.J.Buras and M.Munz, Phys.Rev. D52, 186. */ - subroutine myB(z,BB) - - real z, BB - - BB=z/(4.0*(1.0-z))+z*alog(z)/(4.0*(1.0-z)**2) - - return - end - - - -c .by A.J.Buras and M.Munz, Phys.Rev. D52, 186. - subroutine myC_Bur(z,CC) - - real z, CC - - CC=z*(z-6.0)/(8.0*(z-1.0)) - CC=CC+z*(3.0*z+2.0)*alog(z)/(8.0*(z-1.0)**2) - - return - end - - - -c .by A.J.Buras and M.Munz, Phys.Rev. D52, 186. - subroutine myD_Bur(z, DD) - - real z, DD - - DD=(25.0*z**2-19.0*z**3.0)/(36.0*(z-1.0)**3) - DD=DD+z**2*(5.0*z**2-2.0*z-6.0)*alog(z)/(18.0*(z-1.0)**4.0) - DD=DD-(4.0/9.0)*alog(z) - - return - end - - - -c .by A.J.Buras and M.Munz, Phys.Rev. D52, 186. - subroutine myE(z, EE) - real z, zlog, EE - -c print *, ' ' -c print *, ' BEGIN subroutine myE(...)' -c print *, ' z =', z - - zlog=alog(z) -c print *, ' zlog =', zlog - - EE=z*(18.0-11.0*z-z*z)/(12.0*(1.0-z)**3.0) -c print *, 'line 1 EE =', EE - EE=EE+z**2*(15.0-16.0*z+4.0*z*z)*zlog/(6.0*(1.0-z)**4) -c print *, 'line 2 EE =', EE - EE=EE-(2.0/3.0)*zlog -c print *, 'line 3 EE =', EE - -c print *, ' END subroutine myE(...)' -c print *, ' ' - - return - end - - - -c .by A.J.Buras and M.Munz, Phys.Rev. D52, 186. - subroutine myF_Bur(z, FF) - - real z, FF - - FF=z*(z**2-5.0*z-2.0)/(4.0*(z-1.0)**3) - FF=FF+3.0*z**2*alog(z)/(2.0*(z-1.0)**4) - - return - end - - - -c .by A.J.Buras and M.Munz, Phys.Rev. D52, 186. - subroutine myY(z,YY) - - real z, YY - real BB, CC - - call myC_Bur(z,CC) - call myB(z,BB) - - YY=CC-BB - - return - end - - - -c .by A.J.Buras and M.Munz, Phys.Rev. D52, 186. */ - subroutine myZ(z, ZZ) - - real z, ZZ - real CC, DD - - call myC_Bur(z,CC) - call myD_Bur(z,DD) - - ZZ=CC+0.25*DD - - return - end - - - - -c * Coefficient myC7gamma(mu) in the SM * -c * by A.J.Buras and M.Munz, Phys.Rev. D52, 186. * - subroutine myC7gamma(mu, Mw, mt, Nf, ias) - - COMMON /nikwc/ n_as, n_c1, n_c2, n_c3, n_c4, n_c5, n_c6, n_c7 - SAVE /nikwc/ - - dimension a(8), ah(8) - - real n_as, n_c1, n_c2, n_c3, n_c4, n_c5, n_c6, n_c7 ! /nikwc/ - - real mu, Mw, mt - integer Nf, ias - - real C7, C70, C80, sum - real AA, FF - real x, eta - real asW, asmu - integer i - real a - real ah - - n_c7=0.0 - - a(1) = 14.0/23.0 - a(2) = 16.0/23.0 - a(3) = 6.0/23.0 - a(4) = (-12.0)/23.0 - a(5) = 0.4086 - a(6) = -0.4230 - a(7) = -0.8994 - a(8) = 0.1456 - - ah(1) = 2.2996 - ah(2) = -1.0880 - ah(3) = (-3.0)/7.0 - ah(4) = (-1.0)/14.0 - ah(5) = -0.6494 - ah(6) = -0.0380 - ah(7) = -0.0186 - ah(8) = -0.0057 - - C7=0.0 - asW=0.0 - asmu=0.0 - - x=(mt/Mw)**2 - call myAs(Mw,Nf,ias) - asW=n_as -c print *, ' asW =', asW - call myAs(mu,Nf,ias) - asmu=n_as -c print *,' asmu =', asmu - - eta=asW/asmu - - call myA(x,AA) - call myF_Bur(x,FF) - -c print *, ' x =', x -c print *, ' eta =', eta -c print *, ' AA =', AA -c print *, ' FF =', FF - - C70=(-0.5)*AA - C80=(-0.5)*FF - - C7=eta**0.7*C70 - C7=C7+(8.0/3.0)*(eta**0.61-eta**0.7)*C80 - - sum=0.0 - do i=1,8 - sum=sum+ah(i)*eta**a(i) -c print *, i, ' sum =', sum - enddo - - C7=C7+sum - n_c7=C7 - - return - end - - - - -c * Coefficient P_E * -c * by A.J.Buras and M.Munz, Phys.Rev. D52, 186; * -c * see formula (2.12). * - subroutine myPe(eta, Pee) - - dimension a(8), q(8) - - real eta - real sum - real Pee - integer i - - real a, q - - a(1) = 14.0/23.0 - a(2) = 16.0/23.0 - a(3) = 6.0/23.0 - a(4) = (-12.0)/23.0 - a(5) = 0.4086 - a(6) = -0.4230 - a(7) = -0.8994 - a(8) = 0.1456 - - q(1) = 0.0 - q(2) = 0.0 - q(3) = 0.0 - q(4) = 0.0 - q(5) = 0.0318 - q(6) = 0.0918 - q(7) = -0.2700 - q(8) = 0.0059 - - sum=0.0 - do i=1,8 - sum=sum+q(i)*eta**(a(i)+1.0) - enddo - - Pee=0.1405+sum - - return - end - - - -c * Coefficient P^{NDR}_0 * -c * by A.J.Buras and M.Munz, Phys.Rev. D52, 186; * -c * see formula (2.11). * - subroutine myP0ndr(asW, eta, P00ndr) - - dimension a(8), p(8), r(8), s(8) - - real asW, eta - real P00ndr - real sum - integer i - - real pi - real a, p, r, s - - pi=3.1415927 - - a(1) = 14.0/23.0 - a(2) = 16.0/23.0 - a(3) = 6.0/23.0 - a(4) = (-12.0)/23.0 - a(5) = 0.4086 - a(6) = -0.4230 - a(7) = -0.8994 - a(8) = 0.1456 - - p(1) = 0.0 - p(2) = 0.0 - p(3) = (-80.0)/203.0 - p(4) = 8.0/33.0 - p(5) = 0.0433 - p(6) = 0.1384 - p(7) = 0.1648 - p(8) = -0.0073 - - r(1) = 0.0 - r(2) = 0.0 - r(3) = 0.8966 - r(4) = -0.1960 - r(5) = -0.2011 - r(6) = 0.1328 - r(7) = -0.0292 - r(8) = -0.1858 - - s(1) = 0.0 - s(2) = 0.0 - s(3) = -0.2009 - s(4) = -0.3579 - s(5) = 0.0490 - s(6) = -0.3616 - s(7) = -0.3554 - s(8) = 0.0072 - - sum=0.0 - do i=1,8 - sum=sum+p(i)*eta**(a(i)+1.0) - enddo - P00ndr=pi*(-0.1875+sum)/asW - P00ndr=P00ndr+1.2468 - - sum=0.0 - do i=1,8 - sum=sum+(r(i)+s(i)*eta)*eta**a(i) - enddo - P00ndr=P00ndr+sum - - return - end - - - -c * Coefficient C_{9V} (in the NDR schime) * -c * by A.J.Buras and M.Munz, Phys.Rev. D52, 186; * -c * see formula (2.10). * - subroutine myC9v(mu, Mw, mt, Nf, ias, C9) - - COMMON /nikwc/ n_as, n_c1, n_c2, n_c3, n_c4, n_c5, n_c6, n_c7 - SAVE /nikwc/ - - real n_as, n_c1, n_c2, n_c3, n_c4, n_c5, n_c6, n_c7 ! /nikwc/ - - real mu, Mw, mt - integer Nf, ias - - real C9 - real x, eta - real asW, asmu - real sin2W ! the square of the weak angle - real P00ndr, YY, ZZ, Pee, EE - - sin2W=0.224 - - x=(mt/Mw)**2 - call myAs(Mw,Nf,ias) - asW=n_as - call myAs(mu,Nf,ias) - asmu=n_as - eta=asW/asmu - -c print *, ' ' -c print *, 'BEGIN Subroutine myC9v(...)' - -c print *,' asW =', asW -c print *,' asmu =', asmu -c print *,' eta =', eta - - call myP0ndr(asW,eta,P00ndr) - call myY(x,YY) - call myZ(x,ZZ) - call myPe(eta,Pee) - call myE(x,EE) - -c print *,' P00nd =', P00ndr -c print *,' YY =', YY -c print *,' ZZ =', ZZ -c print *,' Pee =', Pee -c print *,' EE =', EE - - C9=P00ndr+(YY/sin2W)-4.0*ZZ+Pee*EE - -c print *, ' C9 =', C9 -c print *, 'END Subroutine myC9v(...)' -c print *, ' ' - - return - end - - - -c * Coefficient C_{10A} * -c * by A.J.Buras and M.Munz, Phys.Rev. D52, 186; * -c * see formula (2.8). */ - subroutine myC10a(mt,Mw,C10) - - real mt, Mw - real C10 - real x - real sin2W - real YY - - sin2W=0.224 ! the square of the weak angle - - x=(mt/Mw)**2 - - call myY(x,YY) - C10=(-YY)/sin2W - - return - end - - - -c * Re(h(z,\hat s)) by Buras * - subroutine Reh(mu,m2,z,s,rreh) - - real mu, m2, z, s - real rreh, swh - real x ! Buras variable "x" in (2.29) - - x=4.0*z**2/s - - rreh=(-8.0)*alog(m2/mu)/9.0-8.0*alog(z)/9.0 - rreh=rreh+8.0/27.0+4.0*x/9.0 - - swh=2.0*(2.0+x)*sqrt(abs(1.0-x))/9.0 - - if(x.LE.1.0) then - swh=swh*alog(abs((sqrt(1.0-x)+1.0)/(sqrt(1.0-x)-1.0))) - else - swh=swh*2.0*atan(1.0/sqrt(x-1.0)) - endif - - rreh=rreh-swh - - return - end - - - -c * Im(h(z,\hat s)) by Buras * - subroutine Imh(z,s,iimh) - - real z, s - real x ! Buras variable "x" in (2.29) - real iimh - real pi - - pi=3.141593 - - x=4.0*z**2/s - - if(x.LE.1.0) then - iimh=2.0*pi*(2.0+x)*sqrt(abs(1.0-x))/9.0 - else - iimh=0.0 - endif - - return - end - - - -c * Re(h(0,\hat s)) by Buras * - subroutine Reh0(mu, m2, s, rreh0) - - real mu, m2,s - real rreh0 - - rreh0=8.0/27.0-8.0*alog(m2/mu)/9.0-4.0*alog(s)/9.0 - - return - end - - - -c * Im(h(0,\hat s)) by Buras * - subroutine Imh0(iimh0) - - real iimh0 - real pi - - pi=3.141593 - - iimh0=4.0*pi/9.0 - - return - end - - - -c ******************************************************************* -c * * -c * REAL PART * -c * of the resonant hadronic contribution to the C_{9V} coefficient * -c * * -c * res_swch=0 -- switch OFF for the resonant contribution; * -c * res_swch=1 -- switch ON for the resonant contribution. * -c * * -c ******************************************************************* - subroutine ReHadd(res_swch, q2, ml, RReHadd) - - dimension RGamma_ll(2), RGamma(2), RGamma_ll_e_mu(2), - #RGamma_ll_tau(2), RM(2) - - integer res_swch - real q2, ml - - integer i - real RReHadd - real a,b,Znam - real RGamma_ll - - real alpha_ked - real pi - -c .Total branching ratios of J/\psi and \psi^{'}--mesons in GeV-s - real RGamma - -c .The branching fractions for decays V->l^+l^-, i={e,\mu} in GeV--s - real RGamma_ll_e_mu - -c .The branching fractions for decays V->tau^+tau^- in GeV--s - real RGamma_ll_tau - -c .Masses of J/\psi and \psi^{'}--mesons */ - real RM - - RReHadd=0.0 - alpha_ked=1.0/137.0 - pi=3.141593 - - RGamma(1) = 0.000088 ! GeV - RGamma(2) = 0.000277 ! GeV - - RGamma_ll_e_mu(1) = 0.000005 ! GeV - RGamma_ll_e_mu(2) = 0.000002 ! GeV - - RGamma_ll_tau(1) = 0.0 ! GeV - RGamma_ll_tau(2) = 0.000002 ! GeV - - RM(1) = 3.09688 - RM(2) = 3.686 - - - if(ml.LE.1.0) then - do i=1,2 - RGamma_ll(i)=RGamma_ll_e_mu(i) - enddo - else - do i=1,2 - RGamma_ll(i)=RGamma_ll_tau(i) - enddo - endif - - if(res_swch.EQ.0) then - RReHadd=0.0 - endif - - if(res_swch.EQ.1) then - RReHadd=0.0 - do i=1,2 - a=RM(i)**2-q2 - b=RM(i)*RGamma(i) - Znam=a**2+b**2 - Znam=RGamma_ll(i)*RM(i)*a/Znam - RReHadd=RReHadd+Znam - enddo - endif - -c .plus is the consequence of relation: -c . \kappa*(3C_1+C_2)=1 -c . with sign of Wilson coefficien -c . C_2(M_W)=+1 as at work -c . A.J.Buras and M.Munz, -c . Phys.Rev. D52, 186 - RReHadd=RReHadd*3.0*pi/alpha_ked**2 - - return - end - - - -c ***************************************************************** -c * * -c * IMAGINARY PART * -c * of the resonant hadronic contribution to the C_9V coefficient * -c * * -c * res_swch -- switching parametr: * -c * res_swch=0 -- switch OFF for the resonant contribution; * -c * res_swch=1 -- switch ON for the resonant contribution. * -c * * -c ***************************************************************** - subroutine ImHadd(res_swch, q2, ml, IImHadd) - - dimension RGamma_ll(2), RGamma(2), RGamma_ll_e_mu(2), - #RGamma_ll_tau(2), RM(2) - - integer res_swch - real q2, ml - - integer i - real IImHadd - real a,b,Znam - real RGamma_ll - - real alpha_ked - real pi - -c .Total branching ratios of J/\psi and \psi^{'}--mesons in GeV-s - real RGamma - -c .The branching fractions for decays V->l^+l^-, i={e,\mu} in GeV--s - real RGamma_ll_e_mu - -c .The branching fractions for decays V->tau^+tau^- in GeV--s - real RGamma_ll_tau - -c .Masses of J/\psi and \psi^{'}--mesons */ - real RM - - IImHadd=0.0 - alpha_ked=1.0/137.0 - pi=3.141593 - - RGamma(1) = 0.000088 ! GeV - RGamma(2) = 0.000277 ! GeV - - RGamma_ll_e_mu(1) = 0.000005 ! GeV - RGamma_ll_e_mu(2) = 0.000002 ! GeV - - RGamma_ll_tau(1) = 0.0 ! GeV - RGamma_ll_tau(2) = 0.000002 ! GeV - - RM(1) = 3.09688 - RM(2) = 3.686 - - if(ml.LE.1.0) then - do i=1,2 - RGamma_ll(i)=RGamma_ll_e_mu(i) - enddo - else - do i=1,2 - RGamma_ll(i)=RGamma_ll_tau(i) - enddo - endif - - if(res_swch.EQ.0) then - IImHadd=0.0 - endif - - if(res_swch.EQ.1) then - IImHadd=0.0 - do i=1,2 - a=RM(i)**2-q2 - b=RM(i)*RGamma(i) - Znam=a**2+b**2 - Znam=RGamma_ll(i)*RM(i)*b/Znam - IImHadd=IImHadd+Znam - enddo - endif - - - -c . plus is the consequence of relation: -c . \kappa*(3C_1+C_2)=1 -c . with sign of Wilson coefficien -c . C_2(M_W)=+1 as at work -c . A.J.Buras and M.Munz, -c . Phys.Rev. D52, 186 - IImHadd=IImHadd*3.0*pi/alpha_ked**2 - - return - end - - - -c ***************************************************** -c * * -c * Function omega(s) * -c * by A.J.Buras, M.Munz, Phys.Rev.D52 (1995), p189. * -c * * -c ***************************************************** - subroutine omega(s,oomega) - - real s - real oomega - real pi - real Lii - - pi=3.141593 - - call myLi2(s,Lii) - oomega=(-2.0)*pi**2/9.0-4.0*Lii/3.0 - oomega=oomega-2.0*alog(s)*alog(1.0-s)/3.0 - oomega=oomega-(5.0+4.0*s)*alog(1.0-s)/(3.0*(1.0+2.0*s)) - oomega=oomega-2.0*s*(1.0+s)*(1.0-2.0*s)*alog(s)/ - # (3.0*(1.0-s)**2*(1.0+2.0*s)) - oomega=oomega+(5.0+9.0*s-6.0*s*s)/(6.0*(1.0-s)*(1.0+2.0*s)) - - return - end - - -c ************************************************************* -c * * -c * REAL PART of the coefficient C_9V: * -c * C9 -> C9eff=ReC9eff+i*ImC9eff * -c * by A.J.Buras, M.Munz, Phys.Rev.D52 (1995), p189 * -c * * -c * res_swch -- switching parametr: * -c * res_swch=0 -- switch OFF for the resonant contribution, * -c * res_swch=1 -- switch ON for the resonant contribution; * -c * * -c * q2 -- the square of transition 4-momentum; * -c * m2 -- b-quark mass (in the heavy meson M1), GeV; * -c * mu -- scale parameter, GeV; * -c * mc -- c-quark mass, GeV; * -c * mt -- t-quark mass, GeV; * -c * Mw -- mass of the W--meson, GeV; * -c * ml -- leptonic mass, GeV; * -c * Nf -- number of "effective" flavors * -c * (for b-quark Nf=5); * -c * ias -- switching parametr for Lms[] * -c * in the myAs(..) subroutine. * -c * * -c ************************************************************* - subroutine ReC9eff(q2,m2,mu,mc,RReC9eff) - - COMMON /nikwc/ n_as, n_c1, n_c2, n_c3, n_c4, n_c5, n_c6, n_c7 - COMMON /nik1/ n_model, n_res_swch, n_ias, n_Nf - COMMON /nik2/ n_M1, n_M2, n_mt, n_Mw, n_ml - SAVE /nikwc/,/nik1/,/nik2/ - - real n_as, n_c1, n_c2, n_c3, n_c4, n_c5, n_c6, n_c7 ! /nikwc/ - integer n_model, n_res_swch, n_ias, n_Nf ! /nik1/ - real n_M1, n_M2, n_mt, n_Mw, n_ml ! /nik2/ - - real q2, m2, mu, mc, mt, Mw, ml, M1 - integer res_swch, Nf, ias - - real s ! Buras variable "\hat s" in (2.26) - real z ! Buras variable "z" in (2.26) - real tilde_eta ! Buras variable " \tilde\eta" in (2.33) - real c1,c2,c3,c4,c5,c6,c9,RReC9eff - real as, oomega, RReHadd, RReh - - real pi - - pi=3.141593 - - res_swch=n_res_swch - Nf=n_Nf - ias=n_ias - - M1=n_M1 - mt=n_mt - Mw=n_Mw - ml=n_ml - -c print *, ' ' -c print *, ' BEGIN subroutine ReC9eff(...) ' -c print *, ' mu =', mu -c print *, ' Mw =', Mw -c print *, ' mt =', mt -c print *, ' Nf =', Nf -c print *, ' ias =', ias - - s=q2/(M1**2) - z=mc/m2 - call myAs(mu,Nf,ias) - as=n_as - - if(s.GE.1.0) then - s=0.99999999 - endif - - call omega(s,oomega) - tilde_eta=1.0+as*oomega/pi - -c print *, ' s =', s -c print *, ' z =', z -c print *, ' as =', as -c print *, ' oomega =', oomega -c print *, ' tilde_eta =', tilde_eta - -c .Initialisation of the Wilson coefficients - call myC1(mu,Mw,Nf,ias) - c1=n_c1 - call myC2(mu,Mw,Nf,ias) - c2=n_c2 - call myC3(mu,Mw,Nf,ias) - c3=n_c3 - call myC4(mu,Mw,Nf,ias) - c4=n_c4 - call myC5(mu,Mw,Nf,ias) - c5=n_c5 - call myC6(mu,Mw,Nf,ias) - c6=n_c6 - call myC9v(mu,Mw,mt,Nf,ias,c9) - -c print *, ' c1 =', c1 -c print *, ' c2 =', c2 -c print *, ' c3 =', c3 -c print *, ' c4 =', c4 -c print *, ' c5 =', c5 -c print *, ' c6 =', c6 -c print *, ' c9 =', c9 - - RReC9eff=c9*tilde_eta - - RReh=0.0 - call Reh(mu,m2,z,s,RReh) - RReC9eff=RReC9eff+(3.0*c1+c2+3.0*c3+c4+3.0*c5+c6)*RReh -c print *, ' Reh(mu,m2,z,s) =', RReh - - RReh=0.0 - call Reh(mu,m2,1.0,s,RReh) - RReC9eff=RReC9eff-0.5*(4.0*c3+4.0*c4+3.0*c5+c6)*RReh -c print *, ' Reh(mu,m2,1.0,s) =', RReh - - RReh=0.0 - call Reh0(mu,m2,s,RReh) -c print *, ' Reh0(mu,m2,s) =', RReh - - RReC9eff=RReC9eff-0.5*(c3+3.0*c4)*RReh - RReC9eff=RReC9eff+2.0*(3.0*c3+c4+3.0*c5+c6)/9.0 - - call ReHadd(res_swch,q2,ml,RReHadd) -c print *,' ReHadd(res_swch,q2,ml) =', RReHadd - RReC9eff=RReC9eff+RReHadd - -c print *, ' RReC9eff =', RReC9eff -c print *, ' END subroutine ReC9eff(...) ' -c print *, ' ' - - return - end - - - -c ************************************************************* -c * * -c * IMAGINARY PART of the coefficient C_9V: * -c * C9 -> C9eff=ReC9eff+i*ImC9eff * -c * by A.J.Buras, M.Munz, Phys.Rev.D52 (1995), p189 * -c * * -c * res_swch -- switching parametr: * -c * res_swch=0 -- switch OFF for the resonant contribution; * -c * res_swch=1 -- switch ON for the resonant contribution; * -c * * -c * q2 -- the square of transition 4-momentum; * -c * m2 -- b-quark mass ( in the heavy meson M1), GeV; * -c * mu -- scale parameter, GeV; * -c * mc -- c-quark mass, GeV; * -c * Mw -- mass of the W--meson, GeV; * -c * ml -- leptonic mass, GeV; * -c * Nf -- number of "effective" flavors * -c * (for b-quark Nf=5); * -c * ias -- switching parametr for Lms[] * -c * in the myAs(..) subroutine. * -c * * -c ************************************************************* - subroutine ImC9eff(q2,m2,mu,mc,IImC9eff) - - COMMON /nikwc/ n_as, n_c1, n_c2, n_c3, n_c4, n_c5, n_c6, n_c7 - COMMON /nik1/ n_model, n_res_swch, n_ias, n_Nf - COMMON /nik2/ n_M1, n_M2, n_mt, n_Mw, n_ml - SAVE /nikwc/,/nik1/,/nik2/ - - real n_as, n_c1, n_c2, n_c3, n_c4, n_c5, n_c6, n_c7 ! /nikwc/ - integer n_model, n_res_swch, n_ias, n_Nf ! /nik1/ - real n_M1, n_M2, n_mt, n_Mw, n_ml ! /nik2/ - - integer res_swch, Nf, ias - real q2, m2, mu, mc, Mw, ml - - real s ! Buras variable "\hat s"in (2.26) - real z ! Buras variable "z" in (2.26) - real c1,c2,c3,c4,c5,c6,IImC9eff - real IImh, IImhadd - - res_swch=n_res_swch - Nf=n_Nf - ias=n_ias - - Mw=n_Mw - ml=n_ml - - s=q2/m2**2 - z=mc/m2 - -c .Initialisation of the Wilson coefficients - call myC1(mu,Mw,Nf,ias) - c1=n_c1 - call myC2(mu,Mw,Nf,ias) - c2=n_c2 - call myC3(mu,Mw,Nf,ias) - c3=n_c3 - call myC4(mu,Mw,Nf,ias) - c4=n_c4 - call myC5(mu,Mw,Nf,ias) - c5=n_c5 - call myC6(mu,Mw,Nf,ias) - c6=n_c6 - - call Imh(z,s,IImh) - IImC9eff=(3.0*c1+c2+3.0*c3+c4+3.0*c5+c6)*IImh - call Imh(1.0,s,IImh) - IImC9eff=IImC9eff-0.5*(4.0*c3+4.0*c4+3.0*c5+c6)*IImh - call Imh0(IImh) - IImC9eff=IImC9eff-0.5*(c3+3.0*c4)*IImh - - call ImHadd(res_swch,q2,ml,IImhadd) - IImC9eff=IImC9eff+IImHadd - - return - end - - - - - - - - - - - - - diff --git a/Generators/PythiaB/src/comfunc.F b/Generators/PythiaB/src/comfunc.F deleted file mode 100644 index 7951cd20565c3e4b82427d43c14d2cad3133f90a..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/src/comfunc.F +++ /dev/null @@ -1,98 +0,0 @@ -c ************************************************** -c * * -c * Breit-Wigner function for intermediate mesons * -c * * -c ************************************************** - function BW(s2,Gamma) - - real s2, Gamma - -c......My COMMON bloc - COMMON /nik2/ M1, M2, mt, Mw, ml - SAVE /nik2/ - -c......The nik2 COMMON bloc parameters - real M1, M2, mt, Mw, ml - -c......Additional variables - real w, wmax - real BW - - wmax=(M2*Gamma)**2 - - w=(s2-M2**2)**2+wmax - w=1.0/w - w=w*wmax - - if(w.GT.1.0) then - print *,' In function BW(s2,Gamma)' - print *,' Fatal ERROR!!! w(S2)>1.0' - print *,' s2 =', s2,' w =', w - print *,' M2 =', M2,' Gamma =', Gamma - STOP - endif - - BW=w - return - - end - - -c ********************************************* -c * * -c * Tringular function \lambda (a,b,c) * -c * (for semileptonic decays matrix * -c * elements calculations) * -c * * -c ********************************************* - subroutine myLambda(a,b,c,L) - - real a, b, c, L - - L=a**2+b**2+c**2 - L=L-2.0*a*b-2.0*b*c-2.0*a*c - - return - end - - -c ********************************************** -c * * -c * Function \hat\Pi * -c * by D.Melikhov, N.Nikitin and S.Simula, * -c * Phys.Rev. D57, p.6814 (1998). * -c * * -c ********************************************** - subroutine myPi(a, b, c, d, PPi) - - real a, b, c, d, PPi - - PPi=(b-1.0)*(b-c)+a*b+d*(1.0+c+d-a-2.0*b) - - return - end - - - -c -c **************************************************************** -c * * -c * Basic kinematics function * -c * * -c * 30.06.2003 * -c * * -c * Author: Nickolai Nikitine, Nikolai.Nikitine@cern.ch * -c * * -c **************************************************************** -c - function gf(x,y,z,u,v,w) - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - DOUBLE PRECISION gf - - gf=x*z*w+x*u*v+y*z*v+y*u*w - #-x*y*(z+u+v+w-x-y)-z*u*(x+y+v+w-z-u)-v*w*(x+y+z+u-v-w) - - return - end - diff --git a/Generators/PythiaB/src/comons.F b/Generators/PythiaB/src/comons.F deleted file mode 100644 index 2fb92036a820eec75dea4443191e8946ee95ec46..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/src/comons.F +++ /dev/null @@ -1,86 +0,0 @@ -* -* modifications: -* 2006-04-02, W.Walkowiak -* added common block ufdecay to tunnel iufdc and cufdcp(10) -* to user_finsel.F -* - subroutine comons(cc0,andors,cc1,cc2,cc3,cc4,cc5,cc6,idc,cdcp) -C...Reject events without b(c) quark within pT cuts - - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - common/cutbq/cut0(4),andor - CHARACTER*(2) andor - common/lvl1/cut1(3) - common/lvl2/cut2(4) - common/cutoff/cut3(7) - common/repeat/NTB - common/flavour/flav - common/nt5000/ntup_5000 -*KEEP,PRIVEVN. -* numbering of accepted b-events - common/bevent/ieve,keve - SAVE/bevent/ - - common /ufdecay/ cufdcp(10),iufdc - save /ufdecay/ - - dimension cc0(4),cc1(3),cc2(4),cc3(7) - dimension cdcp(10) - - DATA IFIRST /1/ -C ----------- end CDE -------------------------------------------------- - - idebug=0 - if(idebug.ne.0) print *,'comons: starts' - - IF(IFIRST.EQ.1) THEN - call uinit - if(idebug.ne.0) - + print *,' comons: first time IFIRST =',IFIRST - IFIRST =0 - if(idebug.ne.0) print *,' comons: cc0', cc0 - call dcopy(cc0,cut0,4) - call dcopy(cc1,cut1,3) - call dcopy(cc2,cut2,4) - call dcopy(cc3,cut3,7) - NTB=cc4 - flav=cc5 - ntup_5000=cc6 - andor='an' - if(andors.eq.1.) andor='an' - if(andors.eq.-1.) andor='or' - ieve=0 - -c user_finsel.F decay channel number and parameters - iufdc = idc - call dcopy(cdcp, cufdcp,10) - -c print *,' comons: cut0', cut0 -c print *,' comons: andors',andors -c print *,' comons: andor',andor -c print *,' comons: cut1', cut1 -c print *,' comons: cut2', cut2 -c print *,' comons: cut3', cut3 -c print *,' comons: ntb flav ntup',NTB,flav,ntup_5000 - - - else -c if(idebug.ne.0) print *,'comons:return IFIRST =',IFIRST - return - - - ENDIF - return - end - - subroutine dcopy(a,b,N) - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - DIMENSION a(*),b(*) - IF (N.EQ.0) RETURN - DO 21 I=1,N - 21 B(I)=A(I) - return - end - diff --git a/Generators/PythiaB/src/components/PythiaB_entries.cxx b/Generators/PythiaB/src/components/PythiaB_entries.cxx deleted file mode 100644 index f65ec9e087ce33ebb3960ac4721abf3885974a2d..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/src/components/PythiaB_entries.cxx +++ /dev/null @@ -1,4 +0,0 @@ -#include "PythiaB/PythiaB.h" - -DECLARE_COMPONENT( PythiaB ) - diff --git a/Generators/PythiaB/src/copy_ludat3.F b/Generators/PythiaB/src/copy_ludat3.F deleted file mode 100644 index 331a5e7e44d18eb8ecd83dac632dfeb7ae47abb5..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/src/copy_ludat3.F +++ /dev/null @@ -1,61 +0,0 @@ -*CMZ : 02/08/2001 11.43.38 by Maria Smizanska -*-- Author : Maria Smizanska 22/07/2000 - - SUBROUTINE copy_ludat3(in) -c -c make a copy ludat3 of default (in=1) decays -c make a copy ludat3 of users defined (in=2) decays -c MDCY(500,3),MDME(2000,2),BRAT(2000),KFDP(2000,5) -c -*KEEP,DOUB. -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - INTEGER PYK,PYCHGE,PYCOMP -*KEEP,COLUDAT3. - - common /CLUDAT3/MDCYbi(500,3),MDMEbi(4000,2), - * BRATbi(4000),KFDPbi(4000,5), - * MDCYun(500,3),MDMEun(4000,2), - * BRATun(4000),KFDPun(4000,5) - -*KEEP,LUDAT3. - COMMON/PYDAT3/MDCY(500,3),MDME(4000,2),BRAT(4000),KFDP(4000,5) -*KEND. - - - idebug=0 - if(idebug.ne.0) print *,'copy_ludat3: is called' - if(in.eq.1) then -* call ucopy(xludat3,xludat3_unbiased,n_ludat3) - call ucopy(MDCY,MDCYun,1500) - call ucopy(MDME,MDMEun,8000) - call ucopy(BRAT,BRATun,1500) - call ucopy(KFDP,KFDPun,20000) - - - endif - - if(in.eq.2) then -* call ucopy(xludat3,xludat3_biased,n_ludat3) - call ucopy(MDCY,MDCYbi,1500) - call ucopy(MDME,MDMEbi,8000) - call ucopy(BRAT,BRATbi,1500) - call ucopy(KFDP,KFDPbi,20000) - - endif - - - if(idebug.ne.0) then - print *,'copy_ludat3: unbiased 1 biased 2',in - print *,'copy_ludat3: mdme(524-559,1)',(mdme(ii,1),ii=524,559) - endif - return - end - - - - - - - diff --git a/Generators/PythiaB/src/copy_pydat3.F b/Generators/PythiaB/src/copy_pydat3.F deleted file mode 100644 index 974b0c6b1b9f37bddcc4dbb594587ae810735db4..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/src/copy_pydat3.F +++ /dev/null @@ -1,53 +0,0 @@ -*CMZ : 02/08/2001 11.43.38 by Maria Smizanska -*-- Author : Maria Smizanska 22/07/2000 - - SUBROUTINE copy_pydat3 -c -c read ludat3 of default decays -c make a copy ludat3 of users defined decays -c -*KEEP,DOUB. -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) -*KEEP,COLUDAT3. - - common /CLUDAT3/MDCYbi(500,3),MDMEbi(8000,2), - * BRATbi(8000),KFDPbi(8000,5), - * MDCYun(500,3),MDMEun(8000,2), - * BRATun(8000),KFDPun(8000,5) - -*KEEP,LUDAT3. - COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5) - DATA IFIRST /1/ -*KEND. - - IF(IFIRST.EQ.1) THEN - OPEN(60,FILE='Bdecays0.dat',STATUS='OLD',FORM='UNFORMATTED') - IFIRST =0 - ENDIF - - idebug=0 - read (60) MDCYun,MDMEun,BRATun,KFDPun - - call icopy(MDCY,MDCYbi,1500) - call icopy(MDME,MDMEbi,16000) - call dcopy(BRAT,BRATbi,8000) - call icopy(KFDP,KFDPbi,40000) - - - - - if(idebug.ne.0) then - print *,'copy_pydat3: mdmeun(981-9,1)',(mdmeun(ii,1),ii=981,989) - print *,'copy_pydat3: mdmebi(981-9,1)',(mdmebi(ii,1),ii=981,989) - endif - return - end - - - - - - - diff --git a/Generators/PythiaB/src/daughterline.F b/Generators/PythiaB/src/daughterline.F deleted file mode 100644 index aa71dc5cf1be429bb6b486ebd87cee21cbe06ae2..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/src/daughterline.F +++ /dev/null @@ -1,312 +0,0 @@ -c -c Funkciya vidayot nomer stroki docherney chastici if OK -c Inache ona vidayot 0 -c -c NKF - KF kod iskomoy docherney chastici -c LM - nomer stroki materinskoy chastici -c - function niklenedote(NKF,LM) - -c.......Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) - integer NKF,LM,i,count - integer niklenedote - - count=0 - niklenedote=0 - - do i=k(LM,4),k(LM,5) - if(k(i,2).eq.NKF) then - niklenedote=i - count=count+1 - endif - enddo - - if(count.EQ.0) niklenedote=0 - -c print *,' ' -c print *,' NKF =', NKF, ' LM =', LM -c print *,' doteline =', niklenedote - - return - end - - - -c -c Funkciya vidayot pT docherney chastici if OK -c Inache ona vidayot -1000000.D0 -c -c NKF - KF kod iskomoy docherney chastici -c LM - nomer stroki materinskoy chastici -c - function zzzptdote(NKF,LM) - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) - integer NKF,LM, myline - double precision zzzptdote - - myline=niklenedote(NKF,LM) - if(myline.EQ.0) then - zzzptdote=-1000000.D0 - else - zzzptdote=dsqrt(p(myline,1)**2+p(myline,2)**2) - endif - - return - end - -c -c Funkciya vidayot p_x docherney chastici if OK -c Inache ona vidayot -1000000.D0 -c -c NKF - KF kod iskomoy docherney chastici -c LM - nomer stroki materinskoy chastici -c - function zzzpxdote(NKF,LM) - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) - integer NKF,LM, myline - double precision zzzpxdote - - myline=niklenedote(NKF,LM) - if(myline.EQ.0) then - zzzpxdote=-1000000.D0 - else - zzzpxdote=p(myline,1) - endif - - return - end - - -c -c Funkciya vidayot p_y docherney chastici if OK -c Inache ona vidayot -1000000.D0 -c -c NKF - KF kod iskomoy docherney chastici -c LM - nomer stroki materinskoy chastici -c - function zzzpydote(NKF,LM) - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) - integer NKF,LM, myline - double precision zzzpydote - - myline=niklenedote(NKF,LM) - if(myline.EQ.0) then - zzzpydote=-1000000.D0 - else - zzzpydote=p(myline,2) - endif - - return - end - -c -c Funkciya vidayot p_z docherney chastici if OK -c Inache ona vidayot -1000000.D0 -c -c NKF - KF kod iskomoy docherney chastici -c LM - nomer stroki materinskoy chastici -c - function zzzpzdote(NKF,LM) - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) - integer NKF,LM, myline - double precision zzzpzdot - - myline=niklenedote(NKF,LM) - if(myline.EQ.0) then - zzzpzdote=-1000000.D0 - else - zzzpzdote=p(myline,3) - endif - - return - end - - -c -c Funkciya vidayot E docherney chastici if OK -c Inache ona vidayot -1000000.D0 -c -c NKF - KF kod iskomoy docherney chastici -c LM - nomer stroki materinskoy chastici -c - function zzzedote(NKF,LM) - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) - integer NKF,LM, myline - double precision zzzedote - - myline=niklenedote(NKF,LM) - if(myline.EQ.0) then - zzzedote=-1000000.D0 - else - zzzedote=p(myline,4) - endif - - return - end - - -c -c Funkciya vidayot pseudorapidity docherney chastici if OK -c Inache ona vidayot -1000000.D0 -c -c NKF - KF kod iskomoy docherney chastici -c LM - nomer stroki materinskoy chastici -c - function zzzprapdote(NKF,LM) - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) - integer NKF,LM, myline - double precision theta, npz, npt - double precision zzzprapdote - - myline=niklenedote(NKF,LM) - if(myline.EQ.0) then - zzzprapdote=-1000000.D0 - else - npz=zzzpzdote(NKF,LM) - npt=zzzptdote(NKF,LM) - theta=DATAN(npt/npz) - zzzprapdote=-DLOG(MAX(0.0001,DABS(DTAN(theta/2.D0)))) - endif - - print *,' ' - print *,' doteline =', myline - print *,' pz =', npz - print *,' pt =', npt - print *,' eta =', zzzprapdote - - return - end - -c -c Funkciya vidayot ugol phi docherney chastici if OK -c Inache ona vidayot -1000000.D0 -c -c NKF - KF kod iskomoy docherney chastici -c LM - nomer stroki materinskoy chastici -c - function zzzphidote(NKF,LM) - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) - integer NKF,LM, myline -c double precision phi, npx, npy - double precision npx, npy - double precision zzzphidote - - myline=niklenedote(NKF,LM) - if(myline.EQ.0) then - zzzphidote=-1000000.D0 - else - npx=zzzpxdote(NKF,LM) - npy=zzzpydote(NKF,LM) - zzzphidote=DATAN(npy/npx) - endif - -c print *,' ' -c print *,' doteline =', myline -c print *,' px =', npx -c print *,' py =', npy -c print *,' phi =', zzzphidote - - return - end - - -c -c Funkciya vidayot dlinu probega chastici if OK -c Inache ona vidayot -1000000.D0 -c -c LM - nomer stroki chastici -c -c (x,y,z) in mm!!!!! - function zzzLprobeg(LM) - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) - integer LM, line1, line2 - double precision zzzLprobeg - - line1=k(LM,4) - line2=k(LM,5) - - if(line1.EQ.0) then - zzzLprobeg=-1000000.D0 - return - endif - - if(line2.EQ.0) then - zzzLprobeg=-1000000.D0 - return - endif - - zzzLprobeg=DSQRT((V(line1,1)-V(LM,1))**2+ - # (V(line1,2)-V(LM,2))**2+ - # (V(line1,3)-V(LM,3))**2) - - return - end - - - - -c -c Funkciya vidayot effektivnuyu massu dvuh chastic iz -c strok LM1 and LM2. -c -c Inache ona vidayot -1000000.D0 -c - function zzzmeff(LM1, LM2) - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) - integer LM1, LM2, line1, line2 - double precision px, py, pz, e - double precision zzzmeff - - line1=LM1 - line2=LM2 - - if(line1.EQ.0) then - zzzmeff=-1000000.D0 - return - endif - - if(line2.EQ.0) then - zzzmeff=-1000000.D0 - return - endif - - e=P(line1,4)+P(line2,4) - px=P(line1,1)+P(line2,1) - py=P(line1,2)+P(line2,2) - pz=P(line1,3)+P(line2,3) - - zzzmeff=DSQRT(e**2-px**2-py**2-pz**2) - - return - end diff --git a/Generators/PythiaB/src/fill_ntup.F b/Generators/PythiaB/src/fill_ntup.F deleted file mode 100644 index 8c2b4ef2e914f69586d96f3fd95420e01fff2e9e..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/src/fill_ntup.F +++ /dev/null @@ -1,311 +0,0 @@ -*CMZ : 02/08/2001 13.11.14 by Maria Smizanska -*-- Author : Maria Smizanska 22/09/96 - - SUBROUTINE FILL_NTUP(ITB) -* * -*----------------------------------------------------------------------* -* * -* Name : FILL_NTUP * -* (module) * -* * -* Description : store B-decay tree in XNTUP * -* * -* * -* Arguments : * -* ITB # of events hadronized to get this one * -* * -* Banks/Tables: * -* [name] ([filled | used | modified]) * -* * -*----------------------------------------------------------------------* -* * -* Author : Maria Smizanska Date : 21/09/96 * -* * -* * -* Last modifications : * -* [name] Date : [date] * -* * -* Keywords : * -* [keywords] * -*----------------------------------------------------------------------* -* -C +CDE, TYPING. -*KEEP,DOUB. -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) -c INTEGER PYK,PYCHGE,PYCOMP -*KEEP,NNTUPLE. -* DECLARATION FOR NTUPLE 5000 - PARAMETER(NDIM = 20) - COMMON/NNICK/XNTUP(NDIM) - SAVE/NNICK/ - -* DECLARATION FOR NTUPLE 5001 - PARAMETER(NDIM1 = 13) - COMMON/HARD/XNTUP1(NDIM1) - SAVE/HARD/ - -* DECLARATION FOR NTUPLE 5002 - PARAMETER(NDIM2 = 12) - COMMON/MUON/XNTUP2(NDIM2) - SAVE/MUON/ -*KEEP,LUJETS. - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) -*KEEP,PYPARS. - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) -*KEEP,BTREE. - common/btree/ntree,tree(4000) - integer tree - SAVE /btree/ -*KEEP,LVL1. -* LVL1 muon cuts - common/lvl1/tr1,pt_trig1, etha_trig1 - common/trg1/i_muon_trig1 - SAVE/lvl1/ - SAVE/trg1/ - dimension cut1(3) - equivalence (cut1(1),tr1) -*KEEP,CUTOFF. -* cuts on stable particles to select event - common/cutoff/tr4,pt_pikp,eta_pikp, - + pt_muon,eta_muon, - + pt_ele,eta_ele - SAVE/cutoff/ - dimension cut3(7) - equivalence (cut3(1),tr4) -*KEEP,NT5000. -* users choice to fill NTUPLE 5000 or to call user_fill - common/nt5000/ntup_5000 - SAVE/nt5000/ - - -*KEEP,PRIVEVN. -* numbering of accepted b-events - common/bevent/ieve,keve - SAVE/bevent/ - -*KEND. - dimension xntup3(7) - DATA IFIRST /1/ - SAVE IFIRST -*KEEP,FAMILY. - name_self(I)=K(I,2) - name_selv(I)=abs(K(I,2)) - name_father(I)=K(K(I,3),2) - name_grandpa(I)=K(K(K(I,3),3),2) - name_daughter1(I)=K(K(I,4),2) - name_daughter2(I)=K(K(I,5),2) - - link_self(I)=I - link_father(I)=K(I,3) - link_grandpa(I)=K(K(I,3),3) - link_daughter1(I)=K(I,4) - link_daughter2(I)=K(I,5) -*KEND. - -C ----------- end CDE -------------------------------------------------- - - idebug=0 - - - if(IFIRST.eq.1) IFIRST=0 - - - if(idebug.ne.0) print *,'FILL_NTUP:ieve',ieve - - DO NN=1,NDIM - XNTUP(NN) = 0 - ENDDO - DO NN=1,NDIM2 - XNTUP2(NN) = 0 - ENDDO - - - - -c ------------------------------------------------------------------- -c First finish filling XNTUP1 after PYDOCU was called -c fill ntuple for first ntup_5000 events -c write out XNTUP1 formated output for all events -c ------------------------------------------------------------------- - - XNTUP1(1)=float(MSTI(1)) - XNTUP1(2)=PARI(1) - XNTUP1(3)=ITB - XNTUP1(4)=PARI(17) - XNTUP1(5)=PARI(37) - - if (ntup_5000.ge.ieve) then - if(idebug.eq.1) - + print *,'FILL_NTUP: hard process filled' -c call HFN(5001,XNTUP1) - WRITE (53,1070) float(ieve),xntup1 - endif - 1070 FORMAT(14f12.5) - - -c ------------------------------------------------------------------- -c if LVL1-required and satisfied and off-line not required -c store only muons from this event -c ------------------------------------------------------------------- - - if(tr1.ne.0.and.i_muon_trig1.ne.0.and.tr4.eq.0) then - - nmuon=0 - do I=1,N - if(name_selv(I).eq.13) then - nmuon=nmuon+1 - endif - enddo - - imuon=0 - do I=1,N - - if(name_selv(I).eq.13) then - imuon=imuon+1 - - xntup2(1)=float(ieve) ! this accepted ev number - xntup2(2)=float(ITB) ! # of events hadronised to get this one - xntup2(3)=float(nmuon) - xntup2(4)=float(imuon) - - xntup2(5)=float(name_self(I)) - father=float(name_father(I)) - xntup2(6)=father - - pt=sqrt(P(I,1)**2+P(I,2)**2) - TH = ACOS(P(I,3)/SQRT(PT**2+P(I,3)**2)) - ETA = -LOG(MAX(.0001,ABS(TAN(.5*TH)))) - phi=atan2(P(I,1),P(I,2)) - - xntup2(7)=pt - xntup2(8)=eta - xntup2(9)=phi - - xntup2(10)=V(I,1) - xntup2(11)=V(I,2) - xntup2(12)=V(I,3) - - - xntup3(1)=xntup2(1) - xntup3(2)=xntup2(3) - xntup3(3)=xntup2(4) - xntup3(4)=xntup2(6) - xntup3(5)=xntup2(7) - xntup3(6)=xntup2(8) - xntup3(7)=xntup2(9) - - if (ntup_5000.ge.ieve) then - if(idebug.eq.1) - + print *,'FILL_NTUP: all muons are filled', - + K(I,2),K(I,1) -c call HFN(5002,XNTUP2) - WRITE (52,1071) xntup3,float(link_father(I)) - endif - - - -1071 FORMAT(F10.1,2F5.1,F8.1,3F8.3,F8.1) - endif - enddo - endif - -c ------------------------------------------------------------------- -c if LVL1-required and satisfied and off-line is required and satisfied -c store trigger muon and signal tree -c ------------------------------------------------------------------- - -c is signal tree inside off-line cuts? if not return - if(tr4.ne.0) then - ntree=0 - do ii=1,N - if(tree(ii).eq.-1) return - if(tree(ii).gt.0) ntree=ntree+1 - enddo - endif - - if(tr1.ne.0.and.tr4.ne.0.and.i_muon_trig1.ne.0.and. - + ntree.gt.0) then - - - xntup(1)=float(ieve) ! this accepted ev number - xntup(2)=float(ITB) ! # of events hadronised to get this one - xntup(3)=float(0) - xntup(4)=float(0) - xntup(5)=float(i_muon_trig1) - - - xntup(6)=float(K(i_muon_trig1,1)) - xntup(7)=float(K(i_muon_trig1,2)) - xntup(8)=float(K(i_muon_trig1,3)) - xntup(9)=float(K(i_muon_trig1,4)) - xntup(10)=float(K(i_muon_trig1,5)) - - xntup(11)=P(i_muon_trig1,1) - xntup(12)=P(i_muon_trig1,2) - xntup(13)=P(i_muon_trig1,3) - xntup(14)=P(i_muon_trig1,4) - xntup(15)=P(i_muon_trig1,5) - - - xntup(16)=V(i_muon_trig1,1) - xntup(17)=V(i_muon_trig1,2) - xntup(18)=V(i_muon_trig1,3) - xntup(19)=V(i_muon_trig1,4) - xntup(20)=V(i_muon_trig1,5) -c if (ntup_5000.ge.ieve) call HFN(5000,XNTUP) - if (ntup_5000.ge.ieve) - + WRITE (50,1072) xntup -1072 FORMAT(20F14.6) - - - - itree=0 - do I=1,N - if(tree(I).ne.0) then - itree=itree+1 - xntup(1)=float(ieve) ! this accepted ev number - xntup(2)=float(ITB) ! # of events hadronised to get this one - xntup(3)=float(ntree) - xntup(4)=float(itree) - xntup(5)=float(I) - - - xntup(6)=float(K(I,1)) - xntup(7)=float(K(I,2)) - xntup(8)=float(K(I,3)) - xntup(9)=float(K(I,4)) - xntup(10)=float(K(I,5)) - - xntup(11)=P(I,1) - xntup(12)=P(I,2) - xntup(13)=P(I,3) - xntup(14)=P(I,4) - xntup(15)=P(I,5) - - - xntup(16)=V(I,1) - xntup(17)=V(I,2) - xntup(18)=V(I,3) - xntup(19)=V(I,4) - xntup(20)=V(I,5) - - - - if (ntup_5000.ge.ieve) then - if(idebug.eq.1) - + print *,'FILL_NTUP: fill ntuple for tree ', - + K(I,2),K(I,1) -c call HFN(5000,XNTUP) - WRITE (50,1072) xntup - endif - endif - enddo - - endif - - return -* -* - END ! FILL_NTUP diff --git a/Generators/PythiaB/src/find_children.F b/Generators/PythiaB/src/find_children.F deleted file mode 100644 index cfefc9199b7d32fe842363bde971327586cdd8c1..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/src/find_children.F +++ /dev/null @@ -1,178 +0,0 @@ -*CMZ : 20/09/2001 18.42.30 by Unknown -*-- Author : Maria Smizanska 22/09/96 - - SUBROUTINE FIND_CHILDREN(I) -* * -*----------------------------------------------------------------------* -* * -* Name : FIND_CHILDREN * -* (module) * -* * -* Description : find full decay tree of initial particle descendants * -* and check if each one fullfills requirements defined * -* by FUNCTION QUALIFY according to user datacard CUTOFF * -* This subroutine has recursive call * -* Arguments : * -* input: I particle line # in LUJETS * -* output: inside =0 B-hadron chain rejected * -* =1 B-hadron chain accepted * -* * -* Banks/Tables: * -* * -*----------------------------------------------------------------------* -* * -* Author : Maria Smizanska Date : 20/09/96 * -* * -* * -* Last modifications : Chafik Driouichi * -* [name] Date : 15/09/ 2001 * -* * -* Keywords : * -* [keywords] * -*----------------------------------------------------------------------* -* -c +CDE, TYPING. -*KEEP,DOUB. -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) -*KEEP,LUJETS. - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) -*KEEP,BTREE. - common/btree/ntree,tree(4000) - integer tree - SAVE /btree/ -*KEND. - INTEGER inside,I,NCHI -*KEEP,FAMILY. - name_self(I)=K(I,2) - name_selv(I)=abs(K(I,2)) - name_father(I)=K(K(I,3),2) - name_grandpa(I)=K(K(K(I,3),3),2) - name_daughter1(I)=K(K(I,4),2) - name_daughter2(I)=K(K(I,5),2) - - link_self(I)=I - link_father(I)=K(I,3) - link_grandpa(I)=K(K(I,3),3) - link_daughter1(I)=K(I,4) - link_daughter2(I)=K(I,5) -*KEND. - integer qualify - integer children -C ----------- end CDE -------------------------------------------------- -C ----------- end CDE -------------------------------------------------- - -c local debugging control (inactive for idebug=0) - idebug=0 - - -c is particle inside cuts? - inside=qualify(I) - - if(inside.ne.0) then -c store particle number - - tree(I)=1 - - -c find children of particle I - - NCHI=children(I) - if(NCHI.ne.0) then - l1=link_daughter1(I) - do i1=1,NCHI - il1=l1+i1-1 - inside=qualify(il1) - tree(il1)=-1 - if(qualify(il1).eq.1) then - tree(il1)=1 - inside=qualify(il1) - - nchi2=children(il1) - if(nchi2.ne.0) then - l2=link_daughter1(il1) - do i2=1,nchi2 - il2=l2+i2-1 - inside=qualify(il2) - tree(il2)=-1 - if(qualify(il2).eq.1) then - tree(il2)=1 - inside=qualify(il2) - - nchi3=children(il2) - if(nchi3.ne.0)then - l3=link_daughter1(il2) - do i3=1,nchi3 - il3=l3+i3-1 - inside=qualify(il3) - tree(il3)=-1 - if(qualify(il3).eq.1) then - tree(il3)=1 - inside=qualify(il3) - - nchi4=children(il3) - if(nchi4.ne.0) then - l4=link_daughter1(il3) - do i4=1,nchi4 - il4=l4+i4-1 - inside=qualify(il4) - tree(il4)=-1 - if(qualify(il4).eq.1) then - tree(il4)=1 - inside=qualify(il4) - - nchi5=children(il4) - if(nchi5.ne.0) then - l5=link_daughter1(il4) - do i5=1,nchi5 - il5=l5+i5-1 - inside=qualify(il5) - tree(il5)=-1 - if(qualify(il5).eq.1) then - tree(il5)=1 - inside=qualify(il5) - - nchi6=children(il5) - if(nchi5.ne.0) then - l6=link_daughter1(il5) - do i6=1,nchi6 - il6=l6+i6-1 - inside=qualify(il6) - tree(il6)=-1 - if(qualify(il6).eq.1) then - tree(il6)=1 - inside=qualify(il6) - endif - enddo - endif - - endif - enddo - endif - - endif - enddo - endif - - endif - enddo - endif - - endif - enddo - endif - - endif - enddo - endif ! if inside=0 - - else - - tree(I)=-1 - - endif - return - - END ! FIND_CHILDREN - diff --git a/Generators/PythiaB/src/finsel.F b/Generators/PythiaB/src/finsel.F deleted file mode 100644 index 532ab5337688e19698f1737e6bb868c670b630e5..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/src/finsel.F +++ /dev/null @@ -1,234 +0,0 @@ -*CMZ : 02/08/2001 11.45.06 by Maria Smizanska -*-- Author : Nick Ellis 13/07/95 - - SUBROUTINE FINSEL(IRET) -* * -*----------------------------------------------------------------------* -* * -* Name : FINSEL * -* (module) * -* * -* Description : Accepting/rejecting event after hadronization is made * -* in 5 steps: * -* 0. reject event if undecayed quarks found -* 1. LVL1CUTS * -* 2. LVL2CUTS * -* 3. OFFLCUTS * -* 4. 'user_finsel' * -* * -* User wishing completely control accepting/rejecting * -* by himself can switch off * -* steps LVL1CUTS, LVL2CUTS and OFFLCUTS * -* by defining datacards * -* LVL1CUTS 1=0 (default is 1=1) -* LVL2CUTS 1=0 (default is 1=0) -* OFFLCUTS 1=0 (default is 1=0 for inclusive muon events -* 1=1 for inclusive forced decays) -* -* Subroutine user_finsel is called as empty routine * -* can be filled by user. * -* * -* * -* fill_ntup fills NTUPLE with trigger muon and signal tree * -* number of events written into NTUPLE is controled by * -* user datacard NT5000 * -* * -* Arguments : * -* ITB (in) # of hadronisations before this event * -* IRET (out) flag for keep/reject event * -* Banks/Tables: * -* [name] ([filled | used | modified]) * -* * -*----------------------------------------------------------------------* -* * -* Author : Nick Ellis Date : 13/07/95 * -* * -* * -* Last modifications : * -* [name] Date : [date] * -* * -* Keywords : * -* [keywords] * -*----------------------------------------------------------------------* -* -*+CDE, TYPING. -C ----------- end CDE -------------------------------------------------- -* -*KEEP,DOUB. -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) -*KEEP,LUJETS. - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) -*KEEP,LUDAT1. - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) -*KEEP,LUDAT2. - COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) -*KEEP,PYPARS. - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) -*KEEP,PYINT1. - COMMON/PYINT1/MINT(400),VINT(400) -*KEEP,PYINT2. - COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2) -*KEEP,PYINT5. - COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3) -*KEEP,PYUPPR. - COMMON/PYUPPR/NUP,KUP(20,7),NFUP,IFUP(10,2),PUP(20,5),Q2UP(0:10) - - - -*KEND. -* SAVE /LUJETS/,/LUDAT1/,/LUDAT2/ - SAVE /PYJETS/,/PYDAT1/,/PYDAT2/ - SAVE /PYPARS/,/PYINT1/,/PYINT2/,/PYINT5/,/PYUPPR/ - -*KEEP,NNTUPLE. -* DECLARATION FOR NTUPLE 5000 - PARAMETER(NDIM = 20) - COMMON/NNICK/XNTUP(NDIM) - SAVE/NNICK/ - -* DECLARATION FOR NTUPLE 5001 - PARAMETER(NDIM1 = 13) - COMMON/HARD/XNTUP1(NDIM1) - SAVE/HARD/ - -* DECLARATION FOR NTUPLE 5002 - PARAMETER(NDIM2 = 12) - COMMON/MUON/XNTUP2(NDIM2) - SAVE/MUON/ -*KEEP,PRIVEVN. -* numbering of accepted b-events - common/bevent/ieve,keve -* SAVE/ieve/ - SAVE/bevent/ - -*KEND. -c SAVE IFIRST,IIPRNT - SAVE IFIRST - DATA IFIRST /1/ -c DATA IIPRNT /0/ -C DATA IEVE /0/ -*KEEP,BTREE. - common/btree/ntree,tree(4000) - integer tree - SAVE /btree/ -*KEEP,HEAVYFLAV. -* store info about multiple heavy flavour produced in event - common/multif/ibq,icq -*KEEP,FAMILY. - name_self(I)=K(I,2) - name_selv(I)=abs(K(I,2)) - name_father(I)=K(K(I,3),2) - name_grandpa(I)=K(K(K(I,3),3),2) - name_daughter1(I)=K(K(I,4),2) - name_daughter2(I)=K(K(I,5),2) - - link_self(I)=I - link_father(I)=K(I,3) - link_grandpa(I)=K(K(I,3),3) - link_daughter1(I)=K(I,4) - link_daughter2(I)=K(I,5) -*KEND. - - - -C ----------- end CDE -------------------------------------------------- -c debug control for this subroutine (non active for idebug=0) - idebug=0 - -*...DEFINE NUMBER OF SELECTED EVENTS TO PRINT OUT - NNPRNT = 1 - -*...INITIALIZE - IF(IFIRST.EQ.1) THEN -c call pylist(12) - - - IFIRST =0 - ENDIF - - - -c -c accept event unless explicitely vetoed -c - iret=0 - -c -c decide if it is worth keeping event -c - -c ------------------------------------------------- -c Check for undecayed quarks and reject event if any -c ------------------------------------------------------ - DO 1700 I=1,N - if(name_selv(I).ge.1.and.name_selv(I).le.6 - + .and.K(I,1).eq.1) iret=1 - - if(iret.eq.1) print*,'FINSEL: undecayed quark event rejected' - if(iret.eq.1) return - 1700 continue -c ------------------------------------------------------------------ -c 1. check LVL1 with any muon in event -c ------------------------------------------------------------------ - call trig1(iret) - if(iret.eq.1) return - if(idebug.ne.0) print*,'FINSEL: trig1 passed' - -c ---------------------------------------------------------------------- -c 2. quasi LVL2 finds second muon or tagging electron -c normally subroutine trig2 is inactive -c only if demanded explicitly by user - LVL2CUTS datacard -c ---------------------------------------------------------------------- - call trig2(iret) - if(iret.eq.1) return - if(idebug.ne.0) print*,'FINSEL: trig2 passed' - -c ---------------------------------------------------------------------- -c 3. for forced channels finds B-decay tree and check -c if whole tree is inside cuts defined by OFFLCUTS -c ---------------------------------------------------------------------- - call off_line(iret) - if(iret.eq.1) return - if(idebug.ne.0) print*,'FINSEL: off_line passed' - -c ---------------------------------------------------------------------- -c 4. users routine of additional demands on this event -c ---------------------------------------------------------------------- - - call user_finsel(iret) - if(iret.eq.1) return - if(idebug.ne.0) print*,'FINSEL: user_finsel passed' - - if(iret.ne.0) return - - ieve=ieve+1 - if(idebug.ne.0) - + print *,'FINSEL: eve',ieve,' accepted with ',N,' particles' - -c ---------------------------------------------------------------------- -c 5. if bbbb call again pyexec and decay undecaied events -c ---------------------------------------------------------------------- - if(iret.eq.0.and.ibq.gt.1) call bbbb_luexec(2) - - - -c ---------------------------------------------------------------------- -c 6. Store LVL1 muon and signal chain in NTUPLE -c number of events to be stored is controled by user datacard NT5000 -c ---------------------------------------------------------------------- - call fill_ntup(0) - -c call hfill(1,float(N),1.,1.) -c...Print NNPRNT events that passed cuts -c IF(IIPRNT.LT.NNPRNT) THEN -c print *,'FINSEL: eve',ieve,' accepted with ',N,' particles' -c CALL PYLIST(1) -c IIPRNT = IIPRNT+1 -c ENDIF - - RETURN - -* - END ! FINSEL diff --git a/Generators/PythiaB/src/forced.F b/Generators/PythiaB/src/forced.F deleted file mode 100644 index ea979de822f83abbda074eabbfc381fab473532b..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/src/forced.F +++ /dev/null @@ -1,79 +0,0 @@ -*CMZ : 02/08/2001 11.45.28 by Maria Smizanska -*-- Author : Maria Smizanska 24/09/96 - - FUNCTION FORCED(I) -* * -*----------------------------------------------------------------------* -* * -* Name : FORCED * -* -* Confirm particles that have -* been forced not to decay - by user * -* This function is to be used by function QUALIFY * -* Description : * -* [description] * -* * -* Arguments : * -* [name] ([in | out | in/out]) [description] * -* * -* Banks/Tables: * -* [name] ([filled | used | modified]) * -* * -*----------------------------------------------------------------------* -* * -* Author : Maria Smizanska Date : 24/09/96 * -* * -* * -* Last modifications : * -* [name] Date : [date] * -* * -* Keywords : * -* [keywords] * -*----------------------------------------------------------------------* -* -C+CDE, TYPING. -*KEEP,DOUB. -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) -*KEEP,LUJETS. - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) -*KEND. - INTEGER ISTAB(15) - data ISTAB/11,12,13,14,16,18,22,211,321,2212,5*0/ - integer forced -*KEEP,FAMILY. - name_self(I)=K(I,2) - name_selv(I)=abs(K(I,2)) - name_father(I)=K(K(I,3),2) - name_grandpa(I)=K(K(K(I,3),3),2) - name_daughter1(I)=K(K(I,4),2) - name_daughter2(I)=K(K(I,5),2) - - link_self(I)=I - link_father(I)=K(I,3) - link_grandpa(I)=K(K(I,3),3) - link_daughter1(I)=K(I,4) - link_daughter2(I)=K(I,5) -*KEND. - -C ----------- end CDE -------------------------------------------------- -* -* - idebug=0 - forced=0 - if(idebug.ne.0) print *,'FORCED: particle tested', - + K(I,2),K(I,1) -c not take decaying particles (stable or forced not to decay) - if(K(I,1).ne.1) return - -c look if it is forced or really stable and choose forced - do ii=1,15 - if(name_selv(I).eq.ISTAB(ii)) return - enddo - if(idebug.ne.0) print *,'FORCED: particle recognized', - + K(I,2),K(I,1) - forced=1 - - - END ! FORCED diff --git a/Generators/PythiaB/src/formfactors_KstMuMu.F b/Generators/PythiaB/src/formfactors_KstMuMu.F deleted file mode 100644 index 78ebb7646b69c2347dba894f8c34bd848fc73ca8..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/src/formfactors_KstMuMu.F +++ /dev/null @@ -1,917 +0,0 @@ -c 29.10.2002 30.10.2002 31.10.2002 -c 01.11.2002 13.05.2003 21.05.2003 -c 17.06.2003 02.07.2003 01.09.2006 - -c ******************************************************** -c ******************************************************** -c ** ** -c ** THE FORM FACTORS CALCULATIONS ** -c ** ** -c ** for B^0_d\to K^{*0}\mu^+\mu^- decay in 3 models ** -c ** ** -c ******************************************************** -c ******************************************************** - - - -c *************************************************************** -c * * -c * The form factors parametrisation * -c * by D.Melikhov and B.Stech, Phys.Rev.D62, p.014006 (2000); * -c * see the formula (9). * -c * * -c *************************************************************** - subroutine cqm9_KstMuMu(q2,M,i) - - dimension sf0(7), s1(7), s2(7) - - COMMON /nik5/ n_ffs_cqm, n_cqm9, n_cqm10 - SAVE /nik5/ - - real n_ffs_cqm, n_cqm9, n_cqm10 - - real q2, M - integer i - real cqm - real sf0, s1, s2 - - sf0(1) = 0.36 - sf0(2) = 0.32 - sf0(3) = 0.45 - sf0(4) = 0.44 - sf0(5) = 0.39 - sf0(6) = 0.39 - sf0(7) = 0.27 - - s1(1) = 0.64 - s1(2) = 1.23 - s1(3) = 0.46 - s1(4) = 0.45 - s1(5) = 0.45 - s1(6) = 0.72 - s1(7) = 1.31 - - s2(1) = 0.36 - s2(2) = 0.38 - s2(3) = 0.0 - s2(4) = 0.0 - s2(5) = 0.0 - s2(6) = 0.62 - s2(7) = 0.41 - - cqm=sf0(i)/(1.0-s1(i)*q2/(M**2)+s2(i)*(q2**2)/M**4) - cqm=cqm/(1.0-q2/(M**2)) - - n_cqm9=cqm - -c print *,' n_cqm9 =', n_cqm9 - - return - end - - - -c *************************************************************** -c * * -c * The form factors parametrisation * -c * by D.Melikhov and B.Stech, Phys.Rev.D62, p.014006 (2000); * -c * see the formula (10). * -c * * -c *************************************************************** - subroutine cqm10_KstMuMu(q2, M, i) - - dimension sf0(7), s1(7), s2(7) - - COMMON /nik5/ n_ffs_cqm, n_cqm9, n_cqm10 - SAVE /nik5/ - - real n_ffs_cqm, n_cqm9, n_cqm10 - - real q2, M - integer i - real cqm - real sf0, s1, s2 - - sf0(1) = 0.36 - sf0(2) = 0.32 - sf0(3) = 0.45 - sf0(4) = 0.44 - sf0(5) = 0.39 - sf0(6) = 0.39 - sf0(7) = 0.27 - - s1(1) = 0.64 - s1(2) = 1.23 - s1(3) = 0.46 - s1(4) = 0.45 - s1(5) = 0.45 - s1(6) = 0.72 - s1(7) = 1.31 - - s2(1) = 0.36 - s2(2) = 0.38 - s2(3) = 0.0 - s2(4) = 0.0 - s2(5) = 0.0 - s2(6) = 0.62 - s2(7) = 0.41 - - cqm=sf0(i)/(1.0-s1(i)*q2/M**2+s2(i)*q2**2/M**4.0) - - n_cqm10=cqm - - return - end - - - -c *************************************************************** -c * * -c * Form factors aproximation formula * -c * in the constituent quark model * -c * for the decay B\to K^*\ell^+\ell^- * -c * * -c * by D.Melikhov and B.Stech, Phys.Rev.D62, p.014006 (2000). * -c * * -c * q2 -- the square of transition 4-momentum; * -c * index -- the index of form factors: * -c * index=1 -- A_1(q^2); * -c * index=2 -- A_2(q^2); * -c * index=3 -- A_0(q^2); * -c * index=4 -- V(q^2); * -c * index=5 -- T_1(q^2); * -c * index=6 -- T_2(q^2); * -c * index=7 -- T_3(q^2). * -c * * -c *************************************************************** - subroutine ffs_cqm_KstMuMu(q2,index) - - COMMON /nik5/ n_ffs_cqm, n_cqm9, n_cqm10 - SAVE /nik5/ - - real n_ffs_cqm, n_cqm9, n_cqm10 - - real q2 - integer index - real ff - real M_P - real M_V - - ff=0.0 - M_P=5.37 ! GeV -- the mass of the B_s-meson - M_V=5.42 ! GeV -- the mass of the B^*_s-meson - - -c print *,' ' -c print *,' BEGIN subroutine ffs_cqm' -c print *,' q2 =', q2 -c print *,' index =', index - - if(index.EQ.1) then - call cqm10_KstMuMu(q2,M_V,index) - ff=n_cqm10 - endif - - if(index.EQ.2) then - call cqm10_KstMuMu(q2,M_V,index) - ff=n_cqm10 - endif - - if(index.EQ.3) then - call cqm9_KstMuMu(q2,M_P,index) - ff=n_cqm9 - endif - - if(index.EQ.4) then - call cqm9_KstMuMu(q2,M_V,index) - ff=n_cqm9 - endif - - if(index.EQ.5) then - call cqm9_KstMuMu(q2,M_V,index) - ff=n_cqm9 - endif - - if(index.EQ.6) then - call cqm10_KstMuMu(q2,M_V,index) - ff=n_cqm10 - endif - - if(index.EQ.7) then - call cqm10_KstMuMu(q2,M_V,index) - ff=n_cqm10 - endif - - if(index.GT.7) then - print *,' ' - print *,' subroutine ffs_cqm_KstMuMu ' - print *, 'Fatal ERROR: index > 7!' - print *,' index =', index - print *,' ' - STOP - endif - - if(index.LT.1) then - print *,' ' - print *,' subroutine ffs_cqm_KstMuMu ' - print *, 'Fatal ERROR: index < 1!' - print *,' index =', index - print *,' ' - STOP - endif - - n_ffs_cqm=ff - - return - end - - - -c ************************************************************ -c * * -c * Form factors aproximation formula * -c * in light-cone sum-rule * -c * for the decay B\to\K^*\ell^+\ell^- * -c * * -c * by P.Ball, V.M.Braun, Phys.Rev. D58, p.094016 (1998) * -c * or hep-ph/9805422 v2. * -c * * -c * q2 -- the square of transition 4-momentum; * -c * M1 -- the mass of the B -- meson; * -c * M2 -- the mass of the K^* -- meson; * -c * index -- the index of form factors: * -c * index=1 -- A_1(q^2); * -c * index=2 -- A_2(q^2); * -c * index=3 -- A_0(q^2); * -c * index=4 -- V(q^2); * -c * index=5 -- T_1(q^2); * -c * index=6 -- T_2(q^2); * -c * index=7 -- T_3(q^2); * -c * * -c ************************************************************ - subroutine ffs_lcsr_KstMuMu(q2,M1,index,ff) - - dimension sf0(7), aF(7), bF(7) - - real q2, M1 - integer index - real ff - real sf0, aF, bF - - sf0(1) = 0.337 - sf0(2) = 0.283 - sf0(3) = 0.470 - sf0(4) = 0.458 - sf0(5) = 0.379 - sf0(6) = 0.379 - sf0(7) = 0.261 - - aF(1) = 0.6 - aF(2) = 1.18 - aF(3) = 1.55 - aF(4) = 1.55 - aF(5) = 1.59 - aF(6) = 0.49 - aF(7) = 1.2 - - bF(1) = -0.023 - bF(2) = 0.281 - bF(3) = 0.68 - bF(4) = 0.575 - bF(5) = 0.615 - bF(6) = -0.241 - bF(7) = 0.098 - - aF(index)=aF(index)*q2/M1**2 - bF(index)=bF(index)*q2**2.0/M1**4 - ff=sf0(index)/(1.0-aF(index)+bF(index)) - - return - end - - -c ******************************************************************** -c * * -c * Form factors aproximation formula * -c * in the constituent quark model * -c * for the decay B\to\K^*\ell^+\ell^- * -c * * -c * by D.Melikhov, N.Nikitin, S.Simula, Phys.Rev. D57, p.6814 (1998) * -c * * -c * q2 -- the square of transition 4-momentum; * -c * M1 -- the mass of the B -- meson; * -c * M2 -- the mass of the K^* -- meson; * -c * index -- the index of form factors: * -c * index=1 -- g(q_2); * -c * index=2 -- f(q_2); * -c * index=3 -- a_+(q^2); * -c * index=4 -- a_-(q^2); * -c * index=5 -- g_+(q^2); * -c * index=6 -- g_-(q^2); * -c * index=7 -- g_0=h(q^2). * -c * * -c ******************************************************************** - subroutine ffs_mns_KstMuMu (q2, i, mns) - - dimension sf0(7), s1(7), s2(7) - - real q2 - integer i - real mns - real sf0, s1, s2 - - sf0(1) = 0.063 - sf0(2) = 2.01 - sf0(3) = -0.0454 - sf0(4) = 0.053 - sf0(5) = -0.354 - sf0(6) = 0.313 - sf0(7) = 0.0056 - - s1(1) = 0.0523 - s1(2) = 0.0212 - s1(3) = 0.039 - s1(4) = 0.044 - s1(5) = 0.0523 - s1(6) = 0.053 - s1(7) = 0.0657 - - s2(1) = 0.00066 - s2(2) = 0.00009 - s2(3) = 0.00004 - s2(4) = 0.00023 - s2(5) = 0.0007 - s2(6) = 0.00067 - s2(7) = 0.001 - - mns=sf0(i)/(1.0-s1(i)*q2+s2(i)*q2**2.0) - - return - end - - -c *************************************************************** -c * * -c * Form factor g. * -c * For definishion see the paper: * -c * D.Melikhov, N.Nikitin and S.Simula, Phys.Rev.D57, p.6814. * -c * * -c * model -- model for form factor calculations: * -c * model=1 CQM-MS (Phys.Rev.D62); * -c * model=2 LCSR (Phys.Rev.D58); * -c * model=3 CQM-MNS (Phys.Rev.D57); * -c * q2 -- the square of transition 4-momentum; * -c * M1 -- the mass of B -- meson; * -c * M2 -- the mass of K^* -- meson. * -c * * -c *************************************************************** - subroutine myg_KstMuMu(model,q2,M1,M2) - - COMMON /nikff/ n_g,n_f,n_aplus,n_aminus,n_gplus, - #n_gminus, n_g0,n_B0, n_Bplus - - COMMON /nik5/ n_ffs_cqm, n_cqm9, n_cqm10 - SAVE /nikff/,/nik5/ - - real n_g,n_f,n_aplus,n_aminus,n_gplus ! /nikff/ - real n_gminus, n_g0,n_B0, n_Bplus ! /nikff/ - real n_ffs_cqm, n_cqm9, n_cqm10 ! /nik5/ - - real q2, M1, M2 - integer model - real gg - - gg=0.0 - -c print *,' ' -c print *,' BEGIN subroutine myg ' -c print *,' model =',model -c print *,' M1 =', M1 -c print *,' M2 =', M2 -c print *,' q2 =', q2 - - if(model.EQ.1) then - call ffs_cqm_KstMuMu(q2,4) - gg=n_ffs_cqm - gg=gg/(M1+M2) - endif - - if(model.EQ.2) then - call ffs_lcsr_KstMuMu(q2,M1,4,gg) - gg=gg/(M1+M2) - endif - - if(model.EQ.3) then - call ffs_mns_KstMuMu(q2,1,gg) - endif - - if(model.NE.1.AND.model.NE.2.AND.model.NE.3) then - print *,' ' - print *,' subroutine myg_KstMuMu' - print *,' Fatal ERROR: model not all the same 1,2 or 3!' - print *,' model =', model - print *,' ' - STOP - endif - - n_g=gg - - return - end - - - -c ************************************************************** -c * * -c * Form factor f. * -c * For definishion see the paper: * -c * D.Melikhov, N.Nikitin and S.Simula, Phys.Rev.D57, p.6814. * -c * * -c * model -- model for form factor calculations: * -c * model=1 CQM-MS (Phys.Rev.D62); * -c * model=2 LCSR (Phys.Rev.D58); * -c * model=3 CQM-MNS (Phys.Rev.D57); * -c * q2 -- the square of transition 4-momentum; * -c * M1 -- the mass of B -- meson; * -c * M2 -- the mass of K^* -- meson. * -c * * -c ************************************************************** - subroutine myf_KstMuMu(model, q2, M1, M2) - - COMMON /nikff/ n_g,n_f,n_aplus,n_aminus,n_gplus, - #n_gminus, n_g0,n_B0, n_Bplus - - COMMON /nik5/ n_ffs_cqm, n_cqm9, n_cqm10 - SAVE /nikff/,/nik5/ - - real n_g,n_f,n_aplus,n_aminus,n_gplus - real n_gminus, n_g0,n_B0, n_Bplus - real n_ffs_cqm, n_cqm9, n_cqm10 - - real q2, M1, M2, ff - integer model - - ff=0.0 - - if(model.EQ.1) then - call ffs_cqm_KstMuMu(q2,1) - ff=n_ffs_cqm - ff=ff*(M1+M2) - endif - - if(model.EQ.2) then - call ffs_lcsr_KstMuMu(q2,M1,1,ff) - ff=ff*(M1+M2) - endif - - if(model.EQ.3) then - call ffs_mns_KstMuMu(q2,2,ff) - endif - - if(model.NE.1.AND.model.NE.2.AND.model.NE.3) then - print *,' ' - print *,' subroutine myf_KstMuMu ' - print *,' Fatal ERROR: model not all the same 1,2 or 3!' - print *,' model =', model - print *,' ' - STOP - endif - - n_f = ff - - return - end - - - -c *************************************************************** -c * * -c * Form factor a_+. * -c * For definishion see the paper: * -c * D.Melikhov, N.Nikitin and S.Simula, Phys.Rev.D57, p.6814. * -c * * -c * model -- model for form factor calculations: * -c * model=1 CQM-MS (Phys.Rev.D62); * -c * model=2 LCSR (Phys.Rev.D58); * -c * model=3 CQM-MNS (Phys.Rev.D57); * -c * q2 -- the square of transition 4-momentum; * -c * M1 -- the mass of B -- meson; * -c * M2 -- the mass of K^* -- meson. * -c * * -c *************************************************************** - subroutine myaplus_KstMuMu(model,q2,M1,M2) - - COMMON /nikff/ n_g,n_f,n_aplus,n_aminus,n_gplus, - #n_gminus, n_g0,n_B0, n_Bplus - - COMMON /nik5/ n_ffs_cqm, n_cqm9, n_cqm10 - SAVE /nikff/,/nik5/ - - real n_g,n_f,n_aplus,n_aminus,n_gplus - real n_gminus, n_g0,n_B0, n_Bplus - real n_ffs_cqm, n_cqm9, n_cqm10 - - real q2, M1, M2, aaplus - integer model - - aaplus=0.0 - - if(model.EQ.1) then - call ffs_cqm_KstMuMu(q2,2) - aaplus=n_ffs_cqm - aaplus=(-aaplus)/(M1+M2) - endif - - if(model.EQ.2) then - call ffs_lcsr_KstMuMu(q2,M1,2,aaplus) - aaplus=(-aaplus)/(M1+M2) - endif - - if(model.EQ.3) then - call ffs_mns_KstMuMu(q2,3,aaplus) - endif - - if(model.NE.1.AND.model.NE.2.AND.model.NE.3) then - print *,' ' - print *,' subroutine myaplus_KstMuMu ' - print *,' Fatal ERROR: model not all the same 1,2 or 3!' - print *,' model =', model - print *,' ' - STOP - endif - - n_aplus=aaplus - - return - end - - - -c *************************************************************** -c * * -c * Form factor a_-. * -c * For definishion see the paper: * -c * D.Melikhov, N.Nikitin and S.Simula, Phys.Rev.D57, p.6814. * -c * * -c * model -- model for form factor calculations: * -c * model=1 CQM-MS (Phys.Rev.D62); * -c * model=2 LCSR (Phys.Rev.D58); * -c * model=3 CQM-MNS (Phys.Rev.D57); * -c * q2 -- the square of transition 4-momentum; * -c * M1 -- the mass of B -- meson; * -c * M2 -- the mass of K^* -- meson. * -c * * -c *************************************************************** - subroutine myaminus_KstMuMu(model,q2,M1,M2) - - COMMON /nikff/ n_g,n_f,n_aplus,n_aminus,n_gplus, - #n_gminus, n_g0,n_B0, n_Bplus - - COMMON /nik5/ n_ffs_cqm, n_cqm9, n_cqm10 - SAVE /nikff/,/nik5/ - - real n_g,n_f,n_aplus,n_aminus,n_gplus - real n_gminus, n_g0,n_B0, n_Bplus - real n_ffs_cqm, n_cqm9, n_cqm10 - - real q2, M1, M2 - integer model - real aaminus, a1, a2, a3 - - aaminus=0.0 - - if(model.EQ.1) then - call ffs_cqm_KstMuMu(q2,3) - a1=n_ffs_cqm - call ffs_cqm_KstMuMu(q2,1) - a2=n_ffs_cqm - call ffs_cqm_KstMuMu(q2,2) - a3=n_ffs_cqm - aaminus=2.0*M2*a1-(M1+M2)*a2 - aaminus=aaminus+(M1-M2)*a3 - aaminus=aaminus/q2 - endif - - if(model.EQ.2) then - call ffs_lcsr_KstMuMu(q2,M1,3,a1) - call ffs_lcsr_KstMuMu(q2,M1,1,a2) - call ffs_lcsr_KstMuMu(q2,M1,2,a3) - aaminus=2.0*M2*a1 - aaminus=aaminus-(M1+M2)*a2 - aaminus=aaminus+(M1-M2)*a3 - aaminus=aaminus/q2 - endif - - if(model.EQ.3) then - call ffs_mns_KstMuMu(q2,4,aaminus) - endif - - if(model.NE.1.AND.model.NE.2.AND.model.NE.3) then - print *,' ' - print *,' subroutine myaminus_KstMuMu ' - print *,' Fatal ERROR: model not all the same 1,2 or 3!' - print *,' model =', model - print *,' ' - STOP - endif - - n_aminus=aaminus - - return - end - - - -c *************************************************************** -c * * -c * Form factor g_+. * -c * For definishion see the paper: * -c * D.Melikhov, N.Nikitin and S.Simula, Phys.Rev.D57, p.6814. * -c * * -c * model -- model for form factor calculations: * -c * model=1 CQM-MS (Phys.Rev.D62); * -c * model=2 LCSR (Phys.Rev.D58); * -c * model=3 CQM-MNS (Phys.Rev.D57); * -c * q2 -- the square of transition 4-momentum; * -c * M1 -- the mass of B -- meson; * -c * * -c *************************************************************** - subroutine mygplus_KstMuMu(model,q2,M1) - - COMMON /nikff/ n_g,n_f,n_aplus,n_aminus,n_gplus, - #n_gminus, n_g0,n_B0, n_Bplus - - COMMON /nik5/ n_ffs_cqm, n_cqm9, n_cqm10 - SAVE /nikff/,/nik5/ - - real n_g,n_f,n_aplus,n_aminus,n_gplus - real n_gminus, n_g0,n_B0, n_Bplus - real n_ffs_cqm, n_cqm9, n_cqm10 - - real q2, M1, ggplus - integer model - - ggplus=0.0 - - if(model.EQ.1) then - call ffs_cqm_KstMuMu(q2,5) - ggplus=-n_ffs_cqm - endif - - if(model.EQ.2) then - call ffs_lcsr_KstMuMu(q2,M1,5,ggplus) - ggplus=-ggplus - endif - - if(model.EQ.3) then - call ffs_mns_KstMuMu(q2,5,ggplus) - endif - - if(model.NE.1.AND.model.NE.2.AND.model.NE.3) then - print *,' ' - print *,' subroutine mygplus_KstMuMu ' - print *,' Fatal ERROR: model not all the same 1,2 or 3!' - print *,' model =', model - print *,' ' - STOP - endif - - n_gplus=ggplus - - return - end - - - -c *************************************************************** -c * * -c * Form factor g_-. * -c * For definishion see the paper: * -c * D.Melikhov, N.Nikitin and S.Simula, Phys.Rev.D57, p.6814. * -c * * -c * model -- model for form factor calculations: * -c * model=1 CQM-MS (Phys.Rev.D62); * -c * model=2 LCSR (Phys.Rev.D58); * -c * model=3 CQM-MNS (Phys.Rev.D57); * -c * q2 -- the square of transition 4-momentum; * -c * M1 -- the mass of B -- meson; * -c * M2 -- the mass of K^* -- meson. * -c * * -c *************************************************************** - subroutine mygminus_KstMuMu(model,q2,M1,M2) - - COMMON /nikff/ n_g,n_f,n_aplus,n_aminus,n_gplus, - #n_gminus, n_g0,n_B0, n_Bplus - - COMMON /nik5/ n_ffs_cqm, n_cqm9, n_cqm10 - SAVE /nikff/,/nik5/ - - real n_g,n_f,n_aplus,n_aminus,n_gplus - real n_gminus, n_g0,n_B0, n_Bplus - real n_ffs_cqm, n_cqm9, n_cqm10 - - real q2, M1, M2, ggminus - integer model - real gm1, gm2 - - ggminus=0.0 - - if(model.EQ.1) then - call ffs_cqm_KstMuMu(q2,5) - gm1=n_ffs_cqm - call ffs_cqm_KstMuMu(q2,6) - gm2=n_ffs_cqm - ggminus=gm1-gm2 - ggminus=ggminus*(M1**2-M2**2)/q2 - endif - - if(model.EQ.2) then - call ffs_lcsr_KstMuMu(q2,M1,5,gm1) - call ffs_lcsr_KstMuMu(q2,M1,6,gm2) - ggminus=gm1-gm2 - ggminus=ggminus*(M1**2-M2**2)/q2 - endif - - if(model.EQ.3) then - call ffs_mns_KstMuMu(q2,6,ggminus) - endif - - if(model.NE.1.AND.model.NE.2.AND.model.NE.3) then - print *,' ' - print *,' subroutine mygminus_KstMuMu' - print *,' Fatal ERROR: model not all the same 1,2 or 3!' - print *,' model =', model - print *,' ' - STOP - endif - - n_gminus=ggminus - - return - end - - - -c **************************************************************** -c * * -c * Form factor h=g_0. * -c * For definishion see the paper: * -c * D.Melikhov, N.Nikitin and S.Simula, Phys.Rev.D57, p.6814. * -c * * -c * model -- model for form factor calculations: * -c * model=1 CQM-MS (Phys.Rev.D62); * -c * model=2 LCSR (Phys.Rev.D58); * -c * model=3 CQM-MNS (Phys.Rev.D57); * -c * q2 -- the square of transition 4-momentum; * -c * M1 -- the mass of B -- meson; * -c * M2 -- the mass of K^* -- meson. * -c * * -c **************************************************************** - subroutine myh_KstMuMu(model, q2, M1, M2) - - COMMON /nikff/ n_g,n_f,n_aplus,n_aminus,n_gplus, - #n_gminus, n_g0,n_B0, n_Bplus - - COMMON /nik5/ n_ffs_cqm, n_cqm9, n_cqm10 - SAVE /nikff/,/nik5/ - - real n_g,n_f,n_aplus,n_aminus,n_gplus - real n_gminus, n_g0,n_B0, n_Bplus - real n_ffs_cqm, n_cqm9, n_cqm10 - - real q2, M1, M2, gg0 - integer model - real gg01, gg02, gg03 - - gg0=0.0 - - if(model.EQ.1) then - call ffs_cqm_KstMuMu(q2,5) - gg01=n_ffs_cqm - call ffs_cqm_KstMuMu(q2,6) - gg02=n_ffs_cqm - call ffs_cqm_KstMuMu(q2,7) - gg03=n_ffs_cqm - gg0=(gg01-gg02)/q2 - gg0=gg0-gg03/(M1**2-M2**2) - gg0=2.0*gg0 - endif - - if(model.EQ.2) then - call ffs_lcsr_KstMuMu(q2,M1,5,gg01) - call ffs_lcsr_KstMuMu(q2,M1,6,gg02) - call ffs_lcsr_KstMuMu(q2,M1,7,gg03) - gg0=(gg01-gg02)/q2 - gg0=gg0-gg03/(M1**2-M2**2) - gg0=2.0*gg0 - endif - - if(model.EQ.3) then - call ffs_mns_KstMuMu(q2,7,gg0) - endif - - if(model.NE.1.AND.model.NE.2.AND.model.NE.3) then - print *,' ' - print *,' subroutine myh_KstMuMu ' - print *,' Fatal ERROR: model not all the same 1,2 or 3!' - print *,' model =', model - print *,' ' - STOP - endif - - n_g0=gg0 - - return - end - - - -c **************************************************************** -c * * -c * Combination of the different form factors B_0. * -c * For definishion see the paper: * -c * D.Melikhov, N.Nikitin and S.Simula, Phys.Rev.D57, p.6814. * -c * * -c * model -- model for form factor calculations: * -c * model=1 CQM; * -c * model=2 LCSR; * -c * q2 -- the square of transition 4-momentum; * -c * M1 -- the mass of B_s - meson; * -c * M2 -- the mass of \phi - meson. * -c * * -c **************************************************************** - subroutine myB0_KstMuMu(model, q2, M1, M2) - - COMMON /nikff/ n_g,n_f,n_aplus,n_aminus,n_gplus, - #n_gminus, n_g0,n_B0, n_Bplus - SAVE /nikff/ - - real n_g,n_f,n_aplus,n_aminus,n_gplus - real n_gminus, n_g0,n_B0, n_Bplus - - real q2, M1, M2, BB0 - integer model - real hat_s, hat_r - real BB01, BB02 - - hat_s=q2/M1**2 - hat_r=(M2/M1)**2 - - call mygplus_KstMuMu(model,q2,M1) - BB01=n_gplus - call mygminus_KstMuMu(model,q2,M1,M2) - BB02=n_gminus - - BB0=BB01+hat_s*BB02/(1.0-hat_r) - - n_B0=BB0 - - return - end - - - - -c **************************************************************** -c * * -c * Combination of the different form factors B_+. * -c * For definishion see the paper: * -c * D.Melikhov, N.Nikitin and S.Simula, Phys.Rev.D57, p.6814. * -c * * -c * model -- model for form factor calculations: * -c * model=1 CQM; * -c * model=2 LCSR; * -c * q2 -- the square of transition 4-momentum; * -c * M1 -- the mass of B_s - meson; * -c * M2 -- the mass of \phi - meson. * -c * * -c **************************************************************** - subroutine myBplus_KstMuMu(model, q2, M1, M2) - - COMMON /nikff/ n_g,n_f,n_aplus,n_aminus,n_gplus, - #n_gminus, n_g0,n_B0, n_Bplus - SAVE /nikff/ - - real n_g,n_f,n_aplus,n_aminus,n_gplus - real n_gminus, n_g0,n_B0, n_Bplus - - real q2, M1, M2, BBplus - real BBplus1, BBplus2 - integer model - real hat_s - - hat_s=q2/M1**2 - call myh_KstMuMu(model,q2,M1,M2) - BBplus1=n_g0 - call mygplus_KstMuMu(model,q2,M1) - BBplus2=n_gplus - - BBplus=0.5*hat_s*(M1**2)*BBplus1 - BBplus=BBplus+BBplus2 - BBplus=-BBplus - - n_Bplus=BBplus - - return - end - diff --git a/Generators/PythiaB/src/formfactors_PhiMuMu.F b/Generators/PythiaB/src/formfactors_PhiMuMu.F deleted file mode 100644 index c367cc6ea6673ec8218483ef0bf7b194499dd580..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/src/formfactors_PhiMuMu.F +++ /dev/null @@ -1,685 +0,0 @@ -c 09.03.2005 01.09.2006 - -c ******************************************************** -c ******************************************************** -c ** ** -c ** THE FORM FACTORS CALCULATIONS ** -c ** ** -c ** for B^0_s\to\phi\mu^+\mu^- decay in 1 model ** -c ** ** -c ******************************************************** -c ******************************************************** - - - -c *************************************************************** -c * * -c * The form factors parametrisation * -c * by D.Melikhov and B.Stech, Phys.Rev.D62, p.014006 (2000); * -c * see the formula (9). * -c * * -c *************************************************************** - subroutine cqm9_PhiMuMu(q2,M,i) - - dimension sf0(7), s1(7), s2(7) - - COMMON /nik5/ n_ffs_cqm, n_cqm9, n_cqm10 - SAVE /nik5/ - - real n_ffs_cqm, n_cqm9, n_cqm10 - - real q2, M - integer i - real cqm - real sf0, s1, s2 - - sf0(1) = 0.34 - sf0(2) = 0.31 - sf0(3) = 0.42 - sf0(4) = 0.44 - sf0(5) = 0.38 - sf0(6) = 0.38 - sf0(7) = 0.26 - - s1(1) = 0.73 - s1(2) = 1.30 - s1(3) = 0.55 - s1(4) = 0.44 - s1(5) = 0.62 - s1(6) = 0.83 - s1(7) = 1.41 - - s2(1) = 0.42 - s2(2) = 0.52 - s2(3) = 0.12 - s2(4) = 0.20 - s2(5) = 0.20 - s2(6) = 0.71 - s2(7) = 0.57 - - cqm=sf0(i)/(1.0-s1(i)*q2/(M**2)+s2(i)*(q2**2)/M**4) - cqm=cqm/(1.0-q2/(M**2)) - - n_cqm9=cqm - -c print *,' n_cqm9 =', n_cqm9 - - return - end - - - -c *************************************************************** -c * * -c * The form factors parametrisation * -c * by D.Melikhov and B.Stech, Phys.Rev.D62, p.014006 (2000); * -c * see the formula (10). * -c * * -c *************************************************************** - subroutine cqm10_PhiMuMu(q2, M, i) - - dimension sf0(7), s1(7), s2(7) - - COMMON /nik5/ n_ffs_cqm, n_cqm9, n_cqm10 - SAVE /nik5/ - - real n_ffs_cqm, n_cqm9, n_cqm10 - - real q2, M - integer i - real cqm - real sf0, s1, s2 - - sf0(1) = 0.34 - sf0(2) = 0.31 - sf0(3) = 0.42 - sf0(4) = 0.44 - sf0(5) = 0.38 - sf0(6) = 0.38 - sf0(7) = 0.26 - - s1(1) = 0.73 - s1(2) = 1.30 - s1(3) = 0.55 - s1(4) = 0.44 - s1(5) = 0.62 - s1(6) = 0.83 - s1(7) = 1.41 - - s2(1) = 0.42 - s2(2) = 0.52 - s2(3) = 0.12 - s2(4) = 0.20 - s2(5) = 0.20 - s2(6) = 0.71 - s2(7) = 0.57 - - cqm=sf0(i)/(1.0-s1(i)*q2/M**2+s2(i)*q2**2/M**4.0) - - n_cqm10=cqm - - return - end - - - -c *************************************************************** -c * * -c * Form factors aproximation formula * -c * in the constituent quark model * -c * for the decay B^0_s\to\phi^0\ell^+\ell^- * -c * * -c * by D.Melikhov and B.Stech, Phys.Rev.D62, p.014006 (2000). * -c * * -c * q2 -- the square of transition 4-momentum; * -c * index -- the index of form factors: * -c * index=1 -- A_1(q^2); * -c * index=2 -- A_2(q^2); * -c * index=3 -- A_0(q^2); * -c * index=4 -- V(q^2); * -c * index=5 -- T_1(q^2); * -c * index=6 -- T_2(q^2); * -c * index=7 -- T_3(q^2). * -c * * -c *************************************************************** - subroutine ffs_cqm_PhiMuMu(q2,index) - - COMMON /nik5/ n_ffs_cqm, n_cqm9, n_cqm10 - SAVE /nik5/ - - real n_ffs_cqm, n_cqm9, n_cqm10 - - real q2 - integer index - real ff - real M_P - real M_V - - ff=0.0 - M_P=5.37 ! GeV -- the mass of the B_s-meson - M_V=5.42 ! GeV -- the mass of the B^*_s-meson - - -c print *,' ' -c print *,' BEGIN subroutine ffs_cqm_PhiMuMu' -c print *,' q2 =', q2 -c print *,' index =', index - - if(index.EQ.1) then - call cqm10_PhiMuMu(q2,M_V,index) - ff=n_cqm10 - endif - - if(index.EQ.2) then - call cqm10_PhiMuMu(q2,M_V,index) - ff=n_cqm10 - endif - - if(index.EQ.3) then - call cqm9_PhiMuMu(q2,M_P,index) - ff=n_cqm9 - endif - - if(index.EQ.4) then - call cqm9_PhiMuMu(q2,M_V,index) - ff=n_cqm9 - endif - - if(index.EQ.5) then - call cqm9_PhiMuMu(q2,M_V,index) - ff=n_cqm9 - endif - - if(index.EQ.6) then - call cqm10_PhiMuMu(q2,M_V,index) - ff=n_cqm10 - endif - - if(index.EQ.7) then - call cqm10_PhiMuMu(q2,M_V,index) - ff=n_cqm10 - endif - - if(index.GT.7) then - print *,' ' - print *,' subroutine ffs_cqm_PhiMuMu ' - print *, 'Fatal ERROR: index > 7!' - print *,' index =', index - print *,' ' - STOP - endif - - if(index.LT.1) then - print *,' ' - print *,' subroutine ffs_cqm_PhiMuMu ' - print *, 'Fatal ERROR: index < 1!' - print *,' index =', index - print *,' ' - STOP - endif - - n_ffs_cqm=ff - - return - end - - -c *************************************************************** -c * * -c * Form factor g. * -c * For definishion see the paper: * -c * D.Melikhov, N.Nikitin and S.Simula, Phys.Rev.D57, p.6814. * -c * * -c * model -- model for form factor calculations: * -c * model=1-3 CQM-MS (Phys.Rev.D62); * -c * q2 -- the square of transition 4-momentum; * -c * M1 -- the mass of B^0_s -- meson; * -c * M2 -- the mass of \phi^0 -- meson. * -c * * -c *************************************************************** - subroutine myg_PhiMuMu(model,q2,M1,M2) - - COMMON /nikff/ n_g,n_f,n_aplus,n_aminus,n_gplus, - #n_gminus, n_g0,n_B0, n_Bplus - - COMMON /nik5/ n_ffs_cqm, n_cqm9, n_cqm10 - SAVE /nikff/,/nik5/ - - real n_g,n_f,n_aplus,n_aminus,n_gplus ! /nikff/ - real n_gminus, n_g0,n_B0, n_Bplus ! /nikff/ - real n_ffs_cqm, n_cqm9, n_cqm10 ! /nik5/ - - real q2, M1, M2 - integer model - real gg - - gg=0.0 - - call ffs_cqm_PhiMuMu(q2,4) - gg=n_ffs_cqm - gg=gg/(M1+M2) - - if(model.NE.1.AND.model.NE.2.AND.model.NE.3) then - print *,' ' - print *,' subroutine myg_PhiMuMu' - print *,' Fatal ERROR: model not all the same 1,2 or 3!' - print *,' model =', model - print *,' ' - STOP - endif - - n_g=gg - -c print *,' gg =', gg -c print *,' n_g =', n_g -c print *,' END subroutine myg ' -c print *,' ' - - return - end - - - -c ************************************************************** -c * * -c * Form factor f. * -c * For definishion see the paper: * -c * D.Melikhov, N.Nikitin and S.Simula, Phys.Rev.D57, p.6814. * -c * * -c * model -- model for form factor calculations: * -c * model=1-3 CQM-MS (Phys.Rev.D62); * -c * q2 -- the square of transition 4-momentum; * -c * M1 -- the mass of B^0_s -- meson; * -c * M2 -- the mass of \phi^0 -- meson. * -c * * -c ************************************************************** - subroutine myf_PhiMuMu(model, q2, M1, M2) - - COMMON /nikff/ n_g,n_f,n_aplus,n_aminus,n_gplus, - #n_gminus, n_g0,n_B0, n_Bplus - - COMMON /nik5/ n_ffs_cqm, n_cqm9, n_cqm10 - SAVE /nikff/,/nik5/ - - real n_g,n_f,n_aplus,n_aminus,n_gplus - real n_gminus, n_g0,n_B0, n_Bplus - real n_ffs_cqm, n_cqm9, n_cqm10 - - real q2, M1, M2, ff - integer model - - ff=0.0 - - call ffs_cqm_PhiMuMu(q2,1) - ff=n_ffs_cqm - ff=ff*(M1+M2) - - if(model.NE.1.AND.model.NE.2.AND.model.NE.3) then - print *,' ' - print *,' subroutine myf_PhiMuMu' - print *,' Fatal ERROR: model not all the same 1,2 or 3!' - print *,' model =', model - print *,' ' - STOP - endif - - n_f = ff - - return - end - - - -c *************************************************************** -c * * -c * Form factor a_+. * -c * For definishion see the paper: * -c * D.Melikhov, N.Nikitin and S.Simula, Phys.Rev.D57, p.6814. * -c * * -c * model -- model for form factor calculations: * -c * model=1-3 CQM-MS (Phys.Rev.D62); * -c * q2 -- the square of transition 4-momentum; * -c * M1 -- the mass of B^0_s -- meson; * -c * M2 -- the mass of \phi^0 -- meson. * -c * * -c *************************************************************** - subroutine myaplus_PhiMuMu(model,q2,M1,M2) - - COMMON /nikff/ n_g,n_f,n_aplus,n_aminus,n_gplus, - #n_gminus, n_g0,n_B0, n_Bplus - - COMMON /nik5/ n_ffs_cqm, n_cqm9, n_cqm10 - SAVE /nikff/,/nik5/ - - real n_g,n_f,n_aplus,n_aminus,n_gplus - real n_gminus, n_g0,n_B0, n_Bplus - real n_ffs_cqm, n_cqm9, n_cqm10 - - real q2, M1, M2, aaplus - integer model - - aaplus=0.0 - - call ffs_cqm_PhiMuMu(q2,2) - aaplus=n_ffs_cqm - aaplus=(-aaplus)/(M1+M2) - - if(model.NE.1.AND.model.NE.2.AND.model.NE.3) then - print *,' ' - print *,' subroutine myaplus_PhiMuMu ' - print *,' Fatal ERROR: model not all the same 1,2 or 3!' - print *,' model =', model - print *,' ' - STOP - endif - - n_aplus=aaplus - - return - end - - - -c *************************************************************** -c * * -c * Form factor a_-. * -c * For definishion see the paper: * -c * D.Melikhov, N.Nikitin and S.Simula, Phys.Rev.D57, p.6814. * -c * * -c * model -- model for form factor calculations: * -c * model=1-3 CQM-MS (Phys.Rev.D62); * -c * q2 -- the square of transition 4-momentum; * -c * M1 -- the mass of B^0_s -- meson; * -c * M2 -- the mass of \phi^0 -- meson. * -c * * -c *************************************************************** - subroutine myaminus_PhiMuMu(model,q2,M1,M2) - - COMMON /nikff/ n_g,n_f,n_aplus,n_aminus,n_gplus, - #n_gminus, n_g0,n_B0, n_Bplus - - COMMON /nik5/ n_ffs_cqm, n_cqm9, n_cqm10 - SAVE /nikff/,/nik5/ - - real n_g,n_f,n_aplus,n_aminus,n_gplus - real n_gminus, n_g0,n_B0, n_Bplus - real n_ffs_cqm, n_cqm9, n_cqm10 - - real q2, M1, M2 - integer model - real aaminus, a1, a2, a3 - - aaminus=0.0 - - call ffs_cqm_PhiMuMu(q2,3) - a1=n_ffs_cqm - call ffs_cqm_PhiMuMu(q2,1) - a2=n_ffs_cqm - call ffs_cqm_PhiMuMu(q2,2) - a3=n_ffs_cqm - aaminus=2.0*M2*a1-(M1+M2)*a2 - aaminus=aaminus+(M1-M2)*a3 - aaminus=aaminus/q2 - - if(model.NE.1.AND.model.NE.2.AND.model.NE.3) then - print *,' ' - print *,' subroutine myaminus_PhiMuMu ' - print *,' Fatal ERROR: model not all the same 1,2 or 3!' - print *,' model =', model - print *,' ' - STOP - endif - - n_aminus=aaminus - - return - end - - - -c *************************************************************** -c * * -c * Form factor g_+. * -c * For definishion see the paper: * -c * D.Melikhov, N.Nikitin and S.Simula, Phys.Rev.D57, p.6814. * -c * * -c * model -- model for form factor calculations: * -c * model=1-3 CQM-MS (Phys.Rev.D62); * -c * q2 -- the square of transition 4-momentum; * -c * M1 -- the mass of B^0_s -- meson; * -c * * -c *************************************************************** - subroutine mygplus_PhiMuMu(model,q2,M1) - - COMMON /nikff/ n_g,n_f,n_aplus,n_aminus,n_gplus, - #n_gminus, n_g0,n_B0, n_Bplus - - COMMON /nik5/ n_ffs_cqm, n_cqm9, n_cqm10 - SAVE /nikff/,/nik5/ - - real n_g,n_f,n_aplus,n_aminus,n_gplus - real n_gminus, n_g0,n_B0, n_Bplus - real n_ffs_cqm, n_cqm9, n_cqm10 - - real q2, M1, ggplus - integer model - - ggplus=0.0 - - call ffs_cqm_PhiMuMu(q2,5) - ggplus=-n_ffs_cqm - - if(model.NE.1.AND.model.NE.2.AND.model.NE.3) then - print *,' ' - print *,' subroutine mygplus_PhiMuMu ' - print *,' Fatal ERROR: model not all the same 1,2 or 3!' - print *,' model =', model - print *,' ' - STOP - endif - - n_gplus=ggplus - - return - end - - - -c *************************************************************** -c * * -c * Form factor g_-. * -c * For definishion see the paper: * -c * D.Melikhov, N.Nikitin and S.Simula, Phys.Rev.D57, p.6814. * -c * * -c * model -- model for form factor calculations: * -c * model=1-3 CQM-MS (Phys.Rev.D62); * -c * q2 -- the square of transition 4-momentum; * -c * M1 -- the mass of B^0_s -- meson; * -c * M2 -- the mass of \phi^0 -- meson. * -c * * -c *************************************************************** - subroutine mygminus_PhiMuMu(model,q2,M1,M2) - - COMMON /nikff/ n_g,n_f,n_aplus,n_aminus,n_gplus, - #n_gminus, n_g0,n_B0, n_Bplus - - COMMON /nik5/ n_ffs_cqm, n_cqm9, n_cqm10 - SAVE /nikff/,/nik5/ - - real n_g,n_f,n_aplus,n_aminus,n_gplus - real n_gminus, n_g0,n_B0, n_Bplus - real n_ffs_cqm, n_cqm9, n_cqm10 - - real q2, M1, M2, ggminus - integer model - real gm1, gm2 - - ggminus=0.0 - - call ffs_cqm_PhiMuMu(q2,5) - gm1=n_ffs_cqm - call ffs_cqm_PhiMuMu(q2,6) - gm2=n_ffs_cqm - ggminus=gm1-gm2 - ggminus=ggminus*(M1**2-M2**2)/q2 - - if(model.NE.1.AND.model.NE.2.AND.model.NE.3) then - print *,' ' - print *,' subroutine mygminus_PhiMuMu' - print *,' Fatal ERROR: model not all the same 1,2 or 3!' - print *,' model =', model - print *,' ' - STOP - endif - - n_gminus=ggminus - - return - end - - - -c **************************************************************** -c * * -c * Form factor h=g_0. * -c * For definishion see the paper: * -c * D.Melikhov, N.Nikitin and S.Simula, Phys.Rev.D57, p.6814. * -c * * -c * model -- model for form factor calculations: * -c * model=1-3 CQM-MS (Phys.Rev.D62); * -c * q2 -- the square of transition 4-momentum; * -c * M1 -- the mass of B_s -- meson; * -c * M2 -- the mass of \phi^0 -- meson. * -c * * -c **************************************************************** - subroutine myh_PhiMuMu(model, q2, M1, M2) - - COMMON /nikff/ n_g,n_f,n_aplus,n_aminus,n_gplus, - #n_gminus, n_g0,n_B0, n_Bplus - - COMMON /nik5/ n_ffs_cqm, n_cqm9, n_cqm10 - SAVE /nikff/,/nik5/ - - real n_g,n_f,n_aplus,n_aminus,n_gplus - real n_gminus, n_g0,n_B0, n_Bplus - real n_ffs_cqm, n_cqm9, n_cqm10 - - real q2, M1, M2, gg0 - integer model - real gg01, gg02, gg03 - - gg0=0.0 - - call ffs_cqm_PhiMuMu(q2,5) - gg01=n_ffs_cqm - call ffs_cqm_PhiMuMu(q2,6) - gg02=n_ffs_cqm - call ffs_cqm_PhiMuMu(q2,7) - gg03=n_ffs_cqm - gg0=(gg01-gg02)/q2 - gg0=gg0-gg03/(M1**2-M2**2) - gg0=2.0*gg0 - - if(model.NE.1.AND.model.NE.2.AND.model.NE.3) then - print *,' ' - print *,' subroutine myh_PhiMuMu' - print *,' Fatal ERROR: model not all the same 1,2 or 3!' - print *,' model =', model - print *,' ' - STOP - endif - - n_g0=gg0 - - return - end - - - -c **************************************************************** -c * * -c * Combination of the different form factors B_0. * -c * For definishion see the paper: * -c * D.Melikhov, N.Nikitin and S.Simula, Phys.Rev.D57, p.6814. * -c * * -c * model -- model for form factor calculations: * -c * model=1-3 CQM-MS (Phys.Rev.D62); * -c * q2 -- the square of transition 4-momentum; * -c * M1 -- the mass of B_s - meson; * -c * M2 -- the mass of \phi^0 - meson. * -c * * -c **************************************************************** - subroutine myB0_PhiMuMu(model, q2, M1, M2) - - COMMON /nikff/ n_g,n_f,n_aplus,n_aminus,n_gplus, - #n_gminus, n_g0,n_B0, n_Bplus - SAVE /nikff/ - - real n_g,n_f,n_aplus,n_aminus,n_gplus - real n_gminus, n_g0,n_B0, n_Bplus - - real q2, M1, M2, BB0 - integer model - real hat_s, hat_r - real BB01, BB02 - - hat_s=q2/M1**2 - hat_r=(M2/M1)**2 - - call mygplus_PhiMuMu(model,q2,M1) - BB01=n_gplus - call mygminus_PhiMuMu(model,q2,M1,M2) - BB02=n_gminus - - BB0=BB01+hat_s*BB02/(1.0-hat_r) - - n_B0=BB0 - - return - end - - - - -c **************************************************************** -c * * -c * Combination of the different form factors B_+. * -c * For definishion see the paper: * -c * D.Melikhov, N.Nikitin and S.Simula, Phys.Rev.D57, p.6814. * -c * * -c * model -- model for form factor calculations: * -c * model=1-3 CQM-MS (Phys.Rev.D62); * -c * q2 -- the square of transition 4-momentum; * -c * M1 -- the mass of B_s - meson; * -c * M2 -- the mass of \phi^0 - meson. * -c * * -c **************************************************************** - subroutine myBplus_PhiMuMu(model, q2, M1, M2) - - COMMON /nikff/ n_g,n_f,n_aplus,n_aminus,n_gplus, - #n_gminus, n_g0,n_B0, n_Bplus - SAVE /nikff/ - - real n_g,n_f,n_aplus,n_aminus,n_gplus - real n_gminus, n_g0,n_B0, n_Bplus - - real q2, M1, M2, BBplus - real BBplus1, BBplus2 - integer model - real hat_s - - hat_s=q2/M1**2 - call myh_PhiMuMu(model,q2,M1,M2) - BBplus1=n_g0 - call mygplus_PhiMuMu(model,q2,M1) - BBplus2=n_gplus - - BBplus=0.5*hat_s*(M1**2)*BBplus1 - BBplus=BBplus+BBplus2 - BBplus=-BBplus - - n_Bplus=BBplus - - return - end - diff --git a/Generators/PythiaB/src/formfactors_b2gmm.F b/Generators/PythiaB/src/formfactors_b2gmm.F deleted file mode 100644 index b18fe8b21707982c5a963be8c56c67224a71fd2c..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/src/formfactors_b2gmm.F +++ /dev/null @@ -1,488 +0,0 @@ -c 02.07.2003 08.07.2003 09.12.2003 -c 17.02.2004 19.02.2004 28.03.2004 -c 29.03.2004 30.03.2004 06.05.2004 -c 17.05.2004 07.06.2004 08.06.2004 -c 03.08.2004 13.08.2004 - - -c ********************************************************************* -c ********************************************************************* -c ** ** -c ** THE FORM FACTORS FOR B^0_{d,s}\to\gamma\mu^+\mu^- CALCULATIONS ** -c ** ** -c ** ** -c ** Version 1.06 ** -c ** ** -c ********************************************************************* -c ********************************************************************* - - - -c *************************************************************** -c * * -c * From q^2 to E_{\gamma} in B-meson rest frame recalculation * -c * * -c * by F.Kruger and D.Melikhov, Phys.rev.D67, 034002 (2003); * -c * see the formula (14) * -c * * -c *************************************************************** - subroutine q2toEg(q2) - - COMMON /nikff2/ n_Eg, n_ffs_cqm - COMMON /nik2/ n_M1, n_M2, n_mt, n_Mw, n_ml - - real n_Eg, n_ffs_cqm ! /nikff2/ - real n_M1, n_M2, n_mt, n_Mw, n_ml ! /nik2/ - real q2, Eg, M1 - - M1=n_M1 - - Eg=M1*(1.0-q2/(M1**2))/2.0 - - n_Eg=Eg - - return - end - - -c *************************************************************** -c * * -c * The form factors parametrisation * -c * by F.Kruger and D.Melikhov, Phys.rev.D67, 034002 (2003); * -c * see the aproximation formula (28). * -c * * -c * * -c * q2 - the square of transition 4-momentum; * -c * index - the index of form factors: * -c * index=0 - f_B; * -c * index=1 - F_V; * -c * index=2 - F_{TV}; * -c * index=3 - F_A; * -c * index=4 - F_{TA}. * -c * * -c *************************************************************** - subroutine ffs_cqm_km_gmm(q2,index) - - dimension kmbeta(4), kmdelta(4) - - COMMON /nikff2/ n_Eg, n_ffs_cqm - - real n_Eg, n_ffs_cqm ! /nikff2/ - real q2, Eg, cqm_km - real fB, MB - real kmbeta, kmdelta - integer index - - kmbeta(1)=0.28 - kmbeta(2)=0.30 - kmbeta(3)=0.26 - kmbeta(4)=0.33 - - kmdelta(1)=0.04 - kmdelta(2)=0.04 - kmdelta(3)=0.30 - kmdelta(4)=0.30 - - fB=0.2 ! GeV - MB=5.28 ! GeV - - call q2toEg(q2) - Eg=n_Eg - - if(index.EQ.0) then - n_ffs_cqm=fB ! f_B > 0 !!!! - else - cqm_km=kmbeta(index)*fB*MB/(kmdelta(index)+Eg) - n_ffs_cqm=cqm_km - endif - - return - end - - -c *************************************************************** -c * * -c * frho - the constant of the decay \rho^0\to e^+e^- * -c * * -c *************************************************************** - subroutine subfrho() - - COMMON /nikff2/ n_Eg, n_ffs_cqm - - real n_Eg, n_ffs_cqm ! /nikff2/ - real alpha_em, pi, Mrho, Gam - - alpha_em=1.0/137.0 - pi=3.1415 - Mrho=770000.0 ! KeV - the mass of the \rho^0-meson - Gam=6.77 ! KeV the width of the decay \rho\to e^+e^- - - n_ffs_cqm=sqrt(4.0*pi*Mrho*(alpha_em**2)/(3.0*Gam)) - -c print *,' f_{rho} =', n_ffs_cqm - - return - end - -c *************************************************************** -c * * -c * fomg - the constant of the decay \omega\to e^+e^- * -c * * -c *************************************************************** - subroutine subfomg() - - COMMON /nikff2/ n_Eg, n_ffs_cqm - - real n_Eg, n_ffs_cqm ! /nikff2/ - real alpha_em, pi, Momg, Gam - - alpha_em=1.0/137.0 - pi=3.1415 - Momg=782000.0 ! KeV - the mass of the \omega-meson - Gam=0.60 ! KeV the width of the decay \rho\to e^+e^- - - n_ffs_cqm=alpha_em*sqrt(4.0*pi*Momg/(3.0*Gam)) - -c print *,' f_{rho} =', n_ffs_cqm - - return - end - - -c *************************************************************** -c * * -c * fphi - the constant of the decay \phi\to e^+e^- * -c * * -c *************************************************************** - subroutine subfphi() - - COMMON /nikff2/ n_Eg, n_ffs_cqm - - real n_Eg, n_ffs_cqm ! /nikff2/ - real alpha_em, pi, Mphi, Gam - - alpha_em=1.0/137.0 - pi=3.1415 - Mphi=1019.4 ! MeV - the mass of the \phi-meson - Gam=4.46*2.9/10000.0 ! MeV the width of the decay \phi\to e^+e^- - - n_ffs_cqm=alpha_em*sqrt(4.0*pi*Mphi/(3.0*Gam)) - -c print *,' f_{phi} =', n_ffs_cqm - - return - end - - - -c *************************************************************** -c * * -c * The REAL part of F_{TV} form-factor * -c * * -c *************************************************************** - subroutine SubReTildeFtv(q2,qm2) - - COMMON /nik1/ n_model, n_res_swch, n_ias, n_Nf - COMMON /nik2/ n_M1, n_M2, n_mt, n_Mw, n_ml - COMMON /nikff2/ n_Eg, n_ffs_cqm - COMMON /nikffreim/ n_ReTildeFtv, n_ImTildeFtv, n_ReTildeFta, n_ImTildeFta - COMMON /nikwc/ n_as, n_c1, n_c2, n_c3, n_c4, n_c5, n_c6, n_c7 - SAVE /nik1/,/nik2/,/nikff2/,/nikffreim/,/nikwc/ - - integer n_model, n_res_swch, n_ias, n_Nf ! /nik1/ - real n_M1, n_M2, n_mt, n_Mw, n_ml ! /nik2/ - real n_Eg, n_ffs_cqm ! /nikff2/ - real n_ReTildeFtv, n_ImTildeFtv, n_ReTildeFta, n_ImTildeFta ! /nikffreim/ - real n_as, n_c1, n_c2, n_c3, n_c4, n_c5, n_c6, n_c7 ! /nikwc/ - - integer ias, Nf - real mt, Mw, mu, M1 - real q2, qm2 - real c1, c2, a2, c7, RR, RRes - real Ftv, Ftv0, Mres, fres, Gres, Wres, fB, gplus, Qu, WA - -c print *, ' In subroutine SubReTildeFtv(q2,qm2) ' - - M1=n_M1 ! GeV the mass of the B-meson (B^0_d or B^0_s) - mu=qm2 ! Gev the mass of the b-quark - Mw=n_Mw - mt=n_mt - Nf=n_Nf - ias=n_ias - - RR=0.0 - RRes=0.0 - - if(M1.EQ.5.28) then -c print *,'B^0_d - meson decay ' - call ffs_cqm_km_gmm(q2,0) - fB=-n_ffs_cqm ! t.k. v formulah predpolagaetsia, chto fB < 0 !!! -c print *, ' fB =', fB - - gplus=-0.27 ! g_+ = -T1, sm. PRD62, 014006, 2000, p.014006-8 -c print *, ' gplus =', gplus - - Qu=2./3. ! zarad u-quarka - -c........\rho^0 - Mres=0.77 ! Gev the mass of rho^0-meson - Gres=0.151 ! GeV Polnaya shirina raspada \rho^0-mesona - Wres=(-1.0)/sqrt(2.0) ! izotopicheskiy ves d\bar d v \rho^0-mezone - call subfrho() - fres=n_ffs_cqm - RR=1.0/((q2-Mres**2)**2+(Mres*Gres)**2) - RRes=gplus*Wres*q2*(q2-Mres**2)*RR/fres -c print *, ' fres =', fres, ' RRes =', RRes - -c........\omega - Mres=0.782 ! Gev the mass of \omega-meson - Gres=0.00844 ! GeV Polnaya shirina raspada \omega-mesona - Wres=1.0/sqrt(2.0) ! izotopicheskiy ves d\bar d v \omega-mezone - call subfomg() - fres=n_ffs_cqm - RR=1.0/((q2-Mres**2)**2+(Mres*Gres)**2) - RRes=RRes+gplus*Wres*q2*(q2-Mres**2)*RR/fres -c print *, ' fres =', fres, ' RRes =', RRes - endif - - if(M1.EQ.5.37) then -c print *,'B^0_s - meson decay ' - call ffs_cqm_km_gmm(q2,0) - fB=-n_ffs_cqm ! t.k. v formulah predpolagaetsia, chto fB < 0 !!! -c print *, ' fB =', fB - - gplus=-0.38 ! g_+ = -T1, sm. PRD62, 014006, 2000, p.014006-11 -c print *, ' gplus =', gplus - - Qu=0.0 ! zarad u-quarka, t.e. vklad otsutstvuet!!! - - Mres=1.020 ! Gev the mass of \phi-meson - Gres=0.0045 ! GeV Polnaya shirina raspada \phi-mesona - Wres=-1.0 ! izotopicheskiy ves s\bar s v \phi-mezone - call subfphi() - fres=n_ffs_cqm - RR=1.0/((q2-Mres**2)**2+(Mres*Gres)**2) - RRes=gplus*Wres*q2*(q2-Mres**2)*RR/fres - endif - -c......F_{TV}(q^2) - call ffs_cqm_km_gmm(q2,2) - Ftv=n_ffs_cqm -c......F_{TV}(0) - call ffs_cqm_km_gmm(0.0,2) - Ftv0=n_ffs_cqm - - call myC1(mu,Mw,Nf,ias) - c1=n_c1 - call myC2(mu,Mw,Nf,ias) - c2=n_c2 - a2=c1+c2/3.0 ! t.k. v programme scheta koefficientov opr.: c1=-0,24, c2=1,1 - call myC7gamma(mu,Mw,mt,Nf,ias) - c7=n_c7 -c print *, ' c1 =', c1, ' c2 =', c2, ' a2 =', a2, ' c7 =', c7 - -c weak annihilation - WA=4.0*3.0*a2*(Qu**2)*fB/(c7*qm2) - -c prinato, chto dlia B^0_d\to\ro^0: V_{ub}V^*_{ud}/V_{tb}V^*_{td}=1 -c print *,' ' - n_ReTildeFtv=Ftv+Ftv0+WA-2.0*RRes -c print *, ' n_ReTildeFtv =', n_ReTildeFtv -c print *,' ' - - return - end - - -c *************************************************************** -c * * -c * The IMAGINARY part of F_{TV} form-factor * -c * * -c *************************************************************** - subroutine SubImTildeFtv(q2,qm2) - - COMMON /nik2/ n_M1, n_M2, n_mt, n_Mw, n_ml - COMMON /nikff2/ n_Eg, n_ffs_cqm - COMMON /nikffreim/ n_ReTildeFtv, n_ImTildeFtv, n_ReTildeFta, n_ImTildeFta - SAVE /nik2/,/nikff2/,/nikffreim/ - - real n_M1, n_M2, n_mt, n_Mw, n_ml ! /nik2/ - real n_Eg, n_ffs_cqm ! /nikff2/ - real n_ReTildeFtv, n_ImTildeFtv, n_ReTildeFta, n_ImTildeFta ! /nikffreim/ - - - real q2, qm2 - real II - real Mres, fres, Wres, gplus, Gres, M1 - -c print *,' subroutine SubImTildeFtv(q2,qm2) ' - - M1=n_M1 - - if(M1.EQ.5.28) then -c print *,'B^0_d - meson decay ' - - call ffs_cqm_km_gmm(q2,0) - fB=-n_ffs_cqm ! t.k. v formulah predpolagaetsia, chto fB < 0 !!! -c print *, ' fB =', fB - - gplus=-0.27 ! g_+ = -T1, sm. PRD62, 014006, 2000, p.014006-8 -c print *, ' gplus =', gplus - -c........\rho^0 - Mres=0.77 ! Gev the mass of rho^0-meson - Gres=0.151 ! GeV Polnaya shirina raspada \rho^0-mesona - Wres=(-1.0)/sqrt(2.0) ! izotopicheskiy ves d\bar d v \rho^0-mezone - call subfrho() - fres=n_ffs_cqm -c print *, ' fres =', fres - II=1.0/((q2-Mres**2)**2+(Mres*Gres)**2) - n_ImTildeFtv=2.0*gplus*Wres*q2*Mres*Gres*II/fres - -c........\omega - Mres=0.782 ! Gev the mass of \omega-meson - Gres=0.00844 ! GeV Polnaya shirina raspada \omega-mesona - Wres=1.0/sqrt(2.0) ! izotopicheskiy ves d\bar d v \omega-mezone - call subfomg() - fres=n_ffs_cqm -c print *, ' fres =', fres - II=1.0/((q2-Mres**2)**2+(Mres*Gres)**2) - n_ImTildeFtv=n_ImTildeFtv+2.0*gplus*Wres*q2*Mres*Gres*II/fres - endif - - if(M1.EQ.5.37) then -c print *,'B^0_s - meson decay ' - Mres=1.020 ! Gev the mass of phi-meson - Gres=0.0045 ! GeV Polnaya shirina raspada \rho^0-mesona - Wres=-1.0 ! izotopicheskiy ves s\bar s v \phi-mezone - - call ffs_cqm_km_gmm(q2,0) - fB=-n_ffs_cqm ! t.k. v formulah predpolagaetsia, chto fB < 0 !!! -c print *, ' fB =', fB - - call subfphi() - fres=n_ffs_cqm -c print *, ' fres =', fres - - gplus=-0.38 ! g_+ = -T1, sm. PRD62, 014006, 2000, p.014006-11 -c print *, ' gplus =', gplus - - II=1.0/((q2-Mres**2)**2+(Mres*Gres)**2) - n_ImTildeFtv=2.0*gplus*Wres*q2*Mres*Gres*II/fres - endif - -c print *, q2, II, Mres, Gres, gplus, fres - -c print *,' SubImTildeFtv(q2,qm2) =', n_ImTildeFtv - - return - end - - -c *************************************************************** -c * * -c * The REAL part of F_{TA} form-factor * -c * * -c *************************************************************** - subroutine SubReTildeFta(q2,qm2) - - COMMON /nik2/ n_M1, n_M2, n_mt, n_Mw, n_ml - COMMON /nikff2/ n_Eg, n_ffs_cqm - COMMON /nikffreim/ n_ReTildeFtv, n_ImTildeFtv, n_ReTildeFta, n_ImTildeFta - SAVE /nik2/,/nikff2/,/nikffreim/ - - real n_M1, n_M2, n_mt, n_Mw, n_ml ! /nik2/ - real n_Eg, n_ffs_cqm ! /nikff2/ - real n_ReTildeFtv, n_ImTildeFtv, n_ReTildeFta, n_ImTildeFta ! /nikffreim/ - - - real q2, qm2 - real Fta, Fta0, RR, RRes - real Mres, fres, Wres, gplus, Gres, M1 - - M1=n_M1 ! GeV the mass of the B-meson (B^0_d or B^0_s) - - if(M1.EQ.5.28) then -c print *,'B^0_d - meson decay ' - call ffs_cqm_km_gmm(q2,0) - fB=-n_ffs_cqm ! t.k. v formulah predpolagaetsia, chto fB < 0 !!! -c print *, ' fB =', fB - - gplus=-0.27 ! g_+ = -T1, sm. PRD62, 014006, 2000, p.014006-8 -c print *, ' gplus =', gplus - - Mres=0.77 ! Gev the mass of rho^0-meson - Gres=0.151 ! GeV Polnaya shirina raspada \rho^0-mesona - Wres=(-1.0)/sqrt(2.0) ! izotopicheskiy ves d\bar d v \rho^0-mezone - call subfrho() - fres=n_ffs_cqm -c print *, ' fres =', fres - RR=1.0/((q2-Mres**2)**2+(Mres*Gres)**2) - RRes=gplus*Wres*q2*(q2-Mres**2)*RR/fres - - Mres=0.782 ! Gev the mass of \omega-meson - Gres=0.00844 ! GeV Polnaya shirina raspada \omega-mesona - Wres=1.0/sqrt(2.0) ! izotopicheskiy ves d\bar d v \omega-mezone - call subfomg() - fres=n_ffs_cqm -c print *, ' fres =', fres - RR=1.0/((q2-Mres**2)**2+(Mres*Gres)**2) - RRes=RRes+gplus*Wres*q2*(q2-Mres**2)*RR/fres - endif - - if(M1.EQ.5.37) then -c print *,'B^0_s - meson decay ' - call ffs_cqm_km_gmm(q2,0) - fB=-n_ffs_cqm ! t.k. v formulah predpolagaetsia, chto fB < 0 !!! -c print *, ' fB =', fB - - call subfphi() - fres=n_ffs_cqm -c print *, ' fres =', fres - - gplus=-0.38 ! g_+ = -T1, sm. PRD62, 014006, 2000, p.014006-11 -c print *, ' gplus =', gplus - - Mres=1.020 ! Gev the mass of \phi-meson - Gres=0.0045 ! GeV Polnaya shirina raspada \phi-mesona - Wres=-1.0 ! izotopicheskiy ves s\bar s v \phi-mezone - RR=1.0/((q2-Mres**2)**2+(Mres*Gres)**2) - RRes=gplus*Wres*q2*(q2-Mres**2)*RR/fres - endif - -c......F_{TA}(q^2) - call ffs_cqm_km_gmm(q2,4) - Fta=n_ffs_cqm -c......F_{TA}(0) - call ffs_cqm_km_gmm(0.0,4) - Fta0=n_ffs_cqm - - n_ReTildeFta=Fta+Fta0-2.0*RRes - -c print *, ' n_ReTildeFta =', n_ReTildeFta - - return - end - - -c *************************************************************** -c * * -c * The IMAGINARY part of F_{TA} form-factor * -c * * -c *************************************************************** - subroutine SubImTildeFta(q2,qm2) - - COMMON /nikffreim/ n_ReTildeFtv, n_ImTildeFtv, n_ReTildeFta, n_ImTildeFta - SAVE /nikffreim/ - - real n_ReTildeFtv, n_ImTildeFtv, n_ReTildeFta, n_ImTildeFta ! /nikffreim/ - real q2, qm2 - - call SubImTildeFtv(q2,qm2) - - n_ImTildeFta=n_ImTildeFtv - -c print *, ' n_ImTildeFta =', n_ImTildeFta - - return - end diff --git a/Generators/PythiaB/src/matrix_and_kinematics_KstMuMu.F b/Generators/PythiaB/src/matrix_and_kinematics_KstMuMu.F deleted file mode 100644 index e033dd9755627394fa2261896ac793c35887ff76..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/src/matrix_and_kinematics_KstMuMu.F +++ /dev/null @@ -1,791 +0,0 @@ -c ************************************************************************* -c ************************************************************************* -c ** ** -c ** The Monte-Karlo PYTHIA generator for the decay ** -c ** ** -c ** B^0\to (K^{*0}\to K^+\pi^-)\mu^+\mu^- ** -c ** ** -c ** for Athena 12.0.4 PythiaBModule ** -c ** ** -c ** V JobOptions - file trebuetsia nastroyka: ** -c ** c...... 887 channel replaced to the decay B^0_d\to K^{0*}\mu^+\mu^- ** -c ** mdme(887,1) = 1 ** -c ** kfdp(887,1) = 13 ! \mu^- ** -c ** kfdp(887,2) = -13 ! \mu^+ ** -c ** kfdp(887,3) = 313 ! K^{0*} ** -c ** kfdp(887,4) = 0 ** -c ** kfdp(887,5) = 0 ** -c ** brat(887) = DBLE(1.0) ** -c ** ** -c ** The last modification: 10.10.2006 ** -c ** ** -c ** Authors: Nickolai Nikitine, nnikit@mail.cern.ch ** -c ** ** -c ************************************************************************* -c ************************************************************************* -c -c ******************************************************************* -c * * -c * subroutine MATRIX_and_KINEMATICS_KstMuMu * -c * Version 1.05f * -c * * -c * For the calculation the decay kinematic according to the * -c * decay matrix element M2fortran(...) in FORTRAN * -c * file matrix_for_fortran_v103.F * -c * * -c * * -c * The parameters of the MATRIX_and_KINEMATICS: * -c * * -c * jkf - line number of B-meson in the common block PYJETS. * -c * * -c ******************************************************************* - - subroutine MATRIX_and_KINEMATICS_KstMuMu (jkf) - -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) -c INTEGER PYK,PYCHGE,PYCOMP - INTEGER PYCOMP - -c......Standard COMMON blocs - - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) - COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5) - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) - COMMON/PYINT1/MINT(400),VINT(400) - COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2) - COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3) - COMMON/PYUPPR/NUP,KUP(20,7),NFUP,IFUP(10,2),PUP(20,5),Q2UP(0:10) - - - SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/ - SAVE /PYPARS/,/PYINT1/,/PYINT2/,/PYINT5/,/PYUPPR/ -*KEEP,BTREE. - common/btree/ntree,tree(4000) - integer tree - SAVE /btree/ -*KEND. -c SAVE IFIRST,IIPRNT -c DATA IFIRST /1/ -c DATA IIPRNT /0/ -*KEEP,FAMILY. - name_self(I)=K(I,2) - name_selv(I)=abs(K(I,2)) - name_father(I)=K(K(I,3),2) - name_grandpa(I)=K(K(K(I,3),3),2) - name_daughter1(I)=K(K(I,4),2) - name_daughter2(I)=K(K(I,5),2) - - link_self(I)=I - link_father(I)=K(I,3) - link_grandpa(I)=K(K(I,3),3) - link_daughter1(I)=K(I,4) - link_daughter2(I)=K(I,5) -*KEND. - -c......My COMMON blocs - - COMMON /nik1/ n_model, n_res_swch, n_ias, n_Nf - COMMON /nik2/ n_M1, n_M2, n_mt, n_Mw, n_ml - COMMON /nik4/ n_beta1, n_beta2, n_dV, n_Matrix2 - SAVE /nik1/,/nik2/,/nik4/ - -c......Begine of the variables declaration - -c......double precision velocity ov B-meson in LS - double precision vxb, vyb, vzb - -c......The value of the returned matrix elemet for -c .the m2fortran_KstMuMu(...) function - real Matrix_element - -c......The COMMON blocs parameters - integer n_model, n_res_swch, n_ias, n_Nf ! /nik1/ - real n_M1, n_M2, n_mt, n_Mw, n_ml ! /nik2/ - integer model, res_swch, ias, Nf - real M1, M2, mt, Mw, ml - real n_beta1, n_beta2, n_dV, n_Matrix2 ! /nik4/ - -c......Decay weight and random mass for VIRTUAL K^* meson (in GeV) - real MM2, sm2min, sm2max, bwmm2 - -c......The Mandelstam variables - real s, t - -c......The Mandelstam variables/M_1^2 - real hat_s, hat_t - -c......The boundary of the mandelstam variables - real s_min, s_max - -c......Kinematics weight of the accepted event - double precision weight - -c......The kinematical variables -c . -c .PB - B-meson -c .P1 - \ell^+ -c .P2 - \ell^- -c .P3 - K^* -c . -c...... (E, p_x, p_y, p_z) - double precision PB(4), P1(4), P2(4), P3(4) - -c......The angle between K^* and \ell^- directions in RF of B-meson: -c .\cos\theta_{23} - double precision cos23 - -c......The absolute values for 3-momentum of K^* and \ell^{pm} - double precision modP1, modP2, modP3 - -c......Tthe rotation angles - real phi2, theta1, phi1 - -c......The rotation matrix - double precision M(4,4) - -c......The randomase variable - real rend - -c......Numbers of the lines for K^*, \mu^+ and \mu^- - integer kline, mpline, mmline - -c......For vertex sconservetion after "call pyrobo(...)" - double precision vk(5), vmp(5), vmm(5) - -c......The counters for the accept/reject -c .of the matrix element - integer me_tot, me_accept - -c......End of the variable declarations -c .and start of the simulation program - - go to 100 - -c......The errors information and program terminate -110 print *,'Fatal ERROR: Matrix_element < 0 or - # Matrix_element > 1 ' - print *,'Matrix_element =', Matrix_element - print *,'hat_t_min =', t_min/M1**2, - #' hat_t =', hat_t, - #' hat_t_max =', t_max/M1**2, - #' hat_s =', hat_s, - #' hat_s_min =', s_min/M1**2, - #' hat_s_max =', s_max/M1**2, - #' G =', weight, - #' M1 =', M1,' M2 =', M2, - #' MM2 =', MM2, ' ml =', ml - print *, 'By!' - STOP -120 print *,'Fatal ERROR: s_min > s_max' - print *,'s_min =', s_min, ' s_max =', s_max - print *,' M1 =', M1, ' M2 =', M2, - #' MM2 =', MM2,' ml =', ml - print *, 'By!' - STOP -130 print *,'Fatal ERROR: t_min > t_max' - print *,'t_min =', t_min, ' t_max =', t_max - print *,' M1 =', M1, ' M2 =', M2, - #' MM2 =', MM2,' ml =', ml - print *, 'By!' - STOP -150 print *,'Fatal ERROR: modPi^2 < 0' - print *,'modP1 =', modP1, ' modP2 =', modP2, - #' modP3 =', modP3 - print *,'s =', s, ' t =', t, ' M1 =', M1, - #' M2 =', M2,' MM2 =', MM2, ' ml =', ml - print *, 'By!' - STOP -160 print *,'Fatal ERROR: abs(cos23) > 1' - print *,'cos23 =', cos23 - print *,'modP1 =', modP1, ' modP2 =', modP2, - #' modP3 =', modP3 - print *,'s =', s, ' t =', t, ' M1 =', M1, - #' M2 =', M2,' MM2 =', MM2, ' ml =', ml - print *, 'By!' - STOP -180 print *,'Fatal ERROR: modP2**2-P2(2)**2) < 0' - print *,'s =', s, ' t =', t, ' M1 =', M1, - #' M2 =', M2,' MM2 =', MM2, ' ml =', ml - print *, 'By!' - STOP -500 print *,' ' - print *,'********************************************' - print *,'** **' - print *,'** NO B-MESON DECAY !!! **' - print *,'** **' - print *,'********************************************' - print *,' ' - print *,'jkf =', jkf - print *,'KF = k(jkf,2) =',k(jkf,2) - print *,'k(jkf,3) =',k(jkf,3) - print *,'k(jkf,4) =',k(jkf,4) - print *,'k(jkf,5) =',k(jkf,5) - print *,' ' - print *,'PxB=p(jkf,1) =',p(jkf,1) - print *,'PyB=p(jkf,2) =',p(jkf,2) - print *,'PzB=p(jkf,3) =',p(jkf,3) - print *,' EB=p(jkf,4) =',p(jkf,4) - print *,' MB=p(jkf,5) =',p(jkf,5) - print *,' ' - go to 600 - -c......Start of the generation procedure -100 continue -c print *,' ' -c print *,' In MATRIX_and_KINEMATICS_KstMuMu ' -c print *,' ' - - model=n_model - res_swch=n_res_swch - ias=n_ias - Nf=n_Nf - M1=n_M1 - M2=n_M2 - mt=n_mt - Mw=n_Mw - ml=n_ml - - me_tot=0 - me_accept=0 - -10 continue -c print *,' 10 continue ' - -c print *,' Nf =', Nf -c print *,' M1 =', M1 -c print *,' M2 =', M2 -c print *,' mt =', mt -c print *,' Mw =', Mw -c print *,' ml =', ml - - -c print *,' n_Nf =', n_Nf -c print *,' n_M1 =', n_M1 -c print *,' n_M2 =', n_M2 -c print *,' n_mt =', n_mt -c print *,' n_Mw =', n_Mw -c print *,' n_ml =', n_ml -c print *,' ' - - -c .random virtual K^*-meson mass -c . - sm2min=(M2-5.*0.051)**2 - sm2max=(M2+5.*0.051)**2 -20 continue - rend=PYR(0) - MM2=(sm2max-sm2min)*rend+sm2min - - bwmm2=BW(MM2, 0.051) - rend=PYR(0) -c print *,' before bwmm2: rend =', rend -c print *,' bwmm2 =', bwmm2 - if(rend.GT.bwmm2) goto 20 - MM2=sqrt(MM2) - -c print *,' ' -c print *,' bwmm2 =', bwmm2 -c print *,' rend =', rend -c print *,' M2 =', M2, ' GeV' -c print *,' MM2 =', MM2, ' GeV' -c print *,' ' -c .End the virtual K^*-meson mass generation - - s_min=4.*(ml**2) - s_max=(M1-MM2)**2 - if(s_min.GT.s_max) go to 120 - -c......Chose of the random "s" - rend=PYR(0) - s=(s_max-s_min)*rend+s_min - hat_s=s/M1**2 - - t_min=(MM2+ml)**2 - t_max=(M1-ml)**2 - if(t_min.GT.t_max) go to 130 - -c......Chose of the random "t" - rend=PYR(0) - t=(t_max-t_min)*rend+t_min - hat_t=t/M1**2 - - me_tot=me_tot+1 - -c......Accept or reject this case in (s,t)-plane? - weight=gf(DBLE(s),DBLE(t),DBLE(M1**2), - #DBLE(ml**2),DBLE(ml**2),DBLE(MM2**2)) - if(weight.GT.0.D0) then -c print *,' s =', s, ' t =', t -c print *,' weight =', weight - go to 10 - endif - - - -c ........................................................................... -c ....................................................................... -c .. .. -c .. THE NORMALISE MATRIX ELEMENT .. -c .. for B\to K^* ell^+ell^- decay .. -c .. .. -c .. See the file matrix_for_fortran_v103.F .. -c .. .. -c ....................................................................... -c ....................................................................... -c .. .. -c .. model - switching parametr of the model for form factor .. -c .. calculations: .. -c .. model=1 - CQM-MS (D.Melikhov, B.Stech, Phys.Rev.D62, .. -c .. p.014006, 2000 ), .. -c .. model=2 - LCSR (P.Ball,V.M.Braun, Phys.Rev.D58, .. -c .. p.094016, 1998), .. -c .. model=3 - CQM-MNS (D.Melikhov, N.Nikitin and S.Simula, .. -c .. Phys.Rev.D57, p.6814, 1998); .. -c .. .. -c .. res_swch -- switching parametr: .. -c .. res_swch=0 -- switch OFF the resonant contribution, .. -c .. res_swch=1 -- switch ON the resonant contribution; .. -c .. .. -c .. ias -- switching parametr for for Lms[] .. -c .. in the function As(...): .. -c .. ias = 0 -- Lms=min Lms, .. -c .. ias = 1 -- the mean value, .. -c .. ias = 2 -- Lms=max Lms; .. -c .. .. -c .. hat_s -- q^{2}/M1^{2}=s/M1^{2}; .. -c .. hat_t -- t/M1^{2}; .. -c .. M1 -- mass of the B -- meson, GeV; .. -c .. MM2 -- mass of the VIRTUAL K^* - meson, GeV; .. -c .. mt -- the mass of t-quark, GeV; .. -c .. Mw -- the mass of W-meson, GeV; .. -c .. ml -- the lepton mass, GeV; .. -c .. Nf -- number of "effective" flavours ( Nf=5 for b-quark); .. -c .. the number of the collors = 3; .. -c .. .. -c ....................................................................... -c............................................................................ - call m2fortran_KstMuMu(hat_s, hat_t, MM2) - Matrix_element=n_Matrix2 -c......The errors control - if(Matrix_element.LT.0.0) go to 110 - if(Matrix_element.GT.1.0) go to 110 - -c......Accept or reject this case according matrix element? - rend=PYR(0) - if(rend.GT.Matrix_element) then -c print *,' Matrix_element =', Matrix_element -c print *,' PYR(0) =', rend -c print *,' s =', s, ' t =', t -c print *,' weight =', weight - go to 10 - endif - me_accept=me_accept+1 - -c print *,' ' -c print *,' ' -c print *,'*************************************************' -c print *,'*************************************************' -c print *,'** **' -c print *,'** THE ACCSEPTION OF THE MATRIX ELEMENT **' -c print *,'** **' -c print *,'*************************************************' -c print *,'*************************************************' -c print *,' ' -c print *,'M1 =', M1,' M2 =', M2,' MM2 =', MM2, -c #' ml =', ml -c print *,' ' -c print *,'s =', s,' t =', t -c print *,'s_min =', s_min,' s_max =', s_max -c print *,'t_min(s) =', t_min,' t_max(s) =', t_max -c print *,' ' -c print *,'bwmm2 =', bwmm2 -c print *,'weight =', weight -c print *,'Matrix_element =', Matrix_element -c print *,' ' -c print *,'The number of the total events =', me_tot -c print *,'The number of the accepted events =', me_accept -c print *,'The mumber of the rejected events =', me_tot-me_accept -c print *,' ' - -c......*********************************************************************** -c * * -c * Start of the kinematics bloc * -c * * -c......*********************************************************************** - -c.......Initial configuration in the (X,Y) plane - -c . for B - meson - PB(1)=DBLE(M1) - PB(2)=0.D0 - PB(3)=0.D0 - PB(4)=0.D0 - -c . for K^* - meson - - P3(1)=DBLE((M1**2+MM2**2-s)/(2.*M1)) - P3(2)=DSQRT(P3(1)**2-DBLE(MM2**2)) - P3(3)=0.D0 - P3(4)=0.D0 - modP3=P3(2) - -c . for \ell^+ and \ell^- - P1(1)=DBLE((M1**2+ml**2-t)/(2.*M1)) - P2(1)=DBLE((s+t-MM2**2-ml**2)/(2.*M1)) - - if((P1(1)**2-DBLE(ml**2)).LT.0.D0) go to 150 - if((P2(1)**2-DBLE(ml**2)).LT.0.D0) go to 150 - if((P3(1)**2-DBLE(MM2**2)).LT.0.D0) go to 150 - - modP1=DSQRT(P1(1)**2-DBLE(ml**2)) - modP2=DSQRT(P2(1)**2-DBLE(ml**2)) - -c . \cos\theta_{23} - cos23=DBLE(MM2**2+ml**2+2.*P2(1)*P3(1)-t)/(2.D0*modP2*modP3) - if(DABS(cos23).GT.1.D0) go to 160 - -c . for \ell^- - P2(2)=modP2*cos23 - if((modP2**2-P2(2)**2).LT.0.D0) go to 180 - P2(3)=-DSQRT(modP2**2-P2(2)**2) - P2(4)=0.D0 - -c . for \ell^+ - P1(2)=-P2(2)-P3(2) - P1(3)=-P2(3) - P1(4)=0.D0 - -c......Rotations - -c .\phi2 - - phi2=2.0*3.1415*PYR(0) - - call Mzero(M) - M(1,1)=1.D0 - M(2,2)=1.D0 - M(3,3)=DBLE(cos(phi2)) - M(3,4)=-DBLE(sin(phi2)) - M(4,3)=DBLE(sin(phi2)) - M(4,4)=DBLE(cos(phi2)) - - call transforme(P1,M) - call transforme(P2,M) - call transforme(P3,M) - - -c .\theta1 - - theta1=3.1415*PYR(0) - - call Mzero(M) - M(1,1)=1.D0 - M(2,2)=DBLE(cos(theta1)) - M(2,3)=-DBLE(sin(theta1)) - M(3,2)=DBLE(sin(theta1)) - M(3,3)=DBLE(cos(theta1)) - M(4,4)=1.D0 - - call transforme(P1,M) - call transforme(P2,M) - call transforme(P3,M) - -c .\phi1 - - phi1=2.0*3.1415*PYR(0) - - call Mzero(M) - M(1,1)=1.D0 - M(2,2)=1.D0 - M(3,3)=DBLE(cos(phi1)) - M(3,4)=-DBLE(sin(phi1)) - M(4,3)=DBLE(sin(phi1)) - M(4,4)=DBLE(cos(phi1)) - - call transforme(P1,M) - call transforme(P2,M) - call transforme(P3,M) - -c print *,' ' -c print *, 'The examinaton of the 4-moments conservation', -c #' after rotations' -c print *, 'EB =', pb(1),' Etot =', p1(1)+p2(1)+p3(1) -c print *, 'pxB =', pb(2),' pxtot =', p1(2)+p2(2)+p3(2) -c print *, 'pyB =', pb(3),' pytot =', p1(3)+p2(3)+p3(3) -c print *, 'pzB =', pb(4),' pztot =', p1(4)+p2(4)+p3(4) -c print *, ' ' - -c......********************************************************* -c * * -c * The PYTHIA part * -c * * -c .....********************************************************* - -c print *,' ' -c print *,' B-meson caracteristics ' -c print *,jkf,' KF =',k(jkf,2) -c print *,jkf,' B-vertex: V =', (v(jkf,i),i = 1,5) -c print *,' ' - -c......the verifikation of the B-meson decay - if(k(jkf,4).EQ.k(jkf,5)) go to 500 - - -c......Moderniziruem zapis' raspada B^0_d\to K^{*0}\mu^+\mu^- - do jd = k(jkf,4), k(jkf,5) - -c.........K^{*0} - meson (313) - if(k(jd,2).eq.313) then - - kline = jd -c print *,'kline ident =', kline - -c print *,jd,' KF_old =',k(jd,2) - - k(jd,1)=1 - k(jd,2)=313 - k(jd,3)=k(jd,3) - - if(k(jd,4).NE.0) then - call treedel(jd) - endif - k(jd,4)=0 - k(jd,5)=0 - - do i=1,3 - p(jd,i) = P3(i+1) -c print *,' i =', i -c print *,' jd =', jd -c print *,' P3(i+1) =', P3(i+1) -c print *,' p(jd,i) =', p(jd,i) - enddo - p(jd,4) = P3(1) - p(jd,5) = DBLE(MM2) - - do i=1,4 - v(jd,i)=v(jd,i) - enddo - -c...........Calculation metod: -c . MeV^{-1} = 6.58 * 10^{-19} s; -c . \tau (K^{*0}) = 1/51 MeV^{-1} = 1.29 * 10^{-20} s; -c . \tau (B^0) = 1.55 * 10^{-12} s -c . or \tau (B^0)= pmas(pycomp(511),4) mm/s; -c . that is \tau (K^{*0}) in mm/s equal: -c . pmas(pycomp(511),4)[\tau (K^{*0}) s]/[\tau (B^0) s] - v(jd,5)=pmas(pycomp(511),4)*1.29D0/1.55D0 - v(jd,5)=v(jd,5)/10**8 -c print *,' tau =', v(jd,5), ' mm/s' - - do i=1,5 - vk(i)=v(jd,i) - enddo - -c print *,jd,' KF_new =',k(jd,2) -c print *,jd,' K^*-vertex: =', (v(jd,i),i = 1,5) -c print *,' ' - - endif - - -c.........\mu^+ (-13) - if(k(jd,2).eq.(-13)) then - - mpline = jd -c print *,'mpline ident =', mpline - -c print *,jd,' KF_old =',k(jd,2) - k(jd,1)=1 - k(jd,2)=-13 - k(jd,3)=k(jd,3) - - if(k(jd,4).NE.0) then - call treedel(jd) - endif - k(jd,4)=0 - k(jd,5)=0 - - do i=1,3 - p(jd,i) = P1(i+1) - enddo - p(jd,4) = P1(1) - p(jd,5) = DBLE(ml) - - do i=1,4 - v(jd,i)=v(jd,i) - enddo - v(jd,5)=0.D0 - - do i=1,5 - vmp(i)=v(jd,i) - enddo - -c print *,jd,' KF_new =',k(jd,2) -c print *,jd,' mu^+ vertex: =', (v(jd,i),i = 1,5) -c print *,' ' - - endif - -c.........\mu^- (13) - if(k(jd,2).eq.13) then - - mmline = jd -c print *,'mmline ident =', mmline - -c print *,jd,' KF_old =',k(jd,2) - k(jd,1)=1 - k(jd,2)=13 - k(jd,3)=k(jd,3) - - if(k(jd,4).NE.0) then - call treedel(jd) - endif - k(jd,4)=0 - k(jd,5)=0 - - do i=1,3 - p(jd,i) = P2(i+1) - enddo - p(jd,4) = P2(1) - p(jd,5) = DBLE(ml) - - do i=1,4 - v(jd,i)=v(jd,i) - enddo - v(jd,5)=0.D0 - - do i=1,5 - vmm(i)=v(jd,i) - enddo - -c print *,jd,' KF_new =',k(jd,2) -c print *,jd,' mu^- vertex: =', (v(jd,i),i = 1,5) -c print *,' ' - - endif - - enddo - -c print *, 'The examinaton of the 4-moments conservation', -c #' BEFORE the Lorentz boost' -c print *, 'EB =', pb(1), -c #' Etot =', p(k(jkf,4),4)+p(k(jkf,4)+1,4)+p(k(jkf,4)+2,4) -c print *, 'pxB =', pb(2), -c #' pxtot =', p(k(jkf,4),1)+p(k(jkf,4)+1,1)+p(k(jkf,4)+2,1) -c print *, 'pyB =', pb(3), -c #' pytot =', p(k(jkf,4),2)+p(k(jkf,4)+1,2)+p(k(jkf,4)+2,2) -c print *, 'pzB =', pb(4), -c #' pztot =', p(k(jkf,4),3)+p(k(jkf,4)+1,3)+p(k(jkf,4)+2,3) -c print *, ' ' - - -c......perform Lorentz boost in the direction -c .of B - meson momentum (EB,PxB,PyB,PzB); -c .only for final K^{*}-meson and leptons !!! - - vxb = p(jkf,1)/p(jkf,4) - vyb = p(jkf,2)/p(jkf,4) - vzb = p(jkf,3)/p(jkf,4) -c print *,' vxb =', vxb -c print *,' vyb =', vyb -c print *,' vzb =', vzb - - call pyrobo(k(jkf,4),k(jkf,5),0D0,0D0,vxb,vyb,vzb) - - -c......vertexes determination after "call pyrobo(...)" -c .K^* - do i=1,5 - v(kline,i)=vk(i) - enddo -c .\mu^+ - do i=1,5 - v(mpline,i)=vmp(i) - enddo -c .\mu^- - do i=1,5 - v(mmline,i)=vmm(i) - enddo - -c print *, 'The examinaton of the 4-moments conservation', -c #' AFTER Lorentz boost' -c print *, 'EB =', p(jkf,4), -c #' Etot =', p(k(jkf,4),4)+p(k(jkf,4)+1,4)+p(k(jkf,4)+2,4) -c print *, 'pxB =', p(jkf,1), -c #' pxtot =', p(k(jkf,4),1)+p(k(jkf,4)+1,1)+p(k(jkf,4)+2,1) -c print *, 'pyB =', p(jkf,2), -c #' pytot =', p(k(jkf,4),2)+p(k(jkf,4)+1,2)+p(k(jkf,4)+2,2) -c print *, 'pzB =', p(jkf,3), -c #' pztot =', p(k(jkf,4),3)+p(k(jkf,4)+1,3)+p(k(jkf,4)+2,3) -c print *, ' ' - -c print *, ' *** ' -c print *, ' ' -c print *,'The decay of the K^{*0}-meson' -c......Perform the K^{*0}-meson decay -c .on the only charged particles; -c. .K^{*0}-meson have in "PYTHIA" only 3 decay channels: -c .IDC=617 corresponds to the decay channel K^{*0}\to K^{+}\pi^{-} -c .IDC=618 corresponds to the decay channel K^{*0}\to K^0\pi^0 -c .IDC=619 corresponds to the decay channel K^{*0}\to K^0\gamma - - do i=617,619 - mdme(i,1) = 3 ! switched off the current decay channel - enddo - mdme(617,1) = 1 ! switched on K^*\to K^+\pi^- decay - call pydecy(kline) ! perform decay only on the K^{+}\pi^{-} - do i=617,619 - mdme(i,1) = 1 ! switched on the current decay channel - enddo - -c print *, 'The vertex examinaton after K^*-decay' -c print *,kline, ' K^*-vertex: =', (v(kline,i),i = 1,5) -c print *,p(k(kline,4),5), -c #' 1-vertex: =', (v(k(kline,4),i),i = 1,5) -c print *,p(k(kline,5),5), -c #' 2-vertex: =', (v(k(kline,5),i),i = 1,5) -c print *,p(mpline,5), -c #' mu^+ vertex: =', (v(mpline,i),i = 1,5) -c print *,p(mmline,5), -c #' mu^- vertex: =', (v(mmline,i),i = 1,5) -c print *,' ' - - -c print *, 'The examinaton of the 4-moments conservation', -c #' after K^{*0}-decay' - -c print *, ' EK^* =', p(kline,4), -c #' EKpitot =', p(k(kline,4),4)+p(k(kline,5),4) -c print *, 'pxK^* =', p(kline,1), -c #' pxKpitot =', p(k(kline,4),1)+p(k(kline,5),1) -c print *, 'pyK^* =', p(kline,2), -c #' pyKpitot =', p(k(kline,4),2)+p(k(kline,5),2) -c print *, 'pzK^* =', p(kline,3), -c #' pzKpitot =', p(k(kline,4),3)+p(k(kline,5),3) -c print *, ' ' - - -c call pylist(2) - -600 continue -c print *,'*************************************************' -c print *,'*************************************************' -c print *,'** **' -c print *,'** THE END OF THE ACCEPTED INFORMATION **' -c print *,'** **' -c print *,'*************************************************' -c print *,'*************************************************' -c print *,' ' -c print *,' ' -c print *,' ' -c print *,' ' -c print *,' ' - - end - - - diff --git a/Generators/PythiaB/src/matrix_and_kinematics_PhiMuMu.F b/Generators/PythiaB/src/matrix_and_kinematics_PhiMuMu.F deleted file mode 100644 index 8f1e120b7cd334005e6400ab6f5d329eae615c72..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/src/matrix_and_kinematics_PhiMuMu.F +++ /dev/null @@ -1,740 +0,0 @@ -c *********************************************************************** -c *********************************************************************** -c ** ** -c ** The Monte-Karlo PYTHIA generator for the decay ** -c ** ** -c ** B^0_s\to(\phi\to K^+K^-)\mu^+\mu^- ** -c ** ** -c ** for Athena 7.7.0 PythiaB ** -c ** ** -c ** Last modification: 01.09.2006 ** -c ** ** -c ** Author: Nikolai Nikitine, nnikit@mail.cern.ch ** -c ** ** -c *********************************************************************** -c *********************************************************************** - -c ******************************************************************* -c * * -c * subroutine MATRIX_and_KINEMATICS_PhiMuMu * -c * Version 1.00f * -c * * -c * Parameters of the MATRIX_and_KINEMATICS_PhiMuMu: * -c * * -c * jkf - number of B_s-meson line in the common block PYJETS. * -c * * -c ******************************************************************* - - subroutine MATRIX_and_KINEMATICS_PhiMuMu(jkf) - -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) -c INTEGER PYK,PYCHGE,PYCOMP - -c......Standard COMMON blocs - - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) - COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5) - - SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/ - -c......My COMMON blocks - - COMMON /nik1/ n_model, n_res_swch, n_ias, n_Nf - COMMON /nik2/ n_M1, n_M2, n_mt, n_Mw, n_ml - COMMON /nik4/ n_beta1, n_beta2, n_dV, n_Matrix2 - SAVE /nik1/,/nik2/,/nik4/ - -c......Begine of the variables declaration - -c......double precision velocity ov B-meson in LS - double precision vxb, vyb, vzb - -c......The value of the returned matrix elemet for -c .the m2fortran_PhiMuMu(...) function - real Matrix_element - -c......The COMMON blocs parameters - integer n_model, n_res_swch, n_ias, n_Nf ! /nik1/ - real n_M1, n_M2, n_mt, n_Mw, n_ml ! /nik2/ - real n_beta1, n_beta2, n_dV, n_Matrix2 ! /nik4/ - integer model, res_swch, ias, Nf - real M1, M2, MM2, mt, Mw, ml - -c......The variables for virtual phi-meson mass - real weightm, sm2min, sm2max - -c......The Mandelstam variables - real s, t - -c......The Mandelstam variables/M_1^2 - real hat_s, hat_t - -c......The boundary of the mandelstam variables - real s_min, s_max - - real t_plus, t_minus, lambda, tt - -c......Kinematics weight of the accepted event - double precision weight - -c......The kinematical variables -c . -c .PB - B-meson -c .P1 - \ell^+ -c .P2 - \ell^- -c .P3 - \phi -c . -c...... (E, p_x, p_y, p_z) - double precision PB(4), P1(4), P2(4), P3(4) - -c......The angle between \gamma and \ell^- directions in Rest Frame of Bs-meson: -c .\cos\theta_{23} - double precision cos23 - -c......The absolute values for 3-momentum of \gamma and \ell^{pm} - double precision modP1, modP2, modP3 - -c......Tthe rotation angles - real phi2, theta1, phi1 - -c......The rotation matrix - double precision M(4,4) - -c......The randomase variable - real rend - -c......Numbers of the lines for \phi, \mu^+ and \mu^- - integer kline, mpline, mmline - -c......For vertex sconservetion after "call pyrobo(...)" - double precision vk(5), vmp(5), vmm(5) - -c......The components of the kaons 4-momentum after phi-meson decay -c double precision E_of_KK, Px_of_KK, Py_of_KK, Pz_of_KK - -c......The counters for the accept/reject -c .of the matrix element - integer me_tot, me_accept - -c......End of the variable declarations -c .and start of the simulation program - - go to 100 - -c......The errors information and program terminate -110 print *,'Fatal ERROR: Matrix_element < 0 or - # Matrix_element > 1 ' - print *,'Matrix_element =', Matrix_element - print *,'t_min =', t_min, - # ' t =', t, - #' t_max =', t_max - tt=(M1**2+M2**2+2.*ml**2-s)/2. - lambda=(M1**2+M2**2-s)**2-4.*M1**2*M2**2 - lambda=SQRT(1.-4.*(ml**2)/s)*SQRT(lambda)/2. - t_plus=tt+lambda - t_minus=tt-lambda - print *,'t_min(s) =', t_minus, - # ' t =', t, - #' t_max(s) =', t_plus - print *,'s_min =', s_min, - # ' s =', s, - #' s_max =', s_max - print *,' G =', weight, - #' M1 =', M1,' M2 =', M2, ' ml =', ml - print *, 'By!' - STOP -120 print *,'Fatal ERROR: s_min > s_max' - print *,'s_min =', s_min, ' s_max =', s_max - print *,' M1 =', M1, ' M2 =', M2,' ml =', ml - print *, 'By!' - STOP -130 print *,'Fatal ERROR: t_min > t_max' - print *,'t_min =', t_min, ' t_max =', t_max - print *,' M1 =', M1, ' M2 =', M2,' ml =', ml - print *, 'By!' - STOP -150 print *,'Fatal ERROR: modPi^2 < 0' - print *,'modP1 =', modP1, ' modP2 =', modP2, - #' modP3 =', modP3 - print *,'s =', s, ' t =', t, ' M1 =', M1, - #' M2 =', M2, ' ml =', ml - print *, 'By!' - STOP -160 print *,'Fatal ERROR: abs(cos23) > 1' - print *,'cos23 =', cos23 - print *,'modP1 =', modP1, ' modP2 =', modP2, - #' modP3 =', modP3 - print *,'s =', s, ' t =', t, ' M1 =', M1, - #' M2 =', M2, ' ml =', ml - print *, 'By!' - STOP -180 print *,'Fatal ERROR: modP2**2-P2(2)**2) < 0' - print *,'s =', s, ' t =', t, ' M1 =', M1, - #' M2 =', M2, ' ml =', ml - print *, 'By!' - STOP -500 print *,' ' - print *,'********************************************' - print *,'** **' - print *,'** NO B-MESON DECAY !!! **' - print *,'** **' - print *,'********************************************' - print *,' ' - print *,'jkf =', jkf - print *,'KF = k(jkf,2) =',k(jkf,2) - print *,'k(jkf,3) =',k(jkf,3) - print *,'k(jkf,4) =',k(jkf,4) - print *,'k(jkf,5) =',k(jkf,5) - print *,' ' - print *,'PxB=p(jkf,1) =',p(jkf,1) - print *,'PyB=p(jkf,2) =',p(jkf,2) - print *,'PzB=p(jkf,3) =',p(jkf,3) - print *,' EB=p(jkf,4) =',p(jkf,4) - print *,' MB=p(jkf,5) =',p(jkf,5) - print *,' ' - go to 600 - -c......Start of the generation procedure -100 continue -c print *,' ' -c print *,' In MATRIX_and_KINEMATICS_PhiMuMu ' -c print *,' ' - - model=n_model - res_swch=n_res_swch - ias=n_ias - Nf=n_Nf - M1=n_M1 ! M_{Bs} in GeV - M2=n_M2 ! M_{phi} in GeV - mt=n_mt - Mw=n_Mw - ml=n_ml - - me_tot=0 - me_accept=0 - -10 continue -c print *,' 10 continue ' - -c print *,' Nf =', Nf -c print *,' M1 =', M1 -c print *,' M2 =', M2 -c print *,' mt =', mt -c print *,' Mw =', Mw -c print *,' ml =', ml - -c.......Preparation the mass for virtual phy-meson -c -c RUS: Neobhodimoye poyasneniye sostoit v tom, chto dalee nam pridetsia -c rassmatrivat' raspad \phi\to K^+K^-, t.e phi-meson iznachal'no -c neobhodimo delat' virtual'nim and razigrivat' ego virtual'nuyu massu -c po Breyt-Wigneru v intervale M2\pm 5*\Gamma; -c \Gamma (\phi) = 4.5 MeV = 0.0045 GeV -c . - sm2min=(M2-5.*0.0045)**2 - sm2max=(M2+5.*0.0045)**2 -20 continue - rend=PYR(0) - M2=(sm2max-sm2min)*rend+sm2min - weightm=BW(M2,0.0045) - rend=PYR(0) - -c print *,' before: rend =', rend -c print *,' weightm =', weightm - if(rend.GT.weightm) goto 20 - M2=sqrt(M2) - MM2=M2 - -c print *,' ' -c print *,' after: weightm =', weightm -c print *,' rend =', rend -c print *,' M2 =', M2, ' GeV' -c print *,' MM2 =', MM2, ' GeV' -c print *,' ' -c .End the virtual \phi-meson mass generation - - s_min=4.*(ml**2) - s_max=(M1-MM2)**2 - if(s_min.GT.s_max) go to 120 - -c......Chose of the random "s" - rend=PYR(0) - s=(s_max-s_min)*rend+s_min - hat_s=s/M1**2 - - t_min=(MM2+ml)**2 - t_max=(M1-ml)**2 - if(t_min.GT.t_max) go to 130 - -c......Chose of the random "t" - rend=PYR(0) - t=(t_max-t_min)*rend+t_min - hat_t=t/M1**2 - - me_tot=me_tot+1 - -c......Accept or reject this case in (s,t)-plane? - weight=gf(DBLE(s),DBLE(t),DBLE(M1**2), - #DBLE(ml**2),DBLE(ml**2),DBLE(MM2**2)) - if(weight.GT.0.D0) then -c print *,' s =', s, ' t =', t -c print *,' weight =', weight - go to 10 - endif - - - - - -c ....*********************************************************************** -c *.....................................................................* -c *. .* -c *. THE NORMALISE MATRIX ELEMENT .* -c *. for B^0_s\to\phi\ell^+\ell^- decay .* -c *. .* -c *. The decay matrix element will see in the file m202phi.c .* -c *. .* -c *.....................................................................* -c *.....................................................................* -c *. .* -c *. model -- NOT use in this matrix element .* -c *. model = 1 --CQM-MS (D.Melikhov, B.Stech, .* -c *. Phys.Rev.D62, p.014006, 2000 ); .* -c *. .* -c *. res_swch -- switching parametr: .* -c *. res_swch=0 -- switch OFF the resonant contribution, .* -c *. res_swch=1 -- switch ON the resonant contribution; .* -c *. .* -c *. ias -- switching parametr for for Lms[] .* -c *. in the function As(...): .* -c *. ias = 0 -- Lms=min Lms, .* -c *. ias = 1 -- the mean value, .* -c *. ias = 2 -- Lms=max Lms; .* -c *. .* -c *. hat_s -- q^{2}/M1^{2}=s/M1^{2}; .* -c *. hat_t -- t/M1^{2}; .* -c *. M1 -- mass of the B_s - meson, GeV; .* -c *. M2 -- mass of phi - meson, GeV; .* -c *. mt -- the mass of t-quark, GeV; .* -c *. Mw -- the mass of W-meson, GeV; .* -c *. ml -- the lepton mass, GeV; .* -c *. Nf -- number of "effective" flavours ( Nf=5 for b-quark); .* -c *. the number of the collors = 3; .* -c *. .* -c *.....................................................................* -c.....*********************************************************************** - call m2fortran_PhiMuMu(hat_s, hat_t, MM2) - Matrix_element=n_Matrix2 - -c......The errors control - if(Matrix_element.LT.0.0) go to 110 - if(Matrix_element.GT.1.0) go to 110 - -c......Accept or reject this case according matrix element? -c rend=RNDM(-1) - rend=PYR(0) - - if(rend.GT.Matrix_element) then -c print *,' PYR(0) =', rend -c print *,' Matrix_element =', Matrix_element - go to 10 - endif - me_accept=me_accept+1 - -c print *,' ' -c print *,' ' -c print *,'*************************************************' -c print *,'*************************************************' -c print *,'** **' -c print *,'** THE ACCSEPTION OF THE MATRIX ELEMENT **' -c print *,'** **' -c print *,'*************************************************' -c print *,'*************************************************' -c print *,' ' -c print *,'M1 =', M1,' M2 =', M2,' ml =', ml -c print *,' ' -c print *,'s =', s,' t =', t -c print *,'s_min =', s_min,' s_max =', s_max -c print *,'t_min(s) =', t_min,' t_max(s) =', t_max -c print *,' ' -c print *,'weight =', weight -c print *,'Matrix_element =', Matrix_element -c print *,' ' -c print *,'The number of the total events =', me_tot -c print *,'The number of the accepted events =', me_accept -c print *,'The mumber of the rejected events =', me_tot-me_accept -c print *,' ' -c -c......*********************************************************************** -c * * -c * Start of the kinematics bloc * -c * * -c......*********************************************************************** - -c.......Initial configuration in the (X,Y) plane - -c . for B^0_s - meson - PB(1)=DBLE(M1) - PB(2)=0.D0 - PB(3)=0.D0 - PB(4)=0.D0 - -c . for phi-meson - - P3(1)=DBLE((M1**2+M2**2-s)/(2.*M1)) - P3(2)=DSQRT(P3(1)**2-DBLE(M2**2)) - P3(3)=0.D0 - P3(4)=0.D0 - modP3=P3(2) - -c . for \ell^+ and \ell^- - P1(1)=DBLE((M1**2+ml**2-t)/(2.*M1)) - P2(1)=DBLE((s+t-M2**2-ml**2)/(2.*M1)) - - if((P1(1)**2-DBLE(ml**2)).LT.0.D0) go to 150 - if((P2(1)**2-DBLE(ml**2)).LT.0.D0) go to 150 - if((P3(1)**2-DBLE(M2**2)).LT.0.D0) go to 150 - - modP1=DSQRT(P1(1)**2-DBLE(ml**2)) - modP2=DSQRT(P2(1)**2-DBLE(ml**2)) - -c . \cos\theta_{23} - cos23=DBLE(M2**2+ml**2+2.*P2(1)*P3(1)-t)/(2.D0*modP2*modP3) - if(DABS(cos23).GT.1.D0) go to 160 - -c . for \ell^- - P2(2)=modP2*cos23 - if((modP2**2-P2(2)**2).LT.0.D0) go to 180 - P2(3)=-DSQRT(modP2**2-P2(2)**2) - P2(4)=0.D0 - -c . for \ell^+ - P1(2)=-P2(2)-P3(2) - P1(3)=-P2(3) - P1(4)=0.D0 - -c......Rotations - -c .\phi2 - -c phi2=2.0*3.1415*RNDM(-1) - phi2=2.0*3.1415*PYR(0) - - call Mzero(M) - M(1,1)=1.D0 - M(2,2)=1.D0 - M(3,3)=DBLE(cos(phi2)) - M(3,4)=-DBLE(sin(phi2)) - M(4,3)=DBLE(sin(phi2)) - M(4,4)=DBLE(cos(phi2)) - - call transforme(P1,M) - call transforme(P2,M) - call transforme(P3,M) - - -c .\theta1 - -c theta1=3.1415*RNDM(-1) - theta1=3.1415*PYR(0) - - call Mzero(M) - M(1,1)=1.D0 - M(2,2)=DBLE(cos(theta1)) - M(2,3)=-DBLE(sin(theta1)) - M(3,2)=DBLE(sin(theta1)) - M(3,3)=DBLE(cos(theta1)) - M(4,4)=1.D0 - - call transforme(P1,M) - call transforme(P2,M) - call transforme(P3,M) - -c .\phi1 - -c phi1=2.0*3.1415*RNDM(-1) - phi1=2.0*3.1415*PYR(0) - - call Mzero(M) - M(1,1)=1.D0 - M(2,2)=1.D0 - M(3,3)=DBLE(cos(phi1)) - M(3,4)=-DBLE(sin(phi1)) - M(4,3)=DBLE(sin(phi1)) - M(4,4)=DBLE(cos(phi1)) - - call transforme(P1,M) - call transforme(P2,M) - call transforme(P3,M) - -c print *,' ' -c print *, 'The examinaton of the 4-moments conservation', -c #' after rotations' -c print *, 'EB =', pb(1),' Etot =', p1(1)+p2(1)+p3(1) -c print *, 'pxB =', pb(2),' pxtot =', p1(2)+p2(2)+p3(2) -c print *, 'pyB =', pb(3),' pytot =', p1(3)+p2(3)+p3(3) -c print *, 'pzB =', pb(4),' pztot =', p1(4)+p2(4)+p3(4) -c print *, ' ' - -c......********************************************************* -c * * -c * The PYTHIA part * -c * * -c .....********************************************************* - -c print *,' ' -c print *,' The B^0_s-meson parameters: ' -c print *,jkf,' KF =',k(jkf,2) -c print *,jkf,' B-vertex: V =', (v(jkf,i),i = 1,5) -c print *,' ' - -c......the verifikation of the B-meson decay - if(k(jkf,4).EQ.k(jkf,5)) go to 500 - -c print *,' ' -c print *,' Decay B^0_s -> phi mu^+ mu^- ' -c do jd = k(jkf,4), k(jkf,5) -c print *,jd,' KF =',k(jd,2) -c print *,jd,' vertex: V =', (v(jd,i),i = 1,5) -c enddo -c print *,' ' - - -c......rewrite the decay B^0_s\to\phi\mu^+\mu^- -c .in the PYTHIA COMMON block PYJETS -c -c RUS: predpolagaetsia, chto kogda vipolnaetsia generaciya -c pri pomoschi programmi PYTHIA, to uje zadano, chto tam -c imeetsia kanal raspada B^0_\to\phi\mu^+\mu^-. Eto delaetsia, -c naprimer, pri pomoschi sleduyuschih komand: -c c...... allowed B_s and \bar B_s-decay channel 965 -c c. . for convert to B^0_s\to\phi\mu^+\mu^- -c mdme(965,1) = 1 -c kfdp(965,1) = 13 ! \mu^- -c kfdp(965,2) = -13 ! \mu^+ -c kfdp(965,3) = 333 ! \phi -c kfdp(965,4) = 0 -c kfdp(965,5) = 0 -c brat(965) = DBLE(nujniy Br) -c - do jd = k(jkf,4), k(jkf,5) - -c.........\phi - meson (333) - if(k(jd,2).eq.333) then - - kline = jd - - k(jd,1)=1 - k(jd,2)=333 - k(jd,3)=k(jd,3) - - if(k(jd,4).NE.0) then - call treedel(jd) - endif - k(jd,4)=0 - k(jd,5)=0 - - do i=1,3 - p(jd,i) = P3(i+1) -c print *,' i =', i -c print *,' jd =', jd -c print *,' P3(i+1) =', P3(i+1) -c print *,' p(jd,i) =', p(jd,i) - enddo - p(jd,4) = P3(1) - p(jd,5) = DBLE(M2) - - do i=1,4 - v(jd,i)=v(jd,i) - enddo - v(jd,5)=0.D0 - - do i=1,5 - vk(i)=v(jd,i) - enddo - - endif - - -c.........\mu^+ (-13) - if(k(jd,2).eq.(-13)) then - - mpline = jd - - k(jd,1)=1 - k(jd,2)=-13 - k(jd,3)=k(jd,3) - - if(k(jd,4).NE.0) then - call treedel(jd) - endif - k(jd,4)=0 - k(jd,5)=0 - - do i=1,3 - p(jd,i) = P1(i+1) - enddo - p(jd,4) = P1(1) - p(jd,5) = DBLE(ml) - - do i=1,4 - v(jd,i)=v(jd,i) - enddo - v(jd,5)=0.D0 - - do i=1,5 - vmp(i)=v(jd,i) - enddo - -c print *,jd,' mu^+ vertex: =', (v(jd,i),i = 1,5) -c print *,' ' - - endif - -c.........\mu^- (13) - if(k(jd,2).eq.13) then - - mmline = jd - - k(jd,1)=1 - k(jd,2)=13 - k(jd,3)=k(jd,3) - - if(k(jd,4).NE.0) then - call treedel(jd) - endif - k(jd,4)=0 - k(jd,5)=0 - - do i=1,3 - p(jd,i) = P2(i+1) - enddo - p(jd,4) = P2(1) - p(jd,5) = DBLE(ml) - - do i=1,4 - v(jd,i)=v(jd,i) - enddo - v(jd,5)=0.D0 - - do i=1,5 - vmm(i)=v(jd,i) - enddo - -c print *,jd,' mu^- vertex: =', (v(jd,i),i = 1,5) -c print *,' ' - - endif - - enddo - -c print *, 'The examinaton of the 4-moments conservation', -c #' BEFORE the Lorentz boost' -c print *, 'EB =', pb(1), -c #' Etot =', p(k(jkf,4),4)+p(k(jkf,4)+1,4)+p(k(jkf,4)+2,4) -c print *, 'pxB =', pb(2), -c #' pxtot =', p(k(jkf,4),1)+p(k(jkf,4)+1,1)+p(k(jkf,4)+2,1) -c print *, 'pyB =', pb(3), -c #' pytot =', p(k(jkf,4),2)+p(k(jkf,4)+1,2)+p(k(jkf,4)+2,2) -c print *, 'pzB =', pb(4), -c #' pztot =', p(k(jkf,4),3)+p(k(jkf,4)+1,3)+p(k(jkf,4)+2,3) -c print *, ' ' - - -c......perform Lorentz boost in the direction -c .of B - meson momentum (EB,PxB,PyB,PzB); -c .only for final foton and leptons !!! - vxb = p(jkf,1)/p(jkf,4) - vyb = p(jkf,2)/p(jkf,4) - vzb = p(jkf,3)/p(jkf,4) - -c print *,' N =', N -c print *,' mstu(1) =', mstu(1) -c print *,' mstu(2) =', mstu(2) -c print *,' vxb =', vxb -c print *,' vyb =', vyb -c print *,' vzb =', vzb - - call pyrobo(k(jkf,4),k(jkf,5),0.D0,0.D0,vxb,vyb,vzb) - -c......vertexes determination after "call pyrobo(...)" -c .foton - do i=1,5 - v(kline,i)=vk(i) - enddo -c .\mu^+ - do i=1,5 - v(mpline,i)=vmp(i) - enddo -c .\mu^- - do i=1,5 - v(mmline,i)=vmm(i) - enddo - -c print *, 'The examinaton of the 4-moments conservation', -c #' AFTER Lorentz boost' -c print *, 'EB =', p(jkf,4), -c #' Etot =', p(k(jkf,4),4)+p(k(jkf,4)+1,4)+p(k(jkf,4)+2,4) -c print *, 'pxB =', p(jkf,1), -c #' pxtot =', p(k(jkf,4),1)+p(k(jkf,4)+1,1)+p(k(jkf,4)+2,1) -c print *, 'pyB =', p(jkf,2), -c #' pytot =', p(k(jkf,4),2)+p(k(jkf,4)+1,2)+p(k(jkf,4)+2,2) -c print *, 'pzB =', p(jkf,3), -c #' pztot =', p(k(jkf,4),3)+p(k(jkf,4)+1,3)+p(k(jkf,4)+2,3) -c print *, ' ' - - -c......To prepare the phi-meson decay on the only charged particles; -c. .phi-meson in "PYTHIA 6.207" is have 11 decay channels from IDC=656 to idc=666: - do i=656,666 - mdme(i,1) = 3 ! switched off the current decay channel - enddo - mdme(656,1) = 1 ! switched on \phi\to K^+\K^- decay - call pydecy(kline) ! perform decay - do i=656,666 - mdme(i,1) = 1 ! switched on the current decay channel - enddo - -c......Proverka pravil'nosti raspada phi-mesona -c E_of_KK =0.D0 -c Px_of_KK=0.D0 -c Py_of_KK=0.D0 -c Pz_of_KK=0.D0 -c do ii=k(kline,4),k(kline,5) -c print *, ii, ' K-meson KF =', k(ii,2) -c e_of_kk=e_of_kk+p(ii,4) -c px_of_kk=px_of_kk+p(ii,1) -c py_of_kk=py_of_kk+p(ii,2) -c pz_of_kk=pz_of_kk+p(ii,3) -c enddo -c print *,' PHI-line: ', kline, ' PHI KF =', k(kline,2) -c print *,' Mass of PHI in PYTHIA =', PMAS(PYCOMP(333),1) -c print *,' Virtual PHI meson mass =', p(kline,5) -c print *,' invariant KK masse =', -c #dsqrt(e_of_kk**2-px_of_kk**2-py_of_kk**2-pz_of_kk**2) - -c call pylist(2) - -600 continue - -c print *,'*************************************************' -c print *,'*************************************************' -c print *,'** **' -c print *,'** THE END OF THE ACCEPTED INFORMATION **' -c print *,'** **' -c print *,'*************************************************' -c print *,'*************************************************' -c print *,' ' -c print *,' ' -c print *,' ' -c print *,' ' -c print *,' ' - - end - - - diff --git a/Generators/PythiaB/src/matrix_and_kinematics_b2gmm.F b/Generators/PythiaB/src/matrix_and_kinematics_b2gmm.F deleted file mode 100644 index 9c7933b2b7ded0e14ab97788a37b1a4a0a3f57b5..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/src/matrix_and_kinematics_b2gmm.F +++ /dev/null @@ -1,664 +0,0 @@ -c *********************************************************************** -c *********************************************************************** -c ** ** -c ** The Monte-Carlo PYTHIA generator for the decay ** -c ** ** -c ** B^0\to\gamma\mu^+\mu^- ** -c ** (vipolnen uchet tormoznogo izlucheniya muonov v ** -c ** konechnom sostoanii) ** -c ** ** -c ** Version 1.03 ** -c ** ** -c ** The last modification: 15.05.2007 ** -c ** ** -c ** Author: Nickolai Nikitine, nnikit@mail.cern.ch ** -c ** ** -c *********************************************************************** -c *********************************************************************** - -c ******************************************************************* -c * * -c * subroutine MATRIX_and_KINEMATICS_GMM * -c * * -c * The parameters of the MATRIX_and_KINEMATICS_GMM: * -c * * -c * jkf - line number of B-meson parameters in The common * -c * bloc PYJETS. * -c * * -c ******************************************************************* - - subroutine MATRIX_and_KINEMATICS_GMM(jkf) - -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) -c INTEGER PYK,PYCHGE,PYCOMP - -c......Standard COMMON blocs - - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) - COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) - COMMON/PYINT1/MINT(400),VINT(400) - COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2) - COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3) - COMMON/PYUPPR/NUP,KUP(20,7),NFUP,IFUP(10,2),PUP(20,5),Q2UP(0:10) - - SAVE /PYJETS/,/PYDAT2/ - SAVE /PYPARS/,/PYINT1/,/PYINT2/,/PYINT5/,/PYUPPR/ - -c......My COMMON blocs - - COMMON /nik1/ n_model, n_res_swch, n_ias, n_Nf - COMMON /nik2/ n_M1, n_M2, n_mt, n_Mw, n_ml - COMMON /nik4/ n_Matrix2 - SAVE /nik1/,/nik2/,/nik4/ - -c......Begine of the variables declaration - -c......double precision velocity ov B-meson in LS - double precision vxb, vyb, vzb - -c......The value of the returned matrix elemet for -c .the m2fortran(...) function - real Matrix_element - -c......The COMMON blocs parameters - integer n_model, n_res_swch, n_ias, n_Nf ! /nik1/ - real n_M1, n_M2, n_mt, n_Mw, n_ml ! /nik2/ - real n_Matrix2 ! /nik4/ -c integer model, res_swch, ias, Nf - integer res_swch, ias, Nf - real M1, M2, mt, Mw, ml - -c......The Mandelstam variables - real s, t - -c......The Mandelstam variables/M_1^2 - real hat_s, hat_t - -c......The boundary of the mandelstam variables - real s_min, s_max - - real t_plus, t_minus, lambda, tt - -c......Kinematics weight of the accepted event - double precision weight - -c......The kinematical variables -c . -c .PB - B-meson -c .P1 - \ell^+ -c .P2 - \ell^- -c .P3 - \gamma -c . -c...... (E, p_x, p_y, p_z) - double precision PB(4), P1(4), P2(4), P3(4) - -c......The angle between \gamma and \ell^- directions in RF of B-meson: -c .\cos\theta_{23} - double precision cos23 - -c......The absolute values for 3-momentum of \gamma and \ell^{pm} - double precision modP1, modP2, modP3 - -c......Tthe rotation angles - real phi2, theta1, phi1 - -c......The rotation matrix - double precision M(4,4) - -c......The randomase variable - real rend - -c......Numbers of the lines for \gamma, \mu^+ and \mu^- - integer kline, mpline, mmline - -c......For vertex sconservetion after "call pyrobo(...)" - double precision vk(5), vmp(5), vmm(5) - -c......The counters for the accept/reject -c .of the matrix element - integer me_tot, me_accept - -c......End of the variable declarations -c .and start of the simulation program - - go to 100 - -c......The errors information and program terminate -110 print *,'Fatal ERROR: Matrix_element < 0 or - # Matrix_element > 1 ' - print *,'Matrix_element =', Matrix_element - print *,'t_min =', t_min, - # ' t =', t, - #' t_max =', t_max - tt=(M1**2+M2**2+2.*ml**2-s)/2. - lambda=(M1**2+M2**2-s)**2-4.*M1**2*M2**2 - lambda=SQRT(1.-4.*(ml**2)/s)*SQRT(lambda)/2. - t_plus=tt+lambda - t_minus=tt-lambda - print *,'t_min(s) =', t_minus, - # ' t =', t, - #' t_max(s) =', t_plus - print *,'s_min =', s_min, - # ' s =', s, - #' s_max =', s_max - print *,' G =', weight, - #' M1 =', M1,' M2 =', M2, ' ml =', ml - print *, 'By!' - STOP -120 print *,'Fatal ERROR: s_min > s_max' - print *,'s_min =', s_min, ' s_max =', s_max - print *,' M1 =', M1, ' M2 =', M2,' ml =', ml - print *, 'By!' - STOP -130 print *,'Fatal ERROR: t_min > t_max' - print *,'t_min =', t_min, ' t_max =', t_max - print *,' M1 =', M1, ' M2 =', M2,' ml =', ml - print *, 'By!' - STOP -150 print *,'Fatal ERROR: modPi^2 < 0' - print *,'modP1 =', modP1, ' modP2 =', modP2, - #' modP3 =', modP3 - print *,'s =', s, ' t =', t, ' M1 =', M1, - #' M2 =', M2, ' ml =', ml - print *, 'By!' - STOP -160 print *,'Fatal ERROR: abs(cos23) > 1' - print *,'cos23 =', cos23 - print *,'modP1 =', modP1, ' modP2 =', modP2, - #' modP3 =', modP3 - print *,'s =', s, ' t =', t, ' M1 =', M1, - #' M2 =', M2, ' ml =', ml - print *, 'By!' - STOP -180 print *,'Fatal ERROR: modP2**2-P2(2)**2) < 0' - print *,'s =', s, ' t =', t, ' M1 =', M1, - #' M2 =', M2, ' ml =', ml - print *, 'By!' - STOP -500 print *,' ' - print *,'********************************************' - print *,'** **' - print *,'** NO B-MESON DECAY !!! **' - print *,'** **' - print *,'********************************************' - print *,' ' - print *,'jkf =', jkf - print *,'KF = k(jkf,2) =',k(jkf,2) - print *,'k(jkf,3) =',k(jkf,3) - print *,'k(jkf,4) =',k(jkf,4) - print *,'k(jkf,5) =',k(jkf,5) - print *,' ' - print *,'PxB=p(jkf,1) =',p(jkf,1) - print *,'PyB=p(jkf,2) =',p(jkf,2) - print *,'PzB=p(jkf,3) =',p(jkf,3) - print *,' EB=p(jkf,4) =',p(jkf,4) - print *,' MB=p(jkf,5) =',p(jkf,5) - print *,' ' - go to 600 - -c......Start of the generation procedure -100 continue -c print *,' ' -c print *,' In MATRIX_and_KINEMATICS ' -c print *,' ' - - res_swch=n_res_swch - ias=n_ias - Nf=n_Nf - M1=n_M1 - M2=n_M2 - mt=n_mt - Mw=n_Mw - ml=n_ml - - me_tot=0 - me_accept=0 - -10 continue -c print *,' 10 continue ' - -c print *,' Nf =', Nf -c print *,' M1 =', M1 -c print *,' M2 =', M2 -c print *,' mt =', mt -c print *,' Mw =', Mw -c print *,' ml =', ml - - - s_min=4.*(ml**2) - s_max=(M1-M2)**2 - if(s_min.GT.s_max) go to 120 - -c......Chose of the random "s" -c rend=RNDM(-1) - rend=PYR(0) - s=(s_max-s_min)*rend+s_min - hat_s=s/M1**2 - - t_min=(M2+ml)**2 - t_max=(M1-ml)**2 - if(t_min.GT.t_max) go to 130 - -c......Chose of the random "t" -c rend=RNDM(-1) - rend=PYR(0) - t=(t_max-t_min)*rend+t_min - hat_t=t/M1**2 - - me_tot=me_tot+1 - -c......Accept or reject this case in (s,t)-plane? - weight=gf(DBLE(s),DBLE(t),DBLE(M1**2), - #DBLE(ml**2),DBLE(ml**2),DBLE(M2**2)) - if(weight.GT.0.D0) go to 10 - - - -c ........................................................................... -c ....................................................................... -c .. .. -c .. THE NORMALISE MATRIX ELEMENT .. -c .. for B\to\gamma\ell^+\ell^- decay .. -c .. .. -c .. See the file matrix_for_fortran_b2gmmv101.F .. -c .. .. -c ....................................................................... -c ....................................................................... -c .. .. -c .. model -- NOT used in this program .. -c .. .. -c .. res_swch -- switching parametr: .. -c .. res_swch=0 -- switch OFF the resonant contribution, .. -c .. res_swch=1 -- switch ON the resonant contribution; .. -c .. .. -c .. ias -- switching parametr for for Lms[] .. -c .. in the function As(...): .. -c .. ias = 0 -- Lms=min Lms, .. -c .. ias = 1 -- the mean value, .. -c .. ias = 2 -- Lms=max Lms; .. -c .. .. -c .. hat_s -- q^{2}/M1^{2}=s/M1^{2}; .. -c .. hat_t -- t/M1^{2}; .. -c .. M1 -- mass of the B -- meson, GeV; .. -c .. M2 -- mass of foton, GeV; .. -c .. mt -- the mass of t-quark, GeV; .. -c .. Mw -- the mass of W-meson, GeV; .. -c .. ml -- the lepton mass, GeV; .. -c .. Nf -- number of "effective" flavours ( Nf=5 for b-quark); .. -c .. the number of the collors = 3; .. -c .. .. -c ....................................................................... -c............................................................................ - call m2fortran_gmm(hat_s, hat_t) - Matrix_element=n_Matrix2 - -c......The cut on the foton mass (min. energy) - if(Matrix_element.EQ.(-13.0)) go to 10 - -c......The errors control - if(Matrix_element.LT.0.0) go to 110 - if(Matrix_element.GT.1.0) go to 110 - -c......Accept or reject this case according matrix element? -c rend=RNDM(-1) - rend=PYR(0) - if(rend.GT.Matrix_element) go to 10 - me_accept=me_accept+1 - -c print *,' ' -c print *,' ' -c print *,'*************************************************' -c print *,'*************************************************' -c print *,'** **' -c print *,'** THE ACCSEPTION OF THE MATRIX ELEMENT **' -c print *,'** **' -c print *,'*************************************************' -c print *,'*************************************************' -c print *,' ' -c print *,'M1 =', M1,' M2 =', M2,' ml =', ml -c print *,' ' -c print *,'s =', s,' t =', t -c print *,'s_min =', s_min,' s_max =', s_max -c print *,'t_min(s) =', t_min,' t_max(s) =', t_max -c print *,' ' - print *,'Matrix_element =', Matrix_element -c print *,' ' -c print *,'The number of the total events =', me_tot -c print *,'The number of the accepted events =', me_accept -c print *,'The mumber of the rejected events =', me_tot-me_accept -c print *,' ' - -c......*********************************************************************** -c * * -c * Start of the kinematics bloc * -c * * -c......*********************************************************************** - -c.......Initial configuration in the (X,Y) plane - -c . for B^0_s - meson - PB(1)=DBLE(M1) - PB(2)=0.D0 - PB(3)=0.D0 - PB(4)=0.D0 - -c . for \gamma - - P3(1)=DBLE((M1**2+M2**2-s)/(2.*M1)) - P3(2)=DSQRT(P3(1)**2-DBLE(M2**2)) - P3(3)=0.D0 - P3(4)=0.D0 - modP3=P3(2) - -c . for \ell^+ and \ell^- - P1(1)=DBLE((M1**2+ml**2-t)/(2.*M1)) - P2(1)=DBLE((s+t-M2**2-ml**2)/(2.*M1)) - - if((P1(1)**2-DBLE(ml**2)).LT.0.D0) go to 150 - if((P2(1)**2-DBLE(ml**2)).LT.0.D0) go to 150 - if((P3(1)**2-DBLE(M2**2)).LT.0.D0) go to 150 - - modP1=DSQRT(P1(1)**2-DBLE(ml**2)) - modP2=DSQRT(P2(1)**2-DBLE(ml**2)) - -c . \cos\theta_{23} - cos23=DBLE(M2**2+ml**2+2.*P2(1)*P3(1)-t)/(2.D0*modP2*modP3) - if(DABS(cos23).GT.1.D0) go to 160 - -c . for \ell^- - P2(2)=modP2*cos23 - if((modP2**2-P2(2)**2).LT.0.D0) go to 180 - P2(3)=-DSQRT(modP2**2-P2(2)**2) - P2(4)=0.D0 - -c . for \ell^+ - P1(2)=-P2(2)-P3(2) - P1(3)=-P2(3) - P1(4)=0.D0 - -c......Rotations - -c .\phi2 - -c phi2=2.0*3.1415*RNDM(-1) - phi2=2.0*3.1415*PYR(0) - - call Mzero(M) - M(1,1)=1.D0 - M(2,2)=1.D0 - M(3,3)=DBLE(cos(phi2)) - M(3,4)=-DBLE(sin(phi2)) - M(4,3)=DBLE(sin(phi2)) - M(4,4)=DBLE(cos(phi2)) - - call transforme(P1,M) - call transforme(P2,M) - call transforme(P3,M) - - -c .\theta1 - -c theta1=3.1415*RNDM(-1) - theta1=3.1415*PYR(0) - - call Mzero(M) - M(1,1)=1.D0 - M(2,2)=DBLE(cos(theta1)) - M(2,3)=-DBLE(sin(theta1)) - M(3,2)=DBLE(sin(theta1)) - M(3,3)=DBLE(cos(theta1)) - M(4,4)=1.D0 - - call transforme(P1,M) - call transforme(P2,M) - call transforme(P3,M) - -c .\phi1 - -c phi1=2.0*3.1415*RNDM(-1) - phi1=2.0*3.1415*PYR(0) - - call Mzero(M) - M(1,1)=1.D0 - M(2,2)=1.D0 - M(3,3)=DBLE(cos(phi1)) - M(3,4)=-DBLE(sin(phi1)) - M(4,3)=DBLE(sin(phi1)) - M(4,4)=DBLE(cos(phi1)) - - call transforme(P1,M) - call transforme(P2,M) - call transforme(P3,M) - -c print *,' ' -c print *, 'The examinaton of the 4-moments conservation', -c #' after rotations' -c print *, 'EB =', pb(1),' Etot =', p1(1)+p2(1)+p3(1) -c print *, 'pxB =', pb(2),' pxtot =', p1(2)+p2(2)+p3(2) -c print *, 'pyB =', pb(3),' pytot =', p1(3)+p2(3)+p3(3) -c print *, 'pzB =', pb(4),' pztot =', p1(4)+p2(4)+p3(4) -c print *, ' ' - -c......********************************************************* -c * * -c * The PYTHIA part * -c * * -c .....********************************************************* - -c print *,' ' -c print *,' B-meson caracteristics ' -c print *,jkf,' KF =',k(jkf,2) -c print *,jkf,' B-vertex: V =', (v(jkf,i),i = 1,5) -c print *,' ' - -c......the verifikation of the B-meson decay - if(k(jkf,4).EQ.k(jkf,5)) go to 500 - -c print *,' ' -c print *,' Decay B^0_d -> D^- tau^+ nu_{tau} ' -c do jd = k(jkf,4), k(jkf,5) -c print *,jd,' KF =',k(jd,2) -c print *,jd,' vertex: V =', (v(jd,i),i = 1,5) -c enddo -c print *,' ' -c print *,' Rewrite to decay B^0_d -> gamma mu^+ mu^- ' - - -c......rewrite the decay B^0_d\to\gamma\mu^+\mu^- -c .on the place of the decay B^0_d\to D^- \tau^+ \nu_{\tau} -c .in the PYTHIA COMMON bloc PYJETS - do jd = k(jkf,4), k(jkf,5) - -c.........\gamma (22) - if(k(jd,2).eq.22) then - - kline = jd -c print *,'kline ident =', kline - -c print *,jd,' KF_old =',k(jd,2) - - k(jd,1)=1 - k(jd,2)=22 - k(jd,3)=k(jd,3) - - if(k(jd,4).NE.0) then - call treedel(jd) - endif - k(jd,4)=0 - k(jd,5)=0 - - do i=1,3 - p(jd,i) = P3(i+1) -c print *,' i =', i -c print *,' jd =', jd -c print *,' P3(i+1) =', P3(i+1) -c print *,' p(jd,i) =', p(jd,i) - enddo - p(jd,4) = P3(1) - p(jd,5) = DBLE(M2) - - do i=1,4 - v(jd,i)=v(jd,i) - enddo - v(jd,5)=0.D0 - - do i=1,5 - vk(i)=v(jd,i) - enddo - -c print *,jd,' KF_new =',k(jd,2) -c print *,jd,' foton-vertex: =', (v(jd,i),i = 1,5) -c print *,' ' - - endif - - -c.........\mu^+ (-13) - if(k(jd,2).eq.(-13)) then - - mpline = jd -c print *,'mpline ident =', mpline - -c print *,jd,' KF_old =',k(jd,2) - k(jd,1)=1 - k(jd,2)=-13 - k(jd,3)=k(jd,3) - - if(k(jd,4).NE.0) then - call treedel(jd) - endif - k(jd,4)=0 - k(jd,5)=0 - - do i=1,3 - p(jd,i) = P1(i+1) - enddo - p(jd,4) = P1(1) - p(jd,5) = DBLE(ml) - - do i=1,4 - v(jd,i)=v(jd,i) - enddo - v(jd,5)=0.D0 - - do i=1,5 - vmp(i)=v(jd,i) - enddo - -c print *,jd,' KF_new =',k(jd,2) -c print *,jd,' mu^+ vertex: =', (v(jd,i),i = 1,5) -c print *,' ' - - endif - -c.........\mu^- (13) - if(k(jd,2).eq.13) then - - mmline = jd -c print *,'mmline ident =', mmline - -c print *,jd,' KF_old =',k(jd,2) - k(jd,1)=1 - k(jd,2)=13 - k(jd,3)=k(jd,3) - - if(k(jd,4).NE.0) then - call treedel(jd) - endif - k(jd,4)=0 - k(jd,5)=0 - - do i=1,3 - p(jd,i) = P2(i+1) - enddo - p(jd,4) = P2(1) - p(jd,5) = DBLE(ml) - - do i=1,4 - v(jd,i)=v(jd,i) - enddo - v(jd,5)=0.D0 - - do i=1,5 - vmm(i)=v(jd,i) - enddo - -c print *,jd,' KF_new =',k(jd,2) -c print *,jd,' mu^- vertex: =', (v(jd,i),i = 1,5) -c print *,' ' - - endif - - enddo - -c print *, 'The examinaton of the 4-moments conservation', -c #' BEFORE the Lorentz boost' -c print *, 'EB =', pb(1), -c #' Etot =', p(k(jkf,4),4)+p(k(jkf,4)+1,4)+p(k(jkf,4)+2,4) -c print *, 'pxB =', pb(2), -c #' pxtot =', p(k(jkf,4),1)+p(k(jkf,4)+1,1)+p(k(jkf,4)+2,1) -c print *, 'pyB =', pb(3), -c #' pytot =', p(k(jkf,4),2)+p(k(jkf,4)+1,2)+p(k(jkf,4)+2,2) -c print *, 'pzB =', pb(4), -c #' pztot =', p(k(jkf,4),3)+p(k(jkf,4)+1,3)+p(k(jkf,4)+2,3) -c print *, ' ' - - -c......perform Lorentz boost in the direction -c .of B - meson momentum (EB,PxB,PyB,PzB); -c .only for final foton and leptons !!! - vxb = p(jkf,1)/p(jkf,4) - vyb = p(jkf,2)/p(jkf,4) - vzb = p(jkf,3)/p(jkf,4) - call pyrobo(k(jkf,4),k(jkf,5),0D0,0D0,vxb,vyb,vzb) - -c......vertexes determination after "call pyrobo(...)" -c .foton - do i=1,5 - v(kline,i)=vk(i) - enddo -c .\mu^+ - do i=1,5 - v(mpline,i)=vmp(i) - enddo -c .\mu^- - do i=1,5 - v(mmline,i)=vmm(i) - enddo - -c print *, 'The examinaton of the 4-moments conservation', -c #' AFTER Lorentz boost' -c print *, 'EB =', p(jkf,4), -c #' Etot =', p(k(jkf,4),4)+p(k(jkf,4)+1,4)+p(k(jkf,4)+2,4) -c print *, 'pxB =', p(jkf,1), -c #' pxtot =', p(k(jkf,4),1)+p(k(jkf,4)+1,1)+p(k(jkf,4)+2,1) -c print *, 'pyB =', p(jkf,2), -c #' pytot =', p(k(jkf,4),2)+p(k(jkf,4)+1,2)+p(k(jkf,4)+2,2) -c print *, 'pzB =', p(jkf,3), -c #' pztot =', p(k(jkf,4),3)+p(k(jkf,4)+1,3)+p(k(jkf,4)+2,3) -c print *, ' ' - -c call pylist(2) - -600 continue - -c print *,'*************************************************' -c print *,'*************************************************' -c print *,'** **' -c print *,'** THE END OF THE ACCEPTED INFORMATION **' -c print *,'** **' -c print *,'*************************************************' -c print *,'*************************************************' -c print *,' ' -c print *,' ' -c print *,' ' -c print *,' ' -c print *,' ' - - end - - - diff --git a/Generators/PythiaB/src/matrix_for_fortran_KstMuMu.F b/Generators/PythiaB/src/matrix_for_fortran_KstMuMu.F deleted file mode 100644 index e4e68f80c454eb5b0e10f822dbda1f7aa67b1679..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/src/matrix_for_fortran_KstMuMu.F +++ /dev/null @@ -1,746 +0,0 @@ -c 30.10.2002; 31.10.2002; 01.11.2002; 03.04.2003; -c 06.04.2003; 08.04.2003; 13.05.2003; 21.05.2003; -c 30.06.2003; 03.07.2003; 07.07.2003; 01.09.2006; - -c *********************************************** -c *********************************************** -c ** THE MATRIX ELEMENT CALCULATIONS ** -c ** ** -c ** Version 1.06 ** -c ** ** -c *********************************************** -c *********************************************** - - - subroutine myG2_KstMuMu(q2,qm2,qm1,mu,mc) - - COMMON /nikff/ n_g,n_f,n_aplus,n_aminus,n_gplus, - #n_gminus, n_g0,n_B0, n_Bplus - COMMON /nik1/ n_model, n_res_swch, n_ias, n_Nf - COMMON /nik2/ n_M1, n_M2, n_mt, n_Mw, n_ml - COMMON /nik3/ n_G2, n_F2, n_Hplus2, n_R, n_R1 - COMMON /nikwc/ n_as, n_c1, n_c2, n_c3, n_c4, n_c5, n_c6, n_c7 - SAVE /nikff/,/nik1/,/nik2/,/nik3/,/nikwc/ - - real q2, M1, qm2, qm1, mu, mc, mt, Mw, ml - integer model, ias, Nf - - real n_g,n_f,n_aplus,n_aminus,n_gplus ! /nikff/ - real n_gminus, n_g0,n_B0, n_Bplus ! /nikff/ - integer n_model, n_res_swch, n_ias, n_Nf ! /nik1/ - real n_M1, n_M2, n_mt, n_Mw, n_ml ! /nik2/ - real n_G2, n_F2, n_Hplus2, n_R, n_R1 ! /nik3/ - real n_as, n_c1, n_c2, n_c3, n_c4, n_c5, n_c6, n_c7 ! /nikwc/ - - real GG2 - real hat_s - real gg, ggplus - real c7, RReC9eff, IImC9eff, c10 - - n_G2 = 0.0 - - model=n_model - ias=n_ias - M1=n_M1 - mt=n_mt - Mw=n_Mw - ml=n_ml - Nf=n_Nf - - hat_s=q2/M1**2 - - call myg_KstMuMu(model,q2,M1,n_M2) - gg=n_g - call mygplus_KstMuMu(model,q2,n_M1) - ggplus=n_gplus - - call myC7gamma(mu,Mw,mt,Nf,ias) - c7=n_c7 - c7=2.0*(qm2+qm1)*c7/M1 - - call ReC9eff(q2,qm2,mu,mc,RReC9eff) - call ImC9eff(q2,qm2,mu,mc,IImC9eff) - - call myC10a(mt,Mw,c10) - - GG2=(c10*M1*gg)**2 - GG2=GG2+(RReC9eff*M1*gg-c7*ggplus/hat_s)**2 - GG2=GG2+(IImC9eff*M1*gg)**2 - - n_G2=GG2 - - return - end - - - - subroutine myF2_KstMuMu(q2,M2,qm2,qm1,mu,mc) - - COMMON /nikff/ n_g,n_f,n_aplus,n_aminus,n_gplus, - #n_gminus, n_g0,n_B0, n_Bplus - COMMON /nik1/ n_model, n_res_swch, n_ias, n_Nf - COMMON /nik2/ n_M1, n_M2, n_mt, n_Mw, n_ml - COMMON /nik3/ n_G2, n_F2, n_Hplus2, n_R, n_R1 - COMMON /nikwc/ n_as, n_c1, n_c2, n_c3, n_c4, n_c5, n_c6, n_c7 - SAVE /nikff/,/nik1/,/nik2/,/nik3/,/nikwc/ - - real q2, M1, M2, qm2, qm1, mu, mc, mt, Mw, ml - integer model, ias, Nf - - real n_g,n_f,n_aplus,n_aminus,n_gplus ! /nikff/ - real n_gminus, n_g0,n_B0, n_Bplus ! /nikff/ - integer n_model, n_res_swch, n_ias, n_Nf ! /nik1/ - real n_M1, n_M2, n_mt, n_Mw, n_ml ! /nik2/ - real n_G2, n_F2, n_Hplus2, n_R, n_R1 ! /nik3/ - real n_as, n_c1, n_c2, n_c3, n_c4, n_c5, n_c6, n_c7 ! /nikwc/ - - real FF2 - real hat_s, hat_r - real ff, BB0 - real c7, RReC9eff, IImC9eff, c10 - - n_F2 = 0.0 - - model=n_model - ias=n_ias - M1=n_M1 - mt=n_mt - Mw=n_Mw - ml=n_ml - Nf=n_Nf - - hat_s=q2/M1**2 - hat_r=(M2/M1)**2 - - call myf_KstMuMu(model,q2,M1,n_M2) - ff=n_f - call myB0_KstMuMu(model,q2,M1,n_M2) - BB0=n_B0 - - call myC7gamma(mu,Mw,mt,Nf,ias) - c7=n_c7 - c7=2.0*(qm2-qm1)*c7*(1.0-hat_r)/M1 - - call ReC9eff(q2,qm2,mu,mc,RReC9eff) - call ImC9eff(q2,qm2,mu,mc,IImC9eff) - - call myC10a(mt,Mw,c10) - - FF2=(c10*ff/M1)**2 - FF2=FF2+(RReC9eff*ff/M1-c7*BB0/hat_s)**2 - FF2=FF2+(IImC9eff*ff/M1)**2 - - n_F2=FF2 - - return - end - - - - subroutine myHplus2_KstMuMu(q2,qm2,qm1,mu,mc) - - COMMON /nikff/ n_g,n_f,n_aplus,n_aminus,n_gplus, - #n_gminus, n_g0,n_B0, n_Bplus - COMMON /nik1/ n_model, n_res_swch, n_ias, n_Nf - COMMON /nik2/ n_M1, n_M2, n_mt, n_Mw, n_ml - COMMON /nik3/ n_G2, n_F2, n_Hplus2, n_R, n_R1 - COMMON /nikwc/ n_as, n_c1, n_c2, n_c3, n_c4, n_c5, n_c6, n_c7 - SAVE /nikff/,/nik1/,/nik2/,/nik3/,/nikwc/ - - real q2, M1, qm2, qm1, mu, mc, mt, Mw, ml - integer model, ias, Nf - - real n_g,n_f,n_aplus,n_aminus,n_gplus ! /nikff/ - real n_gminus, n_g0,n_B0, n_Bplus ! /nikff/ - integer n_model, n_res_swch, n_ias, n_Nf ! /nik1/ - real n_M1, n_M2, n_mt, n_Mw, n_ml ! /nik2/ - real n_G2, n_F2, n_Hplus2, n_R, n_R1 ! /nik3/ - real n_as, n_c1, n_c2, n_c3, n_c4, n_c5, n_c6, n_c7 ! /nikwc/ - - real HH2 - real hat_s - real aaplus, BBplus - real c7, RReC9eff, IImC9eff, c10 - - n_Hplus2 = 0.0 - - model=n_model - ias=n_ias - M1=n_M1 - mt=n_mt - Mw=n_Mw - ml=n_ml - Nf=n_Nf - - hat_s=q2/M1**2 - - call myaplus_KstMuMu(model,q2,M1,n_M2) - aaplus=n_aplus - call myBplus_KstMuMu(model,q2,M1,n_M2) - BBplus=n_Bplus - - call myC7gamma(mu,Mw,mt,Nf,ias) - c7=n_c7 - c7=2.0*(qm2-qm1)*c7/M1 - - call ReC9eff(q2,qm2,mu,mc,RReC9eff) - call ImC9eff(q2,qm2,mu,mc,IImC9eff) - - call myC10a(mt,Mw,c10) - - HH2=(c10*M1*aaplus)**2 - HH2=HH2+(RReC9eff*M1*aaplus-c7*BBplus/hat_s)**2 - HH2=HH2+(IImC9eff*M1*aaplus)**2 - - n_Hplus2=HH2 - - return - end - - - - subroutine myR_KstMuMu(q2,M2,qm2,qm1,mu,mc) - - COMMON /nikff/ n_g,n_f,n_aplus,n_aminus,n_gplus, - #n_gminus, n_g0,n_B0, n_Bplus - COMMON /nik1/ n_model, n_res_swch, n_ias, n_Nf - COMMON /nik2/ n_M1, n_M2, n_mt, n_Mw, n_ml - COMMON /nik3/ n_G2, n_F2, n_Hplus2, n_R, n_R1 - COMMON /nikwc/ n_as, n_c1, n_c2, n_c3, n_c4, n_c5, n_c6, n_c7 - SAVE /nikff/,/nik1/,/nik2/,/nik3/,/nikwc/ - - real q2, M1, M2, qm2, qm1, mu, mc, mt, Mw, ml - integer model, ias, Nf - - real n_g,n_f,n_aplus,n_aminus,n_gplus ! /nikff/ - real n_gminus, n_g0,n_B0, n_Bplus ! /nikff/ - integer n_model, n_res_swch, n_ias, n_Nf ! /nik1/ - real n_M1, n_M2, n_mt, n_Mw, n_ml ! /nik2/ - real n_G2, n_F2, n_Hplus2, n_R, n_R1 ! /nik3/ - real n_as, n_c1, n_c2, n_c3, n_c4, n_c5, n_c6, n_c7 ! /nikwc/ - - real Re - real hat_s, hat_r - real ff, BB0, aaplus, BBplus - real c7, RReC9eff, IImC9eff, c10 - - n_R = 0.0 - - model=n_model - ias=n_ias - M1=n_M1 - mt=n_mt - Mw=n_Mw - ml=n_ml - Nf=n_Nf - - hat_s=q2/M1**2 - hat_r=(M2/M1)**2 - - call myf_KstMuMu(model,q2,M1,n_M2) - ff=n_f - call myB0_KstMuMu(model,q2,M1,n_M2) - BB0=n_B0 - call myaplus_KstMuMu(model,q2,M1,n_M2) - aaplus=n_aplus - call myBplus_KstMuMu(model,q2,M1,n_M2) - BBplus=n_Bplus - - call myC7gamma(mu,Mw,mt,Nf,ias) - c7=n_c7 - c7=2.0*(qm2-qm1)*c7/M1 - - call ReC9eff(q2,qm2,mu,mc,RReC9eff) - call ImC9eff(q2,qm2,mu,mc,IImC9eff) - - call myC10a(mt,Mw,c10) - - Re=(RReC9eff*ff/M1-c7*BB0*(1.0-hat_r)/hat_s)* - #(RReC9eff*M1*aaplus-c7*BBplus/hat_s) - Re=Re+(IImC9eff**2)*ff*aaplus - Re=Re+(c10**2)*ff*aaplus - - n_R=Re - - return - end - - - - subroutine myR1_KstMuMu(q2,M2,qm2,qm1,mu,mc) - - COMMON /nikff/ n_g,n_f,n_aplus,n_aminus,n_gplus, - #n_gminus, n_g0,n_B0, n_Bplus - COMMON /nik1/ n_model, n_res_swch, n_ias, n_Nf - COMMON /nik2/ n_M1, n_M2, n_mt, n_Mw, n_ml - COMMON /nik3/ n_G2, n_F2, n_Hplus2, n_R, n_R1 - COMMON /nikwc/ n_as, n_c1, n_c2, n_c3, n_c4, n_c5, n_c6, n_c7 - SAVE /nikff/,/nik1/,/nik2/,/nik3/,/nikwc/ - - real q2, M1, M2, qm2, qm1, mu, mc, mt, Mw, ml - integer model, ias, Nf - - real n_g,n_f,n_aplus,n_aminus,n_gplus ! /nikff/ - real n_gminus, n_g0,n_B0, n_Bplus ! /nikff/ - integer n_model, n_res_swch, n_ias, n_Nf ! /nik1/ - real n_M1, n_M2, n_mt, n_Mw, n_ml ! /nik2/ - real n_G2, n_F2, n_Hplus2, n_R, n_R1 ! /nik3/ - real n_as, n_c1, n_c2, n_c3, n_c4, n_c5, n_c6, n_c7 ! /nikwc/ - - real Re1 - real hat_s, hat_r - real gg, ggplus, ff, BB0 - real c7, RReC9eff, c10 - - n_R1 = 0.0 - Re1=0.0 - - model=n_model - ias=n_ias - M1=n_M1 - mt=n_mt - Mw=n_Mw - ml=n_ml - Nf=n_Nf - - hat_s=q2/M1**2 - hat_r=(M2/M1)**2 - - call myg_KstMuMu(model,q2,M1,n_M2) - gg=n_g - - call mygplus_KstMuMu(model,q2,M1) - ggplus=n_gplus - - call myf_KstMuMu(model,q2,M1,n_M2) - ff=n_f - - call myB0_KstMuMu(model,q2,M1,n_M2) - BB0=n_B0 - - call myC7gamma(mu,Mw,mt,Nf,ias) - c7=n_c7 - c7=2.0*c7/M1 ! correct formula - - call ReC9eff(q2,qm2,mu,mc,RReC9eff) - - call myC10a(mt,Mw,c10) - - Re1=(RReC9eff*M1*gg-c7*(qm2+qm1)*ggplus/hat_s)*(c10*ff/M1) - Re1=Re1+(RReC9eff*ff/M1-c7*(qm2-qm1)*(1.0-hat_r)*BB0/hat_s) - #*c10*M1*gg - - n_R1=Re1 - - return - end - - - - subroutine mybeta1_KstMuMu(q2, t, M2, qm2, qm1, mu, mc) - - COMMON /nik2/ n_M1, n_M2, n_mt, n_Mw, n_ml - COMMON /nik3/ n_G2, n_F2, n_Hplus2, n_R, n_R1 - COMMON /nik4/ n_beta1, n_beta2, n_dV, n_Matrix2 - SAVE /nik2/,/nik3/,/nik4/ - - real q2, t, M1, M2, qm2, qm1, mu, mc, ml - - real n_M1, n_M2, n_mt, n_Mw, n_ml ! /nik2/ - real n_G2, n_F2, n_Hplus2, n_R, n_R1 ! /nik3/ - real n_beta1, n_beta2, n_dV, n_Matrix2 ! /nik4/ - - real bbeta1 - real hat_s, hat_r, hat_t, hat_ml - real GG2, FF2, HH2, Re - real PPi, LLambda - - n_beta1 = 0.0 - - M1=n_M1 - ml=n_ml - - hat_s=q2/M1**2 - hat_t=t/M1**2 - hat_r=(M2/M1)**2 - hat_ml=(ml/M1)**2 - - call myG2_KstMuMu(q2,qm2,qm1,mu,mc) - GG2=n_G2 - - call myF2_KstMuMu(q2,M2,qm2,qm1,mu,mc) - FF2=n_F2 - - call myHplus2_KstMuMu(q2,qm2,qm1,mu,mc) - HH2=n_Hplus2 - - call myR_KstMuMu(q2,M2,qm2,qm1,mu,mc) - Re=n_R - - LLambda = 0.0 - call myLambda(1.0,hat_s,hat_r,LLambda) - -c . call myPi(hat_s,hat_t,hat_r,hat_ml,PPi) - PPi=(hat_t-1.0)*(hat_t-hat_r)+hat_s*hat_t - PPi=PPi+hat_ml*(1.0+hat_r+hat_ml-hat_s-2.0*hat_t) - - bbeta1=((hat_s+2.0*hat_ml)*LLambda+2.0*hat_s*PPi)*GG2 - bbeta1=bbeta1+(hat_s+2.0*hat_ml-PPi/(2.0*hat_r))*FF2 - bbeta1=bbeta1-LLambda*PPi*HH2/(2.0*hat_r) - bbeta1=bbeta1+(hat_s-1.0+hat_r)*PPi*Re/hat_r - - n_beta1=bbeta1 - - return - end - - - - subroutine mybeta2_KstMuMu(q2, t, M2, qm2, qm1, mu, mc) - - COMMON /nik2/ n_M1, n_M2, n_mt, n_Mw, n_ml - COMMON /nik3/ n_G2, n_F2, n_Hplus2, n_R, n_R1 - COMMON /nik4/ n_beta1, n_beta2, n_dV, n_Matrix2 - SAVE /nik2/,/nik3/,/nik4/ - - real q2, t, M1, M2, qm2, qm1, mu, mc, ml - - real n_M1, n_M2, n_mt, n_Mw, n_ml ! /nik2/ - real n_G2, n_F2, n_Hplus2, n_R, n_R1 ! /nik3/ - real n_beta1, n_beta2, n_dV, n_Matrix2 ! /nik4/ - - real bbeta2 - real hat_s, hat_r, hat_t, hat_ml - real Re1 - - n_beta2 = 0.0 - - M1=n_M1 - ml=n_ml - - hat_s=q2/M1**2 - hat_t=t/M1**2 - hat_r=(M2/M1)**2 - hat_ml=(ml/M1)**2 - - call myR1_KstMuMu(q2,M2,qm2,qm1,mu,mc) - Re1=n_R1 - - bbeta2=2.0*hat_s*(2.0*hat_t+hat_s-hat_r-1.0-2.0*hat_ml) - bbeta2=bbeta2*Re1 - - n_beta2=bbeta2 - - return - end - - - - subroutine mydeltaV_KstMuMu(q2,M2) - - COMMON /nikff/ n_g,n_f,n_aplus,n_aminus,n_gplus, - #n_gminus, n_g0,n_B0, n_Bplus - COMMON /nik1/ n_model, n_res_swch, n_ias, n_Nf - COMMON /nik2/ n_M1, n_M2, n_mt, n_Mw, n_ml - COMMON /nik4/ n_beta1, n_beta2, n_dV, n_Matrix2 - SAVE /nikff/,/nik2/,/nik4/ - - real n_g,n_f,n_aplus,n_aminus,n_gplus ! /nikff/ - real n_gminus, n_g0,n_B0, n_Bplus ! /nikff/ - - integer n_model, n_res_swch, n_ias, n_Nf ! /nik1/ - real n_M1, n_M2, n_mt, n_Mw, n_ml ! /nik2/ - real n_beta1, n_beta2, n_dV, n_Matrix2 ! /nik4/ - - real q2, M1, M2, mt, Mw - integer model - - real ddV - real hat_s, hat_r - real gg, ff, aaplus, aaminus - real c10 - real LLambda - - n_dV = 0.0 - - model=n_model - M1=n_M1 - mt=n_mt - Mw=n_Mw - - hat_s=q2/M1**2 - hat_r=(M2/M1)**2 - -c print *,' ' -c print *,' BEGIN subroutine mydeltaV ' -c print *,' model =',model -c print *,' M1 =', M1 -c print *,' M2 =', M2 -c print *,' n_M2 =', n_M2 -c print *,' mt =', mt -c print *,' Mw =', Mw -c print *,' q2 =', q2 -c print *, ' hat_s =', hat_s -c print *, ' hat_r =', hat_r - -c print *,' call myLambda(...) in madeltaV(...)' - LLambda = 0.0 - call myLambda(1.0,hat_s,hat_r,LLambda) -c print *, ' Lambda =', LLambda - - call myg_KstMuMu(model,q2,M1,n_M2) - gg=n_g - call myf_KstMuMu(model,q2,M1,n_M2) - ff=n_f - call myaplus_KstMuMu(model,q2,M1,n_M2) - aaplus=n_aplus - call myaminus_KstMuMu(model,q2,M1,n_M2) - aaminus=n_aminus - - call myC10a(mt,Mw,c10) - - ddV=(-2.0)*(gg*M1)**2-3.0*((ff/M1)**2)/LLambda - ddV=ddV+(2.0*(1.0+hat_r)-hat_s)*(aaplus*M1)**2/(4.0*hat_r) - ddV=ddV+hat_s*(aaminus*M1)**2/(4.0*hat_r) - ddV=ddV+(ff*aaplus+ff*aaminus)/(2.0*hat_r) - ddV=ddV+(1.0-hat_r)*aaplus*aaminus*(M1**2)/(2.0*hat_r) - ddV=ddV*LLambda*(c10**2)/2.0 - -c print *,' Lambda =', LLambda -c print *,' c10 =', c10 -c print *,' gg =', gg -c print *,' ff =', ff -c print *,' aaplus =', aaplus -c print *,' aaminus =', aaminus - -c print *,' model =',model -c print *,' M1 =', M1 -c print *,' M2 =', M2 -c print *,' n_M2 =', n_M2 -c print *,' mt =', mt -c print *,' Mw =', Mw -c print *,' ddV =', ddV -c print *,' END subroutine mydeltaV ' -c print *,' ' - - n_dV=ddV - - return - end - - - -c ******************************************************************** -c ******************************************************************** -c * * -c * SQUARE of MATRIX ELEMENT * -c * for B\to K^* ell^+ell^- decay. * -c * * -c * by formula (33) in * -c * D.Melikhov, N.Nikitin, S.Simula, Phys.rev.D57, p.6814 (1998). * -c * * -c *------------------------------------------------------------------* -c *------------------------------------------------------------------* -c * * -c * model -- switching parametr of the model for form factor * -c * calculations: * -c * model=1 - CQM-MS (D.Melikhov, B.Stech, Phys.Rev.D62, * -c * p.014006, 2000 ), * -c * model=2 - LCSR (P.Ball,V.M.Braun, Phys.Rev.D58, * -c * p.094016, 1998), * -c * model=3 - CQM-MNS (D.Melikhov, N.Nikitin and S.Simula, * -c * Phys.Rev.D57, p.6814, 1998); * -c * * -c * res_swch -- switching parametr: * -c * res_swch=0 -- switch OFF the resonant contribution, * -c * res_swch=1 -- switch ON the resonant contribution; * -c * * -c * ias -- switching parametr for for Lms[] * -c * in the function myAs(...): * -c * ias = 0 -- Lms=min Lms, * -c * ias = 1 -- the mean value, * -c * ias = 2 -- Lms=max Lms; * -c * * -c * hat_s -- q^2/M1^2=s/M1^2; * -c * hat_t -- t/M1^{2}; * -c * M1 -- mass of the B -- meson, GeV; * -c * n_M2 -- in COMMON /nik2/ - mass of the REAL K^* - meson, GeV * -c * M2 -- mass of the VIRTUAL K^* - meson, GeV; * -c * M2.NE.n_M2 !!!; * -c * For the form-factor calculation we use n_M2 mass!!!!! * -c * mt -- the mass of t-quark, GeV; * -c * Mw -- the mass of W-meson, GeV; * -c * ml -- the lepton mass, GeV; * -c * Nf -- number of "effective" flavours ( Nf=5 for b-quark); * -c * the number of the collors = 3; * -c * * -c ******************************************************************** -c ******************************************************************** - subroutine m2fortran_KstMuMu(hat_s,hat_t,M2) - - dimension RMM2_max(3), RMM2_max_resonant(3), qm2(3), - #qm1(3), qmc(3) - - COMMON /nik1/ n_model, n_res_swch, n_ias, n_Nf - COMMON /nik2/ n_M1, n_M2, n_mt, n_Mw, n_ml - COMMON /nik4/ n_beta1, n_beta2, n_dV, n_Matrix2 - SAVE /nik1/,/nik2/,/nik4/ - -c......The COMMON blocs parameters - integer n_model, n_res_swch, n_ias, n_Nf ! /nik1/ - real n_M1, n_M2, n_mt, n_Mw, n_ml ! /nik2/ - real n_beta1, n_beta2, n_dV, n_Matrix2 ! /nik4/ - - real hat_s, hat_t, M1, M2, mt, Mw, ml - integer model, res_swch, ias, Nf - - real bbeta1, bbeta2, ddV - integer i - -c .the mandelstam variables; q2=q^2=s - real q2, t - -c .m_l^2/M_1^2 */ - real hat_ml -c .mu - scale parameter, GeV - real mu - -c .the value of the matrix element - real MM2 -c .the maximum value of the nonresonant matrix elemet MM2 - real RMM2_max -c .the maximum value of the resonant matrix elemet MM2 - real RMM2_max_resonant - -c .b-quark mass ( in the B -- meson M1), GeV - real qm2 -c .qm1 -- mass of the light quark, on wich m2 transition -c .in light meson M2, GeV - real qm1 -c .mc -- c-quark mass, GeV - real qmc - - model=n_model - res_swch=n_res_swch - ias=n_ias - Nf=n_Nf - M1=n_M1 - mt=n_mt - Mw=n_Mw - ml=n_ml - - n_beta1 = 0.0 - n_beta2 = 0.0 - n_dV = 0.0 - n_Matrix2 = 0.0 - - q2=hat_s*(M1**2) - t=hat_t*(M1**2) - hat_ml=(ml/M1)**2 - - RMM2_max_resonant(1) = 10000000.0 - RMM2_max_resonant(2) = 100000.0 - RMM2_max_resonant(3) = 100000.0 - - qm2(1) = 4.85 - qm2(2) = 4.8 - qm2(3) = 5.0 - - qm1(1) = 0.35 - qm1(2) = 0.15 - qm1(3) = 0.42 - - qmc(1) = 1.45 - qmc(2) = 1.4 - qmc(3) = 1.65 - - i=model - mu=qm2(i) - - -c .inicialisation of the MM2_max() - if(model.EQ.1) then - RMM2_max(1) = 5926886.0 ! for e^+e^- - RMM2_max(2) = 66.5 ! for \mu^+\mu^- - RMM2_max(3) = 10.4 ! for \tau^+\tau^- - endif - if(model.EQ.2) then - RMM2_max(1) = 2309049.8 ! for e^+e^- - RMM2_max(2) = 62.4 ! for \mu^+\mu^- - RMM2_max(3) = 13.3 ! for \tau^+\tau^- - endif - if(model.EQ.3) then - RMM2_max(1)= 3502320.0 ! for e^+e^- - RMM2_max(2)= 58.0 ! for \mu^+\mu^- - RMM2_max(3)= 10.3 ! for \tau^+\tau^- - endif - -c .The matrix element calculation - call mybeta1_KstMuMu(q2,t,M2,qm2(i),qm1(i),mu,qmc(i)) - bbeta1=n_beta1 - - call mybeta2_KstMuMu(q2,t,M2,qm2(i),qm1(i),mu,qmc(i)) - bbeta2=n_beta2 - - call mydeltaV_KstMuMu(q2,M2) - ddV=n_dV - - MM2=bbeta1+bbeta2+4.0*hat_ml*ddV - -c .what RMM2_max[i] to selected? - if(ml.LT.0.09) then - i=1 - endif - if(ml.LT.0.2) then - i=2 - endif - if(ml.GE.0.2) then - i=3 - endif - -c .The normalisation of the matrix element - if(res_swch.EQ.0) then - MM2=MM2/RMM2_max(i) - endif - if(res_swch.EQ.1) then - MM2=MM2/RMM2_max_resonant(i) - endif - - if(MM2.LT.0.0) then - print *,' ' - print *,' subroutine m2fortran_KstMuMu ' - print *,' Fatal ERROR: the square of the normalise - #matrix element < 0' - print *,' hat_s =', hat_s, ' hat_t =', hat_t - print *,' MM2 =', MM2 - print *,' By!' - print *,' ' - MM2=-1.0 - STOP - endif - - if(MM2.GT.1.0) then - print *,' ' - print *,' subroutine m2fortran_KstMuMu ' - print *,' Fatal ERROR: the square of the normalise - #matrix element > 1' - print *,' hat_s =', hat_s, ' hat_t =', hat_t - print *,' MM2 =', MM2 - print *,' By!' - print *,' ' - MM2=-2.0 - STOP - endif - - n_Matrix2=MM2 - -c print *,' ******************************** ' -c print *,' * * ' -c print *,' * n_Matrix2 =', n_Matrix2, '* ' -c print *,' * END subroutine m2fortran * ' -c print *,' * * ' -c print *,' ******************************** ' -c print *,' ' - - return - end diff --git a/Generators/PythiaB/src/matrix_for_fortran_PhiMuMu.F b/Generators/PythiaB/src/matrix_for_fortran_PhiMuMu.F deleted file mode 100644 index f3fd6b90aeb1ac65fa590f47cb5092144eca7d52..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/src/matrix_for_fortran_PhiMuMu.F +++ /dev/null @@ -1,741 +0,0 @@ -c 09.03.2005 01.09.2006 - -c *********************************************** -c *********************************************** -c ** THE MATRIX ELEMENT CALCULATIONS ** -c ** ** -c ** Version 1.01 ** -c ** for ** -c ** B^0_s -> phi^0mu^+mu^- ** -c ** ** -c *********************************************** -c *********************************************** - - - subroutine myG2_PhiMuMu(q2,qm2,qm1,mu,mc) - - COMMON /nikff/ n_g,n_f,n_aplus,n_aminus,n_gplus, - #n_gminus, n_g0,n_B0, n_Bplus - COMMON /nik1/ n_model, n_res_swch, n_ias, n_Nf - COMMON /nik2/ n_M1, n_M2, n_mt, n_Mw, n_ml - COMMON /nik3/ n_G2, n_F2, n_Hplus2, n_R, n_R1 - COMMON /nikwc/ n_as, n_c1, n_c2, n_c3, n_c4, n_c5, n_c6, n_c7 - SAVE /nikff/,/nik1/,/nik2/,/nik3/,/nikwc/ - - real q2, M1, qm2, qm1, mu, mc, mt, Mw, ml - integer model, ias, Nf - - real n_g,n_f,n_aplus,n_aminus,n_gplus ! /nikff/ - real n_gminus, n_g0,n_B0, n_Bplus ! /nikff/ - integer n_model, n_res_swch, n_ias, n_Nf ! /nik1/ - real n_M1, n_M2, n_mt, n_Mw, n_ml ! /nik2/ - real n_G2, n_F2, n_Hplus2, n_R, n_R1 ! /nik3/ - real n_as, n_c1, n_c2, n_c3, n_c4, n_c5, n_c6, n_c7 ! /nikwc/ - - real GG2 - real hat_s - real gg, ggplus - real c7, RReC9eff, IImC9eff, c10 - - n_G2 = 0.0 - - model=n_model - ias=n_ias - M1=n_M1 - mt=n_mt - Mw=n_Mw - ml=n_ml - Nf=n_Nf - - hat_s=q2/M1**2 - - call myg_PhiMuMu(model,q2,M1,n_M2) - gg=n_g - call mygplus_PhiMuMu(model,q2,n_M1) - ggplus=n_gplus - - call myC7gamma(mu,Mw,mt,Nf,ias) - c7=n_c7 - c7=2.0*(qm2+qm1)*c7/M1 - - call ReC9eff(q2,qm2,mu,mc,RReC9eff) - call ImC9eff(q2,qm2,mu,mc,IImC9eff) - - call myC10a(mt,Mw,c10) - - GG2=(c10*M1*gg)**2 - GG2=GG2+(RReC9eff*M1*gg-c7*ggplus/hat_s)**2 - GG2=GG2+(IImC9eff*M1*gg)**2 - - n_G2=GG2 - - return - end - - - - subroutine myF2_PhiMuMu(q2,M2,qm2,qm1,mu,mc) - - COMMON /nikff/ n_g,n_f,n_aplus,n_aminus,n_gplus, - #n_gminus, n_g0,n_B0, n_Bplus - COMMON /nik1/ n_model, n_res_swch, n_ias, n_Nf - COMMON /nik2/ n_M1, n_M2, n_mt, n_Mw, n_ml - COMMON /nik3/ n_G2, n_F2, n_Hplus2, n_R, n_R1 - COMMON /nikwc/ n_as, n_c1, n_c2, n_c3, n_c4, n_c5, n_c6, n_c7 - SAVE /nikff/,/nik1/,/nik2/,/nik3/,/nikwc/ - - real q2, M1, M2, qm2, qm1, mu, mc, mt, Mw, ml - integer model, ias, Nf - - real n_g,n_f,n_aplus,n_aminus,n_gplus ! /nikff/ - real n_gminus, n_g0,n_B0, n_Bplus ! /nikff/ - integer n_model, n_res_swch, n_ias, n_Nf ! /nik1/ - real n_M1, n_M2, n_mt, n_Mw, n_ml ! /nik2/ - real n_G2, n_F2, n_Hplus2, n_R, n_R1 ! /nik3/ - real n_as, n_c1, n_c2, n_c3, n_c4, n_c5, n_c6, n_c7 ! /nikwc/ - - real FF2 - real hat_s, hat_r - real ff, BB0 - real c7, RReC9eff, IImC9eff, c10 - - n_F2 = 0.0 - - model=n_model - ias=n_ias - M1=n_M1 - mt=n_mt - Mw=n_Mw - ml=n_ml - Nf=n_Nf - - hat_s=q2/M1**2 - hat_r=(M2/M1)**2 - - call myf_PhiMuMu(model,q2,M1,n_M2) - ff=n_f - call myB0_PhiMuMu(model,q2,M1,n_M2) - BB0=n_B0 - - call myC7gamma(mu,Mw,mt,Nf,ias) - c7=n_c7 - c7=2.0*(qm2-qm1)*c7*(1.0-hat_r)/M1 - - call ReC9eff(q2,qm2,mu,mc,RReC9eff) - call ImC9eff(q2,qm2,mu,mc,IImC9eff) - - call myC10a(mt,Mw,c10) - - FF2=(c10*ff/M1)**2 - FF2=FF2+(RReC9eff*ff/M1-c7*BB0/hat_s)**2 - FF2=FF2+(IImC9eff*ff/M1)**2 - - n_F2=FF2 - - return - end - - - - subroutine myHplus2_PhiMuMu(q2,qm2,qm1,mu,mc) - - COMMON /nikff/ n_g,n_f,n_aplus,n_aminus,n_gplus, - #n_gminus, n_g0,n_B0, n_Bplus - COMMON /nik1/ n_model, n_res_swch, n_ias, n_Nf - COMMON /nik2/ n_M1, n_M2, n_mt, n_Mw, n_ml - COMMON /nik3/ n_G2, n_F2, n_Hplus2, n_R, n_R1 - COMMON /nikwc/ n_as, n_c1, n_c2, n_c3, n_c4, n_c5, n_c6, n_c7 - SAVE /nikff/,/nik1/,/nik2/,/nik3/,/nikwc/ - - real q2, M1, qm2, qm1, mu, mc, mt, Mw, ml - integer model, ias, Nf - - real n_g,n_f,n_aplus,n_aminus,n_gplus ! /nikff/ - real n_gminus, n_g0,n_B0, n_Bplus ! /nikff/ - integer n_model, n_res_swch, n_ias, n_Nf ! /nik1/ - real n_M1, n_M2, n_mt, n_Mw, n_ml ! /nik2/ - real n_G2, n_F2, n_Hplus2, n_R, n_R1 ! /nik3/ - real n_as, n_c1, n_c2, n_c3, n_c4, n_c5, n_c6, n_c7 ! /nikwc/ - - real HH2 - real hat_s - real aaplus, BBplus - real c7, RReC9eff, IImC9eff, c10 - - n_Hplus2 = 0.0 - - model=n_model - ias=n_ias - M1=n_M1 - mt=n_mt - Mw=n_Mw - ml=n_ml - Nf=n_Nf - - hat_s=q2/M1**2 - - call myaplus_PhiMuMu(model,q2,M1,n_M2) - aaplus=n_aplus - call myBplus_PhiMuMu(model,q2,M1,n_M2) - BBplus=n_Bplus - - call myC7gamma(mu,Mw,mt,Nf,ias) - c7=n_c7 - c7=2.0*(qm2-qm1)*c7/M1 - - call ReC9eff(q2,qm2,mu,mc,RReC9eff) - call ImC9eff(q2,qm2,mu,mc,IImC9eff) - - call myC10a(mt,Mw,c10) - - HH2=(c10*M1*aaplus)**2 - HH2=HH2+(RReC9eff*M1*aaplus-c7*BBplus/hat_s)**2 - HH2=HH2+(IImC9eff*M1*aaplus)**2 - - n_Hplus2=HH2 - - return - end - - - - subroutine myR_PhiMuMu(q2,M2,qm2,qm1,mu,mc) - - COMMON /nikff/ n_g,n_f,n_aplus,n_aminus,n_gplus, - #n_gminus, n_g0,n_B0, n_Bplus - COMMON /nik1/ n_model, n_res_swch, n_ias, n_Nf - COMMON /nik2/ n_M1, n_M2, n_mt, n_Mw, n_ml - COMMON /nik3/ n_G2, n_F2, n_Hplus2, n_R, n_R1 - COMMON /nikwc/ n_as, n_c1, n_c2, n_c3, n_c4, n_c5, n_c6, n_c7 - SAVE /nikff/,/nik1/,/nik2/,/nik3/,/nikwc/ - - real q2, M1, M2, qm2, qm1, mu, mc, mt, Mw, ml - integer model, ias, Nf - - real n_g,n_f,n_aplus,n_aminus,n_gplus ! /nikff/ - real n_gminus, n_g0,n_B0, n_Bplus ! /nikff/ - integer n_model, n_res_swch, n_ias, n_Nf ! /nik1/ - real n_M1, n_M2, n_mt, n_Mw, n_ml ! /nik2/ - real n_G2, n_F2, n_Hplus2, n_R, n_R1 ! /nik3/ - real n_as, n_c1, n_c2, n_c3, n_c4, n_c5, n_c6, n_c7 ! /nikwc/ - - real Re - real hat_s, hat_r - real ff, BB0, aaplus, BBplus - real c7, RReC9eff, IImC9eff, c10 - - n_R = 0.0 - - model=n_model - ias=n_ias - M1=n_M1 - mt=n_mt - Mw=n_Mw - ml=n_ml - Nf=n_Nf - - hat_s=q2/M1**2 - hat_r=(M2/M1)**2 - - call myf_PhiMuMu(model,q2,M1,n_M2) - ff=n_f - call myB0_PhiMuMu(model,q2,M1,n_M2) - BB0=n_B0 - call myaplus_PhiMuMu(model,q2,M1,n_M2) - aaplus=n_aplus - call myBplus_PhiMuMu(model,q2,M1,n_M2) - BBplus=n_Bplus - - call myC7gamma(mu,Mw,mt,Nf,ias) - c7=n_c7 - c7=2.0*(qm2-qm1)*c7/M1 - - call ReC9eff(q2,qm2,mu,mc,RReC9eff) - call ImC9eff(q2,qm2,mu,mc,IImC9eff) - - call myC10a(mt,Mw,c10) - - Re=(RReC9eff*ff/M1-c7*BB0*(1.0-hat_r)/hat_s)* - #(RReC9eff*M1*aaplus-c7*BBplus/hat_s) - Re=Re+(IImC9eff**2)*ff*aaplus - Re=Re+(c10**2)*ff*aaplus - - n_R=Re - - return - end - - - - subroutine myR1_PhiMuMu(q2,M2,qm2,qm1,mu,mc) - - COMMON /nikff/ n_g,n_f,n_aplus,n_aminus,n_gplus, - #n_gminus, n_g0,n_B0, n_Bplus - COMMON /nik1/ n_model, n_res_swch, n_ias, n_Nf - COMMON /nik2/ n_M1, n_M2, n_mt, n_Mw, n_ml - COMMON /nik3/ n_G2, n_F2, n_Hplus2, n_R, n_R1 - COMMON /nikwc/ n_as, n_c1, n_c2, n_c3, n_c4, n_c5, n_c6, n_c7 - SAVE /nikff/,/nik1/,/nik2/,/nik3/,/nikwc/ - - real q2, M1, M2, qm2, qm1, mu, mc, mt, Mw, ml - integer model, ias, Nf - - real n_g,n_f,n_aplus,n_aminus,n_gplus ! /nikff/ - real n_gminus, n_g0,n_B0, n_Bplus ! /nikff/ - integer n_model, n_res_swch, n_ias, n_Nf ! /nik1/ - real n_M1, n_M2, n_mt, n_Mw, n_ml ! /nik2/ - real n_G2, n_F2, n_Hplus2, n_R, n_R1 ! /nik3/ - real n_as, n_c1, n_c2, n_c3, n_c4, n_c5, n_c6, n_c7 ! /nikwc/ - - real Re1 - real hat_s, hat_r - real gg, ggplus, ff, BB0 - real c7, RReC9eff, c10 - - n_R1 = 0.0 - Re1=0.0 - - model=n_model - ias=n_ias - M1=n_M1 - mt=n_mt - Mw=n_Mw - ml=n_ml - Nf=n_Nf - - hat_s=q2/M1**2 - hat_r=(M2/M1)**2 - - call myg_PhiMuMu(model,q2,M1,n_M2) - gg=n_g - - call mygplus_PhiMuMu(model,q2,M1) - ggplus=n_gplus - - call myf_PhiMuMu(model,q2,M1,n_M2) - ff=n_f - - call myB0_PhiMuMu(model,q2,M1,n_M2) - BB0=n_B0 - - call myC7gamma(mu,Mw,mt,Nf,ias) - c7=n_c7 - c7=2.0*c7/M1 ! correct formula - - - call ReC9eff(q2,qm2,mu,mc,RReC9eff) - - call myC10a(mt,Mw,c10) - - Re1=(RReC9eff*M1*gg-c7*(qm2+qm1)*ggplus/hat_s)*(c10*ff/M1) - Re1=Re1+(RReC9eff*ff/M1-c7*(qm2-qm1)*(1.0-hat_r)*BB0/hat_s) - #*c10*M1*gg - - n_R1=Re1 - - return - end - - - - subroutine mybeta1_PhiMuMu(q2, t, M2, qm2, qm1, mu, mc) - - COMMON /nik2/ n_M1, n_M2, n_mt, n_Mw, n_ml - COMMON /nik3/ n_G2, n_F2, n_Hplus2, n_R, n_R1 - COMMON /nik4/ n_beta1, n_beta2, n_dV, n_Matrix2 - SAVE /nik2/,/nik3/,/nik4/ - - real q2, t, M1, M2, qm2, qm1, mu, mc, ml - - real n_M1, n_M2, n_mt, n_Mw, n_ml ! /nik2/ - real n_G2, n_F2, n_Hplus2, n_R, n_R1 ! /nik3/ - real n_beta1, n_beta2, n_dV, n_Matrix2 ! /nik4/ - - real bbeta1 - real hat_s, hat_r, hat_t, hat_ml - real GG2, FF2, HH2, Re - real PPi, LLambda - - n_beta1 = 0.0 - - M1=n_M1 - ml=n_ml - - hat_s=q2/M1**2 - hat_t=t/M1**2 - hat_r=(M2/M1)**2 - hat_ml=(ml/M1)**2 - - call myG2_PhiMuMu(q2,qm2,qm1,mu,mc) - GG2=n_G2 - - call myF2_PhiMuMu(q2,M2,qm2,qm1,mu,mc) - FF2=n_F2 - - call myHplus2_PhiMuMu(q2,qm2,qm1,mu,mc) - HH2=n_Hplus2 - - call myR_PhiMuMu(q2,M2,qm2,qm1,mu,mc) - Re=n_R - - LLambda = 0.0 - call myLambda(1.0,hat_s,hat_r,LLambda) - -c . call myPi(hat_s,hat_t,hat_r,hat_ml,PPi) - PPi=(hat_t-1.0)*(hat_t-hat_r)+hat_s*hat_t - PPi=PPi+hat_ml*(1.0+hat_r+hat_ml-hat_s-2.0*hat_t) - - bbeta1=((hat_s+2.0*hat_ml)*LLambda+2.0*hat_s*PPi)*GG2 - bbeta1=bbeta1+(hat_s+2.0*hat_ml-PPi/(2.0*hat_r))*FF2 - bbeta1=bbeta1-LLambda*PPi*HH2/(2.0*hat_r) - bbeta1=bbeta1+(hat_s-1.0+hat_r)*PPi*Re/hat_r - - n_beta1=bbeta1 - - return - end - - - - subroutine mybeta2_PhiMuMu(q2, t, M2, qm2, qm1, mu, mc) - - COMMON /nik2/ n_M1, n_M2, n_mt, n_Mw, n_ml - COMMON /nik3/ n_G2, n_F2, n_Hplus2, n_R, n_R1 - COMMON /nik4/ n_beta1, n_beta2, n_dV, n_Matrix2 - SAVE /nik2/,/nik3/,/nik4/ - - real q2, t, M1, M2, qm2, qm1, mu, mc, ml - - real n_M1, n_M2, n_mt, n_Mw, n_ml ! /nik2/ - real n_G2, n_F2, n_Hplus2, n_R, n_R1 ! /nik3/ - real n_beta1, n_beta2, n_dV, n_Matrix2 ! /nik4/ - - real bbeta2 - real hat_s, hat_r, hat_t, hat_ml - real Re1 - - n_beta2 = 0.0 - - M1=n_M1 - ml=n_ml - - hat_s=q2/M1**2 - hat_t=t/M1**2 - hat_r=(M2/M1)**2 - hat_ml=(ml/M1)**2 - - call myR1_PhiMuMu(q2,M2,qm2,qm1,mu,mc) - Re1=n_R1 - - bbeta2=2.0*hat_s*(2.0*hat_t+hat_s-hat_r-1.0-2.0*hat_ml) - bbeta2=bbeta2*Re1 - - n_beta2=bbeta2 - - return - end - - - - subroutine mydeltaV_PhiMuMu(q2,M2) - - COMMON /nikff/ n_g,n_f,n_aplus,n_aminus,n_gplus, - #n_gminus, n_g0,n_B0, n_Bplus - COMMON /nik1/ n_model, n_res_swch, n_ias, n_Nf - COMMON /nik2/ n_M1, n_M2, n_mt, n_Mw, n_ml - COMMON /nik4/ n_beta1, n_beta2, n_dV, n_Matrix2 - SAVE /nikff/,/nik2/,/nik4/ - - real n_g,n_f,n_aplus,n_aminus,n_gplus ! /nikff/ - real n_gminus, n_g0,n_B0, n_Bplus ! /nikff/ - - integer n_model, n_res_swch, n_ias, n_Nf ! /nik1/ - real n_M1, n_M2, n_mt, n_Mw, n_ml ! /nik2/ - real n_beta1, n_beta2, n_dV, n_Matrix2 ! /nik4/ - - real q2, M1, M2, mt, Mw - integer model - - real ddV - real hat_s, hat_r - real gg, ff, aaplus, aaminus - real c10 - real LLambda - - n_dV = 0.0 - - model=n_model - M1=n_M1 - mt=n_mt - Mw=n_Mw - - hat_s=q2/M1**2 - hat_r=(M2/M1)**2 - -c print *,' ' -c print *,' BEGIN subroutine mydeltaV ' -c print *,' model =',model -c print *,' M1 =', M1 -c print *,' M2 =', M2 -c print *,' n_M2 =', n_M2 -c print *,' mt =', mt -c print *,' Mw =', Mw -c print *,' q2 =', q2 -c print *, ' hat_s =', hat_s -c print *, ' hat_r =', hat_r - - LLambda = 0.0 - call myLambda(1.0,hat_s,hat_r,LLambda) - - call myg_PhiMuMu(model,q2,M1,n_M2) - gg=n_g - call myf_PhiMuMu(model,q2,M1,n_M2) - ff=n_f - call myaplus_PhiMuMu(model,q2,M1,n_M2) - aaplus=n_aplus - call myaminus_PhiMuMu(model,q2,M1,n_M2) - aaminus=n_aminus - - call myC10a(mt,Mw,c10) - - ddV=(-2.0)*(gg*M1)**2-3.0*((ff/M1)**2)/LLambda - ddV=ddV+(2.0*(1.0+hat_r)-hat_s)*(aaplus*M1)**2/(4.0*hat_r) - ddV=ddV+hat_s*(aaminus*M1)**2/(4.0*hat_r) - ddV=ddV+(ff*aaplus+ff*aaminus)/(2.0*hat_r) - ddV=ddV+(1.0-hat_r)*aaplus*aaminus*(M1**2)/(2.0*hat_r) - ddV=ddV*LLambda*(c10**2)/2.0 - -c print *,' Lambda =', LLambda -c print *,' c10 =', c10 -c print *,' gg =', gg -c print *,' ff =', ff -c print *,' aaplus =', aaplus -c print *,' aaminus =', aaminus - -c print *,' model =',model -c print *,' M1 =', M1 -c print *,' M2 =', M2 -c print *,' n_M2 =', n_M2 -c print *,' mt =', mt -c print *,' Mw =', Mw -c print *,' ddV =', ddV -c print *,' END subroutine mydeltaV_PhiMuMu ' -c print *,' ' - - n_dV=ddV - - return - end - - - -c ******************************************************************** -c ******************************************************************** -c * * -c * SQUARE of MATRIX ELEMENT * -c * for B\to K^* ell^+ell^- decay. * -c * * -c * by formula (33) in * -c * D.Melikhov, N.Nikitin, S.Simula, Phys.rev.D57, p.6814 (1998). * -c * * -c *------------------------------------------------------------------* -c *------------------------------------------------------------------* -c * * -c * model -- switching parametr of the model for form factor * -c * calculations: * -c * model=1-3 - CQM-MS (D.Melikhov, B.Stech, Phys.Rev.D62, * -c * p.014006, 2000 ), * -c * * -c * res_swch -- switching parametr: * -c * res_swch=0 -- switch OFF the resonant contribution, * -c * res_swch=1 -- switch ON the resonant contribution; * -c * * -c * ias -- switching parametr for for Lms[] * -c * in the function myAs(...): * -c * ias = 0 -- Lms=min Lms, * -c * ias = 1 -- the mean value, * -c * ias = 2 -- Lms=max Lms; * -c * * -c * hat_s -- q^2/M1^2=s/M1^2; * -c * hat_t -- t/M1^{2}; * -c * M1 -- mass of the B -- meson, GeV; * -c * n_M2 -- in COMMON /nik2/ - mass of the REAL K^* - meson, GeV * -c * M2 -- mass of the VIRTUAL K^* - meson, GeV; * -c * M2.NE.n_M2 !!!; * -c * For the form-factor calculation we use n_M2 mass!!!!! * -c * mt -- the mass of t-quark, GeV; * -c * Mw -- the mass of W-meson, GeV; * -c * ml -- the lepton mass, GeV; * -c * Nf -- number of "effective" flavours ( Nf=5 for b-quark); * -c * the number of the collors = 3; * -c * * -c ******************************************************************** -c ******************************************************************** - subroutine m2fortran_PhiMuMu(hat_s,hat_t,M2) - - dimension RMM2_max(3), RMM2_max_resonant(3), qm2(3), - #qm1(3), qmc(3) - - COMMON /nik1/ n_model, n_res_swch, n_ias, n_Nf - COMMON /nik2/ n_M1, n_M2, n_mt, n_Mw, n_ml - COMMON /nik4/ n_beta1, n_beta2, n_dV, n_Matrix2 - SAVE /nik1/,/nik2/,/nik4/ - -c......The COMMON blocs parameters - integer n_model, n_res_swch, n_ias, n_Nf ! /nik1/ - real n_M1, n_M2, n_mt, n_Mw, n_ml ! /nik2/ - real n_beta1, n_beta2, n_dV, n_Matrix2 ! /nik4/ - - real hat_s, hat_t, M1, M2, mt, Mw, ml - integer model, res_swch, ias, Nf - - real bbeta1, bbeta2, ddV - integer i - -c .the mandelstam variables; q2=q^2=s - real q2, t - -c .m_l^2/M_1^2 */ - real hat_ml -c .mu - scale parameter, GeV - real mu - -c .the value of the matrix element - real MM2 -c .the maximum value of the nonresonant matrix elemet MM2 - real RMM2_max -c .the maximum value of the resonant matrix elemet MM2 - real RMM2_max_resonant - -c .b-quark mass ( in the B -- meson M1), GeV - real qm2 -c .qm1 -- mass of the light quark, on wich m2 transition -c .in light meson M2, GeV - real qm1 -c .mc -- c-quark mass, GeV - real qmc - - model=n_model - res_swch=n_res_swch - ias=n_ias - Nf=n_Nf - M1=n_M1 - mt=n_mt - Mw=n_Mw - ml=n_ml - - n_beta1 = 0.0 - n_beta2 = 0.0 - n_dV = 0.0 - n_Matrix2 = 0.0 - - q2=hat_s*(M1**2) - t=hat_t*(M1**2) - hat_ml=(ml/M1)**2 - - RMM2_max_resonant(1) = 10000000.0 - RMM2_max_resonant(2) = 10000000.0 - RMM2_max_resonant(3) = 10000000.0 - - qm2(1) = 4.85 - qm2(2) = 4.85 - qm2(3) = 4.85 - - qm1(1) = 0.35 - qm1(2) = 0.35 - qm1(3) = 0.35 - - qmc(1) = 1.45 - qmc(2) = 1.45 - qmc(3) = 1.45 - - i=model - mu=qm2(i) - - -c .inicialisation of the MM2_max() - if(model.EQ.1) then - RMM2_max(1) = 7000000.0 ! for e^+e^- - RMM2_max(2) = 70.0 ! for \mu^+\mu^- - RMM2_max(3) = 15.0 ! for \tau^+\tau^- - endif - if(model.EQ.2) then - RMM2_max(1) = 7000000.0 ! for e^+e^- - RMM2_max(2) = 70.0 ! for \mu^+\mu^- - RMM2_max(3) = 15.0 ! for \tau^+\tau^- - endif - if(model.EQ.3) then - RMM2_max(1)= 7000000.0 ! for e^+e^- - RMM2_max(2)= 70.0 ! for \mu^+\mu^- - RMM2_max(3)= 15.0 ! for \tau^+\tau^- - endif - -c .The matrix element calculation - call mybeta1_PhiMuMu(q2,t,M2,qm2(i),qm1(i),mu,qmc(i)) - bbeta1=n_beta1 - - call mybeta2_PhiMuMu(q2,t,M2,qm2(i),qm1(i),mu,qmc(i)) - bbeta2=n_beta2 - - call mydeltaV_PhiMuMu(q2,M2) - ddV=n_dV - - MM2=bbeta1+bbeta2+4.0*hat_ml*ddV - -c .what RMM2_max[i] to selected? - if(ml.LT.0.09) then - i=1 - endif - if(ml.LT.0.2) then - i=2 - endif - if(ml.GE.0.2) then - i=3 - endif - -c .The normalisation of the matrix element - if(res_swch.EQ.0) then - MM2=MM2/RMM2_max(i) - endif - if(res_swch.EQ.1) then - MM2=MM2/RMM2_max_resonant(i) - endif - - if(MM2.LT.0.0) then - print *,' ' - print *,' subroutine m2fortran_PhiMuMu' - print *,' Fatal ERROR: the square of the normalise - #matrix element < 0' - print *,' hat_s =', hat_s, ' hat_t =', hat_t - print *,' MM2 =', MM2 - print *,' By!' - print *,' ' - MM2=-1.0 - STOP - endif - - if(MM2.GT.1.0) then - print *,' ' - print *,' subroutine m2fortran_PhiMuMu' - print *,' Fatal ERROR: the square of the normalise - #matrix element > 1' - print *,' hat_s =', hat_s, ' hat_t =', hat_t - print *,' MM2 =', MM2 - print *,' By!' - print *,' ' - MM2=-2.0 - STOP - endif - - n_Matrix2=MM2 - -c print *,' ******************************** ' -c print *,' * * ' -c print *,' * n_Matrix2 =', n_Matrix2, '* ' -c print *,' * END subroutine m2fortran * ' -c print *,' * * ' -c print *,' ******************************** ' -c print *,' ' - - return - end diff --git a/Generators/PythiaB/src/matrix_for_fortran_b2gmm.F b/Generators/PythiaB/src/matrix_for_fortran_b2gmm.F deleted file mode 100644 index 90c46c7d0cafd6f06b9bd485cd0b2bcd6fb39d1c..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/src/matrix_for_fortran_b2gmm.F +++ /dev/null @@ -1,973 +0,0 @@ -c 09.02.2004 17.02.2004 19.02.2004 -c 20.02.2004 28.03.2004 29.03.2004 -c 30.03.2004 06.05.2004 18.10.2005 -c 01.11.2005 15.05.2007 - -c *************************************************** -c *************************************************** -c ** THE MATRIX ELEMENT CALCULATIONS ** -c ** ** -c ** for the decay B^0_{d,s}\to\gamma\mu^+\mu^- ** -c ** ** -c ** Version 1.061 ** -c ** ** -c *************************************************** -c *************************************************** - - - -c ********************************************** -c * * -c * Scaled energy variable "x" on p.034002-6 * -c * * -c * by F.Kruger and D.Melikhov, * -c * Phys.Rev. D67, 034002 (2003). * -c * * -c ********************************************** - subroutine myx(q2,x) - - COMMON /nikff2/ n_Eg, n_ffs_cqm - COMMON /nik2/ n_M1, n_M2, n_mt, n_Mw, n_ml - SAVE /nikff2/,/nik2/ - - real n_Eg, n_ffs_cqm ! /nikff2/ - real n_M1, n_M2, n_mt, n_Mw, n_ml ! /nik2/ - real q2, x, Eg, M1 - - M1=n_M1 - - call q2toEg(q2) - Eg=n_Eg - - x=2.0*Eg/M1 - - return - end - - -c ********************************************** -c * * -c * For \cos\theta calculation * -c * * -c ********************************************** - subroutine myzeta(q2,t,zeta) - - COMMON /nik2/ n_M1, n_M2, n_mt, n_Mw, n_ml - SAVE /nik2/ - - real n_M1, n_M2, n_mt, n_Mw, n_ml ! /nik2/ - real M1, ml, hat_s, hat_t, hat_ml - real q2,t, zeta - - M1=n_M1 - ml=n_ml - - hat_ml=ml/M1 - hat_s=q2/(M1**2) - hat_t=t/(M1**2) - - zeta=1.0+2.*(hat_ml**2)-hat_s-2.0*hat_t - -c print *, ' hat_s =', hat_s, ' hat_t =', hat_t, -c #' hat_ml =', hat_ml,' zeta =', zeta - - return - end - - -c ********************************************** -c * * -c * Normalise Mandelstam variable "u/M_1^2" * -c * * -c ********************************************** - subroutine myhatu(hat_s,hat_t,hat_u) - - COMMON /nik2/ n_M1, n_M2, n_mt, n_Mw, n_ml - SAVE /nik2/ - - real n_M1, n_M2, n_mt, n_Mw, n_ml ! /nik2/ - real hat_s, hat_t, hat_u, hat_ml, M1, ml - - M1=n_M1 - ml=n_ml - - hat_ml=ml/M1 - hat_u=1+2.0*(hat_ml**2)-hat_s-hat_t - - return - end - -c ********************************************** -c * * -c * Subroutine F_1 * -c * * -c * by F.Kruger and D.Melikhov, * -c * Phys.Rev. D67, 034002 (2003), * -c * equation (36). * -c * * -c ********************************************** - subroutine myF1_gmm(q2,qm2,mu,mc) - - COMMON /nikff2/ n_Eg, n_ffs_cqm - COMMON /nik1/ n_model, n_res_swch, n_ias, n_Nf - COMMON /nik2/ n_M1, n_M2, n_mt, n_Mw, n_ml - COMMON /nik3/ n_F1, n_F2, n_B0, n_B1, n_B2 - COMMON /nikwc/ n_as, n_c1, n_c2, n_c3, n_c4, n_c5, n_c6, n_c7 - COMMON /nikffreim/ n_ReTildeFtv, n_ImTildeFtv, - #n_ReTildeFta, n_ImTildeFta - SAVE /nikff2/,/nik1/,/nik2/,/nik3/,/nikwc/,/nikffreim/ - - real q2, M1, qm2, mu, mc, mt, Mw, ml - integer ias, Nf - - real n_Eg, n_ffs_cqm ! /nikff2/ - integer n_model, n_res_swch, n_ias, n_Nf ! /nik1/ - real n_M1, n_M2, n_mt, n_Mw, n_ml ! /nik2/ - real n_F1, n_F2, n_B0, n_B1, n_B2 ! /nik3/ - real n_as, n_c1, n_c2, n_c3, n_c4, n_c5, n_c6, n_c7 ! /nikwc/ - real n_ReTildeFtv, n_ImTildeFtv, - #n_ReTildeFta, n_ImTildeFta ! /nikffreim/ - - real FF1 - real hat_s, hat_qm2 - real Fv, ReTildeFtv, ImTildeFtv - real c7, RReC9eff, IImC9eff, c10 - -c print *, ' In subroutine myF1(q2,qm2,mu,mc) ' - - FF1 = 0.0 - - ias=n_ias - M1=n_M1 - mt=n_mt - Mw=n_Mw - ml=n_ml - Nf=n_Nf - - hat_qm2=qm2/M1 - hat_s=q2/(M1**2) - - call ffs_cqm_km_gmm(q2,1) - Fv=n_ffs_cqm - - call myC7gamma(mu,Mw,mt,Nf,ias) - c7=n_c7 - call ReC9eff(q2,qm2,mu,mc,RReC9eff) - call ImC9eff(q2,qm2,mu,mc,IImC9eff) - call myC10a(mt,Mw,c10) - -c print *, ' RReC9eff =', RReC9eff, -c #' IImC9eff =', IImC9eff -c print *, ' c10 =', c10, ' c7 =', c7 -c print *, ' Fv =', Fv - - call SubReTildeFtv(q2,qm2) - ReTildeFtv=n_ReTildeFtv -c print *, ' n_ReTildeFtv =', n_ReTildeFtv - - call SubImTildeFtv(q2,qm2) - ImTildeFtv=n_ImTildeFtv -c print *, ' n_ImTildeFtv =', n_ImTildeFtv - - FF1=(RReC9eff**2+IImC9eff**2+c10**2)*(Fv**2) - FF1=FF1+(ReTildeFtv**2+ImTildeFtv**2)*(2.0*c7*hat_qm2/hat_s)**2 - FF1=FF1+4.0*(RReC9eff*ReTildeFtv+IImC9eff*ImTildeFtv) - #*hat_qm2*c7*Fv/hat_s - - n_F1=FF1 - - return - end - - - -c ********************************************** -c * * -c * Subroutine F_2 * -c * * -c * by F.Kruger and D.Melikhov, * -c * Phys.Rev. D67, 034002 (2003), * -c * equation (36). * -c * * -c ********************************************** - subroutine myF2_gmm(q2,qm2,mu,mc) - - COMMON /nikff2/ n_Eg, n_ffs_cqm - COMMON /nik1/ n_model, n_res_swch, n_ias, n_Nf - COMMON /nik2/ n_M1, n_M2, n_mt, n_Mw, n_ml - COMMON /nik3/ n_F1, n_F2, n_B0, n_B1, n_B2 - COMMON /nikwc/ n_as, n_c1, n_c2, n_c3, n_c4, n_c5, n_c6, n_c7 - COMMON /nikffreim/ n_ReTildeFtv, n_ImTildeFtv, - #n_ReTildeFta, n_ImTildeFta - SAVE /nikff2/,/nik1/,/nik2/,/nik3/,/nikwc/,/nikffreim/ - - real q2, M1, qm2, mu, mc, mt, Mw - integer ias, Nf - - real n_Eg, n_ffs_cqm ! /nikff2/ - integer n_model, n_res_swch, n_ias, n_Nf ! /nik1/ - real n_M1, n_M2, n_mt, n_Mw, n_ml ! /nik2/ - real n_F1, n_F2, n_B0, n_B1, n_B2 ! /nik3/ - real n_as, n_c1, n_c2, n_c3, n_c4, n_c5, n_c6, n_c7 ! /nikwc/ - real n_ReTildeFtv, n_ImTildeFtv, - #n_ReTildeFta, n_ImTildeFta ! /nikffreim/ - - real FF2 - real hat_s, hat_qm2 - real Fa - real ReTildeFta, ImTildeFta - real c7, RReC9eff, IImC9eff, c10 - -c print *,' In subroutine myF2(q2,qm2,mu,mc) ' - - FF2 = 0.0 - - ias=n_ias - M1=n_M1 - mt=n_mt - Mw=n_Mw - ml=n_ml - Nf=n_Nf - - hat_qm2=qm2/M1 - hat_s=q2/(M1**2) - - call ffs_cqm_km_gmm(q2,3) - Fa=n_ffs_cqm - - call myC7gamma(mu,Mw,mt,Nf,ias) - c7=n_c7 - call ReC9eff(q2,qm2,mu,mc,RReC9eff) - call ImC9eff(q2,qm2,mu,mc,IImC9eff) - call myC10a(mt,Mw,c10) - -c print *, RReC9eff, IImC9eff, c10 - - call SubReTildeFta(q2,qm2) - ReTildeFta=n_ReTildeFta - call SubImTildeFta(q2,qm2) - ImTildeFta=n_ImTildeFta - -c print *, ReTildeFta, ImTildeFta - - FF2=(RReC9eff**2+IImC9eff**2+c10**2)*(Fa**2) -c print *, ' FF2 =', FF2 - FF2=FF2+(ReTildeFta**2+ImTildeFta**2)*(2.0*c7*hat_qm2/hat_s)**2 -c print *, ' FF2 =', FF2 - FF2=FF2+4.0*(RReC9eff*ReTildeFta+IImC9eff*ImTildeFta) - #*hat_qm2*c7*Fa/hat_s -c print *, ' FF2 =', FF2 - - n_F2=FF2 - - return - end - - -c ********************************************** -c * * -c * Subroutine B_0 * -c * * -c * by F.Kruger and D.Melikhov, * -c * Phys.Rev. D67, 034002 (2003), * -c * equation (35). * -c * * -c ********************************************** - subroutine myB0_gmm(q2,qm2,mu,mc) - - COMMON /nikff2/ n_Eg, n_ffs_cqm - COMMON /nik1/ n_model, n_res_swch, n_ias, n_Nf - COMMON /nik2/ n_M1, n_M2, n_mt, n_Mw, n_ml - COMMON /nik3/ n_F1, n_F2, n_B0, n_B1, n_B2 - COMMON /nikwc/ n_as, n_c1, n_c2, n_c3, n_c4, n_c5, n_c6, n_c7 - SAVE /nikff2/,/nik1/,/nik2/,/nik3/,/nikwc/ - - real q2, M1, qm2, mu, mc, mt, Mw, ml - integer ias, Nf - - real n_Eg, n_ffs_cqm ! /nikff2/ - integer n_model, n_res_swch, n_ias, n_Nf ! /nik1/ - real n_M1, n_M2, n_mt, n_Mw, n_ml ! /nik2/ - real n_F1, n_F2, n_B0, n_B1, n_B2 ! /nik3/ - real n_as, n_c1, n_c2, n_c3, n_c4, n_c5, n_c6, n_c7 ! /nikwc/ - - real BB0 - real hat_s, hat_qm2, hat_ml - real F1,F2,Fv,Fa - real c10 - - - BB0 = 0.0 - - ias=n_ias - M1=n_M1 - mt=n_mt - Mw=n_Mw - ml=n_ml - Nf=n_Nf - - hat_qm2=qm2/M1 - hat_ml=ml/M1 - hat_s=q2/(M1**2) - -c print *, ' In subroutine myB0_gmm(q2,qm2,mu,mc) ' - - call myF1_gmm(q2,qm2,mu,mc) - F1=n_F1 -c print *,' F1 =', F1 - - call myF2_gmm(q2,qm2,mu,mc) - F2=n_F2 -c print *,' F2 =', F2 - - call ffs_cqm_km_gmm(q2,1) - Fv=n_ffs_cqm -c print *,' Fv =', Fv - - call ffs_cqm_km_gmm(q2,3) - Fa=n_ffs_cqm -c print *,' Fa =', Fa - - call myC10a(mt,Mw,c10) -c print *,' c10 =', c10 - - BB0=(hat_s+4.*(hat_ml**2))*(F1+F2) - BB0=BB0-8.*((c10*hat_ml)**2)*(Fv**2+Fa**2) - - n_B0=BB0 -c print *,' n_B0 =', n_B0 - - return - end - - - - -c ********************************************** -c * * -c * Subroutine B_1 * -c * * -c * by F.Kruger and D.Melikhov, * -c * Phys.Rev. D67, 034002 (2003), * -c * equation (35). * -c * * -c ********************************************** - subroutine myB1_gmm(q2,qm2,mu,mc) - - COMMON /nikff2/ n_Eg, n_ffs_cqm - COMMON /nik1/ n_model, n_res_swch, n_ias, n_Nf - COMMON /nik2/ n_M1, n_M2, n_mt, n_Mw, n_ml - COMMON /nik3/ n_F1, n_F2, n_B0, n_B1, n_B2 - COMMON /nikwc/ n_as, n_c1, n_c2, n_c3, n_c4, n_c5, n_c6, n_c7 - COMMON /nikffreim/ n_ReTildeFtv, n_ImTildeFtv, n_ReTildeFta, n_ImTildeFta - SAVE /nikff2/,/nik1/,/nik2/,/nik3/,/nikwc/,/nikffreim/ - - real q2, M1, qm2, mu, mc, mt, Mw - integer ias, Nf - - real n_Eg, n_ffs_cqm ! /nikff2/ - integer n_model, n_res_swch, n_ias, n_Nf ! /nik1/ - real n_M1, n_M2, n_mt, n_Mw, n_ml ! /nik2/ - real n_F1, n_F2, n_B0, n_B1, n_B2 ! /nik3/ - real n_as, n_c1, n_c2, n_c3, n_c4, n_c5, n_c6, n_c7 ! /nikwc/ - real n_ReTildeFtv, n_ImTildeFtv, n_ReTildeFta, n_ImTildeFta ! /nikffreim/ - - real BB1 -c real hat_s, hat_qm2, hat_ml - real hat_s, hat_qm2 - real Fv, ReFtv, Fa, ReFta - real c7, RReC9eff, c10 - - - BB1 = 0.0 - - ias=n_ias - M1=n_M1 - mt=n_mt - Mw=n_Mw - Nf=n_Nf - - hat_qm2=qm2/M1 - hat_s=q2/(M1**2) - - call ffs_cqm_km_gmm(q2,1) - Fv=n_ffs_cqm - call SubReTildeFtv(q2,qm2) - ReFtv=n_ReTildeFtv - call ffs_cqm_km_gmm(q2,3) - Fa=n_ffs_cqm - call SubReTildeFta(q2,qm2) - ReFta=n_ReTildeFta - - call myC7gamma(mu,Mw,mt,Nf,ias) - c7=n_c7 - call ReC9eff(q2,qm2,mu,mc,RReC9eff) - call myC10a(mt,Mw,c10) - - BB1=c10*RReC9eff*hat_s*Fv*Fa - BB1=BB1+c10*c7*hat_qm2*(Fv*ReFta+Fa*ReFtv) - BB1=BB1*8.0 - - n_B1=BB1 - - return - end - - - -c ********************************************** -c * * -c * Subroutine B_2 * -c * * -c * by F.Kruger and D.Melikhov, * -c * Phys.Rev. D67, 034002 (2003), * -c * equation (35). * -c * * -c ********************************************** - subroutine myB2_gmm(q2,qm2,mu,mc) - - COMMON /nikff2/ n_Eg, n_ffs_cqm - COMMON /nik2/ n_M1, n_M2, n_mt, n_Mw, n_ml - COMMON /nik3/ n_F1, n_F2, n_B0, n_B1, n_B2 - SAVE /nikff2/,/nik2/,/nik3/ - - real q2, M1, qm2, mu, mc, mt, Mw - - real n_Eg, n_ffs_cqm ! /nikff2/ - real n_M1, n_M2, n_mt, n_Mw, n_ml ! /nik2/ - real n_F1, n_F2, n_B0, n_B1, n_B2 ! /nik3/ - - real hat_s - real F1,F2 - - M1=n_M1 - mt=n_mt - Mw=n_Mw - - hat_s=q2/(M1**2) - - call myF1_gmm(q2,qm2,mu,mc) - F1=n_F1 - call myF2_gmm(q2,qm2,mu,mc) - F2=n_F2 - - n_B2=hat_s*(F1+F2) - - return - end - - -c ************************************************ -c * * -c * Subroutine Bremstrahlung * -c * * -c * Kvadrat modula tormoznogo izlucheniya * -c * leptonov v konechnom sostoyaniimuonov * -c * * -c * q2 - q^2=s - mandelstamovskiy invariant * -c * t - mandelstamovskiy invariant * -c * niknum = 1 - tochnaya formula * -c * 2 - priblijeniye miagkih fotonov * -c * * -c ************************************************ - - subroutine myBremstrahlung(q2,t,niknum) - - COMMON /nikff2/ n_Eg, n_ffs_cqm - COMMON /nik2/ n_M1, n_M2, n_mt, n_Mw, n_ml - COMMON /nikbi/ n_Bslg, n_Intrf, n_I1, n_I2 - SAVE /nikff2/,/nik2/,/nikbi/ - - real q2, t, M1, mt, Mw, ml - integer niknum - - real n_Eg, n_ffs_cqm ! /nikff2/ - real n_M1, n_M2, n_mt, n_Mw, n_ml ! /nik2/ - real n_Bslg, n_Intrf, n_I1, n_I2 ! /nikbi/ - - real Bslg - real mult1, mult2 - real hat_s, hat_t, hat_u, hat_ml, xx - real c10 - real fB - - Bslg = 0.0 - - M1=n_M1 - mt=n_mt - Mw=n_Mw - ml=n_ml - - hat_ml=ml/M1 - hat_s=q2/(M1**2) ! \hat s - hat_t=t/(M1**2) ! \hat t - - call myhatu(hat_s,hat_t,hat_u) ! \hat u - call myx(q2,xx) - - call myC10a(mt,Mw,c10) - call ffs_cqm_km_gmm(q2,0) - fB=-n_ffs_cqm ! po moim opredeleniam fB < 0 - - mult1=(hat_u-hat_ml**2)*(hat_t-hat_ml**2) - -c......TOCHNAYA formula dlia kvadrata modula tormoznogo -c izlucheniya leptonov (m_{ell}) v konechnom sostoyanii - if(niknum.EQ.1) then -c print *,' Tochnaya formula tormozn. izluch.', niknum - - mult2=mult1/2.0-hat_ml**2 - - Bslg=hat_s/mult1+mult2*(xx**2)/(mult1**2) - Bslg=Bslg*((8.0*hat_ml*fB*c10/M1)**2) - - n_Bslg = Bslg - endif - -c......Priblijeniye miagkih fotonov dlia kvadrata modula tormoznogo -c izlucheniya leptonov (m_{ell}) v konechnom sostoyanii - if(niknum.EQ.2) then -c print *,' Priblijeniye miagkih fotonov', niknum - - mult2=(xx*hat_ml/mult1)**2 - - Bslg=hat_s/mult1-mult2 - Bslg=Bslg*((8.0*hat_ml*fB*c10/M1)**2) - - n_Bslg = Bslg - endif - - return - end - - -c ************************************************** -c * * -c * subroutine myI1(q2,t) * -c * * -c * I1=C^2_{10A}*F_A*\xi * -c * * -c * q2 - q^2=s - mandelstamovskiy invariant * -c * t - mandelstamovskiy invariant * -c * * -c ************************************************** - subroutine myI1(q2,t) - - COMMON /nikff2/ n_Eg, n_ffs_cqm - COMMON /nik2/ n_M1, n_M2, n_mt, n_Mw, n_ml - COMMON /nikbi/ n_Bslg, n_Intrf, n_I1, n_I2 - SAVE /nikff2/,/nik2/,/nikbi/ - - real q2, t - - real n_Eg, n_ffs_cqm ! /nikff2/ - real n_M1, n_M2, n_mt, n_Mw, n_ml ! /nik2/ - real n_Bslg, n_Intrf, n_I1, n_I2 ! /nikbi/ - - real I1 - real mt, Mw - real Fa, c10, zzeta - - I1 = 0.0 - - mt=n_mt - Mw=n_Mw - - call myzeta(q2,t,zzeta) - - call ffs_cqm_km_gmm(q2,3) - Fa=n_ffs_cqm - - call myC10a(mt,Mw,c10) - - I1=zzeta*Fa*(c10**2) - - n_I1=I1 - - return - end - - - -c ************************************************** -c * * -c * subroutine myI2(q2,qm2,mu,mc) * -c * * -c * I2=2*\hat m_b*C_{7\gamma}*C_{10A}*Re(F_{TV})+ * -c * C_{10A}*F_V*Re(C_{9V}) * -c * * -c * q2 - q^2=s - mandelstamovskiy invariant * -c * qm2 - massa b-quarka * -c * mu - masshtabniy parametr = 5 GeV * -c * mc - massa c-quarka * -c * * -c ************************************************** - subroutine myI2(q2,qm2,mu,mc) - - COMMON /nikff2/ n_Eg, n_ffs_cqm - COMMON /nik1/ n_model, n_res_swch, n_ias, n_Nf - COMMON /nik2/ n_M1, n_M2, n_mt, n_Mw, n_ml - COMMON /nikbi/ n_Bslg, n_Intrf, n_I1, n_I2 - COMMON /nikwc/ n_as, n_c1, n_c2, n_c3, n_c4, n_c5, n_c6, n_c7 - COMMON /nikffreim/ n_ReTildeFtv, n_ImTildeFtv, n_ReTildeFta, n_ImTildeFta - SAVE /nikff2/,/nik1/,/nik2/,/nikbi/,/nikwc/,/nikffreim/ - - real q2, M1, qm2, mu, mc, mt, Mw - integer ias - - real n_Eg, n_ffs_cqm ! /nikff2/ - integer n_model, n_res_swch, n_ias, n_Nf ! /nik1/ - real n_M1, n_M2, n_mt, n_Mw, n_ml ! /nik2/ - real n_Bslg, n_Intrf, n_I1, n_I2 ! /nikbi/ - real n_as, n_c1, n_c2, n_c3, n_c4, n_c5, n_c6, n_c7 ! /nikwc/ - real n_ReTildeFtv, n_ImTildeFtv, n_ReTildeFta, n_ImTildeFta ! /nikffreim - - real I2 - real hat_s, hat_qm2 - real Fv,ReFtv - real c7, RReC9eff, c10 - - I2 = 0.0 - - ias=n_ias - M1=n_M1 - mt=n_mt - Mw=n_Mw - - hat_qm2=qm2/M1 - hat_s=q2/(M1**2) - - call ffs_cqm_km_gmm(q2,1) - Fv=n_ffs_cqm - call SubReTildeFtv(q2,qm2) - ReFtv=n_ReTildeFtv - - call myC7gamma(mu,Mw,mt,Nf,ias) - c7=n_c7 - call ReC9eff(q2,qm2,mu,mc,RReC9eff) - call myC10a(mt,Mw,c10) - - I2=2.0*c7*c10*hat_qm2*ReFtv/hat_s+RReC9eff*c10*Fv - - n_I2=I2 - -c print *, ' c7 =', c7 -c print *, ' c10 =', c10 -c print *, ' hat_qm2 =', hat_qm2 -c print *, ' Fv =', Fv -c print *, ' ReFtv =', ReFtv -c print *, ' hat_s =', hat_s -c print *, ' RReC9eff =', RReC9eff -c print *, ' I2 =', I2 - - - - return - end - - -c ************************************************ -c * * -c * Subroutine Interference * -c * * -c * Interferencionniy chlen mejdu dvumia * -c * vkladami * -c * * -c * niknum = 1 - tochnaya formula * -c * 2 - priblijeniye miagkih fotonov * -c * * -c ************************************************ - subroutine myInterference(q2,t,qm2,mu,mc,niknum) - - COMMON /nikff2/ n_Eg, n_ffs_cqm - COMMON /nik2/ n_M1, n_M2, n_mt, n_Mw, n_ml - COMMON /nikbi/ n_Bslg, n_Intrf, n_I1, n_I2 - SAVE /nikff2/,/nik2/,/nikbi/ - - real q2, t, M1, qm2, mu, mc, mt, Mw, ml - integer niknum - - real n_Eg, n_ffs_cqm ! /nikff2/ - real n_M1, n_M2, n_mt, n_Mw, n_ml ! /nik2/ - real n_Bslg, n_Intrf, n_I1, n_I2 ! /nikbi/ - - real Intrf, I1, I2 - real mult1 -c real hat_s, hat_t, hat_u, hat_ml, hat_qm2, xx - real hat_s, hat_t, hat_u, hat_ml, xx - real fB - - Intrf = 0.0 - - M1=n_M1 - mt=n_mt - Mw=n_Mw - ml=n_ml - - hat_ml=ml/M1 - hat_s=q2/(M1**2) - hat_t=t/(M1**2) - - call myhatu(hat_s,hat_t,hat_u) - call myx(q2,xx) - -c print *,' hat_u =', hat_u, ' xx =', xx, ' zzeta =', zzeta - -c......TOCHNAYA formula dlia kvadrata modula tormoznogo -c izlucheniya leptonov (m_{ell}) v konechnom sostoyanii - if(niknum.EQ.1) then - mult1=(hat_u-hat_ml**2)*(hat_t-hat_ml**2) - - call myI1(q2,t) - I1=n_I1 -c print *, ' mult1 =', mult1, ' mult2 =', mult2 -c print *, ' I1 =', I1 - - call myI2(q2,qm2,mu,mc) - I2=n_I2 -c print *, ' mult1 =', mult1, ' mult2 =', mult2 -c print *, ' I2 =', I2 - - Intrf=(xx**2)*(xx*I2+I1)/mult1 - - call ffs_cqm_km_gmm(q2,0) - fB=-n_ffs_cqm ! po moim opredeleniya fB < 0 - - Intrf=0.0-Intrf*(hat_ml**2)*(16.0*fB/M1) - - n_Intrf = Intrf -c print *,' n_Intrf =', n_Intrf - endif - -c......Priblijeniye miagkih fotonov dlia kvadrata modula tormoznogo -c izlucheniya leptonov (m_{ell}) v konechnom sostoyanii - if(niknum.EQ.2) then -c print *,' Priblijeniye miagkih fotonov', niknum - n_Intrf = 0.0 - endif - - return - end - -c ******************************************************************** -c ******************************************************************** -c * * -c * SQUARE of MATRIX ELEMENT * -c * for B\to\gamma\ell^+\ell^- decay. * -c * * -c * by formula (34) in * -c * by F.Kruger and D.Melikhov, Phys.Rev. D67, 034002 (2003). * -c * * -c *------------------------------------------------------------------* -c *------------------------------------------------------------------* -c * * -c * model -- not used in this matrix element; * -c * * -c * res_swch -- switching parametr: * -c * res_swch=0 -- switch OFF the resonant contribution, * -c * res_swch=1 -- switch ON the resonant contribution; * -c * * -c * ias -- switching parametr for for Lms[] * -c * in the function myAs(...): * -c * ias = 0 -- Lms=min Lms, * -c * ias = 1 -- the mean value, * -c * ias = 2 -- Lms=max Lms; * -c * * -c * hat_s -- q^2/M1^2=s/M1^2; * -c * hat_t -- t/M1^{2}; * -c * M1 -- mass of the B -- meson, GeV; * -c * mt -- the mass of t-quark, GeV; * -c * Mw -- the mass of W-meson, GeV; * -c * ml -- the lepton mass, GeV; * -c * Nf -- number of "effective" flavours ( Nf=5 for b-quark); * -c * the number of the collors = 3; * -c * * -c ******************************************************************** -c ******************************************************************** - subroutine m2fortran_gmm(hat_s,hat_t) - - dimension RMM2_max(3), RMM2_max_resonant(3) - - COMMON /nik1/ n_model, n_res_swch, n_ias, n_Nf - COMMON /nik2/ n_M1, n_M2, n_mt, n_Mw, n_ml - COMMON /nik3/ n_F1, n_F2, n_B0, n_B1, n_B2 - COMMON /nik4/ n_Matrix2 - COMMON /nikbi/ n_Bslg, n_Intrf, n_I1, n_I2 - COMMON /nikff2/ n_Eg, n_ffs_cqm - SAVE /nik1/,/nik2/,/nik3/,/nik4/,/nikbi/,/nikff2/ - -c......The COMMON blocs parameters - integer n_model, n_res_swch, n_ias, n_Nf ! /nik1/ - real n_M1, n_M2, n_mt, n_Mw, n_ml ! /nik2/ - real n_F1, n_F2, n_B0, n_B1, n_B2 ! /nik3/ - real n_Matrix2 ! /nik4/ - real n_Bslg, n_Intrf, n_I1, n_I2 ! /nikbi/ - real n_Eg, n_ffs_cqm ! /nikff2/ - - real hat_s, hat_t, M1, M2, mt, Mw, ml, mu - integer res_swch, ias, Nf - real BB0, BB1, BB2, Bslg, Intrf - real xx, zzeta - - -c .the mandelstam variables; q2=q^2=s - real q2, t - -c .the maximum value of the nonresonant matrix elemet MM2 - real RMM2_max -c .the maximum value of the resonant matrix elemet MM2 - real RMM2_max_resonant - -c .b-quark mass ( in the B -- meson M1), GeV - real qm2 -c .mc -- c-quark mass, GeV - real qmc - -c print *, ' In subroutine m2fortran(hat_s,hat_t) ' - - res_swch=n_res_swch - ias=n_ias - Nf=n_Nf - M1=n_M1 - M2=n_M2 - mt=n_mt - Mw=n_Mw - ml=n_ml - - n_B0=0.0 - n_B1=0.0 - n_B2=0.0 - n_Matrix2=-13.0 - - q2=hat_s*(M1**2) - t=hat_t*(M1**2) - hat_ml=ml/M1 - -c......The cut on the foton mass (min. energy) - call q2toEg(q2) - if(n_Eg.LT.M2) go to 13 - - RMM2_max_resonant(1) = 10000000.0 - RMM2_max_resonant(2) = 100000.0 - RMM2_max_resonant(3) = 100000.0 - - qm2 = 4.85 - qmc = 1.45 - mu=qm2 - -c .inicialisation of the MM2_max() - RMM2_max(1) = 8900000.0 ! for e^+e^- (ot baldi!!!) - RMM2_max(2) = 25.0 ! for \mu^+\mu^- (provereno!!!) - RMM2_max(3) = 4000.0 ! for \tau^+\tau^- (ot baldi!!!) - - if(M2.NE.0.035) then -c print *, 'M2 ne ravno 0.035 !!!' - RMM2_max(1) = 8900000.0 ! for e^+e^- (ot baldi!!!) - RMM2_max(2) = 25.0*200.0 ! for \mu^+\mu^- (garantiya maximuma) - RMM2_max(3) = 80000.0 ! for \tau^+\tau^- (ot baldi!!!) - endif - -c print *, ' hat_s =', hat_s -c print *, ' hat_t =', hat_t - - call myB0_gmm(q2,qm2,mu,qmc) - BB0=n_B0 -c print *, ' BB0 =', BB0 - - call myB1_gmm(q2,qm2,mu,qmc) - BB1=n_B1 -c print *, ' BB1 =', BB1 - - call myB2_gmm(q2,qm2,mu,qmc) - BB2=n_B2 -c print *, ' BB2 =', BB2 - - call myx(q2,xx) -c print *, ' xx =', xx - - call myzeta(q2,t,zzeta) -c print *, ' zzeta =', zzeta - -c 1 - tochnaya formula (stavitsia po umolchaniyu!!!) -c 2 - priblijeniye miagkih fotonov - call myBremstrahlung(q2,t,1) - Bslg=n_Bslg -c print *, ' Bslg =', Bslg - -c 1 - tochnaya formula (stavitsia po umolchaniyu!!!) -c 2 - priblijeniye miagkih fotonov - call myInterference(q2,t,qm2,mu,qmc,1) - Intrf=n_Intrf -c print *, ' Intrf =', Intrf - - -c......The matrix element calculation - n_Matrix2=(xx**2)*BB0+xx*zzeta*BB1+(zzeta**2)*BB2 - n_Matrix2=n_Matrix2+Bslg+Intrf - -c .what RMM2_max[i] to selected? - if(ml.LT.0.09) then - i=1 - endif - if(ml.LT.0.2.AND.ml.GE.0.09) then - i=2 - endif - if(ml.GE.0.2) then - i=3 - endif - -c .The normalisation of the matrix element - if(res_swch.EQ.0) then - n_Matrix2=n_Matrix2/RMM2_max(i) - endif - if(res_swch.EQ.1) then - n_Matrix2=n_Matrix2/RMM2_max_resonant(i) - endif - - if(n_Matrix2.LT.0.0) then - print *,' ' - print *,' subroutine m2fortran_gmm' - print *,' Fatal ERROR: the square of the normalise - #matrix element < 0' - print *,' hat_s =', hat_s, ' hat_t =', hat_t - print *,' s =', q2, ' t =', t - print *,' xx =', xx, ' zzeta =', zzeta - print *, n_Bslg, n_Intrf, n_I1, n_I2 - print *, n_F1, n_F2, n_B0, n_B1, n_B2 - print *,'n_Matrix2 =', n_Matrix2 - print *,' By!' - print *,' ' - n_Matrix2=-1.0 - STOP - endif - - if(n_Matrix2.GT.1.0) then - print *,' ' - print *,' subroutine m2fortran_gmm' - print *,' Fatal ERROR: the square of the normalise - #matrix element > 1' - print *,' hat_s =', hat_s, ' hat_t =', hat_t - print *,' s =', q2, ' t =', t - print *,' xx =', xx, ' zzeta =', zzeta - print *, n_Bslg, n_Intrf, n_I1, n_I2 - print *, n_F1, n_F2, n_B0, n_B1, n_B2 - print *,' n_Matrix2 =', n_Matrix2 - print *,' By!' - print *,' ' -c n_Matrix2=-2.0 -c STOP - endif - - -c print *,' ******************************** ' -c print *,' * * ' -c print *,' * n_Matrix2 =', n_Matrix2, '* ' -c print *,' * END subroutine m2fortran * ' -c print *,' * * ' -c print *,' ******************************** ' -c print *,' ' - -13 continue - - return - end diff --git a/Generators/PythiaB/src/multi_flav_luexec.F b/Generators/PythiaB/src/multi_flav_luexec.F deleted file mode 100644 index 298bca3d945187763ccfa0bf334914ff7b88246d..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/src/multi_flav_luexec.F +++ /dev/null @@ -1,47 +0,0 @@ -*CMZ : 02/08/2001 11.45.54 by Maria Smizanska -*-- Author : Maria Smizanska 22/07/2000 - - - - subroutine multi_flav_luexec -c ----------------------------------------------------------------------- -c multi_flav special for cases bbbb or bbcc (or bbbbcc, bbbbcccc) -c ----------------------------------------------------------------------- - - -*KEEP,DOUB. -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) -c INTEGER PYK,PYCHGE,PYCOMP -*KEEP,HEAVYFLAV. -* store info about multiple heavy flavour produced in event - common/multif/ibq,icq -* remeber links of B and antiB chosen to decay free in bbbb - common/fixedB/is1,is2 - -*KEEP,BBMOD. -* internal number to recognise bb decay regime - common/bbmod/IBBMOD -*KEND. - - idebug=0 - - -c (0,0) (0,1) (0,2) (1,0) NO -c (1,1) (1,2) (2,0) (2,1,) (2,2) YES -c take only bbcc or bbbb (or bbbbcc, bbbbcccc) - if(ibq.le.1.and.(ibq*icq.eq.0)) return - - -c bbcc (1,1) (1,2) - if(ibq.eq.1.and.icq.ne.0) call bbcc_luexec -c bbbb (2,0) (2,1) (2,2) - if(ibq.ge.2) call bbbb_luexec(1) - - - return - end - - - diff --git a/Generators/PythiaB/src/off_line.F b/Generators/PythiaB/src/off_line.F deleted file mode 100644 index 7c02bd4f4cc01538968478d8e6f0af1962537adb..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/src/off_line.F +++ /dev/null @@ -1,230 +0,0 @@ -*CMZ : 02/08/2001 11.46.16 by Maria Smizanska -*-- Author : Maria Smizanska 07/10/96 - - - SUBROUTINE OFF_LINE(IRET) -* * -*----------------------------------------------------------------------* -* * -* Name : OFF_LINE * -* (module) * -* * -* Description : Accepting/rejecting event: * -* a) find the whole tree of B-decay * -* b) check if tree is inside cuts defined by * -* datacard OFFLCUTS * -* This subroutine is skipped if user demanded * -* inclusive muon events pp->bbX->muX * -* * -* User can skip this subroutine by * -* by defining datacard OFFLCUTS 1=0 * -* * -* * -* * -* Arguments : * -* * -* IRET (out) flag for keep/reject event * -* Banks/Tables: * -* [name] ([filled | used | modified]) * -* * -*----------------------------------------------------------------------* -* * -* Author : Maria Smizanska Date 07/10/96: * -* * -* * -* Last modifications : * -* [name] Date : [date] * -* * -* Keywords : * -* [keywords] * -*----------------------------------------------------------------------* -* -*+CDE, TYPING. -C ----------- end CDE -------------------------------------------------- -* -*KEEP,DOUB. -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) -c INTEGER PYK,PYCHGE,PYCOMP -*KEEP,LUJETS. - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) -*KEEP,LUDAT1. - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) -*KEEP,LUDAT2. - COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) -*KEEP,PYPARS. - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) -*KEEP,PYINT1. - COMMON/PYINT1/MINT(400),VINT(400) -*KEEP,PYINT2. - COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2) -*KEEP,PYINT5. - COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3) -*KEEP,PYUPPR. - COMMON/PYUPPR/NUP,KUP(20,7),NFUP,IFUP(10,2),PUP(20,5),Q2UP(0:10) - - - -*KEND. -* SAVE /LUJETS/,/LUDAT1/,/LUDAT2/ - SAVE /PYJETS/,/PYDAT1/,/PYDAT2/ - SAVE /PYPARS/,/PYINT1/,/PYINT2/,/PYINT5/,/PYUPPR/ -*KEEP,HEAVYFLAV. -* store info about multiple heavy flavour produced in event - common/multif/ibq,icq -* remeber links of B and antiB chosen to decay free in bbbb - common/fixedB/is1,is2 - -*KEEP,NNTUPLE. -* DECLARATION FOR NTUPLE 5000 - PARAMETER(NDIM = 20) - COMMON/NNICK/XNTUP(NDIM) - SAVE/NNICK/ - -* DECLARATION FOR NTUPLE 5001 - PARAMETER(NDIM1 = 13) - COMMON/HARD/XNTUP1(NDIM1) - SAVE/HARD/ - -* DECLARATION FOR NTUPLE 5002 - PARAMETER(NDIM2 = 12) - COMMON/MUON/XNTUP2(NDIM2) - SAVE/MUON/ -*KEEP,CUTOFF. -* cuts on stable particles to select event - common/cutoff/tr4,pt_pikp,eta_pikp, - + pt_muon,eta_muon, - + pt_ele,eta_ele - SAVE/cutoff/ - dimension cut3(7) - equivalence (cut3(1),tr4) -*KEEP,BTREE. - common/btree/ntree,tree(4000) - integer tree - SAVE /btree/ -*KEEP,NT5000. -* users choice to fill NTUPLE 5000 or to call user_fill - common/nt5000/ntup_5000 - SAVE/nt5000/ - - -*KEEP,FLAVOUR. -* variable flav is set automatically to 5 (4) -* if user demanded -* bb (cc) production by selecting corresponding -* keywords in atgen.proto - - common/flavour/flav - -*KEND. - -c SAVE IFIRST -c DATA IFIRST /1/ - -*KEEP,FAMILY. - name_self(I)=K(I,2) - name_selv(I)=abs(K(I,2)) - name_father(I)=K(K(I,3),2) - name_grandpa(I)=K(K(K(I,3),3),2) - name_daughter1(I)=K(K(I,4),2) - name_daughter2(I)=K(K(I,5),2) - - link_self(I)=I - link_father(I)=K(I,3) - link_grandpa(I)=K(K(I,3),3) - link_daughter1(I)=K(I,4) - link_daughter2(I)=K(I,5) -*KEND. - integer beauty - integer charm - -C ----------- end CDE -------------------------------------------------- - - -c local debugging control (inactive for idebug=0) - idebug=0 - -c ---------------------------------------------------------------------- -c if no exclusive B-decay forced channel was demanded -c or if user explicitely defined OFFLCUTS 1=0 -c skip this subroutine -c ---------------------------------------------------------------------- - if(tr4.eq.0) go to 1701 - -c ---------------------------------------------------------------------- -c reject event unless accepted explicitly -c ---------------------------------------------------------------------- - iret=1 - -c ---------------------------------------------------------------------- -c find B-decay tree and check -c if whole tree is inside cuts defined by OFFLCUTS datacard -c ---------------------------------------------------------------------- - - - DO 1700 I=1,N - -c Is this B-hadron with anti-b quark (B+, antiLambda_b ...) ? -c 15.8.2000: in case of bbbb only one of two B-hadrons (with anti-b quark) -c in event will be checked with OFFLINE cuts. It will be the one -c that was forced to decay to signal channel -c (see subroutine bbbb_luexec). All other 3 b-hadrons -c in event are checked for LVL1 and LVL2 cuts if user activates -c these cuts. - - if(flav.eq.5.and.beauty(I).eq.0) go to 1700 - if((flav.eq.4.or.flav.eq.44).and.charm(I).eq.0) go to 1700 - -c Is there bbbb? Then finish if this is not the B-hadron -c (with anti-b quark, that is B+ etc...) -c that was selected in bbbb_luexec (with link is1) -c NOT to be forced to decay to signal channel - - if(ibq.gt.1.and.I.eq.is1) go to 1700 - - -c is this secondary B-hadron? If yes, skip it - it was -c already included in a decay chain of its B-hadron parent - if(beauty(link_father(I)).eq.1) go to 1700 - if((flav.eq.4.or.flav.eq.44).and.charm(link_father(I)).eq.1) - + go to 1700 - - - - - -c call VZERO(tree,4000) - do ii=1,4000 - tree(ii)=0 - enddo - if(idebug.ne.0) print*,'OFF_LINE:beauty',I,name_self(I) - -c find decay tree using recursive call of find_children - call find_children(I) - -c if any particle in tree out of cuts reject this tree - ktree=0 -c do ii=1,4000 -c Modification by B. Kersevan, J. Catmore 13/03/2006 - do ii=1,N - if(tree(ii).eq.1) ktree=ktree+1 - if(tree(ii).eq.-1) then ! reject if sec.part. out of cuts - go to 1700 - endif - enddo - if(idebug.ne.0) print*,'OFF_LINE: ktree',ktree - if(ktree.le.2) go to 1700 ! reject if <3 particles in tree - iret=0 - return - 1700 CONTINUE - 1701 CONTINUE - - - RETURN - -* - END ! OFF_LINE - - - diff --git a/Generators/PythiaB/src/parsel.F b/Generators/PythiaB/src/parsel.F deleted file mode 100644 index 6fb9777590ce2796e88145eac42e746758f5f46a..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/src/parsel.F +++ /dev/null @@ -1,148 +0,0 @@ - subroutine parsel(iret,jbq,jcq) -C...Reject events without b(c) quark within pT cuts - - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) - common/cutbq/pt_b_cut,eta_b_cut,pt_ab_cut,eta_ab_cut,andor - CHARACTER*(2) andor - common/flavour/flav - common/multif/ibq,icq - DATA IFIRST /1/ -C ----------- end CDE -------------------------------------------------- - - - IF(IFIRST.EQ.1) THEN -c ihard=0 - IFIRST =0 - ENDIF - - - idebug=0 - - iret=1 - NBGQ=0 - NABGQ=0 - icq=0. ! number of c quarks - ibq=0. ! number of b quarks - if(idebug.ne.0) then - print *,'PARSEL: starts' - print *,'PARSEL: iret, flav ',iret,flav - print *,'PARSEL: cutbq', - + pt_b_cut,eta_b_cut,pt_ab_cut,eta_ab_cut,andor - if((andor.EQ.'an').or.(andor.EQ.'AN')) - + print *,'PARSEL: andor = and or AND ',andor - if((andor.EQ.'or').or.(andor.EQ.'OR')) - + print *,'PARSEL: andor = or or OR ',andor - endif - - - DO 3 I=3,N - if(finf_quark(I,4.D0).ne.0) icq=icq+1 - if(finf_quark(I,5.D0).ne.0) ibq=ibq+1 - -cg 10.07.08 - if ( flav .eq. 45.D0 ) then - if ( find_quark(I,4.D0).eq.0 .and. - + find_quark(I,5.D0).eq.0 ) goto 3 - else - if(find_quark(I,flav).eq.0) go to 3 - endif - -C...PARAMETERS OF B(c)-QUARK - PT = DSQRT(P(I,1)**2+P(I,2)**2) - TH = DACOS(P(I,3)/DSQRT(PT**2+P(I,3)**2)) - ETA = -DLOG(MAX(.0001,DABS(DTAN(.5*TH)))) - if(idebug.ne.0) print *,'PARSEL: after eta i',i - PHI = atan2(P(I,1),P(I,2)) - if(idebug.ne.0) print *,'PARSEL: after phi i',i - -cg 10.07.08 IF(K(I,2).eq.flav.and.PT.GT.pt_b_cut. - IF(K(I,2).gt.0.and.PT.GT.pt_b_cut. - + and.abs(eta).lt.eta_b_cut) NBGQ=NBGQ+1 -cg 10.07.08 IF(K(I,2).eq.-flav.and.PT.GT.pt_ab_cut. - IF(K(I,2).lt.0.and.PT.GT.pt_ab_cut. - + and.abs(eta).lt.eta_ab_cut) NABGQ=NABGQ+1 - - - 3 continue - - jbq=ibq - jcq=icq - - -c the event is selected if both b and antib are inside cuts - if( ((andor.EQ.'an').or.(andor.EQ.'AN')) - + .and.(NBGQ * NABGQ).ne.0) iret=0 - -c the event is selected if b OR antib are inside cuts - if( ((andor.EQ.'or').or.(andor.EQ.'OR')) - + .and.(NBGQ + NABGQ).ne.0) iret=0 - - - - if(idebug.ne.0) then - if( ((andor.EQ.'an').or.(andor.EQ.'AN')) - + .and.(NBGQ * NABGQ).ne.0) - + print *,'PARSEL: posluchol andor iret ',andor,iret - if( ((andor.EQ.'or').or.(andor.EQ.'OR')) - + .and.(NBGQ + NABGQ).ne.0) - + print *,'PARSEL: posluchol andor iret ',andor,iret - endif - - - - - if(idebug.ne.0.and.iret.eq.0) - + print *,'PaRSEL: beauty or charm found in event:' - - return - end -C -------------------------------------------------------------------------- - function find_quark(i,fla) -c find the first quark in lujets list of flavour fla - - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) - double precision find_quark - idebug=0 - find_quark=0. - if(idebug.ne.0) print *,'find_quark: started' - - IF(abs(K(I,2)).EQ.fla.AND.K(I,1).LE.12) THEN - IF(abs(K(K(I,3),2)).NE.fla) THEN - find_quark=1. - ELSEIF(K(I,3).LE.8) THEN - find_quark=1. - ENDIF - ENDIF - if(idebug.ne.0) print *,'find_quark: ended' - - return - end - -C -------------------------------------------------------------------------- - function finf_quark(i,fla) -c find the first quark in lujets list of flavour fla - - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) - double precision finf_quark - idebug=0 - finf_quark=0. - if(idebug.ne.0) print *,'finf_quark: started' - - IF(K(I,2).EQ.fla.AND.K(I,1).LE.12) THEN - IF(K(K(I,3),2).NE.fla) THEN - finf_quark=1. - ELSEIF(K(I,3).LE.8) THEN - finf_quark=1. - ENDIF - ENDIF - if(idebug.ne.0) print *,'finf_quark: ended' - - return - end - diff --git a/Generators/PythiaB/src/pyevnt.F b/Generators/PythiaB/src/pyevnt.F deleted file mode 100644 index 516340d757bfe37e91f1526b28011e18c1e28123..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/src/pyevnt.F +++ /dev/null @@ -1,292 +0,0 @@ - -C********************************************************************* - -C...PYEVNT -C...Administers the generation of a high-pT event via calls to -C...a number of subroutines. - - SUBROUTINE PYEVNT - -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - INTEGER PYK,PYCHGE,PYCOMP -C...Commonblocks. - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) - COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5) - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) - COMMON/PYINT1/MINT(400),VINT(400) - COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2) - COMMON/PYINT4/MWID(500),WIDS(500,5) - COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3) - COMMON/PYUPPR/NUP,KUP(20,7),NFUP,IFUP(10,2),PUP(20,5),Q2UP(0:10) - SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYPARS/,/PYINT1/,/PYINT2/, - &/PYINT4/,/PYINT5/,/PYUPPR/ -C...Local array. - DIMENSION VTX(4) - -C...Initial values for some counters. - - print *,'I am in my PYEVNT' - N=0 - MINT(5)=MINT(5)+1 - MINT(7)=0 - MINT(8)=0 - MINT(83)=0 - MINT(84)=MSTP(126) - MSTU(24)=0 - MSTU70=0 - MSTJ14=MSTJ(14) - -C...If variable energies: redo incoming kinematics and cross-section. - MSTI(61)=0 - IF(MSTP(171).EQ.1) THEN - CALL PYINKI(1) - IF(MSTI(61).EQ.1) THEN - MINT(5)=MINT(5)-1 - RETURN - ENDIF - IF(MINT(121).GT.1) CALL PYSAVE(3,1) - CALL PYXTOT - ENDIF - -C...Loop over number of pileup events; check space left. - IF(MSTP(131).LE.0) THEN - NPILE=1 - ELSE - CALL PYPILE(2) - NPILE=MINT(81) - ENDIF - DO 260 IPILE=1,NPILE - IF(MINT(84)+100.GE.MSTU(4)) THEN - CALL PYERRM(11, - & '(PYEVNT:) no more space in PYJETS for pileup events') - IF(MSTU(21).GE.1) GOTO 270 - ENDIF - MINT(82)=IPILE - -C...Generate variables of hard scattering. - MINT(51)=0 - MSTI(52)=0 - 100 CONTINUE - IF(MINT(51).NE.0.OR.MSTU(24).NE.0) MSTI(52)=MSTI(52)+1 - MINT(31)=0 - MINT(51)=0 - MINT(57)=0 - CALL PYRAND - IF(MSTI(61).EQ.1) THEN - MINT(5)=MINT(5)-1 - RETURN - ENDIF - IF(MINT(51).EQ.2) RETURN - ISUB=MINT(1) - IF(MSTP(111).EQ.-1) GOTO 250 - - IF((ISUB.LE.90.OR.ISUB.GE.95).AND.ISUB.NE.99) THEN -C...Hard scattering (including low-pT): -C...reconstruct kinematics and colour flow of hard scattering. - MINT31=MINT(31) - 110 MINT(31)=MINT31 - MINT(51)=0 - CALL PYSCAT - IF(MINT(51).EQ.1) GOTO 100 - IPU1=MINT(84)+1 - IPU2=MINT(84)+2 - IF(ISUB.EQ.95) GOTO 130 - -C...Showering of initial state partons (optional). - ALAMSV=PARJ(81) - PARJ(81)=PARP(72) - IF(MSTP(61).GE.1.AND.MINT(47).GE.2) CALL PYSSPA(IPU1,IPU2) - PARJ(81)=ALAMSV - IF(MINT(51).EQ.1) GOTO 100 - -C...Showering of final state partons (optional). - ALAMSV=PARJ(81) - PARJ(81)=PARP(72) - IF(MSTP(71).GE.1.AND.ISET(ISUB).GE.2.AND.ISET(ISUB).LE.10) - & THEN - IPU3=MINT(84)+3 - IPU4=MINT(84)+4 - IF(ISET(ISUB).EQ.5) IPU4=-3 - QMAX=VINT(55) - IF(ISET(ISUB).EQ.2) QMAX=SQRT(PARP(71))*VINT(55) - CALL PYSHOW(IPU3,IPU4,QMAX) - ELSEIF(MSTP(71).GE.1.AND.ISET(ISUB).EQ.11.AND.NFUP.GE.1) THEN - DO 120 IUP=1,NFUP - IPU3=IFUP(IUP,1)+MINT(84) - IPU4=IFUP(IUP,2)+MINT(84) - QMAX=SQRT(MAX(0D0,Q2UP(IUP))) - CALL PYSHOW(IPU3,IPU4,QMAX) - 120 CONTINUE - ENDIF - PARJ(81)=ALAMSV - -C...Decay of final state resonances. - MINT(32)=0 - IF(MSTP(41).GE.1.AND.ISET(ISUB).LE.10) CALL PYRESD(0) - IF(MINT(51).EQ.1) GOTO 100 - MINT(52)=N - -C...Multiple interactions. - IF(MSTP(81).GE.1.AND.MINT(50).EQ.1) CALL PYMULT(6) - MINT(53)=N - -C...Hadron remnants and primordial kT. - 130 CALL PYREMN(IPU1,IPU2) - IF(MINT(51).EQ.1.AND.MINT(57).GE.1.AND.MINT(57).LE.5) GOTO 110 - IF(MINT(51).EQ.1) GOTO 100 - - ELSEIF(ISUB.NE.99) THEN -C...Diffractive and elastic scattering. - CALL PYDIFF - - ELSE -C...DIS scattering (photon flux external). - CALL PYDISG - IF(MINT(51).EQ.1) GOTO 100 - ENDIF - -C...Check that no odd resonance left undecayed. - IF(MSTP(111).GE.1) THEN - NFIX=N - DO 140 I=MINT(84)+1,NFIX - IF(K(I,1).GE.1.AND.K(I,1).LE.10.AND.K(I,2).NE.21.AND. - & K(I,2).NE.22) THEN - KCA=PYCOMP(K(I,2)) - IF(MWID(KCA).NE.0.AND.MDCY(KCA,1).GE.1) THEN - CALL PYRESD(I) - IF(MINT(51).EQ.1) GOTO 100 - ENDIF - ENDIF - 140 CONTINUE - ENDIF - -C...Boost hadronic subsystem to overall rest frame. -C..(Only relevant when photon inside lepton beam.) - IF(MINT(141).NE.0.OR.MINT(142).NE.0) CALL PYGAGA(4,WTGAGA) - -C...Recalculate energies from momenta and masses (if desired). - IF(MSTP(113).GE.1) THEN - DO 150 I=MINT(83)+1,N - IF(K(I,1).GT.0.AND.K(I,1).LE.10) P(I,4)=SQRT(P(I,1)**2+ - & P(I,2)**2+P(I,3)**2+P(I,5)**2) - 150 CONTINUE - NRECAL=N - ENDIF - -C...Rearrange partons along strings, check invariant mass cuts. - MSTU(28)=0 - IF(MSTP(111).LE.0) MSTJ(14)=-1 - CALL PYPREP(MINT(84)+1) - MSTJ(14)=MSTJ14 - IF(MSTP(112).EQ.1.AND.MSTU(28).EQ.3) GOTO 100 - IF(MSTP(125).EQ.0.OR.MSTP(125).EQ.1) THEN - DO 180 I=MINT(84)+1,N - IF(K(I,2).EQ.94) THEN - DO 170 I1=I+1,MIN(N,I+3) - IF(K(I1,3).EQ.I) THEN - K(I1,3)=MOD(K(I1,4)/MSTU(5),MSTU(5)) - IF(K(I1,3).EQ.0) THEN - DO 160 II=MINT(84)+1,I-1 - IF(K(II,2).EQ.K(I1,2)) THEN - IF(MOD(K(II,4),MSTU(5)).EQ.I1.OR. - & MOD(K(II,5),MSTU(5)).EQ.I1) K(I1,3)=II - ENDIF - 160 CONTINUE - IF(K(I+1,3).EQ.0) K(I+1,3)=K(I,3) - ENDIF - ENDIF - 170 CONTINUE - ENDIF - 180 CONTINUE - CALL PYEDIT(12) - CALL PYEDIT(14) - IF(MSTP(125).EQ.0) CALL PYEDIT(15) - IF(MSTP(125).EQ.0) MINT(4)=0 - DO 200 I=MINT(83)+1,N - IF(K(I,1).EQ.11.AND.K(I,4).EQ.0.AND.K(I,5).EQ.0) THEN - DO 190 I1=I+1,N - IF(K(I1,3).EQ.I.AND.K(I,4).EQ.0) K(I,4)=I1 - IF(K(I1,3).EQ.I) K(I,5)=I1 - 190 CONTINUE - ENDIF - 200 CONTINUE - ENDIF - -C...Introduce separators between sections in PYLIST event listing. - IF(IPILE.EQ.1.AND.MSTP(125).LE.0) THEN - MSTU70=1 - MSTU(71)=N - ELSEIF(IPILE.EQ.1) THEN - MSTU70=3 - MSTU(71)=2 - MSTU(72)=MINT(4) - MSTU(73)=N - ENDIF - -C...Go back to lab frame (needed for vertices, also in fragmentation). - CALL PYFRAM(1) - -C...Set nonvanishing production vertex (optional). - IF(MSTP(151).EQ.1) THEN - DO 210 J=1,4 - VTX(J)=PARP(150+J)*SQRT(-2D0*LOG(MAX(1D-10,PYR(0))))* - & SIN(PARU(2)*PYR(0)) - 210 CONTINUE - DO 230 I=MINT(83)+1,N - DO 220 J=1,4 - V(I,J)=V(I,J)+VTX(J) - 220 CONTINUE - 230 CONTINUE - ENDIF - -C...Perform hadronization (if desired). - IF(MSTP(111).GE.1) THEN - CALL PYEXEC - IF(MSTU(24).NE.0) GOTO 100 - ENDIF - IF(MSTP(113).GE.1) THEN - DO 240 I=NRECAL,N - IF(P(I,5).GT.0D0) P(I,4)=SQRT(P(I,1)**2+ - & P(I,2)**2+P(I,3)**2+P(I,5)**2) - 240 CONTINUE - ENDIF - IF(MSTP(125).EQ.0.OR.MSTP(125).EQ.1) CALL PYEDIT(14) - -C...Store event information and calculate Monte Carlo estimates of -C...subprocess cross-sections. -c MS change -c 250 IF(IPILE.EQ.1) CALL PYDOCU - 250 continue - -C...Set counters for current pileup event and loop to next one. - MSTI(41)=IPILE - IF(IPILE.GE.2.AND.IPILE.LE.10) MSTI(40+IPILE)=ISUB - IF(MSTU70.LT.10) THEN - MSTU70=MSTU70+1 - MSTU(70+MSTU70)=N - ENDIF - MINT(83)=N - MINT(84)=N+MSTP(126) - IF(IPILE.LT.NPILE) CALL PYFRAM(2) - 260 CONTINUE - -C...Generic information on pileup events. Reconstruct missing history. - IF(MSTP(131).EQ.1.AND.MSTP(133).GE.1) THEN - PARI(91)=VINT(132) - PARI(92)=VINT(133) - PARI(93)=VINT(134) - IF(MSTP(133).GE.2) PARI(93)=PARI(93)*XSEC(0,3)/VINT(131) - ENDIF - CALL PYEDIT(16) - -C...Transform to the desired coordinate frame. - 270 CALL PYFRAM(MSTP(124)) - MSTU(70)=MSTU70 - PARU(21)=VINT(1) - - RETURN - END diff --git a/Generators/PythiaB/src/qualify.F b/Generators/PythiaB/src/qualify.F deleted file mode 100644 index a4aa5de1d44b0922f2eadf2e2897c02c2275d47e..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/src/qualify.F +++ /dev/null @@ -1,211 +0,0 @@ -*CMZ : 02/08/2001 13.10.36 by Maria Smizanska -*-- Author : Maria Smizanska 20/09/96 - - function QUALIFY(i_line) -* * -*----------------------------------------------------------------------* -* * -* Name : QUALIFY * -* (module) * -* * -* Description : Check if particle satisfies selection criteria * * -* defined by user * -* * -* Arguments : * -* input: i_line particle line # in LUJET * -* * -* Banks/Tables: * -* LUJETS used * -* * -*----------------------------------------------------------------------* -* * -* Author : Maria Smizanska Date : 20/09/96 * -* * -* * -* Last modifications : * -* [name] Date : [date] * -* * -* Keywords : * -* [keywords] * -*----------------------------------------------------------------------* -* -c +CDE, TYPING. -*KEEP,DOUB. -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) -c INTEGER PYK,PYCHGE,PYCOMP -* KEEP,LUJETS. - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) -* KEEP,CUTOFF. - integer qualify -* cuts on stable particles to select event - common/cutoff/tr4,pt_pikp,eta_pikp, - + pt_muon,eta_muon, - + pt_ele,eta_ele - SAVE/cutoff/ - dimension cut3(7) - equivalence (cut3(1),tr4) -*KEEP,LVL1. -* LVL1 muon cuts - common/lvl1/tr1,pt_trig1, etha_trig1 - common/trg1/i_muon_trig1 - SAVE/lvl1/ - SAVE/trg1/ - dimension cut1(3) - equivalence (cut1(1),tr1) -*KEEP,LVL2. -* LVL2 muon cut and electron tag cut - common/lvl2/tr2,type,pt_trig2, etha_trig2 - common/trg2/i_muon_trig2,i_ele_trig2 - SAVE/lvl2/ - SAVE/trg2/ - dimension cut2(4) - equivalence (cut2(1),tr2) -*KEEP,FAMILY. - name_self(I)=K(I,2) - name_selv(I)=abs(K(I,2)) - name_father(I)=K(K(I,3),2) - name_grandpa(I)=K(K(K(I,3),3),2) - name_daughter1(I)=K(K(I,4),2) - name_daughter2(I)=K(K(I,5),2) - - link_self(I)=I - link_father(I)=K(I,3) - link_grandpa(I)=K(K(I,3),3) - link_daughter1(I)=K(I,4) - link_daughter2(I)=K(I,5) -*KEND. - integer forced - integer children -C ----------- end CDE -------------------------------------------------- - - idebug=0 - eta_stable=2.5 - eta_max=2.5 - pt_stable=0.5 - -c pt_pikp=0.5 -c pt_muon=3. ! this is third muon in event -c pt_ele=0.5 ! these are no tag electrons -c eta_pikp=2.5 -c eta_muon=2.5 ! this is third muon in event -c eta_ele= 2.5 ! these are no tag electrons - - -c accept inless veto - qualify=1 -c if(idebug.eq.1) print *,'QUALIFY: was called tr4=',tr4 -c accept if no selection cuts required by user - - if(tr4.eq.0) return - -c if(idebug.eq.1) print *,'QUALIFY: pt_pikp pt_ele pt_muon', -c + pt_pikp,pt_ele,pt_muon - - - - -c if neutrino or gamma, then accept particle and return - - if(name_selv(i_line).eq.12.or. - + name_selv(i_line).eq.14.or. - + name_selv(i_line).eq.16.or. - + name_selv(i_line).eq.18.or. - + name_selv(i_line).eq.22 ) return - -c if K_long reject - - if(name_selv(i_line).eq.130) then - qualify=0 - return - endif - -c if particle is non stable but the decay was closed by user - rejet - - if(forced(i_line).eq.1) then - - qualify=0 - return - endif - -c is this pi0 from K0s? - reject ( we cannot close this channel in PYTHIA, -c but we reject it in signal chain, because it cannot be recovered -c by detector - - if(name_selv(i_line).eq.111.and. - + name_father(i_line).eq.310) then - qualify=0 - return - endif - - - - PT = SQRT(P(i_line,1)**2+P(i_line,2)**2) - TH = ACOS(P(i_line,3)/SQRT(PT**2+P(i_line,3)**2)) - ETA = -LOG(MAX(.0001,ABS(TAN(.5*TH)))) - -c if not stable just check etha - - if(children(i_line).ne.0) then -c if(abs(ETA).gt.eta_max) -c + qualify=0 - - else - -c if stable then check etha and pt according to particle type - -c stable particle other that muon or ele ? - pt_stable=pt_pikp - eta_stable=eta_pikp - -c is this muon a trigger1 or trigger2 muon? - if yes take it, -c it has been already checked before -c if not apply cuts - if(idebug.eq.1.and.name_selv(i_line).eq.13) - + print *,'QUALIFY:muon_line i_muon_trig1 i_muon_trig2', - + name_selv(i_line),i_line,i_muon_trig1,i_muon_trig2 - if(name_selv(i_line).eq.13.and. - + (i_line.eq.i_muon_trig1.or.i_line.eq.i_muon_trig2)) return - - if(name_selv(i_line).eq.13.and.i_line.ne.i_muon_trig1. - + and.i_line.ne.i_muon_trig2) then - pt_stable=pt_muon - eta_stable=eta_muon - - endif - - - -c is this electron trigger2(tag) electron? - if yes take it -c it has been already checked before -c if not apply cuts - - - - - if(name_selv(i_line).eq.11.and. - + i_line.eq.i_ele_trig2) return - - if(name_selv(i_line).eq.11.and.i_line.ne.i_ele_trig2) then - pt_stable=pt_ele - eta_stable=eta_ele - endif - - -c check pt and etha - - - if(PT.lt.pt_stable.or.abs(ETA).gt.eta_stable) - + qualify=0 - if(idebug.ne.0.and. - + name_selv(i_line).eq.13) - + print *,'QUALIFY:pT muon and threshold', - + PT,pt_stable - - endif - - return -* -* - END ! QUALIFY diff --git a/Generators/PythiaB/src/rotat.F b/Generators/PythiaB/src/rotat.F deleted file mode 100644 index 48b04c8f6c017043caceba89fda6360a7c7740a6..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/src/rotat.F +++ /dev/null @@ -1,74 +0,0 @@ -c ********************************************************************** -c * * -c * Functions for 4-vector rotations * -c * Version 1.03 * -c * * -c * The last modification: 21.05.2003 * -c * * -c * Author: Nickolay Nikitin, nik679@monet.npi.msu.su * -c * * -c ********************************************************************** - - subroutine Mzero(RMt) - dimension RMt(4,4) - double precision RMt - do 40 i=1,4 - do 40 j=1,4 -40 RMt(i,j)=0.D0 - return - end - - - subroutine Mult(PIn,RMt,PFin) - dimension PIn(4), PFin(4), RMt(4,4) - double precision PIn, PFin, RMt - do 20 i=1,4 - do 20 j=1,4 -20 PFin(i)=PFin(i)+RMt(i,j)*PIn(j) - return - end - - - subroutine Pzero(Pt) - dimension Pt(4) - double precision Pt - do 50 i=1,4 -50 Pt(i)=0.D0 - return - end - - - subroutine Mov(PIn,PFin) - dimension PIn(4), PFin(4) - double precision PIn, PFin - do 30 i=1,4 -30 PFin(i)=PIn(i) - return - end - - - double precision function Psqr(Pin) - dimension Pin(4) - double precision Pin, Pin2 - PIn2=0.D0 - do 60 i=2,4 -60 Pin2=Pin2+Pin(i)**2 - Psqr=Pin2 - return - end - - - subroutine transforme(Pin,RMt) -c......The rotation variables - dimension Pin(4), Pout(4), RMt(4,4) - double precision Pin, Pout, RMt - - call Pzero(Pout) - call Mult(Pin,RMt,Pout) - call Pzero(Pin) - call Mov(Pout,Pin) - - return - end - - diff --git a/Generators/PythiaB/src/swop_ludat3.F b/Generators/PythiaB/src/swop_ludat3.F deleted file mode 100644 index c29bcd6cc61ef2e6e977232ea9d503130b285c94..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/src/swop_ludat3.F +++ /dev/null @@ -1,71 +0,0 @@ -*CMZ : 02/08/2001 11.47.04 by Maria Smizanska -*-- Author : Maria Smizanska 22/07/2000 - - subroutine swop_ludat3(in) - -c -c make a copy of default (in=1) decays to ludat3 -c make a copy of users defined (in=2) decays to ludat3 -c MDCY(500,3),MDME(2000,2),BRAT(2000),KFDP(2000,5) -c MDCY(500,3),MDME(4000,2),BRAT(4000),KFDP(4000,5) -c -*KEEP,DOUB. -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) -*KEEP,COLUDAT3. - - common /CLUDAT3/MDCYbi(500,3),MDMEbi(8000,2), - * BRATbi(8000),KFDPbi(8000,5), - * MDCYun(500,3),MDMEun(8000,2), - * BRATun(8000),KFDPun(8000,5) - -*KEEP,LUDAT3. - COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5) -*KEND. - - - - idebug=0 -* if(idebug.ne.0) print *,'swop_ludat3: is called' - - - if(in.eq.1) then -* call ucopy(xludat3_unbiased,xludat3,n_ludat3) - call icopy(MDCYun,MDCY,1500) - call icopy(MDMEun,MDME,16000) - call dcopy(BRATun,BRAT,8000) - call icopy(KFDPun,KFDP,40000) - - endif - - if(in.eq.2) then -* call ucopy(xludat3_biased,xludat3,n_ludat3) - call icopy(MDCYbi,MDCY,1500) - call icopy(MDMEbi,MDME,16000) - call dcopy(BRATbi,BRAT,8000) - call icopy(KFDPbi,KFDP,40000) - - endif - - - if(idebug.ne.0) then - print *,'swop_ludat3: unbiased=1 biased=2 actual=',in - print *,'swop_ludat3: mdme(982,1)',(mdme(ii,1),ii=982,982) - endif - return - end - - - subroutine icopy(ia,ib,N) - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - DIMENSION ia(*),ib(*) - IF (N.EQ.0) RETURN - DO 21 I=1,N - 21 ib(I)=ia(I) - return - end - - - diff --git a/Generators/PythiaB/src/trig1.F b/Generators/PythiaB/src/trig1.F deleted file mode 100644 index 6cb26da1b13fe51e790f767064637f3461648a58..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/src/trig1.F +++ /dev/null @@ -1,94 +0,0 @@ -*CMZ : 02/08/2001 13.09.46 by Maria Smizanska -*-- Author : Maria Smizanska 22/09/96 - SUBROUTINE TRIG1(iret) -* * -*----------------------------------------------------------------------* -* * -* Name : TRIG1 * -* (module) * -* * -* Description : Check if event pass LVL1 muon trigger * -* * -* * -* Arguments : * -* * -* * -* Banks/Tables: * -* [name] ([filled | used | modified]) * -* * -*----------------------------------------------------------------------* -* * -* Author : Maria Smizanska Date : 20/09/96 * -* * -* * -* Last modifications : * -* [name] Date : [date] * -* * -* Keywords : * -* [keywords] * -*----------------------------------------------------------------------* -* -C +CDE, TYPING. -*KEEP,DOUB. -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) -c INTEGER PYK,PYCHGE,PYCOMP -*KEEP,LUJETS. - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) -*KEEP,LVL1. -* LVL1 muon cuts - common/lvl1/tr1,pt_trig1, etha_trig1 - common/trg1/i_muon_trig1 - SAVE/lvl1/ - SAVE/trg1/ - dimension cut1(3) - equivalence (cut1(1),tr1) -*KEEP,FAMILY. - name_self(I)=K(I,2) - name_selv(I)=abs(K(I,2)) - name_father(I)=K(K(I,3),2) - name_grandpa(I)=K(K(K(I,3),3),2) - name_daughter1(I)=K(K(I,4),2) - name_daughter2(I)=K(K(I,5),2) - - link_self(I)=I - link_father(I)=K(I,3) - link_grandpa(I)=K(K(I,3),3) - link_daughter1(I)=K(I,4) - link_daughter2(I)=K(I,5) -*KEND. -C ----------- end CDE -------------------------------------------------- - -c local debugging control (swiched off for idebug=0) - idebug=0 - - i_muon_trig1=0 - -c is LVL1 required? - if(tr1.eq.0) return - if(idebug.eq.1) print *,'LVL1:pt_trig1 etha_trig1', - + pt_trig1,etha_trig1 - -c reject event unless accepted - iret=1 - - do I=1,N - if(name_selv(I).eq.13) then - PT = SQRT(P(I,1)**2+P(I,2)**2) - TH = ACOS(P(I,3)/SQRT(PT**2+P(I,3)**2)) - ETA = -LOG(MAX(.0001,ABS(TAN(.5*TH)))) - - if(PT.gt.pt_trig1.and.abs(ETA).lt.etha_trig1) then - iret=0. - i_muon_trig1=I - return - endif - endif - enddo - - - return -* -* - END ! TRIG1 diff --git a/Generators/PythiaB/src/trig2.F b/Generators/PythiaB/src/trig2.F deleted file mode 100644 index 9bd99e616251ffdc37dcb5d581e0794611e2087a..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/src/trig2.F +++ /dev/null @@ -1,110 +0,0 @@ -*CMZ : 02/08/2001 13.11.38 by Maria Smizanska -*-- Author : Maria Smizanska 23/09/96 - - SUBROUTINE TRIG2(iret) -* * -*----------------------------------------------------------------------* -* * -* Name : TRIG2 * -* (module) * -* * -* Description : Check LVL2 trigger: second muon or a high pT electron * -* if demanded by user. We see not reasonable to test * -* more than this of LVL2 trigger in ATGEN package. * -* * -* * -* Arguments : * -* iret | input/output | event rejection flag (=1) * -* * -* Banks/Tables: * -* [name] ([filled | used | modified]) * -* * -*----------------------------------------------------------------------* -* * -* Author : Maria Smizanska Date : 23/09/96 * -* * -* * -* Last modifications : * -* [name] Date : [date] * -* * -* Keywords : * -* [keywords] * -*----------------------------------------------------------------------* -* -C+CDE, TYPING. -*KEEP,DOUB. -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) -c INTEGER PYK,PYCHGE,PYCOMP -*KEEP,LUJETS. - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) -*KEEP,LVL1. -* LVL1 muon cuts - common/lvl1/tr1,pt_trig1, etha_trig1 - common/trg1/i_muon_trig1 - SAVE/lvl1/ - SAVE/trg1/ - dimension cut1(3) - equivalence (cut1(1),tr1) -*KEEP,LVL2. -* LVL2 muon cut and electron tag cut - common/lvl2/tr2,type,pt_trig2, etha_trig2 - common/trg2/i_muon_trig2,i_ele_trig2 - SAVE/lvl2/ - SAVE/trg2/ - dimension cut2(4) - equivalence (cut2(1),tr2) -*KEEP,FAMILY. - name_self(I)=K(I,2) - name_selv(I)=abs(K(I,2)) - name_father(I)=K(K(I,3),2) - name_grandpa(I)=K(K(K(I,3),3),2) - name_daughter1(I)=K(K(I,4),2) - name_daughter2(I)=K(K(I,5),2) - - link_self(I)=I - link_father(I)=K(I,3) - link_grandpa(I)=K(K(I,3),3) - link_daughter1(I)=K(I,4) - link_daughter2(I)=K(I,5) -*KEND. -C ----------- end CDE -------------------------------------------------- -* -c local debugging control - idebug=0 - if(idebug.ne.0) print *,'LVL2: pt_trig2 etha_trig2', - + pt_trig2,etha_trig2 - - i_muon_trig2=0 - i_ele_trig2=0 - -c is LVL2 required by user? - if no - return - if(tr2.eq.0) return - -c reject event unless accepted - iret=1 - -c find LVL2 muon or electron according to user choice by 'type' -c type is defined by users datacard - i_search=type - do I=1,N - PT = SQRT(P(I,1)**2+P(I,2)**2) - TH = ACOS(P(I,3)/SQRT(PT**2+P(I,3)**2)) - ETA = -LOG(MAX(.0001,ABS(TAN(.5*TH)))) - - if(name_selv(I).eq.i_search.and. - + PT.gt.pt_trig2.and. - + abs(ETA).lt.etha_trig2) then - if(i_search.eq.11) iret=0 -c if muon then look if not LVL1 muon - if(i_search.eq.13.and.I.ne.i_muon_trig1) iret=0 - if(i_search.eq.13) i_muon_trig2 = I - if(i_search.eq.11) i_ele_trig2 = I - if(iret.eq.0) return - endif - enddo - - return -* - END ! TRIG2 diff --git a/Generators/PythiaB/src/uf_BdAnglesCDF.F b/Generators/PythiaB/src/uf_BdAnglesCDF.F deleted file mode 100644 index 63c2001d0bb94773479ee06de0701b1f1bb54ae9..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/src/uf_BdAnglesCDF.F +++ /dev/null @@ -1,817 +0,0 @@ -*CMZ : -*-- Author : James catmore 2006-04-09 - SUBROUTINE uf_BdAnglesCDF(IRET) -* * -*----------------------------------------------------------------------* -* * -* Name : uf_BdANgles * -* (module) * -* * -* Description : User subroutine to define requirements for event * -* accepting/rejecting additional or * -* other that in subroutine finsel * -* for BdJpsi mumu K0* Kpi events -* INCLUDING DECAY ANGLES -* additional settings from cufdcp(10) array * -* Arguments : IRET (in/out) accepting(0)/rejecting(1) event * -* * -* * -* Author : James Catmore Date : 2006-04-09 * -* * -* * -* Last modifications : * -* [name] Date : [date] * -* * -* Keywords : * -* [keywords] * -*----------------------------------------------------------------------* -* -*+CDE, TYPING. -C ----------- end CDE -------------------------------------------------- -* -*KEEP,DOUB. -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - double precision par(8), mup(4),mum(4),kp(4),km(4),x(4),bs(4) -c Old angles commented out -c double precision ct1,ct2,phi,prob1,prob2,R - double precision ct,cp,phi,prob1,prob2,R - double precision l1muon,l2muon,muetacut,hadptcut,hadetacut, - + BdPtCut,BdEtaCut - double precision mu1pt,eta,pt - integer mupg,mumg,kpg,kmg,J -c INTEGER PYK,PYCHGE,PYCOMP -*KEEP,LUJETS. - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) -*KEEP,LUDAT1. - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) -*KEEP,LUDAT2. - COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) -*KEEP,PYPARS. - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) -*KEEP,PYINT1. - COMMON/PYINT1/MINT(400),VINT(400) -*KEEP,PYINT2. - COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2) -*KEEP,PYINT5. - COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3) -*KEEP,PYUPPR. - COMMON/PYUPPR/NUP,KUP(20,7),NFUP,IFUP(10,2),PUP(20,5),Q2UP(0:10) - -* user finsel decay selection and decay parameters - common /ufdecay/ cufdcp(10),iufdc - save /ufdecay/ - -*KEND. -* SAVE /LUJETS/,/LUDAT1/,/LUDAT2/ - SAVE /PYJETS/,/PYDAT1/,/PYDAT2/ - SAVE /PYPARS/,/PYINT1/,/PYINT2/,/PYINT5/,/PYUPPR/ -*KEEP,BTREE. - common/btree/ntree,tree(4000) - integer tree - SAVE /btree/ -*KEND. -c SAVE IFIRST,IIPRNT - SAVE IFIRST - DATA IFIRST /1/ -c DATA IIPRNT /0/ - -*KEEP,FAMILY. - name_self(I)=K(I,2) - name_selv(I)=abs(K(I,2)) - name_father(I)=K(K(I,3),2) - name_grandpa(I)=K(K(K(I,3),3),2) - name_daughter1(I)=K(K(I,4),2) - name_daughter2(I)=K(K(I,5),2) - - link_self(I)=I - link_father(I)=K(I,3) - link_grandpa(I)=K(K(I,3),3) - link_daughter1(I)=K(I,4) - link_daughter2(I)=K(I,5) -*KEND. -C ----------- end CDE -------------------------------------------------- - - idebug=0 - - IF(IFIRST.EQ.1) THEN - IFIRST =0 - ENDIF - -c return immediately if already rejected - if ( iret.eq.1 ) return - -c -c Add your decay selection here. -c Set iret to 0 (acception) or 1 (rejection) per event. -c -c Parameters: 0 (off) / 1 (on) -c cufdcp( 1) : bool: flat (0) or physics angles (1) -c cufdcp( 2) : muon1 pT cut (LVL1) -c cufdcp( 3) : muon2 pT cut (LVL2) -c cufdcp( 4) : muons eta cut -c cufdcp( 5) : kaons pT cut -c cufdcp( 6) : kaons eta cut -c cufdcp( 7) : Bd pT cut -c cufdcp( 8) : Bd eta cut -c cufdcp( 9) : Bd lifetime (if zero, extract it from Pythia common blocks) -c cufdcp(10) : - - -c some counting - nintree = 0 - -c preset - iret = 1 - - if(idebug.eq.1) - + print *,'USER_FINSEL: BEGINNING v3' - -c particle loop -- modify content as needed -c do I=1,N -c -c if(tree(I).eq.1) then -c -c accept only Phi KK decays -- code by James Catmore -c -c if(name_selv(I).eq.333.and. -c +name_father(I).eq.531.and. -c +abs(name_daughter1(I)).eq.321.and. -c +abs(name_daughter2(I)).eq.321) then -c if(idebug.eq.1) print *,'USER_FINSEL: ',name_self(I) -c iret=0 -c endif -c endif -c -c enddo - -c evaluation - -c 1000 continue -c if(iret.ne.0) then -c debug output -c if(idebug.eq.1) -c + print *, 'USER_FINSEL: event rejected' -c endif - - -c ********************************************************************** -c -c Code to simulate CP violation -c -c ********************************************************************** - -c Pythia Parameters -c Bd Lifetime from Pythia - tau = 0. - if ( cufdcp(9).le.0.0 ) then -c For Bs lifetime -c tau = pmas(140,4)/0.299792458 -c For Bd lifetime - tau = pmas(134,4)/0.299792458 - if(idebug.eq.1) print*, 'Bd lifetime extracted: ', tau*0.2997924 - else - tau = cufdcp(9)/0.299792458 - endif -c Set Physics Parameters -c A0 - par(1) = 0.7661 -c Al - par(2) = 0.5019 -c deltaG - par(3) = 0.0 -c GammaS - par(4) = 0.659 -c Delta M - par(5) = 0.507 -c phiS - par(6) = 0.0 -c delta1 - par(7) = 0.15 -c delta2 - par(8) = 3.02 - -c Bd kinematic cuts - muetacut = cufdcp(4) - l1muon = cufdcp(2) - l2muon = cufdcp(3) - hadptcut = cufdcp(5) - hadetacut = cufdcp(6) - BdPtCut = cufdcp(7) - BdEtaCut = cufdcp(8) -c ********************************************************************** - -c Make sure the event is not accepted by lucky initialization - mupg = -1 - mumg = -2 - kpg = -3 - kmg = -4 -c Search for the Bd -> J/psi K0* decay - do I=1,N - if(name_self(I).eq.511.and.(name_daughter1(I).eq.443.and. - +name_daughter2(I).eq.313.or.name_daughter1(I).eq.313.and. - +name_daughter2(I).eq.443)) then - do J=1,4 - bs(J) = P(I,J) - enddo - continue - endif - if(name_self(I).eq.-13.and.name_father(I).eq.443.and. - +name_grandpa(I).eq.511) then - mupg = link_grandpa(I) - do J=1,4 - mup(J) = P(I,J) - enddo - continue - endif - if(name_self(I).eq.13.and.name_father(I).eq.443.and. - +name_grandpa(I).eq.511) then - mumg = link_grandpa(I) - do J=1,4 - mum(J) = P(I,J) - enddo - continue - endif - if(name_self(I).eq.321.and.name_father(I).eq.313.and. - +name_grandpa(I).eq.511) then - kpg = link_grandpa(I) - do J=1,4 - kp(J) = P(I,J) - enddo - continue - endif - if(name_self(I).eq.-211.and.name_father(I).eq.313.and. - +name_grandpa(I).eq.511) then - kmg = link_grandpa(I) - do J=1,4 - km(J) = P(I,J) - enddo - continue - endif - enddo -c Check that all the particles come from the same Bd - if(mupg.ne.mumg.or.mupg.ne.kpg.or.mupg.ne.kmg) then - if(idebug.eq.1) print*,"Muon Plus Grandpa = ",mupg - if(idebug.eq.1) print*,"Muon Minus Grandpa = ",mumg - if(idebug.eq.1) print*,"Kaon Plus Grandpa = ",kpg - if(idebug.eq.1) print*,"Pion Minus Grandpa = ",kmg - if(idebug.eq.1) print*,"Signal decay not found." - iret = 1 - return - endif - - if(idebug.eq.1) print*,"Signal decay was found!" - -c return here for flat angles - - if ( cufdcp(1).ne.0.0 ) then - -c If a Bd -> J/psi(mu mu) phi(K K) event has been found -c print*,"mu+ = (",mup(1),", ",mup(2)," ,",mup(3),", ",mup(4),")" -c print*,"mu- = (",mum(1),", ",mum(2)," ,",mum(3),", ",mum(4),")" -c print*,"K+ = (",kp(1),", ",kp(2)," ,",kp(3),", ",kp(4),")" -c print*,"K- = (",km(1),", ",km(2)," ,",km(3),", ",km(4),")" - -c Old angles commented out -c call cost(mup,mum,kp,km,ct1,ct2) -c call chi(mup,mum,kp,km,phi) - call cdfct(mup,mum,kp,km,ct) - call cdfcp(mup,mum,kp,km,cp) - call cdfphi(mup,mum,kp,km,phi) - - if(idebug.eq.1) print*,"cos(theta) = ",ct - if(idebug.eq.1) print*,"cos(psi) = ",cp - if(idebug.eq.1) print*,"phi = ",phi - if(idebug.eq.1) print*,"Proper Lifetime = ",V(mupg,5)/0.2998 - -c Set Measured Parameters for ML function -c x(1) = proper time V(mupg,5) mm/c (~3.33x10^-12 s^-1) - x(1) = V(mupg,5)/0.299792458 - x(2) = ct - x(3) = cp - x(4) = phi - - call mlfunc_cdf(x,par,prob1) - call norm(x(1),tau,prob2) - -c Accept/Reject Event -c Random number generator - R = PYR(0)*1.8 -c print*,"Random Number = ",R -c print*,"Corrected ML Prob = ",prob1*prob2 -c if(idebug.eq.1) print*, "Prob1 ", prob1 -c if(idebug.eq.1) print*, "Prob2 ", prob2 - if(idebug.eq.1) print*, "Random Number = ", R - if(idebug.eq.1) print*, "Corrected ML Prob = ", prob1*prob2 - if((prob1*prob2).gt.1.8) then - print*,"WARNING: Max Prob exceeded!", prob1*prob2 - endif - if(R.lt.(prob1*prob2)) then - iret = 0 - if(idebug.eq.1) print*, 'Accepted prob' - ELSE - iret = 1 - if(idebug.eq.1) print*, 'Rejected prob' - return - endif -c End of flat-angles switch - else -c Flat angles are always accepted - iret = 0 - - endif - -c Apply kinematic cuts - - call kine(bs,eta,pt) - if(abs(eta).gt.BdEtaCut.or.pt.lt.BdPtCut) then - iret = 1 -c if(idebug.eq.1) print*,"Rejected because Bd Pt is ",pt - return - endif -c if(idebug.eq.1) print*,"Accepted Bd Pt is ",pt - - call kine(mup,eta,pt) - mu1pt = pt - if(abs(eta).gt.muetacut.or.pt.lt.l2muon) then - iret = 1 - return - endif - call kine(mum,eta,pt) - if(abs(eta).gt.muetacut.or.pt.lt.l2muon) then - iret = 1 - return - endif -c Apply Level 1 Cut - if (mu1pt.lt.pt) then - mu1pt = pt - endif - if(mu1pt.lt.l1muon) then - iret = 1 - return - endif -c Apply Hadron cuts - call kine(kp,eta,pt) - if(abs(eta).gt.hadetacut.or.pt.lt.hadptcut) then - iret = 1 - return - endif - call kine(km,eta,pt) - if(abs(eta).gt.hadetacut.or.pt.lt.hadptcut) then - iret = 1 - return - endif -c if(idebug.eq.1) print*,"Proper Lifetime = ",V(mupg,5)/0.299792458 - if(idebug.eq.1) print*,"**** IRET = ",iret - - return -* USER_FINSEL - END - - -c ********************************************************************** -* -* Subroutine to calculate cos(theta) -* -c23456****************************************************************** -c subroutine cost(d1,d2,h1,h2,ct1,ct2) -c implicit none -c double precision d1(4),d2(4),h1(4),h2(4),jpsi(4),kns(4),b(4) -c double precision jpsib(4),d1b(4),knsb(4),h1b(4) -c double precision ct1,ct2 -c integer i -c -c do i=1,4 -c jpsi(i) = d1(i)+d2(i) -c kns(i) = h1(i)+h2(i) -c b(i) = jpsi(i)+kns(i) -c enddo -c -c call loren4(b, jpsi, jpsib) -c call loren4(jpsi, d1, d1b) -c call ang3(jpsib,d1b,ct1) -c -c call loren4(b, kns, knsb) -c call loren4(kns,h1,h1b) -c call ang3(knsb,h1b,ct2) -c -c return -c end - -c ********************************************************************** - -c ********************************************************************** -* -* Subroutine to calculate chi -* -c23456****************************************************************** -c subroutine chi(d1,d2,h1,h2,phi) -c implicit none -c double precision p(4),d1(4),d2(4),h1(4),h2(4),jpsi(4),kns(4) -c double precision d1b(4),h1b(4),jpsib(4),knsb(4) -c double precision dperp(3), hperp(3), dpara(3) -c double precision phi, signum -c integer i -c -c do i=1,4 -c jpsi(i) = d1(i)+d2(i) -c kns(i) = h1(i)+h2(i) -c p(i) = jpsi(i)+kns(i) -c enddo -c -c call loren4(p,d1,d1b) -c call loren4(p,h1,h1b) -c call loren4(p,jpsi,jpsib) -c call loren4(p,kns,knsb) -c -c call cross(jpsib,d1b,dperp) -c call cross(knsb,h1b,hperp) -c call cross(dperp,hperp,dpara) -c -c call ang3(jpsib,dpara,signum) -c call ang3(dperp,hperp,phi) -c phi = signum * dacos(phi) -c if (phi.LT.0) phi=phi+2*3.1415926536 -c -c return -c end - -c ********************************************************************** - -c ********************************************************************** -* -* Subroutine to calculate CDF cos(theta) -* -c23456****************************************************************** -c subroutine cdfct(d1,d2,h1,h2,ct) -c implicit none -c double precision d1(4),d2(4),h1(4),h2(4),jpsi(4),kns(4) -c double precision d1b(4),h1b(4),knsb(4) -c double precision x(3), y(3), z(3), h1bu(3), d1bu(3), knso(3) -c double precision ct, prod -c integer i -c -c Calculate 4 vectors of J/psi and phi/K0* -c do i=1,4 -c jpsi(i) = d1(i)+d2(i) -c kns(i) = h1(i)+h2(i) -c enddo -c -c Boost into rest frame of J/psi -c call loren4(jpsi,d1,d1b) -c call loren4(jpsi,h1,h1b) -c call loren4(jpsi,kns,knsb) -c -c Calcuate coordinate system -c call unit3(knsb, x) -c call unit3(h1b, h1bu) -c call unit3(d1b, d1bu) -c call dot3(h1bu,x,prod) -c -c do i=1,3 -c knso(i) = h1bu(i) - x(i)*prod -c enddo -c -c call unit3(knso,y) -c call cross(x,y,z) -c -c Calculate cos(theta) -c call dot3(d1bu,z,ct) -c -c return -c end - -c ********************************************************************** - -c ********************************************************************** -* -* Subroutine to calculate CDF cos(Psi) -* -c23456****************************************************************** -c subroutine cdfcp(d1,d2,h1,h2,cp) -c implicit none -c double precision d1(4),d2(4),h1(4),h2(4),jpsi(4),kns(4) -c double precision h1b(4),jpsib(4) -c double precision h1bu(3),jpsibu(3) -c double precision cp -c integer i -c -c Calculate 4 vectors of J/psi and phi/K0* -c do i=1,4 -c jpsi(i) = d1(i)+d2(i) -c kns(i) = h1(i)+h2(i) -c enddo -c -c Boost into rest frame of phi/K0* -c call loren4(kns,jpsi,jpsib) -c call loren4(kns,h1,h1b) -c -c Calculate cos(Psi) -c call ang3(h1b,jpsib,cp) -c cp = cp*(-1.0) -c -c return -c end - -c ********************************************************************** - -c ********************************************************************** -* -* Subroutine to calculate CDF Phi -* -c23456****************************************************************** -c subroutine cdfphi(d1,d2,h1,h2,phi) -c implicit none -c double precision d1(4),d2(4),h1(4),h2(4),jpsi(4),kns(4) -c double precision d1b(4),h1b(4),knsb(4) -c double precision x(3), y(3), z(3), h1bu(3), d1bu(3), knso(3) -c double precision phi, prod, xdot, ydot -c integer i -c -c Calculate 4 vectors of J/psi and phi/K0* -c do i=1,4 -c jpsi(i) = d1(i)+d2(i) -c kns(i) = h1(i)+h2(i) -c enddo -c -c Boost into rest frame of J/psi -c call loren4(jpsi,d1,d1b) -c call loren4(jpsi,h1,h1b) -c call loren4(jpsi,kns,knsb) -c -c Calcuate coordinate system -c call unit3(knsb, x) -c call unit3(h1b, h1bu) -c call unit3(d1b, d1bu) -c call dot3(h1bu,x,prod) -c -c do i=1,3 -c knso(i) = h1bu(i) - x(i)*prod -c enddo -c -c call unit3(knso,y) -c -c Calculate Phi -c call dot3(d1bu,y,ydot) -c call dot3(d1bu,x,xdot) -c phi = datan2(ydot,xdot) -c -c return -c end - -c ********************************************************************** - -c ********************************************************************** -* -* Subroutine to normalize exponential distribution to flat distribution -* between 0 and tmax -* t is the proper decay time of the Bd in ps -* tau is the lifetime of the Bd -* p is the normalization factor -* tmax is the maximum allowed time in ps -* -c23456****************************************************************** -c subroutine norm(t,tau,p) -c double precision t, tau, p -c t is in pico seconds -c if(t.Gt.20.0) print*, "WARNING: proper decay time > 20ps" -c p = exp(t/tau)*tau -c -c return -c end - -c ********************************************************************** - -c ********************************************************************** -* -* Subroutine to calculate ML function -* -c23456****************************************************************** -c subroutine mlfunc_cdf(x, par, prob) -c double precision x(4), par(8), a(6), b1(6), b2(6), c(6) -c double precision prob, time, cost, cospsi, phi, a0, apara, -c + aperp, deltag, gammas, deltam, phis, delta1, -c + delta2, gammah, gammal, expgl, expgh, expgs, -c + sinsqt, sisqps, sin2t, sin2ps, eta -c integer i -c -c Measured Variables -c time = x(1) -c Old angles commented out -c cost1 = x(2) -c cost2 = x(3) -c cost = x(2) -c cospsi = x(3) -c phi = x(4) -c -c Fitted Variables -c a0 = par(1) -c apara = par(2) -c aperp = sqrt(1 - a0**2 - apara**2) -c deltag = par(3) -c gammas = par(4) -c deltam = par(5) -c phis = par(6) -c delta1 = par(7) -c delta2 = par(8) -c -c The tabulated function is Sum of: a(i) * (b1(i) +/- b2(i)) * c(i) -c Define a cells -c -c a(1) = 0.5 * a0**2 -c a(2) = 0.5 * apara**2 -c a(3) = 0.5 * aperp**2 -c a(4) = 0.5 * a0*apara*cos(delta2 - delta1) -c a(5) = apara*aperp -c a(6) = a0*aperp -c -c Define B cells -c Input variables are gammas, deltag, deltam, phis, delta1, delta2, time -c -c gammah = gammas - deltag/2.0 -c gammal = gammas + deltag/2.0 -c expgl = exp((-gammal)*time) -c expgh = exp((-gammah)*time) -c expgs = exp((-gammas)*time) -c -c b1(1) = (1.0 + cos(phis))*expgl + (1.0 - cos(phis))*expgh -c b1(2) = b1(1) -c b1(3) = (1.0 - cos(phis))*expgl + (1.0 + cos(phis))*expgh -c b1(4) = b1(1) -c b1(5) = (-0.5)*(expgh - expgl)*cos(delta1)*sin(phis) -c b1(6) = (-0.5)*(expgh - expgl)*cos(delta2)*sin(phis) -c -c b2(1) = 2.0*expgs*sin(deltam*time)*sin(phis) -c b2(2) = b2(1) -c b2(3) = -b2(1) -c b2(4) = b2(1) -c b2(5) = expgs*(sin(delta1)*cos(deltam*time) - -c + cos(delta1)*sin(deltam*time)*cos(phis)) -c b2(6) = expgs*(sin(delta2)*cos(deltam*time) - -c + cos(delta2)*sin(deltam*time)*cos(phis)) -c -c Define C cells -c Old angles commented out -c Input variables are cost1, cost2 and phi -c -c sisqt1 = 1.0 - cost1**2 -c sisqt2 = 1.0 - cost2**2 -c sin2t1 = 2.0*sqrt(sisqt1)*cost1 -c sin2t2 = 2.0*sqrt(sisqt2)*cost2 -c -c c(1) = 4.0*sisqt1*cost2**2 -c c(2) = (1.0 + cost1**2)*sisqt2 - sisqt1*sisqt2*cos(2.0*phi) -c c(3) = (1.0 + cost1**2)*sisqt2 + sisqt1*sisqt2*cos(2.0*phi) -c c(4) = (-sqrt(2.0))*sin2t1*sin2t2*cos(phi) -c c(5) = 2.0*sisqt1*sisqt2*sin(2.0*phi) -c c(6) = sqrt(2.0)*sin2t1*sin2t2*sin(phi) -c -c Input variables are cost, cosp and phi -c -c sinsqt = 1.0 - cost**2 -c sisqps = 1.0 - cospsi**2 -c sin2t = 2.0*sqrt(sinsqt)*cost -c sin2ps = 2.0*sqrt(sisqps)*cospsi -c -c c(1) = 2.0*cospsi**2 * (1.0 - sinsqt*cos(phi)**2) -c c(2) = sisqps * (1.0 - sinsqt*sin(phi)**2) -c c(3) = sisqps * sinsqt -c c(4) = (-1.0/sqrt(2.0))*sin2ps * sinsqt * sin(2.0*phi) -c c(5) = sisqps * sin2t * sin(phi) -c c(6) = (1.0/sqrt(2.0))*sin2ps * sin2t * cos(phi) -c -c -c Sum the tabulated formula -c Currently just calculate bs decay -c prob = 0.0 -c eta is +1 for particle -1 for antiparticle -c adam changed eta to meet B meson production -c eta = 1.0 -c do i=1,6 -c prob = prob + a(i)*(b1(i) + eta*b2(i))*c(i) -c enddo -c -c return -c end - -c ********************************************************************** - -c ********************************************************************** -* -* Subroutine to calculate eta and pt of particle -* -c23456****************************************************************** -c subroutine kine(p, eta, pt) -c double precision p(4) -c double precision eta,pt,th -c pt = sqrt(p(1)**2+p(2)**2) -c th = acos(p(3)/sqrt(pt**2+p(3)**2)) -c eta = -log(max(0.0001,abs(dtan(0.5*th)))) -c -c return -c end - -c ********************************************************************** - -c ********************************************************************** -* -* Subroutine to convert vector into unit vector -* -c23456****************************************************************** -c subroutine unit3(v, norm) -c double precision v(3), norm(3) -c -c do i=1,3 -c norm(i) = v(i) / dsqrt(v(1)**2+v(2)**2+v(3)**2) -c enddo -c -c return -c end - -c ********************************************************************** - -c ********************************************************************** -* -* Subroutine to perform dot product of 3 momentum -* -c23456****************************************************************** -c subroutine dot3(v1, v2, prod) -c double precision v1(3), v2(3) -c double precision prod -c -c prod = v1(1)*v2(1)+v1(2)*v2(2)+v1(3)*v2(3) -c -c return -c end - -c ********************************************************************** - -c ********************************************************************** -* -* Subroutine to calculate angle between 2 vectors -* -c23456****************************************************************** -c subroutine ang3(v1, v2, prod) -c double precision v1(3), v2(3) -c double precision prod, v1mag, v2mag -c -c call dot3(v1,v2,prod) -c v1mag = v1(1)**2+v1(2)**2+v1(3)**2 -c v2mag = v2(1)**2+v2(2)**2+v2(3)**2 -c -c prod = prod/dsqrt(v1mag*v2mag) -c -c return -c end - -c ********************************************************************** - -* -* $Id: cross.F,v 1.1.1.1 1996/02/15 17:49:51 mclareni Exp $ -* -c SUBROUTINE CROSS(X,Y,Z) -C -C CERN PROGLIB# F117 CROSS .VERSION KERNFOR 2.02 730125 -C ORIG. 01/01/64 -C -c IMPLICIT DOUBLE PRECISION (A-H,O-Z) -c DIMENSION X(3),Y(3),Z(3) -C -C -c Z1=X(2)*Y(3)-X(3)*Y(2) -c Z2=X(3)*Y(1)-X(1)*Y(3) -c Z(3)=X(1)*Y(2)-X(2)*Y(1) -c Z(1)=Z1 -c Z(2)=Z2 -c RETURN -c END - -c SUBROUTINE LOREN4 (DIR,P4IN,P4OUT) -C -C CERN PROGLIB# U101 LOREN4 .VERSION KERNFOR 4.07 830624 -C ORIG. 20/02/68 -C -c -c DOUBLE PRECISION PCM2, ONMCM, EPBETA, PROD -c -c DOUBLE PRECISION DIR(4),P4IN(4),P4OUT(4) -C -C-- VN(A) MEANS N-VECTOR A -C-- GAMMA=ECM/MCM -C-- EPBETA=ECM*V3(PCM)*V3(BETA) -C-- V3(BETA)=V3(PCM)/ECM -C -c PCM2=DIR(1)*DIR(1)+DIR(2)*DIR(2)+DIR(3)*DIR(3) -c -c -c ONMCM=1.D0/DSQRT (DIR(4)*DIR(4)-PCM2) -c -c EPBETA=P4IN(1)*DIR(1)+P4IN(2)*DIR(2)+P4IN(3)*DIR(3) -c PROD=EPBETA*(DIR(4)*ONMCM-1.D0)/PCM2-P4IN(4)*ONMCM -c P4OUT(4)=ONMCM*(P4IN(4)*DIR(4)-EPBETA) -c DO 50 I=1,3 -c 50 P4OUT(I)=P4IN(I)+DIR(I)*PROD -c RETURN -c END - diff --git a/Generators/PythiaB/src/uf_BdJpsimumuK0starKpi.F b/Generators/PythiaB/src/uf_BdJpsimumuK0starKpi.F deleted file mode 100644 index 5499c210007a7edb7fcff2c1a84df9491e6ffe65..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/src/uf_BdJpsimumuK0starKpi.F +++ /dev/null @@ -1,104 +0,0 @@ - subroutine uf_BdJpsimumuK0starKpi ( iret ) - -*----------------------------------------------------------------------* -* * -* Name : uf_BdJpsimumuK0starKpi * -* (module) * -* * -* Description : User subroutine to define requirements for event * -* accepting/rejecting additional or other that in * -* subroutine finsel for Bd->J/psi(mu,mu)K0star(K,pi) * -* events. Additional settings from cufdcp(10) array. * -* Arguments : iret (in/out) accepting(0)/rejecting(1) event * -* * -* * -* Author : Pavel Reznicek Date : 2010-08-26 * -* * -* * -* Last modifications : * -* Pavel Reznicek Date : 2010-08-26 * -* * -* Keywords : * -* [keywords] * -*----------------------------------------------------------------------* - -C...Double precision and integer declarations. - implicit double precision (a-h,o-z) - implicit integer (i-n) - -C...Decay tree genealogy in Pythia - common /PYJETS/ N,NPAD,K(4000,5),P(4000,5),V(4000,5) - save /PYJETS/ - -C...User finsel decay selection and decay parameters - common /ufdecay/ cufdcp(10),iufdc - save /ufdecay/ - -C...First event - save ifirst - data ifirst /1/ - -C...Family definition from Pythia - name_self(i) = K(i,2) - name_selv(i) = abs(K(i,2)) - name_father(i) = K(K(i,3),2) - name_grandpa(i) = K(K(K(i,3),3),2) - name_daughter1(i) = K(K(i,4),2) - name_daughter2(i) = K(K(i,5),2) - - link_self(i) = i - link_father(i) = K(i,3) - link_grandpa(i) = K(K(i,3),3) - link_daughter1(i) = K(i,4) - link_daughter2(i) = K(i,5) - -C...Variable to be used for debugging the finsel algorithm - idebug = 0 - - if ( ifirst.eq.1 ) then - ifirst = 0 - endif - -C...Return immediately if already rejected - if ( iret.eq.1 ) return - -C...Parameters: -c cufdcp( 1) : -c cufdcp( 2) : -c cufdcp( 3) : -c cufdcp( 4) : -c cufdcp( 5) : -c cufdcp( 6) : -c cufdcp( 7) : -c cufdcp( 8) : -c cufdcp( 9) : -c cufdcp(10) : - -C...Preset the acceptance (1 ... event is rejected) - iret = 1 - - if ( idebug.eq.1 ) - + print *,'USER_FINSEL: BEGINNING - BdJpsimumuK0starKpi' - -C...Loop over all the particles in the event - do i = 1,N -c if ( tree(i).eq.1 ) then -C...Accept only Kstar0->Kpi decays (in case K0star comes from Bd) - if ( name_selv(i) .eq.313.and. - + name_father(i).eq.511.and. - + ((abs(name_daughter1(i)).eq.211.and. - + abs(name_daughter2(i)).eq.321).or. - + (abs(name_daughter1(i)).eq.321.and. - + abs(name_daughter2(i)).eq.211)) ) then - if ( idebug.eq.1 ) print *,'USER_FINSEL: ',name_self(i) - iret = 0 - endif - enddo - -C...Evaluate the filtering output - if ( iret.ne.0 ) then - if ( idebug.eq.1 ) print *, 'USER_FINSEL: event rejected' - endif - - return - end diff --git a/Generators/PythiaB/src/uf_BsAngles.F b/Generators/PythiaB/src/uf_BsAngles.F deleted file mode 100644 index c656fb74d9656d3b3107be4fbd22cb45551d0f16..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/src/uf_BsAngles.F +++ /dev/null @@ -1,641 +0,0 @@ -*CMZ : -*-- Author : James catmore 2006-04-09 - SUBROUTINE uf_BsAngles(IRET) -* * -*----------------------------------------------------------------------* -* * -* Name : uf_BsANgles * -* (module) * -* * -* Description : User subroutine to define requirements for event * -* accepting/rejecting additional or * -* other that in subroutine finsel * -* for BsJpsi mumu Phi KK events -* INCLUDING DECAY ANGLES -* additional settings from cufdcp(10) array * -* Arguments : IRET (in/out) accepting(0)/rejecting(1) event * -* * -* * -* Author : James Catmore Date : 2006-04-09 * -* * -* * -* Last modifications : * -* [name] Date : [date] * -* * -* Keywords : * -* [keywords] * -*----------------------------------------------------------------------* -* -*+CDE, TYPING. -C ----------- end CDE -------------------------------------------------- -* -*KEEP,DOUB. -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - double precision par(8), mup(4),mum(4),kp(4),km(4),x(4),bs(4) - double precision ct1,ct2,phi,prob1,prob2,R - double precision l1muon,l2muon,muetacut,hadptcut,hadetacut, - + BsPtCut,BsEtaCut - double precision mu1pt,eta,pt - integer mupg,mumg,kpg,kmg,J -c INTEGER PYK,PYCHGE,PYCOMP -*KEEP,LUJETS. - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) -*KEEP,LUDAT1. - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) -*KEEP,LUDAT2. - COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) -*KEEP,PYPARS. - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) -*KEEP,PYINT1. - COMMON/PYINT1/MINT(400),VINT(400) -*KEEP,PYINT2. - COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2) -*KEEP,PYINT5. - COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3) -*KEEP,PYUPPR. - COMMON/PYUPPR/NUP,KUP(20,7),NFUP,IFUP(10,2),PUP(20,5),Q2UP(0:10) - -* user finsel decay selection and decay parameters - common /ufdecay/ cufdcp(10),iufdc - save /ufdecay/ - -*KEND. -* SAVE /LUJETS/,/LUDAT1/,/LUDAT2/ - SAVE /PYJETS/,/PYDAT1/,/PYDAT2/ - SAVE /PYPARS/,/PYINT1/,/PYINT2/,/PYINT5/,/PYUPPR/ -*KEEP,BTREE. - common/btree/ntree,tree(4000) - integer tree - SAVE /btree/ -*KEND. -c SAVE IFIRST,IIPRNT - SAVE IFIRST - DATA IFIRST /1/ -c DATA IIPRNT /0/ - -*KEEP,FAMILY. - name_self(I)=K(I,2) - name_selv(I)=abs(K(I,2)) - name_father(I)=K(K(I,3),2) - name_grandpa(I)=K(K(K(I,3),3),2) - name_daughter1(I)=K(K(I,4),2) - name_daughter2(I)=K(K(I,5),2) - - link_self(I)=I - link_father(I)=K(I,3) - link_grandpa(I)=K(K(I,3),3) - link_daughter1(I)=K(I,4) - link_daughter2(I)=K(I,5) -*KEND. -C ----------- end CDE -------------------------------------------------- - - idebug=0 - - IF(IFIRST.EQ.1) THEN - IFIRST =0 - ENDIF - -c return immediately if already rejected - if ( iret.eq.1 ) return - -c -c Add your decay selection here. -c Set iret to 0 (acception) or 1 (rejection) per event. -c -c Parameters: 0 (off) / 1 (on) -c cufdcp( 1) : bool: flat (0) or physics angles (1) -c cufdcp( 2) : muon1 pT cut (LVL1) -c cufdcp( 3) : muon2 pT cut (LVL2) -c cufdcp( 4) : muons eta cut -c cufdcp( 5) : kaons pT cut -c cufdcp( 6) : kaons eta cut -c cufdcp( 7) : Bs pT cut -c cufdcp( 8) : Bs eta cut -c cufdcp( 9) : Bs lifetime (if zero, extract it from Pythia common blocks) -c cufdcp(10) : - - -c some counting - nintree = 0 - -c preset - iret = 1 !change - - if(idebug.eq.1) - + print *,'USER_FINSEL: BEGINNING v3' - -c particle loop -- modify content as needed -c do I=1,N -c -c if(tree(I).eq.1) then -c -c accept only Phi KK decays -- code by James Catmore -c -c if(name_selv(I).eq.333.and. -c +name_father(I).eq.531.and. -c +abs(name_daughter1(I)).eq.321.and. -c +abs(name_daughter2(I)).eq.321) then -c if(idebug.eq.1) print *,'USER_FINSEL: ',name_self(I) -c iret=0 -c endif -c endif -c -c enddo - -c evaluation - -c 1000 continue -c if(iret.ne.0) then -c debug output -c if(idebug.eq.1) -c + print *, 'USER_FINSEL: event rejected' -c endif - - -c ********************************************************************** -c -c Code to simulate CP violation -c -c ********************************************************************** - -c Pythia Parameters -c Bs Lifetime from Pythia - tau = 0. - if ( cufdcp(9).le.0.0 ) then - tau = pmas(140,4)/0.299792458 ! see KC for KF=531 - if(idebug.eq.1) print*, 'Bs lifetime extracted: ', tau*0.299792458 - else - tau = cufdcp(9)/0.299792458 !0.483/0.2998 - endif -c Set Physics Parameters -c A0 - par(1) = 0.724 !0.728!0.737 -c Al - par(2) = 0.481 ! 0.479 !0.487 -c deltaG - par(3) = 0.075 !.062 !0.049 -c GammaS - par(4) = 0.652 !0.679 !0.700 -c Delta M - par(5) = 17.77 ! corrent -c phiS - par(6) = -0.04 -c delta1 - par(7) = 0.0 -c delta2 - par(8) = 3.14159265 - -c Bs kinematic cuts - muetacut = cufdcp(4) !100.0!2.5 - l1muon = cufdcp(2) !0.0 !0.5 - l2muon = cufdcp(3) !0.0 !0.5 - hadptcut = cufdcp(5) !0.0 !0.5 - hadetacut = cufdcp(6) !100.0 - BsPtCut = cufdcp(7) !0.0 - BsEtaCut = cufdcp(8) !100.0 -c ********************************************************************** - -c Make sure the event is not accepted by lucky initialization - mupg = -1 - mumg = -2 - kpg = -3 - kmg = -4 -c Search for the Bs -> J/psi phi decay - do I=1,N - if(name_self(I).eq.531.and.name_daughter1(I).eq.443.and. - +name_daughter2(I).eq.333) then - do J=1,4 - bs(J) = P(I,J) - enddo - continue - endif - if(name_self(I).eq.-13.and.name_father(I).eq.443.and. - +name_grandpa(I).eq.531) then - mupg = link_grandpa(I) - do J=1,4 - mup(J) = P(I,J) - enddo - continue - endif - if(name_self(I).eq.13.and.name_father(I).eq.443.and. - +name_grandpa(I).eq.531) then - mumg = link_grandpa(I) - do J=1,4 - mum(J) = P(I,J) - enddo - continue - endif - if(name_self(I).eq.321.and.name_father(I).eq.333.and. - +name_grandpa(I).eq.531) then - kpg = link_grandpa(I) - do J=1,4 - kp(J) = P(I,J) - enddo - continue - endif - if(name_self(I).eq.-321.and.name_father(I).eq.333.and. - +name_grandpa(I).eq.531) then - kmg = link_grandpa(I) - do J=1,4 - km(J) = P(I,J) - enddo - continue - endif - enddo -c Check that all the particles come from the same Bs - if(mupg.ne.mumg.or.mupg.ne.kpg.or.mupg.ne.kmg) then - if(idebug.eq.1) print*,"Signal decay not found." - iret = 1 - return - endif - - -c return here for flat angles - - if ( cufdcp(1).ne.0.0 ) then ! non-flat angles - -c If a Bs -> J/psi(mu mu) phi(K K) event has been found -c print*,"mu+ = (",mup(1),", ",mup(2)," ,",mup(3),", ",mup(4),")" -c print*,"mu- = (",mum(1),", ",mum(2)," ,",mum(3),", ",mum(4),")" -c print*,"K+ = (",kp(1),", ",kp(2)," ,",kp(3),", ",kp(4),")" -c print*,"K- = (",km(1),", ",km(2)," ,",km(3),", ",km(4),")" - - call cost(mup,mum,kp,km,ct1,ct2) - call chi(mup,mum,kp,km,phi) - -c print*,"cos(theta1) = ",ct1 -c print*,"cos(theta2) = ",ct2 -c print*,"phi = ",phi -c print*,"Proper Lifetime = ",V(mupg,5)/0.2998 - -c Set Measured Parameters for ML function -c x(1) = proper time V(mupg,5) mm/c (~3.33x10^-12 s^-1) - x(1) = V(mupg,5)/0.299792458 - x(2) = ct1 - x(3) = ct2 - x(4) = phi - - call mlfunc(x,par,prob1) - call norm(x(1),tau,prob2) - -c Accept/Reject Event -c Random number generator - R = PYR(0)*3.5 -c print*,"Random Number = ",R -c print*,"Corrected ML Prob = ",prob1*prob2 - if(idebug.eq.1) print*, "Prob1 ", prob1 - if(idebug.eq.1) print*, "Prob2 ", prob2 - if(idebug.eq.1) print*, "prob1 * prob2 ", prob1*prob2 - if((prob1*prob2).gt.3.5) then - print*,"WARNING: Max Prob exceeded!" - endif - if(R.lt.(prob1*prob2)) then - iret = 0 - if(idebug.eq.1) print*, 'Accepted prob' - ELSE - iret = 1 - if(idebug.eq.1) print*, 'Rejected prob' - return - endif - - else ! end of flat-angles switch - - iret = 0 ! flat angles are always accepted - - endif - -c Apply kinematic cuts - - call kine(bs,eta,pt) - if(abs(eta).gt.BsEtaCut.or.pt.lt.BsPtCut) then - iret = 1 - if(idebug.eq.1) print*,"Rejected because Bs Pt is ",pt - return - endif - if(idebug.eq.1) print*,"Accepted Bs Pt is ",pt - - call kine(mup,eta,pt) - mu1pt = pt - if(abs(eta).gt.muetacut.or.pt.lt.l2muon) then - iret = 1 - return - endif - call kine(mum,eta,pt) - if(abs(eta).gt.muetacut.or.pt.lt.l2muon) then - iret = 1 - return - endif -c Apply Level 1 Cut - if (mu1pt.lt.pt) then - mu1pt = pt - endif - if(mu1pt.lt.l1muon) then - iret = 1 - return - endif -c Apply Hadron cuts - call kine(kp,eta,pt) - if(abs(eta).gt.hadetacut.or.pt.lt.hadptcut) then - iret = 1 - return - endif - call kine(km,eta,pt) - if(abs(eta).gt.hadetacut.or.pt.lt.hadptcut) then - iret = 1 - return - endif - if(idebug.eq.1) print*,"Proper Lifetime = ",V(mupg,5)/0.299792458 - - return -* - END ! USER_FINSEL - -c ********************************************************************** -* -* Subroutine to calculate cos(theta) -* -c23456****************************************************************** - subroutine cost(d1,d2,h1,h2,ct1,ct2) - implicit none - double precision d1(4),d2(4),h1(4),h2(4),jpsi(4),kns(4),b(4) - double precision jpsib(4),d1b(4),knsb(4),h1b(4) - double precision ct1,ct2 - integer i - - do i=1,4 - jpsi(i) = d1(i)+d2(i) - kns(i) = h1(i)+h2(i) - b(i) = jpsi(i)+kns(i) - enddo - - call loren4(b, jpsi, jpsib) - call loren4(jpsi, d1, d1b) - call ang3(jpsib,d1b,ct1) - - call loren4(b, kns, knsb) - call loren4(kns,h1,h1b) - call ang3(knsb,h1b,ct2) - - return - end - -c ********************************************************************** - -c ********************************************************************** -* -* Subroutine to calculate chi -* -c23456****************************************************************** - subroutine chi(d1,d2,h1,h2,phi) - implicit none - double precision p(4),d1(4),d2(4),h1(4),h2(4),jpsi(4),kns(4) - double precision d1b(4),h1b(4),jpsib(4),knsb(4) - double precision dperp(3), hperp(3), dpara(3) - double precision phi, signum - integer i - - do i=1,4 - jpsi(i) = d1(i)+d2(i) - kns(i) = h1(i)+h2(i) - p(i) = jpsi(i)+kns(i) - enddo - - call loren4(p,d1,d1b) - call loren4(p,h1,h1b) - call loren4(p,jpsi,jpsib) - call loren4(p,kns,knsb) - - call cross(jpsib,d1b,dperp) - call cross(knsb,h1b,hperp) - call cross(dperp,hperp,dpara) - - call ang3(jpsib,dpara,signum) - call ang3(dperp,hperp,phi) - phi = signum * dacos(phi) -c if (phi.LT.0) phi=phi+2*3.1415926536 - - return - end - -c ********************************************************************** - -c ********************************************************************** -* -* Subroutine to normalize exponential distribution to flat distribution -* between 0 and tmax -* t is the proper decay time of the Bs in ps -* tau is the lifetime of the Bs -* p is the normalization factor -* tmax is the maximum allowed time in ps -* -c23456****************************************************************** - subroutine norm(t,tau,p) - double precision t, tau, p -c t is in pico seconds - if(t.Gt.20.0) print*, "WARNING: proper decay time > 20ps" - p = exp(t/tau)*tau - - return - end - -c ********************************************************************** - -c ********************************************************************** -* -* Subroutine to calculate ML function -* -c23456****************************************************************** - subroutine mlfunc(x, par, prob) - double precision x(4), par(8), a(6), b1(6), b2(6), c(6) - double precision prob, time, cost1, cost2, phi, a0, apara, - + aperp, deltag, gammas, deltam, phis, delta1, - + delta2, gammah, gammal, expgl, expgh, expgs, - + sisqt1, sisqt2, sin2t1, sin2t2, eta - integer i - -c Measured Variables - time = x(1) - cost1 = x(2) - cost2 = x(3) - phi = x(4) - -c Fitted Variables - a0 = par(1) - apara = par(2) - aperp = sqrt(1 - a0**2 - apara**2) - deltag = par(3) - gammas = par(4) - deltam = par(5) - phis = par(6) - delta1 = par(7) - delta2 = par(8) - -c The tabulated function is Sum of: a(i) * (b1(i) +/- b2(i)) * c(i) -c Define a cells - - a(1) = 0.5 * a0**2 - a(2) = 0.5 * apara**2 - a(3) = 0.5 * aperp**2 - a(4) = 0.5 * a0*apara*cos(delta2 - delta1) - a(5) = apara*aperp - a(6) = a0*aperp - -c Define B cells -c Input variables are gammas, deltag, deltam, phis, delta1, delta2, time - - gammah = gammas - deltag/2.0 - gammal = gammas + deltag/2.0 - expgl = exp((-gammal)*time) - expgh = exp((-gammah)*time) - expgs = exp((-gammas)*time) - - b1(1) = (1.0 + cos(phis))*expgl + (1.0 - cos(phis))*expgh - b1(2) = b1(1) - b1(3) = (1.0 - cos(phis))*expgl + (1.0 + cos(phis))*expgh - b1(4) = b1(1) - b1(5) = (-0.5)*(expgh - expgl)*cos(delta1)*sin(phis) - b1(6) = (-0.5)*(expgh - expgl)*cos(delta2)*sin(phis) - - b2(1) = 2.0*expgs*sin(deltam*time)*sin(phis) - b2(2) = b2(1) - b2(3) = -b2(1) - b2(4) = b2(1) - b2(5) = expgs*(sin(delta1)*cos(deltam*time) - - + cos(delta1)*sin(deltam*time)*cos(phis)) - b2(6) = expgs*(sin(delta2)*cos(deltam*time) - - + cos(delta2)*sin(deltam*time)*cos(phis)) - -c Define C cells -c Input variables are cost1, cost2 and phi - - sisqt1 = 1.0 - cost1**2 - sisqt2 = 1.0 - cost2**2 - sin2t1 = 2.0*sqrt(sisqt1)*cost1 - sin2t2 = 2.0*sqrt(sisqt2)*cost2 - - c(1) = 4.0*sisqt1*cost2**2 - c(2) = (1.0 + cost1**2)*sisqt2 - sisqt1*sisqt2*cos(2.0*phi) - c(3) = (1.0 + cost1**2)*sisqt2 + sisqt1*sisqt2*cos(2.0*phi) - c(4) = (-sqrt(2.0))*sin2t1*sin2t2*cos(phi) - c(5) = 2.0*sisqt1*sisqt2*sin(2.0*phi) - c(6) = sqrt(2.0)*sin2t1*sin2t2*sin(phi) - -c Sum the tabulated formula -c Currently just calculate bs decay - prob = 0.0 -c eta is +1 for particle -1 for antiparticle -c adam changed eta to meet B meson production - eta = 1.0 - do i=1,6 - prob = prob + a(i)*(b1(i) + eta*b2(i))*c(i) - enddo - - return - end - -c ********************************************************************** - -c ********************************************************************** -* -* Subroutine to calculate eta and pt of particle -* -c23456****************************************************************** - subroutine kine(p, eta, pt) - double precision p(4) - double precision eta,pt,th - - pt = sqrt(p(1)**2+p(2)**2) - th = acos(p(3)/sqrt(pt**2+p(3)**2)) - eta = -log(max(0.0001,abs(tan(0.5*th)))) - - return - end - -c ********************************************************************** - -c ********************************************************************** -* -* Subroutine to perform dot product of 3 momentum -* -c23456****************************************************************** - subroutine dot3(v1, v2, prod) - double precision v1(3), v2(3) - double precision prod - - prod = v1(1)*v2(1)+v1(2)*v2(2)+v1(3)*v2(3) - - return - end - -c ********************************************************************** - -c ********************************************************************** -* -* Subroutine to calculate angle between 2 vectors -* -c23456****************************************************************** - subroutine ang3(v1, v2, prod) - double precision v1(3), v2(3) - double precision prod, v1mag, v2mag - - call dot3(v1,v2,prod) - v1mag = v1(1)**2+v1(2)**2+v1(3)**2 - v2mag = v2(1)**2+v2(2)**2+v2(3)**2 - - prod = prod/dsqrt(v1mag*v2mag) - - return - end - -c ********************************************************************** - -* -* $Id: cross.F,v 1.1.1.1 1996/02/15 17:49:51 mclareni Exp $ -* - SUBROUTINE CROSS(X,Y,Z) -C -C CERN PROGLIB# F117 CROSS .VERSION KERNFOR 2.02 730125 -C ORIG. 01/01/64 -C - IMPLICIT DOUBLE PRECISION (A-H,O-Z) - DIMENSION X(3),Y(3),Z(3) -C -C - Z1=X(2)*Y(3)-X(3)*Y(2) - Z2=X(3)*Y(1)-X(1)*Y(3) - Z(3)=X(1)*Y(2)-X(2)*Y(1) - Z(1)=Z1 - Z(2)=Z2 - RETURN - END - - SUBROUTINE LOREN4 (DIR,P4IN,P4OUT) -C -C CERN PROGLIB# U101 LOREN4 .VERSION KERNFOR 4.07 830624 -C ORIG. 20/02/68 -C - - DOUBLE PRECISION PCM2, ONMCM, EPBETA, PROD - - DOUBLE PRECISION DIR(4),P4IN(4),P4OUT(4) -C -C-- VN(A) MEANS N-VECTOR A -C-- GAMMA=ECM/MCM -C-- EPBETA=ECM*V3(PCM)*V3(BETA) -C-- V3(BETA)=V3(PCM)/ECM -C - PCM2=DIR(1)*DIR(1)+DIR(2)*DIR(2)+DIR(3)*DIR(3) - - - ONMCM=1.D0/DSQRT (DIR(4)*DIR(4)-PCM2) - - EPBETA=P4IN(1)*DIR(1)+P4IN(2)*DIR(2)+P4IN(3)*DIR(3) - PROD=EPBETA*(DIR(4)*ONMCM-1.D0)/PCM2-P4IN(4)*ONMCM - P4OUT(4)=ONMCM*(P4IN(4)*DIR(4)-EPBETA) - DO 50 I=1,3 - 50 P4OUT(I)=P4IN(I)+DIR(I)*PROD - RETURN - END - diff --git a/Generators/PythiaB/src/uf_BsAnglesCDF.F b/Generators/PythiaB/src/uf_BsAnglesCDF.F deleted file mode 100644 index 234c901bf096b034928f6279e1a8ca121c768612..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/src/uf_BsAnglesCDF.F +++ /dev/null @@ -1,809 +0,0 @@ -*CMZ : -*-- Author : James catmore 2006-04-09 - SUBROUTINE uf_BsAnglesCDF(IRET) -* * -*----------------------------------------------------------------------* -* * -* Name : uf_BsANgles * -* (module) * -* * -* Description : User subroutine to define requirements for event * -* accepting/rejecting additional or * -* other that in subroutine finsel * -* for BsJpsi mumu Phi KK events -* INCLUDING DECAY ANGLES -* additional settings from cufdcp(10) array * -* Arguments : IRET (in/out) accepting(0)/rejecting(1) event * -* * -* * -* Author : James Catmore Date : 2006-04-09 * -* * -* * -* Last modifications : * -* [name] Date : [date] * -* * -* Keywords : * -* [keywords] * -*----------------------------------------------------------------------* -* -*+CDE, TYPING. -C ----------- end CDE -------------------------------------------------- -* -*KEEP,DOUB. -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - double precision par(8), mup(4),mum(4),kp(4),km(4),x(4),bs(4) -c Old angles commented out -c double precision ct1,ct2,phi,prob1,prob2,R - double precision ct,cp,phi,prob1,prob2,R - double precision l1muon,l2muon,muetacut,hadptcut,hadetacut, - + BsPtCut,BsEtaCut - double precision mu1pt,eta,pt - integer mupg,mumg,kpg,kmg,J -c INTEGER PYK,PYCHGE,PYCOMP -*KEEP,LUJETS. - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) -*KEEP,LUDAT1. - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) -*KEEP,LUDAT2. - COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) -*KEEP,PYPARS. - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) -*KEEP,PYINT1. - COMMON/PYINT1/MINT(400),VINT(400) -*KEEP,PYINT2. - COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2) -*KEEP,PYINT5. - COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3) -*KEEP,PYUPPR. - COMMON/PYUPPR/NUP,KUP(20,7),NFUP,IFUP(10,2),PUP(20,5),Q2UP(0:10) - -* user finsel decay selection and decay parameters - common /ufdecay/ cufdcp(10),iufdc - save /ufdecay/ - -*KEND. -* SAVE /LUJETS/,/LUDAT1/,/LUDAT2/ - SAVE /PYJETS/,/PYDAT1/,/PYDAT2/ - SAVE /PYPARS/,/PYINT1/,/PYINT2/,/PYINT5/,/PYUPPR/ -*KEEP,BTREE. - common/btree/ntree,tree(4000) - integer tree - SAVE /btree/ -*KEND. -c SAVE IFIRST,IIPRNT - SAVE IFIRST - DATA IFIRST /1/ -c DATA IIPRNT /0/ - -*KEEP,FAMILY. - name_self(I)=K(I,2) - name_selv(I)=abs(K(I,2)) - name_father(I)=K(K(I,3),2) - name_grandpa(I)=K(K(K(I,3),3),2) - name_daughter1(I)=K(K(I,4),2) - name_daughter2(I)=K(K(I,5),2) - - link_self(I)=I - link_father(I)=K(I,3) - link_grandpa(I)=K(K(I,3),3) - link_daughter1(I)=K(I,4) - link_daughter2(I)=K(I,5) -*KEND. -C ----------- end CDE -------------------------------------------------- - - idebug=0 - - IF(IFIRST.EQ.1) THEN - IFIRST =0 - ENDIF - -c return immediately if already rejected - if ( iret.eq.1 ) return - -c -c Add your decay selection here. -c Set iret to 0 (acception) or 1 (rejection) per event. -c -c Parameters: 0 (off) / 1 (on) -c cufdcp( 1) : bool: flat (0) or physics angles (1) -c cufdcp( 2) : muon1 pT cut (LVL1) -c cufdcp( 3) : muon2 pT cut (LVL2) -c cufdcp( 4) : muons eta cut -c cufdcp( 5) : kaons pT cut -c cufdcp( 6) : kaons eta cut -c cufdcp( 7) : Bs pT cut -c cufdcp( 8) : Bs eta cut -c cufdcp( 9) : Bs lifetime (if zero, extract it from Pythia common blocks) -c cufdcp(10) : - - -c some counting - nintree = 0 - -c preset - iret = 1 !change - - if(idebug.eq.1) - + print *,'USER_FINSEL: BEGINNING v3' - -c particle loop -- modify content as needed -c do I=1,N -c -c if(tree(I).eq.1) then -c -c accept only Phi KK decays -- code by James Catmore -c -c if(name_selv(I).eq.333.and. -c +name_father(I).eq.531.and. -c +abs(name_daughter1(I)).eq.321.and. -c +abs(name_daughter2(I)).eq.321) then -c if(idebug.eq.1) print *,'USER_FINSEL: ',name_self(I) -c iret=0 -c endif -c endif -c -c enddo - -c evaluation - -c 1000 continue -c if(iret.ne.0) then -c debug output -c if(idebug.eq.1) -c + print *, 'USER_FINSEL: event rejected' -c endif - - -c ********************************************************************** -c -c Code to simulate CP violation -c -c ********************************************************************** - -c Pythia Parameters -c Bs Lifetime from Pythia - tau = 0. - if ( cufdcp(9).le.0.0 ) then - tau = pmas(140,4)/0.299792458 ! see KC for KF=531 - if(idebug.eq.1) print*, 'Bs lifetime extracted: ', tau*0.2997924 - else - tau = cufdcp(9)/0.299792458 !0.483/0.2998 - endif -c Set Physics Parameters -c A0 - par(1) = 0.724 !0.728!0.737 -c Al - par(2) = 0.481 ! 0.479 !0.487 -c deltaG - par(3) = 0.075 !.062 !0.049 -c GammaS - par(4) = 0.652 !0.679 !0.700 -c Delta M - par(5) = 17.77 ! corrent -c phiS - par(6) = -0.04 -c delta1 - par(7) = 0.2 -c delta2 - par(8) = 2.8 - -c Bs kinematic cuts - muetacut = cufdcp(4) !100.0!2.5 - l1muon = cufdcp(2) !0.0 !0.5 - l2muon = cufdcp(3) !0.0 !0.5 - hadptcut = cufdcp(5) !0.0 !0.5 - hadetacut = cufdcp(6) !100.0 - BsPtCut = cufdcp(7) !0.0 - BsEtaCut = cufdcp(8) !100.0 -c ********************************************************************** - -c Make sure the event is not accepted by lucky initialization - mupg = -1 - mumg = -2 - kpg = -3 - kmg = -4 -c Search for the Bs -> J/psi phi decay - do I=1,N - if(name_self(I).eq.531.and.(name_daughter1(I).eq.443.and. - +name_daughter2(I).eq.333.or.name_daughter1(I).eq.333.and. - +name_daughter2(I).eq.443)) then - do J=1,4 - bs(J) = P(I,J) - enddo - continue - endif - if(name_self(I).eq.-13.and.name_father(I).eq.443.and. - +name_grandpa(I).eq.531) then - mupg = link_grandpa(I) - do J=1,4 - mup(J) = P(I,J) - enddo - continue - endif - if(name_self(I).eq.13.and.name_father(I).eq.443.and. - +name_grandpa(I).eq.531) then - mumg = link_grandpa(I) - do J=1,4 - mum(J) = P(I,J) - enddo - continue - endif - if(name_self(I).eq.321.and.name_father(I).eq.333.and. - +name_grandpa(I).eq.531) then - kpg = link_grandpa(I) - do J=1,4 - kp(J) = P(I,J) - enddo - continue - endif - if(name_self(I).eq.-321.and.name_father(I).eq.333.and. - +name_grandpa(I).eq.531) then - kmg = link_grandpa(I) - do J=1,4 - km(J) = P(I,J) - enddo - continue - endif - enddo -c Check that all the particles come from the same Bs - if(mupg.ne.mumg.or.mupg.ne.kpg.or.mupg.ne.kmg) then - if(idebug.eq.1) print*,"Signal decay not found." - iret = 1 - return - endif - - -c return here for flat angles - - if ( cufdcp(1).ne.0.0 ) then ! non-flat angles - -c If a Bs -> J/psi(mu mu) phi(K K) event has been found -c print*,"mu+ = (",mup(1),", ",mup(2)," ,",mup(3),", ",mup(4),")" -c print*,"mu- = (",mum(1),", ",mum(2)," ,",mum(3),", ",mum(4),")" -c print*,"K+ = (",kp(1),", ",kp(2)," ,",kp(3),", ",kp(4),")" -c print*,"K- = (",km(1),", ",km(2)," ,",km(3),", ",km(4),")" - -c Old angles commented out -c call cost(mup,mum,kp,km,ct1,ct2) -c call chi(mup,mum,kp,km,phi) - call cdfct(mup,mum,kp,km,ct) - call cdfcp(mup,mum,kp,km,cp) - call cdfphi(mup,mum,kp,km,phi) - - if(idebug.eq.1) print*,"cos(theta) = ",ct - if(idebug.eq.1) print*,"cos(psi) = ",cp - if(idebug.eq.1) print*,"phi = ",phi - if(idebug.eq.1) print*,"Proper Lifetime = ",V(mupg,5)/0.2998 - -c Set Measured Parameters for ML function -c x(1) = proper time V(mupg,5) mm/c (~3.33x10^-12 s^-1) - x(1) = V(mupg,5)/0.299792458 - x(2) = ct - x(3) = cp - x(4) = phi - - call mlfunc_cdf(x,par,prob1) - call norm(x(1),tau,prob2) - -c Accept/Reject Event -c Random number generator - R = PYR(0)*1.5 -c print*,"Random Number = ",R -c print*,"Corrected ML Prob = ",prob1*prob2 -c if(idebug.eq.1) print*, "Prob1 ", prob1 -c if(idebug.eq.1) print*, "Prob2 ", prob2 - if(idebug.eq.1) print*, "Random Number = ", R - if(idebug.eq.1) print*, "Corrected ML Prob = ", prob1*prob2 - if((prob1*prob2).gt.1.5) then - print*,"WARNING: Max Prob exceeded!" - endif - if(R.lt.(prob1*prob2)) then - iret = 0 - if(idebug.eq.1) print*, 'Accepted prob' - ELSE - iret = 1 - if(idebug.eq.1) print*, 'Rejected prob' - return - endif - - else ! end of flat-angles switch - - iret = 0 ! flat angles are always accepted - - endif - -c Apply kinematic cuts - - call kine(bs,eta,pt) - if(abs(eta).gt.BsEtaCut.or.pt.lt.BsPtCut) then - iret = 1 -c if(idebug.eq.1) print*,"Rejected because Bs Pt is ",pt - return - endif -c if(idebug.eq.1) print*,"Accepted Bs Pt is ",pt - - call kine(mup,eta,pt) - mu1pt = pt - if(abs(eta).gt.muetacut.or.pt.lt.l2muon) then - iret = 1 - return - endif - call kine(mum,eta,pt) - if(abs(eta).gt.muetacut.or.pt.lt.l2muon) then - iret = 1 - return - endif -c Apply Level 1 Cut - if (mu1pt.lt.pt) then - mu1pt = pt - endif - if(mu1pt.lt.l1muon) then - iret = 1 - return - endif -c Apply Hadron cuts - call kine(kp,eta,pt) - if(abs(eta).gt.hadetacut.or.pt.lt.hadptcut) then - iret = 1 - return - endif - call kine(km,eta,pt) - if(abs(eta).gt.hadetacut.or.pt.lt.hadptcut) then - iret = 1 - return - endif -c if(idebug.eq.1) print*,"Proper Lifetime = ",V(mupg,5)/0.299792458 - if(idebug.eq.1) print*,"**** IRET = ",iret - - return -* - END ! USER_FINSEL - - -c ********************************************************************** -* -* Subroutine to calculate cos(theta) -* -c23456****************************************************************** -c subroutine cost(d1,d2,h1,h2,ct1,ct2) -c implicit none -c double precision d1(4),d2(4),h1(4),h2(4),jpsi(4),kns(4),b(4) -c double precision jpsib(4),d1b(4),knsb(4),h1b(4) -c double precision ct1,ct2 -c integer i -c -c do i=1,4 -c jpsi(i) = d1(i)+d2(i) -c kns(i) = h1(i)+h2(i) -c b(i) = jpsi(i)+kns(i) -c enddo -c -c call loren4(b, jpsi, jpsib) -c call loren4(jpsi, d1, d1b) -c call ang3(jpsib,d1b,ct1) -c -c call loren4(b, kns, knsb) -c call loren4(kns,h1,h1b) -c call ang3(knsb,h1b,ct2) -c -c return -c end - -c ********************************************************************** - -c ********************************************************************** -* -* Subroutine to calculate chi -* -c23456****************************************************************** -c subroutine chi(d1,d2,h1,h2,phi) -c implicit none -c double precision p(4),d1(4),d2(4),h1(4),h2(4),jpsi(4),kns(4) -c double precision d1b(4),h1b(4),jpsib(4),knsb(4) -c double precision dperp(3), hperp(3), dpara(3) -c double precision phi, signum -c integer i -c -c do i=1,4 -c jpsi(i) = d1(i)+d2(i) -c kns(i) = h1(i)+h2(i) -c p(i) = jpsi(i)+kns(i) -c enddo -c -c call loren4(p,d1,d1b) -c call loren4(p,h1,h1b) -c call loren4(p,jpsi,jpsib) -c call loren4(p,kns,knsb) -c -c call cross(jpsib,d1b,dperp) -c call cross(knsb,h1b,hperp) -c call cross(dperp,hperp,dpara) -c -c call ang3(jpsib,dpara,signum) -c call ang3(dperp,hperp,phi) -c phi = signum * dacos(phi) -c if (phi.LT.0) phi=phi+2*3.1415926536 -c -c return -c end - -c ********************************************************************** - -c ********************************************************************** -* -* Subroutine to calculate CDF cos(theta) -* -c23456****************************************************************** - subroutine cdfct(d1,d2,h1,h2,ct) - implicit none - double precision d1(4),d2(4),h1(4),h2(4),jpsi(4),kns(4) - double precision d1b(4),h1b(4),knsb(4) - double precision x(3), y(3), z(3), h1bu(3), d1bu(3), knso(3) - double precision ct, prod - integer i - -c Calculate 4 vectors of J/psi and phi/K0* - do i=1,4 - jpsi(i) = d1(i)+d2(i) - kns(i) = h1(i)+h2(i) - enddo - -c Boost into rest frame of J/psi - call loren4(jpsi,d1,d1b) - call loren4(jpsi,h1,h1b) - call loren4(jpsi,kns,knsb) - -c Calcuate coordinate system - call unit3(knsb, x) - call unit3(h1b, h1bu) - call unit3(d1b, d1bu) - call dot3(h1bu,x,prod) - - do i=1,3 - knso(i) = h1bu(i) - x(i)*prod - enddo - - call unit3(knso,y) - call cross(x,y,z) - -c Calculate cos(theta) - call dot3(d1bu,z,ct) - - return - end - -c ********************************************************************** - -c ********************************************************************** -* -* Subroutine to calculate CDF cos(Psi) -* -c23456****************************************************************** - subroutine cdfcp(d1,d2,h1,h2,cp) - implicit none - double precision d1(4),d2(4),h1(4),h2(4),jpsi(4),kns(4) - double precision h1b(4),jpsib(4) - double precision h1bu(3),jpsibu(3) - double precision cp - integer i - -c Calculate 4 vectors of J/psi and phi/K0* - do i=1,4 - jpsi(i) = d1(i)+d2(i) - kns(i) = h1(i)+h2(i) - enddo - -c Boost into rest frame of phi/K0* - call loren4(kns,jpsi,jpsib) - call loren4(kns,h1,h1b) - -c Calculate cos(Psi) - call ang3(h1b,jpsib,cp) - cp = cp*(-1.0) - - return - end - -c ********************************************************************** - -c ********************************************************************** -* -* Subroutine to calculate CDF Phi -* -c23456****************************************************************** - subroutine cdfphi(d1,d2,h1,h2,phi) - implicit none - double precision d1(4),d2(4),h1(4),h2(4),jpsi(4),kns(4) - double precision d1b(4),h1b(4),knsb(4) - double precision x(3), y(3), z(3), h1bu(3), d1bu(3), knso(3) - double precision phi, prod, xdot, ydot - integer i - -c Calculate 4 vectors of J/psi and phi/K0* - do i=1,4 - jpsi(i) = d1(i)+d2(i) - kns(i) = h1(i)+h2(i) - enddo - -c Boost into rest frame of J/psi - call loren4(jpsi,d1,d1b) - call loren4(jpsi,h1,h1b) - call loren4(jpsi,kns,knsb) - -c Calcuate coordinate system - call unit3(knsb, x) - call unit3(h1b, h1bu) - call unit3(d1b, d1bu) - call dot3(h1bu,x,prod) - - do i=1,3 - knso(i) = h1bu(i) - x(i)*prod - enddo - - call unit3(knso,y) - -c Calculate Phi - call dot3(d1bu,y,ydot) - call dot3(d1bu,x,xdot) - phi = datan2(ydot,xdot) - - return - end - -c ********************************************************************** - -c ********************************************************************** -* -* Subroutine to normalize exponential distribution to flat distribution -* between 0 and tmax -* t is the proper decay time of the Bs in ps -* tau is the lifetime of the Bs -* p is the normalization factor -* tmax is the maximum allowed time in ps -* -c23456****************************************************************** -c subroutine norm(t,tau,p) -c double precision t, tau, p -c t is in pico seconds -c if(t.Gt.20.0) print*, "WARNING: proper decay time > 20ps" -c p = exp(t/tau)*tau -c -c return -c end - -c ********************************************************************** - -c ********************************************************************** -* -* Subroutine to calculate ML function -* -c23456****************************************************************** - subroutine mlfunc_cdf(x, par, prob) - double precision x(4), par(8), a(6), b1(6), b2(6), c(6) - double precision prob, time, cost, cospsi, phi, a0, apara, - + aperp, deltag, gammas, deltam, phis, delta1, - + delta2, gammah, gammal, expgl, expgh, expgs, - + sinsqt, sisqps, sin2t, sin2ps, eta - integer i - -c Measured Variables - time = x(1) -c Old angles commented out -c cost1 = x(2) -c cost2 = x(3) - cost = x(2) - cospsi = x(3) - phi = x(4) - -c Fitted Variables - a0 = par(1) - apara = par(2) - aperp = sqrt(1 - a0**2 - apara**2) - deltag = par(3) - gammas = par(4) - deltam = par(5) - phis = par(6) - delta1 = par(7) - delta2 = par(8) - -c The tabulated function is Sum of: a(i) * (b1(i) +/- b2(i)) * c(i) -c Define a cells - - a(1) = 0.5 * a0**2 - a(2) = 0.5 * apara**2 - a(3) = 0.5 * aperp**2 - a(4) = 0.5 * a0*apara*cos(delta2 - delta1) - a(5) = apara*aperp - a(6) = a0*aperp - -c Define B cells -c Input variables are gammas, deltag, deltam, phis, delta1, delta2, time - - gammah = gammas - deltag/2.0 - gammal = gammas + deltag/2.0 - expgl = exp((-gammal)*time) - expgh = exp((-gammah)*time) - expgs = exp((-gammas)*time) - - b1(1) = (1.0 + cos(phis))*expgl + (1.0 - cos(phis))*expgh - b1(2) = b1(1) - b1(3) = (1.0 - cos(phis))*expgl + (1.0 + cos(phis))*expgh - b1(4) = b1(1) - b1(5) = (-0.5)*(expgh - expgl)*cos(delta1)*sin(phis) - b1(6) = (-0.5)*(expgh - expgl)*cos(delta2)*sin(phis) - - b2(1) = 2.0*expgs*sin(deltam*time)*sin(phis) - b2(2) = b2(1) - b2(3) = -b2(1) - b2(4) = b2(1) - b2(5) = expgs*(sin(delta1)*cos(deltam*time) - - + cos(delta1)*sin(deltam*time)*cos(phis)) - b2(6) = expgs*(sin(delta2)*cos(deltam*time) - - + cos(delta2)*sin(deltam*time)*cos(phis)) - -c Define C cells -c Old angles commented out -c Input variables are cost1, cost2 and phi -c -c sisqt1 = 1.0 - cost1**2 -c sisqt2 = 1.0 - cost2**2 -c sin2t1 = 2.0*sqrt(sisqt1)*cost1 -c sin2t2 = 2.0*sqrt(sisqt2)*cost2 -c -c c(1) = 4.0*sisqt1*cost2**2 -c c(2) = (1.0 + cost1**2)*sisqt2 - sisqt1*sisqt2*cos(2.0*phi) -c c(3) = (1.0 + cost1**2)*sisqt2 + sisqt1*sisqt2*cos(2.0*phi) -c c(4) = (-sqrt(2.0))*sin2t1*sin2t2*cos(phi) -c c(5) = 2.0*sisqt1*sisqt2*sin(2.0*phi) -c c(6) = sqrt(2.0)*sin2t1*sin2t2*sin(phi) - -c Input variables are cost, cosp and phi - - sinsqt = 1.0 - cost**2 - sisqps = 1.0 - cospsi**2 - sin2t = 2.0*sqrt(sinsqt)*cost - sin2ps = 2.0*sqrt(sisqps)*cospsi - - c(1) = 2.0*cospsi**2 * (1.0 - sinsqt*cos(phi)**2) - c(2) = sisqps * (1.0 - sinsqt*sin(phi)**2) - c(3) = sisqps * sinsqt - c(4) = (-1.0/sqrt(2.0))*sin2ps * sinsqt * sin(2.0*phi) - c(5) = sisqps * sin2t * sin(phi) - c(6) = (1.0/sqrt(2.0))*sin2ps * sin2t * cos(phi) - - -c Sum the tabulated formula -c Currently just calculate bs decay - prob = 0.0 -c eta is +1 for particle -1 for antiparticle -c adam changed eta to meet B meson production - eta = 1.0 - do i=1,6 - prob = prob + a(i)*(b1(i) + eta*b2(i))*c(i) - enddo - - return - end - -c ********************************************************************** - -c ********************************************************************** -* -* Subroutine to calculate eta and pt of particle -* -c23456****************************************************************** -c subroutine kine(p, eta, pt) -c double precision p(4) -c double precision eta,pt,th -c pt = sqrt(p(1)**2+p(2)**2) -c th = acos(p(3)/sqrt(pt**2+p(3)**2)) -c eta = -log(max(0.0001,abs(dtan(0.5*th)))) -c -c return -c end - -c ********************************************************************** - -c ********************************************************************** -* -* Subroutine to convert vector into unit vector -* -c23456****************************************************************** - subroutine unit3(v, norm) - double precision v(3), norm(3) - - do i=1,3 - norm(i) = v(i) / dsqrt(v(1)**2+v(2)**2+v(3)**2) - enddo - - return - end - -c ********************************************************************** - -c ********************************************************************** -* -* Subroutine to perform dot product of 3 momentum -* -c23456****************************************************************** -c subroutine dot3(v1, v2, prod) -c double precision v1(3), v2(3) -c double precision prod -c -c prod = v1(1)*v2(1)+v1(2)*v2(2)+v1(3)*v2(3) -c -c return -c end - -c ********************************************************************** - -c ********************************************************************** -* -* Subroutine to calculate angle between 2 vectors -* -c23456****************************************************************** -c subroutine ang3(v1, v2, prod) -c double precision v1(3), v2(3) -c double precision prod, v1mag, v2mag -c -c call dot3(v1,v2,prod) -c v1mag = v1(1)**2+v1(2)**2+v1(3)**2 -c v2mag = v2(1)**2+v2(2)**2+v2(3)**2 -c -c prod = prod/dsqrt(v1mag*v2mag) -c -c return -c end - -c ********************************************************************** - -* -* $Id: cross.F,v 1.1.1.1 1996/02/15 17:49:51 mclareni Exp $ -* -c SUBROUTINE CROSS(X,Y,Z) -C -C CERN PROGLIB# F117 CROSS .VERSION KERNFOR 2.02 730125 -C ORIG. 01/01/64 -C -c IMPLICIT DOUBLE PRECISION (A-H,O-Z) -c DIMENSION X(3),Y(3),Z(3) -C -C -c Z1=X(2)*Y(3)-X(3)*Y(2) -c Z2=X(3)*Y(1)-X(1)*Y(3) -c Z(3)=X(1)*Y(2)-X(2)*Y(1) -c Z(1)=Z1 -c Z(2)=Z2 -c RETURN -c END - -c SUBROUTINE LOREN4 (DIR,P4IN,P4OUT) -C -C CERN PROGLIB# U101 LOREN4 .VERSION KERNFOR 4.07 830624 -C ORIG. 20/02/68 -C -c -c DOUBLE PRECISION PCM2, ONMCM, EPBETA, PROD -c -c DOUBLE PRECISION DIR(4),P4IN(4),P4OUT(4) -C -C-- VN(A) MEANS N-VECTOR A -C-- GAMMA=ECM/MCM -C-- EPBETA=ECM*V3(PCM)*V3(BETA) -C-- V3(BETA)=V3(PCM)/ECM -C -c PCM2=DIR(1)*DIR(1)+DIR(2)*DIR(2)+DIR(3)*DIR(3) -c -c -c ONMCM=1.D0/DSQRT (DIR(4)*DIR(4)-PCM2) -c -c EPBETA=P4IN(1)*DIR(1)+P4IN(2)*DIR(2)+P4IN(3)*DIR(3) -c PROD=EPBETA*(DIR(4)*ONMCM-1.D0)/PCM2-P4IN(4)*ONMCM -c P4OUT(4)=ONMCM*(P4IN(4)*DIR(4)-EPBETA) -c DO 50 I=1,3 -c 50 P4OUT(I)=P4IN(I)+DIR(I)*PROD -c RETURN -c END - diff --git a/Generators/PythiaB/src/uf_BsJpsimumuphiKK.F b/Generators/PythiaB/src/uf_BsJpsimumuphiKK.F deleted file mode 100644 index 73ad7dacc921761c680f8dd48a3b687db85d53b9..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/src/uf_BsJpsimumuphiKK.F +++ /dev/null @@ -1,152 +0,0 @@ -*CMZ : -*-- Author : James catmore 2006-04-09 - SUBROUTINE uf_BsJpsimumuphiKK(IRET) -* * -*----------------------------------------------------------------------* -* * -* Name : uf_BsJpsimumuphiKK * -* (module) * -* * -* Description : User subroutine to define requirements for event * -* accepting/rejecting additional or * -* other that in subroutine finsel * -* for BsJpsi mumu Phi KK events * -* additional settings from cufdcp(10) array * -* Arguments : IRET (in/out) accepting(0)/rejecting(1) event * -* * -* * -* Author : James Catmore Date : 2006-04-09 * -* * -* * -* Last modifications : * -* [name] Date : [date] * -* * -* Keywords : * -* [keywords] * -*----------------------------------------------------------------------* -* -*+CDE, TYPING. -C ----------- end CDE -------------------------------------------------- -* -*KEEP,DOUB. -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) -c INTEGER PYK,PYCHGE,PYCOMP -*KEEP,LUJETS. - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) -*KEEP,LUDAT1. - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) -*KEEP,LUDAT2. - COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) -*KEEP,PYPARS. - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) -*KEEP,PYINT1. - COMMON/PYINT1/MINT(400),VINT(400) -*KEEP,PYINT2. - COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2) -*KEEP,PYINT5. - COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3) -*KEEP,PYUPPR. - COMMON/PYUPPR/NUP,KUP(20,7),NFUP,IFUP(10,2),PUP(20,5),Q2UP(0:10) - -* user finsel decay selection and decay parameters - common /ufdecay/ cufdcp(10),iufdc - save /ufdecay/ - -*KEND. -* SAVE /LUJETS/,/LUDAT1/,/LUDAT2/ - SAVE /PYJETS/,/PYDAT1/,/PYDAT2/ - SAVE /PYPARS/,/PYINT1/,/PYINT2/,/PYINT5/,/PYUPPR/ -*KEEP,BTREE. - common/btree/ntree,tree(4000) - integer tree - SAVE /btree/ -*KEND. -c SAVE IFIRST,IIPRNT - SAVE IFIRST - DATA IFIRST /1/ -c DATA IIPRNT /0/ - -*KEEP,FAMILY. - name_self(I)=K(I,2) - name_selv(I)=abs(K(I,2)) - name_father(I)=K(K(I,3),2) - name_grandpa(I)=K(K(K(I,3),3),2) - name_daughter1(I)=K(K(I,4),2) - name_daughter2(I)=K(K(I,5),2) - - link_self(I)=I - link_father(I)=K(I,3) - link_grandpa(I)=K(K(I,3),3) - link_daughter1(I)=K(I,4) - link_daughter2(I)=K(I,5) -*KEND. -C ----------- end CDE -------------------------------------------------- - - idebug=0 - - IF(IFIRST.EQ.1) THEN - IFIRST =0 - ENDIF - -c return immediately if already rejected - if ( iret.eq.1 ) return - -c -c Add your decay selection here. -c Set iret to 0 (acception) or 1 (rejection) per event. -c -c Parameters: 0 (off) / 1 (on) -c cufdcp( 1) : -c cufdcp( 2) : -c cufdcp( 3) : -c cufdcp( 4) : -c cufdcp( 5) : -c cufdcp( 6) : -c cufdcp( 7) : -c cufdcp( 8) : -c cufdcp( 9) : -c cufdcp(10) : - - -c some counting - nintree = 0 - -c preset - iret = 1 - - if(idebug.eq.1) - + print *,'USER_FINSEL: BEGINNING' - -c particle loop -- modify content as needed - do I=1,N - -c if(tree(I).eq.1) then -c -c accept only Phi KK decays -- code by James Catmore -c - if(name_selv(I).eq.333.and. - +name_father(I).eq.531.and. - +abs(name_daughter1(I)).eq.321.and. - +abs(name_daughter2(I)).eq.321) then - if(idebug.eq.1) print *,'USER_FINSEL: ',name_self(I) - iret=0 - endif -c endif - - enddo - -c evaluation - - 1000 continue - if(iret.ne.0) then -c debug output - if(idebug.eq.1) - + print *, 'USER_FINSEL: event rejected' - endif - - - return -* - END ! USER_FINSEL diff --git a/Generators/PythiaB/src/uf_ChHadr.F b/Generators/PythiaB/src/uf_ChHadr.F deleted file mode 100644 index 5c45ef7fd4065270f9f6bd483b9dd4c4bd966f5e..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/src/uf_ChHadr.F +++ /dev/null @@ -1,1517 +0,0 @@ - SUBROUTINE uf_ChHadr(IRET) -* * -*----------------------------------------------------------------------* -* * -* Name : uf_ChHadr * -* (module) * -* * -* Description : User subroutine to define requirements for event * -* accepting/rejecting additional or * -* other that in subroutine finsel * -* for selection of charm hadrons * -* additional settings from cufdcp(10) array * -* Arguments : IRET (in/out) accepting(0)/rejecting(1) event * -* * -* * -* Author : Leonid Gladilin Date : 2008-04-07 * -* * -* * -* Last modifications : * -* Leonid Gladilin Date : 2008-05-09 * -* -* Leonid Gladilin Date : 2010-11-26 * -* ranges for selecting background candidates made wider -* * -* Keywords : * -* beauty, charm, D mesons * -*----------------------------------------------------------------------* -c123456789012345678901234567890123456789012345678901234567890123456789012 -* -*+CDE, TYPING. -C ----------- end CDE -------------------------------------------------- -* -*KEEP,DOUB. -C...Double precision and integer declarations. -cc Implicit NONE - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) -c INTEGER PYK,PYCHGE,PYCOMP -*KEEP,LUJETS. - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) -*KEEP,LUDAT1. - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) -*KEEP,LUDAT2. - COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) -*KEEP,PYPARS. - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) -*KEEP,PYINT1. - COMMON/PYINT1/MINT(400),VINT(400) -*KEEP,PYINT2. - COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2) -*KEEP,PYINT5. - COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3) -*KEEP,PYUPPR. - COMMON/PYUPPR/NUP,KUP(20,7),NFUP,IFUP(10,2),PUP(20,5),Q2UP(0:10) - -C...HEPEVT commonblock. - INTEGER NMXHEP,NEVHEP,NHEP,ISTHEP,IDHEP,JMOHEP,JDAHEP - PARAMETER (NMXHEP=10000) - COMMON/HEPEVT/NEVHEP,NHEP,ISTHEP(NMXHEP),IDHEP(NMXHEP), - &JMOHEP(2,NMXHEP),JDAHEP(2,NMXHEP),PHEP(5,NMXHEP),VHEP(4,NMXHEP) - DOUBLE PRECISION PHEP,VHEP - SAVE /HEPEVT/ - -* user finsel decay selection and decay parameters - double precision cufdcp - integer iufdc - common /ufdecay/ cufdcp(10),iufdc - save /ufdecay/ -* -c -c Parameters: >0 : minimal pT of charm hadron / <=0 : OFF -c -c cufdcp( 1) : min pT(D+ -> K-pi+pi+ (+c.c.)) -c cufdcp( 2) : min pT(Ds+ -> K-K+pi+ (+c.c.)) -c cufdcp( 3) : min pT(Lc+ -> K-p+pi+ (+c.c.)) -c -c cufdcp( 4) : min pT(D*+ -> (K-pi+)pi+ (+c.c.)) -c cufdcp( 5) : min pT(D*+ -> (mu nu X)pi+ (+c.c.)) -c cufdcp( 6) : min pT(D*+ -> (e nu X)pi+ (+c.c.)) -c -c cufdcp( 7) : min pT(D0 -> K-pi+ (+c.c.)) -c cufdcp( 8) : min pT(D0 -> mu nu X (+c.c.)) -c cufdcp( 9) : min pT(D0 -> e nu X (+c.c.)) -c -c cufdcp(10) : max abs(eta(D)) for all channels -c -* -c -c min/max "K,pi,pi" mass for D+ selection : -c -cg 26.11.2010 double precision rdcmin / 1.70 /, rdcmax / 2.10 / - double precision rdcmin / 1.50 /, rdcmax / 2.30 / - save rdcmin , rdcmax -c -c min/max "K,K,pi" mass for Ds+ selection : -c -cg 26.11.2010 double precision rdsmin / 1.70 /, rdsmax / 2.15 / - double precision rdsmin / 1.50 /, rdsmax / 2.30 / - save rdsmin , rdsmax -c -c max "K,K" masses for Ds+->(Phi)pi selection : -c ( not applied if <=0 ) -c -cg 26.11.2010 double precision rphimx / 1.055 / - double precision rphimx / 1.06 / - save rphimx -c -c min/max "K,p,pi" mass for L_c+ selection : -c -cg 26.11.2010 double precision rdlmin / 2.05 /, rdlmax / 2.50 / - double precision rdlmin / 2.00 /, rdlmax / 2.60 / - save rdlmin , rdlmax -c -c min "K,pi" mass for D*->D0,pi selection : -c -cg 26.11.2010 double precision rd0smn / 1.65 / - double precision rd0smn / 1.50 / - save rd0smn -c -c max delta_M for D*->D0,pi background combinations : -c - double precision rdelmx / 0.18 / - save rdelmx -c -c min "K,pi" mass for D0 selection : -c -cg 26.11.2010 double precision rd0min / 1.60 / - double precision rd0min / 1.50 / - save rd0min -c -c min track momentum : -c -cg 26.11.2010 double precision pttrmn / 0.45 / -cg 26.11.2010 save pttrmn - double precision pttrmn / 0.45 /, ptpsmn / 0.20 / - save pttrmn, ptpsmn -c -c +/- eta for D meson preselection : -c - double precision etaabs / 5.d0 / - save etaabs -c -c (m_pi+)^2, (m_K+)^2, (m_p)^2 : -c - double precision sqmpi / 0.019479835d0 / - & , sqmka / 0.24371698d0 / - & , sqmpr / 0.88035435d0 / - save sqmpi, sqmka, sqmpr -c -c internal variables : -c - integer j, jj1, jj2, jj3, jj4, jj5, jj6 -c & , idobs(10), numka, numpi, numcha, numneu, numpi0 - & , idobs(10), numka, numcha, numneu, numpi0 - & , in, in1, in2, in3, in4, j15, j16, j25, j26, j35, j36 - & , jka, jp1, jp2, nelec, jelec, nmuon, jmuon, jtr -c - double precision pdobs(5), ptdobs, etdobs - & , pmobs4, pmobs5 -c & , cdobs(10), etamax, ptd, etd, pt, pt2, pm, pm2 - & , cdobs(10), etamax, ptd, etd, pt2, pm, pm2 - & , ct, th, arge, ptmuon, etmuon, ptelec, etelec - & , pttr, ettr - & , pm2phi, ephi, ejka, rmphi - & , epis, eds4, eds5, rmds4, rmds5 -c -* -*KEND. -* SAVE /LUJETS/,/LUDAT1/,/LUDAT2/ - SAVE /PYJETS/,/PYDAT1/,/PYDAT2/ - SAVE /PYPARS/,/PYINT1/,/PYINT2/,/PYINT5/,/PYUPPR/ -*KEEP,BTREE. - common/btree/ntree,tree(4000) - integer tree - SAVE /btree/ -*KEND. -c SAVE IDEBUG, IFIRST, IIPRNT, NENTRY - SAVE IDEBUG, IFIRST, NENTRY - Integer IDEBUG /0/ - Integer IFIRST /1/ -c Integer IIPRNT /0/ - integer NENTRY /0/ -* -*KEEP,LVL1. -* LVL1 muon cuts - common/lvl1/tr1,pt_trig1, etha_trig1 - common/trg1/i_muon_trig1 - SAVE/lvl1/ - SAVE/trg1/ - dimension cut1(3) - equivalence (cut1(1),tr1) -*KEEP,FAMILY. - name_self(I)=K(I,2) - name_selv(I)=abs(K(I,2)) - name_father(I)=K(K(I,3),2) - name_grandpa(I)=K(K(K(I,3),3),2) - name_daughter1(I)=K(K(I,4),2) - name_daughter2(I)=K(K(I,5),2) - - link_self(I)=I - link_father(I)=K(I,3) - link_grandpa(I)=K(K(I,3),3) - link_daughter1(I)=K(I,4) - link_daughter2(I)=K(I,5) -*KEND. -C ----------- end CDE -------------------------------------------------- -* - IF(IFIRST.EQ.1) THEN - IFIRST =0 - ENDIF -* -c return immediately if already rejected - if ( iret.eq.1 ) return -* - if ( cufdcp(10) .gt. 0.d0 ) then - etamax = cufdcp(10) - else - etamax = etaabs - endif -* -c some counting -c nintree = 0 -* -c preset - iret = 1 -* - call pyhepc(1) -* - if(idebug.eq.1) then -c - nentry = nentry + 1 - print * - print *,' *** uf_ChHadr *** , nhep, nentry =',nhep,nentry - print * - print *,' cufdcp =',cufdcp - endif -* - do 2222 j = 3 , nhep -c D meson analysis -c - if ( iabs(idhep(j)) .ne. 413 .and. ! D*+/- - & iabs(idhep(j)) .ne. 411 .and. ! D+/- - & iabs(idhep(j)) .ne. 421 .and. ! D0 - & iabs(idhep(j)) .ne. 431 .and. ! Ds+/- - & iabs(idhep(j)) .ne.4122 ! Lambda_c+/- - & ) goto 2221 -* - call pteta(j,ptd,etd) -* - if ( abs(etd) .gt. etaabs ) goto 2221 -* - do i = 1, 9 - if ( cufdcp(i) .gt. 0.d0 .and. - & ptd .ge. cufdcp(i) ) goto 11 - enddo - goto 2221 - 11 continue -* - jj1 = jdahep(1,j) - jj2 = jdahep(2,j) -c - if ( ( cufdcp(1) .gt. 0.d0 .or. cufdcp(2) .gt. 0.d0 - & .or. cufdcp(3) .gt. 0.d0 ) - & .and. - & ( iabs(idhep(j)) .eq. 411 .or. ! D+/- - & iabs(idhep(j)) .eq. 431 .or. ! Ds+/- - & iabs(idhep(j)) .eq.4122 ) ) then ! Lambda_c+/- -c - numka = 0 - numcha = 0 - numneu = 0 - numpi0 = 0 -c - pdobs(1) = 0.d0 - pdobs(2) = 0.d0 - pdobs(3) = 0.d0 -c - do in1 = jj1, jj2 -c - if ( isthep(in1) .ne. 1 .and. - & iabs(idhep(in1)) .ne. 111 ) then - j15 = jdahep(1,in1) - j16 = jdahep(2,in1) -c - do in2 = j15, j16 -c - if ( isthep(in2) .ne. 1 .and. - & iabs(idhep(in2)) .ne. 111 ) then - j25 = jdahep(1,in2) - j26 = jdahep(2,in2) -c - do in3 = j25, j26 - if ( isthep(in3) .ne. 1 .and. - & iabs(idhep(in3)) .ne. 111 ) then - j35 = jdahep(1,in3) - j36 = jdahep(2,in3) -c - do in4 = j35, j36 - if ( isthep(in4) .ne. 1 .and. - & iabs(idhep(in4)) .ne. 111 ) then - numcha = 99 - else - if ( iabs(idhep(in4)) .eq. 310 .or. - & iabs(idhep(in4)) .eq. 3122 ) then - numka = numka + 1 -c - pdobs(1) = pdobs(1) + phep(1,in4) - pdobs(2) = pdobs(2) + phep(2,in4) - pdobs(3) = pdobs(3) + phep(3,in4) -c - elseif ( iabs(idhep(in4)) .eq. 211 .or. - & iabs(idhep(in4)) .eq. 321 .or. - & iabs(idhep(in4)) .eq. 11 .or. - & iabs(idhep(in4)) .eq. 13 .or. - & iabs(idhep(in4)) .eq.2212 ) then - numcha = numcha + 1 -c - pdobs(1) = pdobs(1) + phep(1,in4) - pdobs(2) = pdobs(2) + phep(2,in4) - pdobs(3) = pdobs(3) + phep(3,in4) -c - idobs(numcha) = in4 -c - elseif ( iabs(idhep(in4)) .eq. 111 ) then - numpi0 = numpi0 + 1 - elseif ( iabs(idhep(in4)) .eq. 12 .or. - & iabs(idhep(in4)) .eq. 14 ) then - numneu = numneu + 1 - else - numcha = 99 - endif - endif - enddo - else - if ( iabs(idhep(in3)) .eq. 310 .or. - & iabs(idhep(in3)) .eq. 3122 ) then - numka = numka + 1 -c - pdobs(1) = pdobs(1) + phep(1,in3) - pdobs(2) = pdobs(2) + phep(2,in3) - pdobs(3) = pdobs(3) + phep(3,in3) -c - elseif ( iabs(idhep(in3)) .eq. 211 .or. - & iabs(idhep(in3)) .eq. 321 .or. - & iabs(idhep(in3)) .eq. 11 .or. - & iabs(idhep(in3)) .eq. 13 .or. - & iabs(idhep(in3)) .eq.2212 ) then - numcha = numcha + 1 -c - pdobs(1) = pdobs(1) + phep(1,in3) - pdobs(2) = pdobs(2) + phep(2,in3) - pdobs(3) = pdobs(3) + phep(3,in3) -c - idobs(numcha) = in3 -c - elseif ( iabs(idhep(in3)) .eq. 111 ) then - numpi0 = numpi0 + 1 - elseif ( iabs(idhep(in3)) .eq. 12 .or. - & iabs(idhep(in3)) .eq. 14 ) then - numneu = numneu + 1 - else - numcha = 99 - endif - endif - enddo -c - else - if ( iabs(idhep(in2)) .eq. 310 .or. - & iabs(idhep(in2)) .eq. 3122 ) then - numka = numka + 1 -c - pdobs(1) = pdobs(1) + phep(1,in2) - pdobs(2) = pdobs(2) + phep(2,in2) - pdobs(3) = pdobs(3) + phep(3,in2) -c - elseif ( iabs(idhep(in2)) .eq. 211 .or. - & iabs(idhep(in2)) .eq. 321 .or. - & iabs(idhep(in2)) .eq. 11 .or. - & iabs(idhep(in2)) .eq. 13 .or. - & iabs(idhep(in2)) .eq.2212 ) then - numcha = numcha + 1 -c - pdobs(1) = pdobs(1) + phep(1,in2) - pdobs(2) = pdobs(2) + phep(2,in2) - pdobs(3) = pdobs(3) + phep(3,in2) -c - idobs(numcha) = in2 -c - elseif ( iabs(idhep(in2)) .eq. 111 ) then - numpi0 = numpi0 + 1 - elseif ( iabs(idhep(in2)) .eq. 12 .or. - & iabs(idhep(in2)) .eq. 14 ) then - numneu = numneu + 1 - else - numcha = 99 - endif - endif -c - enddo - else - if ( iabs(idhep(in1)) .eq. 310 .or. - & iabs(idhep(in1)) .eq. 3122 ) then - numka = numka + 1 -c - pdobs(1) = pdobs(1) + phep(1,in1) - pdobs(2) = pdobs(2) + phep(2,in1) - pdobs(3) = pdobs(3) + phep(3,in1) -c - elseif ( iabs(idhep(in1)) .eq. 211 .or. - & iabs(idhep(in1)) .eq. 321 .or. - & iabs(idhep(in1)) .eq. 11 .or. - & iabs(idhep(in1)) .eq. 13 .or. - & iabs(idhep(in1)) .eq.2212 ) then - numcha = numcha + 1 -c - pdobs(1) = pdobs(1) + phep(1,in1) - pdobs(2) = pdobs(2) + phep(2,in1) - pdobs(3) = pdobs(3) + phep(3,in1) -c - idobs(numcha) = in1 -c - elseif ( iabs(idhep(in1)) .eq. 111 ) then - numpi0 = numpi0 + 1 - elseif ( iabs(idhep(in1)) .eq. 12 .or. - & iabs(idhep(in1)) .eq. 14 ) then - numneu = numneu + 1 - else - numcha = 99 - endif - endif -c - enddo -c -c D+,Ds+,Lc+ -> 3 charged tracks and 0 K0s -c and 0 or 1 neutral pion -c and 0 or 1 neutrino -c - if ( ( numcha .eq. 3 .and. numka .eq. 0 .and. - & numpi0 .le. 1 .and. numneu .le. 1 ) -c -cc & .or.( numcha .eq. 1 .and. numka .eq. 1 .and. -cc & numpi0 .le. 1 .and. numneu .le. 1 ) -c - & ) then -c - pt2 = pdobs(1)**2+pdobs(2)**2 - ptdobs = sqrt(pt2) - pm2 = pt2+pdobs(3)**2 - pm = sqrt(pm2) - ct = 0.d0 - if ( pm .ne. 0.d0 ) ct = pdobs(3) / pm - th = acos(ct) - arge = tan(th*0.5d0) - if ( arge .le. 0.d0 ) then - etdobs = 10.d0 - if ( pdobs(3) .lt. 0.d0 ) etdobs = -10.d0 - goto 111 - endif - etdobs = -log(arge) - 111 continue -* - if ( abs(etdobs) .le. etamax ) then -c - do in = 1, 3 -c -c do not include triggered lepton: -c - if ( iabs(idhep(idobs(in))) .eq. 13 .and. - & ( cufdcp(5) .gt. 0. .or. cufdcp(8) .gt. 0. ) ) then -c - jmuon = idobs(in) - call pteta(jmuon,ptmuon,etmuon) -c - if ( ptmuon .ge. pt_trig1 .and. - & abs(etmuon) .le. etha_trig1 ) goto 121 - endif -c - if ( iabs(idhep(idobs(in))) .eq. 11 .and. - & ( cufdcp(6) .gt. 0. .or. cufdcp(9) .gt. 0. ) ) then -c - jelec = idobs(in) - call pteta(jelec,ptelec,etelec) -c - if ( ptelec .ge. pt_trig1 .and. - & abs(etelec) .le. etha_trig1 ) goto 121 - endif -c -c do not use background with soft tracks: -c - if ( numpi0 .gt. 0 .or. numneu .gt. 0 ) then -c - jtr = idobs(in) - call pteta(jtr,pttr,ettr) -c - if ( pttr .lt. pttrmn .or. - & abs(ettr) .gt. etaabs ) goto 121 - endif -c -c assign charge: -c - if ( idhep(idobs(in)) .eq. 211 .or. - & idhep(idobs(in)) .eq. 321 .or. - & idhep(idobs(in)) .eq. -11 .or. - & idhep(idobs(in)) .eq. -13 .or. - & idhep(idobs(in)) .eq.2212 ) then -c - cdobs(in) = 1.d0 - else - cdobs(in) = -1.d0 - endif - enddo -c - if ( cdobs(1)*cdobs(2) .lt. 0.d0 .and. - & cdobs(1)*cdobs(3) .lt. 0.d0 ) then - jka = 1 - jp1 = 2 - jp2 = 3 - elseif ( cdobs(2)*cdobs(1) .lt. 0.d0 .and. - & cdobs(2)*cdobs(3) .lt. 0.d0 ) then - jka = 2 - jp1 = 1 - jp2 = 3 - elseif ( cdobs(3)*cdobs(1) .lt. 0.d0 .and. - & cdobs(3)*cdobs(2) .lt. 0.d0 ) then - jka = 3 - jp1 = 1 - jp2 = 2 - endif -c - if ( cufdcp(1) .gt. 0.d0 .and. ptdobs .ge. cufdcp(1) ) then -c - pdobs(4) = sqrt( phep(1,idobs(jka))**2 - & + phep(2,idobs(jka))**2 - & + phep(3,idobs(jka))**2 + sqmka ) - & + sqrt( phep(1,idobs(jp1))**2 - & + phep(2,idobs(jp1))**2 - & + phep(3,idobs(jp1))**2 + sqmpi ) - & + sqrt( phep(1,idobs(jp2))**2 - & + phep(2,idobs(jp2))**2 - & + phep(3,idobs(jp2))**2 + sqmpi ) -c - pmobs4 = sqrt(pdobs(4)**2-pm2) -c - if ( pmobs4 .ge. rdcmin .and. pmobs4 .le. rdcmax ) then -c -c D+ -> K-pi+pi+ and backgrounds -c - iret = 0 -c - if ( idebug .eq. 1 ) then - print * - print *, - &' *** uf_ChHAdr *** : D+ -> K-pi+pi+ and backgrounds' - print * - print *,' j, jj1, jj2 =',j,jj1,jj2 - print *,' numcha, numka, numpi0, numneu =', - & numcha, numka, numpi0, numneu - print *,' ptdobs, etdobs, pmobs4 =',ptdobs,etdobs,pmobs4 - print * - call pylist(1) - endif -c - Return -c - endif -c - endif -c - if ( cufdcp(2) .gt. 0.d0 .and. ptdobs .ge. cufdcp(2) ) then -c - ejka = sqrt( phep(1,idobs(jka))**2 + phep(2,idobs(jka))**2 - & + phep(3,idobs(jka))**2 + sqmka ) -c - pdobs(4) = ejka - & + sqrt( phep(1,idobs(jp1))**2 - & + phep(2,idobs(jp1))**2 - & + phep(3,idobs(jp1))**2 + sqmka ) - & + sqrt( phep(1,idobs(jp2))**2 - & + phep(2,idobs(jp2))**2 - & + phep(3,idobs(jp2))**2 + sqmpi ) -c - pmobs4 = sqrt(pdobs(4)**2-pm2) -c - pdobs(5) = ejka - & + sqrt( phep(1,idobs(jp2))**2 - & + phep(2,idobs(jp2))**2 - & + phep(3,idobs(jp2))**2 + sqmka ) - & + sqrt( phep(1,idobs(jp1))**2 - & + phep(2,idobs(jp1))**2 - & + phep(3,idobs(jp1))**2 + sqmpi ) -c - pmobs5 = sqrt(pdobs(5)**2-pm2) -c - if ( ( pmobs4 .ge. rdsmin .and. pmobs4 .le. rdsmax ) .or. - & ( pmobs5 .ge. rdsmin .and. pmobs5 .le. rdsmax ) ) then -c -c Ds+ -> K-K+pi+ and backgrounds -c - if ( rphimx .gt. 0.d0 ) then -c - pm2phi = (phep(1,idobs(jka))+phep(1,idobs(jp1)))**2 - & + (phep(2,idobs(jka))+phep(2,idobs(jp1)))**2 - & + (phep(3,idobs(jka))+phep(3,idobs(jp1)))**2 -c - ephi = ejka - & + sqrt( phep(1,idobs(jp1))**2 - & + phep(2,idobs(jp1))**2 - & + phep(3,idobs(jp1))**2 + sqmka ) -c - rmphi = sqrt( ephi**2 - pm2phi ) -c - if ( pmobs4 .ge. rdsmin .and. pmobs4 .le. rdsmax - & .and. rmphi .le. rphimx ) goto 31 -c - pm2phi = (phep(1,idobs(jka))+phep(1,idobs(jp2)))**2 - & + (phep(2,idobs(jka))+phep(2,idobs(jp2)))**2 - & + (phep(3,idobs(jka))+phep(3,idobs(jp2)))**2 -c - ephi = ejka - & + sqrt( phep(1,idobs(jp2))**2 - & + phep(2,idobs(jp2))**2 - & + phep(3,idobs(jp2))**2 + sqmka ) -c - rmphi = sqrt( ephi**2 - pm2phi ) -c - if ( pmobs5 .ge. rdsmin .and. pmobs5 .le. rdsmax - & .and. rmphi .le. rphimx ) goto 31 -c - goto 33 -c - else - rmphi = rphimx - endif -c - 31 continue - iret = 0 -c - if ( idebug .eq. 1 ) then - print * - print *, - &' *** uf_ChHAdr *** : Ds+ -> K-K+pi+ and backgrounds' - print * - print *,' j, jj1, jj2 =',j,jj1,jj2 - print *,' numcha, numka, numpi0, numneu =', - & numcha, numka, numpi0, numneu - print *,' ptdobs, etdobs, pmobs4, pmobs5, rmphi =', - & ptdobs, etdobs, pmobs4, pmobs5, rmphi - print * - call pylist(1) - endif -c - Return -c - 33 continue - endif -c - endif -c - if ( cufdcp(3) .gt. 0.d0 .and. ptdobs .ge. cufdcp(3) ) then -c - pdobs(4) = sqrt( phep(1,idobs(jka))**2 - & + phep(2,idobs(jka))**2 - & + phep(3,idobs(jka))**2 + sqmka ) - & + sqrt( phep(1,idobs(jp1))**2 - & + phep(2,idobs(jp1))**2 - & + phep(3,idobs(jp1))**2 + sqmpr ) - & + sqrt( phep(1,idobs(jp2))**2 - & + phep(2,idobs(jp2))**2 - & + phep(3,idobs(jp2))**2 + sqmpi ) -c - pmobs4 = sqrt(pdobs(4)**2-pm2) -c - pdobs(5) = sqrt( phep(1,idobs(jka))**2 - & + phep(2,idobs(jka))**2 - & + phep(3,idobs(jka))**2 + sqmka ) - & + sqrt( phep(1,idobs(jp2))**2 - & + phep(2,idobs(jp2))**2 - & + phep(3,idobs(jp2))**2 + sqmpr ) - & + sqrt( phep(1,idobs(jp1))**2 - & + phep(2,idobs(jp1))**2 - & + phep(3,idobs(jp1))**2 + sqmpi ) -c - pmobs5 = sqrt(pdobs(5)**2-pm2) -c - if ( ( pmobs4 .ge. rdlmin .and. pmobs4 .le. rdlmax ) .or. - & ( pmobs5 .ge. rdlmin .and. pmobs5 .le. rdlmax ) ) then -c -c Lc+ -> K-p+pi+ and backgrounds -c - iret = 0 -c - if ( idebug .eq. 1 ) then - print * - print *, - &' *** uf_ChHAdr *** : Lc+ -> K-p+pi+ and backgrounds' - print * - print *,' j, jj1, jj2 =',j,jj1,jj2 - print *,' numcha, numka, numpi0, numneu =', - & numcha, numka, numpi0, numneu - print *,' ptdobs, etdobs, pmobs4, pmobs5 =', - & ptdobs, etdobs, pmobs4, pmobs5 - print * - call pylist(1) - endif -c - Return -c - endif -c - endif -c - 121 continue -c - endif -* - endif -* - elseif ( iabs(idhep(j)) .eq. 413 .and. ( ! D*+/- - & cufdcp(4) .gt. 0.d0 - & .or. cufdcp(5) .gt. 0.d0 - & .or. cufdcp(6) .gt. 0.d0 - & ) ) then -c -c D*+/- -> D0,pi-s -c - if ( (jj2-jj1) .eq. 1 .and. - & (iabs(idhep(jj1)).eq.421 .or. iabs(idhep(jj2)).eq.421) .and. - & (iabs(idhep(jj1)).eq.211 .or. iabs(idhep(jj2)).eq.211) ) then -c - if ( iabs(idhep(jj1)).eq.211) then - jj3 = jj1 - jj4 = jj2 - else - jj3 = jj2 - jj4 = jj1 - endif -c - jj5 = jdahep(1,jj4) - jj6 = jdahep(2,jj4) -c - numka = 0 - numcha = 0 - numneu = 0 - numpi0 = 0 -c - pdobs(1) = 0.d0 - pdobs(2) = 0.d0 - pdobs(3) = 0.d0 -c - nelec = 0 - jelec = 0 -c - nmuon = 0 - jmuon = 0 -c - do in1 = jj5, jj6 -c - if ( isthep(in1) .ne. 1 .and. - & iabs(idhep(in1)) .ne. 111 ) then - j15 = jdahep(1,in1) - j16 = jdahep(2,in1) -c - do in2 = j15, j16 -c - if ( isthep(in2) .ne. 1 .and. - & iabs(idhep(in2)) .ne. 111 ) then - j25 = jdahep(1,in2) - j26 = jdahep(2,in2) -c - do in3 = j25, j26 - if ( isthep(in3) .ne. 1 .and. - & iabs(idhep(in3)) .ne. 111 ) then - j35 = jdahep(1,in3) - j36 = jdahep(2,in3) -c - do in4 = j35, j36 - if ( isthep(in4) .ne. 1 .and. - & iabs(idhep(in4)) .ne. 111 ) then - numcha = 99 - else - if ( iabs(idhep(in4)) .eq. 310 .or. - & iabs(idhep(in4)) .eq. 3122 ) then - numka = numka + 1 -c - pdobs(1) = pdobs(1) + phep(1,in4) - pdobs(2) = pdobs(2) + phep(2,in4) - pdobs(3) = pdobs(3) + phep(3,in4) -c - elseif ( iabs(idhep(in4)) .eq. 211 .or. - & iabs(idhep(in4)) .eq. 321 .or. - & iabs(idhep(in4)) .eq. 11 .or. - & iabs(idhep(in4)) .eq. 13 .or. - & iabs(idhep(in4)) .eq.2212 ) then - numcha = numcha + 1 -c - if ( iabs(idhep(in4)) .eq. 13 ) then - jmuon = in4 - nmuon = nmuon + 1 - elseif ( iabs(idhep(in4)) .eq. 11 ) then - jelec = in4 - nelec = nelec + 1 - endif -c - pdobs(1) = pdobs(1) + phep(1,in4) - pdobs(2) = pdobs(2) + phep(2,in4) - pdobs(3) = pdobs(3) + phep(3,in4) -c - idobs(numcha) = in4 -c - elseif ( iabs(idhep(in4)) .eq. 111 ) then - numpi0 = numpi0 + 1 - elseif ( iabs(idhep(in4)) .eq. 12 .or. - & iabs(idhep(in4)) .eq. 14 ) then - numneu = numneu + 1 - else - numcha = 99 - endif - endif - enddo -c - else - if ( iabs(idhep(in3)) .eq. 310 .or. - & iabs(idhep(in3)) .eq. 3122 ) then - numka = numka + 1 -c - pdobs(1) = pdobs(1) + phep(1,in3) - pdobs(2) = pdobs(2) + phep(2,in3) - pdobs(3) = pdobs(3) + phep(3,in3) -c - elseif ( iabs(idhep(in3)) .eq. 211 .or. - & iabs(idhep(in3)) .eq. 321 .or. - & iabs(idhep(in3)) .eq. 11 .or. - & iabs(idhep(in3)) .eq. 13 .or. - & iabs(idhep(in3)) .eq.2212 ) then - numcha = numcha + 1 -c - if ( iabs(idhep(in3)) .eq. 13 ) then - jmuon = in3 - nmuon = nmuon + 1 - elseif ( iabs(idhep(in3)) .eq. 11 ) then - jelec = in3 - nelec = nelec + 1 - endif -c - pdobs(1) = pdobs(1) + phep(1,in3) - pdobs(2) = pdobs(2) + phep(2,in3) - pdobs(3) = pdobs(3) + phep(3,in3) -c - idobs(numcha) = in3 -c - elseif ( iabs(idhep(in3)) .eq. 111 ) then - numpi0 = numpi0 + 1 - elseif ( iabs(idhep(in3)) .eq. 12 .or. - & iabs(idhep(in3)) .eq. 14 ) then - numneu = numneu + 1 - else - numcha = 99 - endif - endif - enddo -c - else - if ( iabs(idhep(in2)) .eq. 310 .or. - & iabs(idhep(in2)) .eq. 3122 ) then - numka = numka + 1 -c - pdobs(1) = pdobs(1) + phep(1,in2) - pdobs(2) = pdobs(2) + phep(2,in2) - pdobs(3) = pdobs(3) + phep(3,in2) -c - elseif ( iabs(idhep(in2)) .eq. 211 .or. - & iabs(idhep(in2)) .eq. 321 .or. - & iabs(idhep(in2)) .eq. 11 .or. - & iabs(idhep(in2)) .eq. 13 .or. - & iabs(idhep(in2)) .eq.2212 ) then - numcha = numcha + 1 -c - if ( iabs(idhep(in2)) .eq. 13 ) then - jmuon = in2 - nmuon = nmuon + 1 - elseif ( iabs(idhep(in2)) .eq. 11 ) then - jelec = in2 - nelec = nelec + 1 - endif -c - pdobs(1) = pdobs(1) + phep(1,in2) - pdobs(2) = pdobs(2) + phep(2,in2) - pdobs(3) = pdobs(3) + phep(3,in2) -c - idobs(numcha) = in2 -c - elseif ( iabs(idhep(in2)) .eq. 111 ) then - numpi0 = numpi0 + 1 - elseif ( iabs(idhep(in2)) .eq. 12 .or. - & iabs(idhep(in2)) .eq. 14 ) then - numneu = numneu + 1 - else - numcha = 99 - endif - endif - enddo -c - else - if ( iabs(idhep(in1)) .eq. 310 .or. - & iabs(idhep(in1)) .eq. 3122 ) then - numka = numka + 1 -c - pdobs(1) = pdobs(1) + phep(1,in1) - pdobs(2) = pdobs(2) + phep(2,in1) - pdobs(3) = pdobs(3) + phep(3,in1) -c - elseif ( iabs(idhep(in1)) .eq. 211 .or. - & iabs(idhep(in1)) .eq. 321 .or. - & iabs(idhep(in1)) .eq. 11 .or. - & iabs(idhep(in1)) .eq. 13 .or. - & iabs(idhep(in1)) .eq.2212 ) then - numcha = numcha + 1 -c - if ( iabs(idhep(in1)) .eq. 13 ) then - jmuon = in1 - nmuon = nmuon + 1 - elseif ( iabs(idhep(in1)) .eq. 11 ) then - jelec = in1 - nelec = nelec + 1 - endif -c - pdobs(1) = pdobs(1) + phep(1,in1) - pdobs(2) = pdobs(2) + phep(2,in1) - pdobs(3) = pdobs(3) + phep(3,in1) -c - idobs(numcha) = in1 -c - elseif ( iabs(idhep(in1)) .eq. 111 ) then - numpi0 = numpi0 + 1 - elseif ( iabs(idhep(in1)) .eq. 12 .or. - & iabs(idhep(in1)) .eq. 14 ) then - numneu = numneu + 1 - else - numcha = 99 - endif - endif -c - enddo -* - if ( cufdcp(4) .gt. 0.d0 .and. - & ( numcha .eq. 2 .and. numka .eq. 0 .and. - & numpi0 .le. 1 .and. numneu .le. 1 ) ) then -c -c D*+/- -> D0 pi, D0 -> ( 2 charged tracks and 0 K0s ) -c and 0 or 1 neutral pion -c and 0 or 1 neutrino -c - pm2 = pdobs(1)**2 + pdobs(2)**2 + pdobs(3)**2 -c - pdobs(4) = sqrt( phep(1,idobs(1))**2 + phep(2,idobs(1))**2 - & + phep(3,idobs(1))**2 + sqmka ) - & + sqrt( phep(1,idobs(2))**2 + phep(2,idobs(2))**2 - & + phep(3,idobs(2))**2 + sqmpi ) -c - pmobs4 = sqrt(pdobs(4)**2-pm2) -c - pdobs(5) = sqrt( phep(1,idobs(2))**2 + phep(2,idobs(2))**2 - & + phep(3,idobs(2))**2 + sqmka ) - & + sqrt( phep(1,idobs(1))**2 + phep(2,idobs(1))**2 - & + phep(3,idobs(1))**2 + sqmpi ) -c - pmobs5 = sqrt(pdobs(5)**2-pm2) -c - if ( pmobs4 .ge. rd0smn .or. pmobs5 .ge. rd0smn ) then -c - pdobs(1) = pdobs(1) + phep(1,jj3) - pdobs(2) = pdobs(2) + phep(2,jj3) - pdobs(3) = pdobs(3) + phep(3,jj3) -c - pt2 = pdobs(1)**2+pdobs(2)**2 - ptdobs = sqrt(pt2) - pm2 = pt2+pdobs(3)**2 - pm = sqrt(pm2) - ct = 0.d0 - if ( pm .ne. 0.d0 ) ct = pdobs(3) / pm - th = acos(ct) - arge = tan(th*0.5d0) - if ( arge .le. 0.d0 ) then - etdobs = 10.d0 - if ( pdobs(3) .lt. 0.d0 ) etdobs = -10.d0 - goto 222 - endif - etdobs = -log(arge) - 222 continue -c - if ( ptdobs .ge. cufdcp(4) .and. - & abs(etdobs) .le. etamax ) then -c - if ( numpi0 .gt. 0 .or. numneu .gt. 0 ) then -c -c do not use background with soft tracks from D0: -c - do in = 1,2 -c - jtr = idobs(in) - call pteta(jtr,pttr,ettr) -c - if ( pttr .lt. pttrmn .or. - & abs(ettr) .gt. etaabs ) goto 231 -c - enddo -c -c also for "slow" pion: -c - call pteta(jj3,pttr,ettr) -c - if ( pttr .lt. ptpsmn .or. - & abs(ettr) .gt. etaabs ) goto 231 -c -c and limit on delta_M for background: -c - epis = sqrt(phep(1,jj3)**2 + phep(2,jj3)**2 + - & phep(3,jj3)**2 + sqmpi) -c - eds4 = pdobs(4) + epis - rmds4 = sqrt(eds4**2 - pm2) -c - eds5 = pdobs(5) + epis - rmds5 = sqrt(eds5**2 - pm2) -c - if ( ( pmobs4 .lt. rd0smn .or. - & (rmds4-pmobs4) .gt. rdelmx ) .and. - & ( pmobs5 .lt. rd0smn .or. - & (rmds5-pmobs5) .gt. rdelmx ) ) goto 231 -c - endif -c -c D*+/- -> D0 pi, D0 -> 2 charged tracks + 0/1 pi0 + 0/1 nuetrino -c - iret = 0 -c - if ( idebug .eq. 1 ) then - print * - print *, - &' *** uf_ChHAdr *** : D*+/- -> D0 pi, D0 -> 2 charged tracks' - &,' + 0/1 pi0 + 0/1 nuetrino ' - print * - print *,' j, jj1, jj2, jj5, jj6 =',j,jj1,jj2,jj5,jj6 - print *,' numcha, numka, numpi0, numneu =', - & numcha, numka, numpi0, numneu - print *,' ptdobs, etdobs, pmobs4, pmobs5 =', - & ptdobs, etdobs, pmobs4, pmobs5 - print * - call pylist(1) - endif -c - Return -c - 231 continue -c - endif - endif - endif -* - if ( nmuon .eq. 1 .and. cufdcp(5) .gt. 0.d0 ) then -c - call pteta(jmuon,ptmuon,etmuon) -c - if ( ptmuon .ge. pt_trig1 .and. - & abs(etmuon) .le. etha_trig1 .and. - & ptd .ge. cufdcp(5) ) then -c -c D*+/- -> D0 pi, D0 -> muon + X -c - iret = 0 -c - if ( idebug .eq. 1 ) then - print * - print *, - &' *** uf_ChHAdr *** : D*+/- -> D0 pi, D0 -> muon + X' - print * - print *,' j, jj1, jj2, jj5, jj6 =',j,jj1,jj2,jj5,jj6 - print *,' numcha, numka, numpi0, numneu =', - & numcha, numka, numpi0, numneu - print *,' nmuon, jmuon =',nmuon,jmuon - print *,' ptmuon, etmuon =',ptmuon,etmuon - print * - call pylist(1) - endif -c - Return -c - endif - endif -* - if ( nelec .eq. 1 .and. cufdcp(6) .gt. 0.d0 ) then -c - call pteta(jelec,ptelec,etelec) -c - if ( ptelec .ge. pt_trig1 .and. - & abs(etelec) .le. etha_trig1 .and. - & ptd .ge. cufdcp(6) ) then -c -c D*+/- -> D0 pi, D0 -> electron + X -c - iret = 0 -c - if ( idebug .eq. 1 ) then - print * - print *, - &' *** uf_ChHAdr *** : D*+/- -> D0 pi, D0 -> electron + X' - print * - print *,' j, jj1, jj2, jj5, jj6 =',j,jj1,jj2,jj5,jj6 - print *,' numcha, numka, numpi0, numneu =', - & numcha, numka, numpi0, numneu - print *,' nelec, jelec =',nelec,jelec - print *,' ptelec, etelec =',ptelec,etelec - print * - call pylist(1) - endif -c - Return -c - endif - endif - endif -* - elseif ( iabs(idhep(j)) .eq. 421 .and. ( ! D0 - & cufdcp(7) .gt. 0.d0 - & .or. cufdcp(8) .gt. 0.d0 - & .or. cufdcp(9) .gt. 0.d0 - & ) ) then -* - numka = 0 - numcha = 0 - numneu = 0 - numpi0 = 0 -c - pdobs(1) = 0.d0 - pdobs(2) = 0.d0 - pdobs(3) = 0.d0 -c - nelec = 0 - jelec = 0 -c - nmuon = 0 - jmuon = 0 -c - do in1 = jj1, jj2 -c - if ( isthep(in1) .ne. 1 .and. - & iabs(idhep(in1)) .ne. 111 ) then - j15 = jdahep(1,in1) - j16 = jdahep(2,in1) -c - do in2 = j15, j16 -c - if ( isthep(in2) .ne. 1 .and. - & iabs(idhep(in2)) .ne. 111 ) then - j25 = jdahep(1,in2) - j26 = jdahep(2,in2) -c - do in3 = j25, j26 - if ( isthep(in3) .ne. 1 .and. - & iabs(idhep(in3)) .ne. 111 ) then - j35 = jdahep(1,in3) - j36 = jdahep(2,in3) -c - do in4 = j35, j36 - if ( isthep(in4) .ne. 1 .and. - & iabs(idhep(in4)) .ne. 111 ) then - numcha = 99 - else - if ( iabs(idhep(in4)) .eq. 310 .or. - & iabs(idhep(in4)) .eq. 3122 ) then - numka = numka + 1 -c - pdobs(1) = pdobs(1) + phep(1,in4) - pdobs(2) = pdobs(2) + phep(2,in4) - pdobs(3) = pdobs(3) + phep(3,in4) -c - elseif ( iabs(idhep(in4)) .eq. 211 .or. - & iabs(idhep(in4)) .eq. 321 .or. - & iabs(idhep(in4)) .eq. 11 .or. - & iabs(idhep(in4)) .eq. 13 .or. - & iabs(idhep(in4)) .eq.2212 ) then - numcha = numcha + 1 -c - if ( iabs(idhep(in4)) .eq. 13 ) then - jmuon = in4 - nmuon = nmuon + 1 - elseif ( iabs(idhep(in4)) .eq. 11 ) then - jelec = in4 - nelec = nelec + 1 - endif -c - pdobs(1) = pdobs(1) + phep(1,in4) - pdobs(2) = pdobs(2) + phep(2,in4) - pdobs(3) = pdobs(3) + phep(3,in4) -c - idobs(numcha) = in4 -c - elseif ( iabs(idhep(in4)) .eq. 111 ) then - numpi0 = numpi0 + 1 - elseif ( iabs(idhep(in4)) .eq. 12 .or. - & iabs(idhep(in4)) .eq. 14 ) then - numneu = numneu + 1 - else - numcha = 99 - endif - endif - enddo - else - if ( iabs(idhep(in3)) .eq. 310 .or. - & iabs(idhep(in3)) .eq. 3122 ) then - numka = numka + 1 -c - pdobs(1) = pdobs(1) + phep(1,in3) - pdobs(2) = pdobs(2) + phep(2,in3) - pdobs(3) = pdobs(3) + phep(3,in3) -c - elseif ( iabs(idhep(in3)) .eq. 211 .or. - & iabs(idhep(in3)) .eq. 321 .or. - & iabs(idhep(in3)) .eq. 11 .or. - & iabs(idhep(in3)) .eq. 13 .or. - & iabs(idhep(in3)) .eq.2212 ) then - numcha = numcha + 1 -c - if ( iabs(idhep(in3)) .eq. 13 ) then - jmuon = in3 - nmuon = nmuon + 1 - elseif ( iabs(idhep(in3)) .eq. 11 ) then - jelec = in3 - nelec = nelec + 1 - endif -c - pdobs(1) = pdobs(1) + phep(1,in3) - pdobs(2) = pdobs(2) + phep(2,in3) - pdobs(3) = pdobs(3) + phep(3,in3) -c - idobs(numcha) = in3 -c - elseif ( iabs(idhep(in3)) .eq. 111 ) then - numpi0 = numpi0 + 1 - elseif ( iabs(idhep(in3)) .eq. 12 .or. - & iabs(idhep(in3)) .eq. 14 ) then - numneu = numneu + 1 - else - numcha = 99 - endif - endif - enddo -c - else - if ( iabs(idhep(in2)) .eq. 310 .or. - & iabs(idhep(in2)) .eq. 3122 ) then - numka = numka + 1 -c - pdobs(1) = pdobs(1) + phep(1,in2) - pdobs(2) = pdobs(2) + phep(2,in2) - pdobs(3) = pdobs(3) + phep(3,in2) -c - elseif ( iabs(idhep(in2)) .eq. 211 .or. - & iabs(idhep(in2)) .eq. 321 .or. - & iabs(idhep(in2)) .eq. 11 .or. - & iabs(idhep(in2)) .eq. 13 .or. - & iabs(idhep(in2)) .eq.2212 ) then - numcha = numcha + 1 -c - if ( iabs(idhep(in2)) .eq. 13 ) then - jmuon = in2 - nmuon = nmuon + 1 - elseif ( iabs(idhep(in2)) .eq. 11 ) then - jelec = in2 - nelec = nelec + 1 - endif -c - pdobs(1) = pdobs(1) + phep(1,in2) - pdobs(2) = pdobs(2) + phep(2,in2) - pdobs(3) = pdobs(3) + phep(3,in2) -c - idobs(numcha) = in2 -c - elseif ( iabs(idhep(in2)) .eq. 111 ) then - numpi0 = numpi0 + 1 - elseif ( iabs(idhep(in2)) .eq. 12 .or. - & iabs(idhep(in2)) .eq. 14 ) then - numneu = numneu + 1 - else - numcha = 99 - endif - endif -c - enddo - else - if ( iabs(idhep(in1)) .eq. 310 .or. - & iabs(idhep(in1)) .eq. 3122 ) then - numka = numka + 1 -c - pdobs(1) = pdobs(1) + phep(1,in1) - pdobs(2) = pdobs(2) + phep(2,in1) - pdobs(3) = pdobs(3) + phep(3,in1) -c - elseif ( iabs(idhep(in1)) .eq. 211 .or. - & iabs(idhep(in1)) .eq. 321 .or. - & iabs(idhep(in1)) .eq. 11 .or. - & iabs(idhep(in1)) .eq. 13 .or. - & iabs(idhep(in1)) .eq.2212 ) then - numcha = numcha + 1 -c - if ( iabs(idhep(in1)) .eq. 13 ) then - jmuon = in1 - nmuon = nmuon + 1 - elseif ( iabs(idhep(in1)) .eq. 11 ) then - jelec = in1 - nelec = nelec + 1 - endif -c - pdobs(1) = pdobs(1) + phep(1,in1) - pdobs(2) = pdobs(2) + phep(2,in1) - pdobs(3) = pdobs(3) + phep(3,in1) -c - idobs(numcha) = in1 -c - elseif ( iabs(idhep(in1)) .eq. 111 ) then - numpi0 = numpi0 + 1 - elseif ( iabs(idhep(in1)) .eq. 12 .or. - & iabs(idhep(in1)) .eq. 14 ) then - numneu = numneu + 1 - else - numcha = 99 - endif - endif -c - enddo -* - if ( cufdcp(7) .gt. 0.d0 .and. - & ( numcha .eq. 2 .and. numka .eq. 0 .and. - & numpi0 .le. 1 .and. numneu .le. 1 ) ) then -c -c D0 -> ( 2 charged tracks and 0 K0s ) -c and 0 or 1 neutral pion -c and 0 or 1 neutrino -c - pt2 = pdobs(1)**2+pdobs(2)**2 - ptdobs = sqrt(pt2) - pm2 = pt2+pdobs(3)**2 - pm = sqrt(pm2) - ct = 0.d0 - if ( pm .ne. 0.d0 ) ct = pdobs(3) / pm - th = acos(ct) - arge = tan(th*0.5d0) - if ( arge .le. 0.d0 ) then - etdobs = 10.d0 - if ( pdobs(3) .lt. 0.d0 ) etdobs = -10.d0 - goto 333 - endif - etdobs = -log(arge) - 333 continue -c - if ( ptdobs .ge. cufdcp(7) .and. - & abs(etdobs) .le. etamax ) then -c - pdobs(4) = sqrt( phep(1,idobs(1))**2 + phep(2,idobs(1))**2 - & + phep(3,idobs(1))**2 + sqmka ) - & + sqrt( phep(1,idobs(2))**2 + phep(2,idobs(2))**2 - & + phep(3,idobs(2))**2 + sqmpi ) -c - pmobs4 = sqrt(pdobs(4)**2-pm2) -c - pdobs(5) = sqrt( phep(1,idobs(2))**2 + phep(2,idobs(2))**2 - & + phep(3,idobs(2))**2 + sqmka ) - & + sqrt( phep(1,idobs(1))**2 + phep(2,idobs(1))**2 - & + phep(3,idobs(1))**2 + sqmpi ) -c - pmobs5 = sqrt(pdobs(5)**2-pm2) -c - if ( pmobs4 .ge. rd0min .or. pmobs5 .ge. rd0min ) then -c -c D0 -> 2 charged tracks + 0/1 pi0 + 0/1 nuetrino -c - iret = 0 -c - if ( idebug .eq. 1 ) then - print * - print *, - &' *** uf_ChHAdr *** : D0 -> 2 charged tracks' - &,' + 0/1 pi0 + 0/1 nuetrino ' - print * - print *,' j, jj1, jj2 =',j,jj1,jj2 - print *,' numcha, numka, numpi0, numneu =', - & numcha, numka, numpi0, numneu - print *,' ptdobs, etdobs, pmobs4, pmobs5 =', - & ptdobs, etdobs, pmobs4, pmobs5 - print * - call pylist(1) - endif -c - Return -c - endif - endif - endif -* - if ( nmuon .eq. 1 .and. cufdcp(8) .gt. 0.d0 ) then -c - call pteta(jmuon,ptmuon,etmuon) -* - if ( ptmuon .ge. pt_trig1 .and. - & abs(etmuon) .le. etha_trig1 .and. - & ptd .ge. cufdcp(8) ) then -c -c D0 -> muon + X -c - iret = 0 -c - if ( idebug .eq. 1 ) then - print * - print *, - &' *** uf_ChHAdr *** : D0 -> muon + X' - print * - print *,' j, jj1, jj2 =',j,jj1,jj2 - print *,' numcha, numka, numpi0, numneu =', - & numcha, numka, numpi0, numneu - print *,' nmuon, jmuon =',nmuon,jmuon - print *,' ptmuon, etmuon =',ptmuon,etmuon - print * - call pylist(1) - endif -c - Return -c - endif - endif -* - if ( nelec .eq. 1 .and. cufdcp(9) .gt. 0.d0 ) then -c - call pteta(jelec,ptelec,etelec) -* - if ( ptelec .ge. pt_trig1 .and. - & abs(etelec) .le. etha_trig1 .and. - & ptd .ge. cufdcp(9) ) then -c -c D0 -> electron + X -c - iret = 0 -c - if ( idebug .eq. 1 ) then - print * - print *, - &' *** uf_ChHAdr *** : D0 -> electron + X' - print * - print *,' j, jj1, jj2 =',j,jj1,jj2 - print *,' numcha, numka, numpi0, numneu =', - & numcha, numka, numpi0, numneu - print *,' nelec, jelec =',nelec,jelec - print *,' ptelec, etelec =',ptelec,etelec - print * - call pylist(1) - endif -c - Return -c - endif - endif -* - endif -* - 2221 continue - 2222 enddo - -c evaluation - - 1000 continue -c -cc if(iret.ne.0) then -c debug output -cc if(idebug.eq.1) -cc + print *, 'uf_ChHadr: event rejected' -cc endif - - - return -* - END ! USER_FINSEL - - subroutine pteta(j,pt,et) -c - Implicit None -* -C...HEPEVT commonblock. -c - Integer NMXHEP - PARAMETER (NMXHEP=10000) - COMMON/HEPEVT/NEVHEP,NHEP,ISTHEP(NMXHEP),IDHEP(NMXHEP), - &JMOHEP(2,NMXHEP),JDAHEP(2,NMXHEP),PHEP(5,NMXHEP),VHEP(4,NMXHEP) - DOUBLE PRECISION PHEP,VHEP - Integer NEVHEP,NHEP,ISTHEP,IDHEP,JMOHEP,JDAHEP - SAVE /HEPEVT/ -c - Double Precision pt, pt2, pm, et , ct, th, arge -c - Integer j -c - pt2 = phep(1,j)**2+phep(2,j)**2 - pt = sqrt(pt2) - pm = sqrt(pt2+phep(3,j)**2) - ct = 0.d0 - if ( pm .ne. 0.d0 ) ct = phep(3,j) / pm - th = acos(ct) - arge = tan(th*0.5d0) - if ( arge .gt. 0.d0 ) then - et = -log(arge) - else - if ( phep(3,j) .lt. 0.d0 ) then - et = -100.d0 - else - et = 100.d0 - endif - endif -c - end diff --git a/Generators/PythiaB/src/uf_DK1.F b/Generators/PythiaB/src/uf_DK1.F deleted file mode 100644 index 1836b8f4546ace48248684c63d4da97bdc62cd14..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/src/uf_DK1.F +++ /dev/null @@ -1,186 +0,0 @@ -*CMZ : -*-- Author : Sagi Ben-Ami 2006-05-15 - SUBROUTINE uf_DK1(IRET) -* * -*----------------------------------------------------------------------* -* * -* Name : uf_BBbarmu * -* (module) * -* * -*Description :B0->D0 K* ; D0->K+ Pi- ; K*->K+ Pi- (and conjugate) * -* Muon included with Pt cut 6 Gev * -* Final state Particles with Pt cut of 0.5 Gev * -* Arguments : IRET (in/out) accepting(0)/rejecting(1) event * -* * -* * -* Author : Yoram Rozen * -* Sagi Ben-Ami Date : 2006-05-29 * -* sagiph@tx.technion.ac.il * -* * -* Last modifications : * -* Sagi Ben-Ami Date :2006-11-05 * -* * -* Keywords : * -* [keywords] * -*----------------------------------------------------------------------* -* -*+CDE, TYPING. -C ----------- end CDE -------------------------------------------------- -* -*KEEP,DOUB. -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) -c INTEGER PYK,PYCHGE,PYCOMP,Bcandidate1,Bcandidate2,Bcandidate3,Bcandidate4,stFlag,aflag,counter - INTEGER Bcandidate1,stFlag,GenerationCounter -*KEEP,LUJETS. - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) -*KEEP,LUDAT1. - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) -*KEEP,LUDAT2. - COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) -*KEEP,PYPARS. - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) -*KEEP,PYINT1. - COMMON/PYINT1/MINT(400),VINT(400) -*KEEP,PYINT2. - COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2) -*KEEP,PYINT5. - COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3) -*KEEP,PYUPPR. - COMMON/PYUPPR/NUP,KUP(20,7),NFUP,IFUP(10,2),PUP(20,5),Q2UP(0:10) - -* user finsel decay selection and decay parameters - common /ufdecay/ cufdcp(10),iufdc - save /ufdecay/ - common // GenerationCounter -*KEND. -* SAVE /LUJETS/,/LUDAT1/,/LUDAT2/ - SAVE /PYJETS/,/PYDAT1/,/PYDAT2/ - SAVE /PYPARS/,/PYINT1/,/PYINT2/,/PYINT5/,/PYUPPR/ -*KEEP,BTREE. - common/btree/ntree,tree(4000) - integer tree - SAVE /btree/ -*KEND. -c SAVE IFIRST,IIPRNT - SAVE IFIRST - DATA IFIRST /1/ -c DATA IIPRNT /0/ - -*KEEP,FAMILY. - name_self(I)=K(I,2) - name_selv(I)=abs(K(I,2)) - name_father(I)=K(K(I,3),2) - name_grandpa(I)=K(K(K(I,3),3),2) - name_daughter1(I)=K(K(I,4),2) - name_daughter2(I)=K(K(I,5),2) - - - link_self(I)=I - link_father(I)=K(I,3) - link_grandpa(I)=K(K(I,3),3) - link_daughter1(I)=K(I,4) - link_daughter2(I)=K(I,5) -*KEND. -C ----------- end CDE -------------------------------------------------- - - idebug=1 - - IF(IFIRST.EQ.1) THEN - IFIRST =0 - ENDIF - - if ( iret.eq.1 ) return - - nintree = 0 - -c preset - iret = 1 - bFlag = 0 - MuFlag = 0 -c particle loop -- modify content as needed - do 111 I=1,N - IF(name_selv(I) .eq. 511) then - Bcandidate1 = I - stFlag=0 - if(K(I,5)-K(I,4) .ne. 1) goto 111 - IF(NAME_DAUGHTER1(Bcandidate1)*NAME_DAUGHTER2(Bcandidate1) - + .ne. -131773) goto 111 - IF(ABS(NAME_DAUGHTER1(Bcandidate1)) - & .GT.ABS(NAME_DAUGHTER2(Bcandidate1))) - + THEN - IB0_D0=link_daughter1(Bcandidate1) ! THIS IS THE D - IB0_kStar=link_daughter2(Bcandidate1) - ELSE - IB0_D0=link_daughter2(Bcandidate1) ! THIS IS THE D - IB0_kStar=link_daughter1(Bcandidate1) - ENDIF - IF(abs(K(IB0_D0,5)-K(IB0_D0,4)) .NE. 1) GOTO 111 - IF(abs(K(IB0_kStar,5)-K(IB0_kStar,4)) .NE. 1) GOTO 111 - IF( K(K(IB0_kStar,4),2)*K(K(IB0_kStar,5),2) .ne. -67731) - & GOTO 111 - if( (P(K(IB0_kStar,4),1)**2)+(P(K(IB0_kStar,4),2)**2) .lt. 0.25 - & .or.(P(K(IB0_kStar,5),1)**2)+(P(K(IB0_kStar,5),2)**2) - & .lt. 0.25) then - print *,'failed kStar children: ',P(K(IB0_kStar,4),1),' ', - & P(K(IB0_kStar,4),2) - print *,'failed kStar children: ',P(K(IB0_kStar,5),1),' ', - & P(K(IB0_kStar,5),2) - print *,'kStar children Failed Pt threshold' - goto 111 - endif - IF( K(K(IB0_D0,4),2)*K(K(IB0_D0,5),2) .ne. -67731) GOTO 111 - if( (P(K(IB0_D0,4),1)**2)+(P(K(IB0_D0,4),2)**2) .lt. 0.25 .or. - + (P(K(IB0_D0,5),1)**2)+(P(K(IB0_D0,5),2)**2) .lt. 0.25) then - print *,'failed D0 children: ',P(K(IB0_D0,4),1),' ', - & P(K(IB0_D0,4),2) - print *,'failed D0 children: ',P(K(IB0_D0,5),1),' ' - & ,P(K(IB0_D0,5),2) - print *,'D0 children Failed Pt threshold' - goto 111 - endif - bFlag=1 - MuFlag=0 - endif - 111 CONTINUE - - Do I=1,N - If(ABS(K(I,2)) .eq. 13 .and. - +(P(I,1)**2)+(P(I,2)**2) .gt. 36) then - MuFlag = 1 - GOTO 1000 - endif - enddo - - GOTO 1000 - - - -1000 continue - - if(MuFlag .eq. 0 .and. idebug.gt.1 ) then - GenerationCounter=GenerationCounter+1 - print *,'No Muon, GenerationCounter= ',GenerationCounter - endif - - if(MuFlag .eq. 1 .and. bFlag .eq. 0 .and. idebug.gt.1 ) then - GenerationCounter=GenerationCounter+1 - print *,'No required Topology found, GenerationCounter= ',G - & enerationCounter - endif - - if(MuFlag .eq. 1 .and. bFlag .eq. 1 .and. idebug.gt.0 ) then - iret=0 - GenerationCounter=GenerationCounter+1 - print *,' GenerationCounter= ',GenerationCounter - print *,' Muon Father is ', name_father(I) - print *,' Muon is ', name_selv(I) - endif - - return -* - END - - - ! USER_FINSEa diff --git a/Generators/PythiaB/src/uf_DsPhiX.F b/Generators/PythiaB/src/uf_DsPhiX.F deleted file mode 100644 index 5c8ce69ab8d2e9ab2694ffe9fc010133f3c96c20..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/src/uf_DsPhiX.F +++ /dev/null @@ -1,408 +0,0 @@ -*CMZ : -*-- Author : Wolfgang Walkowiak 2006-04-02 - SUBROUTINE uf_DsPhiX(IRET) -* * -*----------------------------------------------------------------------* -* * -* Name : uf_DsPhiX * -* (module) * -* * -* Description : User subroutine to define requirements for event * -* accepting/rejecting additional or * -* other that in subroutine finsel * -* for Ds(PhiPi)X decays using * -* additional settings from cufdcp(10) array * -* Arguments : IRET (in/out) accepting(0)/rejecting(1) event * -* * -* * -* Author : Wolfgang Walkowiak Date : 2006-04-02 * -* * -* * -* Last modifications : * -* Wolfgang Walkowiak Date : 2006-04-13 * -* Fortran comparisons changed from * -* cufdcp(i).eq.1.0 to cufdcp(i).gt.0.5 * -* for additional safety. * -* Wolfgang Walkowiak Date : 2006-09-05 * -* Small bug in the debug output (cufdcp(1)) fixed. * -* Wolfgang Walkowiak Date : 2006-12-11 * -* Added support for B0->D-(PhiPi)Pi and conjugate. * -* * -* Keywords : * -* [keywords] * -* -* $Id: uf_DsPhiX.F,v 1.4 2007-03-01 17:13:19 msmizans Exp $ -* -*----------------------------------------------------------------------* -* -*+CDE, TYPING. -C ----------- end CDE -------------------------------------------------- -* -*KEEP,DOUB. -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) -c INTEGER PYK,PYCHGE,PYCOMP -*KEEP,LUJETS. - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) -*KEEP,LUDAT1. - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) -*KEEP,LUDAT2. - COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) -*KEEP,PYPARS. - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) -*KEEP,PYINT1. - COMMON/PYINT1/MINT(400),VINT(400) -*KEEP,PYINT2. - COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2) -*KEEP,PYINT5. - COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3) -*KEEP,PYUPPR. - COMMON/PYUPPR/NUP,KUP(20,7),NFUP,IFUP(10,2),PUP(20,5),Q2UP(0:10) - -* user finsel decay selection and decay parameters - common /ufdecay/ cufdcp(10),iufdc - save /ufdecay/ - -*KEND. -* SAVE /LUJETS/,/LUDAT1/,/LUDAT2/ - SAVE /PYJETS/,/PYDAT1/,/PYDAT2/ - SAVE /PYPARS/,/PYINT1/,/PYINT2/,/PYINT5/,/PYUPPR/ -*KEEP,BTREE. - common/btree/ntree,tree(4000) - integer tree - SAVE /btree/ -*KEND. -c SAVE IFIRST,IIPRNT - SAVE IFIRST - DATA IFIRST /1/ -c DATA IIPRNT /0/ - -*KEEP,FAMILY. - name_self(I)=K(I,2) - name_selv(I)=abs(K(I,2)) - name_father(I)=K(K(I,3),2) - name_grandpa(I)=K(K(K(I,3),3),2) - name_daughter1(I)=K(K(I,4),2) - name_daughter2(I)=K(K(I,5),2) - - link_self(I)=I - link_father(I)=K(I,3) - link_grandpa(I)=K(K(I,3),3) - link_daughter1(I)=K(I,4) - link_daughter2(I)=K(I,5) -*KEND. -C ----------- end CDE -------------------------------------------------- - - idebug=0 - - IF(IFIRST.EQ.1) THEN - IFIRST =0 - ENDIF - -c return immediately if already rejected - if ( iret.eq.1 ) return - -c -c Add your decay selection here. -c Set iret to 0 (acception) or 1 (rejection) per event. -c -c Parameters: 0 (off) / 1 (on) -c cufdcp(1) : PhiKK decay -- Phi -> K+K- -c cufdcp(2) : DsPhi decay -- Ds*- -> Ds-X, Ds- -> Phi pi-, Phi -> K+K- -c cufdcp(3) : A1RhoPi decay -- a1 -> RhoPi -c cufdcp(4) : RhoPiPi decay -- Rho -> Pi+Pi -c -c -c - -c some counting - nintree = 0 -c - iret_phi = 0 - iret_dsphi = 0 - iret_a1 = 0 - iret_ro = 0 - if ( cufdcp(1).gt.0.5 ) iret_phi = 1 - if ( cufdcp(2).gt.0.5 ) iret_dsphi = 1 - if ( cufdcp(3).gt.0.5 ) iret_a1 = 1 - if ( cufdcp(4).gt.0.5 ) iret_ro = 1 - - if(idebug.eq.1) - + print *,'USER_FINSEL: BEGINNING' - - - do I=1,N - - if (idebug.eq.1) then - print *,'USER_FINSEL: part',I, - + link_father(I), tree(I), - + name_self(I), name_father(I) - endif - - if(tree(I).eq.1) then - if(idebug.eq.1) then - nintree = nintree+1 - print *,'USER_FINSEL: tree',name_self(I) - endif - -c a1 -> RhoPi (from B0s->X a1+, B0sbar->X a1- -c or B0(bar)->X a1- or B0(bar)->X a1+) - if ( iret_a1.eq.1 ) then - if ( ( name_self(I).eq.20213 .and. - + (name_father(I).eq.531 .or. - + abs(name_father(I)).eq.511) ) .or. - + (name_self(I).eq.-20213 .and. - + (name_father(I).eq.-531 .or. - + abs(name_father(I)).eq.511) ) ) then - num_daugh=abs(k(I,5)-k(I,4))+1 - if(k(I,4).eq.0) num_daugh=0 - if(idebug.eq.1) - + print *, 'USER_FINSEL: a1+/- daughters', - + name_self(I), num_daugh, ':', - + k(k(I,4),2), k(k(I,5),2) - if(num_daugh.ne.2) then - iret=1 - if(idebug.eq.1) - + print *, - + 'USER_FINSEL: a1+/- not into two daughters', - + name_self(I) - else - if((name_daughter1(I).eq.113 .and. - + abs(name_daughter2(I)).eq.211 ) .or. - + (abs(name_daughter1(I)).eq.211 .and. - + name_daughter2(I).eq.113 ) ) then - iret_a1=0 - if(idebug.eq.1) - + print *, - + 'USER_FINSEL: a1+/- ->ro0 pi+/- in Bs', - + name_self(I) - else - iret=1 - if(idebug.eq.1) - + print *, - + 'USER_FINSEL: no ro0 pi+/- decay for a1+/-' - + ,name_self(I) - endif - endif - endif - endif - - if (iret.eq.1) go to 2000 - -c Rho -> Pi+Pi- (from B0s->X a1+, B0sbar->X a1- -c or B0(bar)->X a1- or B0(bar)->X a1+) - - if ( iret_ro.eq.1 ) then - if ( name_self(I).eq.113 .and. - + ( ( name_father(I).eq.20213 .and. - + ( name_grandpa(I).eq.531 .or. - + abs(name_grandpa(I)).eq.511 ) ) .or. - + ( ( name_father(I).eq.-20213 .and. - + ( name_grandpa(I).eq.-531 .or. - + abs(name_grandpa(I)).eq.511 ) ) ) ) ) then - - num_daugh=abs(k(I,5)-k(I,4))+1 - if(k(I,4).eq.0) num_daugh=0 - if(num_daugh.ne.2) then - iret=1 - if(idebug.eq.1) - + print *, - + 'USER_FINSEL: ro0 not into two daughters', - + name_self(I) - else - if(abs(name_daughter1(I)).ne.211 .or. - + abs(name_daughter2(I)).ne.211 ) then - iret=1 - if(idebug.eq.1) - + print *, - + 'USER_FINSEL: no pi+ pi- decay for ro', - + name_self(I) - else - iret_ro=0 - if(idebug.eq.1) - + print *, 'USER_FINSEL: ro0 -> pi+ pi-', - + name_self(I) - endif - endif - endif - endif - - if(iret.eq.1) go to 2000 - -c Phi -> K+K- ((from B0s, B0bar or B-) or (from B0sbar, B0 or B+) -c or (from B0->D-X) or (B0bar->D+X)) - if ( iret_phi.eq.1 ) then - if (name_self(I).eq.333 .and. ( - + ( name_father(I).eq.-431 .and. - + ( name_grandpa(I).eq.531 .or. - + name_grandpa(I).eq.-511 .or. - + name_grandpa(I).eq.-521 ) ) .or. - + ( name_father(I).eq.+431 .and. - + ( name_grandpa(I).eq.-531 .or. - + name_grandpa(I).eq.+511 .or. - + name_grandpa(I).eq.+521 ) ) .or. - + ( name_father(I).eq.-411 .and. - + name_grandpa(I).eq.+511 ) .or. - + ( name_father(I).eq.+411 .and. - + name_grandpa(I).eq.-511 ) ) ) then - - num_daugh=abs(k(I,5)-k(I,4))+1 - if(k(I,4).eq.0) num_daugh=0 - if(num_daugh.ne.2) then - iret=1 - if(idebug.eq.1) - + print *, - + 'USER_FINSEL: phi not into two daughters', - + name_self(I) - else - if(abs(name_daughter1(I)).ne.321 .or. - + abs(name_daughter2(I)).ne.321 ) then - iret=1 - if(idebug.eq.1) - + print *, - + 'USER_FINSEL: no K+ K- decay for phi', - + name_self(I) - else - iret_phi=0 - if(idebug.eq.1) - + print *, 'USER_FINSEL: phi--> K+ K- ', - + name_self(I) - endif - endif - endif - endif - - -c Ds*- -> Ds-X, Ds- -> Phi pi-, Phi -> K+K- -c ((from B0s, B0bar or B-) or (from B0sbar, B0 or B+)) - if ( iret_dsphi.eq.1 ) then - if( ( name_self(I).eq.-431 .and. - + name_father(I).eq.-433 .and. - + ( name_grandpa(I).eq.+531 .or. - + name_grandpa(I).eq.-511 .or. - + name_grandpa(I).eq.-521 ) ) .or. - + ( name_self(I).eq.+431 .and. - + name_father(I).eq.+433 .and. - + ( name_grandpa(I).eq.-531 .or. - + name_grandpa(I).eq.+511 .or. - + name_grandpa(I).eq.+521 ) ) - + ) then - - num_daugh=abs(k(I,5)-k(I,4))+1 - if(k(I,4).eq.0) num_daugh=0 - if(num_daugh.ne.2) then - iret=1 - if(idebug.eq.1) - + print *, - + 'USER_FINSEL: ds not into two daughters', - + name_self(I) - else - iddau = -1 - iret=1 - if ( name_daughter1(I).eq. 333 .and. - + ( ( name_daughter2(I).eq.-211 .and. - + name_self(I).eq.-431) .or. - + ( name_daughter2(I).eq.+211 .and. - + name_self(I).eq.+431) ) - + ) then - iddau = link_daughter1(I) - iret=0 - endif - if ( ( ( name_daughter1(I).eq.-211 .and. - + name_self(I).eq.-431) .or. - + ( name_daughter1(I).eq.+211 .and. - + name_self(I).eq.+431) ) .and. - + name_daughter2(I).eq. 333 - + ) then - iddau = link_daughter2(I) - iret=0 - endif - if(idebug.eq.1 .and. iret.eq.1) - + print *, - + 'USER_FINSEL: no Phi pi- decay for ds', - + name_self(I), - + name_daughter1(I), name_daughter2(I) - - if ( iret.eq.0 ) then - num_daugh=abs(k(iddau,5)-k(iddau,4))+1 - if(k(iddau,4).eq.0) num_daugh=0 - if(num_daugh.ne.2) then - iret=1 - if(idebug.eq.1) - + print *, - + 'USER_FINSEL: phi not into', - + ' two daughters', - + name_self(iddau), - + name_daughter1(iddau), - + name_daughter2(iddau) - else - if(abs(name_daughter1(iddau)).ne.321 .or. - + abs(name_daughter2(iddau)).ne.321) - + then - iret=1 - if(idebug.eq.1) - + print *, - + 'USER_FINSEL: no K+ K- decay ', - + 'for phi', - + name_self(I) - else - iret_dsphi=0 - if(idebug.eq.1) - + print *, 'USER_FINSEL: ', - + 'Ds-->Phi pi, Phi--> K+ K- ', - + name_self(I) - endif - endif - endif - endif - endif - endif - - if(iret.eq.1) go to 2000 - -c quick exit if all are found - if ( iret_a1.eq.0 .and. iret_ro.eq.0 - + .and. iret_phi.eq.0 - + .and. iret_dsphi.eq.0 ) - + goto 1000 - - endif - enddo - -c evaluation - - 1000 continue - iret=1 - if(iret_a1.ne.0) then - iret=1 - if(idebug.eq.1) - + print *, 'USER_FINSEL: event rejected, a1+ flag' - elseif(iret_ro.ne.0) then - iret=1 - if(idebug.eq.1) - + print *, 'USER_FINSEL: event rejected, ro0 flag' - elseif(iret_phi.ne.0) then - iret=1 - if(idebug.eq.1) - + print *, 'USER_FINSEL: event rejected, phi flag' - elseif(iret_dsphi.ne.0) then - iret=1 - if(idebug.eq.1) - + print *, 'USER_FINSEL: event rejected, dsphi flag' - else - iret=0 - endif - - 2000 continue - -c debug output - if (idebug.eq.1) - + print *, - + 'USER_FINSEL: iPhiKK, iDsPhi, iA1RhoPi, iRhoPiPi, ', - + 'N, nintree: ', - + cufdcp(1),cufdcp(2),cufdcp(3),cufdcp(4),N,nintree - - return -* - END ! USER_FINSEL diff --git a/Generators/PythiaB/src/uf_GammaMuMu.F b/Generators/PythiaB/src/uf_GammaMuMu.F deleted file mode 100644 index e19a172163a22890d06f378a6fac078cc2e4103f..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/src/uf_GammaMuMu.F +++ /dev/null @@ -1,193 +0,0 @@ - SUBROUTINE uf_GammaMuMu(IRET) -* * -*----------------------------------------------------------------------* -* * -* Name : uf_GammaMuMu * -* (module) * -* * -* Description : User subroutine to define requirements for event * -* accepting/rejecting additional or * -* other that in subroutine finsel * -* PERFORM decay Bs->gammaMuMu * -* -* Arguments : IRET (in/out) accepting(0)/rejecting(1) event * -* * -* * -* Author : Maria Smizanska Date : 06/10/1996 * -* * -* * -* Last modifications : * -* N.Nikitine Date : 01/11/2005 * -* S.Sivoklokov 01/09/2006 * -* N.Nikitine 16/05/2007 * -* Keywords : the decay B^0_s\to\gamma\mu^+\mu^- * -*----------------------------------------------------------------------* -* -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) -c INTEGER PYK,PYCHGE,PYCOMP - INTEGER PYCOMP - - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) - COMMON/PYINT1/MINT(400),VINT(400) - COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2) - COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3) - COMMON/PYUPPR/NUP,KUP(20,7),NFUP,IFUP(10,2),PUP(20,5),Q2UP(0:10) -* user finsel decay selection and decay parameters - common /ufdecay/ cufdcp(10),iufdc - save /ufdecay/ -c Parameters: -c cufdcp( 1) : KEY_L1 (YES/NO) -c cufdcp( 2) : pt_trig1 -c cufdcp( 3) : etha_trig1 -c cufdcp( 4) : KEY_L2 -c cufdcp( 5) : pt_trig2 -c cufdcp( 6) : etha_trig2 -c cufdcp( 7) : -c cufdcp( 8) : -c cufdcp( 9) : -c cufdcp(10) : -* S.Sivoklokov: a trick to emulate Lvl1,Lvl2 here (trig1 and trig2.F not used) -* LVL1 muon cuts -* common/lvl1/tr1,pt_trig1, etha_trig1 - common/trg1/i_muon_trig1 -* SAVE/lvl1/ - SAVE/trg1/ -* LVL2 muon cut and electron tag cut -* common/lvl2/tr2,type,pt_trig2, etha_trig2 - common/trg2/i_muon_trig2,i_ele_trig2 -* SAVE/lvl2/ - SAVE/trg2/ - - integer tree - COMMON/btree/ntree,tree(4000) -c......My COMMON blocs - COMMON /nik1/ n_model, n_res_swch, n_ias, n_Nf - COMMON /nik2/ n_M1, n_M2, n_mt, n_Mw, n_ml - - SAVE /PYJETS/,/PYDAT1/,/PYDAT2/ - SAVE /PYPARS/,/PYINT1/,/PYINT2/,/PYINT5/,/PYUPPR/ - SAVE /btree/ - SAVE /nik1/,/nik2/ - -c DATA IFIRST /1/ -c DATA IIPRNT /0/ -c SAVE IFIRST,IIPRNT -c......The COMMON blocks parameters - integer n_model, n_res_swch, n_ias, n_Nf - real n_M1, n_M2, n_mt, n_Mw, n_ml - -c integer nbm, ikf, imf, decflag - integer nbm, ikf, decflag - - idebug = 0 - i_muon_trig1=0 - i_muon_trig2=0 - pt_L1 = cufdcp(2) - pt_L2 = cufdcp(5) - eta_L1 = cufdcp(3) - eta_L2 = cufdcp(6) - if(idebug.eq.1) print *,'uf_PhiMuMu: LVL1:pt_trig1 etha_trig1', - # pt_L1,eta_L1 - -c......Read the integer parameters - n_model=1 - n_res_swch=0 - n_ias=1 - n_Nf=5 -c print *,' model =',n_model,' res_swch =',n_res_swch, -c #' ias =',n_ias,' Nf =', n_Nf - -c......to read the meson mass M1 and energy cut of foton M2 - PMAS(PYCOMP(511),1)=5.28 ! Need for correct ff calculations - PMAS(PYCOMP(531),1)=5.37 ! Need for correct ff calculations - n_M1=PMAS(PYCOMP(531),1) ! for B^0_s - n_M2=0.08 ! cut of the \gamma - energy at ATLAS -c print *,' M1 =',n_M1,' M2 =',n_M2 - -c......to read the leptonic mass: ml - n_ml=PMAS(PYCOMP(13),1) -c print *,' ml =', n_ml - -c......to read the mass: of t-quark and W-boson - n_mt=PMAS(PYCOMP(6),1) - n_Mw=PMAS(PYCOMP(24),1) -c print *,' mt =', n_mt,' Mw =', n_Mw - - nbm = 0 ! the number of B^0_s-meson decays in event - - do ikf=1,N -c print *, N, ' k(',ikf,',2) =',k(ikf,2),' p(',ikf,',4) =',p(ikf,4) - if(k(ikf,2).eq.531) then -c..........For B_s\to\gamma\mu^+\mu^- decay -c .decflag=1*22*13*(-13)=-3718 - decflag=1 - do ijkf=k(jkf,4),k(jkf,5) - decflag=decflag*k(ijkf,2) - enddo -c print *, jkf, ' decflag =', decflag - - if((k(jkf,5)-k(jkf,4)).eq.2.AND. - # abs(k(k(jkf,4)+1,2)).eq.13.AND. - # decflag.eq.(-3718)) then - nbm = nbm+1 -c print *,' call MATRIX_and_KINEMATICS_GMM' - call MATRIX_and_KINEMATICS_GMM(ikf) - endif - endif ! if(k(ikf,2).eq.531) ... - enddo ! do ikf=1,N - - iret=1 -c if(nbm.GT.0) then -c iret=0 - if(nbm.LE.0) return - iret = 0 -* S.Sivoklokov L1 and L2 emulation: - if(cufdcp(1).gt.0) then - iret = 1 - do I=1,N - if(IABS(K(I,2)).eq.13) then - PT = DSQRT(P(I,1)**2+P(I,2)**2) - TH = DACOS(P(I,3)/DSQRT(PT**2+P(I,3)**2)) - ETA = -DLOG(MAX(.0001,DABS(DTAN(.5*TH)))) - if(PT.gt.pt_L1.and.abs(ETA).lt.eta_L1) then - iret=0 - i_muon_trig1=I - endif - endif - enddo - endif - - - if(cufdcp(4).gt.0) then - iret = 1 - if(i_muon_trig1.eq.0) return - do I=1,N - PT = DSQRT(P(I,1)**2+P(I,2)**2) - TH = DACOS(P(I,3)/DSQRT(PT**2+P(I,3)**2)) - ETA = -DLOG(MAX(.0001,DABS(DTAN(.5*TH)))) - - if(IABS(K(I,2)).eq.13.and. - + PT.gt.pt_L2.and. - + (ETA).lt.eta_L2) then - if(I.ne.i_muon_trig1) then - iret=0 - i_muon_trig2 = I - endif - endif - enddo - endif -c endif - if(idebug.eq.2.and.iret.eq.0) then - call pylist(2) - print *,' i_muon_trig1= ',i_muon_trig1,pt_L1 - print *,' i_muon_trig2= ',i_muon_trig2,pt_L2 - endif -c print *,'** Number of B^0_s-mesons: nbm =',nbm, ' **' - return - END ! USER_FINSEL - diff --git a/Generators/PythiaB/src/uf_KstarMuMu.F b/Generators/PythiaB/src/uf_KstarMuMu.F deleted file mode 100644 index f6c574678bf58b69be680491f5152f51aaadb280..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/src/uf_KstarMuMu.F +++ /dev/null @@ -1,204 +0,0 @@ - SUBROUTINE uf_KstarMuMu(IRET) -* * -*----------------------------------------------------------------------* -* * -* Name : USER_FINSEL * -* (module) * -* * -* Description : User subroutine to define requirements for event * -* accepting/rejecting additional or * -* other that in subroutine finsel * -* Arguments : IRET (in/out) accepting(0)/rejecting(1) event * -* * -* * -* Author : Maria Smizanska Date : 06/10/1996 * -* * -* * -* Last modifications : * -* Nikolai Nikitine Date : 15/10/2006 * -* S.Sivoklokov 01/09/2006 * -* * -* Keywords : * -* For the decay B^0_d\to (K^{*0}\to K^+\pi^-)\mu^+\mu^- * -*----------------------------------------------------------------------* -* -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) -c INTEGER PYK,PYCHGE,PYCOMP - INTEGER PYCOMP - - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) - COMMON/PYINT1/MINT(400),VINT(400) - COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2) - COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3) - COMMON/PYUPPR/NUP,KUP(20,7),NFUP,IFUP(10,2),PUP(20,5),Q2UP(0:10) -* user finsel decay selection and decay parameters - common /ufdecay/ cufdcp(10),iufdc - save /ufdecay/ -c Parameters: -c cufdcp( 1) : KEY_L1 (YES/NO) -c cufdcp( 2) : pt_trig1 -c cufdcp( 3) : etha_trig1 -c cufdcp( 4) : KEY_L2 -c cufdcp( 5) : pt_trig2 -c cufdcp( 6) : etha_trig2 -c cufdcp( 7) : -c cufdcp( 8) : -c cufdcp( 9) : -c cufdcp(10) : -* S.Sivoklokov: a trick to emulate Lvl1,Lvl2 here (trig1 and trig2.F not used) -* LVL1 muon cuts -* common/lvl1/tr1,pt_trig1, etha_trig1 - common/trg1/i_muon_trig1 -* SAVE/lvl1/ - SAVE/trg1/ -* LVL2 muon cut and electron tag cut -* common/lvl2/tr2,type,pt_trig2, etha_trig2 - common/trg2/i_muon_trig2,i_ele_trig2 -* SAVE/lvl2/ - SAVE/trg2/ - - integer tree - COMMON/btree/ntree,tree(4000) -c......My COMMON blocs - COMMON /nik1/ n_model, n_res_swch, n_ias, n_Nf - COMMON /nik2/ n_M1, n_M2, n_mt, n_Mw, n_ml - - SAVE /PYJETS/,/PYDAT1/,/PYDAT2/ - SAVE /PYPARS/,/PYINT1/,/PYINT2/,/PYINT5/,/PYUPPR/ - SAVE /btree/ - SAVE /nik1/,/nik2/ - -c DATA IFIRST /1/ -c DATA IIPRNT /0/ -c SAVE IFIRST,IIPRNT - -C ----------- end CDE -------------------------------------------------- - -c......The COMMON blocs parameters - integer n_model, n_res_swch, n_ias, n_Nf - real n_M1, n_M2, n_mt, n_Mw, n_ml - - integer nbm, nmup, nmum, ikf - - idebug = 0 - i_muon_trig1=0 - i_muon_trig2=0 - pt_L1 = cufdcp(2) - pt_L2 = cufdcp(5) - eta_L1 = cufdcp(3) - eta_L2 = cufdcp(6) - if(idebug.eq.1) print *,'uf_KstarMuMu: LVL1:pt_trig1 etha_trig1', - + pt_L1,eta_L1 - - -c PRINT *,'-------- MSTP(171,172= ',MSTP(171),MSTP(172) -c PRINT *,'-------- VINT 1,3,4= ',VINT(1),VINT(3),VINT(4) - - -c......Read the integer parameters - n_model=1 - n_res_swch=0 - n_ias=1 - n_Nf=5 -c print *,' model =',n_model,' res_swch =',n_res_swch, -c #' ias =',n_ias,' Nf =', n_Nf - -c......to read the meson masses: M1 and M2 - n_M1=PMAS(PYCOMP(511),1) - n_M2=PMAS(PYCOMP(313),1) -c print *,' M1 =',n_M1,' M2 =',n_M2 - -c......to read the leptonic mass: ml - n_ml=PMAS(PYCOMP(13),1) -c print *,' ml =', n_ml - -c......to read the mass: of t-quark and W-boson - n_mt=PMAS(PYCOMP(6),1) - n_Mw=PMAS(PYCOMP(24),1) -c print *,' mt =', n_mt,' Mw =', n_Mw - - - nmup=0 ! the number of \mu^+ in event - nmum=0 ! the number of \mu^- in event - nbm = 0 ! the number of B-mesons in event - - kfKst=313 ! KF - code for K^{*0} - kfmum= 13 ! KF - code for \mu^- - kfmup=-13 ! KF - code for \mu^+ - - do ikf=1,N -c print *, N, ' k(',ikf,',2) =',k(ikf,2),' p(',ikf,',4) =',p(ikf,4) - if(p(1,4).GT.8000.D0.OR.p(2,4).GT.8000.D0) then - call pylist(1) - iret=1 - return - endif - if(k(ikf,2).eq.511) then - do imf=k(ikf,4),k(ikf,5) -c print *, imf, ' k(',imf,',2) =',k(imf,2) - if(k(imf,2).eq.313) then - nbm = nbm+1 -c print *,' call MATRIX_and_KINEMATICS' - call MATRIX_and_KINEMATICS_KstMuMu (ikf) - endif - enddo - endif - enddo - - iret=1 -c if(nbm.GT.0) then -c iret=0 -c endif - if(nbm.LE.0) return - - iret = 0 -* S.Sivoklokov L1 and L2 emulation: - if(cufdcp(1).gt.0) then - iret = 1 - do I=1,N - if(IABS(K(I,2)).eq.13) then - PT = DSQRT(P(I,1)**2+P(I,2)**2) - TH = DACOS(P(I,3)/DSQRT(PT**2+P(I,3)**2)) - ETA = -DLOG(MAX(.0001,DABS(DTAN(.5*TH)))) - if(PT.gt.pt_L1.and.abs(ETA).lt.eta_L1) then - iret=0 - i_muon_trig1=I - endif - endif - enddo - endif - - - if(cufdcp(4).gt.0) then - iret = 1 - if(i_muon_trig1.eq.0) return - do I=1,N - PT = DSQRT(P(I,1)**2+P(I,2)**2) - TH = DACOS(P(I,3)/DSQRT(PT**2+P(I,3)**2)) - ETA = -DLOG(MAX(.0001,DABS(DTAN(.5*TH)))) - - if(IABS(K(I,2)).eq.13.and. - + PT.gt.pt_L2.and. - + (ETA).lt.eta_L2) then - if(I.ne.i_muon_trig1) then - iret=0 - i_muon_trig2 = I - endif - endif - enddo - endif - if(idebug.eq.2.and.iret.eq.0) call pylist(2) - -c print *,'** nbm =',nbm,' nmup =',nmup,' nmum =',nmum, -c #' **' -c print *,'** **' -c print *,'******************************************************' - return -* - END ! USER_FINSEL - diff --git a/Generators/PythiaB/src/uf_LambdabJpsimumuLambda.F b/Generators/PythiaB/src/uf_LambdabJpsimumuLambda.F deleted file mode 100644 index e9df2eb1093fa9f5a395ec935feae654103e34f9..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/src/uf_LambdabJpsimumuLambda.F +++ /dev/null @@ -1,166 +0,0 @@ -*CMZ : -*-- Author : Wolfgang Walkowiak 2006-04-02 - SUBROUTINE uf_LambdabJpsimumuLambda(IRET) -* * -*----------------------------------------------------------------------* -* * -* Name : uf_LambdabJpsimumuLambda * -* (module) * -* * -* Description : User subroutine to define requirements for event * -* accepting/rejecting additional or * -* other that in subroutine finsel * -* for Lambdab -> Jpsi Lambda * -* additional settings from cufdcp(10) array * -* Arguments : IRET (in/out) accepting(0)/rejecting(1) event * -* * -* * -* Author : Wolfgang Walkowiak Date : 2006-04-02 * -* * -* * -* Last modifications : * -* Eduard De La Cruz Burelo Date : 2006-04-15 * -* * -* Keywords : * -* cufdcp(1) defined as the minimum pt of Lambda_b's to be -* accepted -* cufdcp(2) defined as the maximum abs(eta) of the Lambda_b's -* to be accepted -*----------------------------------------------------------------------* -* -*+CDE, TYPING. -C ----------- end CDE -------------------------------------------------- -* -*KEEP,DOUB. -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) -c INTEGER PYK,PYCHGE,PYCOMP -*KEEP,LUJETS. - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) -*KEEP,LUDAT1. - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) -*KEEP,LUDAT2. - COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) -*KEEP,PYPARS. - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) -*KEEP,PYINT1. - COMMON/PYINT1/MINT(400),VINT(400) -*KEEP,PYINT2. - COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2) -*KEEP,PYINT5. - COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3) -*KEEP,PYUPPR. - COMMON/PYUPPR/NUP,KUP(20,7),NFUP,IFUP(10,2),PUP(20,5),Q2UP(0:10) - -* user finsel decay selection and decay parameters - common /ufdecay/ cufdcp(10),iufdc - save /ufdecay/ - -*KEND. -* SAVE /LUJETS/,/LUDAT1/,/LUDAT2/ - SAVE /PYJETS/,/PYDAT1/,/PYDAT2/ - SAVE /PYPARS/,/PYINT1/,/PYINT2/,/PYINT5/,/PYUPPR/ -*KEEP,BTREE. - common/btree/ntree,tree(4000) - integer tree - SAVE /btree/ -*KEND. -c SAVE IFIRST,IIPRNT - SAVE IFIRST - DATA IFIRST /1/ -c DATA IIPRNT /0/ - -*KEEP,FAMILY. - name_self(I)=K(I,2) - name_selv(I)=abs(K(I,2)) - name_father(I)=K(K(I,3),2) - name_grandpa(I)=K(K(K(I,3),3),2) - name_daughter1(I)=K(K(I,4),2) - name_daughter2(I)=K(K(I,5),2) - - link_self(I)=I - link_father(I)=K(I,3) - link_grandpa(I)=K(K(I,3),3) - link_daughter1(I)=K(I,4) - link_daughter2(I)=K(I,5) -*KEND. -C ----------- end CDE -------------------------------------------------- - - idebug=0 - - IF(IFIRST.EQ.1) THEN - IFIRST =0 - ENDIF - -c return immediately if already rejected - if ( iret.eq.1 ) return - -c -c Add your decay selection here. -c Set iret to 0 (acception) or 1 (rejection) per event. -c -c Parameters: 0 (off) / 1 (on) -c cufdcp( 1) : Minimum PT of Lambda b -c cufdcp( 2) : Maximum ETA of Lambda b -c cufdcp( 3) : -c cufdcp( 4) : -c cufdcp( 5) : -c cufdcp( 6) : -c cufdcp( 7) : -c cufdcp( 8) : -c cufdcp( 9) : -c cufdcp(10) : - - PT_MIN = cufdcp(1) - ABSETA_MAX = cufdcp(2) - - -c some counting - nintree = 0 - -c preset - iret = 1 - - if(idebug.eq.1) - + print *,'USER_FINSEL: BEGINNING' - -c particle loop -- modify content as needed - do I=1,N - -c -c accept based on pt and eta cut -- code from Michigan -c - if (name_self(I).eq.5122) then - PT = SQRT(P(I,1)**2+P(I,2)**2) - TH = DACOS(P(I,3)/DSQRT(PT**2+P(I,3)**2)) - ETA = -LOG(MAX(.0001,ABS(TAN(.5*TH)))) -c write(*,*) PT,ETA,PT_MIN,ABSETA_MAX - if (PT.gt.PT_MIN.and.ABS(ETA).lt.ABSETA_MAX) then - iret=0 - endif - endif - - enddo - -c evaluation - - 1000 continue - if(iret.ne.0) then -c debug output - if(idebug.eq.1) - + print *, 'USER_FINSEL: event rejected' - if(idebug.eq.1) - + print *, 'USER_FINSEL: event acepted' - endif - - if(iret.ne.1) then -c debug output - if(idebug.eq.1) - + print *, 'USER_FINSEL: event acepted' - endif - - - return -* - END ! USER_FINSEL diff --git a/Generators/PythiaB/src/uf_LambdabmumuLambda.F b/Generators/PythiaB/src/uf_LambdabmumuLambda.F deleted file mode 100644 index 68ad1ba5d8d588cfd6a141513705fcc575c2dec5..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/src/uf_LambdabmumuLambda.F +++ /dev/null @@ -1,160 +0,0 @@ -*CMZ : -*-- Author : Wolfgang Walkowiak 2006-04-02 - SUBROUTINE uf_LambdabmumuLambda(IRET) -* * -*----------------------------------------------------------------------* -* * -* Name : uf_LambdabmumuLambda * -* (module) * -* * -* Description : User subroutine to define requirements for event * -* accepting/rejecting additional or * -* other that in subroutine finsel * -* for Lambdab mumu Lambda events * -* additional settings from cufdcp(10) array * -* Arguments : IRET (in/out) accepting(0)/rejecting(1) event * -* * -* * -* Author : Wolfgang Walkowiak Date : 2006-04-02 * -* * -* * -* Last modifications : * -* [name] Date : [date] * -* * -* Keywords : * -* [keywords] * -*----------------------------------------------------------------------* -* -*+CDE, TYPING. -C ----------- end CDE -------------------------------------------------- -* -*KEEP,DOUB. -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) -c INTEGER PYK,PYCHGE,PYCOMP -*KEEP,LUJETS. - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) -*KEEP,LUDAT1. - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) -*KEEP,LUDAT2. - COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) -*KEEP,PYPARS. - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) -*KEEP,PYINT1. - COMMON/PYINT1/MINT(400),VINT(400) -*KEEP,PYINT2. - COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2) -*KEEP,PYINT5. - COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3) -*KEEP,PYUPPR. - COMMON/PYUPPR/NUP,KUP(20,7),NFUP,IFUP(10,2),PUP(20,5),Q2UP(0:10) - -* user finsel decay selection and decay parameters - common /ufdecay/ cufdcp(10),iufdc - save /ufdecay/ - -*KEND. -* SAVE /LUJETS/,/LUDAT1/,/LUDAT2/ - SAVE /PYJETS/,/PYDAT1/,/PYDAT2/ - SAVE /PYPARS/,/PYINT1/,/PYINT2/,/PYINT5/,/PYUPPR/ -*KEEP,BTREE. - common/btree/ntree,tree(4000) - integer tree - SAVE /btree/ -*KEND. -c SAVE IFIRST,IIPRNT - SAVE IFIRST - DATA IFIRST /1/ -c DATA IIPRNT /0/ - -*KEEP,FAMILY. - name_self(I)=K(I,2) - name_selv(I)=abs(K(I,2)) - name_father(I)=K(K(I,3),2) - name_grandpa(I)=K(K(K(I,3),3),2) - name_daughter1(I)=K(K(I,4),2) - name_daughter2(I)=K(K(I,5),2) - - link_self(I)=I - link_father(I)=K(I,3) - link_grandpa(I)=K(K(I,3),3) - link_daughter1(I)=K(I,4) - link_daughter2(I)=K(I,5) -*KEND. -C ----------- end CDE -------------------------------------------------- - - idebug=0 - - IF(IFIRST.EQ.1) THEN - IFIRST =0 - ENDIF - -c return immediately if already rejected - if ( iret.eq.1 ) return - -c -c Add your decay selection here. -c Set iret to 0 (acception) or 1 (rejection) per event. -c -c Parameters: 0 (off) / 1 (on) -c cufdcp( 1) : -c cufdcp( 2) : -c cufdcp( 3) : -c cufdcp( 4) : -c cufdcp( 5) : -c cufdcp( 6) : -c cufdcp( 7) : -c cufdcp( 8) : -c cufdcp( 9) : -c cufdcp(10) : - - -c some counting - nintree = 0 - -c preset - iret = 1 - - if(idebug.eq.1) - + print *,'USER_FINSEL: BEGINNING' - - if(idebug.eq.1) - + print *,'Parameter(1) =',cufdcp(1) - -c particle loop -- modify content as needed - do I=1,N - -c if(tree(I).eq.1) then -c -c accept only Lambda_b0 -- code from Pavel R. -c - if(cufdcp(1).eq.0.0.and.name_selv(I).eq.5122) then - if(idebug.eq.1) print *,'USER_FINSEL: ',name_self(I) - iret=0 - endif - if(cufdcp(1).eq.1.0.and.name_self(I).eq.5122) then - if(idebug.eq.1) print *,'USER_FINSEL: ',name_self(I) - iret=0 - endif - if(cufdcp(1).eq.-1.0.and.name_self(I).eq.-5122) then - if(idebug.eq.1) print *,'USER_FINSEL: ',name_self(I) - iret=0 - endif -c endif - - enddo - -c evaluation - - 1000 continue - if(iret.ne.0) then -c debug output - if(idebug.eq.1) - + print *, 'USER_FINSEL: event rejected' - endif - - - return -* - END ! USER_FINSEL diff --git a/Generators/PythiaB/src/uf_PhiMuMu.F b/Generators/PythiaB/src/uf_PhiMuMu.F deleted file mode 100644 index 3757f4855a7529247ebc0967afe147f84dbb8244..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/src/uf_PhiMuMu.F +++ /dev/null @@ -1,200 +0,0 @@ - SUBROUTINE uf_PhiMuMu(IRET) -* * -*----------------------------------------------------------------------* -* * -* Name : USER_FINSEL * -* (module) * -* * -* Description : User subroutine to define requirements for event * -* accepting/rejecting additional or * -* other that in subroutine finsel * -* PERFORM decay Bs->phi(KK)mu+mu- * -* Arguments : IRET (in/out) accepting(0)/rejecting(1) event * -* * -* * -* Author : Maria Smizanska Date : 06/10/1996 * -* * -* * -* Last modifications : * -* Nikolai Nikitine Date : 09/03/2005 * -* S.Sivoklokov 01/09/2006 * -* Keywords : * -* For the decay B^0_s\to (\phi^0\to K^+K^^-)\mu^+\mu^- * -*----------------------------------------------------------------------* -* -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) -c INTEGER PYK,PYCHGE,PYCOMP - INTEGER PYCOMP - - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) - COMMON/PYINT1/MINT(400),VINT(400) - COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2) - COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3) - COMMON/PYUPPR/NUP,KUP(20,7),NFUP,IFUP(10,2),PUP(20,5),Q2UP(0:10) -* user finsel decay selection and decay parameters - common /ufdecay/ cufdcp(10),iufdc - save /ufdecay/ -c Parameters: -c cufdcp( 1) : KEY_L1 (YES/NO) -c cufdcp( 2) : pt_trig1 -c cufdcp( 3) : etha_trig1 -c cufdcp( 4) : KEY_L2 -c cufdcp( 5) : pt_trig2 -c cufdcp( 6) : etha_trig2 -c cufdcp( 7) : -c cufdcp( 8) : -c cufdcp( 9) : -c cufdcp(10) : -* S.Sivoklokov: a trick to emulate Lvl1,Lvl2 here (trig1 and trig2.F not used) -* LVL1 muon cuts -* common/lvl1/tr1,pt_trig1, etha_trig1 - common/trg1/i_muon_trig1 -* SAVE/lvl1/ - SAVE/trg1/ -* LVL2 muon cut and electron tag cut -* common/lvl2/tr2,type,pt_trig2, etha_trig2 - common/trg2/i_muon_trig2,i_ele_trig2 -* SAVE/lvl2/ - SAVE/trg2/ - - - - integer tree - COMMON/btree/ntree,tree(4000) -c......My COMMON blocs - COMMON /nik1/ n_model, n_res_swch, n_ias, n_Nf - COMMON /nik2/ n_M1, n_M2, n_mt, n_Mw, n_ml - - SAVE /PYJETS/,/PYDAT1/,/PYDAT2/ - SAVE /PYPARS/,/PYINT1/,/PYINT2/,/PYINT5/,/PYUPPR/ - SAVE /btree/ - SAVE /nik1/,/nik2/ - -c DATA IFIRST /1/ -c DATA IIPRNT /0/ -c SAVE IFIRST,IIPRNT - -C ----------- end CDE -------------------------------------------------- -c......The COMMON blocs parameters - - integer n_model, n_res_swch, n_ias, n_Nf - real n_M1, n_M2, n_mt, n_Mw, n_ml - - integer nbm, nmup, nmum, ikf, imf - - idebug = 0 - i_muon_trig1=0 - i_muon_trig2=0 - pt_L1 = cufdcp(2) - pt_L2 = cufdcp(5) - eta_L1 = cufdcp(3) - eta_L2 = cufdcp(6) - if(idebug.eq.1) print *,'uf_PhiMuMu: LVL1:pt_trig1 etha_trig1', - + pt_L1,eta_L1 - - - -c......Read the integer parameters - n_model=1 - n_res_swch=0 - n_ias=1 - n_Nf=5 -c print *,' model =',n_model,' res_swch =',n_res_swch, -c #' ias =',n_ias,' Nf =', n_Nf - -c......to read the meson masses: M1 and M2 - n_M1=PMAS(PYCOMP(531),1) - n_M2=PMAS(PYCOMP(333),1) -c print *,' M1 =',n_M1,' M2 =',n_M2 - -c......to read the leptonic mass: ml - n_ml=PMAS(PYCOMP(13),1) -c print *,' ml =', n_ml - -c......to read the mass: of t-quark and W-boson - n_mt=PMAS(PYCOMP(6),1) - n_Mw=PMAS(PYCOMP(24),1) -c print *,' mt =', n_mt,' Mw =', n_Mw - - nmup=0 ! the number of \mu^+ in event - nmum=0 ! the number of \mu^- in event - nbm = 0 ! the number of B^0_s-mesons in event - - kfKst=333 ! KF - code for \phi^0 - kfmum= 13 ! KF - code for \mu^- - kfmup=-13 ! KF - code for \mu^+ - - do ikf=1,N -c print *, N, ' k(',ikf,',2) =',k(ikf,2) - if(k(ikf,2).eq.531) then - do imf=k(ikf,4),k(ikf,5) -c print *, imf,' k(',imf,',2) =',k(imf,2) - if(k(imf,2).eq.333) then - nbm = nbm+1 -c print *,' call MATRIX_and_KINEMATICS' - call MATRIX_and_KINEMATICS_PhiMuMu(ikf) - endif - enddo - if(nbm.EQ.0) then -c print *,'FATAL ERROR in user_finsel.F' -c print *,'Unknown decay channel of B^0_s: ikf =', ikf -c call pylist(2) - endif - endif - - enddo - - iret=1 - if(nbm.LE.0) return - iret = 0 -* S.Sivoklokov L1 and L2 emulation: - if(cufdcp(1).gt.0) then - iret = 1 - do I=1,N - if(IABS(K(I,2)).eq.13) then - PT = DSQRT(P(I,1)**2+P(I,2)**2) - TH = DACOS(P(I,3)/DSQRT(PT**2+P(I,3)**2)) - ETA = -DLOG(MAX(.0001,DABS(DTAN(.5*TH)))) - if(PT.gt.pt_L1.and.abs(ETA).lt.eta_L1) then - iret=0 - i_muon_trig1=I - endif - endif - enddo - endif - - - if(cufdcp(4).gt.0) then - iret = 1 - if(i_muon_trig1.eq.0) return - do I=1,N - PT = DSQRT(P(I,1)**2+P(I,2)**2) - TH = DACOS(P(I,3)/DSQRT(PT**2+P(I,3)**2)) - ETA = -DLOG(MAX(.0001,DABS(DTAN(.5*TH)))) - - if(IABS(K(I,2)).eq.13.and. - + PT.gt.pt_L2.and. - + (ETA).lt.eta_L2) then - if(I.ne.i_muon_trig1) then - iret=0 - i_muon_trig2 = I - endif - endif - enddo - endif - - -c call pylist(2) -c print *,'** nbm =',nbm,' nmup =',nmup,' nmum =',nmum, -c #' **' - if(idebug.eq.2.and.iret.eq.0) call pylist(2) - - return -* - END ! USER_FINSEL - diff --git a/Generators/PythiaB/src/uf_Skeleton.F b/Generators/PythiaB/src/uf_Skeleton.F deleted file mode 100644 index 1e0ea02e55a36b6cc90a90d5ec50810865c04044..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/src/uf_Skeleton.F +++ /dev/null @@ -1,158 +0,0 @@ -*CMZ : -*-- Author : Wolfgang Walkowiak 2006-04-02 - SUBROUTINE uf_Skeleton(IRET) -* * -*----------------------------------------------------------------------* -* * -* Name : uf_Skeleton * -* (module) * -* * -* Description : User subroutine to define requirements for event * -* accepting/rejecting additional or * -* other that in subroutine finsel * -* -- example skeleton -- * -* additional settings from cufdcp(10) array * -* Arguments : IRET (in/out) accepting(0)/rejecting(1) event * -* * -* * -* Author : Wolfgang Walkowiak Date : 2006-04-02 * -* * -* * -* Last modifications : * -* [name] Date : [date] * -* * -* Keywords : * -* [keywords] * -*----------------------------------------------------------------------* -* -*+CDE, TYPING. -C ----------- end CDE -------------------------------------------------- -* -*KEEP,DOUB. -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) -c INTEGER PYK,PYCHGE,PYCOMP -*KEEP,LUJETS. - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) -*KEEP,LUDAT1. - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) -*KEEP,LUDAT2. - COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) -*KEEP,PYPARS. - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) -*KEEP,PYINT1. - COMMON/PYINT1/MINT(400),VINT(400) -*KEEP,PYINT2. - COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2) -*KEEP,PYINT5. - COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3) -*KEEP,PYUPPR. - COMMON/PYUPPR/NUP,KUP(20,7),NFUP,IFUP(10,2),PUP(20,5),Q2UP(0:10) - -* user finsel decay selection and decay parameters - common /ufdecay/ cufdcp(10),iufdc - save /ufdecay/ - -*KEND. -* SAVE /LUJETS/,/LUDAT1/,/LUDAT2/ - SAVE /PYJETS/,/PYDAT1/,/PYDAT2/ - SAVE /PYPARS/,/PYINT1/,/PYINT2/,/PYINT5/,/PYUPPR/ -*KEEP,BTREE. - common/btree/ntree,tree(4000) - integer tree - SAVE /btree/ -*KEND. -c SAVE IFIRST,IIPRNT - SAVE IFIRST - DATA IFIRST /1/ -c DATA IIPRNT /0/ - -*KEEP,FAMILY. - name_self(I)=K(I,2) - name_selv(I)=abs(K(I,2)) - name_father(I)=K(K(I,3),2) - name_grandpa(I)=K(K(K(I,3),3),2) - name_daughter1(I)=K(K(I,4),2) - name_daughter2(I)=K(K(I,5),2) - - link_self(I)=I - link_father(I)=K(I,3) - link_grandpa(I)=K(K(I,3),3) - link_daughter1(I)=K(I,4) - link_daughter2(I)=K(I,5) -*KEND. -C ----------- end CDE -------------------------------------------------- - - idebug=0 - - IF(IFIRST.EQ.1) THEN - IFIRST =0 - ENDIF - -c return immediately if already rejected - if ( iret.eq.1 ) return - -c -c Add your decay selection here. -c Set iret to 0 (acception) or 1 (rejection) per event. -c -c Parameters: 0 (off) / 1 (on) -c cufdcp( 1) : -c cufdcp( 2) : -c cufdcp( 3) : -c cufdcp( 4) : -c cufdcp( 5) : -c cufdcp( 6) : -c cufdcp( 7) : -c cufdcp( 8) : -c cufdcp( 9) : -c cufdcp(10) : - - -c some counting - nintree = 0 - -c preset - iret = 1 - - if(idebug.eq.1) - + print *,'USER_FINSEL: BEGINNING' - -c particle loop -- modify content as needed - do I=1,N - - if (idebug.eq.1) then - print *,'USER_FINSEL: part',I, - + link_father(I), tree(I), - + name_self(I), name_father(I) - endif - - if(tree(I).eq.1) then - if(idebug.eq.1) then - nintree = nintree+1 - print *,'USER_FINSEL: tree',name_self(I) - endif -c -c Add your code here -- for particles in decay tree. -c Set iret accordingly. - - - - - endif - enddo - -c evaluation - - 1000 continue - if(iret.ne.0) then -c debug output - if(idebug.eq.1) - + print *, 'USER_FINSEL: event rejected' - endif - - - return -* - END ! USER_FINSEL diff --git a/Generators/PythiaB/src/uf_bbmumu.F b/Generators/PythiaB/src/uf_bbmumu.F deleted file mode 100644 index 07caef52a718853911a09c04c8829676897bb927..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/src/uf_bbmumu.F +++ /dev/null @@ -1,197 +0,0 @@ -*CMZ : -*-- Author : SERGEY SIVOKLOKOV 2006-04-14 - SUBROUTINE uf_bbmumu(IRET) -* * -*----------------------------------------------------------------------* -* * -* Name : uf_bbmumu * -* (module) * -* * -* Description : User subroutine to define requirements for event * -* accepting/rejecting additional or * -* other that in subroutine finsel * -* accept events with M(mumu)<Mass_cut GeV (8GeV) * -* * -* additional settings from cufdcp(10) array -* cufdcp(1) = lower Mass_cut * -* cufdcp(2) = upper Mass_cut * -* Arguments : IRET (in/out) accepting(0)/rejecting(1) event * -* * -* * -* Author : Sergey Sivoklokov Date : 2006-04-14 * -* * -* * -* Last modifications : * -* [name] Date : [date] * -* * -* Keywords : * -* [keywords] * -*----------------------------------------------------------------------* -* -*+CDE, TYPING. -C ----------- end CDE -------------------------------------------------- -* -*KEEP,DOUB. -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) -c INTEGER PYK,PYCHGE,PYCOMP -*KEEP,LUJETS. - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) -*KEEP,LUDAT1. - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) -*KEEP,LUDAT2. - COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) -*KEEP,PYPARS. - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) -*KEEP,PYINT1. - COMMON/PYINT1/MINT(400),VINT(400) -*KEEP,PYINT2. - COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2) -*KEEP,PYINT5. - COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3) -*KEEP,PYUPPR. - COMMON/PYUPPR/NUP,KUP(20,7),NFUP,IFUP(10,2),PUP(20,5),Q2UP(0:10) - -* user finsel decay selection and decay parameters - common /ufdecay/ cufdcp(10),iufdc - save /ufdecay/ - -*KEND. -* SAVE /LUJETS/,/LUDAT1/,/LUDAT2/ - SAVE /PYJETS/,/PYDAT1/,/PYDAT2/ - SAVE /PYPARS/,/PYINT1/,/PYINT2/,/PYINT5/,/PYUPPR/ -*KEEP,BTREE. - common/btree/ntree,tree(4000) - integer tree - SAVE /btree/ - - Integer Muplus(10),Muminus(10),Nmum,Nmup - - -*KEND. -c SAVE IFIRST,IIPRNT - SAVE IFIRST - DATA IFIRST /1/ -c DATA IIPRNT /0/ - -*KEEP,FAMILY. - name_self(I)=K(I,2) - name_selv(I)=abs(K(I,2)) - name_father(I)=K(K(I,3),2) - name_grandpa(I)=K(K(K(I,3),3),2) - name_daughter1(I)=K(K(I,4),2) - name_daughter2(I)=K(K(I,5),2) - - link_self(I)=I - link_father(I)=K(I,3) - link_grandpa(I)=K(K(I,3),3) - link_daughter1(I)=K(I,4) - link_daughter2(I)=K(I,5) -*KEND. -C ----------- end CDE -------------------------------------------------- - - idebug=0 - - IF(IFIRST.EQ.1) THEN - IFIRST =0 - Print *,'PythiaB/uf_bmumu: lower Mass_cut=cufdcp(1)= ',cufdcp(1) - Print *,'PythiaB/uf_bmumu: upper Mass_cut=cufdcp(2)= ',cufdcp(2) - Print *,'iret = ',iret - ENDIF - -c return immediately if already rejected - if ( iret.eq.1 ) return - -c -c Add your decay selection here. -c Set iret to 0 (acception) or 1 (rejection) per event. -c -c Parameters: 0 (off) / 1 (on) -c cufdcp( 1) : -c cufdcp( 2) : -c cufdcp( 3) : -c cufdcp( 4) : -c cufdcp( 5) : -c cufdcp( 6) : -c cufdcp( 7) : -c cufdcp( 8) : -c cufdcp( 9) : -c cufdcp(10) : - - -c some counting - nintree = 0 - -c preset - iret = 1 - - if(idebug.eq.1) - + print *,'USER_FINSEL: BEGINNING' - Nmum=0 - Nmup=0 -c particle loop -- modify content as needed - do I=1,N - -c if (idebug.eq.1) then -c print *,'USER_FINSEL: part',I, -c + link_father(I), tree(I), -c + name_self(I), name_father(I) -c endif - -c if(tree(I).eq.1) then -c if(idebug.eq.1) then -c nintree = nintree+1 -c print *,'USER_FINSEL: tree',name_self(I) -c endif -c -c Add your code here -- for particles in decay tree. -c Set iret accordingly. -c endif - - if( K(I,2).eq.13 ) then - Nmum = Nmum + 1 - Muminus(Nmum) = i - endif - if( K(I,2).eq.-13 ) then - Nmup = Nmup + 1 - Muplus(Nmup) = i - endif - - enddo - - if(idebug.eq.1) print *,'uf_Bmumu Nmu+, Nmu- = ',Nmup,Nmum - - Do M = 1,Nmup - Do L = 1,Nmum - I = Muplus(M) - J = Muminus(L) - - Py = P(i,2)+P(j,2) - Pz = P(i,3)+P(j,3) - E = P(i,4)+P(j,4) - Emm = 0. - Emm2 = E*E - Px*Px - Py*Py - Pz*Pz - pti = dsqrt(P(i,1)*P(i,1)+P(i,2)*P(i,2)) - ptj = dsqrt(P(j,1)*P(j,1)+P(j,2)*P(j,2)) - if(Emm2.gt.0) Emm = dsqrt(Emm2) -C------------------------------------------------------------- - If(idebug.eq.1) print *,' User Finsel: Emm,PTi,PTj= ',Emm,pTi,pTj - if((Emm.gt.cufdcp(1)).and.(Emm.lt.cufdcp(2))) iret=0 -c x ((PTi.gt.4.and.ptj.gt.6).or.(ptj.gt.4.and.pti.gt.6))) iret = 0 -C------------------------------------------------------------- - enddo - enddo -c evaluation - - 1000 continue - if(iret.ne.0) then -c debug output - if(idebug.eq.1) - + print *, 'USER_FINSEL: event rejected' - endif - - - return -* - END ! USER_FINSEL diff --git a/Generators/PythiaB/src/uinit.F b/Generators/PythiaB/src/uinit.F deleted file mode 100644 index a2ae9d0f6fd3481cdeb621b2546a15f1d578671a..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/src/uinit.F +++ /dev/null @@ -1,110 +0,0 @@ -*CMZ : 02/08/2001 11.48.54 by Maria Smizanska -*-- Author : Maria Smizanska 20/11/96 - - SUBROUTINE UINIT -* * -*----------------------------------------------------------------------* -* * -* Name : UINIT * -* (module) * -* * -* Description : * -* Booking of NTUPLES 500 5001 5002 * -* Another histogram/ntuple booking can be added by user here * -* Arguments : * -* i1 , i2 not used [description] * -* * -* Banks/Tables: * -* [name] ([filled | used | modified]) * -* * -*----------------------------------------------------------------------* -* * -* Author : Maria Smizanska Date : 20/11/96 * -* * -* * -* Last modifications : * -* [name] Date : [date] * -* * -* Keywords : * -* [keywords] * -*----------------------------------------------------------------------* -* -C +CDE, TYPING. -*KEEP,DOUB. -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) -c INTEGER PYK,PYCHGE,PYCOMP -*KEEP,NNTUPLE. -* DECLARATION FOR NTUPLE 5000 - PARAMETER(NDIM = 20) - COMMON/NNICK/XNTUP(NDIM) - SAVE/NNICK/ - -* DECLARATION FOR NTUPLE 5001 - PARAMETER(NDIM1 = 13) - COMMON/HARD/XNTUP1(NDIM1) - SAVE/HARD/ - -* DECLARATION FOR NTUPLE 5002 - PARAMETER(NDIM2 = 12) - COMMON/MUON/XNTUP2(NDIM2) - SAVE/MUON/ - COMMON/PAWC/H(500000) -*KEND. -C ----------- end CDE -------------------------------------------------- - - - -c CHARACTER*8 TAGS(NDIM) -c SAVE TAGS - -c CHARACTER*8 TAGS1(NDIM1) -c SAVE TAGS1 - -c CHARACTER*8 TAGS2(NDIM2) -c SAVE TAGS2 - -c DATA TAGS / -c +'event','NTRY','ntree','itree','lineLUJE', -c +'K1','K2','K3','K4','K5', -c +'P1','P2','P3','P4','P5', -c +'V1','V2','V3','V4','V5' / - -c DATA TAGS1 / -c +'ISUB','XSECTION','NHADRONI','PTHARD','YHARD', -c +'PT_B','ETA_B','PHI_B','FATHER_B','PT_AB','ETA_AB', -c +'PHI_AB','FATHERAB' / - -c DATA TAGS2 / -c +'event','NTRY','nmuons','imuon','name', -c +'fathname','PT','ETA','phi','XV','YV', -c +'ZV' / - -c idebug=1 -c if(idebug.ne.0) print *,'UINIT: moj uinit0' -c CALL HLIMIT(500000) -c if(idebug.ne.0) print *,'UINIT: moj uinit1' -c CALL HROPEN(16,'AT','at1.hbook','N',1024,0) -c if(idebug.ne.0) print *,'UINIT: moj uinit2' -* Ntuple 5000 contains 'LUJET' type of information for -* B-signal chain and triggering muon - -c CALL HBOOKN(5000,'BBANAL',NDIM,'AT',1000,TAGS) -c if(idebug.ne.0) print *,'UINIT: moj uinit3' -* Ntuple 5001 contains information about hard process -* for those events that are accepted and written out - -c CALL HBOOKN(5001,'BBHARD',NDIM1,'AT',1000,TAGS1) - -* Ntuple 5002 is filled in the case of muon inclusive -* process bb->muX was simulated. It contains information -* about all muons in such events passing the LVL1 selection cuts - -c CALL HBOOKN(5002,'BBMUON',NDIM1,'AT',1000,TAGS2) - -c call hbook1(1,'Particles per event',100,0.,2000.,1.) - - -* - END ! UINIT diff --git a/Generators/PythiaB/src/ulast.F b/Generators/PythiaB/src/ulast.F deleted file mode 100644 index 94f1b1ea7e8ed6a7016610d4f0ed2167450756df..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/src/ulast.F +++ /dev/null @@ -1,38 +0,0 @@ -*CMZ : 02/08/2001 11.48.54 by Maria Smizanska -*-- Author : Maria Smizanska 20/11/96 - - SUBROUTINE ulast -* * -*----------------------------------------------------------------------* -* * -* Name : ulast * -* (module) * -* * -* Description : * -* Booking of NTUPLES 500 5001 5002 * -* Another histogram/ntuple booking can be added by user here * -* Arguments : * -* i1 , i2 not used [description] * -* * -* Banks/Tables: * -* [name] ([filled | used | modified]) * -* * -*----------------------------------------------------------------------* -* * -* Author : Maria Smizanska Date : 20/11/2001 * -* * -* * -* Last modifications : * -* [name] Date : [date] * -* * -* Keywords : * -* [keywords] * -*----------------------------------------------------------------------* -* -C +CDE, TYPING. - - print *,'ULAST: my ulast is called' -c CALL HROUT(0) -c CALL HREND('AT') -* - END ! ulast diff --git a/Generators/PythiaB/src/user_finsel.F b/Generators/PythiaB/src/user_finsel.F deleted file mode 100644 index 5b5416e6944d475e6ff05eb1e7dd0cd49ef44a3b..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/src/user_finsel.F +++ /dev/null @@ -1,153 +0,0 @@ -*CMZ : 02/08/2001 11.49.18 by Maria Smizanska -*-- Author : Maria Smizanska 06/10/96 - SUBROUTINE USER_FINSEL(IRET) -* * -*----------------------------------------------------------------------* -* * -* Name : USER_FINSEL * -* (module) * -* * -* Description : User subroutine to define requirements for event * -* accepting/rejecting additional or * -* other that in subroutine finsel * -* Arguments : IRET (in/out) accepting(0)/rejecting(1) event * -* * -* * -* Author : user Date : xxx * -* * -* * -* Last modifications : * -* [name] Date : [date] * -* * -* modifications: * -* 2006-04-02, W.Walkowiak * -* added common block ufdecay to tunnel iufdc and ciudcp(10) * -* to user_finsel.F; * -* decays are now contained in subfiles following * -* the naming convention uf_<decayname>.F * -* 2006-04-09, W. Walkowiak * -* added uf_BsJpsimumuphiKK() -- code by James Catmore * -* 2006-04-17, W. Walkowiak * -* added uf_bbmumu() -- code by Sergey Sivoklokov * -* 2008-05-09, L. Gladilin * -* added uf_ChHadr() -- code by Leonid Gladilin * -* 2010-08-26, P. Reznicek * -* added uf_BdJpsimumuK0starKpi() -- code by Pavel Reznicek * -* * -* Keywords : * -* [keywords] * -*----------------------------------------------------------------------* -* -*+CDE, TYPING. -C ----------- end CDE -------------------------------------------------- -* -*KEEP,DOUB. -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) -c INTEGER PYK,PYCHGE,PYCOMP -*KEEP,LUJETS. - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) -*KEEP,LUDAT1. - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) -*KEEP,LUDAT2. - COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) -*KEEP,PYPARS. - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) -*KEEP,PYINT1. - COMMON/PYINT1/MINT(400),VINT(400) -*KEEP,PYINT2. - COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2) -*KEEP,PYINT5. - COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3) -*KEEP,PYUPPR. - COMMON/PYUPPR/NUP,KUP(20,7),NFUP,IFUP(10,2),PUP(20,5),Q2UP(0:10) - -* user finsel decay selection and decay parameters - common /ufdecay/ cufdcp(10),iufdc - save /ufdecay/ - -*KEND. -* SAVE /LUJETS/,/LUDAT1/,/LUDAT2/ - SAVE /PYJETS/,/PYDAT1/,/PYDAT2/ - SAVE /PYPARS/,/PYINT1/,/PYINT2/,/PYINT5/,/PYUPPR/ -*KEEP,BTREE. - common/btree/ntree,tree(4000) - integer tree - SAVE /btree/ -*KEND. -c SAVE IFIRST,IIPRNT - SAVE IFIRST - DATA IFIRST /1/ -c DATA IIPRNT /0/ - -*KEEP,FAMILY. - name_self(I)=K(I,2) - name_selv(I)=abs(K(I,2)) - name_father(I)=K(K(I,3),2) - name_grandpa(I)=K(K(K(I,3),3),2) - name_daughter1(I)=K(K(I,4),2) - name_daughter2(I)=K(K(I,5),2) - - link_self(I)=I - link_father(I)=K(I,3) - link_grandpa(I)=K(K(I,3),3) - link_daughter1(I)=K(I,4) - link_daughter2(I)=K(I,5) -*KEND. -C ----------- end CDE -------------------------------------------------- - - idebug=0 - IF(IFIRST.EQ.1) THEN - IFIRST =0 - ENDIF - -c -c select user defined decay channel -c -c 0: decay channel skeleton - if ( iufdc .eq. 0 ) call uf_Skeleton(iret) -c -c 1: DsPhiX - if ( iufdc .eq. 1 ) call uf_DsPhiX(iret) -c -c 2: LambdabmumuLambda (Pavel R.) - if ( iufdc .eq. 2 ) call uf_LambdabmumuLambda(iret) -c -c 3: LambdabJpsimumuLambda (Michigan) - if ( iufdc .eq. 3 ) call uf_LambdabJpsimumuLambda(iret) -c -c 4: BsJpsimumuphiKK (James Catmore) - if ( iufdc .eq. 4) call uf_BsJpsimumuphiKK(iret) - -c 5: bbmumu (Sergey Sivoklokov) - if ( iufdc .eq. 5) call uf_bbmumu(iret) - -c 6: Kstarmumu (Sergey Sivoklokov) - if ( iufdc .eq. 6) call uf_KstarMuMu(iret) - -c 7: Phi0mumu (Sergey Sivoklokov) - if ( iufdc .eq. 7) call uf_PhiMuMu(iret) - -c 8: Gammamumu (Sergey Sivoklokov) - if ( iufdc .eq. 8) call uf_GammaMuMu(iret) - -c 9: ChHadr (Leonid Gladilin) - if ( iufdc .eq. 9) call uf_ChHadr(iret) - -c 10: BsAngles (J Catmore) - if ( iufdc .eq. 10) call uf_BsAngles(iret) - -c 11: BdJpsimumuK0starKpi (Pavel Reznicek) - if ( iufdc .eq. 11 ) call uf_BdJpsimumuK0starKpi(iret) - -c 12: BsAnglesCDF (Alastair Dewhurst, Pavel Reznicek) - if ( iufdc .eq. 12) call uf_BsAnglesCDF(iret) - -c 13: BdAnglesCDF (Alastair Dewhurst, Pavel Reznicek) - if ( iufdc .eq. 13) call uf_BdAnglesCDF(iret) - - - return -* - END ! USER_FINSEL diff --git a/Generators/PythiaB/src/wri_ludat3.F b/Generators/PythiaB/src/wri_ludat3.F deleted file mode 100644 index 3a887c5b9af7c872663ad6df67f409b14cdcf22d..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/src/wri_ludat3.F +++ /dev/null @@ -1,55 +0,0 @@ -*CMZ : 02/08/2001 11.43.38 by Maria Smizanska -*-- Author : Maria Smizanska 22/07/2000 - - SUBROUTINE wri_ludat3(in) -c -c make a copy ludat3 of default (in=1) decays -c make a copy ludat3 of users defined (in=2) decays -c MDCY(500,3),MDME(2000,2),BRAT(2000),KFDP(2000,5) -c -*KEEP,DOUB. -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) -*KEEP,COLUDAT3. - - common /CLUDAT3/MDCYbi(500,3),MDMEbi(8000,2), - * BRATbi(8000),KFDPbi(8000,5), - * MDCYun(500,3),MDMEun(8000,2), - * BRATun(8000),KFDPun(8000,5) - -*KEEP,LUDAT3. - COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5) -*KEND. - - - idebug=1 - if(idebug.ne.0) print *,'wri_ludat3: is called' - - if(in.eq.1) then - write (60) MDCY,MDME,BRAT,KFDP - write (61,100) BRAT - endif -100 format(10F10.7) - - - if(in.eq.2) then - read (60) MDCYun,MDMEun,BRATun,KFDPun - endif - - - - if(idebug.ne.0) then - print *,'wri_ludat3: write 1 read 2',in - print *,'wri_ludat3: mdme(982,1)',(mdme(ii,1),ii=982,982) - print *,'wri_ludat3: mdmeun(982,1)',(mdmeun(ii,1),ii=982,982) - endif - return - end - - - - - - - diff --git a/Generators/PythiaB/src/xsect.F b/Generators/PythiaB/src/xsect.F deleted file mode 100644 index 99ba4c6328029f4102bd360b231cb72d8d181a32..0000000000000000000000000000000000000000 --- a/Generators/PythiaB/src/xsect.F +++ /dev/null @@ -1,49 +0,0 @@ - SUBROUTINE XSECT(IOUT) -c -c --- Print out cross section taken from PYTHIA XSEC(0,3) -c --- and corrected to multiple hadronisation -c -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - INTEGER PYK,PYCHGE,PYCOMP - COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3) - COMMON/bevent/ihard - common/repeat/NTB - - - WRITE(IOUT,5300) - WRITE(IOUT,5400) - - xc=xsec(0,3)/ntb - WRITE(IOUT,1) - WRITE(IOUT,2) ntb - WRITE(IOUT,3) XSEC(0,3) - WRITE(IOUT,4) XC - WRITE(IOUT,5) NGEN(0,3) - if (keve.ne.0) then - WRITE(IOUT,6) - WRITE(IOUT,7) float(NGEN(0,3))/ihard - - endif - - WRITE(IOUT,5400) - WRITE(IOUT,5300) - - - - 1 FORMAT(8X,'CROSS SECTION CORRECTED FOR REPEATED HADRONISATION') - 2 FORMAT(8X,'Hadronization was repeated ',i6,' times') - 3 FORMAT(8X,'Cross section given by PYTHIA was: ',E10.4,'mbarn') - 4 FORMAT(8X,'Corrected cross section is: ',E10.4,'mbarn') - 5 FORMAT(8X,'Number of accepted events is: ',I7) - 6 FORMAT(8X,'AVERAGE NUM. OF ACCEPTED EVTS WITH THE SAME') - 7 FORMAT(8X,'HARD PROCESS',f10.5) - - - - 5300 FORMAT(78('=')) - 5400 FORMAT(78(' ')) - RETURN - END - diff --git a/Generators/PythiaChL_i/CMakeLists.txt b/Generators/PythiaChL_i/CMakeLists.txt deleted file mode 100644 index 392e5457fb4f404237c6b7805d4ed35a17bcba9d..0000000000000000000000000000000000000000 --- a/Generators/PythiaChL_i/CMakeLists.txt +++ /dev/null @@ -1,43 +0,0 @@ -################################################################################ -# Package: PythiaChL_i -################################################################################ - -# Declare the package name: -atlas_subdir( PythiaChL_i ) - -# Declare the package's dependencies: -atlas_depends_on_subdirs( - PUBLIC - GaudiKernel - Generators/GeneratorModules - Generators/Pythia_i - Generators/Tauola_i - PRIVATE - Control/AthenaKernel - Generators/GeneratorUtils - Generators/TruthUtils - Generators/CompHep_i ) - -# External dependencies: -find_package( CLHEP ) -find_package( HepMC COMPONENTS HepMC HepMCfio ) - -# Remove the --as-needed linker flags: -atlas_disable_as_needed() - -# Component(s) in the package: -atlas_add_library( PythiaChL_iLib - PythiaChL_i/PythiaChL.h src/PythiaChL.cxx src/pysghg_ChL.f - PUBLIC_HEADERS PythiaChL_i - PRIVATE_INCLUDE_DIRS ${CLHEP_INCLUDE_DIRS} ${HEPMC_INCLUDE_DIRS} - PRIVATE_DEFINITIONS ${CLHEP_DEFINITIONS} - LINK_LIBRARIES GaudiKernel GeneratorModulesLib Pythia_iLib Tauola_iLib - PRIVATE_LINK_LIBRARIES ${CLHEP_LIBRARIES} ${HEPMC_LIBRARIES} AthenaKernel - TruthUtils CompHep_i ) - -atlas_add_component( PythiaChL_i - src/components/*.cxx - LINK_LIBRARIES GaudiKernel PythiaChL_iLib ) - -# Install files from the package: -atlas_install_joboptions( share/*.py ) diff --git a/Generators/PythiaChL_i/PythiaChL_i/PythiaChL.h b/Generators/PythiaChL_i/PythiaChL_i/PythiaChL.h deleted file mode 100644 index fea55903a0711084e2f94de63fd8e9ecf67fcc89..0000000000000000000000000000000000000000 --- a/Generators/PythiaChL_i/PythiaChL_i/PythiaChL.h +++ /dev/null @@ -1,67 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef GENERATORMODULESPYTHIACHL_H -#define GENERATORMODULESPYTHIACHL_H - -#include "Pythia_i/Pythia.h" - -#include "GeneratorModules/GenModule.h" -#include "Tauola_i/Atlas_HEPEVT.h" - -class IAtRndmGenSvc; - -/// @todo Put inside class (this is a global declaration) -typedef std::vector<std::string> CommandVector; - -/** -@brief This code is used to get a PYTHIA-ChL Monte Carlo event. - - genInitialize() is used to read parameters - - callGenerator() makes the event - - genFinalize() writes log files etc - - fillEvt(GeneratorEvent* evt) passes the event to HepMC - - The output will be stored in the transient event store so it can be - passed to the simulation. - -@author - - Ian Hinchliffe June 2000 - - Modelled after the CDF code by Stan Thompson - - Added access to pyint2 common Feb 2001 - - Added access to pyint5 common Feb 2002 - - Added access to lesatlas common (not part of pythia but needed for external process May 2002 - - Added access to pyint1 common Sept 2002 - - Spited from Pythia_i by Jan Kotanski July 2011 - -*/ - -class PythiaChL : public Pythia { -public: - - PythiaChL(const std::string& name, ISvcLocator* pSvcLocator); - virtual ~PythiaChL(); - - virtual StatusCode genuserInitialize(); - virtual StatusCode callGenerator(); - virtual StatusCode genFinalize(); - virtual StatusCode fillEvt(HepMC::GenEvent* evt); - -}; - - -#endif - -/* LocalWords: ifndef - */ diff --git a/Generators/PythiaChL_i/share/joboptions.PythiaChL.py b/Generators/PythiaChL_i/share/joboptions.PythiaChL.py deleted file mode 100644 index bd0c1cd0173b8d580e66eaa22ebb9cd8eea65115..0000000000000000000000000000000000000000 --- a/Generators/PythiaChL_i/share/joboptions.PythiaChL.py +++ /dev/null @@ -1,110 +0,0 @@ -############################################################### -# Pythia Commands -# -# !!! WARNING !!! -# ChL model, using modified pythia code through PythiaChL_i -# pysghg_ChL.f (Georges Azuelos) -# -# 06/2006, G. Azuelos, P.A. Delsart, J. Idarraga -############################################################### -from AthenaCommon.AppMgr import ServiceMgr -ServiceMgr.MessageSvc.OutputLevel = INFO - -MyNevts = 10 -theApp.EvtMax = MyNevts - -# dijet production with pythia -from AthenaCommon.AlgSequence import AlgSequence -topAlg = AlgSequence("TopAlg") - -from PythiaChL_i.PythiaChL_iConf import PythiaChL -topAlg += PythiaChL() - -############################################################### -# Channel switches -Ztojj = "0" -Ztoll = "4" -Ztonunu = "5" -# close tau channels -# for jjll both mdme 186 and 187 are "0" -# for llnn mdme186=0 and mdme187=5 -Ztotau186 = "0" -Ztotau187 = "0" - -if Ztonunu == "0": - Ztotau187 = "0" -elif Ztonunu == "4" or Ztonunu == "5": - Ztotau187 = "5" -else: - Ztotau187 = "0" - -print "[INFO] Optios for tau: " -print "[INFO] mdme 186 = ", Ztotau186 -print "[INFO] mdme 187 = ", Ztotau187 - -Pythia = topAlg.PythiaChL -#--------------------------------------------------------------- -Pythia.PythiaCommand = [ - - ####################### - # using madgraph - # "pyinit user madgraph", - - # Set process type and W' mass - "pysubs msel 0", - - ####################### - # if using madgraph - # comment out the next - # msub, mstp and parp options - ####################### - "pysubs msub 71 1", - "pysubs msub 76 1", - "pypars mstp 46 5", # - "pypars parp 200 0.009", - "pypars parp 199 0.009", - - ##################### - # Z -> ee or mu mu (apago los jets) - # the last parameter turns on(1) or turns off(0) the desired channel - # but he will take in to account for the width ! ... watch out ! - - # Z -> to quarks - "pydat3 mdme 174 1 "+Ztojj, - "pydat3 mdme 175 1 "+Ztojj, - "pydat3 mdme 176 1 "+Ztojj, - "pydat3 mdme 177 1 "+Ztojj, - "pydat3 mdme 178 1 "+Ztojj, - "pydat3 mdme 179 1 "+Ztojj, - - # Z -> ll - "pydat3 mdme 182 1 "+Ztoll, - "pydat3 mdme 183 1 "+Ztonunu, # to nu_e - "pydat3 mdme 184 1 "+Ztoll, - "pydat3 mdme 185 1 "+Ztonunu, # to nu_mu - - # Close Z -> tau channels - "pydat3 mdme 186 1 "+Ztotau186, - "pydat3 mdme 187 1 "+Ztotau187, # IMPORTANT !!! 5 for the case llnn - # "pydat3 mdme 188 1 0", - # "pydat3 mdme 189 1 0", - - ###################### - "pysubs ckin 1 300", # minimun for the invariant mass - # of WZ - "pyinit pylistf 1", - - # list 1st 10 events - "pyinit dumpr 1 10", - - # print the decay info - "pyinit pylisti 12" - -] - - -#-------------------------------------------------------------- -# Configuration for EvgenJobTransforms -#-------------------------------------------------------------- -#from EvgenJobOptions.PythiaEvgenConfig import evgenConfig -#evgenConfig.efficiency = 0.9 diff --git a/Generators/PythiaChL_i/src/PythiaChL.cxx b/Generators/PythiaChL_i/src/PythiaChL.cxx deleted file mode 100644 index 97fb46b47d02409ed1868fcec37b1063396fad32..0000000000000000000000000000000000000000 --- a/Generators/PythiaChL_i/src/PythiaChL.cxx +++ /dev/null @@ -1,767 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// File: GeneratorModules/PythiaChL.cxx -// Description: Allows the user to generate pythia events and store -// the result in the Transient Store. -// -// AuthorList: -// Ian Hinchliffe: Initial Code June: 2000 -// Modeled after the CDF code by Stan Thompson -// Parsing added August 2000 -// More switches added Feb 2001 -// Les Houches external process interface added May 2002 -// Added access to pyint1 common Sept 2002 -// Splited from Pythia_i by Jan Kotanski 2011 - -/// @todo Remove all std::cout usage -/// @todo Remove use of newlines in ATH_MSG - -// Header for this module:- -#include "Pythia_i/Pythia.h" -#include "PythiaChL_i/PythiaChL.h" -#include "TruthUtils/GeneratorName.h" - -#include "HepMC/IO_HEPEVT.h" -#include "HepMC/HEPEVT_Wrapper.h" - -#include "GeneratorUtils/StringParse.h" -#include <cstdlib> - -// Calls to Fortran routines -#include "CLHEP/Random/RandFlat.h" -#include "AthenaKernel/IAtRndmGenSvc.h" - -using std::string; - - - -extern "C" { - void initpyblock_(int*, const char*); - int openrandom_(int*, int*, const char*); - void pyinit_(const char*, - const char*, - const char*, - double* , - int, // lengths of character strings - int,// (should be value, not reference) - int - ); - void pyevnt_(); - void pyevnw_(); - void pystat_(int*); - void pylist_(int*); - void pyupda_(int*, int*); - void pyrget_(int*, int*); - void pyrset_(int*, int*); - int pycomp_(int*); - // void lunhep_(int*); // STDHEP routine for PYJETS->HEPEVT - void pyhepc_(int*); - int opdcay_(const char*, int*, char*, int, int); - void cldcay_(int*); - void rinpar_(); // comphep - void subnum_(); // comphep file - void rheader_(); // comphep initialization - void extproc_(int*); - void opensusyfile_(const char* ,int * , int); -} - - -// File scope declarations:- - -// set pointer to zero at start -//Atlas_HEPEVT* Pythia::atlas_HEPEVT = new Atlas_HEPEVT(); - - -//-------------------------------------------------------------------------- - - -PythiaChL::PythiaChL(const std::string& name, ISvcLocator* pSvcLocator) - : Pythia(name, pSvcLocator) -{ - m_AtlasDefaults = true; - pythia_stream = "PYTHIA_INIT"; - - // ATLAS default tune - m_Default_Tune_Name="ATLAS_20110002"; - m_Default_Tune_Type="ATLAS"; - m_Default_Tune_Index=20100002; - m_Starting_Tune_Name="ATLAS_99999999"; - m_Starting_Tune_Type="ATLAS"; - m_Starting_Tune_Index=99999999; -} - - -//-------------------------------------------------------------------------- - - -PythiaChL::~PythiaChL() { } - - -//--------------------------------------------------------------------------- - - -StatusCode PythiaChL::genuserInitialize() { - // Initialise the listing output, parameter and decay data input streams - ATH_MSG_INFO("PYTHIACHL INITIALISING.\n"); - - /// @todo Use ServiceHandle method - static const bool CREATEIFNOTTHERE(true); - StatusCode RndmStatus = service("AtRndmGenSvc", - PythiaChL::p_AtRndmGenSvc, - CREATEIFNOTTHERE); - if (!RndmStatus.isSuccess() || 0 == PythiaChL::p_AtRndmGenSvc) - { - ATH_MSG_ERROR("Could not initialize Random Number Service"); - return RndmStatus; - } - PythiaChL::pythia_stream = "PYTHIA_INIT"; - - // set up the input parameters to pyinit: these can be changed by the user - m_frame = "CMS "; - m_beam = "P "; - m_target = "P "; - m_win=14000.; - m_initlistlevel=11; - m_pystatlistlevel.push_back(1); - m_fortout=0; - - m_RndmFileName=" "; - m_RndmFileNumber=0; - m_RndmSwitch=0; - m_RndmFirstEvent=1; - m_RndmSkipEvents=0; - m_RndmMOVE=0; - m_RndmFileLength=0; - m_ExternalProcess = 0; - - // end of setup to pyinit - //now set defaults - m_randomseed=19780503; - this->pydatr().mrpy(1) = m_randomseed; // can be overwritten by user - // default process is ttbar - // these can be overwritten by user. - m_msel=6; - this->pysubs().msel() = m_msel; - - // Set the ATLAS defaults - if (m_AtlasDefaults) { - - this->pydat2().pmas(6,1) =175.; // top quark mass - this->pydat2().pmas(24,1) =80.42; // W mass - //this->pydat2().pmas(24,2) =2.124; // W width calculated dynamically - this->pydat2().pmas(23,1) =91.19; // Z0 mass - //this->pydat2().pmas(23,2) =2.495; // Z0 width calculated dynamically - this->pypars().mstp(128) =1; // fix junk output for documentary particles - this->pydat1().mstu(21) =1; // error handling switch - - this->pypars().mstp(81) =21; // ATLAS default for MI and also for the associated - // treatment of initial- and final-state showers - // and beam remnants. MI on; new model for PYEVNW. - - // Check the user request here and reset mstp(81) - for (unsigned int i = 0; i < m_pythiaCommandVector.size(); i++) { - StringParse mystring(m_pythiaCommandVector[i]); - string myblock=mystring.piece(1); - string myentry=mystring.piece(2); - int myint1=mystring.intpiece(3); - int myint2=mystring.intpiece(4); - if (myblock == "pypars"){ - if(myentry == "mstp" && myint1 == 81){ - this->pypars().mstp(myint1)=myint2; - } - } - } - - // The new pyevnw routine is used which accesses the new scenario with pT-ordered showers and - // interleaved multiple interactions - if (this->pypars().mstp(81) >= 20) { - // this->pypars().mstp(68)=1; Removed for 6.4xxx - this->pypars().mstp(70)=2; // (virtuality scale for ISR) - this->pypars().mstp(72)=0; - this->pypars().mstp(82)=4; // (mutiple interaction model) - this->pypars().mstp(84)=1; - this->pypars().mstp(85)=1; - this->pypars().mstp(86)=2; - this->pypars().mstp(87)=4; - this->pypars().mstp(88)=0; - this->pypars().mstp(89)=1; - this->pypars().mstp(90)=1; - this->pypars().mstp(95)=1; - this->pypars().parp(78)=0.2; - this->pypars().parp(80)=0.01; - this->pypars().parp(82)=1.9; // (cut off scale) - this->pypars().parp(83)=0.3; - this->pypars().parp(84)=0.5; // (matter distribution) - this->pypars().parp(89)=1800.; - this->pypars().parp(90)=0.22; // (cut off scale) - this->pydat1().mstj(11)=3; // (select peterson for charm fragmentation) - this->pydat1().mstj(22)=2; // (Make K_S, Lambda stable) - this->pydat1().parj(54)=-0.07; // (c hadronization) - this->pydat1().parj(55)=-0.006; // (b hadronization) - this->pydat1().parj(81)=0.14; - this->pypars().mstp(52)=2; // (needed for CTEQ6L) - this->pypars().mstp(54)=2; // (needed for CTEQ6L) - this->pypars().mstp(56)=2; // (needed for CTEQ6L) - this->pypars().mstp(51)=10042; // (needed for CTEQ6L) - this->pypars().mstp(53)=10042; // (needed for CTEQ6L) - this->pypars().mstp(55)=10042; // (needed for CTEQ6L) - } else { - this->pypars().mstp(81) = 1; - this->pypars().mstp(82) = 4; - this->pypars().mstp(86) = 2; - this->pypars().parp(67) = 3.; - this->pypars().parp(82) = 2.2; - this->pypars().parp(83) = 0.5; - this->pypars().parp(84) = 0.3; - this->pypars().parp(85) = 0.33; - this->pypars().parp(86) = 0.66; - this->pypars().parp(89) = 1800.; - this->pypars().parp(90) = 0.24; - this->pypars().mstp(52) = 2; - this->pypars().mstp(54) = 2; - this->pypars().mstp(56) = 2; - this->pypars().mstp(51) = 10042; - this->pypars().mstp(53) = 10042; - this->pypars().mstp(55) = 10042; - this->pydat1().mstj(11) = 3; - this->pydat1().mstj(22) = 2; - this->pydat1().parj(54) = -0.07; - this->pydat1().parj(55) = -0.006; - } - } - - // - // Parse Commands and Set Values from Properties Service... - // - // for(CommandVector::iterator it = m_pythiaCommandVector.begin(); - // it != m_pythiaCommand.end(); it++ ) { - for (unsigned int i = 0; i < m_pythiaCommandVector.size(); i++) { - ATH_MSG_INFO(" Command is: " << m_pythiaCommandVector[i] ); - StringParse mystring(m_pythiaCommandVector[i]); - string myblock=mystring.piece(1); - string myentry=mystring.piece(2); - string mystr=mystring.piece(3); - int myint1=mystring.intpiece(3); - int myint2=mystring.intpiece(4); - int myint3=mystring.intpiece(5); - int myint4=mystring.intpiece(6); - int myint5=mystring.intpiece(7); - double myfl1=mystring.numpiece(4); - double myfl2=mystring.numpiece(5); - double myfl0=mystring.numpiece(3); - - // Note that PythiaChL needs doubles hence the convert here - ATH_MSG_INFO(myblock << " block " << myentry << " item " << myint1 << " value " << myfl1); - if (myblock=="pyinit") { - if(myentry=="user"){ - m_frame="USER "; - m_external=mystr; - m_ExternalProcess = generator_int(mystr); - /* if(mystr=="comphep"){ - m_ExternalProcess = 1; - } else if(mystr=="user"){ - m_ExternalProcess = 2; - } else if(mystr=="acermc"){ - m_ExternalProcess = 3; - } else if(mystr=="alpgen"){ - m_ExternalProcess = 4; - } else if (mystr == "madgraph") { - m_ExternalProcess = 5; - } else if(mystr== "madcup") { - m_ExternalProcess = 6; - } else if(mystr== "toprex") { - m_ExternalProcess = 7; - } else if(mystr== "lhaext") { - m_ExternalProcess = 8; - } else if(mystr== "matchig") { - m_ExternalProcess = 9; - } else if(mystr== "hvgen") { - m_ExternalProcess = 10; - } else if(mystr== "lhef") { - m_ExternalProcess = 11; - } else { - ATH_MSG_ERROR( - "PYTHIACHL ERROR, entry PYINIT USER has comphep, acermc, alpgen, madgraph, madcup, " - << "toprex, lhaext, hvgen and user as options: YOU HAVE SPECIFIED " << myentry); - }*/ - extproc_(&m_ExternalProcess); - } - else if(myentry=="FIXT"){ - m_frame="FIXT"; - } - else if(myentry=="pbar"){ - m_beam="P~- "; - } - else if(myentry=="win"){ - m_win=myfl0; - } - else if(myentry=="pylisti"){ - m_initlistlevel=myint1; - } - else if(myentry=="pylistf"){ - m_eventlistlevel=myint1; - } - else if(myentry=="dumpr"){ - m_firstlistevent=myint1; - m_lastlistevent=myint2; - } - else if(myentry=="output"){ - m_envval1=mystr; - m_fortout=49; - this->pydat1().mstu(11)=m_fortout; - } - else if(myentry=="rndm_IO"){ - m_RndmFileName=mystr; - m_RndmFileNumber=36; - m_RndmSwitch=myint2; - m_RndmFirstEvent=myint3; - m_RndmSkipEvents=myint4; - m_RndmMOVE=myint5; - if (m_RndmSwitch == 1) ++m_RndmSkipEvents; - - if (m_RndmSwitch > 0) { - if (m_RndmFirstEvent < 1 || m_RndmSkipEvents < 0) { - ATH_MSG_ERROR("INCONSISTENT SET OF rndm_IO PARAMETERS : " - << "FirstEvent < 1 || SkipEvents < 0. DUMPING RNDM SEEDS SWITCHED OFF" << myentry); - m_RndmSwitch = 0; - } - } - - ATH_MSG_INFO(" !!!!!!!!!! WARNING ON PYTHIACHL RANDOM NUMBERS !!!!!!!! "); - ATH_MSG_INFO(" THE ATHENA/PYTHIACHL DOES NOT USE ANY MORE THE STANDARD "); - ATH_MSG_INFO(" PYTHIACHL RANDOM NUMBER SERVICES. SINCE RELEASE 5.2.0 THE"); - ATH_MSG_INFO(" ATHENA SERVICE AtRndmGenSvc IS USED. PLEASE FOR MORE "); - ATH_MSG_INFO(" DETAILS LOOK IN "); - ATH_MSG_INFO(" http://atlassw1.phy.bnl.gov/lxrsource/current/atlas/Generators/GeneratorModules/doc/Pythia.pdf "); - ATH_MSG_INFO(" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! "); - - m_RndmSwitch = 0; - } - else { - ATH_MSG_ERROR("PYTHIACHL ERROR, entry PYINIT has USER PBAR PYLISTI PYLISTF PYSTAT OUTPUT DUMPR WIN AND RNDM_IO: YOU HAVE SPECIFIED " << myentry); - } - } - else if (myblock == "pysubs") { - if(myentry == "msel"){ - this->pysubs().msel()=myint1; - } - else if (myentry == "msub"){ - this->pysubs().msub(myint1)=myint2; - } - else if (myentry == "ckin"){ - this->pysubs().ckin(myint1)=myfl1; - } - else if (myentry == "kfin"){ - this->pysubs().kfin(myint1,myint2)=myint3; - } - else { - ATH_MSG_ERROR("PYTHIACHL ERROR, block PYSUBS has MSEL, MSUB, KFIN AND CKIN: YOU HAVE SPECIFIED " << myentry); - } - } - else if (myblock == "pypars"){ - if(myentry == "mstp"){ - this->pypars().mstp(myint1)=myint2; - } - else if(myentry == "msti"){ - this->pypars().msti(myint1)=myint2; - } - else if(myentry == "parp"){ - this->pypars().parp(myint1)=myfl1; - } - else if(myentry == "pari"){ - this->pypars().pari(myint1)=myfl1; - } - else { - ATH_MSG_ERROR("PYTHIACHL ERROR, block PYPARS has MSTP,PARP, MSTI AND PARI: YOU HAVE SPECIFIED "<< myentry); - } - } - else if (myblock == "pydat1"){ - if(myentry == "mstu"){ - this->pydat1().mstu(myint1)=myint2; - } - else if(myentry == "mstj"){ - this->pydat1().mstj(myint1)=myint2; - } - else if(myentry == "paru"){ - this->pydat1().paru(myint1)=myfl1; - } - else if(myentry == "parj"){ - this->pydat1().parj(myint1)=myfl1; - } - else { - ATH_MSG_ERROR("PYTHIACHL ERROR, block PYDAT1 HAS MSTU, MSTJ, PARU AND PARJ: YOU HAVE SPECIFIED "<< myentry); - } - } - else if (myblock == "pydat2"){ - if(myentry == "kchg"){ - this->pydat2().kchg(myint1,myint2)=myint3; - } - else if(myentry == "pmas"){ - this->pydat2().pmas(pycomp_(&myint1),myint2)=myfl2; - } - else if(myentry == "parf"){ - this->pydat2().parf(myint1)=myfl1; - } - else if(myentry == "vckm"){ - this->pydat2().vckm(myint1,myint2)=myfl2; - } - else { - ATH_MSG_ERROR("PYTHIACHL ERROR, block PYDAT2 HAS KCHG, PMAS, PARF AND VCKM: YOU HAVE SPECIFIED "<< myentry); - } - } - else if (myblock == "pydat3"){ - if(myentry == "mdcy"){ - this->pydat3().mdcy(myint1,myint2)=myint3; - } - else if(myentry == "mdme"){ - this->pydat3().mdme(myint1,myint2)=myint3; - } - else if(myentry == "brat"){ - this->pydat3().brat(myint1)=myfl1; - } - else if(myentry == "kfdp"){ - this->pydat3().kfdp(myint1,myint2)=myint3; - } - else { - ATH_MSG_ERROR("PYTHIACHL ERROR, block PYDAT3 HAS KFDP, MDCY, BRAT AND MDME : YOU HAVE SPECIFIED "<< myentry); - } - } - else if (myblock == "pydatr"){ - if(myentry == "mrpy"){ - ATH_MSG_INFO(" !!!!!!!!!! WARNING ON PYTHIACHL RANDOM NUMBERS !!!!!!!! "); - ATH_MSG_INFO(" THE ATHENA/PYTHIACHL DOES NOT USE ANY MORE THE STANDARD "); - ATH_MSG_INFO(" PYTHIACHL RANDOM NUMBER SERVICES. SINCE RELEASE 5.2.0 THE"); - ATH_MSG_INFO(" ATHENA SERVICE AtRndmGenSvc IS USED. PLEASE FOR MORE "); - ATH_MSG_INFO(" DETAILS LOOK IN "); - ATH_MSG_INFO(" http://atlassw1.phy.bnl.gov/lxrsource/current/atlas/Generators/GeneratorModules/doc/Pythia.pdf "); - ATH_MSG_INFO(" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! "); - - this->pydatr().mrpy(myint1)=myint2; - } - else if(myentry == "rrpy"){ - this->pydatr().rrpy(myint1)=myfl1; - } - else { - ATH_MSG_ERROR("PYTHIACHL ERROR, block PYDATR HAS MRPY AND RRPY : YOU HAVE SPECIFIED "<< myentry); - } - } - else if (myblock == "pymssm"){ - if (myentry=="imss"){ - if (myint1 == 21 || myint1 == 22) { - ATH_MSG_WARNING("The seting of imss(21) and imss(22) is not allowed. When imss(1)=11 is chosen imss(21) and imss(22) are set to 66 by default"); - } else { - this->pymssm().imss(myint1)=myint2; - } - } - else if (myentry=="rmss"){ - this->pymssm().rmss(myint1)=myfl1; - } - else { - ATH_MSG_ERROR("PYTHIACHL ERROR, block PYMSSM has IMSS AND RMSS: YOU HAVE SPECIFIED "<< myentry); - } - } - else if (myblock == "pyint2"){ - if (myentry == "iset"){ - this->pyint2().iset(myint1)=myint2; - } - else if (myentry == "kfpr"){ - this->pyint2().kfpr(myint1,myint2)=myint3; - } - else if (myentry == "coef"){ - this->pyint2().coef(myint1,myint2)=myfl2; - } - else if (myentry == "icol"){ - this->pyint2().icol(myint1,myint2,myint3)=myint4; - } - else { - ATH_MSG_ERROR("PYTHIACHL ERROR, block PYINT2 has ISET KFPR COEF AND ICOL: YOU HAVE SPECIFIED "<< myentry); - } - } - else if (myblock == "pystat"){ - m_pystatlistlevel.clear(); - for (unsigned i = 2; i <= mystring.string_size(); ++i) - m_pystatlistlevel.push_back(mystring.intpiece(i)); - } - else if (myblock == "pytcsm"){ - if (myentry == "itcm"){ - this->pytcsm().itcm(myint1)=myint2; - } - else if (myentry=="rtcm"){ - this->pytcsm().rtcm(myint1)=myfl1; - } - else { - ATH_MSG_ERROR("PYTHIACHL ERROR, block PYTCM has ITCM AND RTCM: YOU HAVE SPECIFIED " << myentry); - } - - } - - // AcerMC tt~ decay mode switching - else if (myblock == "acermc" && myentry=="acset12") { - if (m_ExternalProcess == ACERMC) { - this->acermc_acset().acset12()=myint1; - } - } - - else { - ATH_MSG_ERROR(" ERROR in PYTHIACHL PARAMETERS " << myblock << " is and invalid common block name !"); - } - } - // end of parsing - - // Set the logical Unit Number for the immss(1)=11 option and open the file - if (this->pymssm().imss(1) == 11) { - int syunit = 66; - this->pymssm().imss(21) = syunit; - this->pymssm().imss(22) = syunit; - const std::string& fileName = m_read_Filesusy; - opensusyfile_(fileName.c_str(),&syunit,fileName.size()); - } - - // !!!!! PROTECT AGAINST mstp(81)/mstp(82) PythiaChL looping - if (this->pypars().mstp(81) == 0 && this->pypars().mstp(82) > 2) - { - this->pypars().mstp(82) = 1; - ATH_MSG_INFO(" !!!!!!!!!! WARNING ON PYTHIACHL LOOPING !!!!!!!! "); - ATH_MSG_INFO(" YOU HAVE SWITCHED OFF MULTIPLE INTERACTIONS, mstp(81) = 0 "); - ATH_MSG_INFO(" THE DEFAULT ATLAS MULTIPLE INTERACTIONS SCENARIO, mstp(82) = 4 "); - ATH_MSG_INFO(" CHANGED TO mstp(82) = 1, BECAUSE PYTHIACHL IS LOOPING WHEN "); - ATH_MSG_INFO(" mstp(81) = 0 and mstp(82) > 2 "); - ATH_MSG_INFO(" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! "); - } - - // Now call pyinit and set listing - // Note the `extra' arguments to pyinit on the end of the argument - // list which do *not* explicitly occur in the FORTRAN - // implementation of the function -- one for each character - // variable, in the same order (reference Randy Herber, - // herber@fnal.gov). Note also that the `extern "C"' function - // declaration matches the C usage rather than the FORTRAN - // definition of the PYINIT function and therefore includes the 3 - // extra arguments. - // activate the block data - const char* envval = m_envval1.c_str(); - initpyblock_(&m_fortout,envval); - - if (m_RndmSwitch > 0) - { - const char* RndmFileName = m_RndmFileName.c_str(); - m_RndmFileLength = openrandom_(&m_RndmSwitch, &m_RndmFileNumber, RndmFileName); - if (m_RndmSwitch ==2 ) - ATH_MSG_INFO("THERE ARE " << m_RndmFileLength << " EVENTS STORED IN THE PYTHIACHL RANDOM NUMBER FILE \n"); - } - - const char* frame = m_frame.c_str(); - const char* beam = m_beam.c_str(); - double winval = m_win; - const char* target = m_target.c_str(); - int minlist = m_initlistlevel; - // special initialization for comphep - if(m_external=="comphep"){ - rinpar_(); - subnum_(); - rheader_(); - } - - // end of comphep initialization - // std::cout << " ****** BEFORE PYINIT ********" << std::endl; - // std::cout << setiosflags(ios::fixed); - // std::cout << " MSTU(11) " - // << std::setw(3) << setprecision(0) << this->pydat1().mstu(11) << " MSTU(20) " - // << std::setw(3) << setprecision(0) << this->pydat1().mstu(20) << " MSTU(118) " - // << std::setw(3) << setprecision(0) << this->pydat1().mstu(118) << std::endl; - // std::cout << " PARU(108) " - // << std::setw(10) << setprecision(8) << this->pydat1().paru(108) << " PARU(117) " - // << std::setw(10) << setprecision(8) << this->pydat1().paru(117) << " PARU(118) " - // << std::setw(10) << setprecision(8) << this->pydat1().paru(118) << std::endl; - // for (int ii = 210; ii < 353; ++ii) - // { - // std::cout << " BRAT(" << ii << ") " - // << std::setw(10) << setprecision(8) << this->pydat3().brat(ii) << std::endl; - // } - // std::cout << " MDCY(310) " - // << std::setw(3) << setprecision(0) << this->pydat3().mdcy(310,1) << ", " - // << std::setw(3) << setprecision(0) << this->pydat3().mdcy(310,2) << ", " - // << std::setw(3) << setprecision(0) << this->pydat3().mdcy(310,3); - - // std::cout << std::resetiosflags(std::ios::fixed) - // << std::endl; - - // Save the PYTHIACHL_INIT stream seeds.... - CLHEP::HepRandomEngine* engine = PythiaChL::p_AtRndmGenSvc->GetEngine(PythiaChL::pythia_stream); - const long* sip = engine->getSeeds(); - long int si1 = sip[0]; - long int si2 = sip[1]; - - pyinit_(frame,beam,target,&winval, - strlen(frame),strlen(beam),strlen(target) - ); - - // ... and set them back to the stream for proper save - PythiaChL::p_AtRndmGenSvc->CreateStream(si1, si2, PythiaChL::pythia_stream); - - PythiaChL::pythia_stream = "PYTHIA"; - - // std::cout << " ****** AFTER PYINIT ********" << std::endl; - // std::cout << setiosflags(ios::fixed); - // std::cout << " MSTU(11) " - // << std::setw(3) << setprecision(0) << this->pydat1().mstu(11) << " MSTU(20) " - // << std::setw(3) << setprecision(0) << this->pydat1().mstu(20) << " MSTU(118) " - // << std::setw(3) << setprecision(0) << this->pydat1().mstu(118) << std::endl; - // std::cout << " PARU(108) " - // << std::setw(10) << setprecision(8) << this->pydat1().paru(108) << " PARU(117) " - // << std::setw(10) << setprecision(8) << this->pydat1().paru(117) << " PARU(118) " - // << std::setw(10) << setprecision(8) << this->pydat1().paru(118) << std::endl; - // for (int ii = 210; ii < 353; ++ii) - // { - // std::cout << " BRAT(" << ii << ") " - // << std::setw(10) << setprecision(8) << this->pydat3().brat(ii) << std::endl; - // } - // std::cout << " MDCY(310) " - // << std::setw(3) << setprecision(0) << this->pydat3().mdcy(310,1) << ", " - // << std::setw(3) << setprecision(0) << this->pydat3().mdcy(310,2) << ", " - // << std::setw(3) << setprecision(0) << this->pydat3().mdcy(310,3); - - // std::cout << std::resetiosflags(std::ios::fixed) - // << std::endl; - - pylist_(&minlist); - m_events = 0; - // cout << " kfpr ============ " << this->pyint2().kfpr(186,2) <<endl; - // cout << " kfpr ============ " << this->pyint2().kfpr(187,2) <<endl; - - // Decay table - const char *p_envar1="PYDAT"; - // char *p_envval1=0; - // p_envval1= - getenv(p_envar1); - //---------------------------------------------------------- - // This is the decay table file - // - // int mode=2; - // int lun=37; - // pyupda_(&mode,&lun); - // cldcay_(&lun); - - // Set size of common blocks in HEPEVT: note these correspond to stdhep - HepMC::HEPEVT_Wrapper::set_sizeof_int(4); - HepMC::HEPEVT_Wrapper::set_sizeof_real(8); - HepMC::HEPEVT_Wrapper::set_max_number_entries(10000); - - return StatusCode::SUCCESS; -} - - -//--------------------------------------------------------------------------- - - -StatusCode PythiaChL::callGenerator() { - ATH_MSG_DEBUG("PYTHIACHL generating.\n" ); - - // Write/Read the random numbers to/from file if requested - if (m_RndmSwitch > 0) RandomNumberIO(); - - // Save the random number seeds in the event - CLHEP::HepRandomEngine* engine = PythiaChL::p_AtRndmGenSvc->GetEngine(PythiaChL::pythia_stream); - const long* s = engine->getSeeds(); - m_seeds.clear(); - m_seeds.push_back(s[0]); - m_seeds.push_back(s[1]); - - // Generate event - pyevnt_(); - - // Update event counter - ++m_events; - int mevlist=m_eventlistlevel; - // Is the event to be listed - if ( m_events >= m_firstlistevent && - m_events <= m_lastlistevent) { - ATH_MSG_DEBUG("PYEVNT event no. " << m_events << " will be listed"); - if (m_frame == "USER ") { - int uspr = 7; - pylist_(&uspr); // Special listing when external generator was selected - } - pylist_(&mevlist); // List this event if required - } - // Tell lunhep to convert from PYJETS to HEPEVT - int mconv=1; - // Do the conversion - // lunhep_(&mconv); // Use STDHEP translation routine 1999/01/27 CG - pyhepc_(&mconv); // Use STDHEP translation routine 1999/01/27 CG - if ( HepMC::HEPEVT_Wrapper::number_entries() <= 0 ) { - std::cout << "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" << std::endl; - std::cout << "!!! " << generator_name(m_ExternalProcess) << " TERMINATES NORMALY: NO MORE EVENTS IN FILE !!!" << std::endl; - std::cout << "!!! PLEASE IGNORE ANY ATHENA ERROR MESSAGES LIKE !!!" << std::endl; - std::cout << "!!! AthenaEventLoopMgr ERROR Terminating event processing loop due to errors !!!" << std::endl; - std::cout << "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" << std::endl; - return StatusCode::FAILURE; - } - HepMC::HEPEVT_Wrapper::set_event_number(m_events); - // HepMC::HEPEVT_Wrapper::print_hepevt(); - return StatusCode::SUCCESS; -} - - -//--------------------------------------------------------------------------- - - -StatusCode PythiaChL::genFinalize() { - ATH_MSG_INFO(" PYTHIACHL Ending. \n"); - for (std::vector<int>::iterator i = m_pystatlistlevel.begin(); i != m_pystatlistlevel.end(); ++i) { - ATH_MSG_INFO("Call PYSTAT at endRun with level " << *i); - pystat_(&(*i)); - } - std::cout << "MetaData: cross-section (nb)= " << 1000000. * this->pyint5().xsec(0,3) << std::endl; - return StatusCode::SUCCESS; -} - - -//--------------------------------------------------------------------------- - - -StatusCode PythiaChL::fillEvt(HepMC::GenEvent* evt) { - ATH_MSG_DEBUG("PYTHIACHL Atlas_HEPEVT Filling."); - store_Atlas_HEPEVT(); - - ATH_MSG_DEBUG("PYTHIACHL Filling."); - HepMC::IO_HEPEVT hepio; - hepio.set_print_inconsistency_errors(0); - //HepMC::IO_GenEvent output("dump.dat",ios::out); - - // Fill event into HepMC and transient store - // std::cout << "====================================================================" << std::endl; - // std::cout << " === Event dump IN PYTHIACHL: === " << std::endl; - // std::cout << "====================================================================" << std::endl; - // HepMC::HEPEVT_Wrapper::print_hepevt(); - - hepio.fill_next_event(evt); - int pr_id = PYTHIA + m_ExternalProcess + this->pyint1().mint(1); - if (m_ExternalProcess > 0) pr_id = PYTHIA + m_ExternalProcess; - evt->set_signal_process_id(pr_id); - evt->set_random_states(m_seeds); - evt->weights().push_back(this->pypars().pari(7)); - evt->weights().push_back(this->pypars().pari(9)); - evt->weights().push_back(this->pypars().pari(10)); - //evt -> print(); - //cout << " ----------------- END " << endl; - - // Set beam particle status = 4 - if (evt->valid_beam_particles()) { - evt->beam_particles().first->set_status(4); - evt->beam_particles().second->set_status(4); - } - - - // output << evt; - - // Convert cm->mm and GeV->MeV - // cmTomm(evt); - GeVToMeV(evt); - - return StatusCode::SUCCESS; -} - - - diff --git a/Generators/PythiaChL_i/src/components/PythiaChL_i_entries.cxx b/Generators/PythiaChL_i/src/components/PythiaChL_i_entries.cxx deleted file mode 100644 index 2585f9f93a4f3605eb1a73989436ef6c8d0a3322..0000000000000000000000000000000000000000 --- a/Generators/PythiaChL_i/src/components/PythiaChL_i_entries.cxx +++ /dev/null @@ -1,4 +0,0 @@ -#include "PythiaChL_i/PythiaChL.h" - -DECLARE_COMPONENT( PythiaChL ) - diff --git a/Generators/PythiaChL_i/src/pysghg_ChL.f b/Generators/PythiaChL_i/src/pysghg_ChL.f deleted file mode 100644 index 623e67ca01c3b43ad89eadd2dc623b7918b8893a..0000000000000000000000000000000000000000 --- a/Generators/PythiaChL_i/src/pysghg_ChL.f +++ /dev/null @@ -1,1384 +0,0 @@ -C...PYSGHG -C...Subprocess cross sections for Higgs processes, -C...except Higgs pairs in PYSGSU, but including WW scattering. -C...Auxiliary to PYSIGH. -c -c modified according to: -c >> Proc. of the Workshop on Standard Model (and more) at the LHC, -c >> CERN 2000-004, chapt. on Electroweak Physics, Haywood et al., eq. (72) -c >> AL1 = a4, as defined in figures of hep-ph/9912224 -c >> AL2 = a5, as defined in figures of hep-ph/9912224 -c -c - - - SUBROUTINE PYSGHG(NCHN,SIGS) - -C...Double precision and integer declarations - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) -C INTEGER PYK,PYCHGE,PYCOMP -C...Parameter statement to help give large particle numbers. - PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000, - &KEXCIT=4000000,KDIMEN=5000000) -C...Commonblocks - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) - COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5) - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) - COMMON/PYINT1/MINT(400),VINT(400) - COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2) - COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000) - COMMON/PYINT4/MWID(500),WIDS(500,5) - COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200) - COMMON/PYMSSM/IMSS(0:99),RMSS(0:99) - COMMON/PYSGCM/ISUB,ISUBSV,MMIN1,MMAX1,MMIN2,MMAX2,MMINA,MMAXA, - &KFAC(2,-40:40),COMFAC,FACK,FACA,SH,TH,UH,SH2,TH2,UH2,SQM3,SQM4, - &SHR,SQPTH,TAUP,BE34,CTH,X(2),SQMZ,SQMW,GMMZ,GMMW, - &AEM,AS,XW,XW1,XWC,XWV,POLL,POLR,POLLL,POLRR - SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYPARS/,/PYINT1/,/PYINT2/, - &/PYINT3/,/PYINT4/,/PYSUBS/,/PYMSSM/,/PYSGCM/ -C...Local arrays and complex variables - DIMENSION WDTP(0:400),WDTE(0:400,0:5) - COMPLEX*16 A004,A204,A114,A00U,A20U,A11U - COMPLEX*16 CIGTOT,CIZTOT,F0ALP,F1ALP,F2ALP,F0BET,F1BET,F2BET,FIF - -C...Convert H or A process into equivalent h one - IHIGG=1 - KFHIGG=25 - IF(ISUB.EQ.401.OR.ISUB.EQ.402) THEN - KFHIGG=KFPR(ISUB,1) - END IF - IF((ISUB.GE.151.AND.ISUB.LE.160).OR.(ISUB.GE.171.AND. - &ISUB.LE.190)) THEN - IHIGG=2 - IF(MOD(ISUB-1,10).GE.5) IHIGG=3 - KFHIGG=33+IHIGG - IF(ISUB.EQ.151.OR.ISUB.EQ.156) ISUB=3 - IF(ISUB.EQ.152.OR.ISUB.EQ.157) ISUB=102 - IF(ISUB.EQ.153.OR.ISUB.EQ.158) ISUB=103 - IF(ISUB.EQ.171.OR.ISUB.EQ.176) ISUB=24 - IF(ISUB.EQ.172.OR.ISUB.EQ.177) ISUB=26 - IF(ISUB.EQ.173.OR.ISUB.EQ.178) ISUB=123 - IF(ISUB.EQ.174.OR.ISUB.EQ.179) ISUB=124 - IF(ISUB.EQ.181.OR.ISUB.EQ.186) ISUB=121 - IF(ISUB.EQ.182.OR.ISUB.EQ.187) ISUB=122 - IF(ISUB.EQ.183.OR.ISUB.EQ.188) ISUB=111 - IF(ISUB.EQ.184.OR.ISUB.EQ.189) ISUB=112 - IF(ISUB.EQ.185.OR.ISUB.EQ.190) ISUB=113 - ENDIF - SQMH=PMAS(KFHIGG,1)**2 - GMMH=PMAS(KFHIGG,1)*PMAS(KFHIGG,2) - -C...Strongly interacting Z_L/W_L model of Dobado, Herrero, Terron - IF((MSTP(46).GE.3.AND.MSTP(46).LE.6).AND.(ISUB.EQ.71.OR.ISUB.EQ. - &72.OR.ISUB.EQ.73.OR.ISUB.EQ.76.OR.ISUB.EQ.77)) THEN -C...Calculate M_R and N_R functions for Higgs-like and QCD-like models - IF(MSTP(46).LE.4) THEN - HDTLH=LOG(PMAS(25,1)/PARP(44)) - HDTMR=(4.5D0*PARU(1)/SQRT(3D0)-74D0/9D0)/8D0+HDTLH/12D0 - HDTNR=-(1D0/18D0)+HDTLH/6D0 - ELSE - HDTNM=0.125D0*(1D0/(288D0*PARU(1)**2)+(PARP(47)/PARP(45))**2) - HDTLQ=LOG(PARP(45)/PARP(44)) - HDTMR=-((4D0*PARU(1))**2*0.5D0*HDTNM)+HDTLQ/12D0 - HDTNR=(4D0*PARU(1))**2*HDTNM+HDTLQ/6D0 - ENDIF - -C...Calculate lowest and next-to-lowest order partial wave amplitudes - HDTV=1D0/(16D0*PARU(1)*PARP(47)**2) - A00L=DBLE(HDTV*SH) - A20L=-(0.5D0*A00L) - A11L=A00L/6D0 -c >> ga -c >> following lines removed and replaced to apply the amplitudes given in -c >> Proc. of the Workshop on Standard Model (and more) at the LHC, -c >> CERN 2000-004, chapt. on Electroweak Physics, Haywood et al., eq. (72) -c >> AL1 = a4, as defined in figures of hep-ph/9912224 -c >> AL2 = a5, as defined in figures of hep-ph/9912224 -c -c HDTLS=LOG(SH/PARP(44)**2) -c A004=DBLE((HDTV*SH)**2/(4D0*PARU(1)))* -c & CMPLX(DBLE((176D0*HDTMR+112D0*HDTNR)/3D0+11D0/27D0- -c & (50D0/9D0)*HDTLS),DBLE(4D0*PARU(1))) -c A204=DBLE((HDTV*SH)**2/(4D0*PARU(1)))* -c & CMPLX(DBLE(32D0*(HDTMR+2D0*HDTNR)/3D0+25D0/54D0- -c & (20D0/9D0)*HDTLS),DBLE(PARU(1))) -c A114=DBLE((HDTV*SH)**2/(6D0*PARU(1)))* -c & CMPLX(DBLE(4D0*(-2D0*HDTMR+HDTNR)-1D0/18D0),DBLE(PARU(1)/6D0)) - AL1=PARP(199) - AL2=PARP(200) - pi=paru(1) - VV=PARP(47) - HDTLS=LOG(SH/PARP(45)**2) - A004=A00L*SH/(4D0*VV**2)* ( - & 16D0*(11*AL2+7*AL1)/3D0+ - & CMPLX(SNGL((101D0/9D0-50D0*HDTLS/9D0)/(16D0*PI**2)), - & SNGL(1./(4D0*PI))) - & ) - A114=A11L*SH/VV**2* ( - & 4D0*(AL1-2*AL2)+ - & (1./(16D0*PI**2))*CMPLX(SNGL(1.D0/9.D0),SNGL(PI/6D0)) - & ) - A204=-((A20L*SH)/(2D0*VV**2)* ( - & 32D0*(AL2+2*AL1)/3D0+ - & CMPLX(SNGL((273D0/54D0-20D0*HDTLS/9D0)/(16D0*PI**2)), - & SNGL(1./(16D0*PI))) - & )) -C ga << - write(*,*) "!" -C...Unitarize partial wave amplitudes with Pade or K-matrix method - IF(MSTP(46).EQ.3.OR.MSTP(46).EQ.5) THEN - A00U=A00L/(1D0-A004/A00L) - A20U=A20L/(1D0-A204/A20L) - A11U=A11L/(1D0-A114/A11L) - ELSE - A00U=(A00L+DBLE(A004))/(1D0-DCMPLX(0.D0,A00L+DBLE(A004))) - A20U=(A20L+DBLE(A204))/(1D0-DCMPLX(0.D0,A20L+DBLE(A204))) - A11U=(A11L+DBLE(A114))/(1D0-DCMPLX(0.D0,A11L+DBLE(A114))) - ENDIF - ENDIF - -C...Differential cross section expressions. - - IF(ISUB.LE.60) THEN - IF(ISUB.EQ.3) THEN -C...f + fbar -> h0 (or H0, or A0) - CALL PYWIDT(KFHIGG,SH,WDTP,WDTE) - HS=SHR*WDTP(0) - FACBW=4D0*COMFAC/((SH-SQMH)**2+HS**2) - IF(ABS(SHR-PMAS(KFHIGG,1)).GT.PARP(48)*PMAS(KFHIGG,2)) - & FACBW=0D0 - HP=AEM/(8D0*XW)*SH/SQMW*SH - HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4)) - DO 100 I=MMINA,MMAXA - IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 100 - IA=IABS(I) - RMQ=PYMRUN(IA,SH)**2/SH - HI=HP*RMQ - IF(IA.LE.10) HI=HP*RMQ*FACA/3D0 - IF(MSTP(4).GE.1.OR.IHIGG.GE.2) THEN - IKFI=1 - IF(IA.LE.10.AND.MOD(IA,2).EQ.0) IKFI=2 - IF(IA.GT.10) IKFI=3 - HI=HI*PARU(150+10*IHIGG+IKFI)**2 - IF(IMSS(1).NE.0.AND.IA.EQ.5) THEN - HI=HI/(1D0+RMSS(41))**2 - IF(IHIGG.NE.3) THEN - HI=HI*(1D0+RMSS(41)*PARU(152+10*IHIGG)/ - & PARU(151+10*IHIGG))**2 - ENDIF - ENDIF - ENDIF - NCHN=NCHN+1 - ISIG(NCHN,1)=I - ISIG(NCHN,2)=-I - ISIG(NCHN,3)=1 - SIGH(NCHN)=HI*FACBW*HF - 100 CONTINUE - - ELSEIF(ISUB.EQ.5) THEN -C...Z0 + Z0 -> h0 - CALL PYWIDT(25,SH,WDTP,WDTE) - HS=SHR*WDTP(0) - FACBW=4D0*COMFAC/((SH-SQMH)**2+HS**2) - IF(ABS(SHR-PMAS(25,1)).GT.PARP(48)*PMAS(25,2)) FACBW=0D0 - HP=AEM/(8D0*XW)*SH/SQMW*SH - HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4)) - HI=HP/4D0 - FACI=8D0/(PARU(1)**2*XW1)*(AEM*XWC)**2 - DO 120 I=MMIN1,MMAX1 - IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 120 - DO 110 J=MMIN2,MMAX2 - IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 110 - EI=KCHG(IABS(I),1)/3D0 - AI=SIGN(1D0,EI) - VI=AI-4D0*EI*XWV - EJ=KCHG(IABS(J),1)/3D0 - AJ=SIGN(1D0,EJ) - VJ=AJ-4D0*EJ*XWV - NCHN=NCHN+1 - ISIG(NCHN,1)=I - ISIG(NCHN,2)=J - ISIG(NCHN,3)=1 - SIGH(NCHN)=FACI*(VI**2+AI**2)*(VJ**2+AJ**2)*HI*FACBW*HF - 110 CONTINUE - 120 CONTINUE - - ELSEIF(ISUB.EQ.8) THEN -C...W+ + W- -> h0 - CALL PYWIDT(25,SH,WDTP,WDTE) - HS=SHR*WDTP(0) - FACBW=4D0*COMFAC/((SH-SQMH)**2+HS**2) - IF(ABS(SHR-PMAS(25,1)).GT.PARP(48)*PMAS(25,2)) FACBW=0D0 - HP=AEM/(8D0*XW)*SH/SQMW*SH - HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4)) - HI=HP/2D0 - FACI=1D0/(4D0*PARU(1)**2)*(AEM/XW)**2 - DO 140 I=MMIN1,MMAX1 - IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 140 - EI=SIGN(1D0,DBLE(I))*KCHG(IABS(I),1) - DO 130 J=MMIN2,MMAX2 - IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 130 - EJ=SIGN(1D0,DBLE(J))*KCHG(IABS(J),1) - IF(EI*EJ.GT.0D0) GOTO 130 - NCHN=NCHN+1 - ISIG(NCHN,1)=I - ISIG(NCHN,2)=J - ISIG(NCHN,3)=1 - SIGH(NCHN)=FACI*VINT(180+I)*VINT(180+J)*HI*FACBW*HF - 130 CONTINUE - 140 CONTINUE - - ELSEIF(ISUB.EQ.24) THEN -C...f + fbar -> Z0 + h0 (or H0, or A0) -C...Propagators: Z0, h0 as simulated in PYOFSH and as desired - HBW3=GMMZ/((SQM3-SQMZ)**2+GMMZ**2) - CALL PYWIDT(23,SQM3,WDTP,WDTE) - GMMZ3=SQRT(SQM3)*WDTP(0) - HBW3C=GMMZ3/((SQM3-SQMZ)**2+GMMZ3**2) - HBW4=GMMH/((SQM4-SQMH)**2+GMMH**2) - CALL PYWIDT(KFHIGG,SQM4,WDTP,WDTE) - GMMH4=SQRT(SQM4)*WDTP(0) - HBW4C=GMMH4/((SQM4-SQMH)**2+GMMH4**2) - THUH=MAX(TH*UH-SQM3*SQM4,SH*CKIN(3)**2) - FACHZ=COMFAC*(HBW3C/HBW3)*(HBW4C/HBW4)*8D0*(AEM*XWC)**2* - & (THUH+2D0*SH*SQM3)/((SH-SQMZ)**2+GMMZ**2) - FACHZ=FACHZ*WIDS(23,2)*WIDS(KFHIGG,2) - IF(MSTP(4).GE.1.OR.IHIGG.GE.2) FACHZ=FACHZ* - & PARU(154+10*IHIGG)**2 - DO 150 I=MMINA,MMAXA - IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 150 - EI=KCHG(IABS(I),1)/3D0 - AI=SIGN(1D0,EI) - VI=AI-4D0*EI*XWV - FCOI=1D0 - IF(IABS(I).LE.10) FCOI=FACA/3D0 - NCHN=NCHN+1 - ISIG(NCHN,1)=I - ISIG(NCHN,2)=-I - ISIG(NCHN,3)=1 - SIGH(NCHN)=FACHZ*FCOI*(VI**2+AI**2) - 150 CONTINUE - - ELSEIF(ISUB.EQ.26) THEN -C...f + fbar' -> W+/- + h0 (or H0, or A0) -C...Propagators: W+-, h0 as simulated in PYOFSH and as desired - HBW3=GMMW/((SQM3-SQMW)**2+GMMW**2) - CALL PYWIDT(24,SQM3,WDTP,WDTE) - GMMW3=SQRT(SQM3)*WDTP(0) - HBW3C=GMMW3/((SQM3-SQMW)**2+GMMW3**2) - HBW4=GMMH/((SQM4-SQMH)**2+GMMH**2) - CALL PYWIDT(KFHIGG,SQM4,WDTP,WDTE) - GMMH4=SQRT(SQM4)*WDTP(0) - HBW4C=GMMH4/((SQM4-SQMH)**2+GMMH4**2) - THUH=MAX(TH*UH-SQM3*SQM4,SH*CKIN(3)**2) - FACHW=COMFAC*0.125D0*(AEM/XW)**2*(THUH+2D0*SH*SQM3)/ - & ((SH-SQMW)**2+GMMW**2)*(HBW3C/HBW3)*(HBW4C/HBW4) - FACHW=FACHW*WIDS(KFHIGG,2) - IF(MSTP(4).GE.1.OR.IHIGG.GE.2) FACHW=FACHW* - & PARU(155+10*IHIGG)**2 - DO 170 I=MMIN1,MMAX1 - IA=IABS(I) - IF(I.EQ.0.OR.IA.GT.20.OR.KFAC(1,I).EQ.0) GOTO 170 - DO 160 J=MMIN2,MMAX2 - JA=IABS(J) - IF(J.EQ.0.OR.JA.GT.20.OR.KFAC(1,J).EQ.0) GOTO 160 - IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 160 - IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10)) - & GOTO 160 - KCHW=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3 - FCKM=1D0 - IF(IA.LE.10) FCKM=VCKM((IA+1)/2,(JA+1)/2) - FCOI=1D0 - IF(IA.LE.10) FCOI=FACA/3D0 - NCHN=NCHN+1 - ISIG(NCHN,1)=I - ISIG(NCHN,2)=J - ISIG(NCHN,3)=1 - SIGH(NCHN)=FACHW*FCOI*FCKM*WIDS(24,(5-KCHW)/2) - 160 CONTINUE - 170 CONTINUE - - ELSEIF(ISUB.EQ.32) THEN -C...f + g -> f + h0 (q + g -> q + h0 only) - FHCQ=COMFAC*FACA*AS*AEM/XW*1D0/24D0 -C...H propagator: as simulated in PYOFSH and as desired - SQMHC=PMAS(25,1)**2 - GMMHC=PMAS(25,1)*PMAS(25,2) - HBW4=GMMHC/((SQM4-SQMHC)**2+GMMHC**2) - CALL PYWIDT(25,SQM4,WDTP,WDTE) - GMMHCC=SQRT(SQM4)*WDTP(0) - HBW4C=GMMHCC/((SQM4-SQMHC)**2+GMMHCC**2) - FHCQ=FHCQ*HBW4C/HBW4 - DO 190 I=MMINA,MMAXA - IA=IABS(I) - IF(IA.NE.5) GOTO 190 - SQML=PYMRUN(IA,SH)**2 - SQMQ=PMAS(IA,1)**2 - FACHCQ=FHCQ*SQML/SQMW* - & (SH/(SQMQ-UH)+2D0*SQMQ*(SQM4-UH)/(SQMQ-UH)**2+(SQMQ-UH)/SH- - & 2D0*SQMQ/(SQMQ-UH)+2D0*(SQM4-UH)/(SQMQ-UH)* - & (SQM4-SQMQ-SH)/SH) - DO 180 ISDE=1,2 - IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 180 - IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 180 - NCHN=NCHN+1 - ISIG(NCHN,ISDE)=I - ISIG(NCHN,3-ISDE)=21 - ISIG(NCHN,3)=1 - SIGH(NCHN)=FACHCQ*WIDS(25,2) - 180 CONTINUE - 190 CONTINUE - ENDIF - - ELSEIF(ISUB.LE.80) THEN - IF(ISUB.EQ.71) THEN -C...Z0 + Z0 -> Z0 + Z0 - IF(SH.LE.4.01D0*SQMZ) GOTO 220 - - IF(MSTP(46).LE.2) THEN -C...Exact scattering ME:s for on-mass-shell gauge bosons - BE2=1D0-4D0*SQMZ/SH - TH=-(0.5D0*SH*BE2*(1D0-CTH)) - UH=-(0.5D0*SH*BE2*(1D0+CTH)) - IF(MAX(TH,UH).GT.-1D0) GOTO 220 - SHANG=1D0/XW1*SQMW/SQMZ*(1D0+BE2)**2 - ASHRE=(SH-SQMH)/((SH-SQMH)**2+GMMH**2)*SHANG - ASHIM=-(GMMH/((SH-SQMH)**2+GMMH**2)*SHANG) - THANG=1D0/XW1*SQMW/SQMZ*(BE2-CTH)**2 - ATHRE=(TH-SQMH)/((TH-SQMH)**2+GMMH**2)*THANG - ATHIM=-(GMMH/((TH-SQMH)**2+GMMH**2)*THANG) - UHANG=1D0/XW1*SQMW/SQMZ*(BE2+CTH)**2 - AUHRE=(UH-SQMH)/((UH-SQMH)**2+GMMH**2)*UHANG - AUHIM=-(GMMH/((UH-SQMH)**2+GMMH**2)*UHANG) - FACZZ=COMFAC*1D0/(4096D0*PARU(1)**2*16D0*XW1**2)* - & (AEM/XW)**4*(SH/SQMW)**2*(SQMZ/SQMW)*SH2 - IF(MSTP(46).LE.0) FACZZ=FACZZ*(ASHRE**2+ASHIM**2) - IF(MSTP(46).EQ.1) FACZZ=FACZZ*((ASHRE+ATHRE+AUHRE)**2+ - & (ASHIM+ATHIM+AUHIM)**2) - IF(MSTP(46).EQ.2) FACZZ=0D0 - - ELSE -C...Strongly interacting Z_L/W_L model of Dobado, Herrero, Terron - FACZZ=COMFAC*(AEM/(16D0*PARU(1)*XW*XW1))**2*(64D0/9D0)* - & ABS(A00U+2D0*A20U)**2 - ENDIF - FACZZ=FACZZ*WIDS(23,1) - - DO 210 I=MMIN1,MMAX1 - IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 210 - EI=KCHG(IABS(I),1)/3D0 - AI=SIGN(1D0,EI) - VI=AI-4D0*EI*XWV - AVI=AI**2+VI**2 - DO 200 J=MMIN2,MMAX2 - IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 200 - EJ=KCHG(IABS(J),1)/3D0 - AJ=SIGN(1D0,EJ) - VJ=AJ-4D0*EJ*XWV - AVJ=AJ**2+VJ**2 - NCHN=NCHN+1 - ISIG(NCHN,1)=I - ISIG(NCHN,2)=J - ISIG(NCHN,3)=1 - SIGH(NCHN)=0.5D0*FACZZ*AVI*AVJ - 200 CONTINUE - 210 CONTINUE - 220 CONTINUE - - ELSEIF(ISUB.EQ.72) THEN -C...Z0 + Z0 -> W+ + W- - IF(SH.LE.4.01D0*SQMZ) GOTO 250 - - IF(MSTP(46).LE.2) THEN -C...Exact scattering ME:s for on-mass-shell gauge bosons - BE2=SQRT((1D0-4D0*SQMW/SH)*(1D0-4D0*SQMZ/SH)) - CTH2=CTH**2 - TH=-(0.5D0*SH*(1D0-2D0*(SQMW+SQMZ)/SH-BE2*CTH)) - UH=-(0.5D0*SH*(1D0-2D0*(SQMW+SQMZ)/SH+BE2*CTH)) - IF(MAX(TH,UH).GT.-1D0) GOTO 250 - SHANG=4D0*SQRT(SQMW/(SQMZ*XW1))*(1D0-2D0*SQMW/SH)* - & (1D0-2D0*SQMZ/SH) - ASHRE=(SH-SQMH)/((SH-SQMH)**2+GMMH**2)*SHANG - ASHIM=-(GMMH/((SH-SQMH)**2+GMMH**2)*SHANG) - ATWRE=XW1/SQMZ*SH/(TH-SQMW)*((CTH-BE2)**2*(3D0/2D0+BE2/2D0* - & CTH-(SQMW+SQMZ)/SH+(SQMW-SQMZ)**2/(SH*SQMW))+4D0* - & ((SQMW+SQMZ)/SH*(1D0-3D0*CTH2)+8D0*SQMW*SQMZ/SH2* - & (2D0*CTH2-1D0)+4D0*(SQMW**2+SQMZ**2)/SH2*CTH2+ - & 2D0*(SQMW+SQMZ)/SH*BE2*CTH)) - ATWIM=0D0 - AUWRE=XW1/SQMZ*SH/(UH-SQMW)*((CTH+BE2)**2*(3D0/2D0-BE2/2D0* - & CTH-(SQMW+SQMZ)/SH+(SQMW-SQMZ)**2/(SH*SQMW))+4D0* - & ((SQMW+SQMZ)/SH*(1D0-3D0*CTH2)+8D0*SQMW*SQMZ/SH2* - & (2D0*CTH2-1D0)+4D0*(SQMW**2+SQMZ**2)/SH2*CTH2- - & 2D0*(SQMW+SQMZ)/SH*BE2*CTH)) - AUWIM=0D0 - A4RE=2D0*XW1/SQMZ*(3D0-CTH2-4D0*(SQMW+SQMZ)/SH) - A4IM=0D0 - FACWW=COMFAC*1D0/(4096D0*PARU(1)**2*16D0*XW1**2)* - & (AEM/XW)**4*(SH/SQMW)**2*(SQMZ/SQMW)*SH2 - IF(MSTP(46).LE.0) FACWW=FACWW*(ASHRE**2+ASHIM**2) - IF(MSTP(46).EQ.1) FACWW=FACWW*((ASHRE+ATWRE+AUWRE+A4RE)**2+ - & (ASHIM+ATWIM+AUWIM+A4IM)**2) - IF(MSTP(46).EQ.2) FACWW=FACWW*((ATWRE+AUWRE+A4RE)**2+ - & (ATWIM+AUWIM+A4IM)**2) - - ELSE -C...Strongly interacting Z_L/W_L model of Dobado, Herrero, Terron - FACWW=COMFAC*(AEM/(16D0*PARU(1)*XW*XW1))**2*(64D0/9D0)* - & ABS(A00U-A20U)**2 - ENDIF - FACWW=FACWW*WIDS(24,1) - - DO 240 I=MMIN1,MMAX1 - IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 240 - EI=KCHG(IABS(I),1)/3D0 - AI=SIGN(1D0,EI) - VI=AI-4D0*EI*XWV - AVI=AI**2+VI**2 - DO 230 J=MMIN2,MMAX2 - IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 230 - EJ=KCHG(IABS(J),1)/3D0 - AJ=SIGN(1D0,EJ) - VJ=AJ-4D0*EJ*XWV - AVJ=AJ**2+VJ**2 - NCHN=NCHN+1 - ISIG(NCHN,1)=I - ISIG(NCHN,2)=J - ISIG(NCHN,3)=1 - SIGH(NCHN)=FACWW*AVI*AVJ - 230 CONTINUE - 240 CONTINUE - 250 CONTINUE - - ELSEIF(ISUB.EQ.73) THEN -C...Z0 + W+/- -> Z0 + W+/- - IF(SH.LE.2D0*SQMZ+2D0*SQMW) GOTO 280 - - IF(MSTP(46).LE.2) THEN -C...Exact scattering ME:s for on-mass-shell gauge bosons - BE2=1D0-2D0*(SQMZ+SQMW)/SH+((SQMZ-SQMW)/SH)**2 - EP1=1D0-(SQMZ-SQMW)/SH - EP2=1D0+(SQMZ-SQMW)/SH - TH=-(0.5D0*SH*BE2*(1D0-CTH)) - UH=(SQMZ-SQMW)**2/SH-0.5D0*SH*BE2*(1D0+CTH) - IF(MAX(TH,UH).GT.-1D0) GOTO 280 - THANG=(BE2-EP1*CTH)*(BE2-EP2*CTH) - ATHRE=(TH-SQMH)/((TH-SQMH)**2+GMMH**2)*THANG - ATHIM=-(GMMH/((TH-SQMH)**2+GMMH**2)*THANG) - ASWRE=-(XW1/SQMZ*SH/(SH-SQMW)*(-(BE2*(EP1+EP2)**4*CTH)+ - & 1D0/4D0*(BE2+EP1*EP2)**2*((EP1-EP2)**2-4D0*BE2*CTH)+ - & 2D0*BE2*(BE2+EP1*EP2)*(EP1+EP2)**2*CTH- - & 1D0/16D0*SH/SQMW*(EP1**2-EP2**2)**2*(BE2+EP1*EP2)**2)) - ASWIM=0D0 - AUWRE=XW1/SQMZ*SH/(UH-SQMW)*(-(BE2*(EP2+EP1*CTH)* - & (EP1+EP2*CTH)*(BE2+EP1*EP2))+BE2*(EP2+EP1*CTH)* - & (BE2+EP1*EP2*CTH)*(2D0*EP2-EP2*CTH+EP1)- - & BE2*(EP2+EP1*CTH)**2*(BE2-EP2**2*CTH)-1D0/8D0* - & (BE2+EP1*EP2*CTH)**2*((EP1+EP2)**2+2D0*BE2*(1D0-CTH))+ - & 1D0/32D0*SH/SQMW*(BE2+EP1*EP2*CTH)**2* - & (EP1**2-EP2**2)**2-BE2*(EP1+EP2*CTH)*(EP2+EP1*CTH)* - & (BE2+EP1*EP2)+BE2*(EP1+EP2*CTH)*(BE2+EP1*EP2*CTH)* - & (2D0*EP1-EP1*CTH+EP2)-BE2*(EP1+EP2*CTH)**2* - & (BE2-EP1**2*CTH)-1D0/8D0*(BE2+EP1*EP2*CTH)**2* - & ((EP1+EP2)**2+2D0*BE2*(1D0-CTH))+1D0/32D0*SH/SQMW* - & (BE2+EP1*EP2*CTH)**2*(EP1**2-EP2**2)**2) - AUWIM=0D0 - A4RE=XW1/SQMZ*(EP1**2*EP2**2*(CTH**2-1D0)- - & 2D0*BE2*(EP1**2+EP2**2+EP1*EP2)*CTH-2D0*BE2*EP1*EP2) - A4IM=0D0 - FACZW=COMFAC*1D0/(4096D0*PARU(1)**2*4D0*XW1)*(AEM/XW)**4* - & (SH/SQMW)**2*SQRT(SQMZ/SQMW)*SH2 - IF(MSTP(46).LE.0) FACZW=0D0 - IF(MSTP(46).EQ.1) FACZW=FACZW*((ATHRE+ASWRE+AUWRE+A4RE)**2+ - & (ATHIM+ASWIM+AUWIM+A4IM)**2) - IF(MSTP(46).EQ.2) FACZW=FACZW*((ASWRE+AUWRE+A4RE)**2+ - & (ASWIM+AUWIM+A4IM)**2) - - ELSE -C...Strongly interacting Z_L/W_L model of Dobado, Herrero, Terron - FACZW=COMFAC*AEM**2/(64D0*PARU(1)**2*XW**2*XW1)*16D0* - & ABS(A20U+3D0*A11U*DBLE(CTH))**2 - ENDIF - FACZW=FACZW*WIDS(23,2) - - DO 270 I=MMIN1,MMAX1 - IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 270 - EI=KCHG(IABS(I),1)/3D0 - AI=SIGN(1D0,EI) - VI=AI-4D0*EI*XWV - AVI=AI**2+VI**2 - KCHWI=ISIGN(1,KCHG(IABS(I),1)*ISIGN(1,I)) - DO 260 J=MMIN2,MMAX2 - IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 260 - EJ=KCHG(IABS(J),1)/3D0 - AJ=SIGN(1D0,EJ) - VJ=AI-4D0*EJ*XWV - AVJ=AJ**2+VJ**2 - KCHWJ=ISIGN(1,KCHG(IABS(J),1)*ISIGN(1,J)) - NCHN=NCHN+1 - ISIG(NCHN,1)=I - ISIG(NCHN,2)=J - ISIG(NCHN,3)=1 - SIGH(NCHN)=FACZW*AVI*VINT(180+J)*WIDS(24,(5-KCHWJ)/2) - NCHN=NCHN+1 - ISIG(NCHN,1)=I - ISIG(NCHN,2)=J - ISIG(NCHN,3)=2 - SIGH(NCHN)=FACZW*VINT(180+I)*WIDS(24,(5-KCHWI)/2)*AVJ - 260 CONTINUE - 270 CONTINUE - 280 CONTINUE - - ELSEIF(ISUB.EQ.75) THEN -C...W+ + W- -> gamma + gamma - - ELSEIF(ISUB.EQ.76) THEN -C...W+ + W- -> Z0 + Z0 - IF(SH.LE.4.01D0*SQMZ) GOTO 310 - - IF(MSTP(46).LE.2) THEN -C...Exact scattering ME:s for on-mass-shell gauge bosons - BE2=SQRT((1D0-4D0*SQMW/SH)*(1D0-4D0*SQMZ/SH)) - CTH2=CTH**2 - TH=-(0.5D0*SH*(1D0-2D0*(SQMW+SQMZ)/SH-BE2*CTH)) - UH=-(0.5D0*SH*(1D0-2D0*(SQMW+SQMZ)/SH+BE2*CTH)) - IF(MAX(TH,UH).GT.-1D0) GOTO 310 - SHANG=4D0*SQRT(SQMW/(SQMZ*XW1))*(1D0-2D0*SQMW/SH)* - & (1D0-2D0*SQMZ/SH) - ASHRE=(SH-SQMH)/((SH-SQMH)**2+GMMH**2)*SHANG - ASHIM=-(GMMH/((SH-SQMH)**2+GMMH**2)*SHANG) - ATWRE=XW1/SQMZ*SH/(TH-SQMW)*((CTH-BE2)**2*(3D0/2D0+BE2/2D0* - & CTH-(SQMW+SQMZ)/SH+(SQMW-SQMZ)**2/(SH*SQMW))+4D0* - & ((SQMW+SQMZ)/SH*(1D0-3D0*CTH2)+8D0*SQMW*SQMZ/SH2* - & (2D0*CTH2-1D0)+4D0*(SQMW**2+SQMZ**2)/SH2*CTH2+ - & 2D0*(SQMW+SQMZ)/SH*BE2*CTH)) - ATWIM=0D0 - AUWRE=XW1/SQMZ*SH/(UH-SQMW)*((CTH+BE2)**2*(3D0/2D0-BE2/2D0* - & CTH-(SQMW+SQMZ)/SH+(SQMW-SQMZ)**2/(SH*SQMW))+4D0* - & ((SQMW+SQMZ)/SH*(1D0-3D0*CTH2)+8D0*SQMW*SQMZ/SH2* - & (2D0*CTH2-1D0)+4D0*(SQMW**2+SQMZ**2)/SH2*CTH2- - & 2D0*(SQMW+SQMZ)/SH*BE2*CTH)) - AUWIM=0D0 - A4RE=2D0*XW1/SQMZ*(3D0-CTH2-4D0*(SQMW+SQMZ)/SH) - A4IM=0D0 - FACZZ=COMFAC*1D0/(4096D0*PARU(1)**2)*(AEM/XW)**4* - & (SH/SQMW)**2*SH2 - IF(MSTP(46).LE.0) FACZZ=FACZZ*(ASHRE**2+ASHIM**2) - IF(MSTP(46).EQ.1) FACZZ=FACZZ*((ASHRE+ATWRE+AUWRE+A4RE)**2+ - & (ASHIM+ATWIM+AUWIM+A4IM)**2) - IF(MSTP(46).EQ.2) FACZZ=FACZZ*((ATWRE+AUWRE+A4RE)**2+ - & (ATWIM+AUWIM+A4IM)**2) - - ELSE -C...Strongly interacting Z_L/W_L model of Dobado, Herrero, Terron - FACZZ=COMFAC*(AEM/(4D0*PARU(1)*XW))**2*(64D0/9D0)* - & ABS(A00U-A20U)**2 - ENDIF - FACZZ=FACZZ*WIDS(23,1) - - DO 300 I=MMIN1,MMAX1 - IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 300 - EI=SIGN(1D0,DBLE(I))*KCHG(IABS(I),1) - DO 290 J=MMIN2,MMAX2 - IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 290 - EJ=SIGN(1D0,DBLE(J))*KCHG(IABS(J),1) - IF(EI*EJ.GT.0D0) GOTO 290 - NCHN=NCHN+1 - ISIG(NCHN,1)=I - ISIG(NCHN,2)=J - ISIG(NCHN,3)=1 - SIGH(NCHN)=0.5D0*FACZZ*VINT(180+I)*VINT(180+J) - 290 CONTINUE - 300 CONTINUE - 310 CONTINUE - - ELSEIF(ISUB.EQ.77) THEN -C...W+/- + W+/- -> W+/- + W+/- - IF(SH.LE.4.01D0*SQMW) GOTO 340 - - IF(MSTP(46).LE.2) THEN -C...Exact scattering ME:s for on-mass-shell gauge bosons - BE2=1D0-4D0*SQMW/SH - BE4=BE2**2 - CTH2=CTH**2 - CTH3=CTH**3 - TH=-(0.5D0*SH*BE2*(1D0-CTH)) - UH=-(0.5D0*SH*BE2*(1D0+CTH)) - IF(MAX(TH,UH).GT.-1D0) GOTO 340 - SHANG=(1D0+BE2)**2 - ASHRE=(SH-SQMH)/((SH-SQMH)**2+GMMH**2)*SHANG - ASHIM=-(GMMH/((SH-SQMH)**2+GMMH**2)*SHANG) - THANG=(BE2-CTH)**2 - ATHRE=(TH-SQMH)/((TH-SQMH)**2+GMMH**2)*THANG - ATHIM=-(GMMH/((TH-SQMH)**2+GMMH**2)*THANG) - UHANG=(BE2+CTH)**2 - AUHRE=(UH-SQMH)/((UH-SQMH)**2+GMMH**2)*UHANG - AUHIM=-(GMMH/((UH-SQMH)**2+GMMH**2)*UHANG) - SGZANG=1D0/SQMW*BE2*(3D0-BE2)**2*CTH - ASGRE=XW*SGZANG - ASGIM=0D0 - ASZRE=XW1*SH/(SH-SQMZ)*SGZANG - ASZIM=0D0 - TGZANG=1D0/SQMW*(BE2*(4D0-2D0*BE2+BE4)+BE2*(4D0-10D0*BE2+ - & BE4)*CTH+(2D0-11D0*BE2+10D0*BE4)*CTH2+BE2*CTH3) - ATGRE=0.5D0*XW*SH/TH*TGZANG - ATGIM=0D0 - ATZRE=0.5D0*XW1*SH/(TH-SQMZ)*TGZANG - ATZIM=0D0 - UGZANG=1D0/SQMW*(BE2*(4D0-2D0*BE2+BE4)-BE2*(4D0-10D0*BE2+ - & BE4)*CTH+(2D0-11D0*BE2+10D0*BE4)*CTH2-BE2*CTH3) - AUGRE=0.5D0*XW*SH/UH*UGZANG - AUGIM=0D0 - AUZRE=0.5D0*XW1*SH/(UH-SQMZ)*UGZANG - AUZIM=0D0 - A4ARE=1D0/SQMW*(1D0+2D0*BE2-6D0*BE2*CTH-CTH2) - A4AIM=0D0 - A4SRE=2D0/SQMW*(1D0+2D0*BE2-CTH2) - A4SIM=0D0 - FWW=COMFAC*1D0/(4096D0*PARU(1)**2)*(AEM/XW)**4* - & (SH/SQMW)**2*SH2 - IF(MSTP(46).LE.0) THEN - AWWARE=ASHRE - AWWAIM=ASHIM - AWWSRE=0D0 - AWWSIM=0D0 - ELSEIF(MSTP(46).EQ.1) THEN - AWWARE=ASHRE+ATHRE+ASGRE+ASZRE+ATGRE+ATZRE+A4ARE - AWWAIM=ASHIM+ATHIM+ASGIM+ASZIM+ATGIM+ATZIM+A4AIM - AWWSRE=-ATHRE-AUHRE+ATGRE+ATZRE+AUGRE+AUZRE+A4SRE - AWWSIM=-ATHIM-AUHIM+ATGIM+ATZIM+AUGIM+AUZIM+A4SIM - ELSE - AWWARE=ASGRE+ASZRE+ATGRE+ATZRE+A4ARE - AWWAIM=ASGIM+ASZIM+ATGIM+ATZIM+A4AIM - AWWSRE=ATGRE+ATZRE+AUGRE+AUZRE+A4SRE - AWWSIM=ATGIM+ATZIM+AUGIM+AUZIM+A4SIM - ENDIF - AWWA2=AWWARE**2+AWWAIM**2 - AWWS2=AWWSRE**2+AWWSIM**2 - - ELSE -C...Strongly interacting Z_L/W_L model of Dobado, Herrero, Terron - FWWA=COMFAC*(AEM/(4D0*PARU(1)*XW))**2*(64D0/9D0)* - & ABS(A00U+0.5D0*A20U+4.5D0*A11U*DBLE(CTH))**2 - FWWS=COMFAC*(AEM/(4D0*PARU(1)*XW))**2*64D0*ABS(A20U)**2 - ENDIF - - DO 330 I=MMIN1,MMAX1 - IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 330 - EI=SIGN(1D0,DBLE(I))*KCHG(IABS(I),1) - DO 320 J=MMIN2,MMAX2 - IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 320 - EJ=SIGN(1D0,DBLE(J))*KCHG(IABS(J),1) - IF(EI*EJ.LT.0D0) THEN -C...W+W- - IF(MSTP(45).EQ.1) GOTO 320 - IF(MSTP(46).LE.2) FACWW=FWW*AWWA2*WIDS(24,1) - IF(MSTP(46).GE.3) FACWW=FWWA*WIDS(24,1) - ELSE -C...W+W+/W-W- - IF(MSTP(45).EQ.2) GOTO 320 - IF(MSTP(46).LE.2) FACWW=FWW*AWWS2 - IF(MSTP(46).GE.3) FACWW=FWWS - IF(EI.GT.0D0) FACWW=FACWW*WIDS(24,4) - IF(EI.LT.0D0) FACWW=FACWW*WIDS(24,5) - ENDIF - NCHN=NCHN+1 - ISIG(NCHN,1)=I - ISIG(NCHN,2)=J - ISIG(NCHN,3)=1 - SIGH(NCHN)=FACWW*VINT(180+I)*VINT(180+J) - IF(EI*EJ.GT.0D0) SIGH(NCHN)=0.5D0*SIGH(NCHN) - 320 CONTINUE - 330 CONTINUE - 340 CONTINUE - ENDIF - - ELSEIF(ISUB.LE.120) THEN - IF(ISUB.EQ.102) THEN -C...g + g -> h0 (or H0, or A0) - CALL PYWIDT(KFHIGG,SH,WDTP,WDTE) - WDTP13=0D0 - DO 345 IDC=MDCY(KFHIGG,2),MDCY(KFHIGG,2)+MDCY(KFHIGG,3)-1 - IF(KFDP(IDC,1).EQ.21.AND.KFDP(IDC,2).EQ.21.AND. - & KFDP(IDC,3).EQ.0) WDTP13=PMAS(KFHIGG,2)*BRAT(IDC) - 345 CONTINUE - IF(WDTP13.EQ.0D0) CALL PYERRM(26, - & '(PYSGHG:) did not find Higgs -> g g channel') - HS=SHR*WDTP(0) - HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4)) - FACBW=4D0*COMFAC/((SH-SQMH)**2+HS**2) - IF(ABS(SHR-PMAS(KFHIGG,1)).GT.PARP(48)*PMAS(KFHIGG,2)) - & FACBW=0D0 - HI=SHR*WDTP13/32D0 - IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 350 - NCHN=NCHN+1 - ISIG(NCHN,1)=21 - ISIG(NCHN,2)=21 - ISIG(NCHN,3)=1 - SIGH(NCHN)=HI*FACBW*HF - 350 CONTINUE - - ELSEIF(ISUB.EQ.103) THEN -C...gamma + gamma -> h0 (or H0, or A0) - CALL PYWIDT(KFHIGG,SH,WDTP,WDTE) - WDTP14=0D0 - DO 355 IDC=MDCY(KFHIGG,2),MDCY(KFHIGG,2)+MDCY(KFHIGG,3)-1 - IF(KFDP(IDC,1).EQ.22.AND.KFDP(IDC,2).EQ.22.AND. - & KFDP(IDC,3).EQ.0) WDTP14=PMAS(KFHIGG,2)*BRAT(IDC) - 355 CONTINUE - IF(WDTP14.EQ.0D0) CALL PYERRM(26, - & '(PYSGHG:) did not find Higgs -> gamma gamma channel') - HS=SHR*WDTP(0) - HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4)) - FACBW=4D0*COMFAC/((SH-SQMH)**2+HS**2) - IF(ABS(SHR-PMAS(KFHIGG,1)).GT.PARP(48)*PMAS(KFHIGG,2)) - & FACBW=0D0 - HI=SHR*WDTP14*2D0 - IF(KFAC(1,22)*KFAC(2,22).EQ.0) GOTO 360 - NCHN=NCHN+1 - ISIG(NCHN,1)=22 - ISIG(NCHN,2)=22 - ISIG(NCHN,3)=1 - SIGH(NCHN)=HI*FACBW*HF - 360 CONTINUE - - ELSEIF(ISUB.EQ.110) THEN -C...f + fbar -> gamma + h0 - THUH=MAX(TH*UH,SH*CKIN(3)**2) - FACHG=COMFAC*(3D0*AEM**4)/(2D0*PARU(1)**2*XW*SQMW)*SH*THUH - FACHG=FACHG*WIDS(KFHIGG,2) -C...Calculate loop contributions for intermediate gamma* and Z0 - CIGTOT=DCMPLX(0D0,0D0) - CIZTOT=DCMPLX(0D0,0D0) - JMAX=3*MSTP(1)+1 - DO 370 J=1,JMAX - IF(J.LE.2*MSTP(1)) THEN - FNC=1D0 - EJ=KCHG(J,1)/3D0 - AJ=SIGN(1D0,EJ+0.1D0) - VJ=AJ-4D0*EJ*XWV - BALP=SQM4/(2D0*PMAS(J,1))**2 - BBET=SH/(2D0*PMAS(J,1))**2 - ELSEIF(J.LE.3*MSTP(1)) THEN - FNC=3D0 - JL=2*(J-2*MSTP(1))-1 - EJ=KCHG(10+JL,1)/3D0 - AJ=SIGN(1D0,EJ+0.1D0) - VJ=AJ-4D0*EJ*XWV - BALP=SQM4/(2D0*PMAS(10+JL,1))**2 - BBET=SH/(2D0*PMAS(10+JL,1))**2 - ELSE - BALP=SQM4/(2D0*PMAS(24,1))**2 - BBET=SH/(2D0*PMAS(24,1))**2 - ENDIF - BABI=1D0/(BALP-BBET) - IF(BALP.LT.1D0) THEN - F0ALP=DCMPLX(DBLE(ASIN(SQRT(BALP))),0D0) - F1ALP=F0ALP**2 - ELSE - F0ALP=DCMPLX(DBLE(LOG(SQRT(BALP)+SQRT(BALP-1D0))), - & -DBLE(0.5D0*PARU(1))) - F1ALP=-(F0ALP**2) - ENDIF - F2ALP=DBLE(SQRT(ABS(BALP-1D0)/BALP))*F0ALP - IF(BBET.LT.1D0) THEN - F0BET=DCMPLX(DBLE(ASIN(SQRT(BBET))),0D0) - F1BET=F0BET**2 - ELSE - F0BET=DCMPLX(DBLE(LOG(SQRT(BBET)+SQRT(BBET-1D0))), - & -DBLE(0.5D0*PARU(1))) - F1BET=-(F0BET**2) - ENDIF - F2BET=DBLE(SQRT(ABS(BBET-1D0)/BBET))*F0BET - IF(J.LE.3*MSTP(1)) THEN - FIF=DBLE(0.5D0*BABI)+DBLE(BABI**2)*(DBLE(0.5D0*(1D0-BALP+ - & BBET))*(F1BET-F1ALP)+DBLE(BBET)*(F2BET-F2ALP)) - CIGTOT=CIGTOT+DBLE(FNC*EJ**2)*FIF - CIZTOT=CIZTOT+DBLE(FNC*EJ*VJ)*FIF - ELSE - TXW=XW/XW1 - CIGTOT=CIGTOT-0.5*(DBLE(BABI*(1.5D0+BALP))+DBLE(BABI**2)* - & (DBLE(1.5D0-3D0*BALP+4D0*BBET)*(F1BET-F1ALP)+ - & DBLE(BBET*(2D0*BALP+3D0))*(F2BET-F2ALP))) - CIZTOT=CIZTOT-DBLE(0.5D0*BABI*XW1)*(DBLE(5D0-TXW+2D0*BALP* - & (1D0-TXW))*(1D0+DBLE(2D0*BABI*BBET)*(F2BET-F2ALP))+ - & DBLE(BABI*(4D0*BBET*(3D0-TXW)-(2D0*BALP-1D0)*(5D0-TXW)))* - & (F1BET-F1ALP)) - ENDIF - 370 CONTINUE - CIGTOT=CIGTOT/DBLE(SH) - CIZTOT=CIZTOT*DBLE(XWC)/DCMPLX(DBLE(SH-SQMZ),DBLE(GMMZ)) -C...Loop over initial flavours - DO 380 I=MMINA,MMAXA - IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 380 - EI=KCHG(IABS(I),1)/3D0 - AI=SIGN(1D0,EI) - VI=AI-4D0*EI*XWV - FCOI=1D0 - IF(IABS(I).LE.10) FCOI=FACA/3D0 - NCHN=NCHN+1 - ISIG(NCHN,1)=I - ISIG(NCHN,2)=-I - ISIG(NCHN,3)=1 - SIGH(NCHN)=FACHG*FCOI*(ABS(DBLE(EI)*CIGTOT+DBLE(VI)* - & CIZTOT)**2+AI**2*ABS(CIZTOT)**2) - 380 CONTINUE - - ELSEIF(ISUB.EQ.111) THEN -C...f + fbar -> g + h0 (q + qbar -> g + h0 only) - IF(MSTP(38).NE.0) THEN -C...Simple case: only do gg <-> h exactly. - CALL PYWIDT(KFHIGG,SQM4,WDTP,WDTE) - WDTP13=0D0 - DO 385 IDC=MDCY(KFHIGG,2),MDCY(KFHIGG,2)+MDCY(KFHIGG,3)-1 - IF(KFDP(IDC,1).EQ.21.AND.KFDP(IDC,2).EQ.21.AND. - & KFDP(IDC,3).EQ.0) WDTP13=PMAS(KFHIGG,2)*BRAT(IDC) - 385 CONTINUE - IF(WDTP13.EQ.0D0) CALL PYERRM(26, - & '(PYSGHG:) did not find Higgs -> g g channel') - FACGH=COMFAC*FACA*(2D0/9D0)*AS*(WDTP13/SQRT(SQM4))* - & (TH**2+UH**2)/(SH*SQM4) -C...Propagators: as simulated in PYOFSH and as desired - HBW4=GMMH/((SQM4-SQMH)**2+GMMH**2) - GMMHC=SQRT(SQM4)*WDTP(0) - HBW4C=SQRT(SQM4)*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))/ - & ((SQM4-SQMH)**2+GMMHC**2) - FACGH=FACGH*HBW4C/HBW4 - ELSE -C...Messy case: do full loop integrals - A5STUR=0D0 - A5STUI=0D0 - DO 390 I=1,2*MSTP(1) - SQMQ=PMAS(I,1)**2 - EPSS=4D0*SQMQ/SH - EPSH=4D0*SQMQ/SQMH - CALL PYWAUX(1,EPSS,W1SR,W1SI) - CALL PYWAUX(1,EPSH,W1HR,W1HI) - CALL PYWAUX(2,EPSS,W2SR,W2SI) - CALL PYWAUX(2,EPSH,W2HR,W2HI) - A5STUR=A5STUR+EPSH*(1D0+SH/(TH+UH)*(W1SR-W1HR)+ - & (0.25D0-SQMQ/(TH+UH))*(W2SR-W2HR)) - A5STUI=A5STUI+EPSH*(SH/(TH+UH)*(W1SI-W1HI)+ - & (0.25D0-SQMQ/(TH+UH))*(W2SI-W2HI)) - 390 CONTINUE - FACGH=COMFAC*FACA/(144D0*PARU(1)**2)*AEM/XW*AS**3*SQMH/SQMW* - & SQMH/SH*(UH**2+TH**2)/(UH+TH)**2*(A5STUR**2+A5STUI**2) - FACGH=FACGH*WIDS(25,2) - ENDIF - DO 400 I=MMINA,MMAXA - IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR. - & KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 400 - NCHN=NCHN+1 - ISIG(NCHN,1)=I - ISIG(NCHN,2)=-I - ISIG(NCHN,3)=1 - SIGH(NCHN)=FACGH - 400 CONTINUE - - ELSEIF(ISUB.EQ.112) THEN -C...f + g -> f + h0 (q + g -> q + h0 only) - IF(MSTP(38).NE.0) THEN -C...Simple case: only do gg <-> h exactly. - CALL PYWIDT(KFHIGG,SQM4,WDTP,WDTE) - WDTP13=0D0 - DO 405 IDC=MDCY(KFHIGG,2),MDCY(KFHIGG,2)+MDCY(KFHIGG,3)-1 - IF(KFDP(IDC,1).EQ.21.AND.KFDP(IDC,2).EQ.21.AND. - & KFDP(IDC,3).EQ.0) WDTP13=PMAS(KFHIGG,2)*BRAT(IDC) - 405 CONTINUE - IF(WDTP13.EQ.0D0) CALL PYERRM(26, - & '(PYSGHG:) did not find Higgs -> g g channel') - FACQH=COMFAC*FACA*(1D0/12D0)*AS*(WDTP13/SQRT(SQM4))* - & (SH**2+UH**2)/(-(TH*SQM4)) -C...Propagators: as simulated in PYOFSH and as desired - HBW4=GMMH/((SQM4-SQMH)**2+GMMH**2) - GMMHC=SQRT(SQM4)*WDTP(0) - HBW4C=SQRT(SQM4)*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))/ - & ((SQM4-SQMH)**2+GMMHC**2) - FACQH=FACQH*HBW4C/HBW4 - ELSE -C...Messy case: do full loop integrals - A5TSUR=0D0 - A5TSUI=0D0 - DO 410 I=1,2*MSTP(1) - SQMQ=PMAS(I,1)**2 - EPST=4D0*SQMQ/TH - EPSH=4D0*SQMQ/SQMH - CALL PYWAUX(1,EPST,W1TR,W1TI) - CALL PYWAUX(1,EPSH,W1HR,W1HI) - CALL PYWAUX(2,EPST,W2TR,W2TI) - CALL PYWAUX(2,EPSH,W2HR,W2HI) - A5TSUR=A5TSUR+EPSH*(1D0+TH/(SH+UH)*(W1TR-W1HR)+ - & (0.25D0-SQMQ/(SH+UH))*(W2TR-W2HR)) - A5TSUI=A5TSUI+EPSH*(TH/(SH+UH)*(W1TI-W1HI)+ - & (0.25D0-SQMQ/(SH+UH))*(W2TI-W2HI)) - 410 CONTINUE - FACQH=COMFAC*FACA/(384D0*PARU(1)**2)*AEM/XW*AS**3*SQMH/SQMW* - & SQMH/(-TH)*(UH**2+SH**2)/(UH+SH)**2*(A5TSUR**2+A5TSUI**2) - FACQH=FACQH*WIDS(25,2) - ENDIF - DO 430 I=MMINA,MMAXA - IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 430 - DO 420 ISDE=1,2 - IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 420 - IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 420 - NCHN=NCHN+1 - ISIG(NCHN,ISDE)=I - ISIG(NCHN,3-ISDE)=21 - ISIG(NCHN,3)=1 - SIGH(NCHN)=FACQH - 420 CONTINUE - 430 CONTINUE - - ELSEIF(ISUB.EQ.113) THEN -C...g + g -> g + h0 - IF(MSTP(38).NE.0) THEN -C...Simple case: only do gg <-> h exactly. - CALL PYWIDT(KFHIGG,SQM4,WDTP,WDTE) - WDTP13=0D0 - DO 435 IDC=MDCY(KFHIGG,2),MDCY(KFHIGG,2)+MDCY(KFHIGG,3)-1 - IF(KFDP(IDC,1).EQ.21.AND.KFDP(IDC,2).EQ.21.AND. - & KFDP(IDC,3).EQ.0) WDTP13=PMAS(KFHIGG,2)*BRAT(IDC) - 435 CONTINUE - IF(WDTP13.EQ.0D0) CALL PYERRM(26, - & '(PYSGHG:) did not find Higgs -> g g channel') - FACGH=COMFAC*FACA*(3D0/16D0)*AS*(WDTP13/SQRT(SQM4))* - & (SH**4+TH**4+UH**4+SQM4**4)/(SH*TH*UH*SQM4) -C...Propagators: as simulated in PYOFSH and as desired - HBW4=GMMH/((SQM4-SQMH)**2+GMMH**2) - GMMHC=SQRT(SQM4)*WDTP(0) - HBW4C=SQRT(SQM4)*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))/ - & ((SQM4-SQMH)**2+GMMHC**2) - FACGH=FACGH*HBW4C/HBW4 - ELSE -C...Messy case: do full loop integrals - A2STUR=0D0 - A2STUI=0D0 - A2USTR=0D0 - A2USTI=0D0 - A2TUSR=0D0 - A2TUSI=0D0 - A4STUR=0D0 - A4STUI=0D0 - DO 440 I=1,2*MSTP(1) - SQMQ=PMAS(I,1)**2 - EPSS=4D0*SQMQ/SH - EPST=4D0*SQMQ/TH - EPSU=4D0*SQMQ/UH - EPSH=4D0*SQMQ/SQMH - IF(EPSH.LT.1D-6) GOTO 440 - CALL PYWAUX(1,EPSS,W1SR,W1SI) - CALL PYWAUX(1,EPST,W1TR,W1TI) - CALL PYWAUX(1,EPSU,W1UR,W1UI) - CALL PYWAUX(1,EPSH,W1HR,W1HI) - CALL PYWAUX(2,EPSS,W2SR,W2SI) - CALL PYWAUX(2,EPST,W2TR,W2TI) - CALL PYWAUX(2,EPSU,W2UR,W2UI) - CALL PYWAUX(2,EPSH,W2HR,W2HI) - CALL PYI3AU(EPSS,TH/UH,Y3STUR,Y3STUI) - CALL PYI3AU(EPSS,UH/TH,Y3SUTR,Y3SUTI) - CALL PYI3AU(EPST,SH/UH,Y3TSUR,Y3TSUI) - CALL PYI3AU(EPST,UH/SH,Y3TUSR,Y3TUSI) - CALL PYI3AU(EPSU,SH/TH,Y3USTR,Y3USTI) - CALL PYI3AU(EPSU,TH/SH,Y3UTSR,Y3UTSI) - CALL PYI3AU(EPSH,SQMH/SH*TH/UH,YHSTUR,YHSTUI) - CALL PYI3AU(EPSH,SQMH/SH*UH/TH,YHSUTR,YHSUTI) - CALL PYI3AU(EPSH,SQMH/TH*SH/UH,YHTSUR,YHTSUI) - CALL PYI3AU(EPSH,SQMH/TH*UH/SH,YHTUSR,YHTUSI) - CALL PYI3AU(EPSH,SQMH/UH*SH/TH,YHUSTR,YHUSTI) - CALL PYI3AU(EPSH,SQMH/UH*TH/SH,YHUTSR,YHUTSI) - W3STUR=YHSTUR-Y3STUR-Y3UTSR - W3STUI=YHSTUI-Y3STUI-Y3UTSI - W3SUTR=YHSUTR-Y3SUTR-Y3TUSR - W3SUTI=YHSUTI-Y3SUTI-Y3TUSI - W3TSUR=YHTSUR-Y3TSUR-Y3USTR - W3TSUI=YHTSUI-Y3TSUI-Y3USTI - W3TUSR=YHTUSR-Y3TUSR-Y3SUTR - W3TUSI=YHTUSI-Y3TUSI-Y3SUTI - W3USTR=YHUSTR-Y3USTR-Y3TSUR - W3USTI=YHUSTI-Y3USTI-Y3TSUI - W3UTSR=YHUTSR-Y3UTSR-Y3STUR - W3UTSI=YHUTSI-Y3UTSI-Y3STUI - B2STUR=SQMQ/SQMH**2*(SH*(UH-SH)/(SH+UH)+2D0*TH*UH* - & (UH+2D0*SH)/(SH+UH)**2*(W1TR-W1HR)+(SQMQ-SH/4D0)* - & (0.5D0*W2SR+0.5D0*W2HR-W2TR+W3STUR)+SH2*(2D0*SQMQ/ - & (SH+UH)**2-0.5D0/(SH+UH))*(W2TR-W2HR)+0.5D0*TH*UH/SH* - & (W2HR-2D0*W2TR)+0.125D0*(SH-12D0*SQMQ-4D0*TH*UH/SH)*W3TSUR) - B2STUI=SQMQ/SQMH**2*(2D0*TH*UH*(UH+2D0*SH)/(SH+UH)**2* - & (W1TI-W1HI)+(SQMQ-SH/4D0)*(0.5D0*W2SI+0.5D0*W2HI-W2TI+ - & W3STUI)+SH2*(2D0*SQMQ/(SH+UH)**2-0.5D0/(SH+UH))* - & (W2TI-W2HI)+0.5D0*TH*UH/SH*(W2HI-2D0*W2TI)+0.125D0* - & (SH-12D0*SQMQ-4D0*TH*UH/SH)*W3TSUI) - B2SUTR=SQMQ/SQMH**2*(SH*(TH-SH)/(SH+TH)+2D0*UH*TH* - & (TH+2D0*SH)/(SH+TH)**2*(W1UR-W1HR)+(SQMQ-SH/4D0)* - & (0.5D0*W2SR+0.5D0*W2HR-W2UR+W3SUTR)+SH2*(2D0*SQMQ/ - & (SH+TH)**2-0.5D0/(SH+TH))*(W2UR-W2HR)+0.5D0*UH*TH/SH* - & (W2HR-2D0*W2UR)+0.125D0*(SH-12D0*SQMQ-4D0*UH*TH/SH)*W3USTR) - B2SUTI=SQMQ/SQMH**2*(2D0*UH*TH*(TH+2D0*SH)/(SH+TH)**2* - & (W1UI-W1HI)+(SQMQ-SH/4D0)*(0.5D0*W2SI+0.5D0*W2HI-W2UI+ - & W3SUTI)+SH2*(2D0*SQMQ/(SH+TH)**2-0.5D0/(SH+TH))* - & (W2UI-W2HI)+0.5D0*UH*TH/SH*(W2HI-2D0*W2UI)+0.125D0* - & (SH-12D0*SQMQ-4D0*UH*TH/SH)*W3USTI) - B2TSUR=SQMQ/SQMH**2*(TH*(UH-TH)/(TH+UH)+2D0*SH*UH* - & (UH+2D0*TH)/(TH+UH)**2*(W1SR-W1HR)+(SQMQ-TH/4D0)* - & (0.5D0*W2TR+0.5D0*W2HR-W2SR+W3TSUR)+TH2*(2D0*SQMQ/ - & (TH+UH)**2-0.5D0/(TH+UH))*(W2SR-W2HR)+0.5D0*SH*UH/TH* - & (W2HR-2D0*W2SR)+0.125D0*(TH-12D0*SQMQ-4D0*SH*UH/TH)*W3STUR) - B2TSUI=SQMQ/SQMH**2*(2D0*SH*UH*(UH+2D0*TH)/(TH+UH)**2* - & (W1SI-W1HI)+(SQMQ-TH/4D0)*(0.5D0*W2TI+0.5D0*W2HI-W2SI+ - & W3TSUI)+TH2*(2D0*SQMQ/(TH+UH)**2-0.5D0/(TH+UH))* - & (W2SI-W2HI)+0.5D0*SH*UH/TH*(W2HI-2D0*W2SI)+0.125D0* - & (TH-12D0*SQMQ-4D0*SH*UH/TH)*W3STUI) - B2TUSR=SQMQ/SQMH**2*(TH*(SH-TH)/(TH+SH)+2D0*UH*SH* - & (SH+2D0*TH)/(TH+SH)**2*(W1UR-W1HR)+(SQMQ-TH/4D0)* - & (0.5D0*W2TR+0.5D0*W2HR-W2UR+W3TUSR)+TH2*(2D0*SQMQ/ - & (TH+SH)**2-0.5D0/(TH+SH))*(W2UR-W2HR)+0.5D0*UH*SH/TH* - & (W2HR-2D0*W2UR)+0.125D0*(TH-12D0*SQMQ-4D0*UH*SH/TH)*W3UTSR) - B2TUSI=SQMQ/SQMH**2*(2D0*UH*SH*(SH+2D0*TH)/(TH+SH)**2* - & (W1UI-W1HI)+(SQMQ-TH/4D0)*(0.5D0*W2TI+0.5D0*W2HI-W2UI+ - & W3TUSI)+TH2*(2D0*SQMQ/(TH+SH)**2-0.5D0/(TH+SH))* - & (W2UI-W2HI)+0.5D0*UH*SH/TH*(W2HI-2D0*W2UI)+0.125D0* - & (TH-12D0*SQMQ-4D0*UH*SH/TH)*W3UTSI) - B2USTR=SQMQ/SQMH**2*(UH*(TH-UH)/(UH+TH)+2D0*SH*TH* - & (TH+2D0*UH)/(UH+TH)**2*(W1SR-W1HR)+(SQMQ-UH/4D0)* - & (0.5D0*W2UR+0.5D0*W2HR-W2SR+W3USTR)+UH2*(2D0*SQMQ/ - & (UH+TH)**2-0.5D0/(UH+TH))*(W2SR-W2HR)+0.5D0*SH*TH/UH* - & (W2HR-2D0*W2SR)+0.125D0*(UH-12D0*SQMQ-4D0*SH*TH/UH)*W3SUTR) - B2USTI=SQMQ/SQMH**2*(2D0*SH*TH*(TH+2D0*UH)/(UH+TH)**2* - & (W1SI-W1HI)+(SQMQ-UH/4D0)*(0.5D0*W2UI+0.5D0*W2HI-W2SI+ - & W3USTI)+UH2*(2D0*SQMQ/(UH+TH)**2-0.5D0/(UH+TH))* - & (W2SI-W2HI)+0.5D0*SH*TH/UH*(W2HI-2D0*W2SI)+0.125D0* - & (UH-12D0*SQMQ-4D0*SH*TH/UH)*W3SUTI) - B2UTSR=SQMQ/SQMH**2*(UH*(SH-UH)/(UH+SH)+2D0*TH*SH* - & (SH+2D0*UH)/(UH+SH)**2*(W1TR-W1HR)+(SQMQ-UH/4D0)* - & (0.5D0*W2UR+0.5D0*W2HR-W2TR+W3UTSR)+UH2*(2D0*SQMQ/ - & (UH+SH)**2-0.5D0/(UH+SH))*(W2TR-W2HR)+0.5D0*TH*SH/UH* - & (W2HR-2D0*W2TR)+0.125D0*(UH-12D0*SQMQ-4D0*TH*SH/UH)*W3TUSR) - B2UTSI=SQMQ/SQMH**2*(2D0*TH*SH*(SH+2D0*UH)/(UH+SH)**2* - & (W1TI-W1HI)+(SQMQ-UH/4D0)*(0.5D0*W2UI+0.5D0*W2HI-W2TI+ - & W3UTSI)+UH2*(2D0*SQMQ/(UH+SH)**2-0.5D0/(UH+SH))* - & (W2TI-W2HI)+0.5D0*TH*SH/UH*(W2HI-2D0*W2TI)+0.125D0* - & (UH-12D0*SQMQ-4D0*TH*SH/UH)*W3TUSI) - B4STUR=0.25D0*EPSH*(-(2D0/3D0)+0.25D0*(EPSH-1D0)* - & (W2SR-W2HR+W3STUR)) - B4STUI=0.25D0*EPSH*0.25D0*(EPSH-1D0)*(W2SI-W2HI+W3STUI) - B4TUSR=0.25D0*EPSH*(-(2D0/3D0)+0.25D0*(EPSH-1D0)* - & (W2TR-W2HR+W3TUSR)) - B4TUSI=0.25D0*EPSH*0.25D0*(EPSH-1D0)*(W2TI-W2HI+W3TUSI) - B4USTR=0.25D0*EPSH*(-(2D0/3D0)+0.25D0*(EPSH-1D0)* - & (W2UR-W2HR+W3USTR)) - B4USTI=0.25D0*EPSH*0.25D0*(EPSH-1D0)*(W2UI-W2HI+W3USTI) - A2STUR=A2STUR+B2STUR+B2SUTR - A2STUI=A2STUI+B2STUI+B2SUTI - A2USTR=A2USTR+B2USTR+B2UTSR - A2USTI=A2USTI+B2USTI+B2UTSI - A2TUSR=A2TUSR+B2TUSR+B2TSUR - A2TUSI=A2TUSI+B2TUSI+B2TSUI - A4STUR=A4STUR+B4STUR+B4USTR+B4TUSR - A4STUI=A4STUI+B4STUI+B4USTI+B4TUSI - 440 CONTINUE - FACGH=COMFAC*FACA*3D0/(128D0*PARU(1)**2)*AEM/XW*AS**3* - & SQMH/SQMW*SQMH**3/(SH*TH*UH)*(A2STUR**2+A2STUI**2+A2USTR**2+ - & A2USTI**2+A2TUSR**2+A2TUSI**2+A4STUR**2+A4STUI**2) - FACGH=FACGH*WIDS(25,2) - ENDIF - IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 450 - NCHN=NCHN+1 - ISIG(NCHN,1)=21 - ISIG(NCHN,2)=21 - ISIG(NCHN,3)=1 - SIGH(NCHN)=FACGH - 450 CONTINUE - ENDIF - - ELSEIF(ISUB.LE.170) THEN - IF(ISUB.EQ.121) THEN -C...g + g -> Q + Qbar + h0 - IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 460 - IA=KFPR(ISUBSV,2) - PMF=PYMRUN(IA,SH) - FACQQH=COMFAC*(4D0*PARU(1)*AEM/XW)*(4D0*PARU(1)*AS)**2* - & (0.5D0*PMF/PMAS(24,1))**2 - WID2=1D0 - IF(IA.EQ.6.OR.IA.EQ.7.OR.IA.EQ.8) WID2=WIDS(IA,1) - FACQQH=FACQQH*WID2 - IF(MSTP(4).GE.1.OR.IHIGG.GE.2) THEN - IKFI=1 - IF(IA.LE.10.AND.MOD(IA,2).EQ.0) IKFI=2 - IF(IA.GT.10) IKFI=3 - FACQQH=FACQQH*PARU(150+10*IHIGG+IKFI)**2 - IF(IMSS(1).NE.0.AND.IA.EQ.5) THEN - FACQQH=FACQQH/(1D0+RMSS(41))**2 - IF(IHIGG.NE.3) THEN - FACQQH=FACQQH*(1D0+RMSS(41)*PARU(152+10*IHIGG)/ - & PARU(151+10*IHIGG))**2 - ENDIF - ENDIF - ENDIF - CALL PYQQBH(WTQQBH) - CALL PYWIDT(KFHIGG,SH,WDTP,WDTE) - HS=SHR*WDTP(0) - HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4)) - FACBW=(1D0/PARU(1))*VINT(2)*HF/((SH-SQMH)**2+HS**2) - IF(ABS(SHR-PMAS(KFHIGG,1)).GT.PARP(48)*PMAS(KFHIGG,2)) - & FACBW=0D0 - NCHN=NCHN+1 - ISIG(NCHN,1)=21 - ISIG(NCHN,2)=21 - ISIG(NCHN,3)=1 - SIGH(NCHN)=FACQQH*WTQQBH*FACBW - 460 CONTINUE - - ELSEIF(ISUB.EQ.122) THEN -C...q + qbar -> Q + Qbar + h0 - IA=KFPR(ISUBSV,2) - PMF=PYMRUN(IA,SH) - FACQQH=COMFAC*(4D0*PARU(1)*AEM/XW)*(4D0*PARU(1)*AS)**2* - & (0.5D0*PMF/PMAS(24,1))**2 - WID2=1D0 - IF(IA.EQ.6.OR.IA.EQ.7.OR.IA.EQ.8) WID2=WIDS(IA,1) - FACQQH=FACQQH*WID2 - IF(MSTP(4).GE.1.OR.IHIGG.GE.2) THEN - IKFI=1 - IF(IA.LE.10.AND.MOD(IA,2).EQ.0) IKFI=2 - IF(IA.GT.10) IKFI=3 - FACQQH=FACQQH*PARU(150+10*IHIGG+IKFI)**2 - IF(IMSS(1).NE.0.AND.IA.EQ.5) THEN - FACQQH=FACQQH/(1D0+RMSS(41))**2 - IF(IHIGG.NE.3) THEN - FACQQH=FACQQH*(1D0+RMSS(41)*PARU(152+10*IHIGG)/ - & PARU(151+10*IHIGG))**2 - ENDIF - ENDIF - ENDIF - CALL PYQQBH(WTQQBH) - CALL PYWIDT(KFHIGG,SH,WDTP,WDTE) - HS=SHR*WDTP(0) - HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4)) - FACBW=(1D0/PARU(1))*VINT(2)*HF/((SH-SQMH)**2+HS**2) - IF(ABS(SHR-PMAS(KFHIGG,1)).GT.PARP(48)*PMAS(KFHIGG,2)) - & FACBW=0D0 - DO 470 I=MMINA,MMAXA - IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR. - & KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 470 - NCHN=NCHN+1 - ISIG(NCHN,1)=I - ISIG(NCHN,2)=-I - ISIG(NCHN,3)=1 - SIGH(NCHN)=FACQQH*WTQQBH*FACBW - 470 CONTINUE - - ELSEIF(ISUB.EQ.123) THEN -C...f + f' -> f + f' + h0 (or H0, or A0) (Z0 + Z0 -> h0 as -C...inner process) - FACNOR=COMFAC*(4D0*PARU(1)*AEM/(XW*XW1))**3*SQMZ/32D0 - IF(MSTP(4).GE.1.OR.IHIGG.GE.2) FACNOR=FACNOR* - & PARU(154+10*IHIGG)**2 - FACPRP=1D0/((VINT(215)-VINT(204)**2)* - & (VINT(216)-VINT(209)**2))**2 - FACZZ1=FACNOR*FACPRP*(0.5D0*TAUP*VINT(2))*VINT(219) - FACZZ2=FACNOR*FACPRP*VINT(217)*VINT(218) - CALL PYWIDT(KFHIGG,SH,WDTP,WDTE) - HS=SHR*WDTP(0) - HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4)) - FACBW=(1D0/PARU(1))*VINT(2)*HF/((SH-SQMH)**2+HS**2) - IF(ABS(SHR-PMAS(KFHIGG,1)).GT.PARP(48)*PMAS(KFHIGG,2)) - & FACBW=0D0 - DO 490 I=MMIN1,MMAX1 - IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 490 - IA=IABS(I) - DO 480 J=MMIN2,MMAX2 - IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 480 - JA=IABS(J) - EI=KCHG(IA,1)*ISIGN(1,I)/3D0 - AI=SIGN(1D0,KCHG(IA,1)+0.5D0)*ISIGN(1,I) - VI=AI-4D0*EI*XWV - EJ=KCHG(JA,1)*ISIGN(1,J)/3D0 - AJ=SIGN(1D0,KCHG(JA,1)+0.5D0)*ISIGN(1,J) - VJ=AJ-4D0*EJ*XWV - FACLR1=(VI**2+AI**2)*(VJ**2+AJ**2)+4D0*VI*AI*VJ*AJ - FACLR2=(VI**2+AI**2)*(VJ**2+AJ**2)-4D0*VI*AI*VJ*AJ - NCHN=NCHN+1 - ISIG(NCHN,1)=I - ISIG(NCHN,2)=J - ISIG(NCHN,3)=1 - SIGH(NCHN)=(FACLR1*FACZZ1+FACLR2*FACZZ2)*FACBW - 480 CONTINUE - 490 CONTINUE - - ELSEIF(ISUB.EQ.124) THEN -C...f + f' -> f" + f"' + h0 (or H0, or A0) (W+ + W- -> h0 as -C...inner process) - FACNOR=COMFAC*(4D0*PARU(1)*AEM/XW)**3*SQMW - IF(MSTP(4).GE.1.OR.IHIGG.GE.2) FACNOR=FACNOR* - & PARU(155+10*IHIGG)**2 - FACPRP=1D0/((VINT(215)-VINT(204)**2)* - & (VINT(216)-VINT(209)**2))**2 - FACWW=FACNOR*FACPRP*(0.5D0*TAUP*VINT(2))*VINT(219) - CALL PYWIDT(KFHIGG,SH,WDTP,WDTE) - HS=SHR*WDTP(0) - HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4)) - FACBW=(1D0/PARU(1))*VINT(2)*HF/((SH-SQMH)**2+HS**2) - IF(ABS(SHR-PMAS(KFHIGG,1)).GT.PARP(48)*PMAS(KFHIGG,2)) - & FACBW=0D0 - DO 510 I=MMIN1,MMAX1 - IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 510 - EI=SIGN(1D0,DBLE(I))*KCHG(IABS(I),1) - DO 500 J=MMIN2,MMAX2 - IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 500 - EJ=SIGN(1D0,DBLE(J))*KCHG(IABS(J),1) - IF(EI*EJ.GT.0D0) GOTO 500 - FACLR=VINT(180+I)*VINT(180+J) - NCHN=NCHN+1 - ISIG(NCHN,1)=I - ISIG(NCHN,2)=J - ISIG(NCHN,3)=1 - SIGH(NCHN)=FACLR*FACWW*FACBW - 500 CONTINUE - 510 CONTINUE - - ELSEIF(ISUB.EQ.143) THEN -C...f + fbar' -> H+/- - SQMHC=PMAS(37,1)**2 - CALL PYWIDT(37,SH,WDTP,WDTE) - HS=SHR*WDTP(0) - FACBW=4D0*COMFAC/((SH-SQMHC)**2+HS**2) - HP=AEM/(8D0*XW)*SH/SQMW*SH - DO 530 I=MMIN1,MMAX1 - IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 530 - IA=IABS(I) - IM=(MOD(IA,10)+1)/2 - DO 520 J=MMIN2,MMAX2 - IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 520 - JA=IABS(J) - JM=(MOD(JA,10)+1)/2 - IF(I*J.GT.0.OR.IA.EQ.JA.OR.IM.NE.JM) GOTO 520 - IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10)) - & GOTO 520 - IF(MOD(IA,2).EQ.0) THEN - IU=IA - IL=JA - ELSE - IU=JA - IL=IA - ENDIF - RML=PYMRUN(IL,SH)**2/SH - RMU=PYMRUN(IU,SH)**2/SH - HI=HP*(RML*PARU(141)**2+RMU/PARU(141)**2) - IF(IA.LE.10) HI=HI*FACA/3D0 - KCHHC=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3 - HF=SHR*(WDTE(0,1)+WDTE(0,(5-KCHHC)/2)+WDTE(0,4)) - NCHN=NCHN+1 - ISIG(NCHN,1)=I - ISIG(NCHN,2)=J - ISIG(NCHN,3)=1 - SIGH(NCHN)=HI*FACBW*HF - 520 CONTINUE - 530 CONTINUE - - ELSEIF(ISUB.EQ.161) THEN -C...f + g -> f' + H+/- (b + g -> t + H+/- only) -C...(choice of only b and t to avoid kinematics problems) - FHCQ=COMFAC*FACA*AS*AEM/XW*1D0/24 -C...H propagator: as simulated in PYOFSH and as desired - SQMHC=PMAS(37,1)**2 - GMMHC=PMAS(37,1)*PMAS(37,2) - HBW4=GMMHC/((SQM4-SQMHC)**2+GMMHC**2) - CALL PYWIDT(37,SQM4,WDTP,WDTE) - GMMHCC=SQRT(SQM4)*WDTP(0) - HBW4C=GMMHCC/((SQM4-SQMHC)**2+GMMHCC**2) - FHCQ=FHCQ*HBW4C/HBW4 - Q2RM=SH - IF(MSTP(32).EQ.12) Q2RM=PARP(194) - DO 550 I=MMINA,MMAXA - IA=IABS(I) - IF(IA.NE.5) GOTO 550 - SQML=PYMRUN(IA,Q2RM)**2 - IUA=IA+MOD(IA,2) - SQMQ=PYMRUN(IUA,Q2RM)**2 - FACHCQ=FHCQ*(SQML*PARU(141)**2+SQMQ/PARU(141)**2)/SQMW* - & (SH/(SQMQ-UH)+2D0*SQMQ*(SQMHC-UH)/(SQMQ-UH)**2+(SQMQ-UH)/SH- - & 2D0*SQMQ/(SQMQ-UH)+2D0*(SQMHC-UH)/(SQMQ-UH)* - & (SQMHC-SQMQ-SH)/SH) - KCHHC=ISIGN(1,KCHG(IA,1)*ISIGN(1,I)) - DO 540 ISDE=1,2 - IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 540 - IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 540 - NCHN=NCHN+1 - ISIG(NCHN,ISDE)=I - ISIG(NCHN,3-ISDE)=21 - ISIG(NCHN,3)=1 - SIGH(NCHN)=FACHCQ*WIDS(37,(5-KCHHC)/2) - IF(IUA.EQ.6) SIGH(NCHN)=SIGH(NCHN)*WIDS(6,(5+KCHHC)/2) - 540 CONTINUE - 550 CONTINUE - ENDIF - - ELSEIF(ISUB.LE.402) THEN - IF(ISUB.EQ.401) THEN -C... g + g -> t + bbar + H- - IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 560 - IA=KFPR(ISUBSV,2) - CALL PYSTBH(WTTBH) - CALL PYWIDT(KFHIGG,SH,WDTP,WDTE) - HS=SHR*WDTP(0) - FACBW=(1D0/PARU(1))*VINT(2)*HS/((SH-SQMH)**2+HS**2) - IF(ABS(SHR-PMAS(KFHIGG,1)).GT.PARP(48)*PMAS(KFHIGG,2)) - & FACBW=0D0 - NCHN=NCHN+1 - ISIG(NCHN,1)=21 - ISIG(NCHN,2)=21 - ISIG(NCHN,3)=1 - SIGH(NCHN)=2d0*COMFAC*WTTBH*FACBW -c Since we don't know yet if H+ or H-, assume H+ -c when calculating suppression due to closed channels. - SIGH(NCHN)=SIGH(NCHN)*WIDS(37,2)*WIDS(6,3) - IF(ABS(WIDS(37,2)-WIDS(37,3)) - & .GE.1D-6*(WIDS(37,2)+WIDS(37,3)).OR. - & ABS(WIDS(6,2)-WIDS(6,3)) - & .GE.1D-6*(WIDS(6,2)+WIDS(6,3))) THEN - WRITE(*,*)'Error: Process 401 cannot handle different' - WRITE(*,*)'decays for H+ and H- or t and tbar.' - WRITE(*,*)'Execution stopped.' - STOP - END IF - 560 CONTINUE - - ELSEIF(ISUB.EQ.402) THEN -C... q + qbar -> t + bbar + H- - IA=KFPR(ISUBSV,2) - CALL PYSTBH(WTTBH) - CALL PYWIDT(KFHIGG,SH,WDTP,WDTE) - HS=SHR*WDTP(0) - FACBW=(1D0/PARU(1))*VINT(2)*HS/((SH-SQMH)**2+HS**2) - IF(ABS(SHR-PMAS(KFHIGG,1)).GT.PARP(48)*PMAS(KFHIGG,2)) - & FACBW=0D0 - DO 570 I=MMINA,MMAXA - IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR. - & KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 570 - NCHN=NCHN+1 - ISIG(NCHN,1)=I - ISIG(NCHN,2)=-I - ISIG(NCHN,3)=1 - SIGH(NCHN)=2d0*COMFAC*WTTBH*FACBW -c Since we don't know yet if H+ or H-, assume H+ -c when calculating suppression due to closed channels. - SIGH(NCHN)=SIGH(NCHN)*WIDS(37,2)*WIDS(6,3) - IF(ABS(WIDS(37,2)-WIDS(37,3))/(WIDS(37,2)+WIDS(37,3)) - & .GE.1D-6.OR. - & ABS(WIDS(6,2)-WIDS(6,3))/(WIDS(6,2)+WIDS(6,3)) - & .GE.1D-6) THEN - WRITE(*,*)'Error: Process 402 cannot handle different' - WRITE(*,*)'decays for H+ and H- or t and tbar.' - WRITE(*,*)'Execution stopped.' - STOP - END IF - 570 CONTINUE - ENDIF - ENDIF - - RETURN - END - - diff --git a/Generators/PythiaExo_i/CMakeLists.txt b/Generators/PythiaExo_i/CMakeLists.txt deleted file mode 100644 index 9851a30e093b7069a5592c177fffa3696b0e4391..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/CMakeLists.txt +++ /dev/null @@ -1,196 +0,0 @@ -################################################################################ -# Package: PythiaExo_i -################################################################################ - -# Declare the package name: -atlas_subdir( PythiaExo_i ) - -# Declare the package's dependencies: -atlas_depends_on_subdirs( - PUBLIC - GaudiKernel - Generators/AcerMC_i - Generators/GeneratorModules - Generators/Pythia_i - Generators/Tauola_i - PRIVATE - Control/AthenaKernel - Control/StoreGate - Generators/AlpGen_i - Generators/ExoGraviton_i - Generators/GeneratorFortranCommon - Generators/GeneratorUtils - Generators/GravADD_i - Generators/MadGraph_i - Generators/TruthUtils - Generators/CompHep_i - Generators/MadCUP_i - Generators/Matchig_i - Generators/HvGen_i - Tools/PathResolver ) - -# External dependencies: -find_package( Boost COMPONENTS filesystem thread system ) -find_package( CLHEP ) -find_package( GSL ) -find_package( HepMC COMPONENTS HepMC HepMCfio ) -find_package( Lhapdf ) -find_package( Pythia6 ) - -# Remove the --as-needed linker flags: -atlas_disable_as_needed() - -# Component(s) in the package: -atlas_add_component( PythiaTau3Mu_i - src/PythiaTau3Mu.cxx src/Pydat1.cxx src/Pydatr.cxx src/Pydat2.cxx - src/Pydat3_62.cxx src/Pyssmt.cxx src/Pysubs.cxx src/Pypars.cxx - src/Pymssm.cxx src/Pyint1.cxx src/Pyint2.cxx src/Pyint5.cxx - src/Pytcsm.cxx src/upinit_py.F src/upevnt_py.F src/upveto_py.F - src/cldcay.F src/gpydat2.F src/gpydatr.F src/gpypars.F - src/gpysubs.F src/gpydat1.F src/gpydat3_62.F src/gpymssm.F - src/gpyssmt.F src/gpyint1.F src/gpyint2.F src/gpyint5.F - src/gpytcsm.F src/initpyblock.F src/openrandom.F - src/opdcay.F src/pyr.F src/extproc.F src/gatlastaula_decres_py.F - src/atopyt.F src/opensusyfile.F src/PythiaDummies/pyevwt.F - src/PythiaDummies/pykcut.F src/PythiaDummies/pytime.F - src/PythiaDummies/sugra.F src/PythiaDummies/visaje.F - src/PythiaDummies/ssmssm.F src/PythiaDummies/fhhiggscorr.F - src/PythiaDummies/fhsetflags.F src/PythiaDummies/fhsetpara.F - src/PythiaModified/pytaud.F src/PythiaTau3Mu_i_entries.cxx - INCLUDE_DIRS ${Boost_INCLUDE_DIRS} ${GSL_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS} - ${PYTHIA6_INCLUDE_DIRS} ${LHAPDF_INCLUDE_DIRS} ${HEPMC_INCLUDE_DIRS} - LINK_LIBRARIES ${Boost_LIBRARIES} ${GSL_LIBRARIES} ${CLHEP_LIBRARIES} - ${PYTHIA6_LIBRARIES} ${LHAPDF_LIBRARIES} ${HEPMC_LIBRARIES} GaudiKernel - AcerMC_i GeneratorModulesLib Pythia_iLib Tauola_iLib AthenaKernel StoreGateLib - AlpGen_i ExoGraviton_i GeneratorFortranCommonLib GravADD_i MadGraph_i - TruthUtils PathResolver CompHep_i MadCUP_i Matchig_i HvGen_i ) - -atlas_add_component( PythiaMono_i - src/PythiaMono.cxx src/Pydat1.cxx src/Pydatr.cxx src/Pydat2.cxx - src/Pydat3_62.cxx src/Pyssmt.cxx src/Pysubs.cxx src/Pypars.cxx - src/Pymssm.cxx src/Pyint1.cxx src/Pyint2.cxx src/Pyint5.cxx - src/Pytcsm.cxx src/upinit_py.F src/upevnt_py.F src/upveto_py.F - src/cldcay.F src/gpydat2.F src/gpydatr.F src/gpypars.F - src/gpysubs.F src/gpydat1.F src/gpydat3_62.F src/gpymssm.F - src/gpyssmt.F src/gpyint1.F src/gpyint2.F src/gpyint5.F - src/gpytcsm.F src/initpyblock.F src/openrandom.F src/opdcay.F - src/pyr.F src/extproc.F src/gatlastaula_decres_py.F src/atopyt.F - src/opensusyfile.F src/PythiaDummies/pyevwt.F src/PythiaDummies/pykcut.F - src/PythiaDummies/pytaud.F src/PythiaDummies/pytime.F - src/PythiaDummies/sugra.F src/PythiaDummies/visaje.F - src/PythiaDummies/ssmssm.F src/PythiaDummies/fhhiggscorr.F - src/PythiaDummies/fhsetflags.F src/PythiaDummies/fhsetpara.F - src/PythiaModified/pysgwz.F src/PythiaMono_i_entries.cxx - INCLUDE_DIRS ${Boost_INCLUDE_DIRS} ${GSL_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS} - ${PYTHIA6_INCLUDE_DIRS} ${LHAPDF_INCLUDE_DIRS} ${HEPMC_INCLUDE_DIRS} - LINK_LIBRARIES ${Boost_LIBRARIES} ${GSL_LIBRARIES} ${CLHEP_LIBRARIES} - ${PYTHIA6_LIBRARIES} ${LHAPDF_LIBRARIES} ${HEPMC_LIBRARIES} GaudiKernel - AcerMC_i GeneratorModulesLib Pythia_iLib Tauola_iLib AthenaKernel StoreGateLib - AlpGen_i ExoGraviton_i GeneratorFortranCommonLib GravADD_i MadGraph_i - TruthUtils PathResolver CompHep_i MadCUP_i Matchig_i HvGen_i ) - -atlas_add_component( PythiaGS_i - src/PythiaGS.cxx src/Pydat1.cxx src/Pydatr.cxx src/Pydat2.cxx - src/Pydat3_62.cxx src/Pyssmt.cxx src/Pysubs.cxx src/Pypars.cxx - src/Pymssm.cxx src/Pyint1.cxx src/Pyint2.cxx src/Pyint5.cxx - src/Pytcsm.cxx src/upinit_py.F src/upevnt_py.F src/upveto_py.F - src/cldcay.F src/gpydat2.F src/gpydatr.F src/gpypars.F - src/gpysubs.F src/gpydat1.F src/gpydat3_62.F src/gpymssm.F - src/gpyssmt.F src/gpyint1.F src/gpyint2.F src/gpyint5.F - src/gpytcsm.F src/initpyblock.F src/openrandom.F src/opdcay.F - src/pyr.F src/extproc.F src/gatlastaula_decres_py.F src/atopyt.F - src/opensusyfile.F src/PythiaDummies/pytime.F src/PythiaDummies/sugra.F - src/PythiaDummies/visaje.F src/PythiaDummies/ssmssm.F - src/PythiaDummies/fhhiggscorr.F src/PythiaDummies/fhsetflags.F - src/PythiaDummies/fhsetpara.F src/PythiaModified/pytaud.F - src/PythiaGS_i_entries.cxx - src/PythiaGravADD/Aeik.c src/PythiaGravADD/pyeffevt.F - src/PythiaGravADD/GravScat.F - INCLUDE_DIRS ${Boost_INCLUDE_DIRS} ${GSL_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS} - ${PYTHIA6_INCLUDE_DIRS} ${LHAPDF_INCLUDE_DIRS} ${HEPMC_INCLUDE_DIRS} - LINK_LIBRARIES ${Boost_LIBRARIES} ${GSL_LIBRARIES} ${CLHEP_LIBRARIES} - ${PYTHIA6_LIBRARIES} ${LHAPDF_LIBRARIES} ${HEPMC_LIBRARIES} GaudiKernel - AcerMC_i GeneratorModulesLib Pythia_iLib Tauola_iLib AthenaKernel StoreGateLib - AlpGen_i ExoGraviton_i GeneratorFortranCommonLib GravADD_i MadGraph_i - TruthUtils PathResolver CompHep_i MadCUP_i Matchig_i HvGen_i ) - -atlas_add_component( PythiaLLP_i - src/PythiaLLP.cxx src/Pydat1.cxx src/Pydatr.cxx src/Pydat2.cxx - src/Pydat3_62.cxx src/Pyssmt.cxx src/Pysubs.cxx src/Pypars.cxx - src/Pymssm.cxx src/Pyint1.cxx src/Pyint2.cxx src/Pyint5.cxx - src/Pytcsm.cxx src/upinit_py.F src/upevnt_py.F src/upveto_py.F - src/cldcay.F src/gpydat2.F src/gpydatr.F src/gpypars.F src/gpysubs.F - src/gpydat1.F src/gpydat3_62.F src/gpymssm.F src/gpyssmt.F - src/gpyint1.F src/gpyint2.F src/gpyint5.F src/gpytcsm.F - src/initpyblock.F src/openrandom.F src/opdcay.F src/pyr.F src/extproc.F - src/gatlastaula_decres_py.F src/atopyt.F src/opensusyfile.F - src/PythiaDummies/pyevwt.F src/PythiaDummies/pykcut.F - src/PythiaDummies/pytaud.F src/PythiaDummies/pytime.F - src/PythiaDummies/sugra.F src/PythiaDummies/visaje.F - src/PythiaDummies/ssmssm.F src/PythiaDummies/fhhiggscorr.F - src/PythiaDummies/fhsetflags.F src/PythiaDummies/fhsetpara.F - src/PythiaModified/initpyupda.F src/PythiaLLP_i_entries.cxx - INCLUDE_DIRS ${Boost_INCLUDE_DIRS} ${GSL_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS} - ${PYTHIA6_INCLUDE_DIRS} ${LHAPDF_INCLUDE_DIRS} ${HEPMC_INCLUDE_DIRS} - LINK_LIBRARIES ${Boost_LIBRARIES} ${GSL_LIBRARIES} ${CLHEP_LIBRARIES} - ${PYTHIA6_LIBRARIES} ${LHAPDF_LIBRARIES} ${HEPMC_LIBRARIES} GaudiKernel - AcerMC_i GeneratorModulesLib Pythia_iLib Tauola_iLib AthenaKernel StoreGateLib - AlpGen_i ExoGraviton_i GeneratorFortranCommonLib GravADD_i MadGraph_i - TruthUtils PathResolver CompHep_i MadCUP_i Matchig_i HvGen_i ) - -atlas_add_component( PythiaResMod_i - src/PythiaResMod.cxx src/atlasTuneResMod.cxx src/setPythiaTuneResMod.cxx - src/Pydat1.cxx src/Pydatr.cxx src/Pydat2.cxx src/Pydat3_62.cxx - src/Pyssmt.cxx src/Pysubs.cxx src/Pypars.cxx src/Pymssm.cxx - src/Pyint1.cxx src/Pyint2.cxx src/Pyint5.cxx src/Pytcsm.cxx - src/upinit_py.F src/upevnt_py.F src/upveto_py.F src/cldcay.F - src/gpydat2.F src/gpydatr.F src/gpypars.F src/gpysubs.F src/gpydat1.F - src/gpydat3_62.F src/gpymssm.F src/gpyssmt.F src/gpyint1.F - src/gpyint2.F src/gpyint5.F src/gpytcsm.F src/initpyblock.F - src/openrandom.F src/opdcay.F src/pyr.F src/extproc.F - src/setecm.F src/gatlastaula_decres_py.F src/atopyt.F - src/opensusyfile.F src/parout.F src/special_exo.F - src/PythiaDummies/pyevwt.F src/PythiaDummies/pykcut.F - src/PythiaDummies/pytaud.F src/PythiaDummies/pytime.F - src/PythiaDummies/sugra.F src/PythiaDummies/visaje.F - src/PythiaDummies/ssmssm.F src/PythiaDummies/fhhiggscorr.F - src/PythiaDummies/fhsetflags.F src/PythiaDummies/fhsetpara.F - src/PythiaModified/pyrhad.F src/PythiaModified/pysthad.F - src/PythiaModified/pysgex.F src/PythiaResMod_i_entries.cxx - INCLUDE_DIRS ${Boost_INCLUDE_DIRS} ${GSL_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS} - ${PYTHIA6_INCLUDE_DIRS} ${LHAPDF_INCLUDE_DIRS} ${HEPMC_INCLUDE_DIRS} - LINK_LIBRARIES ${Boost_LIBRARIES} ${GSL_LIBRARIES} ${CLHEP_LIBRARIES} - ${PYTHIA6_LIBRARIES} ${LHAPDF_LIBRARIES} ${HEPMC_LIBRARIES} GaudiKernel - AcerMC_i GeneratorModulesLib Pythia_iLib Tauola_iLib AthenaKernel StoreGateLib - AlpGen_i ExoGraviton_i GeneratorFortranCommonLib GravADD_i MadGraph_i - TruthUtils PathResolver CompHep_i MadCUP_i Matchig_i HvGen_i ) - -atlas_add_component( PythiaTopMdiff_i - src/PythiaTopMdiff.cxx src/atlasTuneTopMdiff.cxx - src/setPythiaTuneTopMdiff.cxx src/Pydat1.cxx src/Pydatr.cxx src/Pydat2.cxx - src/Pydat3_62.cxx src/Pyssmt.cxx src/Pysubs.cxx src/Pypars.cxx - src/Pymssm.cxx src/Pyint1.cxx src/Pyint2.cxx src/Pyint5.cxx - src/Pytcsm.cxx src/upinit_py.F src/upevnt_py.F src/upveto_py.F - src/cldcay.F src/gpydat2.F src/gpydatr.F src/gpypars.F src/gpysubs.F - src/gpydat1.F src/gpydat3_62.F src/gpymssm.F src/gpyssmt.F src/gpyint1.F - src/gpyint2.F src/gpyint5.F src/gpytcsm.F src/initpyblock.F src/openrandom.F - src/opdcay.F src/pyr.F src/extproc.F src/setecm.F src/gatlastaula_decres_py.F - src/atopyt.F src/opensusyfile.F src/parout.F src/special_exo.F - src/PythiaDummies/pyevwt.F src/PythiaDummies/pykcut.F - src/PythiaDummies/pytaud.F src/PythiaDummies/pytime.F - src/PythiaDummies/sugra.F src/PythiaDummies/visaje.F - src/PythiaDummies/ssmssm.F src/PythiaDummies/fhhiggscorr.F - src/PythiaDummies/fhsetflags.F src/PythiaDummies/fhsetpara.F - src/PythiaModified/pyscat.F src/PythiaModified/pyofsh.F - src/PythiaTopMdiff_i_entries.cxx - INCLUDE_DIRS ${Boost_INCLUDE_DIRS} ${GSL_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS} - ${PYTHIA6_INCLUDE_DIRS} ${LHAPDF_INCLUDE_DIRS} ${HEPMC_INCLUDE_DIRS} - LINK_LIBRARIES ${Boost_LIBRARIES} ${GSL_LIBRARIES} ${CLHEP_LIBRARIES} - ${PYTHIA6_LIBRARIES} ${LHAPDF_LIBRARIES} ${HEPMC_LIBRARIES} GaudiKernel - AcerMC_i GeneratorModulesLib Pythia_iLib Tauola_iLib AthenaKernel StoreGateLib - AlpGen_i ExoGraviton_i GeneratorFortranCommonLib GravADD_i MadGraph_i - TruthUtils PathResolver CompHep_i MadCUP_i Matchig_i HvGen_i ) - -# Install files from the package: -atlas_install_headers( PythiaExo_i ) -atlas_install_joboptions( share/*.py ) diff --git a/Generators/PythiaExo_i/PythiaExo_i/Lhefinfo.h b/Generators/PythiaExo_i/PythiaExo_i/Lhefinfo.h deleted file mode 100644 index b31d0f0a698568e780fff19f83e315d24d9cda70..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/PythiaExo_i/Lhefinfo.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - - -#ifndef LHEFINFO_h -#define LHEFINFO_h - -extern "C" { - void* lhefinfo_address_(); -} - -/** -@class Lhefinfo.hh - -@brief Class definition for Lhefinfo common block. - -@author Sebastian Piec -*/ - -class Lhefinfo { -public: - Lhefinfo(); - ~Lhefinfo(); - - inline void init(); // inlined for speed of access (small function) - - int& id1(); - int& id2(); - double& x1(); - double& x2(); - double& scalePdf(); - double& xPdf1(); - double& xPdf2(); - -private: - struct LHEFINFO; - friend struct LHEFINFO; - - struct LHEFINFO - { - int id1, id2; - double x1, x2; - double scalePdf, xPdf1, xPdf2; - }; - - static LHEFINFO* s_lhefinfo; -}; - -#include "Pythia_i/Lhefinfo.icc" - -#endif - diff --git a/Generators/PythiaExo_i/PythiaExo_i/Pydat1.h b/Generators/PythiaExo_i/PythiaExo_i/Pydat1.h deleted file mode 100644 index 4550e6e281b1c97e77a4213906fb3e200f9fbdb8..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/PythiaExo_i/Pydat1.h +++ /dev/null @@ -1,65 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - - -#ifndef Pydat1_h -#define Pydat1_h - -extern "C" { - void* pydat1_address_(void); -} - -/** -@class Pydat1.hh - -@brief Class definition for Pydat1, which is used - to modify the Pythia Pydat1 common. - - Environment: - CDF Run 2 - -@author Chris Green, Purdue University - Stan Thompson, Glasgow University - - Pythia Common access method -*/ -class Pydat1 { -public: - Pydat1(); - ~Pydat1(); - int& mstu(int n); - double& paru(int n); - int& mstj(int n); - double& parj(int n); - inline void init(); // inlined for speed of access (small function) - // return common array lengths - int lenMstu() const {return s_lenMstu;} - int lenParu() const {return s_lenParu;} - int lenMstj() const {return s_lenMstj;} - int lenParj() const {return s_lenParj;} -private: - - // Lengths of MSTU and PARU COMMONS - static const int s_lenMstu = 200; - static const int s_lenParu = 200; - static const int s_lenMstj = 200; - static const int s_lenParj = 200; - - struct PYDAT1; - friend struct PYDAT1; - - struct PYDAT1 { - int mstu[s_lenMstu]; - double paru[s_lenParu]; - int mstj[s_lenMstj]; - double parj[s_lenParj]; - }; - int m_dummy; - double m_realdummy; - static PYDAT1* s_pydat1; -}; - -#include "PythiaExo_i/Pydat1.icc" - -#endif diff --git a/Generators/PythiaExo_i/PythiaExo_i/Pydat1.icc b/Generators/PythiaExo_i/PythiaExo_i/Pydat1.icc deleted file mode 100644 index befac7203b5832a25db5bb595a8a0da0f68c5a66..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/PythiaExo_i/Pydat1.icc +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// Inline implementations for Pydat1 - -// initialise pointer -void Pydat1::init(void) { - if (!s_pydat1) s_pydat1 = static_cast<PYDAT1*>(pydat1_address_()); -} - diff --git a/Generators/PythiaExo_i/PythiaExo_i/Pydat2.h b/Generators/PythiaExo_i/PythiaExo_i/Pydat2.h deleted file mode 100644 index 5c5437ca7705915681d1875caa636545434129af..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/PythiaExo_i/Pydat2.h +++ /dev/null @@ -1,66 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef Pydat2_h -#define Pydat2_h - -extern "C" { - void* pydat2_address_(void); -} -/** -@class Pydat2.hh - -@brief Class definition for Pydat2, which is used - to modify the Pythia Pydat2 common. - - Environment: - CDF Run 2 - -@author Chris Green, Purdue University - Stan Thompson, Glasgow University - - Pythia Common access method -*/ - -class Pydat2 { -public: - Pydat2(); - ~Pydat2(); - - int& kchg(int kc, int i); - double& pmas(int kc, int i); - double& parf(int n); - double& vckm(int i, int j); - inline void init(); // inlined for speed of access (small function) - // return common array lengths - int depthKchg() const {return s_depthKchg;} - int lenPmas() const {return s_lenPmas;} - int depthPmas() const {return s_depthPmas;} - int lenParf() const {return s_lenParf;} - int lenVckm() const {return s_lenVckm;} -private: - - // Lengths of array in PYDAT2 common - static const int s_lenPmas = 500; - static const int s_depthPmas = 4; - static const int s_depthKchg = 4; - static const int s_lenParf = 2000; - static const int s_lenVckm = 4; - - struct PYDAT2; - friend struct PYDAT2; - struct PYDAT2 { - int kchg[s_depthKchg][s_lenPmas]; - double pmas[s_depthPmas][s_lenPmas]; - double parf[s_lenParf]; - double vckm[s_lenVckm][s_lenVckm]; - }; - int m_dummy; - double m_realdummy; - static PYDAT2* s_pydat2; -}; - -#include "PythiaExo_i/Pydat2.icc" - -#endif diff --git a/Generators/PythiaExo_i/PythiaExo_i/Pydat2.icc b/Generators/PythiaExo_i/PythiaExo_i/Pydat2.icc deleted file mode 100644 index 83bd076d14ab26ea5327ccae1f2c8caacb510964..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/PythiaExo_i/Pydat2.icc +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// Inline implementations for Pydat2 - -// initialise pointer -void Pydat2::init(void) { - if (!s_pydat2) s_pydat2 = static_cast<PYDAT2*>(pydat2_address_()); -} - diff --git a/Generators/PythiaExo_i/PythiaExo_i/Pydat3.h b/Generators/PythiaExo_i/PythiaExo_i/Pydat3.h deleted file mode 100644 index 100bccceb828fb20663bd578f376e39d4c381598..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/PythiaExo_i/Pydat3.h +++ /dev/null @@ -1,70 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef Pydat3_h -#define Pydat3_h - -extern "C" { - void* pydat3_address_(void); -} -/** -@class Pydat3.hh - -@brief Class definition for Pydat3, which is used - to modify the Pythia Pydat3 common. - - Environment: - CDF Run 2 - -@author Chris Green, Purdue University - Stan Thompson, Glasgow University - - Pythia Common access method -*/ - -class Pydat3 { -public: - Pydat3(); - ~Pydat3(); - - int& mdcy(int kc, int i); - int& mdme(int idc, int i); - double& brat(int idc); - int& kfdp(int idc, int kf); - inline void init(); // inlined for speed of access (small function) - // return common array lengths - int lenMdcy() const {return s_lenMdcy;} - int depthMdcy() const {return s_depthMdcy;} - int lenMdme() const {return s_lenMdme;} - int depthMdme() const {return s_depthMdme;} - int lenBrat() const {return s_lenBrat;} - int lenKfdp() const {return s_lenKfdp;} - int depthKfdp() const {return s_depthKfdp;} -private: - - // Lengths of array in PYDAT2 common - static const int s_lenMdcy = 500; - static const int s_depthMdcy = 3; - static const int s_lenMdme = 8000; - static const int s_depthMdme = 2; - static const int s_lenBrat = 8000; - static const int s_lenKfdp = 8000; - static const int s_depthKfdp = 5; - - struct PYDAT3; - friend struct PYDAT3; - struct PYDAT3 { - int mdcy[s_depthMdcy][s_lenMdcy]; - int mdme[s_depthMdme][s_lenMdme]; - double brat[s_lenBrat]; - int kfdp[s_depthKfdp][s_lenKfdp]; - }; - int m_dummy; - double m_realdummy; - static PYDAT3* s_pydat3; -}; - -#include "PythiaExo_i/Pydat3.icc" - -#endif diff --git a/Generators/PythiaExo_i/PythiaExo_i/Pydat3.icc b/Generators/PythiaExo_i/PythiaExo_i/Pydat3.icc deleted file mode 100644 index 78bb20f45ba050f6062d39f186fdb8a52d08c98f..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/PythiaExo_i/Pydat3.icc +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// Inline implementations for Pydat3 - -// initialise pointer -void Pydat3::init(void) { - if (!s_pydat3) s_pydat3 = static_cast<PYDAT3*>(pydat3_address_()); -} - diff --git a/Generators/PythiaExo_i/PythiaExo_i/Pydat3_61.h b/Generators/PythiaExo_i/PythiaExo_i/Pydat3_61.h deleted file mode 100644 index 6f96b78ff6a2230586588c5dfb551ffafd17c3f4..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/PythiaExo_i/Pydat3_61.h +++ /dev/null @@ -1,72 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef Pydat3_h -#define Pydat3_h - -extern "C" { - void* pydat3_address_(void); -} - -/** - -@class Pydat3.hh - -@brief Class definition for Pydat3, which is used - to modify the Pythia Pydat3 common. - - Environment: - CDF Run 2 - -@author Chris Green, Purdue University - Stan Thompson, Glasgow University - - Pythia Common access method -*/ - -class Pydat3 { -public: - Pydat3(); - ~Pydat3(); - - int& mdcy(int kc, int i); - int& mdme(int idc, int i); - double& brat(int idc); - int& kfdp(int idc, int kf); - inline void init(); // inlined for speed of access (small function) - // return common array lengths - int lenMdcy() const {return _lenMdcy;} - int depthMdcy() const {return _depthMdcy;} - int lenMdme() const {return _lenMdme;} - int depthMdme() const {return _depthMdme;} - int lenBrat() const {return _lenBrat;} - int lenKfdp() const {return _lenKfdp;} - int depthKfdp() const {return _depthKfdp;} -private: - - // Lengths of array in PYDAT2 common - static const int _lenMdcy = 500; - static const int _depthMdcy = 3; - static const int _lenMdme = 4000; - static const int _depthMdme = 2; - static const int _lenBrat = 4000; - static const int _lenKfdp = 4000; - static const int _depthKfdp = 5; - - struct PYDAT3; - friend struct PYDAT3; - struct PYDAT3 { - int mdcy[_depthMdcy][_lenMdcy]; - int mdme[_depthMdme][_lenMdme]; - double brat[_lenBrat]; - int kfdp[_depthKfdp][_lenKfdp]; - }; - int _dummy; - double _realdummy; - static PYDAT3* _pydat3; -}; - -#include "PythiaExo_i/Pydat3.icc" - -#endif diff --git a/Generators/PythiaExo_i/PythiaExo_i/Pydat3_61.icc b/Generators/PythiaExo_i/PythiaExo_i/Pydat3_61.icc deleted file mode 100644 index b609dd187f48400c5fca60d59f555d22103017cf..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/PythiaExo_i/Pydat3_61.icc +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// Inline implementations for Pydat3 - -// initialise pointer -void Pydat3::init(void) { - if (!_pydat3) _pydat3 = static_cast<PYDAT3*>(pydat3_address_()); -} - diff --git a/Generators/PythiaExo_i/PythiaExo_i/Pydat3_62.h b/Generators/PythiaExo_i/PythiaExo_i/Pydat3_62.h deleted file mode 100644 index fff468afe012278484e39eb1583053abb456eb42..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/PythiaExo_i/Pydat3_62.h +++ /dev/null @@ -1,75 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - - -#ifndef Pydat3_h -#define Pydat3_h - -extern "C" { - void* pydat3_address_(void); -} - -/** -@class Pydat3.hh - -@brief Description: - Class definition for Pydat3, which is used - to modify the Pythia Pydat3 common. - - Environment: - CDF Run 2 - -@author Chris Green, Purdue University - -Stan Thompson, Glasgow University - - - Pythia Common access method -*/ - -class Pydat3 { -public: - Pydat3(); - ~Pydat3(); - - int& mdcy(int kc, int i); - int& mdme(int idc, int i); - double& brat(int idc); - int& kfdp(int idc, int kf); - inline void init(); // inlined for speed of access (small function) - // return common array lengths - int lenMdcy() const {return s_lenMdcy;} - int depthMdcy() const {return s_depthMdcy;} - int lenMdme() const {return s_lenMdme;} - int depthMdme() const {return s_depthMdme;} - int lenBrat() const {return s_lenBrat;} - int lenKfdp() const {return s_lenKfdp;} - int depthKfdp() const {return s_depthKfdp;} -private: - - // Lengths of array in PYDAT2 common - static const int s_lenMdcy = 500; - static const int s_depthMdcy = 3; - static const int s_lenMdme = 8000; - static const int s_depthMdme = 2; - static const int s_lenBrat = 8000; - static const int s_lenKfdp = 8000; - static const int s_depthKfdp = 5; - - struct PYDAT3; - friend struct PYDAT3; - struct PYDAT3 { - int mdcy[s_depthMdcy][s_lenMdcy]; - int mdme[s_depthMdme][s_lenMdme]; - double brat[s_lenBrat]; - int kfdp[s_depthKfdp][s_lenKfdp]; - }; - int m_dummy; - double m_realdummy; - static PYDAT3* s_pydat3; -}; - -#include "PythiaExo_i/Pydat3.icc" - -#endif diff --git a/Generators/PythiaExo_i/PythiaExo_i/Pydat3_62.icc b/Generators/PythiaExo_i/PythiaExo_i/Pydat3_62.icc deleted file mode 100644 index b609dd187f48400c5fca60d59f555d22103017cf..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/PythiaExo_i/Pydat3_62.icc +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// Inline implementations for Pydat3 - -// initialise pointer -void Pydat3::init(void) { - if (!_pydat3) _pydat3 = static_cast<PYDAT3*>(pydat3_address_()); -} - diff --git a/Generators/PythiaExo_i/PythiaExo_i/Pydatr.h b/Generators/PythiaExo_i/PythiaExo_i/Pydatr.h deleted file mode 100644 index 2225981a3e81161bc8173b9336ea70a9d59e7f4a..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/PythiaExo_i/Pydatr.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - - -#ifndef Pydatr_h -#define Pydatr_h - -extern "C" { - void* pydatr_address_(void); -} - -/** -@class Pydatr.hh - -@brief Description: - Class definition for Pydatr, which is used - to modify the Pythia Pydatr common. - - Environment: - CDF Run 2 - -@author - Chris Green, Purdue University - Stan Thompson, Glasgow University - - Pythia Common access method -*/ -class Pydatr { -public: - Pydatr(); - ~Pydatr(); - int& mrpy(int n); - double& rrpy(int n); - inline void init(); // inlined for speed of access (small function) - // return common array lengths - int lenMrpy() const {return s_lenMrpy;} - int lenRrpy() const {return s_lenRrpy;} -private: - - // Lengths of array in PYDATR common - static const int s_lenMrpy = 6; - static const int s_lenRrpy = 100; - struct PYDATR; - friend struct PYDATR; - struct PYDATR { - int mrpy[s_lenMrpy]; - double rrpy[s_lenRrpy]; - }; - int m_dummy; - double m_realdummy; - static PYDATR* s_pydatr; -}; - -#include "PythiaExo_i/Pydatr.icc" - -#endif diff --git a/Generators/PythiaExo_i/PythiaExo_i/Pydatr.icc b/Generators/PythiaExo_i/PythiaExo_i/Pydatr.icc deleted file mode 100644 index 273eee3d694b727b589a2290c5bd308403d3ac76..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/PythiaExo_i/Pydatr.icc +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// Inline implementations for Pydatr - -// initialise pointer -void Pydatr::init(void) { - if (!s_pydatr) s_pydatr = static_cast<PYDATR*>(pydatr_address_()); -} - diff --git a/Generators/PythiaExo_i/PythiaExo_i/Pyint1.h b/Generators/PythiaExo_i/PythiaExo_i/Pyint1.h deleted file mode 100644 index 6d1c0c8dbbd3194307f9e498919068b1a7aa6d3a..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/PythiaExo_i/Pyint1.h +++ /dev/null @@ -1,52 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef Pyint1_h -#define Pyint1_h -extern "C" { - void* pyint1_address_(void); -} -/** -@class Pyint1.h - -@brief Class definition for Pyint1, which is used - to modify the Pythia Pyint1 common. - - Environment: - ATLAS/ATHENA - -@author Elzbieta Richter-Was, Cracow INP - - Pythia Common access method -*/ - -class Pyint1 { -public: - Pyint1(); - ~Pyint1(); - int& mint(int n); - double& vint(int n); - inline void init(); // inlined for speed of access (small function) - // return common array lengths - int lenMint() const {return s_lenMint;} - int lenVint() const {return s_lenVint;} -private: - - // Lengths of MINT and VINT COMMONS - static const int s_lenMint = 400; - static const int s_lenVint = 400; - - struct PYINT1; - friend struct PYINT1; - - struct PYINT1 { - int mint[s_lenMint]; - double vint[s_lenVint]; - }; - int m_dummy; - double m_realdummy; - static PYINT1* s_pyint1; -}; -#include "PythiaExo_i/Pyint1.icc" -#endif diff --git a/Generators/PythiaExo_i/PythiaExo_i/Pyint1.icc b/Generators/PythiaExo_i/PythiaExo_i/Pyint1.icc deleted file mode 100644 index dd8770f0b54868191317f6bb79d734748be95ed0..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/PythiaExo_i/Pyint1.icc +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// Inline implementations for Pyint1 - -// initialise pointer -void Pyint1::init(void) { - if (!s_pyint1) s_pyint1 = static_cast<PYINT1*>(pyint1_address_()); -} - diff --git a/Generators/PythiaExo_i/PythiaExo_i/Pyint2.h b/Generators/PythiaExo_i/PythiaExo_i/Pyint2.h deleted file mode 100644 index 3a98dd04e2be2721f90c3d5f64570873dc7eeb58..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/PythiaExo_i/Pyint2.h +++ /dev/null @@ -1,73 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - - -#ifndef Pyint2_h -#define Pyint2_h - -extern "C" { - void* pyint2_address_(void); -} -/** - -@class Pyint2.h - -@brief Class definition for Pyint2, which is used - to modify the Pythia Pyint2 common. - - Environment: - ATLAS/ATHENA - -@author Ian Hinchliffe LBNL - - Pythia Common access method -*/ - -class Pyint2 { -public: - Pyint2(); - ~Pyint2(); - int& iset(int n); - int& kfpr(int n, int i); - double& coef(int n, int i); - int& icol(int n,int i,int j); - inline void init(); // inlined for speed of access (small function) - // return common array lengths - int lenIset() const {return s_lenIset;} - int depthKfpr() const {return s_depthKfpr;} - int lenKfpr() const {return s_lenKfpr;} - int lenCoef() const {return s_lenCoef;} - int depthCoef() const {return s_depthCoef;} - int lenIcol() const {return s_lenIcol;} - int depthIcol() const {return s_depthIcol;} - int widthIcol() const {return s_widthIcol;} -private: - - // Lengths of ISET and KFPR COMMONS - static const int s_lenIset = 500; - static const int s_lenKfpr = 500; - static const int s_depthKfpr = 2; - static const int s_lenCoef = 500; - static const int s_depthCoef = 20; - static const int s_lenIcol = 40; - static const int s_depthIcol = 4; - static const int s_widthIcol = 2; - - struct PYINT2; - friend struct PYINT2; - - struct PYINT2 { - int iset[s_lenIset]; - int kfpr[s_depthKfpr][s_lenKfpr]; - double coef[s_depthCoef][s_lenCoef]; - int icol[s_widthIcol][s_depthIcol][s_lenIcol]; - }; - int m_dummy; - double m_realdummy; - static PYINT2* s_pyint2; -}; - -#include "PythiaExo_i/Pyint2.icc" - -#endif diff --git a/Generators/PythiaExo_i/PythiaExo_i/Pyint2.icc b/Generators/PythiaExo_i/PythiaExo_i/Pyint2.icc deleted file mode 100644 index 7687be646c47a55e902d941a9fd30a6755feadbe..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/PythiaExo_i/Pyint2.icc +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// Inline implementations for Pyint2 - -// initialise pointer -void Pyint2::init(void) { - if (!s_pyint2) s_pyint2 = static_cast<PYINT2*>(pyint2_address_()); -} - diff --git a/Generators/PythiaExo_i/PythiaExo_i/Pyint5.h b/Generators/PythiaExo_i/PythiaExo_i/Pyint5.h deleted file mode 100644 index 78e0bfa53ead6858343e830c4dc5d1029509efe6..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/PythiaExo_i/Pyint5.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef Pyint5_h -#define Pyint5_h - -extern "C" { - void* pyint5_address_(void); -} -/** -@class Pyint5.h - -@brief Class definition for Pyint5, which is used - to modify the Pythia Pyint5 common. - - Environment: - ATLAS/ATHENA - -@author Ian Hinchliffe LBNL - - Pythia Common access method -*/ - -class Pyint5 { -public: - Pyint5(); - ~Pyint5(); - int& ngenpd(); - int& ngen(int n, int i); - double& xsec(int n, int i); - inline void init(); // inlined for speed of access (small function) - // return common array lengths - int depthNgen() const {return s_depthNgen;} - int lenNgen() const {return s_lenNgen;} - int lenXsec() const {return s_lenXsec;} - int depthXsec() const {return s_depthXsec;} -private: - - // Lengths of NGENPD and NGEN COMMONS - static const int s_lenNgen = 501; - static const int s_depthNgen = 3; - static const int s_lenXsec = 501; - static const int s_depthXsec = 3; - - struct PYINT5; - friend struct PYINT5; - - struct PYINT5 { - int ngenpd; - int ngen[s_depthNgen][s_lenNgen]; - double xsec[s_depthXsec][s_lenXsec]; - }; - int m_dummy; - double m_realdummy; - static PYINT5* s_pyint5; -}; - -#include "PythiaExo_i/Pyint5.icc" - -#endif diff --git a/Generators/PythiaExo_i/PythiaExo_i/Pyint5.icc b/Generators/PythiaExo_i/PythiaExo_i/Pyint5.icc deleted file mode 100644 index 73afaa3afe5963410da6e5f4afb1a68012c63772..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/PythiaExo_i/Pyint5.icc +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// Inline implementations for Pyint5 - -// initialise pointer -void Pyint5::init(void) { - if (!s_pyint5) s_pyint5 = static_cast<PYINT5*>(pyint5_address_()); -} - diff --git a/Generators/PythiaExo_i/PythiaExo_i/Pymsrv.h b/Generators/PythiaExo_i/PythiaExo_i/Pymsrv.h deleted file mode 100644 index d365eccc53719364fdd100e22a99785034f54f42..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/PythiaExo_i/Pymsrv.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -//-------------------------------------------------------------------------- -// File and Version Information: -// Pymsrv.hh -// -// Description: -// Class definition for Pymsrv, which is used -// to modify the Pythia Pymsrv common. -// -// -// Author List: -// Claus Horn -// -//------------------------------------------------------------------------ -// Pythia Common access method -#ifndef PYMSRV_H -#define PYMSRV_H - -extern "C" { - void* pymsrv_address_(void); -} - -class Pymsrv { -public: - Pymsrv(); - ~Pymsrv(); - - double& rvlam(int n); - double& rvlamp(int n); - double& rvlamb(int n); - - int lenRVlam() const {return 27;} - int lenRVlamp() const {return 27;} - int lenRVlamb() const {return 27;} - - inline void init(); - -private: - - struct PYMSRV; - friend struct PYMSRV; - - struct PYMSRV { - double rvlam[3][3][3]; - double rvlamp[3][3][3]; - double rvlamb[3][3][3]; - }; - - double m_dummy; - double m_realdummy; - - static PYMSRV* s_pymsrv; -}; - -#include "Pythia_i/Pymsrv.icc" - -#endif diff --git a/Generators/PythiaExo_i/PythiaExo_i/Pymsrv.icc b/Generators/PythiaExo_i/PythiaExo_i/Pymsrv.icc deleted file mode 100644 index c12fd8bc7d1dff0706678fe388c6fe613a8da9c6..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/PythiaExo_i/Pymsrv.icc +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// Inline implementations for Pymsrv - -// initialise pointer -void Pymsrv::init(void) { - if (!s_pymsrv) s_pymsrv = static_cast<PYMSRV*>(pymsrv_address_()); -} - diff --git a/Generators/PythiaExo_i/PythiaExo_i/Pymssm.h b/Generators/PythiaExo_i/PythiaExo_i/Pymssm.h deleted file mode 100644 index 3e86b8684438edfc32313ea3a5b321951a002e04..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/PythiaExo_i/Pymssm.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - - -#ifndef PYMSSM_H -#define PYMSSM_H - -extern "C" { - void* pymssm_address_(void); -} -/** -@class Pymssm.hh - -@brief Class definition for Pymssm, which is used - to modify the Pythia Pymssm common. - - Environment: - CDF Run 2 - -@author Chris Green, Purdue University - Stan Thompson, Glasgow University - - Pythia Common access method -*/ -class Pymssm { -public: - Pymssm(); - ~Pymssm(); - - int& imss(int n); - double& rmss(int n); - - int lenImss() const {return s_lenImss;} - int lenRmss() const {return s_lenRmss;} - - inline void init(); - -private: - - static const int s_lenImss = 100; - static const int s_lenRmss = 100; - - struct PYMSSM; - friend struct PYMSSM; - - struct PYMSSM { - int imss[s_lenImss]; - double rmss[s_lenRmss]; - }; - - int m_dummy; - double m_realdummy; - - static PYMSSM* s_pymssm; -}; - -#include "PythiaExo_i/Pymssm.icc" - -#endif diff --git a/Generators/PythiaExo_i/PythiaExo_i/Pymssm.icc b/Generators/PythiaExo_i/PythiaExo_i/Pymssm.icc deleted file mode 100644 index f7657d2ce9477772def020ed3eb9499394d73824..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/PythiaExo_i/Pymssm.icc +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// Inline implementations for Pymssm - -// initialise pointer -void Pymssm::init(void) { - if (!s_pymssm) s_pymssm = static_cast<PYMSSM*>(pymssm_address_()); -} - diff --git a/Generators/PythiaExo_i/PythiaExo_i/Pypars.h b/Generators/PythiaExo_i/PythiaExo_i/Pypars.h deleted file mode 100644 index 06b7142a76d74f5c3d4a90c1dd4c9aed8d5616e6..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/PythiaExo_i/Pypars.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - - -#ifndef Pypars_h -#define Pypars_h - -extern "C" { - void* pypars_address_(void); -} -/** -@class Pypars.hh - -@brief Class definition for Pypars, which is used - to modify the Pythia Pypars common. - - Environment: - CDF Run 2 - -@author Chris Green, Purdue University - Stan Thompson, Glasgow University - - Pythia Common access method -*/ - -class Pypars { -public: - Pypars(); - ~Pypars(); - int& mstp(int n); - double& parp(int n); - int& msti(int n); - double& pari(int n); - inline void init(); // inlined for speed of access (small function) - // return common array lengths - int lenMstp() const {return s_lenMstp;} - int lenParp() const {return s_lenParp;} - int lenMsti() const {return s_lenMsti;} - int lenPari() const {return s_lenPari;} -private: - - // Lengths of MSTU and PARU COMMONS - static const int s_lenMstp = 200; - static const int s_lenParp = 200; - static const int s_lenMsti = 200; - static const int s_lenPari = 200; - - struct PYPARS; - friend struct PYPARS; - struct PYPARS { - int mstp[s_lenMstp]; - double parp[s_lenParp]; - int msti[s_lenMsti]; - double pari[s_lenPari]; - }; - int m_dummy; - double m_realdummy; - static PYPARS* s_pypars; -}; - -#include "PythiaExo_i/Pypars.icc" - -#endif diff --git a/Generators/PythiaExo_i/PythiaExo_i/Pypars.icc b/Generators/PythiaExo_i/PythiaExo_i/Pypars.icc deleted file mode 100644 index fa7d61023695bf45bdd7e29a6903f942e3a95d68..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/PythiaExo_i/Pypars.icc +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// Inline implementations for Pypars - -// initialise pointer -void Pypars::init(void) { - if (!s_pypars) s_pypars = static_cast<PYPARS*>(pypars_address_()); -} - diff --git a/Generators/PythiaExo_i/PythiaExo_i/Pypevwt.h b/Generators/PythiaExo_i/PythiaExo_i/Pypevwt.h deleted file mode 100644 index 69c6fd600aa14071ce2e00ae4622911548a1b4be..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/PythiaExo_i/Pypevwt.h +++ /dev/null @@ -1,66 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef PYPEVWT_H -#define PYPEVWT_H - -extern "C"{ - void* pypevwt_address_(void); -} - -/** -@class Pypevwt.h - -@brief Class definition for Pypevwt, which is used - to modify the Pythia Pypevwt common block that holds variables related - to event weighting. - -@author Eric Feng (Chicago): Eric.Feng@cern.ch, March 2010 - -*/ - -class Pypevwt -{ - //______________________________________________________________________ - //public methods and members - public: - - //constructor and destructor - Pypevwt(); - ~Pypevwt(); - - int& ievwt(int n); - double& revwt(int n); - - int lenIevwt() const {return s_lenIevwt;} - int lenRevwt() const {return s_lenRevwt;} - - //PYPEVWT* _pypevwt initialization - inline void init(); - //______________________________________________________________________ - //private methods and members - private: - - static const int s_lenIevwt = 100; - static const int s_lenRevwt = 100; - - //PYPEVWT common block declaration and members - struct PYPEVWT; - friend struct PYPEVWT; - - struct PYPEVWT - { - int ievwt[s_lenIevwt]; - double revwt[s_lenRevwt]; - }; - - int m_dummy; - double m_realdummy; - - static PYPEVWT* s_pypevwt; -}; - -#include "Pythia_i/Pypevwt.icc" - -#endif diff --git a/Generators/PythiaExo_i/PythiaExo_i/Pypevwt.icc b/Generators/PythiaExo_i/PythiaExo_i/Pypevwt.icc deleted file mode 100644 index 1dec09ba1e1678ed615a0052fde6ac40aa726215..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/PythiaExo_i/Pypevwt.icc +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// Inline implementations for Pypevwt - -// initialise pointer -void Pypevwt::init(void) { - if (!s_pypevwt) s_pypevwt = static_cast<PYPEVWT*>(pypevwt_address_()); -} - diff --git a/Generators/PythiaExo_i/PythiaExo_i/Pypued.h b/Generators/PythiaExo_i/PythiaExo_i/Pypued.h deleted file mode 100644 index 0ea86430c149c077b94024e2a3943c786a586f27..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/PythiaExo_i/Pypued.h +++ /dev/null @@ -1,67 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef PYPUED_H -#define PYPUED_H - -extern "C"{ - void* pypued_address_(void); -} - -/** -@class Pypued.hh - -@brief Class definition for Pypued, which is used - to modify the Pythia Pypued common block, which holds variables related - to the Universal Extra Dimensions model. -@author - - L. Mijovic (liza.mijovic@cern.ch), Oct. 2008 - -*/ - -class Pypued -{ - //______________________________________________________________________ - //public methods and members - public: - - //constructor and destructor - Pypued(); - ~Pypued(); - - int& iued(int n); - double& rued(int n); - - int lenIued() const {return s_lenIued;} - int lenRued() const {return s_lenRued;} - - //PYPUED* _pypued initialization - inline void init(); - //______________________________________________________________________ - //private methods and members - private: - - static const int s_lenIued = 100; - static const int s_lenRued = 100; - - //PYPUED common block declaration and members - struct PYPUED; - friend struct PYPUED; - - struct PYPUED - { - int iued[s_lenIued]; - double rued[s_lenRued]; - }; - - int m_dummy; - double m_realdummy; - - static PYPUED* s_pypued; -}; - -#include "Pythia_i/Pypued.icc" - -#endif diff --git a/Generators/PythiaExo_i/PythiaExo_i/Pypued.icc b/Generators/PythiaExo_i/PythiaExo_i/Pypued.icc deleted file mode 100644 index e613b6b81ed2c2d191a720853839d2ad93071ec3..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/PythiaExo_i/Pypued.icc +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// Inline implementations for Pypued - -// initialise pointer -void Pypued::init(void) { - if (!s_pypued) s_pypued = static_cast<PYPUED*>(pypued_address_()); -} - diff --git a/Generators/PythiaExo_i/PythiaExo_i/Pyssmt.h b/Generators/PythiaExo_i/PythiaExo_i/Pyssmt.h deleted file mode 100644 index 47ef9962b9e75cdf44565594a69c20c1e8e1719f..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/PythiaExo_i/Pyssmt.h +++ /dev/null @@ -1,72 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - - -#ifndef PYSSMT_H -#define PYSSMT_H - -extern "C" { - void* pyssmt_address_(void); -} -/** - -@class Pyssmt.hh - -@brief Class definition for Pyssmt, which is used - to modify the Pythia Pyssmt common. - - Environment: - CDF Run 2 - - -@author Chris Green, Purdue University - Stan Thompson, Glasgow University - - Pythia Common access method -*/ -class Pyssmt { -public: - Pyssmt(); - ~Pyssmt(); - - const double& zmix(int i, int j) const; - const double& umix(int i, int j) const; - const double& vmix(int i, int j) const; - const double& smz(int i) const; - const double& smw(int i) const; - const double& sfmix(int i, int j) const; - - inline void init(); - -private: - - static const int s_sizeZmix = 4; - static const int s_sizeUmix = 2; - static const int s_sizeVmix = 2; - static const int s_lenSmz = 4; - static const int s_lenSmw = 2; - static const int s_lenSfmix = 4; - static const int s_widthSfmix = 16; - - struct PYSSMT; - friend struct PYSSMT; - - struct PYSSMT { - double zmix[s_sizeZmix][s_sizeZmix]; - double umix[s_sizeUmix][s_sizeUmix]; - double vmix[s_sizeVmix][s_sizeVmix]; - double smz[s_lenSmz]; - double smw[s_lenSmw]; - double sfmix[s_lenSfmix][s_widthSfmix]; - }; - - mutable int m_dummy; - mutable double m_realdummy; - - static PYSSMT const * s_pyssmt; -}; - -#include "PythiaExo_i/Pyssmt.icc" - -#endif diff --git a/Generators/PythiaExo_i/PythiaExo_i/Pyssmt.icc b/Generators/PythiaExo_i/PythiaExo_i/Pyssmt.icc deleted file mode 100644 index b29d597c6453df77ae20f913a55fe99906d6cc71..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/PythiaExo_i/Pyssmt.icc +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// Inline implementations for Pyssmt - -// initialise pointer -void Pyssmt::init(void) { - if (!s_pyssmt) s_pyssmt = static_cast<PYSSMT*>(pyssmt_address_()); -} - diff --git a/Generators/PythiaExo_i/PythiaExo_i/Pysubs.h b/Generators/PythiaExo_i/PythiaExo_i/Pysubs.h deleted file mode 100644 index 835f891dd5bf5328483352153f6e84484c00b584..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/PythiaExo_i/Pysubs.h +++ /dev/null @@ -1,66 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - - -#ifndef Pysubs_h -#define Pysubs_h - -extern "C" { - void* pysubs_address_(void); -} - -/** -@class Pysubs.hh - -@brief Class definition for Pysubs, which is used - to modify the Pythia Pysubs common. - - Environment: - CDF Run 2 - -@author Chris Green, Purdue University - Stan Thompson, Glasgow University - - Pythia Common access method -*/ - -class Pysubs { -public: - Pysubs(); - ~Pysubs(); - int& msel(); - int& msub(int n); - int& kfin(int iside, int jflav); - double& ckin(int n); - inline void init(); // inlined for speed of access (small function) - // return common array lengths - int lenMsub() const {return s_lenMsub;} - int lenCkin() const {return s_lenCkin;} - int lenKfin() const {return s_lenKfin;} - int depthKfin() const {return s_depthKfin;} -private: - - // Lengths of array in PYSUBS common - static const int s_lenMsub = 500; - static const int s_lenCkin = 200; - static const int s_lenKfin = 81; - static const int s_depthKfin = 2; - - struct PYSUBS; - friend struct PYSUBS; - struct PYSUBS { - int msel; - int padding; - int msub[s_lenMsub]; - int kfin[s_lenKfin][s_depthKfin]; - double ckin[s_lenCkin]; - }; - int m_dummy; - double m_realdummy; - static PYSUBS* s_pysubs; -}; - -#include "PythiaExo_i/Pysubs.icc" - -#endif diff --git a/Generators/PythiaExo_i/PythiaExo_i/Pysubs.icc b/Generators/PythiaExo_i/PythiaExo_i/Pysubs.icc deleted file mode 100644 index ba48892423c5e63ef4e2ce9a4245c6110146692a..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/PythiaExo_i/Pysubs.icc +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// Inline implementations for Pysubs - -// initialise pointer -void Pysubs::init(void) { - if (!s_pysubs) s_pysubs = static_cast<PYSUBS*>(pysubs_address_()); -} - diff --git a/Generators/PythiaExo_i/PythiaExo_i/Pytcsm.h b/Generators/PythiaExo_i/PythiaExo_i/Pytcsm.h deleted file mode 100644 index 813a52e86bb316bb356f2adf20193a86b8b04daa..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/PythiaExo_i/Pytcsm.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef PYTCSM_H -#define PYTCSM_H - -extern "C" { - void* pytcsm_address_(void); -} -/** -@class Pytcsm.hh - -@brief Description: - Class definition for Pytcsm, which is used - to modify the Pythia Pytcsm common. - -@author Georgios Stavropoulos, U.C. Berkeley - - Pythia Common access method -*/ -class Pytcsm { -public: - Pytcsm(); - ~Pytcsm(); - - int& itcm(int n); - double& rtcm(int n); - - int lenItcm() const {return s_lenItcm;} - int lenRtcm() const {return s_lenRtcm;} - - inline void init(); - -private: - - static const int s_lenItcm = 100; - static const int s_lenRtcm = 100; - - struct PYTCSM; - friend struct PYTCSM; - - struct PYTCSM { - int itcm[s_lenItcm]; - double rtcm[s_lenRtcm]; - }; - - int m_dummy; - double m_realdummy; - - static PYTCSM* s_pytcsm; -}; - -#include "PythiaExo_i/Pytcsm.icc" - -#endif diff --git a/Generators/PythiaExo_i/PythiaExo_i/Pytcsm.icc b/Generators/PythiaExo_i/PythiaExo_i/Pytcsm.icc deleted file mode 100644 index d6ab0487e908c2aff171eaef95dd78ebda31a55b..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/PythiaExo_i/Pytcsm.icc +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// Inline implementations for Pytcsm - -// initialise pointer -void Pytcsm::init(void) { - if (!s_pytcsm) s_pytcsm = static_cast<PYTCSM*>(pytcsm_address_()); -} - diff --git a/Generators/PythiaExo_i/PythiaExo_i/PythiaGS.h b/Generators/PythiaExo_i/PythiaExo_i/PythiaGS.h deleted file mode 100644 index e7216bd35d6db1932b75f9910c493f5fb2d56e9b..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/PythiaExo_i/PythiaGS.h +++ /dev/null @@ -1,146 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef PYTHIAEXO_I_PYTHIAGS_H -#define PYTHIAEXO_I_PYTHIAGS_H - -#include "GeneratorModules/GenModule.h" -#include "PythiaExo_i/Pydat1.h" -#include "PythiaExo_i/Pydat2.h" -#include "PythiaExo_i/Pydat3.h" -#include "PythiaExo_i/Pysubs.h" -#include "PythiaExo_i/Pypars.h" -#include "PythiaExo_i/Pydatr.h" -#include "PythiaExo_i/Pymssm.h" -#include "PythiaExo_i/Pyint1.h" -#include "PythiaExo_i/Pyint2.h" -#include "PythiaExo_i/Pyint5.h" -#include "PythiaExo_i/Pytcsm.h" -#include "AcerMC_i/AcerMC_acset.h" -#include "Tauola_i/Atlas_HEPEVT.h" - -using std::string; -typedef std::vector<std::string> CommandVector; -//typedef struct { int gravev; } massesGRAVADD; - -class IAtRndmGenSvc; - - -class PythiaGS:public GenModule { -public: - PythiaGS(const std::string& name, ISvcLocator* pSvcLocator); - virtual ~PythiaGS(); - virtual StatusCode genInitialize(); - virtual StatusCode callGenerator(); - virtual StatusCode genFinalize(); - virtual StatusCode fillEvt(HepMC::GenEvent* evt); - - // Accessors to PYTHIA COMMONS - // reference to Pydat1, Pysubs and Pypars - Pydat1& pydat1(); - Pydat2& pydat2(); - Pydat3& pydat3(); - Pysubs& pysubs(); - Pypars& pypars(); - Pydatr& pydatr(); - Pymssm& pymssm(); - Pyint1& pyint1(); - Pyint2& pyint2(); - Pyint5& pyint5(); - Pytcsm& pytcsm(); - // accessor for external processes - AcerMC_acset& acermc_acset(); - - static IAtRndmGenSvc* p_AtRndmGenSvc; - static std::string pythia_stream; - -protected: - - // inputs to pyinit - std::string m_frame; - std::string m_external; //to specify the specific process when m_frame is set to user - std::string m_beam; - std::string m_target; - double m_win; - int m_gsonly; - - // various input parameters - int m_msel; - int m_firstlistevent; - int m_lastlistevent; - int m_eventlistlevel; - std::vector<int> m_pystatlistlevel; - int m_initlistlevel; - int m_randomseed; - std::string m_envval1; - int m_fortout; - - std::string m_RndmFileName; - int m_RndmFileNumber; - int m_RndmSwitch; - int m_RndmFirstEvent; - int m_RndmSkipEvents; - int m_RndmMOVE; - int m_RndmFileLength; - - std::vector<long int> m_seeds; - - // event counter - int m_events ; - Pysubs m_pysubs; - // Decay table handling - // AbsParmEnum _decayFileMode; - // AbsParmFilename _decayFile; - // Pydat1 data, methods - Pydat1 m_pydat1; - // Pypars data, methods - Pypars m_pypars; - // Pydat2 data, methods - Pydat2 m_pydat2; - // Pydat3 data, methods - Pydat3 m_pydat3; - // Pydatr access for random numbers (only set the 1st seed just now - Pydatr m_pydatr; - // Pyint1 access for data - Pyint1 m_pyint1; - // Pyint2 access for data - Pyint2 m_pyint2; - // Pyint5 access for data - Pyint5 m_pyint5; - // SUSY access - Pymssm m_pymssm; - // PYTCSM access - Pytcsm m_pytcsm; - // external proces - int m_ExternalProcess; - AcerMC_acset m_acermc_acset; - - // Private helper method to initialize talk-to - // void _initializeTalkTo(); - - // Commands to setup pythia - CommandVector m_pythiaCommandVector; - - // Control to set the ATLAS defaults - bool m_AtlasDefaults; - - // The susy file name - std::string m_read_Filesusy; - - // Method to Manage the random seed IO from/to a file - void RandomNumberIO(void); - - // I/O to HEPEVT - void store_Atlas_HEPEVT(void); - - static Atlas_HEPEVT* s_atlas_HEPEVT; - // massesGRAVADD masses_; - - double m_sum_pari10; - double m_sum_w; - -}; - - -#endif diff --git a/Generators/PythiaExo_i/PythiaExo_i/PythiaLLP.h b/Generators/PythiaExo_i/PythiaExo_i/PythiaLLP.h deleted file mode 100644 index e9a649db2f5e9eb0bad04367d47438d197c64762..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/PythiaExo_i/PythiaLLP.h +++ /dev/null @@ -1,142 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef PYTHIAEXO_I_PYTHIALLP_H -#define PYTHIAEXO_I_PYTHIALLP_H - -#include "GeneratorModules/GenModule.h" -#include "PythiaExo_i/Pydat1.h" -#include "PythiaExo_i/Pydat2.h" -#include "PythiaExo_i/Pydat3.h" -#include "PythiaExo_i/Pysubs.h" -#include "PythiaExo_i/Pypars.h" -#include "PythiaExo_i/Pydatr.h" -#include "PythiaExo_i/Pymssm.h" -#include "PythiaExo_i/Pyint1.h" -#include "PythiaExo_i/Pyint2.h" -#include "PythiaExo_i/Pyint5.h" -#include "PythiaExo_i/Pytcsm.h" -#include "AcerMC_i/AcerMC_acset.h" -#include "Tauola_i/Atlas_HEPEVT.h" - -using std::string; // @todo ...and then it _isn't_ used without std::! -typedef std::vector<std::string> CommandVector; - -class IAtRndmGenSvc; - - -class PythiaLLP : public GenModule { -public: - PythiaLLP(const std::string& name, ISvcLocator* pSvcLocator); - virtual ~PythiaLLP(); - virtual StatusCode genInitialize(); - virtual StatusCode callGenerator(); - virtual StatusCode genFinalize(); - virtual StatusCode fillEvt(HepMC::GenEvent* evt); - - // Accessors to PYTHIA COMMONS - // reference to Pydat1, Pysubs and Pypars - Pydat1& pydat1(); - Pydat2& pydat2(); - Pydat3& pydat3(); - Pysubs& pysubs(); - Pypars& pypars(); - Pydatr& pydatr(); - Pymssm& pymssm(); - Pyint1& pyint1(); - Pyint2& pyint2(); - Pyint5& pyint5(); - Pytcsm& pytcsm(); - // accessor for external processes - AcerMC_acset& acermc_acset(); - - static IAtRndmGenSvc* p_AtRndmGenSvc; - static std::string pythia_stream; - -protected: - - // inputs to pyinit - std::string m_frame; - std::string m_external; //to specify the specific process when m_frame is set to user - std::string m_beam; - std::string m_target; - double m_win; - - // various input parameters - int m_msel; - int m_firstlistevent; - int m_lastlistevent; - int m_eventlistlevel; - std::vector<int> m_pystatlistlevel; - int m_initlistlevel; - int m_randomseed; - std::string m_envval1; - int m_fortout; - - std::string m_RndmFileName; - int m_RndmFileNumber; - int m_RndmSwitch; - int m_RndmFirstEvent; - int m_RndmSkipEvents; - int m_RndmMOVE; - int m_RndmFileLength; - - std::vector<long int> m_seeds; - - // event counter - int m_events ; - Pysubs m_pysubs; - // Decay table handling - // AbsParmEnum _decayFileMode; - // AbsParmFilename _decayFile; - // Pydat1 data, methods - Pydat1 m_pydat1; - // Pypars data, methods - Pypars m_pypars; - // Pydat2 data, methods - Pydat2 m_pydat2; - // Pydat3 data, methods - Pydat3 m_pydat3; - // Pydatr access for random numbers (only set the 1st seed just now - Pydatr m_pydatr; - // Pyint1 access for data - Pyint1 m_pyint1; - // Pyint2 access for data - Pyint2 m_pyint2; - // Pyint5 access for data - Pyint5 m_pyint5; - // SUSY access - Pymssm m_pymssm; - // PYTCSM access - Pytcsm m_pytcsm; - // external proces - int m_ExternalProcess; - AcerMC_acset m_acermc_acset; - - // Private helper method to initialize talk-to - // void _initializeTalkTo(); - - // Commands to setup pythia - CommandVector m_pythiaCommandVector; - - // Control to set the ATLAS defaults - bool m_AtlasDefaults; - - // The susy file name - std::string m_read_Filesusy; - - // - std::string m_LLP_PYUPDA_file; - - // Method to Manage the random seed IO from/to a file - void RandomNumberIO(void); - - // I/O to HEPEVT - void store_Atlas_HEPEVT(void); - - static Atlas_HEPEVT* s_atlas_HEPEVT; -}; - - -#endif diff --git a/Generators/PythiaExo_i/PythiaExo_i/PythiaMono.h b/Generators/PythiaExo_i/PythiaExo_i/PythiaMono.h deleted file mode 100644 index 594cafdfaebcee4a3db25de1c4e4eb768241585a..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/PythiaExo_i/PythiaMono.h +++ /dev/null @@ -1,146 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef PYTHIAEXO_I_PYTHIAMONO_H -#define PYTHIAEXO_I_PYTHIAMONO_H -#include "GeneratorModules/GenModule.h" -#include "PythiaExo_i/Pydat1.h" -#include "PythiaExo_i/Pydat2.h" -#include "PythiaExo_i/Pydat3.h" -#include "PythiaExo_i/Pysubs.h" -#include "PythiaExo_i/Pypars.h" -#include "PythiaExo_i/Pydatr.h" -#include "PythiaExo_i/Pymssm.h" -// #include "PythiaExo_i/Pypued.h" -// #include "PythiaExo_i/Pymsrv.h" -#include "PythiaExo_i/Pyint1.h" -#include "PythiaExo_i/Pyint2.h" -#include "PythiaExo_i/Pyint5.h" -#include "PythiaExo_i/Pytcsm.h" -#include "AcerMC_i/AcerMC_acset.h" -#include "Tauola_i/Atlas_HEPEVT.h" - -using std::string; -typedef std::vector<std::string> CommandVector; - -class IAtRndmGenSvc; - - -class PythiaMono : public GenModule { -public: - PythiaMono(const std::string& name, ISvcLocator* pSvcLocator); - virtual ~PythiaMono(); - virtual StatusCode genInitialize(); - virtual StatusCode callGenerator(); - virtual StatusCode genFinalize(); - virtual StatusCode fillEvt(HepMC::GenEvent* evt); - - // Accessors to PYTHIA COMMONS - // reference to Pydat1, Pysubs and Pypars - Pydat1& pydat1(); - Pydat2& pydat2(); - Pydat3& pydat3(); - Pysubs& pysubs(); - Pypars& pypars(); - Pydatr& pydatr(); - Pymssm& pymssm(); - // Pypued& pypued(); - // Pymsrv& pymsrv(); - Pyint1& pyint1(); - Pyint2& pyint2(); - Pyint5& pyint5(); - Pytcsm& pytcsm(); - // accessor for external processes - AcerMC_acset& acermc_acset(); - - static IAtRndmGenSvc* p_AtRndmGenSvc; - static std::string pythia_stream; - -protected: - - // inputs to pyinit - std::string m_frame; - std::string m_external; //to specify the specific process when m_frame is set to user - std::string m_beam; - std::string m_target; - double m_win; - - // various input parameters - int m_msel; - int m_firstlistevent; - int m_lastlistevent; - int m_eventlistlevel; - std::vector<int> m_pystatlistlevel; - int m_initlistlevel; - int m_randomseed; - std::string m_envval1; - int m_fortout; - - std::string m_RndmFileName; - int m_RndmFileNumber; - int m_RndmSwitch; - int m_RndmFirstEvent; - int m_RndmSkipEvents; - int m_RndmMOVE; - int m_RndmFileLength; - - std::vector<long int> m_seeds; - - // event counter - int m_events ; - Pysubs m_pysubs; - // Decay table handling - // AbsParmEnum _decayFileMode; - // AbsParmFilename _decayFile; - // Pydat1 data, methods - Pydat1 m_pydat1; - // Pypars data, methods - Pypars m_pypars; - // Pydat2 data, methods - Pydat2 m_pydat2; - // Pydat3 data, methods - Pydat3 m_pydat3; - // Pydatr access for random numbers (only set the 1st seed just now - Pydatr m_pydatr; - // Pyint1 access for data - Pyint1 m_pyint1; - // Pyint2 access for data - Pyint2 m_pyint2; - // Pyint5 access for data - Pyint5 m_pyint5; - // SUSY access - Pymssm m_pymssm; - // UED access - // Pypued m_pypued; - // RPV - // Pymsrv m_pymsrv; - // PYTCSM access - Pytcsm m_pytcsm; - // external proces - int m_ExternalProcess; - AcerMC_acset m_acermc_acset; - - // Private helper method to initialize talk-to - // void _initializeTalkTo(); - - // Commands to setup pythia - CommandVector m_pythiaCommandVector; - - // Control to set the ATLAS defaults - bool m_AtlasDefaults; - - // The susy file name - std::string m_read_Filesusy; - - // Method to Manage the random seed IO from/to a file - void RandomNumberIO(void); - - // I/O to HEPEVT - void store_Atlas_HEPEVT(void); - - static Atlas_HEPEVT* s_atlas_HEPEVT; -}; - - -#endif diff --git a/Generators/PythiaExo_i/PythiaExo_i/PythiaResMod.h b/Generators/PythiaExo_i/PythiaExo_i/PythiaResMod.h deleted file mode 100644 index d10eeceece609082eb0c6718786858c7a72e9b18..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/PythiaExo_i/PythiaResMod.h +++ /dev/null @@ -1,282 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef GENERATORMODULESPYTHIARESMOD_H -#define GENERATORMODULESPYTHIARESMOD_H - -#include "GeneratorModules/GenModule.h" - -#include "PythiaExo_i/Pydat1.h" -#include "PythiaExo_i/Pydat2.h" -#include "PythiaExo_i/Pydat3.h" -#include "PythiaExo_i/Pysubs.h" -#include "PythiaExo_i/Pypars.h" -#include "PythiaExo_i/Pydatr.h" -#include "PythiaExo_i/Pymssm.h" -#include "PythiaExo_i/Pypued.h" -#include "PythiaExo_i/Pypevwt.h" -#include "PythiaExo_i/Pymsrv.h" -#include "PythiaExo_i/Pyint1.h" -#include "PythiaExo_i/Pyint2.h" -#include "PythiaExo_i/Pyint5.h" -#include "PythiaExo_i/Pytcsm.h" - -#include "AcerMC_i/AcerMC_acset.h" -#include "Tauola_i/Atlas_HEPEVT.h" - -/// @todo Not in a header file! -using std::string; - -/// @todo Inside class (these are being declared as global symbols) -typedef std::vector<std::string> CommandVector; -typedef std::vector<std::string> PygiveCommandVector; - -// Forward declaration of RNG service interface -class IAtRndmGenSvc; - - -/*** -@brief ~ carbon copy of Pythia.h for ResMod class -PythiaModifies/pysgex.F modifications introduced for W' and Z' [ISUB 141,142] - set PythiaResMod.UseResMod=1 to use it -***/ - - -class PythiaResMod : public GenModule { -public: - - /// @name Construction / destruction - //@{ - /// Standard constructor - PythiaResMod(const std::string& name, ISvcLocator* pSvcLocator); - /// Destructor - virtual ~PythiaResMod(); - //@} - - - /// @name Event loop methods - //@{ - virtual StatusCode genInitialize(); - virtual StatusCode callGenerator(); - virtual StatusCode genFinalize(); - virtual StatusCode fillEvt(HepMC::GenEvent* evt); - //@} - - - /// @name Tune switches - /// @brief ATLAS tune and parameters implementation, introduced for MC09/MC08. See atlasTune.cxx - //@{ - - /// Set tune via function call - StatusCode setPythiaTune(); - - /// Use current ATLAS tune - StatusCode atlasTune(); - - //@} - - - /// @ name Accessors to PYTHIA COMMONS - //@{ - Pydat1& pydat1(); - Pydat2& pydat2(); - Pydat3& pydat3(); - Pysubs& pysubs(); - Pypars& pypars(); - Pydatr& pydatr(); - Pymssm& pymssm(); - Pypued& pypued(); - Pypevwt& pypevwt(); - Pymsrv& pymsrv(); - Pyint1& pyint1(); - Pyint2& pyint2(); - Pyint5& pyint5(); - Pytcsm& pytcsm(); - //@} - - /// Accessor for external processes - AcerMC_acset& acermc_acset(); - - // Pointer to AtRndmGenSvc - static IAtRndmGenSvc* p_AtRndmGenSvc; - static std::string pythia_stream; - - -protected: - - // Settable Properties - - /// @name Inputs to @c pyinit - //@{ - std::string m_frame; - std::string m_external; //to specify the specific process when m_frame is set to user - std::string m_beam; - std::string m_target; - double m_win; - int m_UseResMod; - //@} - - - /// Tune setting, assumed form is m_Default_Tune_Name=TUNETYPE_TUNEINDEX - std::string m_Tune_Name; - - /// PYGIVE argument as C string - const char* m_pygive_cstr; - const char* m_pygive_init_cstr; - const char* m_pygive_gen_cstr; - - /// @name Various input parameters - //@{ - int m_msel; - int m_firstlistevent; - int m_lastlistevent; - int m_eventlistlevel; - std::vector<int> m_pystatlistlevel; - int m_initlistlevel; - int m_randomseed; - std::string m_envval1; - int m_fortout; - //@} - - /// @name Random file numbers, offsets, etc. - //@{ - std::string m_RndmFileName; - int m_RndmFileNumber; - int m_RndmSwitch; - int m_RndmFirstEvent; - int m_RndmSkipEvents; - int m_RndmMOVE; - int m_RndmFileLength; - //@} - - /// RNG seeds - std::vector<long int> m_seeds; - - /// Event counter - int m_events; - - /// @name Common blocks - //@{ - /// Subprocess switches - Pysubs m_pysubs; - /// Pydat1 data, methods - Pydat1 m_pydat1; - /// Pypars data, methods - Pypars m_pypars; - /// Pydat2 data, methods - Pydat2 m_pydat2; - /// Pydat3 data, methods - Pydat3 m_pydat3; - /// Pydatr access for random numbers (only set the 1st seed just now - Pydatr m_pydatr; - /// Pyint1 access for data - Pyint1 m_pyint1; - /// Pyint2 access for data - Pyint2 m_pyint2; - /// Pyint5 access for data - Pyint5 m_pyint5; - /// SUSY access - Pymssm m_pymssm; - /// UED access - Pypued m_pypued; - // Event weight access - Pypevwt m_pypevwt; - /// RPV - Pymsrv m_pymsrv; - /// PYTCSM access - Pytcsm m_pytcsm; - //@} - - /// External process - int m_ExternalProcess; - AcerMC_acset m_acermc_acset; - -//sgluon - bool m_addParticle; - - // Commands to setup pythia - CommandVector m_pythiaCommandVector; - // Commands to setup pythia / make param. querries - via PYGIVE: - // pass parameters or querry parameter value before PYINIT - PygiveCommandVector m_PygiveCommandVector; - // querry parameter value after PYINIT e.g. to check if initializaton resets the value - PygiveCommandVector m_Param_Query_AfterInit; - // querry parameter value after PYEVNT e.g. to get event-specific param. value - PygiveCommandVector m_Param_Query_AfterGen; - - /// @deprecated ??? - bool m_AtlasDefaults; - - /// @name Tunes implemented as switches - /// @deprecated Kept for backward compatibility -- strongly prefer to use Tune_Name flag - //@{ - /** use ATLAS PYTHIA technical settings [default:true] - eventRecord, errors*/ - bool m_useAtlasPythiaRecomm, m_Default_useAtlasPythiaRecomm; - /**use ATLAS PYTHIA parameters [default:true] - masses, dec. widths, etc. */ - bool m_useAtlasPythiaCommon,m_Default_useAtlasPythiaCommon; - /** complete mc09 tune Pythia parameters set [default:true]*/ - bool m_useAtlasPythiaTune09,m_Default_useAtlasPythiaTune09; - /**complete mc08 tune Pythia parameters set [default:false] - if set to true overrides mc09 tune, - mc09 should be set to false in order to use mc08 only */ - bool m_useAtlasPythiaTune08,m_Default_useAtlasPythiaTune08; - /** use no ATLAS PYTHIA settings, apart from pynit inputs [default:false]*/ - bool m_useNoAtlasPythiaParam,m_Default_useNoAtlasPythiaParam; - - - ///call pytune directly in case any parameters set py the tune are to be overwritten from jO - //@{ - int m_direct_call_to_pytune; - //@} - - /// The susy file name - std::string m_read_Filesusy; - - //----------------------------------------------------------------------------- - - /// @name Other class members (not properties) - //@{ - - // more tune-related vars: - //m_Tune_Index see AtlasTune.cxx for catalogue - //m_Default_Tune_Name=TUNETYPE_TUNEINDEX - //so that (after parsing in Pythia.cxx): m_Tune_Type=TUNETYPE and m_Tune_Index=TUNEINDEX - int m_Tune_Index; - std::string m_Tune_Type; - // needed in tune setting for protection against tune-seting inf. loop - int m_atlasTune_loop_prot; - //tune to be assumed by default and in cases of invalid TUNETYPE or TUNEINDEX when TUNETYPE=="ATLAS" - std::string m_Default_Tune_Name, m_Default_Tune_Type; int m_Default_Tune_Index; - // dummy starting tune string - std::string m_Starting_Tune_Name, m_Starting_Tune_Type; int m_Starting_Tune_Index; - // backward compatibility with early 08/09 jO when tunes were impl. as switches: - // to be updated if MC08 and MC09 tunes Tune_Type or Tune_Index are changed - std::string m_mc0809_Tune_Type; - int m_mc09_Tune_Index; - int m_mc08_Tune_Index; - // - - //@} - - // multiply x-section by a num. factor - // add both in the MetaData print-out - double m_Default_xsscale, m_xsscale; - - // print out manually set x-section from the MetaData - double m_Default_SetCrossSection, m_SetCrossSection; - - /// Method to Manage the random seed IO from/to a file - void RandomNumberIO(); - - /// I/O to HEPEVT - void store_Atlas_HEPEVT(); - - /// TAUOLA HEPEVT - static Atlas_HEPEVT* s_atlas_HEPEVT; -}; - - -#endif diff --git a/Generators/PythiaExo_i/PythiaExo_i/PythiaTau3Mu.h b/Generators/PythiaExo_i/PythiaExo_i/PythiaTau3Mu.h deleted file mode 100644 index 089062540c69135df724ae951cddb145d3783d90..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/PythiaExo_i/PythiaTau3Mu.h +++ /dev/null @@ -1,13 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#pragma once -#include "Pythia_i/Pythia.h" -#include "GeneratorModules/GenModule.h" - -class PythiaTau3Mu:public Pythia { - public: - PythiaTau3Mu(const std::string& name, ISvcLocator* pSvcLocator); - ~PythiaTau3Mu(); -}; diff --git a/Generators/PythiaExo_i/PythiaExo_i/PythiaTopMdiff.h b/Generators/PythiaExo_i/PythiaExo_i/PythiaTopMdiff.h deleted file mode 100644 index f7b84f581da38425be07f908f289aba501adbb63..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/PythiaExo_i/PythiaTopMdiff.h +++ /dev/null @@ -1,282 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef GENERATORMODULESPYTHIATOPMDIFF_H -#define GENERATORMODULESPYTHIATOPMDIFF_H - -#include "GeneratorModules/GenModule.h" - -#include "PythiaExo_i/Pydat1.h" -#include "PythiaExo_i/Pydat2.h" -#include "PythiaExo_i/Pydat3.h" -#include "PythiaExo_i/Pysubs.h" -#include "PythiaExo_i/Pypars.h" -#include "PythiaExo_i/Pydatr.h" -#include "PythiaExo_i/Pymssm.h" -#include "PythiaExo_i/Pypued.h" -#include "PythiaExo_i/Pypevwt.h" -#include "PythiaExo_i/Pymsrv.h" -#include "PythiaExo_i/Pyint1.h" -#include "PythiaExo_i/Pyint2.h" -#include "PythiaExo_i/Pyint5.h" -#include "PythiaExo_i/Pytcsm.h" - -#include "AcerMC_i/AcerMC_acset.h" -#include "Tauola_i/Atlas_HEPEVT.h" - -/// @todo Not in a header file! -using std::string; - -/// @todo Inside class (these are being declared as global symbols) -typedef std::vector<std::string> CommandVector; -typedef std::vector<std::string> PygiveCommandVector; - -// Forward declaration of RNG service interface -class IAtRndmGenSvc; - - -/*** -@brief ~ carbon copy of Pythia.h for Top class -PythiaModifies/pyofsh.F pyscat.F modifications introduced in order to enable t and tbar to have different masses - set PythiaTopMdiff.UseTopMdiff=1 to use it -***/ - - -class PythiaTopMdiff : public GenModule { -public: - - /// @name Construction / destruction - //@{ - /// Standard constructor - PythiaTopMdiff(const std::string& name, ISvcLocator* pSvcLocator); - /// Destructor - virtual ~PythiaTopMdiff(); - //@} - - - /// @name Event loop methods - //@{ - virtual StatusCode genInitialize(); - virtual StatusCode callGenerator(); - virtual StatusCode genFinalize(); - virtual StatusCode fillEvt(HepMC::GenEvent* evt); - //@} - - - /// @name Tune switches - /// @brief ATLAS tune and parameters implementation, introduced for MC09/MC08. See atlasTune.cxx - //@{ - - /// Set tune via function call - StatusCode setPythiaTune(); - - /// Use current ATLAS tune - StatusCode atlasTune(); - - //@} - - - /// @ name Accessors to PYTHIA COMMONS - //@{ - Pydat1& pydat1(); - Pydat2& pydat2(); - Pydat3& pydat3(); - Pysubs& pysubs(); - Pypars& pypars(); - Pydatr& pydatr(); - Pymssm& pymssm(); - Pypued& pypued(); - Pypevwt& pypevwt(); - Pymsrv& pymsrv(); - Pyint1& pyint1(); - Pyint2& pyint2(); - Pyint5& pyint5(); - Pytcsm& pytcsm(); - //@} - - /// Accessor for external processes - AcerMC_acset& acermc_acset(); - - // Pointer to AtRndmGenSvc - static IAtRndmGenSvc* p_AtRndmGenSvc; - static std::string pythia_stream; - - -protected: - - // Settable Properties - - /// @name Inputs to @c pyinit - //@{ - std::string m_frame; - std::string m_external; //to specify the specific process when m_frame is set to user - std::string m_beam; - std::string m_target; - double m_win; - int m_UseTopMdiff; - //@} - - - /// Tune setting, assumed form is m_Default_Tune_Name=TUNETYPE_TUNEINDEX - std::string m_Tune_Name; - - /// PYGIVE argument as C string - const char* m_pygive_cstr; - const char* m_pygive_init_cstr; - const char* m_pygive_gen_cstr; - - /// @name Various input parameters - //@{ - int m_msel; - int m_firstlistevent; - int m_lastlistevent; - int m_eventlistlevel; - std::vector<int> m_pystatlistlevel; - int m_initlistlevel; - int m_randomseed; - std::string m_envval1; - int m_fortout; - //@} - - /// @name Random file numbers, offsets, etc. - //@{ - std::string m_RndmFileName; - int m_RndmFileNumber; - int m_RndmSwitch; - int m_RndmFirstEvent; - int m_RndmSkipEvents; - int m_RndmMOVE; - int m_RndmFileLength; - //@} - - /// RNG seeds - std::vector<long int> m_seeds; - - /// Event counter - int m_events; - - /// @name Common blocks - //@{ - /// Subprocess switches - Pysubs m_pysubs; - /// Pydat1 data, methods - Pydat1 m_pydat1; - /// Pypars data, methods - Pypars m_pypars; - /// Pydat2 data, methods - Pydat2 m_pydat2; - /// Pydat3 data, methods - Pydat3 m_pydat3; - /// Pydatr access for random numbers (only set the 1st seed just now - Pydatr m_pydatr; - /// Pyint1 access for data - Pyint1 m_pyint1; - /// Pyint2 access for data - Pyint2 m_pyint2; - /// Pyint5 access for data - Pyint5 m_pyint5; - /// SUSY access - Pymssm m_pymssm; - /// UED access - Pypued m_pypued; - // Event weight access - Pypevwt m_pypevwt; - /// RPV - Pymsrv m_pymsrv; - /// PYTCSM access - Pytcsm m_pytcsm; - //@} - - /// External process - int m_ExternalProcess; - AcerMC_acset m_acermc_acset; - -//sgluon - bool m_addParticle; - - // Commands to setup pythia - CommandVector m_pythiaCommandVector; - // Commands to setup pythia / make param. querries - via PYGIVE: - // pass parameters or querry parameter value before PYINIT - PygiveCommandVector m_PygiveCommandVector; - // querry parameter value after PYINIT e.g. to check if initializaton resets the value - PygiveCommandVector m_Param_Query_AfterInit; - // querry parameter value after PYEVNT e.g. to get event-specific param. value - PygiveCommandVector m_Param_Query_AfterGen; - - /// @deprecated ??? - bool m_AtlasDefaults; - - /// @name Tunes implemented as switches - /// @deprecated Kept for backward compatibility -- strongly prefer to use Tune_Name flag - //@{ - /** use ATLAS PYTHIA technical settings [default:true] - eventRecord, errors*/ - bool m_useAtlasPythiaRecomm, m_Default_useAtlasPythiaRecomm; - /**use ATLAS PYTHIA parameters [default:true] - masses, dec. widths, etc. */ - bool m_useAtlasPythiaCommon,m_Default_useAtlasPythiaCommon; - /** complete mc09 tune Pythia parameters set [default:true]*/ - bool m_useAtlasPythiaTune09,m_Default_useAtlasPythiaTune09; - /**complete mc08 tune Pythia parameters set [default:false] - if set to true overrides mc09 tune, - mc09 should be set to false in order to use mc08 only */ - bool m_useAtlasPythiaTune08,m_Default_useAtlasPythiaTune08; - /** use no ATLAS PYTHIA settings, apart from pynit inputs [default:false]*/ - bool m_useNoAtlasPythiaParam,m_Default_useNoAtlasPythiaParam; - - - ///call pytune directly in case any parameters set py the tune are to be overwritten from jO - //@{ - int m_direct_call_to_pytune; - //@} - - /// The susy file name - std::string m_read_Filesusy; - - //----------------------------------------------------------------------------- - - /// @name Other class members (not properties) - //@{ - - // more tune-related vars: - //m_Tune_Index see AtlasTune.cxx for catalogue - //m_Default_Tune_Name=TUNETYPE_TUNEINDEX - //so that (after parsing in Pythia.cxx): m_Tune_Type=TUNETYPE and m_Tune_Index=TUNEINDEX - int m_Tune_Index; - std::string m_Tune_Type; - // needed in tune setting for protection against tune-seting inf. loop - int m_atlasTune_loop_prot; - //tune to be assumed by default and in cases of invalid TUNETYPE or TUNEINDEX when TUNETYPE=="ATLAS" - std::string m_Default_Tune_Name, m_Default_Tune_Type; int m_Default_Tune_Index; - // dummy starting tune string - std::string m_Starting_Tune_Name, m_Starting_Tune_Type; int m_Starting_Tune_Index; - // backward compatibility with early 08/09 jO when tunes were impl. as switches: - // to be updated if MC08 and MC09 tunes Tune_Type or Tune_Index are changed - std::string m_mc0809_Tune_Type; - int m_mc09_Tune_Index; - int m_mc08_Tune_Index; - // - - //@} - - // multiply x-section by a num. factor - // add both in the MetaData print-out - double m_Default_xsscale, m_xsscale; - - // print out manually set x-section from the MetaData - double m_Default_SetCrossSection, m_SetCrossSection; - - /// Method to Manage the random seed IO from/to a file - void RandomNumberIO(); - - /// I/O to HEPEVT - void store_Atlas_HEPEVT(); - - /// TAUOLA HEPEVT - static Atlas_HEPEVT* s_atlas_HEPEVT; -}; - - -#endif diff --git a/Generators/PythiaExo_i/share/LLP_leptonJets.pyupda.in b/Generators/PythiaExo_i/share/LLP_leptonJets.pyupda.in deleted file mode 100644 index d4077ead14dfd782d39d44159b753caae26cfd2f..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/share/LLP_leptonJets.pyupda.in +++ /dev/null @@ -1,13 +0,0 @@ - 35 H0 0 0 0 200.00000 0.01000 0.10000 0.00001E+00 2 1 - 1 0 0.399800 6000111 6000111 0 0 0 - 0 0 0.300000 6001022 6001022 0 0 0 - 0 0 0.300000 6001022 6001022 6001022 0 0 - 0 0 0.000100 6001022 6001022 6001022 6001022 0 - 1 0 0.000100 21 21 - 6000111 ~v_pion 0 0 0 4.00000 0.01000 0.10000 1.00000E-03 2 1 - 1 0 1.000000 6001022 6001022 0 0 0 - 6001022 ~Uboson 0 0 0 0.60000 0.01000 0.10000 5.00000E+00 2 1 - 1 0 0.400000 11 -11 0 0 - 1 0 0.400000 13 -13 0 0 0 - 1 0 0.200000 211 -211 0 0 0 - diff --git a/Generators/PythiaExo_i/share/LLP_leptonJets_jobOptions.py b/Generators/PythiaExo_i/share/LLP_leptonJets_jobOptions.py deleted file mode 100644 index 9c32f4bf7a8cd829dc4e3a348acbaa751e81f6dc..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/share/LLP_leptonJets_jobOptions.py +++ /dev/null @@ -1,63 +0,0 @@ -########################################################### -## jobOptions for evgen of the process: ## -## h --> v-pion v-pion (v-pion --> u-boson) ## -## ## -## author: Daniel Ventura, U. Washington ## -## ventura@cern.ch ## -########################################################### - -from AthenaCommon.AlgSequence import AlgSequence -topAlg = AlgSequence("TopAlg") - -# Number of events to be processed (default is 10) -NumEvts = 10 -############################################### -# -# Initialize Pythia -# - -theApp.EvtMax = NumEvts - -from AthenaServices.AthenaServicesConf import AtRndmGenSvc -ServiceMgr += AtRndmGenSvc() -ServiceMgr.AtRndmGenSvc.Seeds = ["PYTHIA 4789899 989240512","PYTHIA_INIT 820021 2347532"] - - - -#include ( "EvgenJobOptions/MC8_Pythia_Common.py" ) -from PythiaExo_i.PythiaLLP_iConf import PythiaLLP -topAlg += PythiaLLP() -Pythia = topAlg.PythiaLLP - -# HV Higgs lepton-jets production -Pythia.LLPpyupda = "LLP_leptonJets.pyupda.in" -Pythia.PythiaCommand += ["pysubs msel 0"] -Pythia.PythiaCommand += ["pydat1 parj 22 2"] -Pythia.PythiaCommand += ["pydat1 parj 71 500000"] #max ct of particles -Pythia.PythiaCommand += ["pypars mstp 127 1"] - -#Create gg --> H0 --> vpi vpi -Pythia.PythiaCommand += ["pysubs msub 152 1"] - -#set the mass of the H0 -Pythia.PythiaCommand += ["pydat2 pmas 35 1 120.D0"] - -#set the mass of the v-pion -Pythia.PythiaCommand += ["pydat2 pmas 6000111 1 4.D0"] - -#set the lifetime of the v-pion (c tau in mm) -Pythia.PythiaCommand += ["pydat2 pmas 6000111 4 0.D0"] - -#set the mass of the u-boson -Pythia.PythiaCommand += ["pydat2 pmas 6001022 1 0.6D0"] -Pythia.PythiaCommand += ["pydat2 pmas 6001022 4 80.D0"] - -#-------------------------------------------------------------- - -# Configuration for EvgenJobTransforms - -#-------------------------------------------------------------- - -from EvgenJobOptions.PythiaEvgenConfig import evgenConfig -evgenConfig.efficiency = 0.95 - diff --git a/Generators/PythiaExo_i/share/PythiaResModGluon.py b/Generators/PythiaExo_i/share/PythiaResModGluon.py deleted file mode 100644 index 41c85000474e49e37ae746b1c6219459522780ea..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/share/PythiaResModGluon.py +++ /dev/null @@ -1,71 +0,0 @@ -# example MC11 jO file that shows how to use PythiaResMod class -# - for W',Z',f + fbar -> G* [ISUB 141,142,391,392]: -# -- take out Breit-Wigner dependence + -# -- suppress low mass events from parton luminosities -# -- PythiaModified/pysgex.F modif. introduced by Oliver Stelzer-Chilton & Daniel Hayden, Exotics group - -from AthenaCommon.AlgSequence import AlgSequence -topAlg = AlgSequence("TopAlg") - -from PythiaExo_i.PythiaResMod_iConf import PythiaResMod -topAlg += PythiaResMod() -PythiaResMod = topAlg.PythiaResMod - -theApp.EvtMax = 100 - -#---------------------------------------------------------------------------------------------------------------------- -# enable using the modified pysgex.F -#(default: UseResMod=0; do not use modified pysgex.F) -#(UseResMod=1; use modified pysgex.F for W',Z',f + fbar -> G*) -PythiaResMod.UseResMod=1 - - -# Graviton resonance mass (in GeV) -GravitonMass = 1000 - -#other commands for PythiaResMod are as they are for Pythia alg. -# Z prime specific parameters for pythia : -PythiaResMod.PythiaCommand += [ - "pysubs msel 0", -# 391 and 392 are the graviton subprocesses qqbar/gg - "pysubs msub 391 1", - "pysubs msub 392 1", - "pydat3 mdcy 347 1 1", -# I 5000039 Graviton* (m = 1000.000 GeV) --> - "pydat3 mdme 4084 1 0", - "pydat3 mdme 4085 1 0", - "pydat3 mdme 4086 1 0", - "pydat3 mdme 4087 1 0", - "pydat3 mdme 4088 1 0", - "pydat3 mdme 4089 1 0", - "pydat3 mdme 4090 1 0", - "pydat3 mdme 4091 1 0", -# select decay to e-e+: - "pydat3 mdme 4092 1 1", - "pydat3 mdme 4093 1 0", - "pydat3 mdme 4094 1 0", - "pydat3 mdme 4095 1 0", - "pydat3 mdme 4096 1 0", - "pydat3 mdme 4097 1 0", - "pydat3 mdme 4098 1 0", - "pydat3 mdme 4099 1 0", - "pydat3 mdme 4100 1 0", - "pydat3 mdme 4101 1 0", - "pydat3 mdme 4102 1 0", - "pydat3 mdme 4103 1 0", -# PARP(50) : (D=0.054) dimensionless coupling, which enters quadratically -# in all partial widths of the excited graviton G* resonance, -# is kappa_mG* = sqrt(2)*x1*k/MPl~, where x1~3.83 is the first zero -# of the J1 Bessel function and MPl~ is the modified -# Planck mass scale [Ran99, Bij01]. -# default corresponds to k/Mpl~=0.01 in hep-ph/0006114 - "pypars parp 50 0.54", -# cutoff for QED FSR in Pythia to 20000 GeV (='infinity', photos takes care of it). - "pydat2 pmas 5000039 1 "+str(GravitonMass) - ] - -PythiaResMod.PythiaCommand += ["pydat1 parj 90 200000", - "pydat3 mdcy 15 1 0"] - -include ( "MC11JobOptions/MC11_Tauola_Fragment.py" ) -include ( "MC11JobOptions/MC11_Photos_Fragment.py" ) diff --git a/Generators/PythiaExo_i/share/PythiaResModZprime.py b/Generators/PythiaExo_i/share/PythiaResModZprime.py deleted file mode 100644 index 15dced01de15a6db414834e826abd8fc065d9a66..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/share/PythiaResModZprime.py +++ /dev/null @@ -1,62 +0,0 @@ -# example MC11 jO file that shows how to use PythiaResMod class -# PythiaResMod class: -# * for W',Z' [ISUB 141,142]: -# * - take out Breit-Wigner dependence + -# * - supress low mass events from parton luminosities -# implementation: PythiaModified/pysgex.F - -from AthenaCommon.AlgSequence import AlgSequence -topAlg = AlgSequence("TopAlg") - -from PythiaExo_i.PythiaResMod_iConf import PythiaResMod -topAlg += PythiaResMod() -PythiaResMod = topAlg.PythiaResMod - -theApp.EvtMax = 10 - -#---------------------------------------------------------------------------------------------------------------------- -# enable using the modified pysgex.F -#(default: UseResMod=0; do not use modified pysgex.F) -#(UseResMod=1; use modified pysgex.F) -PythiaResMod.UseResMod=1 - -# Zprime resonance mass (in GeV) -ZprimeMass = 1000 - -# Minimum mass for Drell-Yan production (in GeV) -ckin1 = 100 - -# relevant proc. setup -PythiaResMod.PythiaCommand += [ - "pysubs msel 0", - "pysubs msub 141 1", # Z',Z,g with interference - # Z' decays - quarks - "pydat3 mdme 289 1 0", - "pydat3 mdme 290 1 0", - "pydat3 mdme 291 1 0", - "pydat3 mdme 292 1 0", - "pydat3 mdme 293 1 0", - "pydat3 mdme 294 1 0", - # Z' decays - leptons - "pydat3 mdme 297 1 0", - "pydat3 mdme 298 1 0", - "pydat3 mdme 299 1 1", #Z'-> mu+ mu- - "pydat3 mdme 300 1 0", - "pydat3 mdme 301 1 0", #Z'-> tau+ tau- - "pydat3 mdme 302 1 0", - # tau decays are left open - "pysubs ckin 1 "+str(ckin1), # sqrhat > 500 - # "pysubs ckin 13 -3", # - # "pysubs ckin 14 3", # eta cuts - # "pysubs ckin 15 -3", # |eta| < 3 - # "pysubs ckin 16 3", # - "pydat1 mstu 1 0", - "pydat1 mstu 2 0", - "pydat2 pmas 32 1 "+str(ZprimeMass) - ] - -PythiaResMod.PythiaCommand += ["pydat1 parj 90 200000", - "pydat3 mdcy 15 1 0"] - -include ( "MC11JobOptions/MC11_Tauola_Fragment.py" ) -include ( "MC11JobOptions/MC11_Photos_Fragment.py" ) diff --git a/Generators/PythiaExo_i/share/PythiaTopMdiff.py b/Generators/PythiaExo_i/share/PythiaTopMdiff.py deleted file mode 100644 index e48f8a27955336d53eb8296d0682260538fbb3cc..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/share/PythiaTopMdiff.py +++ /dev/null @@ -1,40 +0,0 @@ -# example MC11 jO file that shows how to use PythiaTopMdiff class -# PythiaTopMdiff class: -# In pyofsh.F and pyscat.F: -# - for qqbar (gg) -> QQbar [ISUB 81 (82)]: -# -- pyofsh.F : ISUB 81,82: set top partner to 3000006, spectrum to be filled via SLHA -# -- pyscat.F : account for qqbar (gg) -> QQbar vs qqbar (gg) -> QbarQ - -from AthenaCommon.AlgSequence import AlgSequence -topAlg = AlgSequence("TopAlg") - -from PythiaExo_i.PythiaTopMdiff_iConf import PythiaTopMdiff -topAlg += PythiaTopMdiff() -PythiaTopMdiff = topAlg.PythiaTopMdiff - -theApp.EvtMax = 10 - -#---------------------------------------------------------------------------------------------------------------------- -# enable using the modifications in -#(default: UseTopMdiff=0; do not use TopMdiff modifications in pyofsh.F and pyscat.F) -#(UseTopMdiff=1; use modified ) -PythiaTopMdiff.UseTopMdiff=1 - -PythiaTopMdiff.PythiaCommand += [ "pyinit win 7000" ] - -# relevant proc. setup -PythiaTopMdiff.PythiaCommand += [ "pypars mstp 7 6", # Heavy Flavour production top - "pymssm imss 1 11", # Turn on use of SLHA - # "pymssm imss 21 63",: done by default by Pythia_i - # "pymssm imss 22 63", : done by default by Pythia_i - #"pyinit dumpr 1 5", - #"pyinit pylistf 1"] - ] - -PythiaTopMdiff.SusyInputFile = "t_tb162_5_test.slha" - -PythiaTopMdiff.PythiaCommand += ["pydat1 parj 90 200000", - "pydat3 mdcy 15 1 0"] - -include ( "MC11JobOptions/MC11_Tauola_Fragment.py" ) -include ( "MC11JobOptions/MC11_Photos_Fragment.py" ) diff --git a/Generators/PythiaExo_i/share/jobOptions.GravADD.py b/Generators/PythiaExo_i/share/jobOptions.GravADD.py deleted file mode 100644 index 69647cb55accfe2fc7f0503ffe4b0ca14df6a793..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/share/jobOptions.GravADD.py +++ /dev/null @@ -1,66 +0,0 @@ -############################################################### -# -# GRAVADD JOB OPTIONS FILE -#============================================================== -#-------------------------------------------------------------- -# Number of events to be processed (default is 10) -NumEvts = 100 -########################################################## -theApp.EvtMax = NumEvts - - -from AthenaCommon.AlgSequence import AlgSequence -job=AlgSequence() -from PythiaExo_i.PythiaGS_iConf import PythiaGS -job +=PythiaGS() -job.PythiaGS.PythiaCommand =[ - "pydat1 mstu 21 1", - "pysubs ckin 3 35.", - "gravADD 2 7000.", - "gravADD 4 1000.", - "gravADD 3 4.", - "pyinit user GRAVADD", - "pypars mstp 52 2", # proton external PDF library - "pypars mstp 54 2", # proton external PDF library - "pypars mstp 56 2", # proton external PDF library - "pypars mstp 51 10042", # CTEQ6L - "pypars mstp 53 10042", # - "pypars mstp 55 10042", # - "pydat2 pmas 6 1 172.5", # PDG2007 TOP mass - "pydat2 pmas 24 1 80.403", # PDG2007 W mass - "pydat2 pmas 24 2 2.141", # PDG2007 W width - "pydat2 pmas 23 1 91.1876", # PDG2007 Z0 mass - "pydat2 pmas 23 2 2.4952", # PDG2007 Z0 width - "pypars mstp 81 21", # MI new model - "pypars mstp 82 4", # MI - "pypars mstp 70 0", # regularization scheme for ISR - "pypars mstp 72 1", # maximum scale for radiation off FSR dipoles - "pypars mstp 90 0", # strategy to compensate the prim kt - "pypars parp 78 0.3", # parameter controlling the amount of colour reconnection in FS - "pypars parp 80 0.1", - "pypars parp 82 2.3", # regularization scale pt0 for spectrum MI - "pypars parp 83 0.8", # parameters of the assumed matter overlap between the two colliding hadrons. - "pypars parp 84 0.7", - "pypars mstp 88 1" , # account for an assumed dominance of valence quarks at low transverse momentum scales - "pypars parp 90 0.25", - "pydat1 parj 81 0.29", - "pypars mstp 95 6", - "pydat1 mstj 11 4", - "pydat1 mstj 22 2", - "pydat1 parj 41 0.3", - "pydat1 parj 42 0.58", - "pydat1 parj 46 0.75", - "pypars mstp 84 1", - "pypars mstp 85 1", - "pypars mstp 86 2", - "pypars mstp 87 4", - "pypars mstp 89 1", - "pypars parp 89 1800" - ] - -from EvgenJobOptions.PythiaGSEvgenConfig import evgenConfig - -# -# End of job options file -# -############################################################### diff --git a/Generators/PythiaExo_i/share/jobOptions.pythiaMono.py b/Generators/PythiaExo_i/share/jobOptions.pythiaMono.py deleted file mode 100644 index 78f2a208b7c416f5d45009fea6971b4ca691e64f..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/share/jobOptions.pythiaMono.py +++ /dev/null @@ -1,152 +0,0 @@ -############################################### -# -# JobOptions for Drell-Yan monopole production -# through gamma/Z* -# -# Author: Daniel Goldin -# -############################################### - -############################################### -# -# Set output level threshold (1=VERBOSE, 2=DEBUG, 3=INFO, 4=WARNING, 5=ERROR, 6=FATAL ) -# - -from AthenaCommon.AlgSequence import AlgSequence -topAlg = AlgSequence("TopAlg") - -# MC8_Pythia_Common.py not included as it messes up -# the monopole generation. It is included in the -# background analysis - -from AthenaCommon.AppMgr import ServiceMgr -ServiceMgr.MessageSvc.OutputLevel = 3 - -############################################### -# -# User-defined inputs - -# Mono mass -MONOPOLEMASS = 500. -# Number of events to be processed (default is 10) -NumEvts = 100 - -############################################### -# -# Initialize Pythia -# - -theApp.EvtMax = NumEvts - -from AthenaServices.AthenaServicesConf import AtRndmGenSvc -ServiceMgr += AtRndmGenSvc() -ServiceMgr.AtRndmGenSvc.Seeds = ["PYTHIA 4789899 989240512","PYTHIA_INIT 820021 2347532"] - -from PythiaExo_i.PythiaMono_iConf import PythiaMono -topAlg += PythiaMono() - -################################################### -# -# Pythia commands -# gamma/Z* interference must be off but Z*->mu mu -# should still be included -# - -topAlg.PythiaMono.PythiaCommand = [ - - # Turn on q q_bar -> gamma/Z* - "pysubs msub 1 1", - - # Virtual gamma only (turn off gamma/Z* interference) - "pypars mstp 43 1", - - # Kine threshold cut - "pysubs ckin 1 " + str(2*MONOPOLEMASS+1), - - # Mono mass (in place of monopoles we use "heavy" muons) - "pydat2 pmas 13 1 " + str(MONOPOLEMASS), - - # Turn on customized subprocesses - "pysubs msel 0", - - # turn off some processes - - # no initial state showers - "pypars mstp 61 0", - # no final state showers - "pypars mstp 71 0", - # no multiple interactions - "pypars mstp 81 0", - # no hadronization - "pypars mstp 111 0", - - # Turn off mu decays - "pydat3 mdme 83 1 0", - "pydat3 mdme 84 1 0", - "pydat3 mdme 85 1 0", - "pydat3 mdme 86 1 0", - # gamma decays - "pydat3 mdme 162 1 0", - "pydat3 mdme 163 1 0", - "pydat3 mdme 164 1 0", - "pydat3 mdme 165 1 0", - "pydat3 mdme 166 1 0", - "pydat3 mdme 167 1 0", - "pydat3 mdme 168 1 0", - "pydat3 mdme 169 1 0", - "pydat3 mdme 170 1 0", - # gamma -> mu+mu- - "pydat3 mdme 171 1 1", - "pydat3 mdme 172 1 0", - "pydat3 mdme 173 1 0", - # Z decays - "pydat3 mdme 174 1 0", - "pydat3 mdme 175 1 0", - "pydat3 mdme 176 1 0", - "pydat3 mdme 177 1 0", - "pydat3 mdme 178 1 0", - "pydat3 mdme 179 1 0", - "pydat3 mdme 182 1 0", - "pydat3 mdme 183 1 0", - # Z0 -> mu+mu- - "pydat3 mdme 184 1 1", - "pydat3 mdme 185 1 0", - "pydat3 mdme 186 1 0", - "pydat3 mdme 187 1 0", - "pydat3 mdme 188 1 0", - "pydat3 mdme 189 1 0", - - # Dump event and initial settings - "pyinit pylisti 12", - "pyinit pylistf 1", - "pystat 1 3 4 5", - "pyinit dumpr 1 5" - ] - -# ASCII MC Event dump -# from TruthExamples.TruthExamplesConf import DumpMC -# topAlg += DumpMC() - -############################################################## -# Translate particles codes -# Assign heavy muon (PDG ID = 13) new ID = 50, which -# corresponds uniquely to a monopole and used -# to propagate in GEANT -############################################################# -theApp.Dlls += [ "HepMCTools" ] -theApp.TopAlg += [ "TranslateMonoID" ] -TranslateMonoID = Algorithm( "TranslateMonoID" ) -TranslateMonoID.OutputLevel = 1 - -#################################################################### -# -# POOL/ROOT output -# - -from AthenaPoolCnvSvc.WriteAthenaPool import AthenaPoolOutputStream -Stream1 = AthenaPoolOutputStream( "StreamEVGEN" ) -Stream1.OutputFile = "pythia.pool.root" -Stream1.ItemList += [ 'EventInfo#*', 'McEventCollection#*' ] -Stream1.OutputFile = "pythia_MONO_GeV_"+str(MONOPOLEMASS)+"GeV_"+str(NumEvts)+"evts.pool.root" - -#################################################################### diff --git a/Generators/PythiaExo_i/share/jobOptions.pythiaMono.py.1 b/Generators/PythiaExo_i/share/jobOptions.pythiaMono.py.1 deleted file mode 100644 index 4994cdbba07a28f118d03c33e2c8621e36049a28..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/share/jobOptions.pythiaMono.py.1 +++ /dev/null @@ -1,148 +0,0 @@ -############################################### -# -# JobOptions for Drell-Yan monopole production -# -# Author: Daniel Goldin -# -############################################### - -############################################### -# -# Set output level threshold (1=VERBOSE, 2=DEBUG, 3=INFO, 4=WARNING, 5=ERROR, 6=FATAL ) -# - -from AthenaCommon.AppMgr import ServiceMgr -ServiceMgr.MessageSvc.OutputLevel = 3 - -############################################### -# -# User-defined inputs -# - -# Center-of-Momentum Energy (in GeV) -CMENERGY = 14000. -# Mono mass -MONOPOLEMASS = 350. -# Number of events to be processed (default is 10) -NumEvts = 1000 - -############################################### -# -# Initialize Pythia -# - -theApp.EvtMax = NumEvts - -from AthenaServices.AthenaServicesConf import AtRndmGenSvc -ServiceMgr += AtRndmGenSvc() -ServiceMgr.AtRndmGenSvc.Seeds = ["PYTHIA 4789899 989240512","PYTHIA_INIT 820021 2347532"] - -from AthenaCommon.AlgSequence import AlgSequence -job = AlgSequence() -from PythiaExo_i.PythiaMono_iConf import PythiaMono -job += PythiaMono() - -################################################### -# -# Pythia commands -# gamma/Z* interference must be off but Z*->mu mu -# should still be included -# - -job.PythiaMono.PythiaCommand = [ - - # CM Energy (in GeV) - "pyinit win " + str(CMENERGY), - - # Turn on q q_bar -> gamma/Z* - "pysubs msub 1 1", - - # Virtual gamma only (turn off gamma/Z* interference) - "pypars mstp 43 1", - - # Kine threshold cut - "pysubs ckin 1 " + str(2*MONOPOLEMASS+1), - - # Mono mass (in place of monopoles we use "heavy" muons) - "pydat2 pmas 13 1 " + str(MONOPOLEMASS), - - # Turn on customized subprocesses - "pysubs msel 0", - - # turn off some processes - # no initial state showers - "pypars mstp 61 0", - # no final state showers - "pypars mstp 71 0", - # no multiple interactions - "pypars mstp 81 0", - # no hadronization - "pypars mstp 111 0", - - # Turn off mu decays - "pydat3 mdme 83 1 0", - "pydat3 mdme 84 1 0", - "pydat3 mdme 85 1 0", - "pydat3 mdme 86 1 0", - # gamma decays - "pydat3 mdme 162 1 0", - "pydat3 mdme 163 1 0", - "pydat3 mdme 164 1 0", - "pydat3 mdme 165 1 0", - "pydat3 mdme 166 1 0", - "pydat3 mdme 167 1 0", - "pydat3 mdme 168 1 0", - "pydat3 mdme 169 1 0", - "pydat3 mdme 170 1 0", - # gamma -> mu+mu- - "pydat3 mdme 171 1 1", - "pydat3 mdme 172 1 0", - "pydat3 mdme 173 1 0", - # Z decays - "pydat3 mdme 174 1 0", - "pydat3 mdme 175 1 0", - "pydat3 mdme 176 1 0", - "pydat3 mdme 177 1 0", - "pydat3 mdme 178 1 0", - "pydat3 mdme 179 1 0", - "pydat3 mdme 182 1 0", - "pydat3 mdme 183 1 0", - # Z0 -> mu+mu- - "pydat3 mdme 184 1 1", - "pydat3 mdme 185 1 0", - "pydat3 mdme 186 1 0", - "pydat3 mdme 187 1 0", - "pydat3 mdme 188 1 0", - "pydat3 mdme 189 1 0", - - # Output format - "pyinit pylistf 1", - "pystat 1" - ] - -# ASCII MC Event dump -# from TruthExamples.TruthExamplesConf import DumpMC -# job += DumpMC() - -############################################################## -# Translate particles codes -# Assign heavy muon (PDG ID = 13) new ID = 50 -############################################################# -theApp.Dlls += [ "HepMCTools" ] -theApp.TopAlg += [ "TranslateMonoID" ] -TranslateMonoID = Algorithm( "TranslateMonoID" ) -TranslateMonoID.OutputLevel = 1 - - -#################################################################### -# -# POOL/ROOT output -# - -from AthenaPoolCnvSvc.WriteAthenaPool import AthenaPoolOutputStream -Stream1 = AthenaPoolOutputStream( "StreamEVGEN" ) -Stream1.OutputFile = "pythia.pool.root" -Stream1.ItemList += [ 'EventInfo#*', 'McEventCollection#*' ] -Stream1.OutputFile = "pythia_MONO_CM_"+str(CMENERGY)+"GeV_"+str(MONOPOLEMASS)+"GeV_"+str(NumEvts)+"evts.pool.root" - -#################################################################### diff --git a/Generators/PythiaExo_i/share/jobOptions.pythiaTau3Mu.py b/Generators/PythiaExo_i/share/jobOptions.pythiaTau3Mu.py deleted file mode 100644 index abab679b4883832139c292e422fa29d0a897a9f4..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/share/jobOptions.pythiaTau3Mu.py +++ /dev/null @@ -1,35 +0,0 @@ -# W -> tau nu production with tau->mu mu mu deacy - -from AthenaCommon.AlgSequence import AlgSequence -topAlg = AlgSequence("TopAlg") -# include ( "EvgenJobOptions/MC8_Pythia_Common.py" ) - -#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -from PythiaExo_i.PythiaTau3Mu_iConf import PythiaTau3Mu -topAlg += PythiaTau3Mu() -Pythia = topAlg.PythiaTau3Mu - -Pythia.PythiaCommand = ["pysubs msel 0", # Users decay choice. - "pydat1 mstj 28 2", # use pytaud - "pydat1 parj 90 20000", # Turn off FSR. - "pysubs msub 2 1", # Create W bosons. - "pydat3 mdme 190 1 0", - "pydat3 mdme 191 1 0", - "pydat3 mdme 192 1 0", - "pydat3 mdme 194 1 0", - "pydat3 mdme 195 1 0", - "pydat3 mdme 196 1 0", - "pydat3 mdme 198 1 0", - "pydat3 mdme 199 1 0", - "pydat3 mdme 200 1 0", - "pydat3 mdme 206 1 0", # Switch for W->enu. - "pydat3 mdme 207 1 0", # Switch for W->munu. - "pydat3 mdme 208 1 1", # Switch for W->taunu. - "pydat3 mdme 209 1 0"] -#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -from EvgenJobOptions.PythiaEvgenConfig import evgenConfig -evgenConfig.efficiency = 0.9 -#from TruthExamples.TruthExamplesConf import TestHepMC -#topAlg += TestHepMC(CmEnergy=10000000.) - diff --git a/Generators/PythiaExo_i/share/t_tb162_5_test.slha b/Generators/PythiaExo_i/share/t_tb162_5_test.slha deleted file mode 100644 index 729181b4f765881f741d0ac736d40826e6a97e6a..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/share/t_tb162_5_test.slha +++ /dev/null @@ -1,26 +0,0 @@ -BLOCK QNUMBERS 3000006 # faket - 1 -2 # - 2 2 # - 3 3 # - 4 1 # -# -# -# -BLOCK MASS # Mass Spectrum -# PDG code mass particle - 6 182.500000000 # b-quark pole mass calculated from mb(mb)_Msbar - 3000006 162.500000000 # b-quark pole mass calculated from mb(mb)_Msbar -# - -# PDG Width - - -DECAY 3000006 1.07329 - - -# BR NDA ID1 ID2 - - - 0.000030 2 -24 -1 # (BR tbar -> W- db) - 0.001764 2 -24 -3 # (BR tbar -> W- sb) - 0.998206 2 -24 -5 # (BR tbar -> W- bb) diff --git a/Generators/PythiaExo_i/src/Pydat1.cxx b/Generators/PythiaExo_i/src/Pydat1.cxx deleted file mode 100644 index 01c6c459f40f21ba392044ca15d17dd74842b2ae..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/Pydat1.cxx +++ /dev/null @@ -1,62 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// access pythia common Pydat1 -#include "PythiaExo_i/Pydat1.h" - -// set pointer to zero at start -Pydat1::PYDAT1* Pydat1::s_pydat1 =0; - -// Constructor -Pydat1::Pydat1() -{ - m_dummy = -999; - m_realdummy = -999.; -} - -// Destructor -Pydat1::~Pydat1() -{ -} - -// access mstu in common -int& Pydat1::mstu(int n) { - init(); // check COMMON is initialized - if(n < 1 || n > lenMstu()) { - m_dummy = -999; - return m_dummy; - } - return s_pydat1->mstu[n-1]; -} - -// access paru in common -double& Pydat1::paru(int n) { - init(); // check COMMON is initialized - if(n < 1 || n > lenParu()) { - m_realdummy = -999.; - return m_realdummy; - } - return s_pydat1->paru[n-1]; -} - -// access mstj in common -int& Pydat1::mstj(int n) { - init(); // check COMMON is initialized - if(n < 1 || n > lenMstj()) { - m_dummy = -999; - return m_dummy; - } - return s_pydat1->mstj[n-1]; -} - -// access parj in common -double& Pydat1::parj(int n) { - init(); // check COMMON is initialized - if(n < 1 || n > lenParj()) { - m_realdummy = -999.; - return m_realdummy; - } - return s_pydat1->parj[n-1]; -} - diff --git a/Generators/PythiaExo_i/src/Pydat2.cxx b/Generators/PythiaExo_i/src/Pydat2.cxx deleted file mode 100644 index 7f1a5d9819428e5fd45721155aa91b7870acd67e..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/Pydat2.cxx +++ /dev/null @@ -1,67 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// access pythia common Pydat2 -#include "PythiaExo_i/Pydat2.h" - -#include <cstdlib> - -// set pointer to zero at start -Pydat2::PYDAT2* Pydat2::s_pydat2 =0; - -// Constructor -Pydat2::Pydat2() -{ - m_dummy = -999; - m_realdummy = -999.; -} - -// Destructor -Pydat2::~Pydat2() -{ -} - -// access kchg in common -int& Pydat2::kchg(int kc, int i) { - init(); // check COMMON is initialized - if( kc < 1 || kc > lenPmas() || - i < 1 || i > depthKchg()) - { - m_dummy = -999; - return m_dummy; - } - return s_pydat2->kchg[i-1][kc-1]; -} -// access pmas in common -double& Pydat2::pmas(int kc, int i) { - init(); // check COMMON is initialized - if( kc < 1 || kc > lenPmas() || - i < 1 || i > depthPmas()) - { - m_realdummy = -999.; - return m_realdummy; - } - return s_pydat2->pmas[i-1][kc-1]; -} - -// access parf in common -double& Pydat2::parf(int n) { - init(); // check COMMON is initialized - if(n < 1 || n > lenParf()) { - m_realdummy = -999.; - return m_realdummy; - } - return s_pydat2->parf[n-1]; - -}// access vckm in common -double& Pydat2::vckm(int i,int j) { - init(); // check COMMON is initialized - if(i < 1 || i > lenVckm() || - j < 1 || j > lenVckm()) { - m_realdummy = -999.; - return m_realdummy; - } - return s_pydat2->vckm[j-1][i-1]; -} - diff --git a/Generators/PythiaExo_i/src/Pydat3_62.cxx b/Generators/PythiaExo_i/src/Pydat3_62.cxx deleted file mode 100644 index c97b67861c465cd1155ff03e16d92b41ec80b3ab..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/Pydat3_62.cxx +++ /dev/null @@ -1,67 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// access pythia common Pydat3 version for 6.2xxx -#include "PythiaExo_i/Pydat3_62.h" -#include <cstdlib> - -// set pointer to zero at start -Pydat3::PYDAT3* Pydat3::s_pydat3 =0; - -// Constructor -Pydat3::Pydat3() -{ - m_dummy = -999; - m_realdummy = -999.; -} - -// Destructor -Pydat3::~Pydat3() -{ -} - -// access mdcy in common -int& Pydat3::mdcy(int kc, int i) { - init(); // check COMMON is initialized - if( kc < 1 || kc > lenMdcy() || - i < 1 || i > depthMdcy()) - { - m_dummy = -999; - return m_dummy; - } - return s_pydat3->mdcy[i-1][kc-1]; -} -// access mdme in common -int& Pydat3::mdme(int idc, int i) { - init(); // check COMMON is initialized - if( idc < 1 || idc > lenMdme() || - i < 1 || i > depthMdme()) - { - m_dummy = -999; - return m_dummy; - } - return s_pydat3->mdme[i-1][idc-1]; -} -// access brat in common -double& Pydat3::brat(int idc) { - init(); // check COMMON is initialized - if(idc < 1 || idc > lenBrat()) { - m_realdummy = -999.; - return m_realdummy; - } - return s_pydat3->brat[idc-1]; - -} -// access kfdp in common -int& Pydat3::kfdp(int idc, int kf) { - init(); // check COMMON is initialized - if( idc < 1 || idc > lenKfdp() || - kf < 1 || kf > depthKfdp()) - { - m_dummy = -999; - return m_dummy; - } - return s_pydat3->kfdp[kf-1][idc-1]; -} - diff --git a/Generators/PythiaExo_i/src/Pydatr.cxx b/Generators/PythiaExo_i/src/Pydatr.cxx deleted file mode 100644 index 19747f9a5cd1a7eb32ee4cdb6ae423e6a4c7c807..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/Pydatr.cxx +++ /dev/null @@ -1,42 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// access pythia common Pydatr -#include "PythiaExo_i/Pydatr.h" - -// set pointer to zero at start -Pydatr::PYDATR* Pydatr::s_pydatr =0; - -// Constructor -Pydatr::Pydatr() -{ - m_dummy = -999; - m_realdummy = -999.; -} - -// Destructor -Pydatr::~Pydatr() -{ -} - -// access mrpy in common -int& Pydatr::mrpy(int n) { - init(); // check COMMON is initialized - if(n < 1 || n > lenMrpy()) { - m_dummy = -999; - return m_dummy; - } - return s_pydatr->mrpy[n-1]; -} - -// access rrpy in common -double& Pydatr::rrpy(int n) { - init(); // check COMMON is initialized - if(n < 1 || n > lenRrpy()) { - m_realdummy = -999.; - return m_realdummy; - } - return s_pydatr->rrpy[n-1]; -} - diff --git a/Generators/PythiaExo_i/src/Pyint1.cxx b/Generators/PythiaExo_i/src/Pyint1.cxx deleted file mode 100644 index d2d4785bd0fa79e999e98eb5681d16ff403f53a8..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/Pyint1.cxx +++ /dev/null @@ -1,41 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// access pythia common Pyint1 -#include "PythiaExo_i/Pyint1.h" - -// set pointer to zero at start -Pyint1::PYINT1* Pyint1::s_pyint1 =0; - -// Constructor -Pyint1::Pyint1() -{ - m_dummy = -999; - m_realdummy = -999.; -} - -// Destructor -Pyint1::~Pyint1() -{ -} - -// access mint in common -int& Pyint1::mint(int n) { - init(); // check COMMON is initialized - if(n < 1 || n > lenMint()) { - m_dummy = -999; - return m_dummy; - } - return s_pyint1->mint[n-1]; -} - -// access iset in common -double& Pyint1::vint(int n) { - init(); // check COMMON is initialized - if(n < 1 || n > lenVint()) { - m_realdummy = -999; - return m_realdummy; - } - return s_pyint1->vint[n-1]; -} diff --git a/Generators/PythiaExo_i/src/Pyint2.cxx b/Generators/PythiaExo_i/src/Pyint2.cxx deleted file mode 100644 index e815193b3496038413ea44af6e417b12abae3945..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/Pyint2.cxx +++ /dev/null @@ -1,66 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// access pythia common Pyint2 -#include "PythiaExo_i/Pyint2.h" - -// set pointer to zero at start -Pyint2::PYINT2* Pyint2::s_pyint2 =0; - -// Constructor -Pyint2::Pyint2() -{ - m_dummy = -999; - m_realdummy = -999.; -} - -// Destructor -Pyint2::~Pyint2() -{ -} - -// access iset in common -int& Pyint2::iset(int n) { - init(); // check COMMON is initialized - if(n < 1 || n > lenIset()) { - m_dummy = -999; - return m_dummy; - } - return s_pyint2->iset[n-1]; -} - -// access kfpr in common - int& Pyint2::kfpr(int n, int i) { - init(); // check COMMON is initialized - if(n < 1 || n > lenKfpr() || - i <1 || i >depthKfpr()) { - m_dummy = -999; - return m_dummy; - } - return s_pyint2->kfpr[i-1][n-1]; -} - -// access coef in common -double& Pyint2::coef(int n, int i) { - init(); // check COMMON is initialized - if(n < 1 || n > lenCoef() || - i <1 || i > depthCoef()) { - m_realdummy = -999.; - return m_realdummy; - } - return s_pyint2->coef[i-1][n-1]; -} - -// access icol in common -int& Pyint2::icol(int n, int i ,int j) { - init(); // check COMMON is initialized - if(n < 1 || n > lenIcol() || - i <1 || i > depthIcol() || - j < 1 || j > widthIcol() ) { - m_dummy = -999; - return m_dummy; - } - return s_pyint2->icol[j-1][i-1][n-1]; -} - diff --git a/Generators/PythiaExo_i/src/Pyint5.cxx b/Generators/PythiaExo_i/src/Pyint5.cxx deleted file mode 100644 index dae94443b3990267bdbf5f7dd946363231411000..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/Pyint5.cxx +++ /dev/null @@ -1,54 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// access pythia common Pyint5 -#include "PythiaExo_i/Pyint5.h" - -// set pointer to zero at start -Pyint5::PYINT5* Pyint5::s_pyint5 =0; - -// Constructor -Pyint5::Pyint5() -{ - m_dummy = -999; - m_realdummy = -999.; -} - -// Destructor -Pyint5::~Pyint5() -{ -} - -// access ngenpd in common -int& Pyint5::ngenpd() { - init(); // check COMMON is initialized - return s_pyint5->ngenpd; -} - -// access ngen in common - int& Pyint5::ngen(int n, int i) { - init(); // check COMMON is initialized - if(n < 0 || n > lenNgen() || - i <1 || i >depthNgen()) { - m_dummy = -999; - return m_dummy; - } -// return s_pyint5->ngen[i][n-1]; - return s_pyint5->ngen[i-1][n]; -} - -// access xsec in common -double& Pyint5::xsec(int n, int i) { - init(); // check COMMON is initialized - if(n < 0 || n > lenXsec() || - i <1 || i > depthXsec()) { - m_realdummy = -999.; - return m_realdummy; - } -// return s_pyint5->xsec[i][n-1]; - return s_pyint5->xsec[i-1][n]; -} - - - diff --git a/Generators/PythiaExo_i/src/Pymssm.cxx b/Generators/PythiaExo_i/src/Pymssm.cxx deleted file mode 100644 index e0f183bda14ca177b2e1ea08a74a9693b62f1a39..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/Pymssm.cxx +++ /dev/null @@ -1,42 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#include "PythiaExo_i/Pymssm.h" -#include <iostream> - -Pymssm::PYMSSM* Pymssm::s_pymssm = 0; - -Pymssm::Pymssm() - : - m_dummy(-999) - , m_realdummy(-999.0) -{ - init(); -} - -Pymssm::~Pymssm() -{ -} - -int& Pymssm::imss(int n) { - if (n<0 || n>=s_lenImss) { - std::cout - << "Pymssm: attempt to read or write IMSS out of bounds" << std::endl; - m_dummy=-999; - return m_dummy; - } else { - return s_pymssm->imss[n]; // note the lack of a ``-1''. This is intentional. - } -} - -double& Pymssm::rmss(int n) { - if (n<0 || n>=s_lenRmss) { - std::cout - << "Pymssm: attempt to read or write RMSS out of bounds" << std::endl; - m_realdummy=-999.0; - return m_realdummy; - } else { - return s_pymssm->rmss[n]; // note the lack of a ``-1''. This is intentional. - } -} diff --git a/Generators/PythiaExo_i/src/Pypars.cxx b/Generators/PythiaExo_i/src/Pypars.cxx deleted file mode 100644 index 55c063b2043b2537f521b90f5390056e56e8972e..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/Pypars.cxx +++ /dev/null @@ -1,62 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// access pythia common Pypars -#include "PythiaExo_i/Pypars.h" - -// set pointer to zero at start -Pypars::PYPARS* Pypars::s_pypars =0; - -// Constructor -Pypars::Pypars() -{ - m_dummy = -999; - m_realdummy = -999.; -} - -// Destructor -Pypars::~Pypars() -{ -} - -// access mstp in common -int& Pypars::mstp(int n) { - init(); // check COMMON is initialized - if(n < 1 || n > lenMstp()) { - m_dummy = -999; - return m_dummy; - } - return s_pypars->mstp[n-1]; -} - -// access parp in common -double& Pypars::parp(int n) { - init(); // check COMMON is initialized - if(n < 1 || n > lenParp()) { - m_realdummy = -999.; - return m_realdummy; - } - return s_pypars->parp[n-1]; -} - -// access msti in common -int& Pypars::msti(int n) { - init(); // check COMMON is initialized - if(n < 1 || n > lenMsti()) { - m_dummy = -999; - return m_dummy; - } - return s_pypars->msti[n-1]; -} - -// access pari in common -double& Pypars::pari(int n) { - init(); // check COMMON is initialized - if(n < 1 || n > lenPari()) { - m_realdummy = -999.; - return m_realdummy; - } - return s_pypars->pari[n-1]; -} - diff --git a/Generators/PythiaExo_i/src/Pyssmt.cxx b/Generators/PythiaExo_i/src/Pyssmt.cxx deleted file mode 100644 index 4209da39beb599022e08ecbd06489bcfb2a072b6..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/Pyssmt.cxx +++ /dev/null @@ -1,64 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#include "PythiaExo_i/Pyssmt.h" -#include <iostream> -Pyssmt::PYSSMT const * Pyssmt::s_pyssmt = 0; - -const double& Pyssmt::zmix(int i, int j) const { - if (i<0 || i>s_sizeZmix || j<0 || j>s_sizeZmix) { - std::cout - << "Pyssmt: attempt to read or write ZMIX out of bounds" << std::endl; - m_realdummy=-999.0; - return m_realdummy; - } else { - return s_pyssmt->zmix[j-1][i-1]; - } -} - -const double& Pyssmt::umix(int i, int j) const { - if (i<0 || i>s_sizeUmix || j<0 || j>s_sizeUmix) { - std::cout - << "Pyssmt: attempt to read or write UMIX out of bounds" << std::endl; - m_realdummy=-999.0; - return m_realdummy; - } else { - return s_pyssmt->umix[j-1][i-1]; - } -} - -const double& Pyssmt::vmix(int i, int j) const { - if (i<0 || i>s_sizeVmix || j<0 || j>s_sizeVmix) { - std::cout - << "Pyssmt: attempt to read or write VMIX out of bounds" << std::endl; - m_realdummy=-999.0; - return m_realdummy; - } else { - return s_pyssmt->vmix[j-1][i-1]; - } -} - -const double& Pyssmt::smz(int i) const { - if (i<0 || i>s_lenSmz) { - std::cout - << "Pyssmt: attempt to read or write SMZ out of bounds" << std::endl; - m_realdummy=-999.0; - return m_realdummy; - } else { - return s_pyssmt->smz[i-1]; - } -} - -const double& Pyssmt::smw(int i) const { - if (i<0 || i>s_lenSmw) { - std::cout - << "Pyssmt: attempt to read or write SMW out of bounds" << std::endl; - m_realdummy=-999.0; - return m_realdummy; - } else { - return s_pyssmt->smw[i-1]; - } -} - - diff --git a/Generators/PythiaExo_i/src/Pysubs.cxx b/Generators/PythiaExo_i/src/Pysubs.cxx deleted file mode 100644 index 18e70be9cc50bf7d553469f4004e733c5ad8e529..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/Pysubs.cxx +++ /dev/null @@ -1,69 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// access Pythia common Pysubs -#include "PythiaExo_i/Pysubs.h" - -//#ifdef DEFECT_OLD_STDC_HEADERS -//extern "C" { -//#include <stdlib.h> -//} -//#else -#include <cstdlib> -//#endif - -// set pointer to zero at start -Pysubs::PYSUBS* Pysubs::s_pysubs =0; - -// Constructor -Pysubs::Pysubs() -{ - m_dummy = -999; - m_realdummy = -999.; -} - -// Destructor -Pysubs::~Pysubs() -{ -} - -// access msel in common -int& Pysubs::msel() { - init(); // check COMMON is initialized - return s_pysubs->msel; -} - -// access msub in common -int& Pysubs::msub(int n) { - init(); // check COMMON is initialized - if(n < 1 || n > lenMsub()) { - m_dummy = -999; - return m_dummy; - } - return s_pysubs->msub[n-1]; -} - -// access kfin in common -int& Pysubs::kfin(int iside, int jflav) { - init(); // check COMMON is initialized - int half_lenKfin = lenKfin()/2; - if(std::abs(jflav) > half_lenKfin || - iside < 1 || iside > depthKfin()) - { - m_dummy = -999; - return m_dummy; - } - return s_pysubs->kfin[jflav+half_lenKfin][iside-1]; -} - -// access ckin in common -double& Pysubs::ckin(int n) { - init(); // check COMMON is initialized - if(n < 1 || n > lenCkin()) { - m_realdummy = -999.; - return m_realdummy; - } - return s_pysubs->ckin[n-1]; -} - diff --git a/Generators/PythiaExo_i/src/Pytcsm.cxx b/Generators/PythiaExo_i/src/Pytcsm.cxx deleted file mode 100644 index 67afd7e216a48e2a26f47835d650b177570dfec1..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/Pytcsm.cxx +++ /dev/null @@ -1,42 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#include "PythiaExo_i/Pytcsm.h" -#include <iostream> - -Pytcsm::PYTCSM* Pytcsm::s_pytcsm = 0; - -Pytcsm::Pytcsm() - : - m_dummy(-999) - , m_realdummy(-999.0) -{ - init(); -} - -Pytcsm::~Pytcsm() -{ -} - -int& Pytcsm::itcm(int n) { - if (n<0 || n>=s_lenItcm) { - std::cout - << "Pytcsm: attempt to read or write ITCM out of bounds" << std::endl; - m_dummy=-999; - return m_dummy; - } else { - return s_pytcsm->itcm[n]; // note the lack of a ``-1''. This is intentional. - } -} - -double& Pytcsm::rtcm(int n) { - if (n<0 || n>=s_lenRtcm) { - std::cout - << "Pytcsm: attempt to read or write RTCM out of bounds" << std::endl; - m_realdummy=-999.0; - return m_realdummy; - } else { - return s_pytcsm->rtcm[n]; // note the lack of a ``-1''. This is intentional. - } -} diff --git a/Generators/PythiaExo_i/src/PythiaDummies/fhhiggscorr.F b/Generators/PythiaExo_i/src/PythiaDummies/fhhiggscorr.F deleted file mode 100644 index c564bfb0ca3ca2fe6b192e81ee8b792d20881849..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/PythiaDummies/fhhiggscorr.F +++ /dev/null @@ -1,26 +0,0 @@ - -C********************************************************************* - -C...FHHIGGSCORR -C...Dummy function, to be removed when FEYNHIGGS is to be linked. - - SUBROUTINE FHHIGGSCORR(IERR, RMHIGG, SAEFF, UHIGGS) - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - -C...FeynHiggs variables - DOUBLE PRECISION RMHIGG(4), SAEFF, UHIGGS(3,3) -C...Commonblocks. - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - SAVE /PYDAT1/ - -C...Stop program if this routine is ever called. - WRITE(MSTU(11),5000) - IF(PYR(0).LT.10D0) STOP - -C...Format for error printout. - 5000 FORMAT(1X,'Error: you did not link FEYNHIGGS correctly.'/ - &1X,'Dummy routine FHSETPARA in PYTHIA file called instead.'/ - &1X,'Execution stopped!') - RETURN - END diff --git a/Generators/PythiaExo_i/src/PythiaDummies/fhsetflags.F b/Generators/PythiaExo_i/src/PythiaDummies/fhsetflags.F deleted file mode 100644 index cf2a6dd35214abbdfd4b014842251cc7f85b22c5..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/PythiaDummies/fhsetflags.F +++ /dev/null @@ -1,32 +0,0 @@ - -C********************************************************************* - -C...FHSETFLAGS -C...Dummy function, to be removed when FEYNHIGGS is to be linked. - - SUBROUTINE FHSETFLAGS(IERR,IMSP,IFR,ITBR,IHMX,IP2A,ILP,ITR,IBR) - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) -Cmssmpart = 4 # full MSSM [recommended] -Cfieldren = 0 # MSbar field ren. [strongly recommended] -Ctanbren = 0 # MSbar TB-ren. [strongly recommended] -Chiggsmix = 2 # 2x2 (h0-HH) mixing in the neutral Higgs sector -Cp2approx = 0 # no approximation [recommended] -Clooplevel= 2 # include 2-loop corrections -Ctl_running_mt= 1 # running top mass in 2-loop corrections [recommended] -Ctl_bot_resum = 1 # resummed MB in 2-loop corrections [recommended] - -C...Commonblocks. - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - SAVE /PYDAT1/ - -C...Stop program if this routine is ever called. - WRITE(MSTU(11),5000) - IF(PYR(0).LT.10D0) STOP - -C...Format for error printout. - 5000 FORMAT(1X,'Error: you did not link FEYNHIGGS correctly.'/ - &1X,'Dummy routine FHSETFLAGS in PYTHIA file called instead.'/ - &1X,'Execution stopped!') - RETURN - END diff --git a/Generators/PythiaExo_i/src/PythiaDummies/fhsetpara.F b/Generators/PythiaExo_i/src/PythiaDummies/fhsetpara.F deleted file mode 100644 index 6a4cbde5b8e051bca9be1c7b21ccf6fa1f45d373..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/PythiaDummies/fhsetpara.F +++ /dev/null @@ -1,27 +0,0 @@ - -C********************************************************************* - -C...FHSETPARA -C...Dummy function, to be removed when FEYNHIGGS is to be linked. - - SUBROUTINE FHSETPARA(IER,SCF,DMT,DMB,DMW,DMZ,DTANB,DMA,DMH,DM3L, - & DM3E,DM3Q,DM3U,DM3D,DM2L,DM2E,DM2Q,DM2U, DM2D,DM1L,DM1E,DM1Q, - & DM1U,DM1D,DMU,ATAU,AT,AB,AMU,AC,AS,AE,AU,AD, - & DM1,DM2,DM3,RLT,RLB,QTAU,QT,QB) - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - -C...Commonblocks. - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - SAVE /PYDAT1/ - -C...Stop program if this routine is ever called. - WRITE(MSTU(11),5000) - IF(PYR(0).LT.10D0) STOP - -C...Format for error printout. - 5000 FORMAT(1X,'Error: you did not link FEYNHIGGS correctly.'/ - &1X,'Dummy routine FHSETPARA in PYTHIA file called instead.'/ - &1X,'Execution stopped!') - RETURN - END diff --git a/Generators/PythiaExo_i/src/PythiaDummies/pyevwt.F b/Generators/PythiaExo_i/src/PythiaDummies/pyevwt.F deleted file mode 100644 index a4e2a991cf200e509c6d74db225846a1e031bc2f..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/PythiaDummies/pyevwt.F +++ /dev/null @@ -1,61 +0,0 @@ - -C********************************************************************* - -C...PYEVWT -C...Dummy routine, which the user can replace in order to multiply the -C...standard PYTHIA differential cross-section by a process- and -C...kinematics-dependent factor WTXS. For MSTP(142)=1 this corresponds -C...to generation of weighted events, with weight 1/WTXS, while for -C...MSTP(142)=2 it corresponds to a modification of the underlying -C...physics. - - SUBROUTINE PYEVWT(WTXS) - -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) -c INTEGER PYK,PYCHGE,PYCOMP -C...Commonblocks. - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - COMMON/PYINT1/MINT(400),VINT(400) - COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2) - SAVE /PYDAT1/,/PYINT1/,/PYINT2/ - -C...Set default weight for WTXS. - WTXS=1D0 - -C...Read out subprocess number. - ISUB=MINT(1) - ISTSB=ISET(ISUB) - -C...Read out tau, y*, cos(theta), tau' (where defined, else =0). - TAU=VINT(21) - YST=VINT(22) - CTH=0D0 - IF(ISTSB.EQ.2.OR.ISTSB.EQ.4) CTH=VINT(23) - TAUP=0D0 - IF(ISTSB.GE.3.AND.ISTSB.LE.5) TAUP=VINT(26) - -C...Read out x_1, x_2, x_F, shat, that, uhat, p_T^2. - X1=VINT(41) - X2=VINT(42) - XF=X1-X2 - SHAT=VINT(44) - THAT=VINT(45) - UHAT=VINT(46) - PT2=VINT(48) - -C...Modifications by user to be put here. - -C...Stop program if this routine is ever called. -C...You should not copy these lines to your own routine. - WRITE(MSTU(11),5000) - IF(PYR(0).LT.10D0) STOP - -C...Format for error printout. - 5000 FORMAT(1X,'Error: you did not link your PYEVWT routine ', - &'correctly.'/1X,'Dummy routine in PYTHIA file called instead.'/ - &1X,'Execution stopped!') - - RETURN - END diff --git a/Generators/PythiaExo_i/src/PythiaDummies/pykcut.F b/Generators/PythiaExo_i/src/PythiaDummies/pykcut.F deleted file mode 100644 index 4bfee869c9ad1d7a0578f767d3089f09f3f0f2a1..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/PythiaDummies/pykcut.F +++ /dev/null @@ -1,78 +0,0 @@ - -C********************************************************************* - -C...PYKCUT -C...Dummy routine, which the user can replace in order to make cuts on -C...the kinematics on the parton level before the matrix elements are -C...evaluated and the event is generated. The cross-section estimates -C...will automatically take these cuts into account, so the given -C...values are for the allowed phase space region only. MCUT=0 means -C...that the event has passed the cuts, MCUT=1 that it has failed. - - SUBROUTINE PYKCUT(MCUT) - -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) -c INTEGER PYK,PYCHGE,PYCOMP -C...Commonblocks. - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - COMMON/PYINT1/MINT(400),VINT(400) - COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2) - SAVE /PYDAT1/,/PYINT1/,/PYINT2/ - -C...Set default value (accepting event) for MCUT. - MCUT=0 - -C...Read out subprocess number. - ISUB=MINT(1) - ISTSB=ISET(ISUB) - -C...Read out tau, y*, cos(theta), tau' (where defined, else =0). - TAU=VINT(21) - YST=VINT(22) - CTH=0D0 - IF(ISTSB.EQ.2.OR.ISTSB.EQ.4) CTH=VINT(23) - TAUP=0D0 - IF(ISTSB.GE.3.AND.ISTSB.LE.5) TAUP=VINT(26) - -C...Calculate x_1, x_2, x_F. - IF(ISTSB.LE.2.OR.ISTSB.GE.5) THEN - X1=SQRT(TAU)*EXP(YST) - X2=SQRT(TAU)*EXP(-YST) - ELSE - X1=SQRT(TAUP)*EXP(YST) - X2=SQRT(TAUP)*EXP(-YST) - ENDIF - XF=X1-X2 - -C...Calculate shat, that, uhat, p_T^2. - SHAT=TAU*VINT(2) - SQM3=VINT(63) - SQM4=VINT(64) - RM3=SQM3/SHAT - RM4=SQM4/SHAT - BE34=SQRT(MAX(0D0,(1D0-RM3-RM4)**2-4D0*RM3*RM4)) - RPTS=4D0*VINT(71)**2/SHAT - BE34L=SQRT(MAX(0D0,(1D0-RM3-RM4)**2-4D0*RM3*RM4-RPTS)) - RM34=2D0*RM3*RM4 - RSQM=1D0+RM34 - RTHM=(4D0*RM3*RM4+RPTS)/(1D0-RM3-RM4+BE34L) - THAT=(-0.5D0)*SHAT*MAX(RTHM,1D0-RM3-RM4-BE34*CTH) - UHAT=(-0.5D0)*SHAT*MAX(RTHM,1D0-RM3-RM4+BE34*CTH) - PT2=MAX(VINT(71)**2,0.25D0*SHAT*BE34**2*(1D0-CTH**2)) - -C...Decisions by user to be put here. - -C...Stop program if this routine is ever called. -C...You should not copy these lines to your own routine. - WRITE(MSTU(11),5000) - IF(PYR(0).LT.10D0) STOP - -C...Format for error printout. - 5000 FORMAT(1X,'Error: you did not link your PYKCUT routine ', - &'correctly.'/1X,'Dummy routine in PYTHIA file called instead.'/ - &1X,'Execution stopped!') - - RETURN - END diff --git a/Generators/PythiaExo_i/src/PythiaDummies/pytaud.F b/Generators/PythiaExo_i/src/PythiaDummies/pytaud.F deleted file mode 100644 index ca82e68a093c5715dab43194734d82f2ba102293..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/PythiaDummies/pytaud.F +++ /dev/null @@ -1,46 +0,0 @@ - -C********************************************************************* - -C...PYTAUD -C...Dummy routine, to be replaced by user, to handle the decay of a -C...polarized tau lepton. -C...Input: -C...ITAU is the position where the decaying tau is stored in /PYJETS/. -C...IORIG is the position where the mother of the tau is stored; -C... is 0 when the mother is not stored. -C...KFORIG is the flavour of the mother of the tau; -C... is 0 when the mother is not known. -C...Note that IORIG=0 does not necessarily imply KFORIG=0; -C... e.g. in B hadron semileptonic decays the W propagator -C... is not explicitly stored but the W code is still unambiguous. -C...Output: -C...NDECAY is the number of decay products in the current tau decay. -C...These decay products should be added to the /PYJETS/ common block, -C...in positions N+1 through N+NDECAY. For each product I you must -C...give the flavour codes K(I,2) and the five-momenta P(I,1), P(I,2), -C...P(I,3), P(I,4) and P(I,5). The rest will be stored automatically. - - SUBROUTINE PYTAUD(ITAU,IORIG,KFORIG,NDECAY) - -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) -c INTEGER PYK,PYCHGE,PYCOMP -C...Commonblocks. - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - SAVE /PYJETS/,/PYDAT1/ - -C...Stop program if this routine is ever called. -C...You should not copy these lines to your own routine. - NDECAY=ITAU+IORIG+KFORIG - WRITE(MSTU(11),5000) - IF(PYR(0).LT.10D0) STOP - -C...Format for error printout. - 5000 FORMAT(1X,'Error: you did not link your PYTAUD routine ', - &'correctly.'/1X,'Dummy routine in PYTHIA file called instead.'/ - &1X,'Execution stopped!') - - RETURN - END diff --git a/Generators/PythiaExo_i/src/PythiaDummies/pytime.F b/Generators/PythiaExo_i/src/PythiaDummies/pytime.F deleted file mode 100644 index 673070669c330bcae63cc9de303849d68bf3a605..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/PythiaDummies/pytime.F +++ /dev/null @@ -1,76 +0,0 @@ - -C********************************************************************* - -C...PYTIME -C...Finds current date and time. -C...Since this task is not standardized in Fortran 77, the routine -C...is dummy, to be replaced by the user. Examples are given for -C...the Fortran 90 routine and DEC Fortran 77, and what to do if -C...you do not have access to suitable routines. - - SUBROUTINE PYTIME(IDATI) - -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) -c INTEGER PYK,PYCHGE,PYCOMP -c CHARACTER*8 ATIME -C...Local array. - INTEGER IDATI(6),IDTEMP(3) - -C...Example 0: if you do not have suitable routines. - DO 100 J=1,6 - IDATI(J)=0 - 100 CONTINUE - -C...Example 1: Fortran 90 routine. -C INTEGER IVAL(8) -C CALL DATE_AND_TIME(VALUES=IVAL) -C IDATI(1)=IVAL(1) -C IDATI(2)=IVAL(2) -C IDATI(3)=IVAL(3) -C IDATI(4)=IVAL(5) -C IDATI(5)=IVAL(6) -C IDATI(6)=IVAL(7) - -C...Example 2: DEC Fortran 77. AIX. -C CALL IDATE(IMON,IDAY,IYEAR) -C IDATI(1)=IYEAR -C IDATI(2)=IMON -C IDATI(3)=IDAY -C CALL ITIME(IHOUR,IMIN,ISEC) -C IDATI(4)=IHOUR -C IDATI(5)=IMIN -C IDATI(6)=ISEC - -C...Example 3: DEC Fortran, IRIX, IRIX64. -C CALL IDATE(IMON,IDAY,IYEAR) -C IDATI(1)=IYEAR -C IDATI(2)=IMON -C IDATI(3)=IDAY -C CALL TIME(ATIME) -C IHOUR=0 -C IMIN=0 -C ISEC=0 -C READ(ATIME(1:2),'(I2)') IHOUR -C READ(ATIME(4:5),'(I2)') IMIN -C READ(ATIME(7:8),'(I2)') ISEC -C IDATI(4)=IHOUR -C IDATI(5)=IMIN -C IDATI(6)=ISEC - -C...Example 4: GNU LINUX libU77, SunOS. - CALL IDATE(IDTEMP) - IDATI(1)=IDTEMP(3) - IDATI(2)=IDTEMP(2) - IDATI(3)=IDTEMP(1) - CALL ITIME(IDTEMP) - IDATI(4)=IDTEMP(1) - IDATI(5)=IDTEMP(2) - IDATI(6)=IDTEMP(3) - -C...Common code to ensure right century. - IDATI(1)=2000+MOD(IDATI(1),100) - - RETURN - END diff --git a/Generators/PythiaExo_i/src/PythiaDummies/ssmssm.F b/Generators/PythiaExo_i/src/PythiaDummies/ssmssm.F deleted file mode 100644 index 9c04878feb7f8fc821f218dd0f736a1ca4462166..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/PythiaDummies/ssmssm.F +++ /dev/null @@ -1,29 +0,0 @@ - -C********************************************************************* - -C...SSMSSM -C...Dummy function, to be removed when ISAJET (ISASUSY) is to be linked. - - SUBROUTINE SSMSSM(RDUM1,RDUM2,RDUM3,RDUM4,RDUM5,RDUM6,RDUM7, - &RDUM8,RDUM9,RDUM10,RDUM11,RDUM12,RDUM13,RDUM14,RDUM15,RDUM16, - &RDUM17,RDUM18,RDUM19,RDUM20,RDUM21,RDUM22,RDUM23,RDUM24,RDUM25, - &IDUM1,IDUM2) - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - REAL RDUM1,RDUM2,RDUM3,RDUM4,RDUM5,RDUM6,RDUM7,RDUM8,RDUM9, - &RDUM10,RDUM11,RDUM12,RDUM13,RDUM14,RDUM15,RDUM16,RDUM17,RDUM18, - &RDUM19,RDUM20,RDUM21,RDUM22,RDUM23,RDUM24,RDUM25 -C...Commonblocks. - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - SAVE /PYDAT1/ - -C...Stop program if this routine is ever called. - WRITE(MSTU(11),5000) - IF(PYR(0).LT.10D0) STOP - -C...Format for error printout. - 5000 FORMAT(1X,'Error: you did not link ISAJET correctly.'/ - &1X,'Dummy routine SSMSSM in PYTHIA file called instead.'/ - &1X,'Execution stopped!') - RETURN - END diff --git a/Generators/PythiaExo_i/src/PythiaDummies/sugra.F b/Generators/PythiaExo_i/src/PythiaDummies/sugra.F deleted file mode 100644 index b32a4414a8669b2bfeaac7e949c0bc25db0d9127..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/PythiaDummies/sugra.F +++ /dev/null @@ -1,26 +0,0 @@ - -C********************************************************************* - -C...SUGRA -C...Dummy routine, to be removed when ISAJET (ISASUSY) is to be linked. - - SUBROUTINE SUGRA(MZERO,MHLF,AZERO,TANB,SGNMU,MTOP,IMODL) - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - REAL MZERO,MHLF,AZERO,TANB,SGNMU,MTOP - INTEGER IMODL -C...Commonblocks. - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - SAVE /PYDAT1/ - -C...Stop program if this routine is ever called. - WRITE(MSTU(11),5000) - IF(PYR(0).LT.10D0) STOP - -C...Format for error printout. - 5000 FORMAT(1X,'Error: you did not link ISAJET correctly.'/ - &1X,'Dummy routine SUGRA in PYTHIA file called instead.'/ - &1X,'Execution stopped!') - - RETURN - END diff --git a/Generators/PythiaExo_i/src/PythiaDummies/upveto.F b/Generators/PythiaExo_i/src/PythiaDummies/upveto.F deleted file mode 100644 index 22563542f03ada356185845332ea16c4b744a395..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/PythiaDummies/upveto.F +++ /dev/null @@ -1,46 +0,0 @@ - -C********************************************************************* - -C...UPVETO -C...Dummy routine, to be replaced by user, to veto event generation -C...on the parton level, after parton showers but before multiple -C...interactions, beam remnants and hadronization is added. -C...If resonances like W, Z, top, Higgs and SUSY particles are handed -C...undecayed from UPEVNT, or are generated by PYTHIA, they will also -C...be undecayed at this stage; if decayed their decay products will -C...have been allowed to shower. - -C...All partons at the end of the shower phase are stored in the -C...HEPEVT commonblock. The interesting information is -C...NHEP = the number of such partons, in entries 1 <= i <= NHEP, -C...IDHEP(I) = the particle ID code according to PDG conventions, -C...PHEP(J,I) = the (p_x, p_y, p_z, E, m) of the particle. -C...All ISTHEP entries are 1, while the rest is zeroed. - -C...The user decision is to be conveyed by the IVETO value. -C...IVETO = 0 : retain current event and generate in full; -C... = 1 : abort generation of current event and move to next. - - SUBROUTINE UPVETO(IVETO) - -C...HEPEVT -C INCLUDE 'hepevt.inc' - -C...Next few lines allow you to see what info PYVETO extracted from -C...the full event record for the first two events. -C...Delete if you don't want it. - INTEGER NLIST/0/ - SAVE NLIST - IF(NLIST.LE.2) THEN - WRITE(*,*) ' Full event record at time of UPVETO call:' - CALL PYLIST(1) - WRITE(*,*) ' Part of event record made available to UPVETO:' - CALL PYLIST(5) - NLIST=NLIST+1 - ENDIF - -C...Make decision here. - IVETO = 0 - - RETURN - END diff --git a/Generators/PythiaExo_i/src/PythiaDummies/visaje.F b/Generators/PythiaExo_i/src/PythiaDummies/visaje.F deleted file mode 100644 index 0bc7a3e4049262111072c4729a845b17631b8407..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/PythiaDummies/visaje.F +++ /dev/null @@ -1,29 +0,0 @@ - -C********************************************************************* - -C...VISAJE -C...Dummy function, to be removed when ISAJET (ISASUSY) is to be linked. - - FUNCTION VISAJE() - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - CHARACTER*40 VISAJE - -C...Commonblocks. - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - SAVE /PYDAT1/ - -C...Assign default value. - VISAJE='Undefined' - -C...Stop program if this routine is ever called. - WRITE(MSTU(11),5000) - IF(PYR(0).LT.10D0) STOP - -C...Format for error printout. - 5000 FORMAT(1X,'Error: you did not link ISAJET correctly.'/ - &1X,'Dummy function VISAJE in PYTHIA file called instead.'/ - &1X,'Execution stopped!') - - RETURN - END diff --git a/Generators/PythiaExo_i/src/PythiaGS.cxx b/Generators/PythiaExo_i/src/PythiaGS.cxx deleted file mode 100644 index ae68ece1fc8b4673440ec223d8fad3f8c76f1576..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/PythiaGS.cxx +++ /dev/null @@ -1,871 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -////////////////////////////////////////////////////////////////// -// -// PythiaGS.cxx Description: Allows the user to generate gravitational -// scattering pythia events and store the result in the Transient Store. -// -// Adapted from Pythia.cxx by Nele Boelaert -// -// -// -// -// Header for this module:- -#include "PythiaExo_i/PythiaGS.h" -#include "TruthUtils/GeneratorName.h" - -// Framework Related Headers:- -// #include "GaudiKernel/MsgStream.h" - -// Other classes used by this class:- -#include "StoreGate/StoreGateSvc.h" - -#include "HepMC/IO_HEPEVT.h" -#include "HepMC/HEPEVT_Wrapper.h" - -#include "GeneratorUtils/StringParse.h" -#include <stdlib.h> -//------------------------------- -// calls to fortran routines -#include "CLHEP/Random/RandFlat.h" -#include "AthenaKernel/IAtRndmGenSvc.h" - -// For GravADD -#include "GravADD_i/GravADD.h" -#include "GravADD_i/gammafn.h" - - -// Pointer On AtRndmGenSvc -IAtRndmGenSvc* PythiaGS::p_AtRndmGenSvc = 0; -std::string PythiaGS::pythia_stream = "PYTHIA_INIT"; -//extern massesGRAVADD masses_; - -extern "C" double atl_pyr_( int* /*idummy*/ ) -{ - CLHEP::HepRandomEngine* engine = PythiaGS::p_AtRndmGenSvc->GetEngine(PythiaGS::pythia_stream); - return CLHEP::RandFlat::shoot(engine); -} - -extern "C" { - void initpyblock_(int*, const char*); - int openrandom_(int*, int*, const char*); - void pyinit_(const char*, - const char*, - const char*, - double* , - int, // lengths of character strings - int,// (should be value, not reference) - int - ); - void pyevnt_(); - void pyevnw_(); - void pyeffevt_(); - void pystat_(int*); - void pylist_(int*); - void pyupda_(int*, int*); - void pyrget_(int*, int*); - void pyrset_(int*, int*); - int pycomp_(int*); -// void lunhep_(int*); // STDHEP routine for PYJETS->HEPEVT - void pyhepc_(int*); - int opdcay_(const char*, int*, char*, int, int); - void cldcay_(int*); - void rinpar_(); // comphep - void subnum_(); // comphep file - void rheader_(); // comphep initialization - void extproc_(int*); - void opensusyfile_(const char* ,int * , int); - void setecm_(double*); - double wtgrav_(int&, double&,int&); - int gravfl_(); - void pyevwt_(double*); - void initgravadd_(); - //void init_datapath_(const char*,const int&); -} - - -// File scope declarations:- - -// set pointer to zero at start -Atlas_HEPEVT* PythiaGS::s_atlas_HEPEVT = new Atlas_HEPEVT(); - -//-------------------------------------------------------------------------- -PythiaGS::PythiaGS(const std::string& name, - ISvcLocator* pSvcLocator): GenModule(name,pSvcLocator) -{ -//-------------------------------------------------------------------------- - pythia_stream = "PYTHIA_INIT"; - declareProperty("SusyInputFile", m_read_Filesusy = " "); - declareProperty("PythiaCommand", m_pythiaCommandVector); - declareProperty("SetAtlasDefaults", m_AtlasDefaults = true ); - m_firstlistevent = -1; - m_lastlistevent = -1; - - m_ExternalProcess = 0; - m_RndmFileLength=0; - m_RndmFileNumber=0; - m_RndmFirstEvent=1; - m_RndmMOVE=0; - m_RndmSkipEvents=0; - m_RndmSwitch=0; - m_eventlistlevel=0; - m_events = 0; - m_fortout=0; - m_gsonly = 0; - m_initlistlevel=11; - m_msel=6; - m_randomseed=19780503; - m_win=14000.; - - m_sum_pari10=0.; - m_sum_w=0.; -} -//-------------------------------------------------------------------------- -PythiaGS::~PythiaGS(){ -//-------------------------------------------------------------------------- -} -//------------------------------------------------------------- -//-------------- -// Operations -- -//-------------- -Pydat1& PythiaGS::pydat1() { - return m_pydat1; -} -Pydat2& PythiaGS::pydat2() { - return m_pydat2; -} -Pydat3& PythiaGS::pydat3() { - return m_pydat3; -} -Pysubs& PythiaGS::pysubs() { - return m_pysubs; -} -Pypars& PythiaGS::pypars() { - return m_pypars; -} -Pydatr& PythiaGS::pydatr() { - return m_pydatr; -} -Pymssm& PythiaGS::pymssm() { - return m_pymssm; -} -//Pypued& PythiaGS::pypued() { -// return m_pypued; -//} -//Pymsrv& PythiaGS::pymsrv() { -// return m_pymsrv; -//} -Pyint1& PythiaGS::pyint1() { - return m_pyint1; -} -Pyint2& PythiaGS::pyint2() { - return m_pyint2; -} -Pyint5& PythiaGS::pyint5() { - return m_pyint5; -} -Pytcsm& PythiaGS::pytcsm() { - return m_pytcsm; -} -AcerMC_acset& PythiaGS::acermc_acset() { - return m_acermc_acset; -} - -//--------------------------------------------------------------------------- -StatusCode PythiaGS::genInitialize() { - //--------------------------------------------------------------------------- - // Initialise the listing output, parameter and decay data input streams - // - // MsgStream log(messageService(), name()); - // log << MSG::INFO - if(msgLvl(MSG::INFO)){ - msg(MSG::INFO) << " PYTHIA INITIALISING. \n" << endmsg; - } - - m_sum_pari10=0.; - m_sum_w=0.; - -/* std::string datapath = PathResolverFindDataFile ("PythiaExo_i/f2abs.dat"); - datapath = datapath.substr(0,datapath.length()-9); - std::cout << "stringpath: " << datapath << "\n" ; - init_datapath_(datapath.c_str(),datapath.length()); */ - - static const bool CREATEIFNOTTHERE(true); - StatusCode RndmStatus = service("AtRndmGenSvc", - PythiaGS::p_AtRndmGenSvc, - CREATEIFNOTTHERE); - if (!RndmStatus.isSuccess() || 0 == PythiaGS::p_AtRndmGenSvc) - { - if(msgLvl(MSG::ERROR)){ - msg(MSG::ERROR) << " Could not initialize Random Number Service" << endmsg;} - return RndmStatus; - } - PythiaGS::pythia_stream = "PYTHIA_INIT"; - - // set up the input parameters to pyinit: these can be changed by the user - m_frame = "CMS "; - m_beam = "P "; - m_target = "P "; - m_win=7000.; - m_initlistlevel=1; - m_pystatlistlevel.push_back(1); - m_fortout=0; - m_gsonly = 0; - - - m_RndmFileName=" "; - m_RndmFileNumber=0; - m_RndmSwitch=0; - m_RndmFirstEvent=1; - m_RndmSkipEvents=0; - m_RndmMOVE=0; - m_RndmFileLength=0; - m_ExternalProcess = 0; - - // end of setup to pyinit - //now set defaults - m_randomseed=19780503; - this->pydatr().mrpy(1) = m_randomseed; // can be overwritten by user - // default process is ttbar - // these can be overwritten by user. - m_msel=6; - this->pysubs().msel() = m_msel; - - // Set the ATLAS defaults - if (m_AtlasDefaults) { - // Weighted events - this->pypars().mstp(142) =1; - // subprocesses - this->pysubs().msel() = 0; - this->pysubs().msub(11)= 1; - this->pysubs().msub(12)= 1; - this->pysubs().msub(13)= 1; - this->pysubs().msub(28)= 1; - this->pysubs().msub(53)= 1; - this->pysubs().msub(68)= 1; - - - this->pypars().mstp(81)=1; - this->pypars().mstp(71)=1; - this->pypars().mstp(61)=1; - this->pypars().mstp(91)=1; - this->pypars().mstp(111)=1; - - this->pypars().mstp(52)=2; // (needed for CTEQ6L) - this->pypars().mstp(54)=2; // (needed for CTEQ6L) - this->pypars().mstp(56)=2; // (needed for CTEQ6L) - this->pypars().mstp(51)=10042; // (needed for CTEQ6L) - this->pypars().mstp(53)=10042; // (needed for CTEQ6L) - this->pypars().mstp(55)=10042; // (needed for CTEQ6L) - - - } - - for (unsigned int i = 0; i < m_pythiaCommandVector.size(); i++) { - if(msgLvl(MSG::INFO)){ - msg(MSG::INFO) << " Command is: " << m_pythiaCommandVector[i] << endmsg;} - StringParse mystring(m_pythiaCommandVector[i]); - string myblock=mystring.piece(1); - string myentry=mystring.piece(2); - string mystr=mystring.piece(3); - int myint1=mystring.intpiece(3); - int myint2=mystring.intpiece(4); - int myint3=mystring.intpiece(5); - int myint4=mystring.intpiece(6); - int myint5=mystring.intpiece(7); - double myfl1=mystring.numpiece(4); - double myfl2=mystring.numpiece(5); - double myfl0=mystring.numpiece(3); -// for GravADD_i user param. input - int myint6=mystring.intpiece(2); -// - // Note that Pythia needs doubles hence the convert here - // log << MSG:: INFO - if(msgLvl(MSG::INFO)){ - msg(MSG::INFO) << myblock << " block " << myentry << " item " << myint1 << " value " << myfl1 <<endmsg;} - if (myblock=="pyinit") { - if(myentry=="user"){ - m_frame="USER "; - m_external=mystr; - m_ExternalProcess = generator_int(mystr); - extproc_(&m_ExternalProcess); - } - else if(myentry=="FIXT"){ - m_frame="FIXT"; - } - else if(myentry=="pbar"){ - m_beam="P~- "; - } - else if(myentry=="win"){ - m_win=myfl0; - } - else if(myentry=="pylisti"){ - m_initlistlevel=myint1; - } - else if(myentry=="pylistf"){ - m_eventlistlevel=myint1; - } - else if(myentry=="dumpr"){ - m_firstlistevent=myint1; - m_lastlistevent=myint2; - } - else if(myentry=="output"){ - m_envval1=mystr; - m_fortout=49; - this->pydat1().mstu(11)=m_fortout; - } - else if(myentry=="rndm_IO"){ - m_RndmFileName=mystr; - m_RndmFileNumber=36; - m_RndmSwitch=myint2; - m_RndmFirstEvent=myint3; - m_RndmSkipEvents=myint4; - m_RndmMOVE=myint5; - if (m_RndmSwitch == 1) ++m_RndmSkipEvents; - - if (m_RndmSwitch > 0) - { - if (m_RndmFirstEvent < 1 || m_RndmSkipEvents < 0) - { - // log << MSG:: ERROR - if(msgLvl(MSG::ERROR)){ - msg(MSG::ERROR) - << " INCOSISTENT SET OF rndm_IO PARAMETERS : FirstEvent < 1 || SkipEvents < 0. DUMPING RNDM SEEDS SWITCHED OFF" - << myentry <<endmsg ;} - m_RndmSwitch = 0; - } - } - if(msgLvl(MSG::INFO)){ - msg(MSG::INFO) << " !!!!!!!!!! WARNING ON PYTHIA RANDOM NUMBERS !!!!!!!! " << endmsg; - msg(MSG::INFO) << " THE ATHENA/PYTHIA DOES NOT USE ANY MORE THE STANDARD " << endmsg; - msg(MSG::INFO) << " PYTHIA RANDOM NUMBER SERVICES. SINCE RELEASE 5.2.0 THE" << endmsg; - msg(MSG::INFO) << " ATHENA SERVICE AtRndmGenSvc IS USED. PLEASE FOR MORE " << endmsg; - msg(MSG::INFO) << " DETAILS LOOK IN " << endmsg; - msg(MSG::INFO) << " http://atlassw1.phy.bnl.gov/lxrsource/current/atlas/Generators/GeneratorModules/doc/Pythia.pdf " - << endmsg; - msg(MSG::INFO) << " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! " << endmsg;} - - m_RndmSwitch = 0; - } - else { - // log << MSG:: ERROR - if(msgLvl(MSG::ERROR)){ - msg(MSG::ERROR) << "PYTHIA ERROR, entry PYINIT has USER PBAR PYLISTI PYLISTF PYSTAT OUTPUT DUMPR WIN AND RNDM_IO: YOU HAVE SPECIFIED "<< myentry <<endmsg ;} - } - } - else if (myblock == "pysubs") { - if(myentry == "msel"){ - this->pysubs().msel()=myint1; - } - else if (myentry == "msub"){ - this->pysubs().msub(myint1)=myint2; - } - else if (myentry == "ckin"){ - this->pysubs().ckin(myint1)=myfl1; - } - else if (myentry == "kfin"){ - this->pysubs().kfin(myint1,myint2)=myint3; - } - else { - if(msgLvl(MSG::ERROR)){ - msg(MSG::ERROR) << "PYTHIA ERROR, block PYSUBS has MSEL, MSUB, KFIN AND CKIN: YOU HAVE SPECIFIED "<< myentry <<endmsg ;} - } - } - else if (myblock == "pypars"){ - if(myentry == "mstp"){ - this->pypars().mstp(myint1)=myint2; - } - else if(myentry == "msti"){ - this->pypars().msti(myint1)=myint2; - } - else if(myentry == "parp"){ - this->pypars().parp(myint1)=myfl1; - } - else if(myentry == "pari"){ - this->pypars().pari(myint1)=myfl1; - } - else { - if(msgLvl(MSG::ERROR)){ - msg(MSG::ERROR) << "PYTHIA ERROR, block PYPARS has MSTP,PARP, MSTI AND PARI: YOU HAVE SPECIFIED "<< myentry <<endmsg ;} - } - } - else if (myblock == "pydat1"){ - if(myentry == "mstu"){ - this->pydat1().mstu(myint1)=myint2; - } - else if(myentry == "mstj"){ - this->pydat1().mstj(myint1)=myint2; - } - else if(myentry == "paru"){ - this->pydat1().paru(myint1)=myfl1; - } - else if(myentry == "parj"){ - this->pydat1().parj(myint1)=myfl1; - } - else { - if(msgLvl(MSG::ERROR)){ - msg(MSG::ERROR) << "PYTHIA ERROR, block PYDAT1 HAS MSTU, MSTJ, PARU AND PARJ: YOU HAVE SPECIFIED "<< myentry <<endmsg ;} - } - } - else if (myblock == "pydat2"){ - if(myentry == "kchg"){ - this->pydat2().kchg(myint1,myint2)=myint3; - } - else if(myentry == "pmas"){ - this->pydat2().pmas(pycomp_(&myint1),myint2)=myfl2; - } - else if(myentry == "parf"){ - this->pydat2().parf(myint1)=myfl1; - } - else if(myentry == "vckm"){ - this->pydat2().vckm(myint1,myint2)=myfl2; - } - else { - if(msgLvl(MSG::ERROR)){ - msg(MSG::ERROR) << "PYTHIA ERROR, block PYDAT2 HAS KCHG, PMAS, PARF AND VCKM: YOU HAVE SPECIFIED "<< myentry <<endmsg ;} - } - } - else if (myblock == "pydat3"){ - if(myentry == "mdcy"){ - this->pydat3().mdcy(myint1,myint2)=myint3; - } - else if(myentry == "mdme"){ - this->pydat3().mdme(myint1,myint2)=myint3; - } - else if(myentry == "brat"){ - this->pydat3().brat(myint1)=myfl1; - } - else if(myentry == "kfdp"){ - this->pydat3().kfdp(myint1,myint2)=myint3; - } - else { - if(msgLvl(MSG::ERROR)){ - msg(MSG::ERROR) << "PYTHIA ERROR, block PYDAT3 HAS KFDP, MDCY, BRAT AND MDME : YOU HAVE SPECIFIED "<< myentry <<endmsg ;} - } - } - else if (myblock == "pydatr"){ - if(myentry == "mrpy"){ - if(msgLvl(MSG::INFO)){ - msg(MSG::INFO) << " !!!!!!!!!! WARNING ON PYTHIA RANDOM NUMBERS !!!!!!!! " << endmsg; - msg(MSG::INFO) << " THE ATHENA/PYTHIA DOES NOT USE ANY MORE THE STANDARD " << endmsg; - msg(MSG::INFO) << " PYTHIA RANDOM NUMBER SERVICES. SINCE RELEASE 5.2.0 THE" << endmsg; - msg(MSG::INFO) << " ATHENA SERVICE AtRndmGenSvc IS USED. PLEASE FOR MORE " << endmsg; - msg(MSG::INFO) << " DETAILS LOOK IN " << endmsg; - msg(MSG::INFO) << " http://atlassw1.phy.bnl.gov/lxrsource/current/atlas/Generators/GeneratorModules/doc/Pythia.pdf " - << endmsg; - msg(MSG::INFO) << " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! " << endmsg;} - - this->pydatr().mrpy(myint1)=myint2; - } - else if(myentry == "rrpy"){ - this->pydatr().rrpy(myint1)=myfl1; - } - else { - if(msgLvl(MSG::ERROR)){ - msg(MSG::ERROR) << "PYTHIA ERROR, block PYDATR HAS MRPY AND RRPY : YOU HAVE SPECIFIED "<< myentry <<endmsg ;} - } - } - else if (myblock == "pymssm"){ - if (myentry=="imss"){ - if (myint1 == 21 || myint1 == 22) { - // log << MSG::WARNING - if(msgLvl(MSG::WARNING)){ - msg(MSG::WARNING) << "The seting of imss(21) and imss(22) is not allowed. When imss(1)=11 is chosen imss(21) and imss(22) are set to 66 by default" <<endmsg;} - } else { - this->pymssm().imss(myint1)=myint2; - } - } - else if (myentry=="rmss"){ - this->pymssm().rmss(myint1)=myfl1; - } - else { - if(msgLvl(MSG::ERROR)){ - msg(MSG::ERROR) << "PYTHIA ERROR, block PYMSSM has IMSS AND RMSS: YOU HAVE SPECIFIED "<< myentry <<endmsg ;} - } - } - else if (myblock == "pyint2"){ - if (myentry == "iset"){ - this->pyint2().iset(myint1)=myint2; - } - else if (myentry == "kfpr"){ - this->pyint2().kfpr(myint1,myint2)=myint3; - } - else if (myentry == "coef"){ - this->pyint2().coef(myint1,myint2)=myfl2; - } - else if (myentry == "icol"){ - this->pyint2().icol(myint1,myint2,myint3)=myint4; - } - else { - if(msgLvl(MSG::ERROR)){ - msg(MSG::ERROR) << "PYTHIA ERROR, block PYINT2 has ISET KFPR COEF AND ICOL: YOU HAVE SPECIFIED "<< myentry <<endmsg ;} - } - } - else if (myblock == "pystat"){ - m_pystatlistlevel.clear(); - for (unsigned i = 2; i <= mystring.string_size(); ++i) - m_pystatlistlevel.push_back(mystring.intpiece(i)); - } - else if (myblock == "pytcsm"){ - if (myentry == "itcm"){ - this->pytcsm().itcm(myint1)=myint2; - } - else if (myentry=="rtcm"){ - this->pytcsm().rtcm(myint1)=myfl1; - } - else { - if(msgLvl(MSG::ERROR)){ - msg(MSG::ERROR) << "PYTHIA ERROR, block PYTCM has ITCM AND RTCM: YOU HAVE SPECIFIED "<< myentry <<endmsg ;} - } - - } - - // AcerMC tt~ decay mode switching - else if (myblock == "acermc" && myentry=="acset12") { - if (m_ExternalProcess == 3) { - this->acermc_acset().acset12()=myint1; - } - } -// for ExoGraviton user parameter setup - else if (myblock == "grav") - { -// ::WriteGravParam(myint6,myint1,(double)myfl0); - } - else if (myblock == "gravADD") - { - ::writegravaddparam(myint6,myint1,(double)myfl0); - // std::cout << "gravADD params: " << myint6 << " " << myint1 << " " << (double)myfl0 << "\n" - if (myint6==6 && myint1==1){ - m_gsonly=1; - } - if (myint6==2) { - m_win = (double)myfl0; - } - } - - else { - if(msgLvl(MSG::ERROR)){ - msg(MSG::ERROR) << " ERROR in PYTHIA PARAMETERS " << myblock << " is and invalid common block name !" << endmsg;} - } - } - // end of parsing - //------------------------------------------------------------------ - - // Set the logical Unit Number for the immss(1)=11 option and open the file - if (this->pymssm().imss(1) == 11) { - int syunit = 66; - this->pymssm().imss(21) = syunit; - this->pymssm().imss(22) = syunit; - const std::string& fileName = m_read_Filesusy; - opensusyfile_(fileName.c_str(),&syunit,fileName.size()); - } - - // !!!!! PROTECT AGAINST mstp(81)/mstp(82) Pythia looping - if (this->pypars().mstp(81) == 0 && this->pypars().mstp(82) > 2) - { - this->pypars().mstp(82) = 1; - if(msgLvl(MSG::INFO)){ - msg(MSG::INFO) << " !!!!!!!!!! WARNING ON PYTHIA LOOPING !!!!!!!! " << endmsg; - msg(MSG::INFO) << " YOU HAVE SWITCHED OFF MULTIPLE INTERACTIONS, mstp(81) = 0 " << endmsg; - msg(MSG::INFO) << " THE DEFAULT ATLAS MULTIPLE INTERACTIONS SCENARIO, mstp(82) = 4 " << endmsg; - msg(MSG::INFO) << " CHANGED TO mstp(82) = 1, BECAUSE PYTHIA IS LOOPING WHEN " << endmsg; - msg(MSG::INFO) << " mstp(81) = 0 and mstp(82) > 2 " << endmsg; - msg(MSG::INFO) << " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! " << endmsg;} - } - - // Now call pyinit and set listing - // Note the `extra' arguments to pyinit on the end of the argument - // list which do *not* explicitly occur in the FORTRAN - // implementation of the function -- one for each character - // variable, in the same order (reference Randy Herber, - // herber@fnal.gov). Note also that the `extern "C"' function - // declaration matches the C usage rather than the FORTRAN - // definition of the PYINIT function and therefore includes the 3 - // extra arguments. - // activate the block data - const char* envval = m_envval1.c_str(); - initpyblock_(&m_fortout,envval); - - if (m_RndmSwitch > 0) - { - const char* RndmFileName = m_RndmFileName.c_str(); - m_RndmFileLength = openrandom_(&m_RndmSwitch, &m_RndmFileNumber, RndmFileName); - if (m_RndmSwitch ==2 ) msg(MSG::INFO) << " THEY ARE " << m_RndmFileLength - << " EVENTS STORED IN THE PYTHIA RANDOM NUMBER FILE \n" << endmsg; - } - - const char* frame = m_frame.c_str(); - const char* beam = m_beam.c_str(); - double winval = m_win; - const char* target = m_target.c_str(); - int minlist = m_initlistlevel; - // special initialization for comphep - if(m_external=="comphep"){ - rinpar_(); - subnum_(); - rheader_(); - } - - - // Save the PYTHIA_INIT stream seeds.... - CLHEP::HepRandomEngine* engine = PythiaGS::p_AtRndmGenSvc->GetEngine(PythiaGS::pythia_stream); - const long* sip = engine->getSeeds(); - long int si1 = sip[0]; - long int si2 = sip[1]; - - if (m_gsonly == 0){ // initialize to run black holes and gravitational scattering - pyinit_(frame,beam,target,&winval, - strlen(frame),strlen(beam),strlen(target) - ); - } - else { // unitialize to run gravitational scattering but no (!) black holes - initgravadd_(); - pyinit_("CMS",beam,target,&winval, - strlen(frame),strlen(beam),strlen(target) - ); - } - - // ... and set them back to the stream for proper save - PythiaGS::p_AtRndmGenSvc->CreateStream(si1, si2, PythiaGS::pythia_stream); - - PythiaGS::pythia_stream = "PYTHIA"; - - pylist_(&minlist); - m_events = 0; - // cout << " kfpr ============ " << this->pyint2().kfpr(186,2) <<endl; - //cout << " kfpr ============ " << this->pyint2().kfpr(187,2) <<endl; - //decay table - const char *p_envar1="PYDAT"; - // char *p_envval1=0; - //p_envval1= - getenv(p_envar1); - //---------------------------------------------------------- - // This is the decay table file - // - // int mode=2; - // int lun=37; - // pyupda_(&mode,&lun); - // cldcay_(&lun); - // Set size of common blocks in HEPEVT: note these correspond to stdhep -// HepMC::HEPEVT_Wrapper::set_sizeof_int(4); - HepMC::HEPEVT_Wrapper::set_sizeof_int(sizeof(int)); - HepMC::HEPEVT_Wrapper::set_sizeof_real(8); - HepMC::HEPEVT_Wrapper::set_max_number_entries(10000); - - return StatusCode::SUCCESS; -} - - -//--------------------------------------------------------------------------- -StatusCode PythiaGS::callGenerator() { - //--------------------------------------------------------------------------- - // MsgStream log(messageService(), name()); - // log << MSG::DEBUG - if(msgLvl(MSG::DEBUG)){ - msg(MSG::DEBUG) << " PYTHIA generating. \n" << endmsg; - } - // Write/Read the random numbers to/from file if requested - if (m_RndmSwitch > 0) RandomNumberIO(); - - // Save the random number seeds in the event - CLHEP::HepRandomEngine* engine = PythiaGS::p_AtRndmGenSvc->GetEngine(PythiaGS::pythia_stream); - const long* s = engine->getSeeds(); - m_seeds.clear(); - m_seeds.push_back(s[0]); - m_seeds.push_back(s[1]); - - // Generate event - // pyevnt_(); - pyeffevt_(); - - // update event counter - ++m_events; - /* int mevlist=m_eventlistlevel; - // Is the event to be listed - if ( m_events >= m_firstlistevent && - m_events <= m_lastlistevent) { - log<< MSG:: INFO << "PYEVNT event no. " << m_events << " will be listed" << endmsg; - if (m_frame == "USER ") - { - int uspr = 7; - pylist_(&uspr); // Special listing when external generator was selected - } - pylist_(&mevlist); // List this event if required - } */ - // Tell lunhep to convert from PYJETS to HEPEVT - int mconv=1; - // Do the conversion -// lunhep_(&mconv); // Use STDHEP translation routine 1999/01/27 CG - pyhepc_(&mconv); // Use STDHEP translation routine 1999/01/27 CG - if ( HepMC::HEPEVT_Wrapper::number_entries() <= 0 ) { - std::cout << "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" << std::endl; - std::cout << "!!! " << generator_name(m_ExternalProcess) << " TERMINATES NORMALY: NO MORE EVENTS IN FILE !!!" << std::endl; - std::cout << "!!! PLEASE IGNORE ANY ATHENA ERROR MESSAGES LIKE !!!" << std::endl; - std::cout << "!!! AthenaEventLoopMgr ERROR Terminating event processing loop due to errors !!!" << std::endl; - std::cout << "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" << std::endl; - return StatusCode::FAILURE; - } - HepMC::HEPEVT_Wrapper::set_event_number(m_events); -// HepMC::HEPEVT_Wrapper::print_hepevt(); - return StatusCode::SUCCESS; -} - -//--------------------------------------------------------------------------- -StatusCode PythiaGS::genFinalize() { - //--------------------------------------------------------------------------- - // MsgStream log(messageService(), name()); -if(msgLvl(MSG::INFO)){ - msg(MSG::INFO) << " PYTHIA Ending. \n" << endmsg; - } - for (std::vector<int>::iterator i = m_pystatlistlevel.begin(); i != m_pystatlistlevel.end(); ++i) - { - if(msgLvl(MSG::INFO)){ - msg(MSG::INFO) <<"Call PYSTAT at endRun with level " << *i << endmsg;} - pystat_(&(*i)); - } - std::cout << "MetaData: cross-section (nb)= " << 1000000. * this->pyint5().xsec(0,3)*m_sum_pari10/m_sum_w << std::endl; - return StatusCode::SUCCESS; -} -//--------------------------------------------------------------------------- -StatusCode PythiaGS::fillEvt(HepMC::GenEvent* evt) { - //--------------------------------------------------------------------------- - // MsgStream log(messageService(), name()); - if(msgLvl(MSG::DEBUG)){ - msg(MSG::DEBUG) << " PYTHIA Atlas_HEPEVT Filling. \n" << endmsg;} - store_Atlas_HEPEVT(); - - if(msgLvl(MSG::INFO)){ - msg(MSG::DEBUG) << " PYTHIA Filling. \n" << endmsg;} - HepMC::IO_HEPEVT hepio; - hepio.set_print_inconsistency_errors(0); - - hepio.fill_next_event(evt); - int pr_id = PYTHIA + m_ExternalProcess + this->pyint1().mint(1); - if (m_ExternalProcess > 0) pr_id = PYTHIA + m_ExternalProcess; - int gravev = 0; // flag to distinguish QCD, BH and GS events - m_sum_w +=this->pypars().pari(10); - if (this->pypars().msti(1) == 4) { // weight set by BH generator - this->pypars().pari(10) = 1.0/this->pypars().parp(200); - gravev = 2; - } - else { // reweight cross section with (sigma QCD + sigma GS) / (sigma GS) - int mymsti = this->pypars().msti(1); - double wt; - wtgrav_(mymsti,wt,gravev); - this->pypars().pari(10) = this->pypars().pari(10)*wt; - } - m_sum_pari10 +=this->pypars().pari(10); - - evt->set_signal_process_id(pr_id); - evt->set_random_states(m_seeds); - evt->weights().push_back(this->pypars().pari(7)); - evt->weights().push_back(this->pypars().pari(9)); - evt->weights().push_back(this->pypars().pari(10)); - evt->weights().push_back(gravev); - - //PDF WEIGHTS - using Pdf Info object.. - //pdf_id x_1, x_1, Q2, f_1, f_2 - int id1=this->pypars().msti(15); - int id2=this->pypars().msti(16); - double x1=this->pypars().pari(33); - double x2=this->pypars().pari(34); - double q=this->pypars().pari(23); - double pdf1=(double)this->pypars().mstp(51); //pdg id - awkward but.. - double pdf2=0.; //dummy - HepMC::PdfInfo tmp_pdi(id1,id2,x1,x2,q,pdf1,pdf2); - evt->set_pdf_info(tmp_pdi); - /* std::cout << "pdfiinfo:"<< evt->pdf_info()->id1() << std::endl; - std::cout << "pdfiinfo:"<< evt->pdf_info()->id2() << std::endl; - std::cout << "pdfiinfo:"<< evt->pdf_info()->x1() << std::endl; - std::cout << "pdfiinfo:"<< evt->pdf_info()->x2() << std::endl; - std::cout << "pdfiinfo:"<< evt->pdf_info()->scalePDF() << std::endl; - std::cout << "pdfiinfo:"<< evt->pdf_info()->pdf1() << std::endl; - std::cout << "pdfiinfo:"<< evt->pdf_info()->pdf2() << std::endl; - */ - - - // Convert cm->mm and GeV->MeV -// cmTomm(evt); - GeVToMeV(evt); - - return StatusCode::SUCCESS; -} - -void -PythiaGS::RandomNumberIO() -{ - // MsgStream log(messageService(), name()); - - // m_RndmSwitch == 1 : Write the random numbers of the selected events into - // the file m_RndmFileNumber - if (m_RndmSwitch == 1) - { - int WriteEvent = m_events - m_RndmFirstEvent + 1; - if (WriteEvent >= 0) - { - WriteEvent = WriteEvent%m_RndmSkipEvents; - if (WriteEvent == 0) pyrget_(&m_RndmFileNumber, &m_RndmMOVE); - } - } - // m_RndmSwitch == 2 : Read the random numbers from the selected records from - // the file m_RndmFileNumber - else if (m_RndmSwitch == 2) - { - int MOVE = m_RndmMOVE; - if (MOVE == 0) - { - if (m_RndmFirstEvent > 0) - { - if (m_events == 0) - { - MOVE = m_RndmFirstEvent - 1; - } - else - { - MOVE = m_RndmSkipEvents; - } - } - int c_pos = this->pydatr().mrpy(6)+MOVE; - if (c_pos < m_RndmFileLength) - { - if(msgLvl(MSG::INFO)){ - msg(MSG::INFO) << "EVENT " << m_events+1 - << " will be generated with the random seeds read from record " - << c_pos+1 << " in file " << m_RndmFileName << endmsg; } - pyrset_(&m_RndmFileNumber, &MOVE); - } - } - else - { - pyrset_(&m_RndmFileNumber, &MOVE); - } - - } -} - -void -PythiaGS::store_Atlas_HEPEVT(void) -{ - -// std::cout << "s_atlas_HEPEVT------" << s_atlas_HEPEVT->nhep() << std::endl; -// std::cout << "s_atlas_HEPEVT------" << s_atlas_HEPEVT->isthep(10) << std::endl; -// std::cout << "s_atlas_HEPEVT------" << s_atlas_HEPEVT->idhep(10) << std::endl; -// std::cout << "s_atlas_HEPEVT------" << s_atlas_HEPEVT->jmohep(1,10) << std::endl; -// std::cout << "s_atlas_HEPEVT------" << s_atlas_HEPEVT->jdahep(2,10) << std::endl; - - s_atlas_HEPEVT->fill(); - - Atlas_HEPEVT* Ahep = new Atlas_HEPEVT(); - *(Ahep)=*(s_atlas_HEPEVT); - static const std::string keyid = "PythiaGS"; - StatusCode sc = evtStore() ->record(Ahep, keyid); - if (!sc.isSuccess()) { - // MsgStream msg(messageService(), name()); - // msg << MSG::WARNING - if(msgLvl(MSG::WARNING)){ - msg(MSG::WARNING) << " Could not record Atlas_HEPEVT" << endmsg;} - } - -} diff --git a/Generators/PythiaExo_i/src/PythiaGS_i_entries.cxx b/Generators/PythiaExo_i/src/PythiaGS_i_entries.cxx deleted file mode 100644 index bf762795206bd8d6e448a0ffb0e1b1fd4377e1b3..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/PythiaGS_i_entries.cxx +++ /dev/null @@ -1,7 +0,0 @@ -/* - Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration -*/ -#include "PythiaExo_i/PythiaGS.h" - -DECLARE_COMPONENT( PythiaGS ) - diff --git a/Generators/PythiaExo_i/src/PythiaGravADD/Aeik.c b/Generators/PythiaExo_i/src/PythiaGravADD/Aeik.c deleted file mode 100644 index 36926fb1ef4f5360051cd00fb49b3cce3248aeb3..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/PythiaGravADD/Aeik.c +++ /dev/null @@ -1,92 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// I compile this file using -// gcc -c Aeik.c -// Link with fortran whilde compiling fortran-program -// g77 -lgsl -lgslcblas Aeik.o LitetFortran.f - - -#include <stdio.h> -#include <math.h> -// These have to be altered -#include <gsl/gsl_sf.h> -#include <gsl/gsl_integration.h> - - -/*void myerrorhandler (const char * reason, - const char * file, - int line, - int gsl_errno) { - static int n = 0; - ++n; - if ( n <= 10 || n == 100 || n == 1000 || n == 10000 ) - printf("myerrorhandler %d: (%s) %s\n", n, file, reason); - }*/ - - - -// This defines the integrand, with parameters -double f (double b, void * params) { - double *pVec = (double *) params; - double shat = pVec[0]; - double k = pVec[1]; - double Ms = pVec[2]; - double MD = pVec[3]; - double n = pVec[4]; - double Pi=3.14159; - double Xconst=-(pow(MD,-2 - n)*pow(Ms,n)*pow(Pi,-1 + n/2.)*shat* - exp(gsl_sf_lngamma(n/2.))/8.); - // printf("Xconst = %e.\Xconst"); - double f = 2.0*Pi*b*gsl_sf_bessel_J0(b*k)*(1.0-exp(Xconst*gsl_sf_hyperg_U(n/2.0, 1.0, Ms*Ms*b*b/4.0))); - return f; -} - -// This procedure does the actual interation -double aeik_(double *shat, double *k, double *Ms, double *MD, - int *n, double * bmin) -{ - //Changeing epsrel helped more for errors - double result, error; // To be returned - double epsabs = 1.0e-10; //Allowed absolute error - double epsrel = 0.000001; //Allowed relative error - size_t subintervals = 1000000; - - // gsl_set_error_handler(&myerrorhandler); - - // printf("c-function aeik_ invoked with arguments\n shat = %e, k = %e, Ms = %e, MD = %e, n = %e.\n", *shat, *k, *Ms, *MD,(double) *n); - - gsl_function F; - F.function = &f; - double pVec[5]; - pVec[0] = *shat; - pVec[1] = *k; - pVec[2] = *Ms; - pVec[3] = *MD; - pVec[4] = (double) *n; - - F.params = pVec; /* our integrand contains parameters */ - - gsl_integration_workspace * ws // memory space for use by the interator - = gsl_integration_workspace_alloc (subintervals); - - // using gsl function for integrals over intervals of form (a,infinity) - gsl_integration_qagiu ( &F, /* The interand */ - *bmin, /* integral from 0 to infinity */ - epsabs, /* acceptable absolute error */ - epsrel, /* acceptable relative error */ - subintervals, /* Maximum number of subintervals */ - ws, /* workspace to use during integration */ - &result, /* returns result here */ - &error /* returns error estimate here */ - ); - double integral=result*2.0* *shat; - // printf("The result is %e with an estimated error bound of %e\n", result, error); - - gsl_integration_workspace_free (ws); - - return integral; -} - - diff --git a/Generators/PythiaExo_i/src/PythiaGravADD/GravScat.F b/Generators/PythiaExo_i/src/PythiaGravADD/GravScat.F deleted file mode 100644 index ad3f2792797f0cfbbfb4c25d9205ba0a3a3781ec..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/PythiaGravADD/GravScat.F +++ /dev/null @@ -1,1161 +0,0 @@ -C...PYKCUT -C...Dummy routine, which the user can replace in order to make cuts on -C...the kinematics on the parton level before the matrix elements are -C...evaluated and the event is generated. The cross-section estimates -C...will automatically take these cuts into account, so the given -C...values are for the allowed phase space region only. MCUT=0 means -C...that the event has passed the cuts, MCUT=1 that it has failed. - - SUBROUTINE PYKCUT(MCUT) - -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - -C...Commonblocks. - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - COMMON/PYINT1/MINT(400),VINT(400) - COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2) - SAVE /PYDAT1/,/PYINT1/,/PYINT2/ - -C--common block for the probabilities of SM particles - DOUBLE PRECISION PQUARK,PLEPT,PNEUT,PGLUON,PGAMMA,PWBOSN, - & PZBOSN,PHIGGS,PFERM(3),PBOSON(5) - COMMON /BHPROB/PQUARK,PLEPT,PNEUT,PGLUON,PGAMMA,PWBOSN, - & PZBOSN,PHIGGS,PFERM,PBOSON -C--common block for the main parameters - INTEGER MSSDEF,NBODY,IPRINT,MSSDEC - DOUBLE PRECISION MPLNCK,MINMSS,MAXMSS,INTMPL - LOGICAL TIMVAR,GTSCA,GRYBDY,KINCUT - COMMON /BHPARM/MPLNCK,MINMSS,MAXMSS,INTMPL,MSSDEF,NBODY,IPRINT, - & MSSDEC,TIMVAR,GTSCA,GRYBDY,KINCUT -C--common block for decay of the black hole - DOUBLE PRECISION RHFACT,BHMASS,GENPOW,FACTOR - INTEGER TOTDIM - COMMON /BLACKH/ RHFACT,BHMASS,GENPOW,FACTOR,TOTDIM - SAVE /BLACKH/,/BHPARM/,/BHPROB/ -C write(*,*) 'in subroutine pycut, MPLNCK: ',MPLNCK -C...Set default value (accepting event) for MCUT. - MCUT=0 - -C...Read out subprocess number. - ISUB=MINT(1) - ISTSB=ISET(ISUB) - -C...Read out tau, y*, cos(theta), tau' (where defined, else =0). - TAU=VINT(21) - YST=VINT(22) - CTH=0D0 - IF(ISTSB.EQ.2.OR.ISTSB.EQ.4) CTH=VINT(23) - TAUP=0D0 - IF(ISTSB.GE.3.AND.ISTSB.LE.5) TAUP=VINT(26) - -C...Calculate x_1, x_2, x_F. - IF(ISTSB.LE.2.OR.ISTSB.GE.5) THEN - X1=SQRT(TAU)*EXP(YST) - X2=SQRT(TAU)*EXP(-YST) - ELSE - X1=SQRT(TAUP)*EXP(YST) - X2=SQRT(TAUP)*EXP(-YST) - ENDIF - XF=X1-X2 - -C...Calculate shat, that, uhat, p_T^2. - SHAT=TAU*VINT(2) - SQM3=VINT(63) - SQM4=VINT(64) - RM3=SQM3/SHAT - RM4=SQM4/SHAT - BE34=SQRT(MAX(0D0,(1D0-RM3-RM4)**2-4D0*RM3*RM4)) - RPTS=4D0*VINT(71)**2/SHAT - BE34L=SQRT(MAX(0D0,(1D0-RM3-RM4)**2-4D0*RM3*RM4-RPTS)) - RM34=2D0*RM3*RM4 - RSQM=1D0+RM34 - RTHM=(4D0*RM3*RM4+RPTS)/(1D0-RM3-RM4+BE34L) - THAT=-(0.5D0*SHAT*MAX(RTHM,1D0-RM3-RM4-BE34*CTH)) - UHAT=-(0.5D0*SHAT*MAX(RTHM,1D0-RM3-RM4+BE34*CTH)) - PT2=MAX(VINT(71)**2,0.25D0*SHAT*BE34**2*(1D0-CTH**2)) - -C...Decisions by user to be put here. - - IF ( TOTDIM.LE.3 ) RETURN - - IF ( SQRT(SHAT).LT.MINMSS ) RETURN - - PLPOW=2.0D0/(TOTDIM-3.0D0) - - RHORSQ=(RHFACT*SQRT(SHAT))**PLPOW -C... If pT for the hard scattering (scale used in parton densiy) is -C... high enough use CHARYBDIS, VINT(52)=Q^2 of the hard subprocess - IF ( VINT(52)*RHORSQ*FACTOR.LE.1.0D0 ) RETURN - - MCUT=1 - - RETURN - END - - -C********************************************************************* - -C...PYEVWT -C...Dummy routine, which the user can replace in order to multiply the -C...standard PYTHIA differential cross-section by a process- and -C...kinematics-dependent factor WTXS. For MSTP(142)=1 this corresponds -C...to generation of weighted events, with weight 1/WTXS, while for -C...MSTP(142)=2 it corresponds to a modification of the underlying -C...physics. - - SUBROUTINE PYEVWT(WTXS) - -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - -C...Commonblocks. - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - COMMON/PYINT1/MINT(400),VINT(400) - COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2) - SAVE /PYDAT1/,/PYINT1/,/PYINT2/ - -C...Parameters used during the run, to be printed in the data files, therefore needed by WRIPAR - DOUBLE PRECISION UBMUL,WTPA - -C... For chosing clustering algorithm -C character CLALG*6 - COMMON/RUNPAR/UBMUL,WTPA - SAVE /RUNPAR/ - WTPA=1.0D0 - - -C...Set default weight for WTXS. - WTXS=1D0 - -C...Read out subprocess number. - ISUB=MINT(1) - ISTSB=ISET(ISUB) - -C...Read out tau, y*, cos(theta), tau' (where defined, else =0). - TAU=VINT(21) - YST=VINT(22) - CTH=0D0 - IF(ISTSB.EQ.2.OR.ISTSB.EQ.4) CTH=VINT(23) - TAUP=0D0 - IF(ISTSB.GE.3.AND.ISTSB.LE.5) TAUP=VINT(26) - -C...Read out x_1, x_2, x_F, shat, that, uhat, p_T^2. - X1=VINT(41) - X2=VINT(42) - XF=X1-X2 - SHAT=VINT(44) - THAT=VINT(45) - UHAT=VINT(46) - PT2=VINT(48) -C...If Charybdis is not used the events (if(ISUB.ne.4)) should be -C...weighted, else not -c IF( ISUB.NE.4 ) WTXS=(PT2**3)/(70.0D0*70.0D0)**3 -c IF( ISUB.NE.4 ) WTXS=(PT2**3)/(SHAT/800.0D0)**3 -C IF( ISUB.NE.4 ) WTXS=((PT2)**5)/((WTPA*SHAT/(X1*X2))/800.0D0)**5 - IF( ISUB.NE.4 ) WTXS=((PT2)**3)/((WTPA*SHAT/(X1*X2))/800.0D0)**3 -C write(*,*) 'in pyevwt: ',ISUB, WTXS, WTPA - RETURN - END - - -C********************************************************************* -C...WTGRAV -C...03/09/09 changed by boelaert in order to return GRAVEV flag -C...Routine which returnes the weight due to gravity - SUBROUTINE WTGRAV(ISUB, WT, GRAVE) - -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) - COMMON/PYINT1/MINT(400),VINT(400) -C...Some parameters from CHARYBDIS commom block are needed - INTEGER MSSDEF,NBODY,IPRINT,MSSDEC - DOUBLE PRECISION MPLNCK,MINMSS,MAXMSS,INTMPL - LOGICAL TIMVAR,GTSCA,GRYBDY,KINCUT - COMMON /BHPARM/MPLNCK,MINMSS,MAXMSS,INTMPL,MSSDEF,NBODY,IPRINT, - & MSSDEC,TIMVAR,GTSCA,GRYBDY,KINCUT - DOUBLE PRECISION RHFACT,BHMASS,GENPOW,FACTOR - INTEGER TOTDIM - COMMON /BLACKH/ RHFACT,BHMASS,GENPOW,FACTOR,TOTDIM -C... Gravity parameters - DOUBLE PRECISION KKMASS,MSAT,PFACTOR,MS - INTEGER GRAVEV - COMMON/MASSES/KKMASS,MSAT,PFACTOR,MS,GRAVEV -C...Parameters used during the run, to be printed in the data files, therefore needed by WRIPAR -C DOUBLE PRECISION PTCL,THRMIN,PSCUT,ETCOND,UBMUL,WTPA -C INTEGER NEVE,NOINT,NCUT,TUNEA,NOQCD -C... For chosing clustering algorithm -C character CLALG*6 -C COMMON/RUNPAR/PTCL,THRMIN,PSCUT,ETCOND,UBMUL,WTPA, -C $ NEVE,NCUT,TUNEA,NOINT,NOQCD,CLALG - - INTEGER GRAVE - DOUBLE PRECISION WT -C SAVE /RUNPAR/,/MASSES/,/BLACKH/,/BHPARM/ - SAVE /MASSES/,/BLACKH/,/BHPARM/ -C...Inline function definitions - include 'inlines.f' -C write(*,*) 'in subroutine pycut, wtgrav: ',MPLNCK -C...Get shat from Pythia - SHAT=PARI(14) -C SHAT=VINT(44) -CC...Get z=cos(theta) from Pythia - Z=PARI(41) -C Z=VINT(23) -C...Get alpha_s - AS=PYALPS(PARI(22)) -C AS=PYALPS(VINT(52)) -C...Get incoming flavours, negative for anti - IFI1=MSTI(15) -C IFI1=MINT(15) - IFI2=MSTI(16) -C IFI2=MINT(16) -C...Get outgoing flavours - IFO1=MSTI(21) -C IFO1=MINT(21) - IFO2=MSTI(22) -C IFO2=MINT(22) - -C...WT is set to sigma_{grav+qcd}/sigma_qcd=(sigma_{grav+qcd}+sigma_{qcd})/sigma_{qcd} -C...for the different -C...sub-processes - WT=1.0D0 - -C...If we have 'effective' gravity or totgrav and SHAT.lt.MS**2 - if(SHAT.lt.MS**2) then - IF ( ISUB.EQ.12 ) THEN -C... q + qbar -> q' + qbar' - WT=WTRAT(fqapb(z),gqapb(z),hqapb(z),1/36.0D0) - ELSEIF ( ISUB.EQ.11 ) THEN - IF((IFI1.EQ.IFI2).AND.(IFO1.EQ.IFO2).AND.(IFO1.EQ.IFI1))THEN -C... If q + q -> q + q (all are equal) - WT=WTRAT(fqqqq(z),gqqqq(z),hqqqq(z),1/72.0D0) - ELSEIF((IFI1.EQ.-IFI2).AND.(IFO1.EQ.-IFO2).AND. - & (ABS(IFI1).EQ.ABS(IFO1))) THEN -C... If q + qbar -> q + qbar - WT=WTRAT(fqaqa(z),gqaqa(z),hqaqa(z),1/36.0D0) - ELSE -C... (q + q' -> q + q') = (q + qbar' -> q + qbar') - WT=WTRAT(fqpqp(z),gqpqp(z),hqpqp(z),1/36.0D0) - ENDIF - ELSEIF ( ISUB.EQ.28 ) THEN -C... q + g -> q + g -C... qbar + g -> qbar + g - WT=WTRAT(fqgqg(z),gqgqg(z),hqgqg(z),1/96.0D0) - ELSEIF ( (ISUB.EQ.53).OR.(ISUB.EQ.13) ) THEN -C... g + g -> q + qbar -C... or q + qbar -> g + g - WT=WTRAT(fggqa(z),gggqa(z),hggqa(z),1/256.0D0) - ELSEIF ( ISUB.EQ.68 ) THEN -C... g + g -> g + g - WT=WTRAT(fgggg(z),ggggg(z),hgggg(z),1/512.0D0) - ENDIF - endif - -C... If 'eikonal' gravitational scattering or totgrav at high energies - if(SHAT.ge.MS**2) then - IF ( ISUB.EQ.12 ) THEN -C... q + qbar -> q' + qbar' - WT=1.0D0 - if ( noqcd.eq.1 ) WT=0.0D0 - ELSEIF ( ISUB.EQ.11 ) THEN - IF((IFI1.EQ.IFI2).AND.(IFO1.EQ.IFO2).AND.(IFO1.EQ.IFI1))THEN -C... If q + q -> q + q (all are equal) - WT=WTEIK(fqqqq(z),hqqqq(z),1.0D0/72.0D0,0) - ELSEIF((IFI1.EQ.-IFI2).AND.(IFO1.EQ.-IFO2).AND. - & (ABS(IFI1).EQ.ABS(IFO1))) THEN -C... If q + qbar -> q + qbar - WT=WTEIK(fqaqa(z),hqaqa(z),1.0D0/36.0D0,0) - ELSE -C... (q + q' -> q + q') = (q + qbar' -> q + qbar') - WT=WTEIK(fqpqp(z),hqpqp(z),1.0D0/36.0D0,0) - ENDIF - ELSEIF ( ISUB.EQ.28 ) THEN -C... q + g -> q + g -C... qbar + g -> qbar + g - WT=WTEIK(fqgqg(z),hqgqg(z),1.0D0/96.0D0,0) - ELSEIF ( (ISUB.EQ.53).OR.(ISUB.EQ.13) ) THEN -C... g + g -> q + qbar -C... or q + qbar -> g + g - WT=1.0D0 - if ( noqcd.eq.1 ) WT=0.0D0 - ELSEIF ( ISUB.EQ.68 ) THEN -C... g + g -> g + g -c gluons need same color - WT=WTEIK(fgggg(z),hgggg(z),1.0D0/512.0D0,0) - ENDIF - endif - - GRAVE = GRAVEV -C write (*,*) 'in wtgrav, GRAVEV: ', GRAVEV - RETURN - END - -C********************************************************************* -C...WTRAT -C...Routine which calculates the weight due to effective gravity - - DOUBLE PRECISION FUNCTION WTRAT(f,g,h,ks) -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) - COMMON/PYINT1/MINT(400),VINT(400) -C...Some parameters from CHARYBDIS commom block are needed - INTEGER MSSDEF,NBODY,IPRINT,MSSDEC - DOUBLE PRECISION MPLNCK,MINMSS,MAXMSS,INTMPL - LOGICAL TIMVAR,GTSCA,GRYBDY,KINCUT - COMMON /BHPARM/MPLNCK,MINMSS,MAXMSS,INTMPL,MSSDEF,NBODY,IPRINT, - & MSSDEC,TIMVAR,GTSCA,GRYBDY,KINCUT - DOUBLE PRECISION RHFACT,BHMASS,GENPOW,FACTOR - INTEGER TOTDIM - COMMON /BLACKH/ RHFACT,BHMASS,GENPOW,FACTOR,TOTDIM -C...KKMASS to be used for KK-mass maximum integration, and MSAT as Atwoods Ms - DOUBLE PRECISION KKMASS,MSAT,PFACTOR,MS - INTEGER GRAVEV - COMMON/MASSES/KKMASS,MSAT,PFACTOR,MS,GRAVEV -C...Parameters used during the run, to be printed in the data files, therefore needed by WRIPAR -C DOUBLE PRECISION ETCOND,UBMUL,WTPA -C INTEGER NEVE,NOINT,NOQCD,NCUT,TUNEA -C.. Complex parameters needed to take eikonalization into account -C DOUBLE COMPLEX X, xgeof - DOUBLE COMPLEX xgeof - DOUBLE PRECISION ks,k - SAVE /MASSES/,/BLACKH/, /BHPARM/ - - PI=3.141593D0 - n=TOTDIM-4 -C...Get shat from Pythia - SHAT=PARI(14) - -C...Get alpha_s - AS=PYALPS(PARI(22)) -C write(*,*) 'in function WTRAT, alpha_s: ', AS -C...Get z=cos(theta) from Pythia - z=PARI(41) - t=-(shat*(1.0d0-z)/2.0d0) - k=sqrt(-t) - WTRAT=1.0D0 - - IF ((TOTDIM-4).LT.2) THEN - RETURN - ELSEIF ((TOTDIM-4).EQ.2) THEN -C... I now divide Atwoods F (FF) by 2 to make Atwoods results better Agree with Giudice -C... Starting from Hans (hep-ph/9911350) article I get an expression for D(s) -C... (equation 4 in hep-ph/9911231) wich is only half as big as that given by Atwood. -C... This factor 2 I now absorb into F - FF=LOG(shat/MSAT**2) - ELSEIF ((TOTDIM-4).GT.2) THEN - FF=2.0D0/(TOTDIM-4-2) - ENDIF - -C... Interference term - QCDGI=-(4.0D0*g*AS*FF*shat**2/ - $ (MSAT**(TOTDIM-4+2)*KKMASS**(2-(TOTDIM-4)))) - -C IF(NOINT.eq.1.or.NOQCD.eq.1) QCDGI=0.0D0 - -C...Error cutfac=Gammafn((2.0D0 + n)/2.0D0) - cutfac=Gammafn(dble(n)/2.0D0) - - -C... no unitarization -C... Default cutoff KKMASS is now MP - -C... Now with 'geometric' amplitude GG&MS 5.4 -C... Gravity is universally attractive, and for small arguments, -C.... there is no difference in sign between the channels, -C... GG and MS has calculated the Born amplitude to be negative -C... (eq 4.3), this is also the right sign to get an attractive -C... potential (eq 4.5) - -C...Complex return values seem difficult so we call a subroutine instead. - call geof(h,ks,0,xgeof) - -C... Interference term, only real part interferes - QCDGI=-(DBLE(xgeof)*tfac(Ms,t,n)*cutfac*4.0D0*g*AS*FF* - $ shat**2/ - $ (MSAT**(TOTDIM-4+2)*MS**(2-(TOTDIM-4)))) - -C IF(NOINT.eq.1.or.NOQCD.eq.1) QCDGI=0.0D0 -C... Make Aborn depend on s,t,u to ensure continuous transition -C... with A(t,Ms)/A(Ms) in tfac from AtwoodMpCutRescale.nb -C... Weight=(QCD+Interference +gravity)/QCD - QCD = f*AS**2 - gravity = tfac(Ms,t,n)**2*cutfac**2*Abs(xgeof)**2*16*h*FF**2 - $ *shat**4/ - $ (MSAT**(TOTDIM-4+2)*MS**(2-(TOTDIM-4)))**2 - - WTRAT=(QCD+QCDGI+gravity)/qcd - if ( NOQCD.eq.1 ) WTRAT=gravity/qcd - - - - RETURN - END -C********************************************************************* -C...WTEIK -C...Routine which calculates the weight due to 'eikonal' gravity - - DOUBLE PRECISION FUNCTION WTEIK(f,h,ks,ip) -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) - COMMON/PYINT1/MINT(400),VINT(400) - -C...Some parameters from CHARYBDIS commom block are needed - INTEGER MSSDEF,NBODY,IPRINT,MSSDEC -C DOUBLE PRECISION MPLNCK,MINMSS,MAXMSS,INTMPL,Gammafn - DOUBLE PRECISION MPLNCK,MINMSS,MAXMSS,INTMPL - LOGICAL TIMVAR,GTSCA,GRYBDY,KINCUT - COMMON /BHPARM/MPLNCK,MINMSS,MAXMSS,INTMPL,MSSDEF,NBODY,IPRINT, - & MSSDEC,TIMVAR,GTSCA,GRYBDY,KINCUT - DOUBLE PRECISION RHFACT,BHMASS,GENPOW,FACTOR - INTEGER TOTDIM - COMMON /BLACKH/ RHFACT,BHMASS,GENPOW,FACTOR,TOTDIM -C...GRAVEV is a flag to see if it was a gravitationally mediated event - DOUBLE PRECISION KKMASS,MSAT,PFACTOR,MS - INTEGER GRAVEV - COMMON/MASSES/KKMASS,MSAT,PFACTOR,MS,GRAVEV -C...The factor ks from Atwood et al hep-ph/99112 - DOUBLE PRECISION ks - DOUBLE PRECISION MD -C DOUBLE PRECISION PTCL,THRMIN,PSCUT,ETCOND,UBMUL,WTPA -C INTEGER NEVE,NOINT,NCUT,TUNEA,NOQCD -C... For chosing clustering algorithm -C character CLALG*6 -C COMMON/RUNPAR/PTCL,THRMIN,PSCUT,ETCOND,UBMUL,WTPA, -C $ NEVE,NCUT,TUNEA,NOINT,NOQCD,CLALG -C... Parameters usd if eikgrav or effgrav - DOUBLE PRECISION PLPOW, RHORSQ -C SAVE /RUNPAR/,/MASSES/,/BLACKH/, /BHPARM/ - SAVE /MASSES/,/BLACKH/, /BHPARM/ - - - if(ip.eq.0) then -C... Get shat from Pythia - SHAT=PARI(14) -C... Get z=cos(theta) from Pythia - Z=PARI(41) -C... Get alpha_s - AS=PYALPS(PARI(22)) - else - if ( NOQCD.eq.1 ) then - wteik = 1.0D99 - return - endif -C... Get shat from Pythia - SHAT=VINT(44) -C... Get z=cos(theta) from Pythia - Z=VINT(23) -C... Get alpha_s - AS=PYALPS(VINT(52)) - endif - - t=-(shat*(1.0d0-z)/2.0d0) - q=sqrt(-t) - - PI=3.141593D0 - n=TOTDIM-4 - SQCD=f*AS**2*PI*ks/2.0D0/SHAT - - WTEIK=1.0D0 - - IF ((TOTDIM-4).LT.2.OR.(TOTDIM-4).GT.7) THEN - RETURN - ENDIF - -C... Giudices Planck scale in terms of our - MD=2.0D0**((-3.0D0+n)/(n+2.0D0))*PI**((-1.0D0+n)/(n+2.0D0))*MPLNCK - - -C... Calculate cross section using the amplitude 2.5 in MSGG with -C... \chi from eq 4.7 -C... cf. 060714:1 - - PLPOW=2.0D0/(TOTDIM-3.0D0) - RHORSQ=(RHFACT*SQRT(shat))**PLPOW - - SEIK=1.0D0/(16.0D0*Pi*shat**2) - $ *Aeik(shat,q,Ms,MD,n,sqrt(rhorsq))**2*shat/2.0D0 - - WTEIK=(SQCD+SEIK)/SQCD - if ( NOQCD.eq.1 ) WTEIK=SEIK/SQCD - - RETURN - END -C********************************************************************* -C... GCOLFX Routine to determine if a scattering is graviton-mediated -C... which fixes the corresponding colour flow it that is the case. - SUBROUTINE GCOLFX(ISUB,IPU1,IPU2) - -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) - COMMON/PYINT1/MINT(400),VINT(400) -C...Some parameters from CHARYBDIS commom block are needed - INTEGER MSSDEF,NBODY,IPRINT,MSSDEC - DOUBLE PRECISION MPLNCK,MINMSS,MAXMSS,INTMPL - LOGICAL TIMVAR,GTSCA,GRYBDY,KINCUT - COMMON /BHPARM/MPLNCK,MINMSS,MAXMSS,INTMPL,MSSDEF,NBODY,IPRINT, - & MSSDEC,TIMVAR,GTSCA,GRYBDY,KINCUT - DOUBLE PRECISION RHFACT,BHMASS,GENPOW,FACTOR - INTEGER TOTDIM - COMMON /BLACKH/ RHFACT,BHMASS,GENPOW,FACTOR,TOTDIM - -C...GRAVEV should be set to 0 for QCD-events - DOUBLE PRECISION KKMASS,MSAT,PFACTOR,MS - INTEGER GRAVEV - COMMON/MASSES/KKMASS,MSAT,PFACTOR,MS,GRAVEV - SAVE /MASSES/,/BLACKH/,/BHPARM/ -C...Inline function definitions - include 'inlines.f' - -C...Set flag for gravityevent to 0 (non-gravity) - GRAVEV=0 - PARP(199)=0.0d0 -C...Exit immediately if this is not a 2->2 scattering. - IF ( N-IPU1.NE.3 ) RETURN - -C...Get shat from Pythia - SHAT=VINT(44) -CC...Get z=cos(theta) from Pythia - Z=VINT(23) -C...Get alpha_s - AS=PYALPS(VINT(52)) -C...Get incoming flavours, negative for anti - IFI1=MINT(15) - IFI2=MINT(16) -C...Get outgoing flavours - IFO1=MINT(21) - IFO2=MINT(22) - -C...Scaled mandelstam variables. - tz=-((1.0d0-z)/2.0d0) - uz=-((1.0d0+z)/2.0d0) - sz=1.0d0 - -C...Color flow for 'efective gravity' and totgrav SHAT.lt.MS - if(SHAT.lt.MS**2) then - IF ( ISUB.EQ.12 ) THEN -C... q + qbar -> q' + qbar' - if ( igprob(fqapb(z),gqapb(z),hqapb(z),1/36.0D0).ne.0 ) - $ call gcolfl(-1,ipu1,ipu2) - ELSEIF ( ISUB.EQ.11 ) THEN - IF((IFI1.EQ.IFI2).AND.(IFO1.EQ.IFO2).AND.(IFO1.EQ.IFI1)) THEN -C... If q + q -> q + q (all are equal) - if ( igprob(fqqqq(z),gqqqq(z),hqqqq(z),1/72.0D0).ne.0 ) then -C Fast med geometriserade amplituder här **** HÄR *** - if ( pyr(0)*(Gfn(tz,uz)+Gfn(uz,tz)).lt.Gfn(tz,uz) ) then -C... t-channel - call gcolfl(1,ipu1,ipu2) - else -C... u-channel - call gcolfl(2,ipu1,ipu2) - - endif - endif - ELSEIF((IFI1.EQ.-IFI2).AND.(IFO1.EQ.-IFO2).AND. - & (ABS(IFI1).EQ.ABS(IFO1))) THEN -C... If q + qbar -> q + qbar - if ( igprob(fqaqa(z),gqaqa(z),hqaqa(z),1/36.0D0).ne.0 ) then - -C Fast med geometriserade amplituder här **** HÄR *** - if ( PYR(0)*(Gfn(sz,tz)+Gfn(tz,sz)).lt.Gfn(sz,tz) ) then -C... s-channel - call gcolfl(-1,ipu1,ipu2) - else -C... t-channel - call gcolfl(1,ipu1,ipu2) - endif - - endif - ELSE -C... (q + q' -> q + q') = (q + qbar' -> q + qbar') - if ( igprob(fqpqp(z),gqpqp(z),hqpqp(z),1/36.0D0).ne.0 ) - $ call gcolfl(1,ipu1,ipu2) - ENDIF - ELSEIF ( ISUB.EQ.28 ) THEN -C... q + g -> q + g -C... qbar + g -> qbar + g - if ( igprob(fqgqg(z),gqgqg(z),hqgqg(z),1/96.0D0).ne.0 ) - $ call gcolfl(1,ipu1,ipu2) - ELSEIF ( (ISUB.EQ.53).OR.(ISUB.EQ.13) ) THEN -C... g + g -> q + qbar -C... or q + qbar -> g + g - if ( igprob(fggqa(z),gggqa(z),hggqa(z),1/256.0D0).ne.0 ) - $ call gcolfl(-1,ipu1,ipu2) - ELSEIF ( ISUB.EQ.68 ) THEN -C... g + g -> g + g - if ( igprob(fgggg(z),ggggg(z),hgggg(z),1/512.0D0).ne.0 ) then - -C Fast med geometriserade amplituder här **** HÄR *** - xs=16.0d0*(1.0d0+6*z**2+z**4) - xt=8.0d0*(17.0d0+4.0d0*z+6.0d0*z**2+4.0d0*z**3+z**4) - xu=8.0d0*(17.0d0-4.0d0*z+6.0d0*z**2-4.0d0*z**3+z**4) - - xr=pyr(0)*(xs+xt+xu) - if ( xr.lt.xs ) then -C... s-channel - call gcolfl(-1,ipu1,ipu2) - elseif ( xr.lt.xs+xt ) then -C... t-channel - call gcolfl(1,ipu1,ipu2) - else -C... u-channel - call gcolfl(2,ipu1,ipu2) - endif - endif - ENDIF - endif - -C...Color flow for eikonal grativty, only 't-channel' - if(SHAT.ge.MS**2) then - IF ( ISUB.EQ.11 ) THEN - IF((IFI1.EQ.IFI2).AND.(IFO1.EQ.IFO2).AND.(IFO1.EQ.IFI1))THEN -C... If q + q -> q + q (all are equal) - if (pyr(0)*wteik(fqqqq(z),hqqqq(z),1.0D0/72.0D0,1).gt.1 ) - $ call gcolfl(1,ipu1,ipu2) - ELSEIF((IFI1.EQ.-IFI2).AND.(IFO1.EQ.-IFO2).AND. - & (ABS(IFI1).EQ.ABS(IFO1))) THEN -C... If q + qbar -> q + qbar - if (pyr(0)*wteik(fqaqa(z),hqaqa(z),1.0D0/36.0D0,1).gt.1) - $ call gcolfl(1,ipu1,ipu2) - ELSE -C... (q + q' -> q + q') = (q + qbar' -> q + qbar') - if (pyr(0)*wteik(fqpqp(z),hqpqp(z),1.0D0/36.0D0,1).gt.1) - $ call gcolfl(1,ipu1,ipu2) - ENDIF - ELSEIF ( ISUB.EQ.28 ) THEN -C... q + g -> q + g -C... qbar + g -> qbar + g - if (pyr(0)*wteik(fqgqg(z),hqgqg(z),1.0D0/96.0D0,1).gt.1) - $ call gcolfl(1,ipu1,ipu2) - ELSEIF ( ISUB.EQ.68 ) THEN -C... g + g -> g + g -C... t-channel - if ( pyr(0)*wteik(fgggg(z),hgggg(z),1.0D0/512.0D0,1).gt.1 ) - $ call gcolfl(1,ipu1,ipu2) - ENDIF - endif -C write(*,*) 'in GCOLFX: ',PARP(199) - RETURN - END - - -C********************************************************************* -C...IGPROB -C...Used for totgrav or effgrav -C...Routine which calculates the probability that we had -C...a gravity mediated scattering - - INTEGER FUNCTION IGPROB(f,g,h,ks) -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) - COMMON/PYINT1/MINT(400),VINT(400) - -C...Some parameters from CHARYBDIS commom block are needed - INTEGER MSSDEF,NBODY,IPRINT,MSSDEC - DOUBLE PRECISION MPLNCK,MINMSS,MAXMSS,INTMPL - LOGICAL TIMVAR,GTSCA,GRYBDY,KINCUT - COMMON /BHPARM/MPLNCK,MINMSS,MAXMSS,INTMPL,MSSDEF,NBODY,IPRINT, - & MSSDEC,TIMVAR,GTSCA,GRYBDY,KINCUT - DOUBLE PRECISION RHFACT,BHMASS,GENPOW,FACTOR - INTEGER TOTDIM - COMMON /BLACKH/ RHFACT,BHMASS,GENPOW,FACTOR,TOTDIM - -C...KKMASS to be used for KK-mass maximum integration, and MSAT as Atwoods Ms - DOUBLE PRECISION KKMASS,MSAT,PFACTOR,MS - INTEGER GRAVEV - COMMON/MASSES/KKMASS,MSAT,PFACTOR,MS,GRAVEV - DOUBLE PRECISION ks - DOUBLE COMPLEX xgeof -C...Parameters used during the run, to be printed in the data files, therefore needed by WRIPAR -C DOUBLE PRECISION PTCL,THRMIN,PSCUT,ETCOND,UBMUL,WTPA -C INTEGER NEVE,NOINT,NCUT,TUNEA,NOQCD -C... For chosing clustering algorithm -C character CLALG*6 -C COMMON/RUNPAR/PTCL,THRMIN,PSCUT,ETCOND,UBMUL,WTPA, -C $ NEVE,NCUT,TUNEA,NOINT,NOQCD,CLALG -C SAVE /RUNPAR/,/MASSES/,/BLACKH/,/BHPARM/ - SAVE /MASSES/,/BLACKH/,/BHPARM/ - if ( NOQCD.eq.1 ) then - IGPROB=1 - return - endif - - PI=3.141593D0 - n=TOTDIM-4 -C...Get shat from Pythia -C SHAT=PARI(14) - SHAT=VINT(44) -C...Get alpha_s -C AS=PYALPS(PARI(22)) - AS=PYALPS(vint(52)) -C...Get z - Z=VINT(23) - t=-(shat*(1.0d0-z)/2.0d0) - - - IGPROB=0 - - IF ((TOTDIM-4).LT.2) THEN - RETURN - ELSEIF ((TOTDIM-4).EQ.2) THEN -C... I now divide Atwoods F (FF) by 2 to make Atwoods results better Agree with Giudice -C... Starting from Hans (hep-ph/9911350) article I get an expression for D(s) -C... (equation 4 in hep-ph/9911231) wich is only half as big as that given by Atwood. -C... This factor 2 I now absorb into F - FF=LOG(shat/MSAT**2) - ELSEIF ((TOTDIM-4).GT.2) THEN - FF=2.0D0/(TOTDIM-4-2) - ENDIF - -C... Factor from gaussian cut of in MS&GG -C...ERROR cutfac=Gammafn((2.0D0 + n)/2.0D0) - cutfac=Gammafn(dble(n)/2.0D0) - -C return här om detta var en vanlig QCD i region 3,4. *** HÄR *** - - QCD=f*AS**2 - call geof(h,ks,1,xgeof) - gravity=tfac(Ms,t,n)**2*cutfac**2*Abs(xgeof)**2* - $ 16*h*FF**2*shat**4/ - $ (MSAT**(TOTDIM-4+2)*MS**(2-(TOTDIM-4)))**2 - IF ( gravity.LT.(QCD + gravity)*PYR(0) ) RETURN - - - IGPROB=1 - - - RETURN - END - -C...GCOLFL -C...Rearranges the colour flow of a standard QCD event as if it was -C...mediated by a graviton. IF ITYP=0, there is no reconnection, if -C...ITYP=1(2) we assume t(u)-channel graviton else an s-channel graviton. - - SUBROUTINE GCOLFL(ITYP,IPU1,IPU2) - -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - INTEGER PYK -C...Commonblocks. - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) -C...GRAVEV should be set to 1 to mark the event as gravitational - DOUBLE PRECISION KKMASS,MSAT,PFACTOR,MS - INTEGER GRAVEV - COMMON/MASSES/KKMASS,MSAT,PFACTOR,MS,GRAVEV - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) - COMMON/PYINT1/MINT(400),VINT(400) - - IF ( ITYP.EQ.0.OR.N-IPU1.NE.3 ) RETURN - -C...GRAVEV is set to 1 to mark the event as gravitational - GRAVEV=1 - PARP(199)=1.0d0 -C PARP(199)=DBLE(GRAVEV) -C write (*,*) 'in GCOLFL, GRAVEV: ',GRAVEV,' PARP(199): ',PARP(199) - - IF ( ITYP.EQ.1 ) THEN -C... Same in and out. - IF ( PYK(IPU1,12).EQ.1.OR.PYK(IPU1,12).EQ.2 ) THEN - K(IPU1,4)=IPU1+2 - K(IPU1+2,4)=IPU1*10000 - ENDIF - IF ( PYK(IPU1,12).EQ.-1.OR.PYK(IPU1,12).EQ.2 ) THEN - K(IPU1,5)=IPU1+2 - K(IPU1+2,5)=IPU1*10000 - ENDIF - IF ( PYK(IPU2,12).EQ.1.OR.PYK(IPU2,12).EQ.2 ) THEN - K(IPU2,4)=IPU2+2 - K(IPU2+2,4)=IPU2*10000 - ENDIF - IF ( PYK(IPU2,12).EQ.-1.OR.PYK(IPU2,12).EQ.2 ) THEN - K(IPU2,5)=IPU2+2 - K(IPU2+2,5)=IPU2*10000 - ENDIF - ELSEIF ( ITYP.EQ.2 ) THEN -C...Same in and out. - IF ( PYK(IPU1,12).EQ.1.OR.PYK(IPU1,12).EQ.2 ) THEN - K(IPU1,4)=IPU2+2 - K(IPU2+2,4)=IPU1*10000 - ENDIF - IF ( PYK(IPU1,12).EQ.-1.OR.PYK(IPU1,12).EQ.2 ) THEN - K(IPU1,5)=IPU2+2 - K(IPU2+2,5)=IPU1*10000 - ENDIF - IF ( PYK(IPU2,12).EQ.1.OR.PYK(IPU2,12).EQ.2 ) THEN - K(IPU2,4)=IPU1+2 - K(IPU1+2,4)=IPU2*10000 - ENDIF - IF ( PYK(IPU2,12).EQ.-1.OR.PYK(IPU2,12).EQ.2 ) THEN - K(IPU2,5)=IPU1+2 - K(IPU1+2,5)=IPU2*10000 - ENDIF - ELSE -C...Annihilation. - IF ( PYK(IPU1,12).EQ.1.OR.PYK(IPU1,12).EQ.2 ) THEN - K(IPU1,4)=IPU2 - K(IPU2,5)=IPU1 - ENDIF - IF ( PYK(IPU1,12).EQ.-1.OR.PYK(IPU1,12).EQ.2 ) THEN - K(IPU1,5)=IPU2 - K(IPU2,4)=IPU1 - ENDIF - IF ( PYK(IPU1+2,12).EQ.1.OR.PYK(IPU1+2,12).EQ.2 ) THEN - K(IPU1+2,4)=(IPU2+2)*10000 - K(IPU2+2,5)=(IPU1+2)*10000 - ENDIF - IF ( PYK(IPU1+2,12).EQ.-1.OR.PYK(IPU1+2,12).EQ.2 ) THEN - K(IPU1+2,5)=(IPU2+2)*10000 - K(IPU2+2,4)=(IPU1+2)*10000 - ENDIF - - ENDIF - - RETURN - END -C********************************************************************* -C ...init_datapath -C SUBROUTINE init_datapath(a,s) -C IMPLICIT DOUBLE PRECISION(A-H, O-Z) -C IMPLICIT INTEGER(I-N) -C -C PARAMETER (NMAX=1000) -C character a*256,path*256 -C integer s, size -C common /eikfnblk/ x(NMAX,6),f(NMAX,6),size,path -C save eikfnblk -C size = s -C path = a - -C RETURN -C END - -C********************************************************************* -C... Geometric Amplitude GG&MS eq 5.4 - subroutine geof(h,ks,ip,xgeof) - - -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) - COMMON/PYINT1/MINT(400),VINT(400) - -C...Some parameters from CHARYBDIS commom block are needed - INTEGER MSSDEF,NBODY,IPRINT,MSSDEC - DOUBLE PRECISION MPLNCK,MINMSS,MAXMSS,INTMPL - LOGICAL TIMVAR,GTSCA,GRYBDY,KINCUT - COMMON /BHPARM/MPLNCK,MINMSS,MAXMSS,INTMPL,MSSDEF,NBODY,IPRINT, - & MSSDEC,TIMVAR,GTSCA,GRYBDY,KINCUT - DOUBLE PRECISION RHFACT,BHMASS,GENPOW,FACTOR - INTEGER TOTDIM - COMMON /BLACKH/ RHFACT,BHMASS,GENPOW,FACTOR,TOTDIM - -C...KKMASS to be used for KK-mass maximum integration, and MSAT as Atwoods Ms - DOUBLE PRECISION KKMASS,MSAT,PFACTOR,MS - INTEGER GRAVEV - COMMON/MASSES/KKMASS,MSAT,PFACTOR,MS,GRAVEV -C...Parameters used during the run, to be printed in the data files, therefore needed by WRIPAR -C DOUBLE PRECISION PTCL,THRMIN,PSCUT,ETCOND,UBMUL,WTPA -C INTEGER NEVE,NOINT,NOQCD,NCUT,TUNEA -C... For chosing clustering algorithm -C character CLALG*6 -C COMMON/RUNPAR/PTCL,THRMIN,PSCUT,ETCOND,UBMUL,WTPA, -C $ NEVE,NCUT,TUNEA,NOINT,NOQCD,CLALG -C.. Complex parameters needed to take eikonalization into account - DOUBLE COMPLEX X,xgeof - DOUBLE PRECISION ks,k -C SAVE /RUNPAR/,/MASSES/,/BLACKH/,/BHPARM/ - SAVE /MASSES/,/BLACKH/,/BHPARM/ - - xgeof = (0.0d0,0.0d0) - PI=3.141593D0 - n=TOTDIM-4 - if(ip.eq.0) then -C... Get shat from Pythia - SHAT=PARI(14) -C... Get z=cos(theta) from Pythia - Z=PARI(41) -C... Get alpha_s - AS=PYALPS(PARI(22)) - else -C... Get shat from Pythia - SHAT=VINT(44) -C... Get z=cos(theta) from Pythia - Z=VINT(23) -C... Get alpha_s - AS=PYALPS(VINT(52)) - endif - t=-(shat*(1.0d0-z)/2.0d0) - k=sqrt(-t) - -C... Factor X, cf eq 5.5 in MS GG -C... t and u-channels are the same, as we effectively have a -C... \phi^4 -interaction. We treat s-channel similarly to assure -C... unitarization - X=1.0D0/(32.0D0*PI**2)*CMPLX(LOG(4.0d0*Ms**2/shat), PI) -C... Aborn is the result from Atwood multiplied with a factor from the -C... fact that we are using a Gaussian cutoff -C... The Gaussian cutoff gives this much more in the Amplitude: -C...ERROR cutfac=Gammafn((2.0D0 + n)/2.0D0) - cutfac=Gammafn(dble(n)/2.0D0) - -C... Gravity is universally attractive, and for small arguments, -C.... there is no difference in sign between the channels, -C... GG and MS has calculated the Born amplitude to be negative -C... (eq 4.3) this is also the right sign to get an attractive -C... potential (eq 4.5) - -C... Factor F in Atwoods cross section - IF ((TOTDIM-4).LT.2) THEN - RETURN - ELSEIF ((TOTDIM-4).EQ.2) THEN -C... I now divide Atwoods F (FF) by 2 to make Atwoods results better Agree with Giudice -C... Starting from Hans (hep-ph/9911350) article I get an expression for D(s) -C... (equation 4 in hep-ph/9911231) wich is only half as big as that given by Atwood. -C... This factor 2 I now absorb into F - FF=LOG(shat/MSAT**2) - ELSEIF ((TOTDIM-4).GT.2) THEN - FF=2.0D0/(TOTDIM-4-2) - ENDIF - -C... Make Aborn depend on s,t,u to ensure continuous transition -C... From 060727:2, the (spin-dependent) Amplitude from Atwood using -C... AtwoodMpCutRescale.nb for conversion factors - AAtw=-((2**(5.0D0 - n)*FF*Sqrt(h)*Sqrt(ks)*Ms**(-2 + n)* - $ MPLNCK**(-2.0D0-n)*Pi**(1.0D0 - n/2.0D0)*shat**2)/ - $ Gammafn(n/2.0D0)) -C... With t-dependent, gaussian cutoff this gives - Aborn=tfac(Ms,t,n)*cutfac*AAtw -C... Unitarization of cross section, cf eq 5.5 in MS GG - xgeof=1/(1-Aborn*X) - - return - end -C********************************************************************* -C... Multiplicative factor when t-dependence is taken into account in -C... Born amplitude Aborn(Ms,t)/Aborn(Ms) - DOUBLE PRECISION function tfac(Ms,t,n) - - -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - DOUBLE PRECISION k, Ms , Igamma -C... with A(t,Ms)/A(Ms) in AtwoodMpCutRescale.nb - - k=sqrt(-t) - tfac=(exp(k**2/Ms**2)*k**(-2 + n)*Ms**(2 - n)* - $ Gammafn(n/2.0D0)*Igamma(1.0D0 - n/2.0D0,k**2/Ms**2))/ - $ Gammafn(-1.0D0 + n/2.0D0) - - return - end -C********************************************************************* -C... Function to tell which region 1,2,3,4 5 cf. GG&MS a -C... gravitational scattering was in - INTEGER function IREG() - - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - DOUBLE COMPLEX X,abx - -C... Need MPLNCK -C... To be used with CHARYBDIS - INTEGER MSSDEF,NBODY,IPRINT,MSSDEC - DOUBLE PRECISION MPLNCK,MINMSS,MAXMSS,INTMPL - LOGICAL TIMVAR,GTSCA,GRYBDY,KINCUT - COMMON /BHPARM/MPLNCK,MINMSS,MAXMSS,INTMPL,MSSDEF,NBODY,IPRINT, - & MSSDEC,TIMVAR,GTSCA,GRYBDY,KINCUT - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) - -C...KKMASS to be used for KK-mass maximum integration, and MSAT as Atwoods Ms - DOUBLE PRECISION KKMASS,MSAT,PFACTOR,MS - INTEGER GRAVEV - COMMON/MASSES/KKMASS,MSAT,PFACTOR,MS,GRAVEV - DOUBLE PRECISION RHFACT,BHMASS,GENPOW,FACTOR - INTEGER TOTDIM - COMMON /BLACKH/ RHFACT,BHMASS,GENPOW,FACTOR,TOTDIM - SAVE /MASSES/,/BLACKH/,/BHPARM/ - - PI=3.141593D0 - S=PARI(14) - n=TOTDIM-4 - - IREG=0 - -C... Region 1 or 2 - if(s.gt.Ms**2) then -C... scd from GS3.nb - scd=(MPLNCK**(2.0D0 + n)*Pi**(n/2.0D0))/ - $ (Ms**n*Gammafn(dble(n)/2.0D0)) - if(s.gt.scd) then - IREG=1 - else - IREG=2 - endif -C... Region 3 or 4 or 5 - else - X=1.0D0/(32.0D0*PI**2)*CMPLX(LOG(4.0d0*Ms**2/s), PI) - call getabx(abx) -C... Region 3 - if (Abs(abx).le.1) then - IREG=3 -C... Region 4 or 5 - elseif(abs(Imag(X)).gt.abs(dble(X))) then - IREG=4 - else - IREG=5 - endif - endif - - return - end - -C********************************************************************* -C... Geometric Amplitude GG&MS eq 5.4 - subroutine getabx(abx) - - -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) - COMMON/PYINT1/MINT(400),VINT(400) - -C...Some parameters from CHARYBDIS commom block are needed - INTEGER MSSDEF,NBODY,IPRINT,MSSDEC - DOUBLE PRECISION MPLNCK,MINMSS,MAXMSS,INTMPL - LOGICAL TIMVAR,GTSCA,GRYBDY,KINCUT - COMMON /BHPARM/MPLNCK,MINMSS,MAXMSS,INTMPL,MSSDEF,NBODY,IPRINT, - & MSSDEC,TIMVAR,GTSCA,GRYBDY,KINCUT - DOUBLE PRECISION RHFACT,BHMASS,GENPOW,FACTOR - INTEGER TOTDIM - COMMON /BLACKH/ RHFACT,BHMASS,GENPOW,FACTOR,TOTDIM - -C...KKMASS to be used for KK-mass maximum integration, and MSAT as Atwoods Ms - DOUBLE PRECISION KKMASS,MSAT,PFACTOR,MS - INTEGER GRAVEV - COMMON/MASSES/KKMASS,MSAT,PFACTOR,MS,GRAVEV -C...Parameters used during the run, to be printed in the data files, therefore needed by WRIPAR -C DOUBLE PRECISION PTCL,THRMIN,PSCUT,ETCOND,UBMUL,WTPA -C INTEGER NEVE,NOINT,NOQCD,NCUT,TUNEA -C.. Complex parameters needed to take eikonalization into account - DOUBLE COMPLEX X,abx - DOUBLE PRECISION ks,k - SAVE /MASSES/,/BLACKH/,/BHPARM/ - -C...Inline function definitions - include 'inlines.f' - - abx = (0.0d0,0.0d0) - PI=3.141593D0 - n=TOTDIM-4 -C... Get shat from Pythia - SHAT=PARI(14) -C... Get z=cos(theta) from Pythia - Z=PARI(41) -C... Get alpha_s - t=-(shat*(1.0d0-z)/2.0d0) - k=sqrt(-t) - - isub=MSTI(1) - - IF ( ISUB.EQ.12 ) THEN -C... q + qbar -> q' + qbar' - h=hqapb(z) - ks=1/36.0D0 - ELSEIF ( ISUB.EQ.11 ) THEN - IF((IFI1.EQ.IFI2).AND.(IFO1.EQ.IFO2).AND.(IFO1.EQ.IFI1))THEN -C... If q + q -> q + q (all are equal) - h=hqqqq(z) - ks=1/72.0D0 - ELSEIF((IFI1.EQ.-IFI2).AND.(IFO1.EQ.-IFO2).AND. - & (ABS(IFI1).EQ.ABS(IFO1))) THEN -C... If q + qbar -> q + qbar - h=hqaqa(z) - ks=1/36.0D0 - ELSE -C... (q + q' -> q + q') = (q + qbar' -> q + qbar') - h=hqpqp(z) - ks=1/36.0D0 - ENDIF - ELSEIF ( ISUB.EQ.28 ) THEN -C... q + g -> q + g -C... qbar + g -> qbar + g - h=hqgqg(z) - ks=1/96.0D0 - ELSEIF ( (ISUB.EQ.53).OR.(ISUB.EQ.13) ) THEN -C... g + g -> q + qbar -C... or q + qbar -> g + g - h=hggqa(z) - ks=1/256.0D0 - ELSEIF ( ISUB.EQ.68 ) THEN -C... g + g -> g + g - h=hgggg(z) - ks=1/512.0D0 - ENDIF - -C... Factor X, cf eq 5.5 in MS GG -C... t and u-channels are the same, as we effectively have a -C... \phi^4 -interaction. We treat s-channel similarly to assure -C... unitarization - X=1.0D0/(32.0D0*PI**2)*CMPLX(LOG(4.0d0*Ms**2/shat), PI) -C... Aborn is the result from Atwood multiplied with a factor from the -C... fact that we are using a Gaussian cutoff -C... The Gaussian cutoff gives this much more in the Amplitude: -C...ERROR cutfac=Gammafn((2.0D0 + n)/2.0D0) - cutfac=Gammafn(dble(n)/2.0D0) - -C... Gravity is universally attractive, and for small arguments, -C.... there is no difference in sign between the channels, -C... GG and MS has calculated the Born amplitude to be negative -C... (eq 4.3) this is also the right sign to get an attractive -C... potential (eq 4.5) - -C... Factor F in Atwoods cross section - IF ((TOTDIM-4).LT.2) THEN - RETURN - ELSEIF ((TOTDIM-4).EQ.2) THEN -C... I now divide Atwoods F (FF) by 2 to make Atwoods results better Agree with Giudice -C... Starting from Hans (hep-ph/9911350) article I get an expression for D(s) -C... (equation 4 in hep-ph/9911231) wich is only half as big as that given by Atwood. -C... This factor 2 I now absorb into F - FF=LOG(shat/MSAT**2) - ELSEIF ((TOTDIM-4).GT.2) THEN - FF=2.0D0/(TOTDIM-4-2) - ENDIF - -C... Make Aborn depend on s,t,u to ensure continuous transition -C... From 060727:2, the (spin-dependent) Amplitude from Atwood using -C... AtwoodMpCutRescale.nb for conversion factors - AAtw=-((2**(5.0D0 - n)*FF*Sqrt(h)*Sqrt(ks)*Ms**(-2 + n)* - $ MPLNCK**(-2.0D0-n)*Pi**(1.0D0 - n/2.0D0)*shat**2)/ - $ Gammafn(n/2.0D0)) -C... With t-dependent, gaussian cutoff this gives - Aborn=tfac(Ms,t,n)*cutfac*AAtw -C... Unitarization of cross section, cf eq 5.5 in MS GG - abx=Aborn*X - - return - end diff --git a/Generators/PythiaExo_i/src/PythiaGravADD/inlines.f b/Generators/PythiaExo_i/src/PythiaGravADD/inlines.f deleted file mode 100644 index 551e30de1fa7d3c93cede83fa42d7736244e0b82..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/PythiaGravADD/inlines.f +++ /dev/null @@ -1,27 +0,0 @@ -C...Inline function definitions -C write(*,*) 'in inlines' - Gfn(s,t)=(s**4+10.0d0*s**3*t+42.0d0*s**2*t**2+ - $ 64.0d0*s*t**3+32.0d0*t**4)/4.0d0 - hqapb(z)= (9.0D0/256)*(1 - 3*z**2 + 4*z**4) - hqpqp(z)=(9.0D0/2048)*(149 + 232*z+ 114*z**2+ 16*z**3 + z**4) - hqqqq(z)=(3.0D0/1024)*(547 + 306*z**2+ 3*z**4) - hqaqa(z)=(3.0D0/2048)*(443 + 692*z+ 354*z**2+116*z**3 + 107*z**4) - hggqa(z)=(3.0D0/8)*(1 - z**4) - hqgqg(z)=(3.0D0/8)*(1 + z)*(5 + 2*z + z**2) - hgggg(z)=(9.0D0/4)*(3 + z**2)**2 - gqapb(z)=0.0D0 - gqpqp(z)=0.0D0 -C... Changed sign of the gqqqq and gqaqa-terms to agree with Giudice - gqqqq(z)=-(4.0D0*(5-3*z**2)/(1-z**2)) - gqaqa(z)=-((1.0D0/4)*(11- 14*z-z**2)*(1+z**2)**2/(1-z)) - gggqa(z)=4.0D0*(1+z**2) - gqgqg(z)=-(2.0D0*(5+2*z+z**2)) -C... Multiply with factor 2 to agree with Giudice - ggggg(z)=-(2.0D0*120.0D0*(3+z**2)) - fqapb(z)=8.0D0*(1+z**2) - fqpqp(z)=16.0D0*(5+2*z+z**2)/(1-z)**2 - fqqqq(z)=(32.0D0/3)*(z**2+11)*(3*z**2+1)/(1-z**2)**2 - fqaqa(z)=(8.0D0/3)*(7-4*z+z**2)*(5+4*z+3*z**2)/(1-z**2)**2 - fggqa(z)=(16.0D0/3)*(9*z**2+7)*(1+z**2)/(1-z**2) - fqgqg(z)=(32.0D0/3)*(5+2*z+z**2)*(11+5*z+2*z**2)/(1+z)/(1-z**2) - fgggg(z)=288.0D0*(3+z**2)**3/(1-z**2)**2 diff --git a/Generators/PythiaExo_i/src/PythiaGravADD/pyeffevt.F b/Generators/PythiaExo_i/src/PythiaGravADD/pyeffevt.F deleted file mode 100644 index 187dcc550871cbeb531f98abf9dbb90b52277bda..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/PythiaGravADD/pyeffevt.F +++ /dev/null @@ -1,421 +0,0 @@ - -C********************************************************************* - -C...PYEVNW -C...Administers the generation of a high-pT event via calls to -C...a number of subroutines for the new multiple interactions and -C...showering framework. - - SUBROUTINE PYEFFEVT - -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - INTEGER PYCOMP -C...Commonblocks. - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) - COMMON/PYCTAG/NCT,MCT(4000,2) - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) - COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5) - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) - COMMON/PYINT1/MINT(400),VINT(400) - COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2) - COMMON/PYINT4/MWID(500),WIDS(500,5) - COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3) - COMMON/PYINTM/KFIVAL(2,3),NMI(2),IMI(2,800,2),NVC(2,-6:6), - & XASSOC(2,-6:6,240),XPSVC(-6:6,-1:240),PVCTOT(2,-1:1), - & XMI(2,240),PT2MI(240),IMISEP(0:240) - SAVE /PYJETS/,/PYCTAG/,/PYDAT1/,/PYDAT2/,/PYDAT3/, - & /PYPARS/,/PYINT1/,/PYINT2/,/PYINT4/,/PYINT5/,/PYINTM/ -C...Local arrays. - DIMENSION VTX(4) - -C...Stop if no subprocesses on. - IF(MINT(121).EQ.1.AND.MSTI(53).EQ.1) THEN - WRITE(MSTU(11),5100) - STOP - ENDIF - -C...Initial values for some counters. - N=0 - MINT(5)=MINT(5)+1 - MINT(7)=0 - MINT(8)=0 - MINT(30)=0 - MINT(83)=0 - MINT(84)=MSTP(126) - MSTU(24)=0 - MSTU70=0 - MSTJ14=MSTJ(14) -C...Normally, use K(I,4:5) colour info rather than /PYCT/. - NCT=0 - MINT(33)=0 - -C...Let called routines know call is from PYEVNW (not PYEVNT). - MINT(35)=3 - -C...If variable energies: redo incoming kinematics and cross-section. - MSTI(61)=0 - IF(MSTP(171).EQ.1) THEN - CALL PYINKI(1) - IF(MSTI(61).EQ.1) THEN - MINT(5)=MINT(5)-1 - RETURN - ENDIF - IF(MINT(121).GT.1) CALL PYSAVE(3,1) - CALL PYXTOT - ENDIF - -C...Loop over number of pileup events; check space left. - IF(MSTP(131).LE.0) THEN - NPILE=1 - ELSE - CALL PYPILE(2) - NPILE=MINT(81) - ENDIF - DO 300 IPILE=1,NPILE - IF(MINT(84)+100.GE.MSTU(4)) THEN - CALL PYERRM(11, - & '(PYEVNW:) no more space in PYJETS for pileup events') - IF(MSTU(21).GE.1) GOTO 310 - ENDIF - MINT(82)=IPILE - -C...Generate variables of hard scattering. - MINT(51)=0 - MSTI(52)=0 - 100 CONTINUE - IF(MINT(51).NE.0.OR.MSTU(24).NE.0) MSTI(52)=MSTI(52)+1 - MINT(31)=0 - MINT(39)=0 - MINT(36)=0 - MINT(51)=0 - MINT(57)=0 - CALL PYRAND - IF(MSTI(61).EQ.1) THEN - MINT(5)=MINT(5)-1 - RETURN - ENDIF - IF(MINT(51).EQ.2) RETURN - ISUB=MINT(1) - IF(MSTP(111).EQ.-1) GOTO 290 - -C...Loopback point if PYPREP fails, especially for junction topologies. - NPREP=0 - MNT31S=MINT(31) - 110 NPREP=NPREP+1 - MINT(31)=MNT31S - - IF((ISUB.LE.90.OR.ISUB.GE.95).AND.ISUB.NE.99) THEN -C...Hard scattering (including low-pT): -C...reconstruct kinematics and colour flow of hard scattering. - MINT31=MINT(31) - 120 MINT(31)=MINT31 - MINT(51)=0 - CALL PYSCAT - IF(MINT(51).EQ.1) GOTO 100 - NPARTD=N - NFIN=N - -CLL...Change colour flow if this is deemed to be a gravitational scattering. - IPU1=MINT(84)+1 - IPU2=MINT(84)+2 - CALL GCOLFX(MINT(1),IPU1,IPU2) - -C...Intertwined initial state showers and multiple interactions. -C...Force no IS showers if no pdfs defined: MSTP(61) -> 0 for PYEVOL. -C...Force no MI if cross section not known: MSTP(81) -> 0 for PYEVOL. - MSTP61=MSTP(61) - IF (MINT(47).LT.2) MSTP(61)=0 - MSTP81=MSTP(81) - IF (MINT(50).EQ.0) MSTP(81)=0 - IF ((MSTP(61).GE.1.OR.MOD(MSTP(81),10).GE.0).AND. - & MINT(111).NE.12) THEN -C...Absolute max pT2 scale for evolution: phase space limit. - PT2MXS=0.25D0*VINT(2) -C...Check if more constrained by ISR and MI max scales: - PT2MXS=MIN(PT2MXS,MAX(VINT(56),VINT(62))) -C...Loopback point in case of failure in evolution. - LOOP=0 - 130 LOOP=LOOP+1 - MINT(51)=0 - IF(LOOP.GT.100) THEN - CALL PYERRM(9,'(PYEVNW:) failed to evolve shower or ' - & //'multiple interactions.') - MINT(51)=1 - RETURN - ENDIF - -C...Pre-initialization of interleaved MI/ISR/JI evolution, only done -C...once per event. (E.g. compute constants and save variables to be -C...restored later in case of failure.) - IF (LOOP.EQ.1) CALL PYEVOL(-1,DUMMY1,DUMMY2) - -C...Initialize interleaved MI/ISR/JI evolution. -C...PT2MAX: absolute upper limit for evolution - Initialization may -C... return a PT2MAX which is lower than this. -C...PT2MIN: absolute lower limit for evolution - Initialization may -C... return a PT2MIN which is larger than this (e.g. Lambda_QCD). - PT2MAX=PT2MXS - PT2MIN=0D0 - CALL PYEVOL(0,PT2MAX,PT2MIN) - IF (MINT(51).EQ.1) GOTO 130 - -C...Perform interleaved MI/ISR/JI evolution from PT2MAX to PT2MIN. -C...In principle factorized, so can be stopped and restarted. -C...Example: stop/start at pT=10 GeV. (Commented out for now.) -C PT2MED=MAX(10D0**2,PT2MIN) -C CALL PYEVOL(1,PT2MAX,PT2MED) -C IF (MINT(51).EQ.1) GOTO 160 -C PT2MAX=PT2MED - CALL PYEVOL(1,PT2MAX,PT2MIN) - IF (MINT(51).EQ.1) GOTO 130 - -C...Finalize interleaved MI/ISR/JI evolution. - CALL PYEVOL(2,PT2MAX,PT2MIN) - IF (MINT(51).EQ.1) GOTO 130 - - ENDIF - MSTP(61)=MSTP61 - MSTP(81)=MSTP81 - IF(MINT(51).EQ.1) GOTO 100 -C...(MINT(52) is actually obsolete in this routine. Set anyway -C...to ensure PYDOCU stable.) - MINT(52)=N - MINT(53)=N - -C...Beam remnants - new scheme. -C 140 IF(MINT(50).EQ.1) THEN - IF(MINT(50).EQ.1) THEN - IF (ISUB.EQ.95) MINT(31)=1 - -C...Beam remnant flavour and colour assignments - new scheme. - CALL PYMIHK - IF(MINT(51).EQ.1.AND.MINT(57).GE.1.AND.MINT(57).LE.5) - & GOTO 120 - IF(MINT(51).EQ.1) GOTO 100 - -C...Primordial kT and beam remnant momentum sharing - new scheme. - CALL PYMIRM - IF(MINT(51).EQ.1.AND.MINT(57).GE.1.AND.MINT(57).LE.5) - & GOTO 120 - IF(MINT(51).EQ.1) GOTO 100 - IF (ISUB.EQ.95) MINT(31)=0 - ELSEIF(MINT(111).NE.12) THEN -C...Hadron remnants and primordial kT - old model. -C...Happens e.g. for direct photon on one side. - IPU1=IMI(1,1,1) - IPU2=IMI(2,1,1) - CALL PYREMN(IPU1,IPU2) - IF(MINT(51).EQ.1.AND.MINT(57).GE.1.AND.MINT(57).LE.5) GOTO - & 110 - IF(MINT(51).EQ.1) GOTO 100 -C...PYREMN does not set colour tags for BRs, so needs to be done now. - DO 160 I=MINT(53)+1,N - DO 150 KCS=4,5 - IDA=MOD(K(I,KCS),MSTU(5)) - IF (IDA.NE.0) THEN - MCT(I,KCS-3)=MCT(IDA,6-KCS) - ELSE - MCT(I,KCS-3)=0 - ENDIF - 150 CONTINUE - 160 CONTINUE -C...Instruct PYPREP to use colour tags - MINT(33)=1 -C...Now delete any colour processing information if set (since partons -C...otherwise not FS showered!) - DO 170 I=MINT(84)+1,N - IF (I.LE.N) THEN - K(I,4)=MOD(K(I,4),MSTU(5)**2) - K(I,5)=MOD(K(I,5),MSTU(5)**2) - ENDIF - 170 CONTINUE - ENDIF - -C...Showering of final state partons (optional). - ALAMSV=PARJ(81) - PARJ(81)=PARP(72) - IF(MSTP(71).GE.1.AND.ISET(ISUB).GE.1.AND.ISET(ISUB).LE.10) - & THEN - QMAX=VINT(55) - IF(ISET(ISUB).EQ.2) QMAX=SQRT(PARP(71))*VINT(55) - CALL PYPTFS(1,QMAX,0D0,PTGEN) - ENDIF - PARJ(81)=ALAMSV - -C...Decay of final state resonances. - MINT(32)=0 - IF(MSTP(41).GE.1.AND.ISET(ISUB).LE.10) THEN - CALL PYRESD(0) - IF(MINT(51).NE.0) GOTO 100 - -C...External processes: handle successive showers. - ELSEIF(ISET(ISUB).EQ.11) THEN - CALL PYADSH(NFIN) - ENDIF - IF(MINT(51).EQ.1) GOTO 100 - - ELSEIF(ISUB.NE.99) THEN -C...Diffractive and elastic scattering. - CALL PYDIFF - - ELSE -C...DIS scattering (photon flux external). - CALL PYDISG - IF(MINT(51).EQ.1) GOTO 100 - ENDIF - -C...Check that no odd resonance left undecayed. - MINT(54)=N - IF(MSTP(111).GE.1) THEN - NFIX=N - DO 180 I=MINT(84)+1,NFIX - IF(K(I,1).GE.1.AND.K(I,1).LE.10.AND.K(I,2).NE.21.AND. - & K(I,2).NE.22) THEN - KCA=PYCOMP(K(I,2)) - IF(MWID(KCA).NE.0.AND.MDCY(KCA,1).GE.1) THEN - CALL PYRESD(I) - IF(MINT(51).EQ.1) GOTO 100 - ENDIF - ENDIF - 180 CONTINUE - ENDIF - -C...Boost hadronic subsystem to overall rest frame. -C..(Only relevant when photon inside lepton beam.) - IF(MINT(141).NE.0.OR.MINT(142).NE.0) CALL PYGAGA(4,WTGAGA) - -C...Recalculate energies from momenta and masses (if desired). - IF(MSTP(113).GE.1) THEN - DO 190 I=MINT(83)+1,N - IF(K(I,1).GT.0.AND.K(I,1).LE.10) P(I,4)=SQRT(P(I,1)**2+ - & P(I,2)**2+P(I,3)**2+P(I,5)**2) - 190 CONTINUE - NRECAL=N - ENDIF - -C...Colour reconnection before string formation - CALL PYFSCR(MINT(84)+1) - -C...Rearrange partons along strings, check invariant mass cuts. - MSTU(28)=0 - IF(MSTP(111).LE.0) MSTJ(14)=-1 - CALL PYPREP(MINT(84)+1) - MSTJ(14)=MSTJ14 - IF(MINT(51).EQ.1.AND.MSTU(24).EQ.1) THEN - MSTU(24)=0 - GOTO 100 - ENDIF - IF(MINT(51).EQ.1) GOTO 100 - IF(MSTP(112).EQ.1.AND.MSTU(28).EQ.3) GOTO 100 - IF(MSTP(125).EQ.0.OR.MSTP(125).EQ.1) THEN - DO 220 I=MINT(84)+1,N - IF(K(I,2).EQ.94) THEN - DO 210 I1=I+1,MIN(N,I+10) - IF(K(I1,3).EQ.I) THEN - K(I1,3)=MOD(K(I1,4)/MSTU(5),MSTU(5)) - IF(K(I1,3).EQ.0) THEN - DO 200 II=MINT(84)+1,I-1 - IF(K(II,2).EQ.K(I1,2)) THEN - IF(MOD(K(II,4),MSTU(5)).EQ.I1.OR. - & MOD(K(II,5),MSTU(5)).EQ.I1) K(I1,3)=II - ENDIF - 200 CONTINUE - IF(K(I+1,3).EQ.0) K(I+1,3)=K(I,3) - ENDIF - ENDIF - 210 CONTINUE - ENDIF - 220 CONTINUE - CALL PYEDIT(12) - CALL PYEDIT(14) - IF(MSTP(125).EQ.0) CALL PYEDIT(15) - IF(MSTP(125).EQ.0) MINT(4)=0 - DO 240 I=MINT(83)+1,N - IF(K(I,1).EQ.11.AND.K(I,4).EQ.0.AND.K(I,5).EQ.0) THEN - DO 230 I1=I+1,N - IF(K(I1,3).EQ.I.AND.K(I,4).EQ.0) K(I,4)=I1 - IF(K(I1,3).EQ.I) K(I,5)=I1 - 230 CONTINUE - ENDIF - 240 CONTINUE - ENDIF - -C...Introduce separators between sections in PYLIST event listing. - IF(IPILE.EQ.1.AND.MSTP(125).LE.0) THEN - MSTU70=1 - MSTU(71)=N - ELSEIF(IPILE.EQ.1) THEN - MSTU70=3 - MSTU(71)=2 - MSTU(72)=MINT(4) - MSTU(73)=N - ENDIF - -C...Go back to lab frame (needed for vertices, also in fragmentation). - CALL PYFRAM(1) - -C...Set nonvanishing production vertex (optional). - IF(MSTP(151).EQ.1) THEN - DO 250 J=1,4 - VTX(J)=PARP(150+J)*SQRT((-2D0)*LOG(MAX(1D-10,PYR(0))))* - & SIN(PARU(2)*PYR(0)) - 250 CONTINUE - DO 270 I=MINT(83)+1,N - DO 260 J=1,4 - V(I,J)=V(I,J)+VTX(J) - 260 CONTINUE - 270 CONTINUE - ENDIF - -C...Perform hadronization (if desired). - IF(MSTP(111).GE.1) THEN - CALL PYEXEC - IF(MSTU(24).NE.0) GOTO 100 - ENDIF - IF(MSTP(113).GE.1) THEN - DO 280 I=NRECAL,N - IF(P(I,5).GT.0D0) P(I,4)=SQRT(P(I,1)**2+ - & P(I,2)**2+P(I,3)**2+P(I,5)**2) - 280 CONTINUE - ENDIF - IF(MSTP(125).EQ.0.OR.MSTP(125).EQ.1) CALL PYEDIT(14) - -C...Store event information and calculate Monte Carlo estimates of -C...subprocess cross-sections. - 290 IF(IPILE.EQ.1) CALL PYDOCU - -C...Set counters for current pileup event and loop to next one. - MSTI(41)=IPILE - IF(IPILE.GE.2.AND.IPILE.LE.10) MSTI(40+IPILE)=ISUB - IF(MSTU70.LT.10) THEN - MSTU70=MSTU70+1 - MSTU(70+MSTU70)=N - ENDIF - MINT(83)=N - MINT(84)=N+MSTP(126) - IF(IPILE.LT.NPILE) CALL PYFRAM(2) - 300 CONTINUE - -C...Generic information on pileup events. Reconstruct missing history. - IF(MSTP(131).EQ.1.AND.MSTP(133).GE.1) THEN - PARI(91)=VINT(132) - PARI(92)=VINT(133) - PARI(93)=VINT(134) - IF(MSTP(133).GE.2) PARI(93)=PARI(93)*XSEC(0,3)/VINT(131) - ENDIF - CALL PYEDIT(16) - -C...Transform to the desired coordinate frame. - 310 CALL PYFRAM(MSTP(124)) - MSTU(70)=MSTU70 - PARU(21)=VINT(1) - -C...Error messages - 5100 FORMAT(1X,'Error: no subprocess switched on.'/ - &1X,'Execution stopped.') - - RETURN - END diff --git a/Generators/PythiaExo_i/src/PythiaGravADD/pyeffevt.F.back b/Generators/PythiaExo_i/src/PythiaGravADD/pyeffevt.F.back deleted file mode 100644 index 4dbb07019cacf927578695b21c5ed4692a95e5a2..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/PythiaGravADD/pyeffevt.F.back +++ /dev/null @@ -1,371 +0,0 @@ - -C********************************************************************* - -C...PYEVNT -C...Administers the generation of a high-pT event via calls to -C...a number of subroutines. - - SUBROUTINE PYEFFEVT - -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - INTEGER PYK,PYCHGE,PYCOMP -C...Commonblocks. - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) - COMMON/PYCTAG/NCT,MCT(4000,2) - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) - COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5) - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) - COMMON/PYINT1/MINT(400),VINT(400) - COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2) - COMMON/PYINT4/MWID(500),WIDS(500,5) - COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3) - SAVE /PYJETS/,/PYDAT1/,/PYCTAG/,/PYDAT2/,/PYDAT3/,/PYPARS/, - &/PYINT1/,/PYINT2/,/PYINT4/,/PYINT5/ -C...Local array. - DIMENSION VTX(4) - -C...Optionally let PYEVNW do the whole job. - IF(MSTP(81).GE.20) THEN - CALL PYEVNW - RETURN - ENDIF - -C...Stop if no subprocesses on. - IF(MINT(121).EQ.1.AND.MSTI(53).EQ.1) THEN - WRITE(MSTU(11),5100) - CALL PYSTOP(1) - ENDIF - -C...Initial values for some counters. - MSTU(1)=0 - MSTU(2)=0 - N=0 - MINT(5)=MINT(5)+1 - MINT(7)=0 - MINT(8)=0 - MINT(30)=0 - MINT(83)=0 - MINT(84)=MSTP(126) - MSTU(24)=0 - MSTU70=0 - MSTJ14=MSTJ(14) -C...Normally, use K(I,4:5) colour info rather than /PYCTAG/. - NCT=0 - MINT(33)=0 - -C...Let called routines know call is from PYEVNT (not PYEVNW). - MINT(35)=1 - IF (MSTP(81).GE.10) MINT(35)=2 - -C...If variable energies: redo incoming kinematics and cross-section. - MSTI(61)=0 - IF(MSTP(171).EQ.1) THEN - CALL PYINKI(1) - IF(MSTI(61).EQ.1) THEN - MINT(5)=MINT(5)-1 - RETURN - ENDIF - IF(MINT(121).GT.1) CALL PYSAVE(3,1) - CALL PYXTOT - ENDIF - -C...Loop over number of pileup events; check space left. - IF(MSTP(131).LE.0) THEN - NPILE=1 - ELSE - CALL PYPILE(2) - NPILE=MINT(81) - ENDIF - DO 270 IPILE=1,NPILE - IF(MINT(84)+100.GE.MSTU(4)) THEN - CALL PYERRM(11, - & '(PYEVNT:) no more space in PYJETS for pileup events') - IF(MSTU(21).GE.1) GOTO 280 - ENDIF - MINT(82)=IPILE - -C...Generate variables of hard scattering. - MINT(51)=0 - MSTI(52)=0 - 100 CONTINUE - IF(MINT(51).NE.0.OR.MSTU(24).NE.0) MSTI(52)=MSTI(52)+1 - MINT(31)=0 - MINT(39)=0 - MINT(51)=0 - MINT(57)=0 - CALL PYRAND - IF(MSTI(61).EQ.1) THEN - MINT(5)=MINT(5)-1 - RETURN - ENDIF - IF(MINT(51).EQ.2) RETURN - ISUB=MINT(1) - IF(MSTP(111).EQ.-1) GOTO 260 - -C...Loopback point if PYPREP fails, especially for junction topologies. - NPREP=0 - MNT31S=MINT(31) - 110 NPREP=NPREP+1 - MINT(31)=MNT31S - - IF((ISUB.LE.90.OR.ISUB.GE.95).AND.ISUB.NE.99) THEN -C...Hard scattering (including low-pT): -C...reconstruct kinematics and colour flow of hard scattering. - MINT31=MINT(31) - 120 MINT(31)=MINT31 - MINT(51)=0 - CALL PYSCAT - IF(MINT(51).EQ.1) GOTO 100 - IPU1=MINT(84)+1 - IPU2=MINT(84)+2 - IF(ISUB.EQ.95) GOTO 140 - -C...Reset statistics on activity in event. - DO 130 J=351,359 - MINT(J)=0 - VINT(J)=0D0 - 130 CONTINUE - -C...Begin addition by Leif -C...Change colour flow if this is deemed to be a gravitational scattering. -C write(*,*) 'callig GCOLFX' - CALL GCOLFX(MINT(1),IPU1,IPU2) -C...End addition by Leif - -C...Showering of initial state partons (optional). - NFIN=N - ALAMSV=PARJ(81) - PARJ(81)=PARP(72) - IF(MSTP(61).GE.1.AND.MINT(47).GE.2.AND.MINT(111).NE.12) - & CALL PYSSPA(IPU1,IPU2) - PARJ(81)=ALAMSV - IF(MINT(51).EQ.1) GOTO 100 - -C...Showering of final state partons (optional). - ALAMSV=PARJ(81) - PARJ(81)=PARP(72) - IF(MSTP(71).GE.1.AND.ISET(ISUB).GE.2.AND.ISET(ISUB).LE.10) - & THEN - IPU3=MINT(84)+3 - IPU4=MINT(84)+4 - IF(ISET(ISUB).EQ.5) IPU4=-3 - QMAX=VINT(55) - IF(ISET(ISUB).EQ.2) QMAX=SQRT(PARP(71))*VINT(55) - CALL PYSHOW(IPU3,IPU4,QMAX) - ELSEIF(ISET(ISUB).EQ.11) THEN - CALL PYADSH(NFIN) - ENDIF - PARJ(81)=ALAMSV - -C...Allow possibility for user to abort event generation. - IVETO=0 - IF(IPILE.EQ.1.AND.MSTP(143).EQ.1) CALL PYVETO(IVETO) - IF(IVETO.EQ.1) GOTO 100 - -C...Decay of final state resonances. - MINT(32)=0 - IF(MSTP(41).GE.1.AND.ISET(ISUB).LE.10) CALL PYRESD(0) - IF(MINT(51).EQ.1) GOTO 100 - MINT(52)=N - - -C...Multiple interactions - PYTHIA 6.3 intermediate style. - 140 IF(MSTP(81).GE.10.AND.MINT(50).EQ.1) THEN - IF(ISUB.EQ.95) MINT(31)=MINT(31)+1 - CALL PYMIGN(6) - IF(MINT(51).EQ.1) GOTO 100 - MINT(53)=N - -C...Beam remnant flavour and colour assignments - new scheme. - CALL PYMIHK - IF(MINT(51).EQ.1.AND.MINT(57).GE.1.AND.MINT(57).LE.5) - & GOTO 120 - IF(MINT(51).EQ.1) GOTO 100 - -C...Primordial kT and beam remnant momentum sharing - new scheme. - CALL PYMIRM - IF(MINT(51).EQ.1.AND.MINT(57).GE.1.AND.MINT(57).LE.5) - & GOTO 120 - IF(MINT(51).EQ.1) GOTO 100 - IF(ISUB.EQ.95) MINT(31)=MINT(31)-1 - -C...Multiple interactions - PYTHIA 6.2 style. - ELSEIF(MINT(111).NE.12) THEN - IF (MSTP(81).GE.1.AND.MINT(50).EQ.1.AND.ISUB.NE.95) THEN - CALL PYMULT(6) - MINT(53)=N - ENDIF - -C...Hadron remnants and primordial kT. - CALL PYREMN(IPU1,IPU2) - IF(MINT(51).EQ.1.AND.MINT(57).GE.1.AND.MINT(57).LE.5) GOTO - & 110 - IF(MINT(51).EQ.1) GOTO 100 - ENDIF - - ELSEIF(ISUB.NE.99) THEN -C...Diffractive and elastic scattering. - CALL PYDIFF - - ELSE -C...DIS scattering (photon flux external). - CALL PYDISG - IF(MINT(51).EQ.1) GOTO 100 - ENDIF - -C...Check that no odd resonance left undecayed. - MINT(54)=N - IF(MSTP(111).GE.1) THEN - NFIX=N - DO 150 I=MINT(84)+1,NFIX - IF(K(I,1).GE.1.AND.K(I,1).LE.10.AND.K(I,2).NE.21.AND. - & K(I,2).NE.22) THEN - KCA=PYCOMP(K(I,2)) - IF(MWID(KCA).NE.0.AND.MDCY(KCA,1).GE.1) THEN - CALL PYRESD(I) - IF(MINT(51).EQ.1) GOTO 100 - ENDIF - ENDIF - 150 CONTINUE - ENDIF - -C...Boost hadronic subsystem to overall rest frame. -C..(Only relevant when photon inside lepton beam.) - IF(MINT(141).NE.0.OR.MINT(142).NE.0) CALL PYGAGA(4,WTGAGA) - -C...Recalculate energies from momenta and masses (if desired). - IF(MSTP(113).GE.1) THEN - DO 160 I=MINT(83)+1,N - IF(K(I,1).GT.0.AND.K(I,1).LE.10) P(I,4)=SQRT(P(I,1)**2+ - & P(I,2)**2+P(I,3)**2+P(I,5)**2) - 160 CONTINUE - NRECAL=N - ENDIF - -C...Colour reconnection before string formation - IF (MSTP(95).GE.2) CALL PYFSCR(MINT(84)+1) - -C...Rearrange partons along strings, check invariant mass cuts. - MSTU(28)=0 - IF(MSTP(111).LE.0) MSTJ(14)=-1 - CALL PYPREP(MINT(84)+1) - MSTJ(14)=MSTJ14 - IF(MINT(51).EQ.1.AND.MSTU(24).EQ.1) THEN - MSTU(24)=0 - GOTO 100 - ENDIF - IF (MINT(51).EQ.1.AND.NPREP.LE.5) GOTO 110 - IF (MINT(51).EQ.1) GOTO 100 - IF(MSTP(112).EQ.1.AND.MSTU(28).EQ.3) GOTO 100 - IF(MSTP(125).EQ.0.OR.MSTP(125).EQ.1) THEN - DO 190 I=MINT(84)+1,N - IF(K(I,2).EQ.94) THEN - DO 180 I1=I+1,MIN(N,I+10) - IF(K(I1,3).EQ.I) THEN - K(I1,3)=MOD(K(I1,4)/MSTU(5),MSTU(5)) - IF(K(I1,3).EQ.0) THEN - DO 170 II=MINT(84)+1,I-1 - IF(K(II,2).EQ.K(I1,2)) THEN - IF(MOD(K(II,4),MSTU(5)).EQ.I1.OR. - & MOD(K(II,5),MSTU(5)).EQ.I1) K(I1,3)=II - ENDIF - 170 CONTINUE - IF(K(I+1,3).EQ.0) K(I+1,3)=K(I,3) - ENDIF - ENDIF - 180 CONTINUE - ENDIF - 190 CONTINUE - CALL PYEDIT(12) - CALL PYEDIT(14) - IF(MSTP(125).EQ.0) CALL PYEDIT(15) - IF(MSTP(125).EQ.0) MINT(4)=0 - DO 210 I=MINT(83)+1,N - IF(K(I,1).EQ.11.AND.K(I,4).EQ.0.AND.K(I,5).EQ.0) THEN - DO 200 I1=I+1,N - IF(K(I1,3).EQ.I.AND.K(I,4).EQ.0) K(I,4)=I1 - IF(K(I1,3).EQ.I) K(I,5)=I1 - 200 CONTINUE - ENDIF - 210 CONTINUE - ENDIF - -C...Introduce separators between sections in PYLIST event listing. - IF(IPILE.EQ.1.AND.MSTP(125).LE.0) THEN - MSTU70=1 - MSTU(71)=N - ELSEIF(IPILE.EQ.1) THEN - MSTU70=3 - MSTU(71)=2 - MSTU(72)=MINT(4) - MSTU(73)=N - ENDIF - -C...Go back to lab frame (needed for vertices, also in fragmentation). - CALL PYFRAM(1) - -C...Set nonvanishing production vertex (optional). - IF(MSTP(151).EQ.1) THEN - DO 220 J=1,4 - VTX(J)=PARP(150+J)*SQRT(-2D0*LOG(MAX(1D-10,PYR(0))))* - & SIN(PARU(2)*PYR(0)) - 220 CONTINUE - DO 240 I=MINT(83)+1,N - DO 230 J=1,4 - V(I,J)=V(I,J)+VTX(J) - 230 CONTINUE - 240 CONTINUE - ENDIF - -C...Perform hadronization (if desired). - IF(MSTP(111).GE.1) THEN - CALL PYEXEC - IF(MSTU(24).NE.0) GOTO 100 - ENDIF - IF(MSTP(113).GE.1) THEN - DO 250 I=NRECAL,N - IF(P(I,5).GT.0D0) P(I,4)=SQRT(P(I,1)**2+ - & P(I,2)**2+P(I,3)**2+P(I,5)**2) - 250 CONTINUE - ENDIF - IF(MSTP(125).EQ.0.OR.MSTP(125).EQ.1) CALL PYEDIT(14) - -C...Store event information and calculate Monte Carlo estimates of -C...subprocess cross-sections. - 260 IF(IPILE.EQ.1) CALL PYDOCU - -C...Set counters for current pileup event and loop to next one. - MSTI(41)=IPILE - IF(IPILE.GE.2.AND.IPILE.LE.10) MSTI(40+IPILE)=ISUB - IF(MSTU70.LT.10) THEN - MSTU70=MSTU70+1 - MSTU(70+MSTU70)=N - ENDIF - MINT(83)=N - MINT(84)=N+MSTP(126) - IF(IPILE.LT.NPILE) CALL PYFRAM(2) - 270 CONTINUE - -C...Generic information on pileup events. Reconstruct missing history. - IF(MSTP(131).EQ.1.AND.MSTP(133).GE.1) THEN - PARI(91)=VINT(132) - PARI(92)=VINT(133) - PARI(93)=VINT(134) - IF(MSTP(133).GE.2) PARI(93)=PARI(93)*XSEC(0,3)/VINT(131) - ENDIF - CALL PYEDIT(16) - -C...Transform to the desired coordinate frame. - 280 CALL PYFRAM(MSTP(124)) - MSTU(70)=MSTU70 - PARU(21)=VINT(1) - -C...Error messages - 5100 FORMAT(1X,'Error: no subprocess switched on.'/ - &1X,'Execution stopped.') - - RETURN - END diff --git a/Generators/PythiaExo_i/src/PythiaLLP.cxx b/Generators/PythiaExo_i/src/PythiaLLP.cxx deleted file mode 100644 index 6d43ce6bc8800dfd05b77ba9e30b264b9577be09..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/PythiaLLP.cxx +++ /dev/null @@ -1,1334 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// ------------------------------------------------------------- File: -// GeneratorModules/PythiaLLP.cxx Description: Allows the user -// to generate pythia events and store the result in the -// Transient Store. -// -// Adapted from Pythia.cxx by Daniel Ventura - -// Nov. 2009 included PYUPDA function -// -// AuthorList:U -// Ian Hinchliffe: Initial Code June: 2000 -// Modeled after the CDF code by Stan Thompson -// parsing added August 2000 -// more switches added Feb 2001 -// Les Houches external process interface added May 2002 -// added access to pyint1 common Sept 2002 -// Direct use of generator codes - replaced with gen. names (E.M.Lobodzinska, Dec 2008) -// added access to PYUPDA Nov. 2009 (Daniel Ventura) - -// Header for this module:- -#include "PythiaExo_i/PythiaLLP.h" -#include "TruthUtils/GeneratorName.h" - -// Framework Related Headers:- -// #include "GaudiKernel/MsgStream.h" - -// Other classes used by this class:- -#include "StoreGate/StoreGateSvc.h" - -#include "HepMC/IO_HEPEVT.h" -#include "HepMC/HEPEVT_Wrapper.h" - -#include "GeneratorUtils/StringParse.h" -#include <stdlib.h> -//------------------------------- -// calls to fortran routines -#include "CLHEP/Random/RandFlat.h" -#include "AthenaKernel/IAtRndmGenSvc.h" - -// Pointer On AtRndmGenSvc -IAtRndmGenSvc* PythiaLLP::p_AtRndmGenSvc = 0; -std::string PythiaLLP::pythia_stream = "PYTHIA_INIT"; -extern "C" double atl_pyr_( int* /*idummy*/ ) -{ - CLHEP::HepRandomEngine* engine = PythiaLLP::p_AtRndmGenSvc->GetEngine(PythiaLLP::pythia_stream); - return CLHEP::RandFlat::shoot(engine); -} - -extern "C" { - void initpyblock_(int*, const char*); - int openrandom_(int*, int*, const char*); - void pyinit_(const char*, - const char*, - const char*, - double* , - int, // lengths of character strings - int,// (should be value, not reference) - int - ); - void pyevnt_(); - void pyevnw_(); - void pystat_(int*); - void pylist_(int*); - void pyupda_(int*, int*); - void pyrget_(int*, int*); - void pyrset_(int*, int*); - int pycomp_(int*); -// void lunhep_(int*); // STDHEP routine for PYJETS->HEPEVT - void pyhepc_(int*); - int opdcay_(const char*, int*, char*, int, int); - void cldcay_(int*); - void rinpar_(); // comphep - void subnum_(); // comphep file - void rheader_(); // comphep initialization - void extproc_(int*); - void opensusyfile_(const char* ,int * , int); - void initpyupda_(const char* , int); -} - -// File scope declarations:- - -// set pointer to zero at start -Atlas_HEPEVT* PythiaLLP::s_atlas_HEPEVT = new Atlas_HEPEVT(); - -//-------------------------------------------------------------------------- -PythiaLLP::PythiaLLP(const std::string& name, - ISvcLocator* pSvcLocator): GenModule(name,pSvcLocator) -{ -//-------------------------------------------------------------------------- - pythia_stream = "PYTHIA_INIT"; - declareProperty("SetAtlasDefaults", m_AtlasDefaults = true ); - declareProperty("SusyInputFile", m_read_Filesusy = " "); - declareProperty("LLPpyupda", m_LLP_PYUPDA_file = ""); - declareProperty("PythiaCommand", m_pythiaCommandVector); - - m_firstlistevent = -1; - m_lastlistevent = -1; - - m_ExternalProcess = 0; - m_RndmFileLength=0; - m_RndmFileNumber=0; - m_RndmFirstEvent=1; - m_RndmMOVE=0; - m_RndmSkipEvents=0; - m_RndmSwitch=0; - m_eventlistlevel=0; - m_events = 0; - m_fortout=0; - m_initlistlevel=11; - m_msel=6; - m_randomseed=19780503; - m_win=14000.; - -} -//-------------------------------------------------------------------------- -PythiaLLP::~PythiaLLP(){ -//-------------------------------------------------------------------------- -} -//------------------------------------------------------------- -//-------------- -// Operations -- -//-------------- -Pydat1& PythiaLLP::pydat1() { - return m_pydat1; -} -Pydat2& PythiaLLP::pydat2() { - return m_pydat2; -} -Pydat3& PythiaLLP::pydat3() { - return m_pydat3; -} -Pysubs& PythiaLLP::pysubs() { - return m_pysubs; -} -Pypars& PythiaLLP::pypars() { - return m_pypars; -} -Pydatr& PythiaLLP::pydatr() { - return m_pydatr; -} -Pymssm& PythiaLLP::pymssm() { - return m_pymssm; -} -Pyint1& PythiaLLP::pyint1() { - return m_pyint1; -} -Pyint2& PythiaLLP::pyint2() { - return m_pyint2; -} -Pyint5& PythiaLLP::pyint5() { - return m_pyint5; -} -Pytcsm& PythiaLLP::pytcsm() { - return m_pytcsm; -} -AcerMC_acset& PythiaLLP::acermc_acset() { - return m_acermc_acset; -} - -//--------------------------------------------------------------------------- -StatusCode PythiaLLP::genInitialize() { - //--------------------------------------------------------------------------- - // Initialise the listing output, parameter and decay data input streams - // - // MsgStream log(messageService(), name()); - // log << MSG::INFO << " PYTHIA INITIALISING. \n" << endmsg; - if(msgLvl(MSG::INFO)){ - msg(MSG::INFO) << " PYTHIA INITIALISING. \n " << endmsg;} - - static const bool CREATEIFNOTTHERE(true); - StatusCode RndmStatus = service("AtRndmGenSvc", - PythiaLLP::p_AtRndmGenSvc, - CREATEIFNOTTHERE); - if (!RndmStatus.isSuccess() || 0 == PythiaLLP::p_AtRndmGenSvc) - { - // log << MSG::ERROR << " Could not initialize Random Number Service" << endmsg; - if(msgLvl(MSG::ERROR)){ - msg(MSG::ERROR) << " Could not initialize Random Number Service" << endmsg;} - return RndmStatus; - } - PythiaLLP::pythia_stream = "PYTHIA_INIT"; - - - // set up the input parameters to pyinit: these can be changed by the user - m_frame = "CMS "; - m_beam = "P "; - m_target = "P "; - m_win=14000.; - m_initlistlevel=11; - m_pystatlistlevel.push_back(1); - m_fortout=0; - - m_RndmFileName=" "; - m_RndmFileNumber=0; - m_RndmSwitch=0; - m_RndmFirstEvent=1; - m_RndmSkipEvents=0; - m_RndmMOVE=0; - m_RndmFileLength=0; - m_ExternalProcess = 0; - - // end of setup to pyinit - //now set defaults - m_randomseed=19780503; - this->pydatr().mrpy(1) = m_randomseed; // can be overwritten by user - // default process is ttbar - // these can be overwritten by user. - m_msel=6; - this->pysubs().msel() = m_msel; - - // Set the ATLAS defaults - if (m_AtlasDefaults) { - - this->pydat2().pmas(6,1) =175.; // top quark mass - this->pydat2().pmas(24,1) =80.42; // W mass - this->pydat2().pmas(24,2) =2.124; // W width - this->pydat2().pmas(23,1) =91.19; // Z0 mass - this->pydat2().pmas(23,2) =2.495; // Z0 width - this->pypars().mstp(128) =1; // fix junk output for documentary particles - this->pydat1().mstu(21) =1; // error handling switch - - this->pypars().mstp(81) =21; // ATLAS default for MI and also for the associated - // treatment of initial- and final-state showers - // and beam remnants. MI on; new model for PYEVNW. - - // Check the user request here and reset mstp(81) - for (unsigned int i = 0; i < m_pythiaCommandVector.size(); i++) { - StringParse mystring(m_pythiaCommandVector[i]); - string myblock=mystring.piece(1); - string myentry=mystring.piece(2); - int myint1=mystring.intpiece(3); - int myint2=mystring.intpiece(4); - if (myblock == "pypars"){ - if(myentry == "mstp" && myint1 == 81){ - this->pypars().mstp(myint1)=myint2; - } - } - } - - // The new pyevnw routine is used which accesses the new scenario with pT-ordered showers and - // interleaved multiple interactions - if (this->pypars().mstp(81) >= 20) { - // this->pypars().mstp(68)=1; Removed for 6.4xxx - this->pypars().mstp(70)=2; // (virtuality scale for ISR) - this->pypars().mstp(72)=0; - this->pypars().mstp(82)=4; // (mutiple interaction model) - this->pypars().mstp(84)=1; - this->pypars().mstp(85)=1; - this->pypars().mstp(86)=2; - this->pypars().mstp(87)=4; - this->pypars().mstp(88)=0; - this->pypars().mstp(89)=1; - this->pypars().mstp(90)=1; - this->pypars().mstp(95)=1; - this->pypars().parp(78)=0.2; - this->pypars().parp(80)=0.01; - this->pypars().parp(82)=1.9; // (cut off scale) - this->pypars().parp(83)=0.3; - this->pypars().parp(84)=0.5; // (matter distribution) - this->pypars().parp(89)=1800.; - this->pypars().parp(90)=0.22; // (cut off scale) - this->pydat1().mstj(11)=3; // (select peterson for charm fragmentation) - this->pydat1().mstj(22)=2; // (Make K_S, Lambda stable) - this->pydat1().parj(54)=-0.07; // (c hadronization) - this->pydat1().parj(55)=-0.006; // (b hadronization) - this->pydat1().parj(81)=0.14; - this->pypars().mstp(52)=2; // (needed for CTEQ6L) - this->pypars().mstp(54)=2; // (needed for CTEQ6L) - this->pypars().mstp(56)=2; // (needed for CTEQ6L) - this->pypars().mstp(51)=10042; // (needed for CTEQ6L) - this->pypars().mstp(53)=10042; // (needed for CTEQ6L) - this->pypars().mstp(55)=10042; // (needed for CTEQ6L) - } else { - this->pypars().mstp(81) = 1; - this->pypars().mstp(82) = 4; - this->pypars().mstp(86) = 2; - this->pypars().parp(67) = 3.; - this->pypars().parp(82) = 2.2; - this->pypars().parp(83) = 0.5; - this->pypars().parp(84) = 0.3; - this->pypars().parp(85) = 0.33; - this->pypars().parp(86) = 0.66; - this->pypars().parp(89) = 1800.; - this->pypars().parp(90) = 0.24; - this->pypars().mstp(52) = 2; - this->pypars().mstp(54) = 2; - this->pypars().mstp(56) = 2; - this->pypars().mstp(51) = 10042; - this->pypars().mstp(53) = 10042; - this->pypars().mstp(55) = 10042; - this->pydat1().mstj(11) = 3; - this->pydat1().mstj(22) = 2; - this->pydat1().parj(54) = -0.07; - this->pydat1().parj(55) = -0.006; - } - } - - - // - // Parse Commands and Set Values from Properties Service... - // - // for(CommandVector::iterator it = m_pythiaCommandVector.begin(); - // it != m_pythiaCommand.end(); it++ ) { - for (unsigned int i = 0; i < m_pythiaCommandVector.size(); i++) { - // log << MSG::INFO << " Command is: " << m_pythiaCommandVector[i] << endmsg; - if(msgLvl(MSG::INFO)){ - msg(MSG::INFO) << " Command is: " << m_pythiaCommandVector[i] << endmsg;} - StringParse mystring(m_pythiaCommandVector[i]); - string myblock=mystring.piece(1); - string myentry=mystring.piece(2); - string mystr=mystring.piece(3); - int myint1=mystring.intpiece(3); - int myint2=mystring.intpiece(4); - int myint3=mystring.intpiece(5); - int myint4=mystring.intpiece(6); - int myint5=mystring.intpiece(7); - double myfl1=mystring.numpiece(4); - double myfl2=mystring.numpiece(5); - double myfl0=mystring.numpiece(3); - - // Note that PythiaLLP needs doubles hence the convert here - // log << MSG:: INFO << myblock << " block " << myentry << " item " << myint1 << " value " << myfl1 <<endmsg; - if(msgLvl(MSG::INFO)){ - msg(MSG::INFO)<< myblock << " block " << myentry << " item " << myint1 << " value " << myfl1 <<endmsg;} - - if (myblock=="pyinit") { - if(myentry=="user"){ - m_frame="USER "; - m_external=mystr; - m_ExternalProcess = generator_int(mystr); - /* if(mystr=="comphep"){ - m_ExternalProcess = COMPHEP; - } else if(mystr=="user"){ - m_ExternalProcess = USER; - } else if(mystr=="acermc"){ - m_ExternalProcess = ACERMC; - } else if(mystr=="alpgen"){ - m_ExternalProcess = ALPGEN; - } else if (mystr == "madgraph") { - m_ExternalProcess = MADGRAPH; - } else if(mystr== "madcup") { - m_ExternalProcess = MADCUP; - } else if(mystr== "lhaext") { - m_ExternalProcess = LHAEXT; - } else if(mystr== "matchig") { - m_ExternalProcess = MATCHIG; - } else if(mystr== "hvgen") { - m_ExternalProcess = HVGEN; - } else if(mystr== "lhef") { - m_ExternalProcess = LHEF; - } else if(mystr== "mcatnlo") { - m_ExternalProcess = MCATNLO; - } else if(mystr== "charybdis") { - m_ExternalProcess = CHARYBDIS; - } else if(mystr== "horace") { - m_ExternalProcess = HORACE; - }else { -// log << MSG:: ERROR - if(msgLvl(MSG::ERROR)){ - msg(MSG::ERROR) - << "PYTHIA ERROR, entry PYINIT USER has comphep, acermc, alpgen, madgraph, madcup, lhaext, hvgen, lhef and user as options: YOU HAVE SPECIFIED " - << myentry <<endmsg ;} - }*/ - extproc_(&m_ExternalProcess); - } - else if(myentry=="FIXT"){ - m_frame="FIXT"; - } - else if(myentry=="pbar"){ - m_beam="P~- "; - } - else if(myentry=="win"){ - m_win=myfl0; - } - else if(myentry=="pylisti"){ - m_initlistlevel=myint1; - } - else if(myentry=="pylistf"){ - m_eventlistlevel=myint1; - } - else if(myentry=="dumpr"){ - m_firstlistevent=myint1; - m_lastlistevent=myint2; - } - else if(myentry=="output"){ - m_envval1=mystr; - m_fortout=49; - this->pydat1().mstu(11)=m_fortout; - } - else if(myentry=="rndm_IO"){ - m_RndmFileName=mystr; - m_RndmFileNumber=36; - m_RndmSwitch=myint2; - m_RndmFirstEvent=myint3; - m_RndmSkipEvents=myint4; - m_RndmMOVE=myint5; - if (m_RndmSwitch == 1) ++m_RndmSkipEvents; - - if (m_RndmSwitch > 0) - { - if (m_RndmFirstEvent < 1 || m_RndmSkipEvents < 0) - { - // log << MSG:: ERROR - if(msgLvl(MSG::ERROR)){ - msg(MSG::ERROR) - << " INCOSISTENT SET OF rndm_IO PARAMETERS : FirstEvent < 1 || SkipEvents < 0. DUMPING RNDM SEEDS SWITCHED OFF" - << myentry <<endmsg ;} - m_RndmSwitch = 0; - } - } - - // log << MSG::INFO - if(msgLvl(MSG::INFO)){ - msg(MSG::INFO) << " !!!!!!!!!! WARNING ON PYTHIA RANDOM NUMBERS !!!!!!!! " << endmsg; - // log << MSG::INFO - msg(MSG::INFO) << " THE ATHENA/PYTHIA DOES NOT USE ANY MORE THE STANDARD " << endmsg; - // log << MSG::INFO - msg(MSG::INFO) << " PYTHIA RANDOM NUMBER SERVICES. SINCE RELEASE 5.2.0 THE" << endmsg; - // log << MSG::INFO - msg(MSG::INFO) << " ATHENA SERVICE AtRndmGenSvc IS USED. PLEASE FOR MORE " << endmsg; - // log << MSG::INFO - msg(MSG::INFO) << " DETAILS LOOK IN " << endmsg; - // log << MSG::INFO - msg(MSG::INFO) << " http://atlassw1.phy.bnl.gov/lxrsource/current/atlas/Generators/GeneratorModules/doc/Pythia.pdf " - << endmsg; - // log << MSG::INFO - msg(MSG::INFO) << " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! " << endmsg; - } - m_RndmSwitch = 0; - } - else { - // log << MSG:: ERROR - if(msgLvl(MSG::ERROR)){ - msg(MSG::ERROR) << "PYTHIA ERROR, entry PYINIT has USER PBAR PYLISTI PYLISTF PYSTAT OUTPUT DUMPR WIN AND RNDM_IO: YOU HAVE SPECIFIED "<< myentry <<endmsg ;} - } - } - else if (myblock == "pysubs") { - if(myentry == "msel"){ - this->pysubs().msel()=myint1; - } - else if (myentry == "msub"){ - this->pysubs().msub(myint1)=myint2; - } - else if (myentry == "ckin"){ - this->pysubs().ckin(myint1)=myfl1; - } - else if (myentry == "kfin"){ - this->pysubs().kfin(myint1,myint2)=myint3; - } - else { - // log << MSG:: ERROR - if(msgLvl(MSG::ERROR)){ - msg(MSG::ERROR) << "PYTHIA ERROR, block PYSUBS has MSEL, MSUB, KFIN AND CKIN: YOU HAVE SPECIFIED "<< myentry <<endmsg ;} - } - } - else if (myblock == "pypars"){ - if(myentry == "mstp"){ - this->pypars().mstp(myint1)=myint2; - } - else if(myentry == "msti"){ - this->pypars().msti(myint1)=myint2; - } - else if(myentry == "parp"){ - this->pypars().parp(myint1)=myfl1; - } - else if(myentry == "pari"){ - this->pypars().pari(myint1)=myfl1; - } - else { - // log << MSG:: ERROR - if(msgLvl(MSG::ERROR)){ - msg(MSG::ERROR) << "PYTHIA ERROR, block PYPARS has MSTP,PARP, MSTI AND PARI: YOU HAVE SPECIFIED "<< myentry <<endmsg ;} - } - } - else if (myblock == "pydat1"){ - if(myentry == "mstu"){ - this->pydat1().mstu(myint1)=myint2; - } - else if(myentry == "mstj"){ - this->pydat1().mstj(myint1)=myint2; - } - else if(myentry == "paru"){ - this->pydat1().paru(myint1)=myfl1; - } - else if(myentry == "parj"){ - this->pydat1().parj(myint1)=myfl1; - } - else { - // log << MSG:: ERROR - if(msgLvl(MSG::ERROR)){ - msg(MSG::ERROR) << "PYTHIA ERROR, block PYDAT1 HAS MSTU, MSTJ, PARU AND PARJ: YOU HAVE SPECIFIED "<< myentry <<endmsg ;} - } - } - else if (myblock == "pydat2"){ - if(myentry == "kchg"){ - this->pydat2().kchg(myint1,myint2)=myint3; - } - else if(myentry == "pmas"){ - this->pydat2().pmas(pycomp_(&myint1),myint2)=myfl2; - } - else if(myentry == "parf"){ - this->pydat2().parf(myint1)=myfl1; - } - else if(myentry == "vckm"){ - this->pydat2().vckm(myint1,myint2)=myfl2; - } - else { - // log << MSG:: ERROR - if(msgLvl(MSG::ERROR)){ - msg(MSG::ERROR) << "PYTHIA ERROR, block PYDAT2 HAS KCHG, PMAS, PARF AND VCKM: YOU HAVE SPECIFIED "<< myentry <<endmsg ;} - } - } - else if (myblock == "pydat3"){ - if(myentry == "mdcy"){ - this->pydat3().mdcy(myint1,myint2)=myint3; - } - else if(myentry == "mdme"){ - this->pydat3().mdme(myint1,myint2)=myint3; - } - else if(myentry == "brat"){ - this->pydat3().brat(myint1)=myfl1; - } - else if(myentry == "kfdp"){ - this->pydat3().kfdp(myint1,myint2)=myint3; - } - else { - // log << MSG:: ERROR - if(msgLvl(MSG::ERROR)){ - msg(MSG::ERROR)<< "PYTHIA ERROR, block PYDAT3 HAS KFDP, MDCY, BRAT AND MDME : YOU HAVE SPECIFIED "<< myentry <<endmsg ;} - } - } - else if (myblock == "pydatr"){ - if(myentry == "mrpy"){ - // log << MSG::INFO - if(msgLvl(MSG::INFO)){ - msg(MSG::INFO) << " !!!!!!!!!! WARNING ON PYTHIA RANDOM NUMBERS !!!!!!!! " << endmsg; - // log << MSG::INFO - msg(MSG::INFO) << " THE ATHENA/PYTHIA DOES NOT USE ANY MORE THE STANDARD " << endmsg; - // log << MSG::INFO - msg(MSG::INFO) << " PYTHIA RANDOM NUMBER SERVICES. SINCE RELEASE 5.2.0 THE" << endmsg; - // log << MSG::INFO - msg(MSG::INFO) << " ATHENA SERVICE AtRndmGenSvc IS USED. PLEASE FOR MORE " << endmsg; - // log << MSG::INFO - msg(MSG::INFO) << " DETAILS LOOK IN " << endmsg; - // log << MSG::INFO - msg(MSG::INFO) << " http://atlassw1.phy.bnl.gov/lxrsource/current/atlas/Generators/GeneratorModules/doc/Pythia.pdf " - << endmsg; - // log << MSG::INFO - msg(MSG::INFO) << " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! " << endmsg;} - - this->pydatr().mrpy(myint1)=myint2; - } - else if(myentry == "rrpy"){ - this->pydatr().rrpy(myint1)=myfl1; - } - else { - // log << MSG:: ERROR - if(msgLvl(MSG::ERROR)){ - msg(MSG::ERROR) << "PYTHIA ERROR, block PYDATR HAS MRPY AND RRPY : YOU HAVE SPECIFIED "<< myentry <<endmsg ;} - } - } - else if (myblock == "pymssm"){ - if (myentry=="imss"){ - if (myint1 == 21 || myint1 == 22) { - // log << MSG::WARNING - if(msgLvl(MSG::WARNING)){ - msg(MSG::WARNING) - << "The seting of imss(21) and imss(22) is not allowed. When imss(1)=11 is chosen imss(21) and imss(22) are set to 66 by default" <<endmsg;} - } else { - this->pymssm().imss(myint1)=myint2; - } - } - else if (myentry=="rmss"){ - this->pymssm().rmss(myint1)=myfl1; - } - else { - // log << MSG:: ERROR - if(msgLvl(MSG::ERROR)){ - msg(MSG::ERROR) << "PYTHIA ERROR, block PYMSSM has IMSS AND RMSS: YOU HAVE SPECIFIED "<< myentry <<endmsg ;} - } - } - else if (myblock == "pyint2"){ - if (myentry == "iset"){ - this->pyint2().iset(myint1)=myint2; - } - else if (myentry == "kfpr"){ - this->pyint2().kfpr(myint1,myint2)=myint3; - } - else if (myentry == "coef"){ - this->pyint2().coef(myint1,myint2)=myfl2; - } - else if (myentry == "icol"){ - this->pyint2().icol(myint1,myint2,myint3)=myint4; - } - else { - // log << MSG:: ERROR - if(msgLvl(MSG::ERROR)){ - msg(MSG::ERROR) << "PYTHIA ERROR, block PYINT2 has ISET KFPR COEF AND ICOL: YOU HAVE SPECIFIED "<< myentry <<endmsg ;} - } - } - else if (myblock == "pystat"){ - m_pystatlistlevel.clear(); - for (unsigned i = 2; i <= mystring.string_size(); ++i) - m_pystatlistlevel.push_back(mystring.intpiece(i)); - } - else if (myblock == "pytcsm"){ - if (myentry == "itcm"){ - this->pytcsm().itcm(myint1)=myint2; - } - else if (myentry=="rtcm"){ - this->pytcsm().rtcm(myint1)=myfl1; - } - else { - // log << MSG:: ERROR - if(msgLvl(MSG::ERROR)){ - msg(MSG::ERROR) << "PYTHIA ERROR, block PYTCM has ITCM AND RTCM: YOU HAVE SPECIFIED "<< myentry <<endmsg ;} - } - - } - - // AcerMC tt~ decay mode switching - else if (myblock == "acermc" && myentry=="acset12") { - if (m_ExternalProcess == ACERMC) { - this->acermc_acset().acset12()=myint1; - } - } - - else { - // log << MSG:: ERROR - if(msgLvl(MSG::ERROR)){ - msg(MSG::ERROR) << " ERROR in PYTHIA PARAMETERS " << myblock << " is and invalid common block name !" << endmsg;} - } - } - // end of parsing - //------------------------------------------------------------------ - - // Set the logical Unit Number for the immss(1)=11 option and open the file - if (this->pymssm().imss(1) == 11) { - int syunit = 66; - this->pymssm().imss(21) = syunit; - this->pymssm().imss(22) = syunit; - const std::string& fileName = m_read_Filesusy; - opensusyfile_(fileName.c_str(),&syunit,fileName.size()); - } - // !!!!! PROTECT AGAINST mstp(81)/mstp(82) Pythia looping - if (this->pypars().mstp(81) == 0 && this->pypars().mstp(82) > 2) - { - this->pypars().mstp(82) = 1; - // log << MSG::INFO - if(msgLvl(MSG::INFO)){ - msg(MSG::INFO) << " !!!!!!!!!! WARNING ON PYTHIA LOOPING !!!!!!!! " << endmsg; - // log << MSG::INFO - msg(MSG::INFO) << " YOU HAVE SWITCHED OFF MULTIPLE INTERACTIONS, mstp(81) = 0 " << endmsg; - // log << MSG::INFO - msg(MSG::INFO) << " THE DEFAULT ATLAS MULTIPLE INTERACTIONS SCENARIO, mstp(82) = 4 " << endmsg; - // log << MSG::INFO - msg(MSG::INFO) << " CHANGED TO mstp(82) = 1, BECAUSE PYTHIA IS LOOPING WHEN " << endmsg; - // log << MSG::INFO - msg(MSG::INFO) << " mstp(81) = 0 and mstp(82) > 2 " << endmsg; - // log << MSG::INFO - msg(MSG::INFO) << " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! " << endmsg;} - } - - // Now call pyinit and set listing - // Note the `extra' arguments to pyinit on the end of the argument - // list which do *not* explicitly occur in the FORTRAN - // implementation of the function -- one for each character - // variable, in the same order (reference Randy Herber, - // herber@fnal.gov). Note also that the `extern "C"' function - // declaration matches the C usage rather than the FORTRAN - // definition of the PYINIT function and therefore includes the 3 - // extra arguments. - // activate the block data - const char* envval = m_envval1.c_str(); - initpyblock_(&m_fortout,envval); - - if (m_RndmSwitch > 0) - { - const char* RndmFileName = m_RndmFileName.c_str(); - m_RndmFileLength = openrandom_(&m_RndmSwitch, &m_RndmFileNumber, RndmFileName); - if (m_RndmSwitch ==2 ) msg(MSG::INFO) << " THEY ARE " << m_RndmFileLength - << " EVENTS STORED IN THE PYTHIA RANDOM NUMBER FILE \n" << endmsg; - } - - const char* frame = m_frame.c_str(); - const char* beam = m_beam.c_str(); - double winval = m_win; - const char* target = m_target.c_str(); - int minlist = m_initlistlevel; - // special initialization for comphep - if(m_external=="comphep"){ - rinpar_(); - subnum_(); - rheader_(); - } - - // end of comphep initialization -// std::cout << " ****** BEFORE PYINIT ********" << std::endl; -// std::cout << setiosflags(ios::fixed); -// std::cout << " MSTU(11) " -// << std::setw(3) << setprecision(0) << this->pydat1().mstu(11) << " MSTU(20) " -// << std::setw(3) << setprecision(0) << this->pydat1().mstu(20) << " MSTU(118) " -// << std::setw(3) << setprecision(0) << this->pydat1().mstu(118) << std::endl; -// std::cout << " PARU(108) " -// << std::setw(10) << setprecision(8) << this->pydat1().paru(108) << " PARU(117) " -// << std::setw(10) << setprecision(8) << this->pydat1().paru(117) << " PARU(118) " -// << std::setw(10) << setprecision(8) << this->pydat1().paru(118) << std::endl; -// for (int ii = 210; ii < 353; ++ii) -// { -// std::cout << " BRAT(" << ii << ") " -// << std::setw(10) << setprecision(8) << this->pydat3().brat(ii) << std::endl; -// } -// std::cout << " MDCY(310) " -// << std::setw(3) << setprecision(0) << this->pydat3().mdcy(310,1) << ", " -// << std::setw(3) << setprecision(0) << this->pydat3().mdcy(310,2) << ", " -// << std::setw(3) << setprecision(0) << this->pydat3().mdcy(310,3); - -// std::cout << std::resetiosflags(std::ios::fixed) -// << std::endl; - - // Save the PYTHIA_INIT stream seeds.... - CLHEP::HepRandomEngine* engine = PythiaLLP::p_AtRndmGenSvc->GetEngine(PythiaLLP::pythia_stream); - const long* sip = engine->getSeeds(); - long int si1 = sip[0]; - long int si2 = sip[1]; - - pyinit_(frame,beam,target,&winval, - strlen(frame),strlen(beam),strlen(target) - ); - - if(m_LLP_PYUPDA_file != "") { - const std::string& fileName = m_LLP_PYUPDA_file; - initpyupda_(fileName.c_str(),fileName.size()); - for (unsigned int i = 0; i < m_pythiaCommandVector.size(); i++) { - // log << MSG::INFO - if(msgLvl(MSG::INFO)){ - msg(MSG::INFO) << " Command is: " << m_pythiaCommandVector[i] << endmsg;} - StringParse mystring(m_pythiaCommandVector[i]); - string myblock=mystring.piece(1); - string myentry=mystring.piece(2); - string mystr=mystring.piece(3); - int myint1=mystring.intpiece(3); - int myint2=mystring.intpiece(4); - int myint3=mystring.intpiece(5); - int myint4=mystring.intpiece(6); - int myint5=mystring.intpiece(7); - double myfl1=mystring.numpiece(4); - double myfl2=mystring.numpiece(5); - double myfl0=mystring.numpiece(3); - - // Note that Pythia needs doubles hence the convert here - // log << MSG:: INFO - if(msgLvl(MSG::INFO)){ - msg(MSG::INFO) << myblock << " block " << myentry << " item " << myint1 << " value " << myfl1 <<endmsg;} - if (myblock=="pyinit") { - if(myentry=="user"){ - m_frame="USER "; - m_external=mystr; - m_ExternalProcess = generator_int(mystr); - /* if(mystr=="comphep"){ - m_ExternalProcess = COMPHEP; - } else if(mystr=="user"){ - m_ExternalProcess = USER; - } else if(mystr=="acermc"){ - m_ExternalProcess = ACERMC; - } else if(mystr=="alpgen"){ - m_ExternalProcess = ALPGEN; - } else if (mystr == "madgraph") { - m_ExternalProcess = MADGRAPH; - } else if(mystr== "madcup") { - m_ExternalProcess = MADCUP; - } else if(mystr== "lhaext") { - m_ExternalProcess = LHAEXT; - } else if(mystr== "matchig") { - m_ExternalProcess = MATCHIG; - } else if(mystr== "hvgen") { - m_ExternalProcess = HVEN; - } else if(mystr== "lhef") { - m_ExternalProcess = LHEF; - } else if(mystr== "mcatnlo") { - m_ExternalProcess = MCATNLO; - } else if(mystr== "charybdis") { - m_ExternalProcess = CHARYBDIS; - } else if(mystr== "horace") { - m_ExternalProcess = HORACE; - }else { -// log << MSG:: ERROR - if(msgLvl(MSG::ERROR)){ - msg(MSG::ERROR) - << "PYTHIA ERROR, entry PYINIT USER has comphep, acermc, alpgen, madgraph, madcup, lhaext, hvgen, lhef and user as options: YOU HAVE SPECIFIED " - << myentry <<endmsg ;} - }*/ - extproc_(&m_ExternalProcess); - } - else if(myentry=="FIXT"){ - m_frame="FIXT"; - } - else if(myentry=="pbar"){ - m_beam="P~- "; - } - else if(myentry=="win"){ - m_win=myfl0; - } - else if(myentry=="pylisti"){ - m_initlistlevel=myint1; - } - else if(myentry=="pylistf"){ - m_eventlistlevel=myint1; - } - else if(myentry=="dumpr"){ - m_firstlistevent=myint1; - m_lastlistevent=myint2; - } - else if(myentry=="output"){ - m_envval1=mystr; - m_fortout=49; - this->pydat1().mstu(11)=m_fortout; - } - else if(myentry=="rndm_IO"){ - m_RndmFileName=mystr; - m_RndmFileNumber=36; - m_RndmSwitch=myint2; - m_RndmFirstEvent=myint3; - m_RndmSkipEvents=myint4; - m_RndmMOVE=myint5; - if (m_RndmSwitch == 1) ++m_RndmSkipEvents; - - if (m_RndmSwitch > 0) - { - if (m_RndmFirstEvent < 1 || m_RndmSkipEvents < 0) - { - // log << MSG:: ERROR - if(msgLvl(MSG::ERROR)){ - msg(MSG::ERROR) - << " INCOSISTENT SET OF rndm_IO PARAMETERS : FirstEvent < 1 || SkipEvents < 0. DUMPING RNDM SEEDS SWITCHED OFF" - << myentry <<endmsg ;} - m_RndmSwitch = 0; - } - } - - // log << MSG::INFO - if(msgLvl(MSG::INFO)){ - msg(MSG::INFO) << " !!!!!!!!!! WARNING ON PYTHIA RANDOM NUMBERS !!!!!!!! " << endmsg; - // log << MSG::INFO - msg(MSG::INFO) << " THE ATHENA/PYTHIA DOES NOT USE ANY MORE THE STANDARD " << endmsg; - // log << MSG::INFO - msg(MSG::INFO) << " PYTHIA RANDOM NUMBER SERVICES. SINCE RELEASE 5.2.0 THE" << endmsg; - // log << MSG::INFO - msg(MSG::INFO) << " ATHENA SERVICE AtRndmGenSvc IS USED. PLEASE FOR MORE " << endmsg; - // log << MSG::INFO - msg(MSG::INFO) << " DETAILS LOOK IN " << endmsg; - // log << MSG::INFO - msg(MSG::INFO) << " http://atlassw1.phy.bnl.gov/lxrsource/current/atlas/Generators/GeneratorModules/doc/Pythia.pdf " - << endmsg; - // log << MSG::INFO - msg(MSG::INFO) << " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! " << endmsg;} - - m_RndmSwitch = 0; - } - else { - // log << MSG:: ERROR - if(msgLvl(MSG::ERROR)){ - msg(MSG::ERROR) << "PYTHIA ERROR, entry PYINIT has USER PBAR PYLISTI PYLISTF PYSTAT OUTPUT DUMPR WIN AND RNDM_IO: YOU HAVE SPECIFIED "<< myentry <<endmsg ;} - } - } - else if (myblock == "pysubs") { - if(myentry == "msel"){ - this->pysubs().msel()=myint1; - } - else if (myentry == "msub"){ - this->pysubs().msub(myint1)=myint2; - } - else if (myentry == "ckin"){ - this->pysubs().ckin(myint1)=myfl1; - } - else if (myentry == "kfin"){ - this->pysubs().kfin(myint1,myint2)=myint3; - } - else { - // log << MSG:: ERROR - if(msgLvl(MSG::ERROR)){ - msg(MSG::ERROR) << "PYTHIA ERROR, block PYSUBS has MSEL, MSUB, KFIN AND CKIN: YOU HAVE SPECIFIED "<< myentry <<endmsg ;} - } - } - else if (myblock == "pypars"){ - if(myentry == "mstp"){ - this->pypars().mstp(myint1)=myint2; - } - else if(myentry == "msti"){ - this->pypars().msti(myint1)=myint2; - } - else if(myentry == "parp"){ - this->pypars().parp(myint1)=myfl1; - } - else if(myentry == "pari"){ - this->pypars().pari(myint1)=myfl1; - } - else { - // log << MSG:: ERROR - if(msgLvl(MSG::ERROR)){ - msg(MSG::ERROR) << "PYTHIA ERROR, block PYPARS has MSTP,PARP, MSTI AND PARI: YOU HAVE SPECIFIED "<< myentry <<endmsg ;} - } - } - else if (myblock == "pydat1"){ - if(myentry == "mstu"){ - this->pydat1().mstu(myint1)=myint2; - } - else if(myentry == "mstj"){ - this->pydat1().mstj(myint1)=myint2; - } - else if(myentry == "paru"){ - this->pydat1().paru(myint1)=myfl1; - } - else if(myentry == "parj"){ - this->pydat1().parj(myint1)=myfl1; - } - else { - // log << MSG:: ERROR - if(msgLvl(MSG::ERROR)){ - msg(MSG::ERROR) << "PYTHIA ERROR, block PYDAT1 HAS MSTU, MSTJ, PARU AND PARJ: YOU HAVE SPECIFIED "<< myentry <<endmsg ;} - } - } - else if (myblock == "pydat2"){ - if(myentry == "kchg"){ - this->pydat2().kchg(myint1,myint2)=myint3; - } - else if(myentry == "pmas"){ - this->pydat2().pmas(pycomp_(&myint1),myint2)=myfl2; - } - else if(myentry == "parf"){ - this->pydat2().parf(myint1)=myfl1; - } - else if(myentry == "vckm"){ - this->pydat2().vckm(myint1,myint2)=myfl2; - } - else { - // log << MSG:: ERROR - if(msgLvl(MSG::ERROR)){ - msg(MSG::ERROR) << "PYTHIA ERROR, block PYDAT2 HAS KCHG, PMAS, PARF AND VCKM: YOU HAVE SPECIFIED "<< myentry <<endmsg ;} - } - } - else if (myblock == "pydat3"){ - if(myentry == "mdcy"){ - this->pydat3().mdcy(myint1,myint2)=myint3; - } - else if(myentry == "mdme"){ - this->pydat3().mdme(myint1,myint2)=myint3; - } - else if(myentry == "brat"){ - this->pydat3().brat(myint1)=myfl1; - } - else if(myentry == "kfdp"){ - this->pydat3().kfdp(myint1,myint2)=myint3; - } - else { - // log << MSG:: ERROR - if(msgLvl(MSG::ERROR)){ - msg(MSG::ERROR) << "PYTHIA ERROR, block PYDAT3 HAS KFDP, MDCY, BRAT AND MDME : YOU HAVE SPECIFIED "<< myentry <<endmsg ;} - } - } - else if (myblock == "pydatr"){ - if(myentry == "mrpy"){ - // log << MSG::INFO - if(msgLvl(MSG::INFO)){ - msg(MSG::INFO) << " !!!!!!!!!! WARNING ON PYTHIA RANDOM NUMBERS !!!!!!!! " << endmsg; - // log << MSG::INFO - msg(MSG::INFO) << " THE ATHENA/PYTHIA DOES NOT USE ANY MORE THE STANDARD " << endmsg; - // log << MSG::INFO - msg(MSG::INFO) << " PYTHIA RANDOM NUMBER SERVICES. SINCE RELEASE 5.2.0 THE" << endmsg; - // log << MSG::INFO - msg(MSG::INFO) << " ATHENA SERVICE AtRndmGenSvc IS USED. PLEASE FOR MORE " << endmsg; - // log << MSG::INFO - msg(MSG::INFO) << " DETAILS LOOK IN " << endmsg; - // log << MSG::INFO - msg(MSG::INFO) << " http://atlassw1.phy.bnl.gov/lxrsource/current/atlas/Generators/GeneratorModules/doc/Pythia.pdf " - << endmsg; - // log << MSG::INFO - msg(MSG::INFO) << " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! " << endmsg;} - - this->pydatr().mrpy(myint1)=myint2; - } - else if(myentry == "rrpy"){ - this->pydatr().rrpy(myint1)=myfl1; - } - else { - // log << MSG:: ERROR - if(msgLvl(MSG::ERROR)){ - msg(MSG::ERROR) << "PYTHIA ERROR, block PYDATR HAS MRPY AND RRPY : YOU HAVE SPECIFIED "<< myentry <<endmsg ;} - } - } - else if (myblock == "pymssm"){ - if (myentry=="imss"){ - if (myint1 == 21 || myint1 == 22) { - // log << MSG::WARNING - if(msgLvl(MSG::WARNING)){ - msg(MSG::WARNING) << "The seting of imss(21) and imss(22) is not allowed. When imss(1)=11 is chosen imss(21) and imss(22) are set to 66 by default" <<endmsg;} - } else { - this->pymssm().imss(myint1)=myint2; - } - } - else if (myentry=="rmss"){ - this->pymssm().rmss(myint1)=myfl1; - } - else { - // log << MSG:: ERROR - if(msgLvl(MSG::ERROR)){ - msg(MSG::ERROR)<< "PYTHIA ERROR, block PYMSSM has IMSS AND RMSS: YOU HAVE SPECIFIED "<< myentry <<endmsg ;} - } - } - else if (myblock == "pyint2"){ - if (myentry == "iset"){ - this->pyint2().iset(myint1)=myint2; - } - else if (myentry == "kfpr"){ - this->pyint2().kfpr(myint1,myint2)=myint3; - } - else if (myentry == "coef"){ - this->pyint2().coef(myint1,myint2)=myfl2; - } - else if (myentry == "icol"){ - this->pyint2().icol(myint1,myint2,myint3)=myint4; - } - else { - // log << MSG:: ERROR - if(msgLvl(MSG::ERROR)){ - msg(MSG::ERROR) << "PYTHIA ERROR, block PYINT2 has ISET KFPR COEF AND ICOL: YOU HAVE SPECIFIED "<< myentry <<endmsg ;} - } - } - else if (myblock == "pystat"){ - m_pystatlistlevel.clear(); - for (unsigned i = 2; i <= mystring.string_size(); ++i) - m_pystatlistlevel.push_back(mystring.intpiece(i)); - } - else if (myblock == "pytcsm"){ - if (myentry == "itcm"){ - this->pytcsm().itcm(myint1)=myint2; - } - else if (myentry=="rtcm"){ - this->pytcsm().rtcm(myint1)=myfl1; - } - else { - // log << MSG:: ERROR - if(msgLvl(MSG::ERROR)){ - msg(MSG::ERROR) << "PYTHIA ERROR, block PYTCM has ITCM AND RTCM: YOU HAVE SPECIFIED "<< myentry <<endmsg ;} - } - - } - - // AcerMC tt~ decay mode switching - else if (myblock == "acermc" && myentry=="acset12") { - if (m_ExternalProcess == ACERMC) { - this->acermc_acset().acset12()=myint1; - } - } - - else { - // log << MSG:: ERROR - if(msgLvl(MSG::ERROR)){ - msg(MSG::ERROR) << " ERROR in PYTHIA PARAMETERS " << myblock << " is and invalid common block name !" << endmsg;} - } - } - } - - - // ... and set them back to the stream for proper save - PythiaLLP::p_AtRndmGenSvc->CreateStream(si1, si2, PythiaLLP::pythia_stream); - - PythiaLLP::pythia_stream = "PYTHIA"; - -// std::cout << " ****** AFTER PYINIT ********" << std::endl; -// std::cout << setiosflags(ios::fixed); -// std::cout << " MSTU(11) " -// << std::setw(3) << setprecision(0) << this->pydat1().mstu(11) << " MSTU(20) " -// << std::setw(3) << setprecision(0) << this->pydat1().mstu(20) << " MSTU(118) " -// << std::setw(3) << setprecision(0) << this->pydat1().mstu(118) << std::endl; -// std::cout << " PARU(108) " -// << std::setw(10) << setprecision(8) << this->pydat1().paru(108) << " PARU(117) " -// << std::setw(10) << setprecision(8) << this->pydat1().paru(117) << " PARU(118) " -// << std::setw(10) << setprecision(8) << this->pydat1().paru(118) << std::endl; -// for (int ii = 210; ii < 353; ++ii) -// { -// std::cout << " BRAT(" << ii << ") " -// << std::setw(10) << setprecision(8) << this->pydat3().brat(ii) << std::endl; -// } -// std::cout << " MDCY(310) " -// << std::setw(3) << setprecision(0) << this->pydat3().mdcy(310,1) << ", " -// << std::setw(3) << setprecision(0) << this->pydat3().mdcy(310,2) << ", " -// << std::setw(3) << setprecision(0) << this->pydat3().mdcy(310,3); - -// std::cout << std::resetiosflags(std::ios::fixed) -// << std::endl; - - pylist_(&minlist); - m_events = 0; - // cout << " kfpr ============ " << this->pyint2().kfpr(186,2) <<endl; - //cout << " kfpr ============ " << this->pyint2().kfpr(187,2) <<endl; - //decay table - const char *p_envar1="PYDAT"; - // char *p_envval1=0; - // p_envval1= - getenv(p_envar1); - //---------------------------------------------------------- - // This is the decay table file - // - // int mode=2; - // int lun=37; - // pyupda_(&mode,&lun); - // cldcay_(&lun); - // Set size of common blocks in HEPEVT: note these correspond to stdhep -// HepMC::HEPEVT_Wrapper::set_sizeof_int(4); - HepMC::HEPEVT_Wrapper::set_sizeof_int(sizeof(int)); - HepMC::HEPEVT_Wrapper::set_sizeof_real(8); - HepMC::HEPEVT_Wrapper::set_max_number_entries(10000); - - return StatusCode::SUCCESS; -} - - -//--------------------------------------------------------------------------- -StatusCode PythiaLLP::callGenerator() { - //--------------------------------------------------------------------------- - // MsgStream log(messageService(), name()); - // log << MSG::DEBUG - if(msgLvl(MSG::DEBUG)){ - msg(MSG::DEBUG) << " PYTHIA generating. \n" << endmsg;} - - // Write/Read the random numbers to/from file if requested - if (m_RndmSwitch > 0) RandomNumberIO(); - - // Save the random number seeds in the event - CLHEP::HepRandomEngine* engine = PythiaLLP::p_AtRndmGenSvc->GetEngine(PythiaLLP::pythia_stream); - const long* s = engine->getSeeds(); - m_seeds.clear(); - m_seeds.push_back(s[0]); - m_seeds.push_back(s[1]); - - // Generate event - pyevnt_(); - - // update event counter - ++m_events; - int mevlist=m_eventlistlevel; - // Is the event to be listed - if ( m_events >= m_firstlistevent && - m_events <= m_lastlistevent) { - // log<< MSG:: INFO - if(msgLvl(MSG::INFO)){ - msg(MSG::INFO) << "PYEVNT event no. " << m_events << " will be listed" << endmsg;} - if (m_frame == "USER ") - { - int uspr = 7; - pylist_(&uspr); // Special listing when external generator was selected - } - pylist_(&mevlist); // List this event if required - } - // Tell lunhep to convert from PYJETS to HEPEVT - int mconv=1; - // Do the conversion -// lunhep_(&mconv); // Use STDHEP translation routine 1999/01/27 CG - pyhepc_(&mconv); // Use STDHEP translation routine 1999/01/27 CG - if ( HepMC::HEPEVT_Wrapper::number_entries() <= 0 ) { - std::cout << "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" << std::endl; - std::cout << "!!! " << generator_name(m_ExternalProcess) << " TERMINATES NORMALY: NO MORE EVENTS IN FILE !!!" << std::endl; - std::cout << "!!! PLEASE IGNORE ANY ATHENA ERROR MESSAGES LIKE !!!" << std::endl; - std::cout << "!!! AthenaEventLoopMgr ERROR Terminating event processing loop due to errors !!!" << std::endl; - std::cout << "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" << std::endl; - return StatusCode::FAILURE; - } - HepMC::HEPEVT_Wrapper::set_event_number(m_events); -// HepMC::HEPEVT_Wrapper::print_hepevt(); - return StatusCode::SUCCESS; -} - -//--------------------------------------------------------------------------- -StatusCode PythiaLLP::genFinalize() { - //--------------------------------------------------------------------------- - // MsgStream log(messageService(), name()); - // log << MSG::INFO - if(msgLvl(MSG::INFO)){ - msg(MSG::INFO) << " PYTHIA Ending. \n" << endmsg;} - for (std::vector<int>::iterator i = m_pystatlistlevel.begin(); i != m_pystatlistlevel.end(); ++i) - { - // log << MSG::INFO - if(msgLvl(MSG::INFO)){ - msg(MSG::INFO) <<"Call PYSTAT at endRun with level " << *i << endmsg;} - pystat_(&(*i)); - } - std::cout << "MetaData: cross-section (nb)= " << 1000000. * this->pyint5().xsec(0,3) << std::endl; - return StatusCode::SUCCESS; -} -//--------------------------------------------------------------------------- -StatusCode PythiaLLP::fillEvt(HepMC::GenEvent* evt) { - //--------------------------------------------------------------------------- - // MsgStream log(messageService(), name()); - - // log << MSG::DEBUG - if(msgLvl(MSG::DEBUG)){ - msg(MSG::DEBUG) << " PYTHIA Atlas_HEPEVT Filling. \n" << endmsg;} - store_Atlas_HEPEVT(); - - // log << MSG::DEBUG - if(msgLvl(MSG::DEBUG)){ - msg(MSG::DEBUG) << " PYTHIA Filling. \n" << endmsg;} - HepMC::IO_HEPEVT hepio; - hepio.set_print_inconsistency_errors(0); - //HepMC::IO_Ascii output("dump.dat",ios::out); - - // Fill event into HepMC and transient store -// std::cout << "====================================================================" << std::endl; -// std::cout << " === Event dump IN PYTHIA: === " << std::endl; -// std::cout << "====================================================================" << std::endl; -// HepMC::HEPEVT_Wrapper::print_hepevt(); - - hepio.fill_next_event(evt); - int pr_id = PYTHIA + m_ExternalProcess + this->pyint1().mint(1); - if (m_ExternalProcess > 0) pr_id = PYTHIA + m_ExternalProcess; - evt->set_signal_process_id(pr_id); - evt->set_random_states(m_seeds); - evt->weights().push_back(this->pypars().pari(7)); - evt->weights().push_back(this->pypars().pari(9)); - evt->weights().push_back(this->pypars().pari(10)); - //evt -> print(); - //cout << " ----------------- END " << endl; - - //PDF WEIGHTS - using Pdf Info object.. - //pdf_id x_1, x_1, Q2, f_1, f_2 - int id1=this->pypars().msti(15); - int id2=this->pypars().msti(16); - double x1=this->pypars().pari(33); - double x2=this->pypars().pari(34); - double q=this->pypars().pari(23); - double pdf1=(double)this->pypars().mstp(51); //pdg id - awkward but.. - double pdf2=0.; //dummy - HepMC::PdfInfo tmp_pdi(id1,id2,x1,x2,q,pdf1,pdf2); - evt->set_pdf_info(tmp_pdi); - /* std::cout << "pdfiinfo:"<< evt->pdf_info()->id1() << std::endl; - std::cout << "pdfiinfo:"<< evt->pdf_info()->id2() << std::endl; - std::cout << "pdfiinfo:"<< evt->pdf_info()->x1() << std::endl; - std::cout << "pdfiinfo:"<< evt->pdf_info()->x2() << std::endl; - std::cout << "pdfiinfo:"<< evt->pdf_info()->scalePDF() << std::endl; - std::cout << "pdfiinfo:"<< evt->pdf_info()->pdf1() << std::endl; - std::cout << "pdfiinfo:"<< evt->pdf_info()->pdf2() << std::endl; - */ - - // output << evt; - - // Convert cm->mm and GeV->MeV -// cmTomm(evt); - GeVToMeV(evt); - - return StatusCode::SUCCESS; -} - -void -PythiaLLP::RandomNumberIO() -{ - // MsgStream log(messageService(), name()); - - // m_RndmSwitch == 1 : Write the random numbers of the selected events into - // the file m_RndmFileNumber - if (m_RndmSwitch == 1) - { - int WriteEvent = m_events - m_RndmFirstEvent + 1; - if (WriteEvent >= 0) - { - WriteEvent = WriteEvent%m_RndmSkipEvents; - if (WriteEvent == 0) pyrget_(&m_RndmFileNumber, &m_RndmMOVE); - } - } - // m_RndmSwitch == 2 : Read the random numbers from the selected records from - // the file m_RndmFileNumber - else if (m_RndmSwitch == 2) - { - int MOVE = m_RndmMOVE; - if (MOVE == 0) - { - if (m_RndmFirstEvent > 0) - { - if (m_events == 0) - { - MOVE = m_RndmFirstEvent - 1; - } - else - { - MOVE = m_RndmSkipEvents; - } - } - int c_pos = this->pydatr().mrpy(6)+MOVE; - if (c_pos < m_RndmFileLength) - { - // log<< MSG:: INFO - if(msgLvl(MSG::INFO)){ - msg(MSG::INFO) << "EVENT " << m_events+1 - << " will be generated with the random seeds read from record " - << c_pos+1 << " in file " << m_RndmFileName << endmsg;} - pyrset_(&m_RndmFileNumber, &MOVE); - } - } - else - { - pyrset_(&m_RndmFileNumber, &MOVE); - } - - } -} - -void -PythiaLLP::store_Atlas_HEPEVT(void) -{ - -// std::cout << "s_atlas_HEPEVT------" << s_atlas_HEPEVT->nhep() << std::endl; -// std::cout << "s_atlas_HEPEVT------" << s_atlas_HEPEVT->isthep(10) << std::endl; -// std::cout << "s_atlas_HEPEVT------" << s_atlas_HEPEVT->idhep(10) << std::endl; -// std::cout << "s_atlas_HEPEVT------" << s_atlas_HEPEVT->jmohep(1,10) << std::endl; -// std::cout << "s_atlas_HEPEVT------" << s_atlas_HEPEVT->jdahep(2,10) << std::endl; - - s_atlas_HEPEVT->fill(); - - Atlas_HEPEVT* Ahep = new Atlas_HEPEVT(); - *(Ahep)=*(s_atlas_HEPEVT); - static const std::string keyid = "Pythia"; - StatusCode sc = evtStore()->record(Ahep, keyid); - if (!sc.isSuccess()) { - // MsgStream msg(messageService(), name()); - // msg << MSG::WARNING - if(msgLvl(MSG::WARNING)){ - msg(MSG::WARNING)<< " Could not record Atlas_HEPEVT" << endmsg;} - } - -} diff --git a/Generators/PythiaExo_i/src/PythiaLLP_i_entries.cxx b/Generators/PythiaExo_i/src/PythiaLLP_i_entries.cxx deleted file mode 100644 index 3be316fc823457a27dff0830e0e73709f53835fe..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/PythiaLLP_i_entries.cxx +++ /dev/null @@ -1,7 +0,0 @@ -/* - Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration -*/ -#include "PythiaExo_i/PythiaLLP.h" - -DECLARE_COMPONENT( PythiaLLP ) - diff --git a/Generators/PythiaExo_i/src/PythiaModified/initpyupda.F b/Generators/PythiaExo_i/src/PythiaModified/initpyupda.F deleted file mode 100644 index bbf2189722e4025bcf0e070c2401073499a6ea54..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/PythiaModified/initpyupda.F +++ /dev/null @@ -1,26 +0,0 @@ -C...UPINIT -C...Routine called by PYINIT to set up user-defined processes. - - SUBROUTINE INITPYUPDA(filnam) - character*(*) filnam - - -C--GUP common block -#include "GeneratorFortranCommon/heprup.inc" - -C...EXTERNAL statement links PYDATA on most machines - EXTERNAL PYDATA - -C PYTHIA Particles Properties common Blocks - INTEGER KCHG,MDCY,MDME,KFDP - DOUBLE PRECISION PMAS,PARF,VCKM,BRAT - COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) - COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5) - - WRITE(*,*) filnam - OPEN(UNIT=76,STATUS='OLD',FILE=filnam) - CALL PYUPDA(3,76) - CLOSE(76) - - RETURN - END diff --git a/Generators/PythiaExo_i/src/PythiaModified/pyofsh.F b/Generators/PythiaExo_i/src/PythiaModified/pyofsh.F deleted file mode 100644 index ee9ab35ff42ad9fea7f77ed43fa7bd4dab526e5d..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/PythiaModified/pyofsh.F +++ /dev/null @@ -1,424 +0,0 @@ -C*********************************************************************** - -C...PYOFSH -C...Calculates partial width and differential cross-section maxima -C...of channels/processes not allowed on mass-shell, and selects -C...masses in such channels/processes. - -C ATLAS - locally modified version, enabled for /SPTMDF/ISTMDF.EQ.1 - - SUBROUTINE PYOFSH(MOFSH,KFMO,KFD1,KFD2,PMMO,RET1,RET2) - -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - INTEGER PYK,PYCHGE,PYCOMP -C...Commonblocks. - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) - COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5) - COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200) - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) - COMMON/PYINT1/MINT(400),VINT(400) - COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2) - COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3) - SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,/PYPARS/,/PYINT1/, - &/PYINT2/,/PYINT5/ - -C ATLAS-specific commonB: - COMMON/SPTMDF/ISTMDF - SAVE /SPTMDF/ - -C...Local arrays. - DIMENSION KFD(2),MBW(2),PMD(2),PGD(2),PMG(2),PML(2),PMU(2), - &PMH(2),ATL(2),ATU(2),ATH(2),RMG(2),INX1(100),XPT1(100), - &FPT1(100),INX2(100),XPT2(100),FPT2(100),WDTP(0:400), - &WDTE(0:400,0:5) - -C...Find if particles equal, maximum mass, matrix elements, etc. - MINT(51)=0 - ISUB=MINT(1) - -C... ATLAS : partner's properties steered from SLHA - IF (ISTMDF.EQ.1) THEN - IF((ISUB.EQ.81.OR.ISUB.EQ.82).AND.KFD1.EQ.6) - & KFD2=3000006 - ENDIF - - KFD(1)=IABS(KFD1) - KFD(2)=IABS(KFD2) - MEQL=0 - IF(KFD(1).EQ.KFD(2)) MEQL=1 - MLM=0 - IF(MOFSH.GE.2.AND.MEQL.EQ.1) MLM=INT(1.5D0+PYR(0)) - IF(MOFSH.LE.2.OR.MOFSH.EQ.5) THEN - NOFF=44 - PMMX=PMMO - ELSE - NOFF=40 - PMMX=VINT(1) - IF(CKIN(2).GT.CKIN(1)) PMMX=MIN(CKIN(2),VINT(1)) - ENDIF - MMED=0 - IF((KFMO.EQ.25.OR.KFMO.EQ.35.OR.KFMO.EQ.36).AND.MEQL.EQ.1.AND. - &(KFD(1).EQ.23.OR.KFD(1).EQ.24)) MMED=1 - IF((KFMO.EQ.32.OR.IABS(KFMO).EQ.34).AND.(KFD(1).EQ.23.OR. - &KFD(1).EQ.24).AND.(KFD(2).EQ.23.OR.KFD(2).EQ.24)) MMED=2 - IF((KFMO.EQ.32.OR.IABS(KFMO).EQ.34).AND.(KFD(2).EQ.25.OR. - &KFD(2).EQ.35.OR.KFD(2).EQ.36)) MMED=3 - LOOP=1 - -C...Find where Breit-Wigners are required, else select discrete masses. - 100 DO 110 I=1,2 - KFCA=PYCOMP(KFD(I)) - IF(KFCA.GT.0) THEN - PMD(I)=PMAS(KFCA,1) - PGD(I)=PMAS(KFCA,2) - ELSE - PMD(I)=0D0 - PGD(I)=0D0 - ENDIF - IF(MSTP(42).LE.0.OR.PGD(I).LT.PARP(41)) THEN - MBW(I)=0 - PMG(I)=PMD(I) - RMG(I)=(PMG(I)/PMMX)**2 - ELSE - MBW(I)=1 - ENDIF - 110 CONTINUE - -C...Find allowed mass range and Breit-Wigner parameters. - DO 120 I=1,2 - IF(MOFSH.EQ.1.AND.LOOP.EQ.1.AND.MBW(I).EQ.1) THEN - PML(I)=PARP(42) - PMU(I)=PMMX-PARP(42) - IF(MBW(3-I).EQ.0) PMU(I)=MIN(PMU(I),PMMX-PMD(3-I)) - IF(PMU(I).LT.PML(I)+PARJ(64)) MBW(I)=-1 - ELSEIF(MBW(I).EQ.1.AND.MOFSH.NE.5) THEN - ILM=I - IF(MLM.EQ.2) ILM=3-I - PML(I)=MAX(CKIN(NOFF+2*ILM-1),PARP(42)) - IF(MBW(3-I).EQ.0) THEN - PMU(I)=PMMX-PMD(3-I) - ELSE - PMU(I)=PMMX-MAX(CKIN(NOFF+5-2*ILM),PARP(42)) - ENDIF - IF(CKIN(NOFF+2*ILM).GT.CKIN(NOFF+2*ILM-1)) PMU(I)= - & MIN(PMU(I),CKIN(NOFF+2*ILM)) - IF(I.EQ.MLM) PMU(I)=MIN(PMU(I),0.5D0*PMMX) - IF(MEQL.EQ.0) PMH(I)=MIN(PMU(I),0.5D0*PMMX) - IF(PMU(I).LT.PML(I)+PARJ(64)) MBW(I)=-1 - IF(MBW(I).EQ.1) THEN - ATL(I)=ATAN((PML(I)**2-PMD(I)**2)/(PMD(I)*PGD(I))) - ATU(I)=ATAN((PMU(I)**2-PMD(I)**2)/(PMD(I)*PGD(I))) - IF(MEQL.EQ.0) ATH(I)=ATAN((PMH(I)**2-PMD(I)**2)/(PMD(I)* - & PGD(I))) - ENDIF - ELSEIF(MBW(I).EQ.1.AND.MOFSH.EQ.5) THEN - ILM=I - IF(MLM.EQ.2) ILM=3-I - PML(I)=MAX(CKIN(48+I),PARP(42)) - PMU(I)=PMMX-MAX(CKIN(51-I),PARP(42)) - IF(MBW(3-I).EQ.0) PMU(I)=MIN(PMU(I),PMMX-PMD(3-I)) - IF(I.EQ.MLM) PMU(I)=MIN(PMU(I),0.5D0*PMMX) - IF(MEQL.EQ.0) PMH(I)=MIN(PMU(I),0.5D0*PMMX) - IF(PMU(I).LT.PML(I)+PARJ(64)) MBW(I)=-1 - IF(MBW(I).EQ.1) THEN - ATL(I)=ATAN((PML(I)**2-PMD(I)**2)/(PMD(I)*PGD(I))) - ATU(I)=ATAN((PMU(I)**2-PMD(I)**2)/(PMD(I)*PGD(I))) - IF(MEQL.EQ.0) ATH(I)=ATAN((PMH(I)**2-PMD(I)**2)/(PMD(I)* - & PGD(I))) - ENDIF - ENDIF - 120 CONTINUE - IF(MBW(1).LT.0.OR.MBW(2).LT.0.OR.(MBW(1).EQ.0.AND.MBW(2).EQ.0)) - &THEN - CALL PYERRM(3,'(PYOFSH:) no allowed decay product masses') - MINT(51)=1 - RETURN - ENDIF - -C...Calculation of partial width of resonance. - IF(MOFSH.EQ.1) THEN - -C..If only one integration, pick that to be the inner. - IF(MBW(1).EQ.0) THEN - PM2=PMD(1) - PMD(1)=PMD(2) - PGD(1)=PGD(2) - PML(1)=PML(2) - PMU(1)=PMU(2) - ELSEIF(MBW(2).EQ.0) THEN - PM2=PMD(2) - ENDIF - -C...Start outer loop of integration. - IF(MBW(1).EQ.1.AND.MBW(2).EQ.1) THEN - ATL2=ATAN((PML(2)**2-PMD(2)**2)/(PMD(2)*PGD(2))) - ATU2=ATAN((PMU(2)**2-PMD(2)**2)/(PMD(2)*PGD(2))) - NPT2=1 - XPT2(1)=1D0 - INX2(1)=0 - FMAX2=0D0 - ENDIF - 130 IF(MBW(1).EQ.1.AND.MBW(2).EQ.1) THEN - PM2S=PMD(2)**2+PMD(2)*PGD(2)*TAN(ATL2+XPT2(NPT2)*(ATU2-ATL2)) - PM2=MIN(PMU(2),MAX(PML(2),SQRT(MAX(0D0,PM2S)))) - ENDIF - RM2=(PM2/PMMX)**2 - -C...Start inner loop of integration. - PML1=PML(1) - PMU1=MIN(PMU(1),PMMX-PM2) - IF(MEQL.EQ.1) PMU1=MIN(PMU1,PM2) - ATL1=ATAN((PML1**2-PMD(1)**2)/(PMD(1)*PGD(1))) - ATU1=ATAN((PMU1**2-PMD(1)**2)/(PMD(1)*PGD(1))) - IF(PML1+PARJ(64).GE.PMU1.OR.ATL1+1D-7.GE.ATU1) THEN - FUNC2=0D0 - GOTO 180 - ENDIF - NPT1=1 - XPT1(1)=1D0 - INX1(1)=0 - FMAX1=0D0 - 140 PM1S=PMD(1)**2+PMD(1)*PGD(1)*TAN(ATL1+XPT1(NPT1)*(ATU1-ATL1)) - PM1=MIN(PMU1,MAX(PML1,SQRT(MAX(0D0,PM1S)))) - RM1=(PM1/PMMX)**2 - -C...Evaluate function value - inner loop. - FUNC1=SQRT(MAX(0D0,(1D0-RM1-RM2)**2-4D0*RM1*RM2)) - IF(MMED.EQ.1) FUNC1=FUNC1*((1D0-RM1-RM2)**2+8D0*RM1*RM2) - IF(MMED.EQ.2) FUNC1=FUNC1**3*(1D0+10D0*RM1+10D0*RM2+RM1**2+ - & RM2**2+10D0*RM1*RM2) - IF(FUNC1.GT.FMAX1) FMAX1=FUNC1 - FPT1(NPT1)=FUNC1 - -C...Go to next position in inner loop. - IF(NPT1.EQ.1) THEN - NPT1=NPT1+1 - XPT1(NPT1)=0D0 - INX1(NPT1)=1 - GOTO 140 - ELSEIF(NPT1.LE.8) THEN - NPT1=NPT1+1 - IF(NPT1.LE.4.OR.NPT1.EQ.6) ISH1=1 - ISH1=ISH1+1 - XPT1(NPT1)=0.5D0*(XPT1(ISH1)+XPT1(INX1(ISH1))) - INX1(NPT1)=INX1(ISH1) - INX1(ISH1)=NPT1 - GOTO 140 - ELSEIF(NPT1.LT.100) THEN - ISN1=ISH1 - 150 ISH1=ISH1+1 - IF(ISH1.GT.NPT1) ISH1=2 - IF(ISH1.EQ.ISN1) GOTO 160 - DFPT1=ABS(FPT1(ISH1)-FPT1(INX1(ISH1))) - IF(DFPT1.LT.PARP(43)*FMAX1) GOTO 150 - NPT1=NPT1+1 - XPT1(NPT1)=0.5D0*(XPT1(ISH1)+XPT1(INX1(ISH1))) - INX1(NPT1)=INX1(ISH1) - INX1(ISH1)=NPT1 - GOTO 140 - ENDIF - -C...Calculate integral over inner loop. - 160 FSUM1=0D0 - DO 170 IPT1=2,NPT1 - FSUM1=FSUM1+0.5D0*(FPT1(IPT1)+FPT1(INX1(IPT1)))* - & (XPT1(INX1(IPT1))-XPT1(IPT1)) - 170 CONTINUE - FUNC2=FSUM1*(ATU1-ATL1)/PARU(1) - 180 IF(MBW(1).EQ.1.AND.MBW(2).EQ.1) THEN - IF(FUNC2.GT.FMAX2) FMAX2=FUNC2 - FPT2(NPT2)=FUNC2 - -C...Go to next position in outer loop. - IF(NPT2.EQ.1) THEN - NPT2=NPT2+1 - XPT2(NPT2)=0D0 - INX2(NPT2)=1 - GOTO 130 - ELSEIF(NPT2.LE.8) THEN - NPT2=NPT2+1 - IF(NPT2.LE.4.OR.NPT2.EQ.6) ISH2=1 - ISH2=ISH2+1 - XPT2(NPT2)=0.5D0*(XPT2(ISH2)+XPT2(INX2(ISH2))) - INX2(NPT2)=INX2(ISH2) - INX2(ISH2)=NPT2 - GOTO 130 - ELSEIF(NPT2.LT.100) THEN - ISN2=ISH2 - 190 ISH2=ISH2+1 - IF(ISH2.GT.NPT2) ISH2=2 - IF(ISH2.EQ.ISN2) GOTO 200 - DFPT2=ABS(FPT2(ISH2)-FPT2(INX2(ISH2))) - IF(DFPT2.LT.PARP(43)*FMAX2) GOTO 190 - NPT2=NPT2+1 - XPT2(NPT2)=0.5D0*(XPT2(ISH2)+XPT2(INX2(ISH2))) - INX2(NPT2)=INX2(ISH2) - INX2(ISH2)=NPT2 - GOTO 130 - ENDIF - -C...Calculate integral over outer loop. - 200 FSUM2=0D0 - DO 210 IPT2=2,NPT2 - FSUM2=FSUM2+0.5D0*(FPT2(IPT2)+FPT2(INX2(IPT2)))* - & (XPT2(INX2(IPT2))-XPT2(IPT2)) - 210 CONTINUE - FSUM2=FSUM2*(ATU2-ATL2)/PARU(1) - IF(MEQL.EQ.1) FSUM2=2D0*FSUM2 - ELSE - FSUM2=FUNC2 - ENDIF - -C...Save result; second integration for user-selected mass range. - IF(LOOP.EQ.1) WIDW=FSUM2 - WID2=FSUM2 - IF(LOOP.EQ.1.AND.(CKIN(46).GE.CKIN(45).OR.CKIN(48).GE.CKIN(47) - & .OR.MAX(CKIN(45),CKIN(47)).GE.1.01D0*PARP(42))) THEN - LOOP=2 - GOTO 100 - ENDIF - RET1=WIDW - RET2=WID2/WIDW - -C...Select two decay product masses of a resonance. - ELSEIF(MOFSH.EQ.2.OR.MOFSH.EQ.5) THEN - 220 DO 230 I=1,2 - IF(MBW(I).EQ.0) GOTO 230 - PMBW=PMD(I)**2+PMD(I)*PGD(I)*TAN(ATL(I)+PYR(0)* - & (ATU(I)-ATL(I))) - PMG(I)=MIN(PMU(I),MAX(PML(I),SQRT(MAX(0D0,PMBW)))) - RMG(I)=(PMG(I)/PMMX)**2 - 230 CONTINUE - IF((MEQL.EQ.1.AND.PMG(MAX(1,MLM)).GT.PMG(MIN(2,3-MLM))).OR. - & PMG(1)+PMG(2)+PARJ(64).GT.PMMX) GOTO 220 - -C...Weight with matrix element (if none known, use beta factor). - FLAM=SQRT(MAX(0D0,(1D0-RMG(1)-RMG(2))**2-4D0*RMG(1)*RMG(2))) - IF(MMED.EQ.1) THEN - WTBE=FLAM*((1D0-RMG(1)-RMG(2))**2+8D0*RMG(1)*RMG(2)) - ELSEIF(MMED.EQ.2) THEN - WTBE=FLAM**3*(1D0+10D0*RMG(1)+10D0*RMG(2)+RMG(1)**2+ - & RMG(2)**2+10D0*RMG(1)*RMG(2)) - ELSEIF(MMED.EQ.3) THEN - WTBE=FLAM*(RMG(1)+FLAM**2/12D0) - ELSE - WTBE=FLAM - ENDIF - IF(WTBE.LT.PYR(0)) GOTO 220 - RET1=PMG(1) - RET2=PMG(2) - -C...Find suitable set of masses for initialization of 2 -> 2 processes. - ELSEIF(MOFSH.EQ.3) THEN - IF(MBW(1).NE.0.AND.MBW(2).EQ.0) THEN - PMG(1)=MIN(PMD(1),0.5D0*(PML(1)+PMU(1))) - PMG(2)=PMD(2) - ELSEIF(MBW(2).NE.0.AND.MBW(1).EQ.0) THEN - PMG(1)=PMD(1) - PMG(2)=MIN(PMD(2),0.5D0*(PML(2)+PMU(2))) - ELSE - IDIV=-1 - 240 IDIV=IDIV+1 - PMG(1)=MIN(PMD(1),0.1D0*(IDIV*PML(1)+(10-IDIV)*PMU(1))) - PMG(2)=MIN(PMD(2),0.1D0*(IDIV*PML(2)+(10-IDIV)*PMU(2))) - IF(IDIV.LE.9.AND.PMG(1)+PMG(2).GT.0.9D0*PMMX) GOTO 240 - ENDIF - RET1=PMG(1) - RET2=PMG(2) - -C...Evaluate importance of excluded tails of Breit-Wigners. - IF(MEQL.EQ.0.AND.MBW(1).EQ.1.AND.MBW(2).EQ.1.AND.PMD(1)+PMD(2) - & .GT.PMMX.AND.PMH(1).GT.PML(1).AND.PMH(2).GT.PML(2)) MEQL=2 - IF(MEQL.LE.1) THEN - VINT(80)=1D0 - DO 250 I=1,2 - IF(MBW(I).NE.0) VINT(80)=VINT(80)*1.25D0*(ATU(I)-ATL(I))/ - & PARU(1) - 250 CONTINUE - ELSE - VINT(80)=(1.25D0/PARU(1))**2*MAX((ATU(1)-ATL(1))* - & (ATH(2)-ATL(2)),(ATH(1)-ATL(1))*(ATU(2)-ATL(2))) - ENDIF - IF((ISUB.EQ.15.OR.ISUB.EQ.19.OR.ISUB.EQ.30.OR.ISUB.EQ.35).AND. - & MSTP(43).NE.2) VINT(80)=2D0*VINT(80) - IF(ISUB.EQ.22.AND.MSTP(43).NE.2) VINT(80)=4D0*VINT(80) - IF(MEQL.GE.1) VINT(80)=2D0*VINT(80) - -C...Pick one particle to be the lighter (if improves efficiency). - ELSEIF(MOFSH.EQ.4) THEN - IF(MEQL.EQ.0.AND.MBW(1).EQ.1.AND.MBW(2).EQ.1.AND.PMD(1)+PMD(2) - & .GT.PMMX.AND.PMH(1).GT.PML(1).AND.PMH(2).GT.PML(2)) MEQL=2 - 260 IF(MEQL.EQ.2) MLM=INT(1.5D0+PYR(0)) - -C...Select two masses according to Breit-Wigner + flat in s + 1/s. - DO 270 I=1,2 - IF(MBW(I).EQ.0) GOTO 270 - PMV=PMU(I) - IF(MEQL.EQ.2.AND.I.EQ.MLM) PMV=PMH(I) - ATV=ATU(I) - IF(MEQL.EQ.2.AND.I.EQ.MLM) ATV=ATH(I) - RBR=PYR(0) - IF((ISUB.EQ.15.OR.ISUB.EQ.19.OR.ISUB.EQ.22.OR.ISUB.EQ.30.OR. - & ISUB.EQ.35).AND.MSTP(43).NE.2) RBR=2D0*RBR - IF(RBR.LT.0.8D0) THEN - PMSR=PMD(I)**2+PMD(I)*PGD(I)*TAN(ATL(I)+PYR(0)*(ATV-ATL(I))) - PMG(I)=MIN(PMV,MAX(PML(I),SQRT(MAX(0D0,PMSR)))) - ELSEIF(RBR.LT.0.9D0) THEN - PMG(I)=SQRT(MAX(0D0,PML(I)**2+PYR(0)*(PMV**2-PML(I)**2))) - ELSEIF(RBR.LT.1.5D0) THEN - PMG(I)=PML(I)*(PMV/PML(I))**PYR(0) - ELSE - PMG(I)=SQRT(MAX(0D0,PML(I)**2*PMV**2/(PML(I)**2+PYR(0)* - & (PMV**2-PML(I)**2)))) - ENDIF - 270 CONTINUE - IF((MEQL.GE.1.AND.PMG(MAX(1,MLM)).GT.PMG(MIN(2,3-MLM))).OR. - & PMG(1)+PMG(2)+PARJ(64).GT.PMMX) THEN - IF(MINT(48).EQ.1.AND.MSTP(171).EQ.0) THEN - NGEN(0,1)=NGEN(0,1)+1 - NGEN(MINT(1),1)=NGEN(MINT(1),1)+1 - GOTO 260 - ELSE - MINT(51)=1 - RETURN - ENDIF - ENDIF - RET1=PMG(1) - RET2=PMG(2) - -C...Give weight for selected mass distribution. - VINT(80)=1D0 - DO 280 I=1,2 - IF(MBW(I).EQ.0) GOTO 280 - PMV=PMU(I) - IF(MEQL.EQ.2.AND.I.EQ.MLM) PMV=PMH(I) - ATV=ATU(I) - IF(MEQL.EQ.2.AND.I.EQ.MLM) ATV=ATH(I) - F0=PMD(I)*PGD(I)/((PMG(I)**2-PMD(I)**2)**2+ - & (PMD(I)*PGD(I))**2)/PARU(1) - F1=1D0 - F2=1D0/PMG(I)**2 - F3=1D0/PMG(I)**4 - FI0=(ATV-ATL(I))/PARU(1) - FI1=PMV**2-PML(I)**2 - FI2=2D0*LOG(PMV/PML(I)) - FI3=1D0/PML(I)**2-1D0/PMV**2 - IF((ISUB.EQ.15.OR.ISUB.EQ.19.OR.ISUB.EQ.22.OR.ISUB.EQ.30.OR. - & ISUB.EQ.35).AND.MSTP(43).NE.2) THEN - VINT(80)=VINT(80)*20D0/(8D0+(FI0/F0)*(F1/FI1+6D0*F2/FI2+ - & 5D0*F3/FI3)) - ELSE - VINT(80)=VINT(80)*10D0/(8D0+(FI0/F0)*(F1/FI1+F2/FI2)) - ENDIF - VINT(80)=VINT(80)*FI0 - 280 CONTINUE - IF(MEQL.GE.1) VINT(80)=2D0*VINT(80) - ENDIF - - RETURN - END - -C*********************************************************************** diff --git a/Generators/PythiaExo_i/src/PythiaModified/pyrhad.F b/Generators/PythiaExo_i/src/PythiaModified/pyrhad.F deleted file mode 100644 index e322ddfef95f922c123cfc07f9c497cf6f8260cd..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/PythiaModified/pyrhad.F +++ /dev/null @@ -1,1699 +0,0 @@ -C********************************************************************* - -C...PYGGPRO -C Sets the PROBGG parameter in the fragmentation - -C... Double precision and integer declarations. - SUBROUTINE PYGGPRO(PROB) - - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - INTEGER IKFRH(20),IKCHGRH(20),IKANTRH(20) - REAL*8 PROBGG - COMMON/RHADB/IKFRH,IKCHGRH,IKANTRH,PROBGG - - - PROBGG=PROB - - write(*,*) 'Gluino ball formation probability has been set to ' - & ,PROBGG - - RETURN - END - - - -C********************************************************************* - -C...PYGLFR -C...Fragments the string near to a gluino, to form a gluino-hadron, -C...either by producing a new g-g pair or two new q-qbar ones. - - SUBROUTINE PYGLFRRE(IERR) - -C... Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) -C INTEGER PYK,PYCHGE,PYCOMP -C... Parameter statement to help give large particle numbers -C... (left- and righthanded SUSY, excited fermions). - PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KEXCIT=4000000) -C... Commonblocks. - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) -C... Note that dimensions below grew from 4000 to 8000 in Pythia 6.2! - COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5) - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) - COMMON/PYINT1/MINT(400),VINT(400) - COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2) - COMMON/PYDAT4/CHAF(500,2) - CHARACTER CHAF*16 - SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYPARS/,/PYINT1/, - & /PYINT2/ - CHARACTER*16 CHRHAD - - -C... Local array. - DIMENSION PSUM(5),KFSAV(2),PMSAV(2),PSAV(2,5) - - INTEGER IKFRH(20),IKCHGRH(20),IKANTRH(20) - integer ihad1,ihad2 - REAL*8 PROBGG - COMMON/RHADB/IKFRH,IKCHGRH,IKANTRH,PROBGG - -C... Free parameter: relative probability for gluino-gluon-ball. -C... (But occasional low-mass string will never become it anyway.) -c Rasmus: Moved to rhadb common block to make configurable -c PROBGG=0.1D0 - -C... Free parameter: gluon constituent mass. - PMGLU=0.7D0 - -C... Free parameter: max kinetic energy in gluino-hadron. - PMKIN=0.5D0 - -C... Switch off popcorn baryon production. (Not imperative, but more -C... failed events when popcorn is allowed.) - MSTJ12=MSTJ(12) - MSTJ(12)=1 - -C... Convenient shorthand. - KFGL=KSUSY1+21 - -C*** Reset error code. - IERR=0 - -c write(*,*) 'In PYGLFRRE' - -C... Loopback point for serious problems, with new try. - LOOP=0 - CALL PYEDIT(21) - CHGSAV=PYP(0,6) - 90 LOOP=LOOP+1 - IF(LOOP.GT.1) CALL PYEDIT(22) - -C*** Begin new code for testing. -C... Find if gluino put first or last in closed loop. - 400 IBEGCL=0 - IENDCL=0 - IF(K(1,2).EQ.KFGL.AND.K(1,1).LE.2) IBEGCL=1 - DO 410 I=2,N - IF(K(I,2).EQ.KFGL) THEN - IF(K(I-1,1).NE.2.AND.K(I,1).LE.2) IBEGCL=I - IF(K(I,1).EQ.1) IENDCL=I - ENDIF - 410 CONTINUE - IF(IBEGCL.GT.0) IENDCL=0 - -C... Range of system beginning or ending with gluino. - IF(IBEGCL.NE.0) THEN - IBEG=IBEGCL - IEND=IBEG - 420 IEND=IEND+1 - IF(IEND.LT.N.AND.K(IEND,1).EQ.2) GOTO 420 - IF(IEND.GT.N) IEND=N - ELSEIF(IENDCL.NE.0) THEN - IEND=IENDCL - IBEG=IEND - 430 IBEG=IBEG-1 -C JK REMOVING COMPILER WARNING - IF(IBEG.GE.2.AND.K(IBEG-1,1).EQ.2) THEN - 431 IEND=IEND+1 - IF(IEND.LT.N.AND.K(IEND,1).EQ.2) GOTO 431 - IF(IEND.GT.N) IEND=N - ENDIF -C JK - ENDIF - -C... Count number of gluinos in system. Error return if only gluinos. - IF(IBEGCL.NE.0.OR.IENDCL.NE.0) THEN - WRITE(*,*) ' Gluino found in closed string; ', - & ' special processing begun ' - NGLSYS=0 - DO 435 I=IBEG,IEND - IF(K(I,2).EQ.KFGL) NGLSYS=NGLSYS+1 - 435 CONTINUE - IF(NGLSYS.EQ.IEND-IBEG+1) THEN - IERR=1 - MSTJ(12)=MSTJ12 - WRITE(*,*) ' Fail to fragment closed string of gluinos only' - RETURN - ENDIF - -C... Decide to split system at random gluon. - 440 ISPLIT=IBEG+INT(PYR(0)*(IEND+1-IBEG)) - IF(ISPLIT.GT.IEND.OR.K(ISPLIT,2).EQ.KFGL) GOTO 440 - -C... Copy system from ISPLIT to end, beginning with a d or u quark. - KFSPL=INT(1.5D0+PYR(0)) - DO 470 I=ISPLIT,IEND - N=N+1 - DO 450 J=1,5 - K(N,J)=K(I,J) - P(N,J)=P(I,J) - V(N,J)=V(I,J) - 450 CONTINUE - K(I,1)=K(I,1)+10 - K(I,4)=N - K(I,5)=N - K(N,1)=2 - K(N,3)=I - IF(I.EQ.ISPLIT) THEN - K(N,2)=KFSPL - DO 460 J=1,5 - P(N,J)=0.5D0*P(N,J) - 460 CONTINUE - ENDIF - 470 CONTINUE - -C... Copy system from beginning to ISPLIT, ending with a dbar or ubar quark. - DO 500 I=IBEG,ISPLIT - N=N+1 - DO 480 J=1,5 - K(N,J)=K(I,J) - P(N,J)=P(I,J) - V(N,J)=V(I,J) - 480 CONTINUE - K(I,1)=K(I,1)+10 - K(I,4)=N - K(I,5)=N - K(N,1)=2 - K(N,3)=I - IF(I.EQ.ISPLIT) THEN - K(N,1)=1 - K(N,2)=-KFSPL - DO 490 J=1,5 - P(N,J)=0.5D0*P(N,J) - 490 CONTINUE - ENDIF - 500 CONTINUE - -C... Loop back in case both gluinos need to be addressed this way. - GOTO 400 - ENDIF -C*** End new code for testing. - -C... Take copy of string system(s), leaving extra free slot after gluino. -C... (Eventually to be overwritten by one q and one qbar string break.) - NOLD=N - NGLUI=0 - DO 120 I=1,NOLD - ICOPY=0 - IF(K(I,1).EQ.2) ICOPY=1 - IF(K(I,1).EQ.1.AND.I.GE.2) THEN - IF(K(I-1,1).EQ.12) ICOPY=1 - ENDIF - IF(ICOPY.EQ.1) THEN - N=N+1 - DO 100 J=1,5 - K(N,J)=K(I,J) - P(N,J)=P(I,J) - V(N,J)=V(I,J) - 100 CONTINUE - K(I,1)=K(I,1)+10 - K(I,4)=N - K(I,5)=N - K(N,3)=I - IF(K(I,2).EQ.KFGL) THEN - NGLUI=NGLUI+1 - N=N+1 - DO 110 J=1,5 - K(N,J)=K(N-1,J) - P(N,J)=0D0 - V(N,J)=V(I,J) - 110 CONTINUE - K(I,5)=N - K(N,2)=21 - ENDIF - ENDIF - 120 CONTINUE - -C... Loop over (up to) two gluinos per event. - DO 300 IGLUI=1,NGLUI - -C... Identify position of gluino (randomize order of treatment). - IGL=0 - NGL=0 - DO 130 I=1,N - IF(K(I,1).EQ.2.AND.K(I,2).EQ.KFGL) THEN - NGL=NGL+1 - IF(IGLUI.EQ.NGLUI) THEN - IGL=I - ELSEIF(NGL.EQ.1) THEN - IF(PYR(0).LT.0.5D0) IGL=I - ELSEIF(IGL.EQ.0) THEN - IGL=I - ENDIF - ENDIF - 130 CONTINUE - -C... Identify range of partons on string the gluino belongs to. - IMIN=IGL - 140 IMIN=IMIN-1 - IF(K(IMIN-1,1).EQ.2) GOTO 140 - IMAX=IGL - 150 IMAX=IMAX+1 - IF(K(IMAX,1).EQ.2) GOTO 150 - -C... Find mass of this gluino-string. - DO 170 J=1,5 - PSUM(J)=0D0 - DO 160 I=IMIN,IMAX - PSUM(J)=PSUM(J)+P(I,J) - 160 CONTINUE - 170 CONTINUE - PSUM(5)=SQRT(MAX(0D0,PSUM(4)**2-PSUM(1)**2-PSUM(2)**2- - & PSUM(3)**2)) - -C... If low-mass, then consider gluino-hadron already formed. - IF(PSUM(5).LE.P(IGL,5)+P(IMIN,5)+P(IMAX,5)+PMKIN) THEN - DO 180 I=IMIN,IMAX - K(I,1)=15+IGLUI - 180 CONTINUE - GOTO 300 - ENDIF - -C... Else break string by production of new gg or two new qqbar pairs. -C... (Also diquarks allowed, but not popcorn, and not two adjacent.) - IF(PYR(0).LT.PROBGG) THEN -C... Let a gluon occupy two slots, to make administration work the same -C... way as for the qqbar case. - KFSAV(1)=21 - KFSAV(2)=21 - PMSAV(1)=0.5D0*PMGLU - PMSAV(2)=0.5D0*PMGLU - ELSE - 185 CALL PYDCYK(K(IMIN,2),0,KFSAV(1),KFDUM) - CALL PYDCYK(K(IMAX,2),0,KFSAV(2),KFDUM) - IF(IABS(KFSAV(1)).GT.10.AND.IABS(KFSAV(2)).GT.10) GOTO 185 - IF(IABS(KFSAV(1)).GT.10.AND.IABS(K(IGL-1,2)).GT.10) GOTO 185 - IF(IABS(KFSAV(2)).GT.10.AND.IABS(K(IGL+2,2)).GT.10) GOTO 185 - KFSAV(1)=ISIGN(MOD(IABS(KFSAV(1)),10000),KFSAV(1)) - KFSAV(2)=ISIGN(MOD(IABS(KFSAV(2)),10000),KFSAV(2)) - MSTJ(93)=1 - PMSAV(1)=PYMASS(KFSAV(1)) - MSTJ(93)=1 - PMSAV(2)=PYMASS(KFSAV(2)) - ENDIF - - KFSVMX=MAX(IABS(KFSAV(1)),IABS(KFSAV(2))) - KFSVMN=MIN(IABS(KFSAV(1)),IABS(KFSAV(2))) - -C... Mass of gluino-hadron. - PMGSAV=P(IGL,5) - PMGB=P(IGL,5)+0.7 - -C... Pick at random order in which both sides of gluino string break. - ISIDE=INT(1.5D0+PYR(0)) - DO 220 ISDE=1,2 - IF(ISDE.EQ.1) IS=ISIDE - IF(ISDE.EQ.2) IS=3-ISIDE - -C...Pick momentum sharing according to fragmentation function as if bottom. - M11SAV=MSTJ(11) - PMBSAV=PARF(105) - MSTJ(11)=4 - PARF(105)=PMGSAV - CALL PYZDIS(5,0,PMGB**2,ZGL) - MSTJ(11)=M11SAV - PARF(105)=PMBSAV - ZGL=MAX(0.9D0,MIN(0.9999D0,ZGL)) - DO 190 J=1,5 - PSAV(IS,J)=(1D0-ZGL)*P(IGL,J) - P(IGL,J)=ZGL*P(IGL,J) - 190 CONTINUE - -C... Target gluino-hadron mass for this stage of momentum reshuffling. - PMOLD=P(IGL,5) - IF(ISDE.EQ.1) PMNEW=PMGSAV+PMSAV(IS) - IF(ISDE.EQ.2) PMNEW=PMGB - -C... Recoiling parton from which to shuffle momentum. System momentum. - IF(IS.EQ.1) IREC=IGL-1 - IF(IS.EQ.2) IREC=IGL+2 - 200 DO 210 J=1,4 - PSUM(J)=P(IGL,J)+P(IREC,J) - 210 CONTINUE - -C... Boost to rest frame of system, and align gluino along +z axis. - CALL PYROBO(IGL,IGL,0D0,0D0,-(PSUM(1)/PSUM(4)), - & -(PSUM(2)/PSUM(4)),-(PSUM(3)/PSUM(4))) - CALL PYROBO(IREC,IREC,0D0,0D0,-(PSUM(1)/PSUM(4)), - & -(PSUM(2)/PSUM(4)),-(PSUM(3)/PSUM(4))) - PHI=PYANGL(P(IGL,1),P(IGL,2)) - CALL PYROBO(IGL,IGL,0D0,-PHI,0D0,0D0,0D0) - CALL PYROBO(IREC,IREC,0D0,-PHI,0D0,0D0,0D0) - THETA=PYANGL(P(IGL,3),P(IGL,1)) - CALL PYROBO(IGL,IGL,-THETA,0D0,0D0,0D0,0D0) - CALL PYROBO(IREC,IREC,-THETA,0D0,0D0,0D0,0D0) - -C... Calculate new kinematics in this frame, for desired gluino mass. - ETOT=P(IGL,4)+P(IREC,4) - IF(ETOT.GT.PMNEW+P(IREC,5)) THEN - IFAIL=0 - PZNEW=0.5D0 - & *SQRT(MAX(0D0,(ETOT**2-PMNEW**2-P(IREC,5)**2)**2- - & 4D0*PMNEW**2*P(IREC,5)**2))/ETOT - P(IGL,3)=PZNEW - P(IGL,4)=SQRT(PZNEW**2+PMNEW**2) - P(IGL,5)=PMNEW - P(IREC,3)=-PZNEW - P(IREC,4)=SQRT(PZNEW**2+P(IREC,5)**2) - -C... If not enough momentum, take what can be taken. - ELSE - IFAIL=1 - PMOLD=ETOT-P(IREC,5) - P(IGL,3)=0D0 - P(IGL,4)=PMOLD - P(IGL,5)=PMOLD - P(IREC,3)=0D0 - P(IREC,4)=P(IREC,5) - ENDIF - -C... Bost back to lab frame. - CALL PYROBO(IGL,IGL,THETA,PHI,PSUM(1)/PSUM(4), - & PSUM(2)/PSUM(4),PSUM(3)/PSUM(4)) - CALL PYROBO(IREC,IREC,THETA,PHI,PSUM(1)/PSUM(4), - & PSUM(2)/PSUM(4),PSUM(3)/PSUM(4)) - -C... Loop back when not enough momentum could be shuffled. -C... (As long as there is something left on either side.) - IF(IFAIL.EQ.1) THEN - 215 IF(IS.EQ.1.AND.IREC.GT.IMIN) THEN - IREC=IREC-1 - GOTO 200 - ELSEIF(IS.EQ.2.AND.IREC.LT.IMAX) THEN - IREC=IREC+1 - GOTO 200 - ELSEIF(ISDE.EQ.2.AND.IS.EQ.3-ISIDE) THEN - IS=ISIDE - IREC=IRECSV - GOTO 215 - ENDIF - ENDIF - -C... End loop over fragmentation of two sides around gluino. - IRECSV=IREC - 220 CONTINUE - -C... New slot at end of record for gluino R-hadron. - DO 230 J=1,5 - K(N+1,J)=0 - P(N+1,J)=P(IGL,J) - V(N+1,J)=V(IGL,J) - 230 CONTINUE - -C... Status and code of this slot. - K(N+1,1)=15+IGLUI - -C... Gluino-ball. - IF(KFSVMX.EQ.21) THEN - K(N+1,2)=KSUSY1+993 -C... Gluino-meson. - ELSEIF(KFSVMX.LT.10) THEN - IF(KFSVMX.eq.KFSVMN.and.KFSVMX.gt.1) then - KFSVMN=1 - KFSVMX=1 - endif - K(N+1,2)=KSUSY1+9000+100*KFSVMX+10*KFSVMN+3 - IF(KFSVMX.EQ.KFSVMN) THEN - ELSEIF(MOD(KFSVMX,2).EQ.0) THEN - IF(KFSVMX.EQ.KFSAV(1).OR.KFSVMX.EQ.KFSAV(2)) - & K(N+1,2)=-K(N+1,2) - ELSE - IF(KFSVMX.EQ.-KFSAV(1).OR.KFSVMX.EQ.-KFSAV(2)) - & K(N+1,2)=-K(N+1,2) - ENDIF -C... Gluino-baryon. - ELSE - KFSVX1=KFSVMX/1000 - KFSVX2=MOD(KFSVMX/100,10) - KFA=MAX(KFSVX1,KFSVX2,KFSVMN) - KFC=MIN(KFSVX1,KFSVX2,KFSVMN) - KFB=KFSVX1+KFSVX2+KFSVMN-KFA-KFC - K(N+1,2)=SIGN(KSUSY1+90000+1000*KFA+100*KFB+10*KFC+2, - & -KFSAV(1)) - if(iabs(K(N+1,2)).ne.1093212) goto 90 - ENDIF - - CALL PYNAME(K(N+1,2),CHRHAD) - print*, 'R-hadron KF = ',K(N+1,2),' and name ',CHRHAD -c print*, 'RMA KC = ',PYCOMP(K(N+1,2)) -c print*, 'RMA CHAF = ',CHAF(PYCOMP(K(N+1,2)),1),', ' -c & ,CHAF(PYCOMP(K(N+1,2)),1) - K(N+1,3)=K(IGL,3) - N=N+1 - -C... Code and momentum of two new string endpoints. - K(IGL,2)=KFSAV(1) - K(IGL+1,2)=KFSAV(2) - IF(KFSAV(1).NE.21) K(IGL,1)=1 - DO 240 J=1,5 - P(IGL,J)=PSAV(1,J) - P(IGL+1,J)=PSAV(2,J) - 240 CONTINUE - -C... End of loop over two gluinos. - 300 CONTINUE - -C... Cleanup: remove zero-energy gluons. - NNOW=N - N=NOLD - DO 330 I=NOLD+1,NNOW - IF(K(I,2).EQ.21.AND.P(I,4).LT.1D-10) THEN - ELSEIF(I.EQ.N+1) THEN - N=N+1 - ELSE - N=N+1 - DO 320 J=1,5 - K(N,J)=K(I,J) - P(N,J)=P(I,J) - V(N,J)=V(I,J) - 320 CONTINUE - ENDIF - 330 CONTINUE - -C... Finish off with standard hadronization. -C... Note that the R-hadrons are not affected here, since they -C... (deliberately erroneously) have been bookkept as decayed. - - CALL PYEXEC - -C... Restore code of gluino-hadrons to non-fragmented numbers. - N6=0 - N7=0 - DO 340 I=1,N - IF(K(I,1).EQ.16.OR.K(I,1).EQ.17) K(I,1)=K(I,1)-10 -C... First R-hadron - IF(K(I,1).EQ.6) then - ihad1=i -c WRITE(*,*) 'R-hadron 1 chg:',PYCHGE(K(I,2))/3D0,K(I,2) - N6=N6+1 - ENDIF -C... Second R-hadron - IF(K(I,1).EQ.7) then - N7=N7+1 - ihad2=i -c WRITE(*,*) 'R-hadron 2 chg:',PYCHGE(K(I,2))/3D0,K(I,2) - ENDIF - - 340 CONTINUE - IF(N6.GT.1.OR.N7.GT.1) MSTU(24)=1 - -C... Extracheck charge. - - chgnew=pyp(0,6) - - IF(ABS(CHGNEW-CHGSAV).GT.0.1D0) MSTU(24)=1 -c WRITE(*,*) 'CHGNEW CHGSAV',CHGNEW,CHGSAV - -C... In case of trouble, make up to five attempts. - IF(MSTU(24).NE.0.AND.LOOP.LT.5) THEN - WRITE(*,*) '...give it new try...' - MSTU(23)=MSTU(23)-1 - GOTO 90 - ELSEIF(MSTU(24).NE.0) THEN - WRITE(*,*) '...but still fail after repeated attempts!' -C*** Set error flag. - IERR=2 - ELSEIF(MSTU(24).EQ.0.AND.LOOP.GT.1) THEN - WRITE(*,*) '...and now it worked!' - ENDIF - -C... Finished. Restore baryon production model. - MSTJ(12)=MSTJ12 -c call pylist(2) - RETURN - END - -C********************************************************************* - - - -C...PYGLDC -C...Decays the gluino inside a gluino-hadron. - - SUBROUTINE PYGLDC - -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) -C INTEGER PYK,PYCHGE,PYCOMP -C...Parameter statement to help give large particle numbers -C...(left- and righthanded SUSY, excited fermions). - PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KEXCIT=4000000) -C...Commonblocks. - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) -C...Note that dimensions below grew from 4000 to 8000 in Pythia 6.2! - COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5) - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) - COMMON/PYINT1/MINT(400),VINT(400) - COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2) - SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYPARS/,/PYINT1/, - &/PYINT2/ - -C...Optional offset of constituent quark/diquark mass, -C...representing gluon cloud around gluino not part of the decay. - PMOFF = 0.2D0 - -C...The probability that it has spin 1. -C...(Except for identical flavours, where spin 1 is only possibility.) -C...(Recall that all R-baryon codes were given as if spin 1, sloppily.) - PROBS1=0.5D0 - -C...Loop through to find R-hadrons. - DO 150 I=1,N -C...If only one of the R-hadrons should decay inside the detector, -C...you could here pick at random whether to allow the one with -C...K(I,1) = 6 or the one with =7. (Where the random choice of course -C...could depend on the position of an imagined displaced vertex.) - IF(K(I,1).EQ.6.OR.K(I,1).EQ.7) THEN - -C...Begin resolve R-hadron flavour content to q + qbar or q + qq. - KFRH=(IABS(K(I,2))-KSUSY1)/10 -C...Gluino - g : split g to u ubar or d dbar. - IF(KFRH.LT.100) THEN - KF1=1+INT(0.5D0+PYR(0)) - KF2=-KF1 - ELSEIF(KFRH.LT.1000) THEN -C...Gluino-meson: split to q + qbar. - KFRH=KFRH-900 - KF1=KFRH/10 - KF2=-MOD(KFRH,10) - IF(MOD(KF1,2).EQ.1) THEN - KF1=MOD(KFRH,10) - KF2=-(KFRH/10) - ENDIF -c...Gluino-baryon: split to q + qq (diquark). Pick diquark at random. - ELSE - KFRH=KFRH-9000 - KFA=KFRH/100 - KFB=MOD(KFRH/10,10) - KFC=MOD(KFRH,10) - RDIQ=3D0*PYR(0) - IF(RDIQ.LT.1D0) THEN - KF1=KFA - KF2=1000*KFB+100*KFC+3 - IF(KFB.NE.KFC.AND.PROBS1.LT.PYR(0)) KF2=KF2-2 - ELSEIF(RDIQ.LT.2D0) THEN - KF1=KFB - KF2=1000*KFA+100*KFC+3 - IF(KFA.NE.KFC.AND.PROBS1.LT.PYR(0)) KF2=KF2-2 - ELSE - KF1=KFC - KF2=1000*KFA+100*KFB+3 - IF(KFA.NE.KFB.AND.PROBS1.LT.PYR(0)) KF2=KF2-2 - ENDIF - ENDIF -C...Flip for anti-R-hadron. - IF(K(I,2).LT.0) THEN - KFSV=KF1 - KF1=-KF2 - KF2=-KFSV - ENDIF - -C...Subdivide R-hadron into gluino + 2 light (di)quarks in new slots. - DO 120 I1=N+1,N+3 - K(I1,1)=3 - K(I1,3)=I - K(I1,4)=0 - K(I1,5)=0 - DO 110 J=1,5 - V(I1,J)=0D0 - 110 CONTINUE - 120 CONTINUE - -C...Store new flavours. - K(N+1,2)=KSUSY1+21 - K(N+2,2)=KF1 - K(N+3,2)=KF2 - -C...Set up colour flow. - K(N+1,4)=MSTU(5)*(N+3) - K(N+1,5)=MSTU(5)*(N+2) - K(N+2,4)=MSTU(5)*(N+1) - K(N+3,5)=MSTU(5)*(N+1) - -C...Define effective quark/diquark masses. - MSTJ(93)=1 - PM1=PYMASS(KF1)+PMOFF - MSTJ(93)=1 - PM2=PYMASS(KF2)+PMOFF - -C...Share gluino"hadron" momentum with two light quarks. - FAC1=PM1/P(I,5) - FAC2=PM2/P(I,5) - DO 130 J=1,5 - P(N+1,J)=(1D0-FAC1-FAC2)*P(I,J) - P(N+2,J)=FAC1*P(I,J) - P(N+3,J)=FAC2*P(I,J) - 130 CONTINUE - -C...If you want a displaced vertex, you could also write that info -C...into the V array, but you have to calculate that vertex yourself. - -C...Mark R-hadron decayed and update number counter. - K(I,1)=K(I,1)+10 - K(I,4)=N+1 - K(I,5)=N+3 - N=N+3 - -C...Let gluino decay now. - CALL PYRESD(N-2) - -C...End of loop over two R-hadrons. - ENDIF - 150 CONTINUE - -C...And then the decay products can fragment, etc. - CALL PYEXEC - - - RETURN - END - - -CCCCCCCCCCCC - -C********************************************************************* - -C...PYGLFR -C... Gluino fragmentation for Regge model - - SUBROUTINE PYGLFR(IERR) - -C... Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) -C INTEGER PYK,PYCHGE,PYCOMP -C... Parameter statement to help give large particle numbers -C... (left- and righthanded SUSY, excited fermions). - PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KEXCIT=4000000) -C... Commonblocks. - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) -C... Note that dimensions below grew from 4000 to 8000 in Pythia 6.2! - COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5) - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) - COMMON/PYINT1/MINT(400),VINT(400) - COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2) - SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYPARS/,/PYINT1/, - & /PYINT2/ -C... Local array. - DIMENSION PSUM(5),KFSAV(2),PMSAV(2),PSAV(2,5) - - INTEGER IKFRH(20),IKCHGRH(20),IKANTRH(20) - integer ihad1,ihad2 - REAL*8 PROBGG - COMMON/RHADB/IKFRH,IKCHGRH,IKANTRH,PROBGG - CHARACTER*16 CHRHAD - -C... Free parameter: relative probability for gluino-gluon-ball. -C... (But occasional low-mass string will never become it anyway.) -c Rasmus: Moved to rhadb common block to make configurable -c PROBGG=0.1D0 - -C... Free parameter: gluon constituent mass. - PMGLU=0.7D0 - -C... Free parameter: max kinetic energy in gluino-hadron. - PMKIN=0.5D0 - -C... Switch off popcorn baryon production. (Not imperative, but more -C... failed events when popcorn is allowed.) - MSTJ12=MSTJ(12) - MSTJ(12)=1 - -C... Convenient shorthand. - KFGL=KSUSY1+21 - -C*** Reset error code. - IERR=0 - - write(*,*) 'In PYGLFR' - -C... Loopback point for serious problems, with new try. - LOOP=0 - CALL PYEDIT(21) - CHGSAV=PYP(0,6) - 90 LOOP=LOOP+1 - IF(LOOP.GT.1) CALL PYEDIT(22) - -C*** Begin new code for testing. -C... Find if gluino put first or last in closed loop. - 400 IBEGCL=0 - IENDCL=0 - IF(K(1,2).EQ.KFGL.AND.K(1,1).LE.2) IBEGCL=1 - DO 410 I=2,N - IF(K(I,2).EQ.KFGL) THEN - IF(K(I-1,1).NE.2.AND.K(I,1).LE.2) IBEGCL=I - IF(K(I,1).EQ.1) IENDCL=I - ENDIF - 410 CONTINUE - IF(IBEGCL.GT.0) IENDCL=0 - -C... Range of system beginning or ending with gluino. - IF(IBEGCL.NE.0) THEN - IBEG=IBEGCL - IEND=IBEG - 420 IEND=IEND+1 - IF(IEND.LT.N.AND.K(IEND,1).EQ.2) GOTO 420 - IF(IEND.GT.N) IEND=N - ELSEIF(IENDCL.NE.0) THEN - IEND=IENDCL - IBEG=IEND - 430 IBEG=IBEG-1 -C JK REMOVING COMPILER WARNING - IF(IBEG.GE.2.AND.K(IBEG-1,1).EQ.2) THEN - 431 IEND=IEND+1 - IF(IEND.LT.N.AND.K(IEND,1).EQ.2) GOTO 431 - IF(IEND.GT.N) IEND=N - ENDIF -C JK - ENDIF - -C... Count number of gluinos in system. Error return if only gluinos. - IF(IBEGCL.NE.0.OR.IENDCL.NE.0) THEN - WRITE(*,*) ' Gluino found in closed string; ', - & ' special processing begun ' - NGLSYS=0 - DO 435 I=IBEG,IEND - IF(K(I,2).EQ.KFGL) NGLSYS=NGLSYS+1 - 435 CONTINUE - IF(NGLSYS.EQ.IEND-IBEG+1) THEN - IERR=1 - MSTJ(12)=MSTJ12 - WRITE(*,*) ' Fail to fragment closed string of gluinos only' - RETURN - ENDIF - -C... Decide to split system at random gluon. - 440 ISPLIT=IBEG+INT(PYR(0)*(IEND+1-IBEG)) - IF(ISPLIT.GT.IEND.OR.K(ISPLIT,2).EQ.KFGL) GOTO 440 - -C... Copy system from ISPLIT to end, beginning with a d or u quark. - KFSPL=INT(1.5D0+PYR(0)) - DO 470 I=ISPLIT,IEND - N=N+1 - DO 450 J=1,5 - K(N,J)=K(I,J) - P(N,J)=P(I,J) - V(N,J)=V(I,J) - 450 CONTINUE - K(I,1)=K(I,1)+10 - K(I,4)=N - K(I,5)=N - K(N,1)=2 - K(N,3)=I - IF(I.EQ.ISPLIT) THEN - K(N,2)=KFSPL - DO 460 J=1,5 - P(N,J)=0.5D0*P(N,J) - 460 CONTINUE - ENDIF - 470 CONTINUE - -C... Copy system from beginning to ISPLIT, ending with a dbar or ubar quark. - DO 500 I=IBEG,ISPLIT - N=N+1 - DO 480 J=1,5 - K(N,J)=K(I,J) - P(N,J)=P(I,J) - V(N,J)=V(I,J) - 480 CONTINUE - K(I,1)=K(I,1)+10 - K(I,4)=N - K(I,5)=N - K(N,1)=2 - K(N,3)=I - IF(I.EQ.ISPLIT) THEN - K(N,1)=1 - K(N,2)=-KFSPL - DO 490 J=1,5 - P(N,J)=0.5D0*P(N,J) - 490 CONTINUE - ENDIF - 500 CONTINUE - -C... Loop back in case both gluinos need to be addressed this way. - GOTO 400 - ENDIF -C*** End new code for testing. - -C... Take copy of string system(s), leaving extra free slot after gluino. -C... (Eventually to be overwritten by one q and one qbar string break.) - NOLD=N - NGLUI=0 - DO 120 I=1,NOLD - ICOPY=0 - IF(K(I,1).EQ.2) ICOPY=1 - IF(K(I,1).EQ.1.AND.I.GE.2) THEN - IF(K(I-1,1).EQ.12) ICOPY=1 - ENDIF - IF(ICOPY.EQ.1) THEN - N=N+1 - DO 100 J=1,5 - K(N,J)=K(I,J) - P(N,J)=P(I,J) - V(N,J)=V(I,J) - 100 CONTINUE - K(I,1)=K(I,1)+10 - K(I,4)=N - K(I,5)=N - K(N,3)=I - IF(K(I,2).EQ.KFGL) THEN - NGLUI=NGLUI+1 - N=N+1 - DO 110 J=1,5 - K(N,J)=K(N-1,J) - P(N,J)=0D0 - V(N,J)=V(I,J) - 110 CONTINUE - K(I,5)=N - K(N,2)=21 - ENDIF - ENDIF - 120 CONTINUE - -C... Loop over (up to) two gluinos per event. - DO 300 IGLUI=1,NGLUI - -C... Identify position of gluino (randomize order of treatment). - IGL=0 - NGL=0 - DO 130 I=1,N - IF(K(I,1).EQ.2.AND.K(I,2).EQ.KFGL) THEN - NGL=NGL+1 - IF(IGLUI.EQ.NGLUI) THEN - IGL=I - ELSEIF(NGL.EQ.1) THEN - IF(PYR(0).LT.0.5D0) IGL=I - ELSEIF(IGL.EQ.0) THEN - IGL=I - ENDIF - ENDIF - 130 CONTINUE - -C... Identify range of partons on string the gluino belongs to. - IMIN=IGL - 140 IMIN=IMIN-1 - IF(K(IMIN-1,1).EQ.2) GOTO 140 - IMAX=IGL - 150 IMAX=IMAX+1 - IF(K(IMAX,1).EQ.2) GOTO 150 - -C... Find mass of this gluino-string. - DO 170 J=1,5 - PSUM(J)=0D0 - DO 160 I=IMIN,IMAX - PSUM(J)=PSUM(J)+P(I,J) - 160 CONTINUE - 170 CONTINUE - PSUM(5)=SQRT(MAX(0D0,PSUM(4)**2-PSUM(1)**2-PSUM(2)**2- - & PSUM(3)**2)) - -C... If low-mass, then consider gluino-hadron already formed. - IF(PSUM(5).LE.P(IGL,5)+P(IMIN,5)+P(IMAX,5)+PMKIN) THEN - DO 180 I=IMIN,IMAX - K(I,1)=15+IGLUI - 180 CONTINUE - GOTO 300 - ENDIF - -C... Else break string by production of new gg or two new qqbar pairs. -C... (Also diquarks allowed, but not popcorn, and not two adjacent.) - IF(PYR(0).LT.PROBGG) THEN -C... Let a gluon occupy two slots, to make administration work the same -C... way as for the qqbar case. - KFSAV(1)=21 - KFSAV(2)=21 - PMSAV(1)=0.5D0*PMGLU - PMSAV(2)=0.5D0*PMGLU - ELSE - 185 CALL PYDCYK(K(IMIN,2),0,KFSAV(1),KFDUM) - CALL PYDCYK(K(IMAX,2),0,KFSAV(2),KFDUM) - IF(IABS(KFSAV(1)).GT.10.AND.IABS(KFSAV(2)).GT.10) GOTO 185 - IF(IABS(KFSAV(1)).GT.10.AND.IABS(K(IGL-1,2)).GT.10) GOTO 185 - IF(IABS(KFSAV(2)).GT.10.AND.IABS(K(IGL+2,2)).GT.10) GOTO 185 - KFSAV(1)=ISIGN(MOD(IABS(KFSAV(1)),10000),KFSAV(1)) - KFSAV(2)=ISIGN(MOD(IABS(KFSAV(2)),10000),KFSAV(2)) - MSTJ(93)=1 - PMSAV(1)=PYMASS(KFSAV(1)) - MSTJ(93)=1 - PMSAV(2)=PYMASS(KFSAV(2)) - ENDIF - -C... Mass of gluino-hadron. - PMGSAV=P(IGL,5) - PMGB=P(IGL,5)+PMSAV(1)+PMSAV(2) - -C... Pick at random order in which both sides of gluino string break. - ISIDE=INT(1.5D0+PYR(0)) - DO 220 ISDE=1,2 - IF(ISDE.EQ.1) IS=ISIDE - IF(ISDE.EQ.2) IS=3-ISIDE - -C...Pick momentum sharing according to fragmentation function as if bottom. - M11SAV=MSTJ(11) - PMBSAV=PARF(105) - MSTJ(11)=4 - PARF(105)=PMGSAV - CALL PYZDIS(5,0,PMGB**2,ZGL) - MSTJ(11)=M11SAV - PARF(105)=PMBSAV - ZGL=MAX(0.9D0,MIN(0.9999D0,ZGL)) - DO 190 J=1,5 - PSAV(IS,J)=(1D0-ZGL)*P(IGL,J) - P(IGL,J)=ZGL*P(IGL,J) - 190 CONTINUE - -C... Target gluino-hadron mass for this stage of momentum reshuffling. - PMOLD=P(IGL,5) - IF(ISDE.EQ.1) PMNEW=PMGSAV+PMSAV(IS) - IF(ISDE.EQ.2) PMNEW=PMGB - -C... Recoiling parton from which to shuffle momentum. System momentum. - IF(IS.EQ.1) IREC=IGL-1 - IF(IS.EQ.2) IREC=IGL+2 - 200 DO 210 J=1,4 - PSUM(J)=P(IGL,J)+P(IREC,J) - 210 CONTINUE - -C... Boost to rest frame of system, and align gluino along +z axis. - CALL PYROBO(IGL,IGL,0D0,0D0,-(PSUM(1)/PSUM(4)), - & -(PSUM(2)/PSUM(4)),-(PSUM(3)/PSUM(4))) - CALL PYROBO(IREC,IREC,0D0,0D0,-(PSUM(1)/PSUM(4)), - & -(PSUM(2)/PSUM(4)),-(PSUM(3)/PSUM(4))) - PHI=PYANGL(P(IGL,1),P(IGL,2)) - CALL PYROBO(IGL,IGL,0D0,-PHI,0D0,0D0,0D0) - CALL PYROBO(IREC,IREC,0D0,-PHI,0D0,0D0,0D0) - THETA=PYANGL(P(IGL,3),P(IGL,1)) - CALL PYROBO(IGL,IGL,-THETA,0D0,0D0,0D0,0D0) - CALL PYROBO(IREC,IREC,-THETA,0D0,0D0,0D0,0D0) - -C... Calculate new kinematics in this frame, for desired gluino mass. - ETOT=P(IGL,4)+P(IREC,4) - IF(ETOT.GT.PMNEW+P(IREC,5)) THEN - IFAIL=0 - PZNEW=0.5D0 - & *SQRT(MAX(0D0,(ETOT**2-PMNEW**2-P(IREC,5)**2)**2- - & 4D0*PMNEW**2*P(IREC,5)**2))/ETOT - P(IGL,3)=PZNEW - P(IGL,4)=SQRT(PZNEW**2+PMNEW**2) - P(IGL,5)=PMNEW - P(IREC,3)=-PZNEW - P(IREC,4)=SQRT(PZNEW**2+P(IREC,5)**2) - -C... If not enough momentum, take what can be taken. - ELSE - IFAIL=1 - PMOLD=ETOT-P(IREC,5) - P(IGL,3)=0D0 - P(IGL,4)=PMOLD - P(IGL,5)=PMOLD - P(IREC,3)=0D0 - P(IREC,4)=P(IREC,5) - ENDIF - -C... Bost back to lab frame. - CALL PYROBO(IGL,IGL,THETA,PHI,PSUM(1)/PSUM(4), - & PSUM(2)/PSUM(4),PSUM(3)/PSUM(4)) - CALL PYROBO(IREC,IREC,THETA,PHI,PSUM(1)/PSUM(4), - & PSUM(2)/PSUM(4),PSUM(3)/PSUM(4)) - -C... Loop back when not enough momentum could be shuffled. -C... (As long as there is something left on either side.) - IF(IFAIL.EQ.1) THEN - 215 IF(IS.EQ.1.AND.IREC.GT.IMIN) THEN - IREC=IREC-1 - GOTO 200 - ELSEIF(IS.EQ.2.AND.IREC.LT.IMAX) THEN - IREC=IREC+1 - GOTO 200 - ELSEIF(ISDE.EQ.2.AND.IS.EQ.3-ISIDE) THEN - IS=ISIDE - IREC=IRECSV - GOTO 215 - ENDIF - ENDIF - -C... End loop over fragmentation of two sides around gluino. - IRECSV=IREC - 220 CONTINUE - -C... New slot at end of record for gluino R-hadron. - DO 230 J=1,5 - K(N+1,J)=0 - P(N+1,J)=P(IGL,J) - V(N+1,J)=V(IGL,J) - 230 CONTINUE - -C... Status and code of this slot. - K(N+1,1)=15+IGLUI - KFSVMX=MAX(IABS(KFSAV(1)),IABS(KFSAV(2))) - KFSVMN=MIN(IABS(KFSAV(1)),IABS(KFSAV(2))) -C... Gluino-ball. - IF(KFSVMX.EQ.21) THEN - K(N+1,2)=KSUSY1+993 -C... Gluino-meson. - ELSEIF(KFSVMX.LT.10) THEN - K(N+1,2)=KSUSY1+9000+100*KFSVMX+10*KFSVMN+3 - IF(KFSVMX.EQ.KFSVMN) THEN - ELSEIF(MOD(KFSVMX,2).EQ.0) THEN - IF(KFSVMX.EQ.KFSAV(1).OR.KFSVMX.EQ.KFSAV(2)) - & K(N+1,2)=-K(N+1,2) - ELSE - IF(KFSVMX.EQ.-KFSAV(1).OR.KFSVMX.EQ.-KFSAV(2)) - & K(N+1,2)=-K(N+1,2) - ENDIF -C... Gluino-baryon. - ELSE - KFSVX1=KFSVMX/1000 - KFSVX2=MOD(KFSVMX/100,10) - KFA=MAX(KFSVX1,KFSVX2,KFSVMN) - KFC=MIN(KFSVX1,KFSVX2,KFSVMN) - KFB=KFSVX1+KFSVX2+KFSVMN-KFA-KFC - K(N+1,2)=SIGN(KSUSY1+90000+1000*KFA+100*KFB+10*KFC+4, - & -KFSAV(1)) - ENDIF - CALL PYNAME(K(N+1,2),CHRHAD) - print*, 'R-hadron KF = ',K(N+1,2),' and name ',CHRHAD - - - K(N+1,3)=K(IGL,3) - N=N+1 - -C... Code and momentum of two new string endpoints. - K(IGL,2)=KFSAV(1) - K(IGL+1,2)=KFSAV(2) - IF(KFSAV(1).NE.21) K(IGL,1)=1 - DO 240 J=1,5 - P(IGL,J)=PSAV(1,J) - P(IGL+1,J)=PSAV(2,J) - 240 CONTINUE - -C... End of loop over two gluinos. - 300 CONTINUE - -C... Cleanup: remove zero-energy gluons. - NNOW=N - N=NOLD - DO 330 I=NOLD+1,NNOW - IF(K(I,2).EQ.21.AND.P(I,4).LT.1D-10) THEN - ELSEIF(I.EQ.N+1) THEN - N=N+1 - ELSE - N=N+1 - DO 320 J=1,5 - K(N,J)=K(I,J) - P(N,J)=P(I,J) - V(N,J)=V(I,J) - 320 CONTINUE - ENDIF - 330 CONTINUE - -C... Finish off with standard hadronization. -C... Note that the R-hadrons are not affected here, since they -C... (deliberately erroneously) have been bookkept as decayed. - - CALL PYEXEC - -C... Restore code of gluino-hadrons to non-fragmented numbers. - N6=0 - N7=0 - DO 340 I=1,N - IF(K(I,1).EQ.16.OR.K(I,1).EQ.17) K(I,1)=K(I,1)-10 -C... First R-hadron - IF(K(I,1).EQ.6) then - ihad1=i -c WRITE(*,*) 'R-hadron 1 chg:',PYCHGE(K(I,2))/3D0,K(I,2) - N6=N6+1 - ENDIF -C... Second R-hadron - IF(K(I,1).EQ.7) then - N7=N7+1 - ihad2=i -c WRITE(*,*) 'R-hadron 2 chg:',PYCHGE(K(I,2))/3D0,K(I,2) - ENDIF - - 340 CONTINUE - IF(N6.GT.1.OR.N7.GT.1) MSTU(24)=1 - -C... Extracheck charge. - - chgnew=pyp(0,6) - - IF(ABS(CHGNEW-CHGSAV).GT.0.1D0) MSTU(24)=1 -c WRITE(*,*) 'CHGNEW CHGSAV',CHGNEW,CHGSAV - -C... In case of trouble, make up to five attempts. - IF(MSTU(24).NE.0.AND.LOOP.LT.5) THEN - WRITE(*,*) '...give it new try...' - MSTU(23)=MSTU(23)-1 - GOTO 90 - ELSEIF(MSTU(24).NE.0) THEN - WRITE(*,*) '...but still fail after repeated attempts!' -C*** Set error flag. - IERR=2 - ELSEIF(MSTU(24).EQ.0.AND.LOOP.GT.1) THEN - WRITE(*,*) '...and now it worked!' - ENDIF - -C... Finished. Restore baryon production model. - MSTJ(12)=MSTJ12 -c call pylist(2) - RETURN - END - -cccccccccccc - -C********************************************************************* - -C...PYGLFRIN -C... Gluino fragmentation for Regge model - - SUBROUTINE PYGLFRIN(IERR) - -C... Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) -C INTEGER PYK,PYCHGE,PYCOMP -C... Parameter statement to help give large particle numbers -C... (left- and righthanded SUSY, excited fermions). - PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KEXCIT=4000000) -C... Commonblocks. - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) -C... Note that dimensions below grew from 4000 to 8000 in Pythia 6.2! - COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5) - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) - COMMON/PYINT1/MINT(400),VINT(400) - COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2) - SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYPARS/,/PYINT1/, - & /PYINT2/ -C... Local array. - DIMENSION PSUM(5),KFSAV(2),PMSAV(2),PSAV(2,5) - - INTEGER IKFRH(20),IKCHGRH(20),IKANTRH(20) - integer ihad1,ihad2 - REAL*8 PROBGG - COMMON/RHADB/IKFRH,IKCHGRH,IKANTRH,PROBGG - CHARACTER*16 CHRHAD - -C... Free parameter: relative probability for gluino-gluon-ball. -C... (But occasional low-mass string will never become it anyway.) -c Rasmus: Moved to rhadb common block to make configurable -c PROBGG=0.1D0 - -C... Free parameter: gluon constituent mass. - PMGLU=0.33D0 - -C... Free parameter: max kinetic energy in gluino-hadron. - PMKIN=0.5D0 - -C... Switch off popcorn baryon production. (Not imperative, but more -C... failed events when popcorn is allowed.) - MSTJ12=MSTJ(12) - MSTJ(12)=1 - -C... Convenient shorthand. - KFGL=KSUSY1+21 - -C*** Reset error code. - IERR=0 - - write(*,*) 'In PYGLFRIN' - -C... Loopback point for serious problems, with new try. - LOOP=0 - CALL PYEDIT(21) - CHGSAV=PYP(0,6) - 90 LOOP=LOOP+1 - IF(LOOP.GT.1) CALL PYEDIT(22) - -C*** Begin new code for testing. -C... Find if gluino put first or last in closed loop. - 400 IBEGCL=0 - IENDCL=0 - IF(K(1,2).EQ.KFGL.AND.K(1,1).LE.2) IBEGCL=1 - DO 410 I=2,N - IF(K(I,2).EQ.KFGL) THEN - IF(K(I-1,1).NE.2.AND.K(I,1).LE.2) IBEGCL=I - IF(K(I,1).EQ.1) IENDCL=I - ENDIF - 410 CONTINUE - IF(IBEGCL.GT.0) IENDCL=0 - -C... Range of system beginning or ending with gluino. - IF(IBEGCL.NE.0) THEN - IBEG=IBEGCL - IEND=IBEG - 420 IEND=IEND+1 - IF(IEND.LT.N.AND.K(IEND,1).EQ.2) GOTO 420 - IF(IEND.GT.N) IEND=N - ELSEIF(IENDCL.NE.0) THEN - IEND=IENDCL - IBEG=IEND - 430 IBEG=IBEG-1 -C JK REMOVING COMPILER WARNING - IF(IBEG.GE.2.AND.K(IBEG-1,1).EQ.2) THEN - 431 IEND=IEND+1 - IF(IEND.LT.N.AND.K(IEND,1).EQ.2) GOTO 431 - IF(IEND.GT.N) IEND=N -C JK - ENDIF - ENDIF - -C... Count number of gluinos in system. Error return if only gluinos. - IF(IBEGCL.NE.0.OR.IENDCL.NE.0) THEN - WRITE(*,*) ' Gluino found in closed string; ', - & ' special processing begun ' - NGLSYS=0 - DO 435 I=IBEG,IEND - IF(K(I,2).EQ.KFGL) NGLSYS=NGLSYS+1 - 435 CONTINUE - IF(NGLSYS.EQ.IEND-IBEG+1) THEN - IERR=1 - MSTJ(12)=MSTJ12 - WRITE(*,*) ' Fail to fragment closed string of gluinos only' - RETURN - ENDIF - -C... Decide to split system at random gluon. - 440 ISPLIT=IBEG+INT(PYR(0)*(IEND+1-IBEG)) - IF(ISPLIT.GT.IEND.OR.K(ISPLIT,2).EQ.KFGL) GOTO 440 - -C... Copy system from ISPLIT to end, beginning with a d or u quark. - KFSPL=INT(1.5D0+PYR(0)) - DO 470 I=ISPLIT,IEND - N=N+1 - DO 450 J=1,5 - K(N,J)=K(I,J) - P(N,J)=P(I,J) - V(N,J)=V(I,J) - 450 CONTINUE - K(I,1)=K(I,1)+10 - K(I,4)=N - K(I,5)=N - K(N,1)=2 - K(N,3)=I - IF(I.EQ.ISPLIT) THEN - K(N,2)=KFSPL - DO 460 J=1,5 - P(N,J)=0.5D0*P(N,J) - 460 CONTINUE - ENDIF - 470 CONTINUE - -C... Copy system from beginning to ISPLIT, ending with a dbar or ubar quark. - DO 500 I=IBEG,ISPLIT - N=N+1 - DO 480 J=1,5 - K(N,J)=K(I,J) - P(N,J)=P(I,J) - V(N,J)=V(I,J) - 480 CONTINUE - K(I,1)=K(I,1)+10 - K(I,4)=N - K(I,5)=N - K(N,1)=2 - K(N,3)=I - IF(I.EQ.ISPLIT) THEN - K(N,1)=1 - K(N,2)=-KFSPL - DO 490 J=1,5 - P(N,J)=0.5D0*P(N,J) - 490 CONTINUE - ENDIF - 500 CONTINUE - -C... Loop back in case both gluinos need to be addressed this way. - GOTO 400 - ENDIF -C*** End new code for testing. - -C... Take copy of string system(s), leaving extra free slot after gluino. -C... (Eventually to be overwritten by one q and one qbar string break.) - NOLD=N - NGLUI=0 - DO 120 I=1,NOLD - ICOPY=0 - IF(K(I,1).EQ.2) ICOPY=1 - IF(K(I,1).EQ.1.AND.I.GE.2) THEN - IF(K(I-1,1).EQ.12) ICOPY=1 - ENDIF - IF(ICOPY.EQ.1) THEN - N=N+1 - DO 100 J=1,5 - K(N,J)=K(I,J) - P(N,J)=P(I,J) - V(N,J)=V(I,J) - 100 CONTINUE - K(I,1)=K(I,1)+10 - K(I,4)=N - K(I,5)=N - K(N,3)=I - IF(K(I,2).EQ.KFGL) THEN - NGLUI=NGLUI+1 - N=N+1 - DO 110 J=1,5 - K(N,J)=K(N-1,J) - P(N,J)=0D0 - V(N,J)=V(I,J) - 110 CONTINUE - K(I,5)=N - K(N,2)=21 - ENDIF - ENDIF - 120 CONTINUE - -C... Loop over (up to) two gluinos per event. - DO 300 IGLUI=1,NGLUI - -C... Identify position of gluino (randomize order of treatment). - IGL=0 - NGL=0 - DO 130 I=1,N - IF(K(I,1).EQ.2.AND.K(I,2).EQ.KFGL) THEN - NGL=NGL+1 - IF(IGLUI.EQ.NGLUI) THEN - IGL=I - ELSEIF(NGL.EQ.1) THEN - IF(PYR(0).LT.0.5D0) IGL=I - ELSEIF(IGL.EQ.0) THEN - IGL=I - ENDIF - ENDIF - 130 CONTINUE - -C... Identify range of partons on string the gluino belongs to. - IMIN=IGL - 140 IMIN=IMIN-1 - IF(K(IMIN-1,1).EQ.2) GOTO 140 - IMAX=IGL - 150 IMAX=IMAX+1 - IF(K(IMAX,1).EQ.2) GOTO 150 - -C... Find mass of this gluino-string. - DO 170 J=1,5 - PSUM(J)=0D0 - DO 160 I=IMIN,IMAX - PSUM(J)=PSUM(J)+P(I,J) - 160 CONTINUE - 170 CONTINUE - PSUM(5)=SQRT(MAX(0D0,PSUM(4)**2-PSUM(1)**2-PSUM(2)**2- - & PSUM(3)**2)) - -C... If low-mass, then consider gluino-hadron already formed. - IF(PSUM(5).LE.P(IGL,5)+P(IMIN,5)+P(IMAX,5)+PMKIN) THEN - DO 180 I=IMIN,IMAX - K(I,1)=15+IGLUI - 180 CONTINUE - GOTO 300 - ENDIF - -C... Else break string by production of new gg or two new qqbar pairs. -C... (Also diquarks allowed, but not popcorn, and not two adjacent.) - IF(PYR(0).LT.PROBGG) THEN -C... Let a gluon occupy two slots, to make administration work the same -C... way as for the qqbar case. - KFSAV(1)=21 - KFSAV(2)=21 - PMSAV(1)=0.5D0*PMGLU - PMSAV(2)=0.5D0*PMGLU - ELSE - 185 CALL PYDCYK(K(IMIN,2),0,KFSAV(1),KFDUM) - CALL PYDCYK(K(IMAX,2),0,KFSAV(2),KFDUM) - IF(IABS(KFSAV(1)).GT.10.AND.IABS(KFSAV(2)).GT.10) GOTO 185 - IF(IABS(KFSAV(1)).GT.10.AND.IABS(K(IGL-1,2)).GT.10) GOTO 185 - IF(IABS(KFSAV(2)).GT.10.AND.IABS(K(IGL+2,2)).GT.10) GOTO 185 - KFSAV(1)=ISIGN(MOD(IABS(KFSAV(1)),10000),KFSAV(1)) - KFSAV(2)=ISIGN(MOD(IABS(KFSAV(2)),10000),KFSAV(2)) - MSTJ(93)=1 - PMSAV(1)=PYMASS(KFSAV(1)) - MSTJ(93)=1 - PMSAV(2)=PYMASS(KFSAV(2)) - ENDIF - -C... Mass of gluino-hadron. - PMGSAV=P(IGL,5) -c PMGB=P(IGL,5)+PMSAV(1)+PMSAV(2) - if(IABS(KFSAV(1)).lt.10.and.IABS(KFSAV(2)).lt.10) then - if(IABS(KFSAV(1)).ne.3.and.IABS(KFSAV(2)).ne.3) then - PMGB=P(IGL,5)+0.33 - else - PMGB=P(IGL,5)+0.46 - endif - else - PMGB=P(IGL,5)+PMSAV(1)+PMSAV(2) - endif - -C... Pick at random order in which both sides of gluino string break. - ISIDE=INT(1.5D0+PYR(0)) - DO 220 ISDE=1,2 - IF(ISDE.EQ.1) IS=ISIDE - IF(ISDE.EQ.2) IS=3-ISIDE - -C...Pick momentum sharing according to fragmentation function as if bottom. - M11SAV=MSTJ(11) - PMBSAV=PARF(105) - MSTJ(11)=4 - PARF(105)=PMGSAV - CALL PYZDIS(5,0,PMGB**2,ZGL) - MSTJ(11)=M11SAV - PARF(105)=PMBSAV - ZGL=MAX(0.9D0,MIN(0.9999D0,ZGL)) - DO 190 J=1,5 - PSAV(IS,J)=(1D0-ZGL)*P(IGL,J) - P(IGL,J)=ZGL*P(IGL,J) - 190 CONTINUE - -C... Target gluino-hadron mass for this stage of momentum reshuffling. - PMOLD=P(IGL,5) - IF(ISDE.EQ.1) PMNEW=PMGSAV+PMSAV(IS) - IF(ISDE.EQ.2) PMNEW=PMGB - -C... Recoiling parton from which to shuffle momentum. System momentum. - IF(IS.EQ.1) IREC=IGL-1 - IF(IS.EQ.2) IREC=IGL+2 - 200 DO 210 J=1,4 - PSUM(J)=P(IGL,J)+P(IREC,J) - 210 CONTINUE - -C... Boost to rest frame of system, and align gluino along +z axis. - CALL PYROBO(IGL,IGL,0D0,0D0,-(PSUM(1)/PSUM(4)), - & -(PSUM(2)/PSUM(4)),-(PSUM(3)/PSUM(4))) - CALL PYROBO(IREC,IREC,0D0,0D0,-(PSUM(1)/PSUM(4)), - & -(PSUM(2)/PSUM(4)),-(PSUM(3)/PSUM(4))) - PHI=PYANGL(P(IGL,1),P(IGL,2)) - CALL PYROBO(IGL,IGL,0D0,-PHI,0D0,0D0,0D0) - CALL PYROBO(IREC,IREC,0D0,-PHI,0D0,0D0,0D0) - THETA=PYANGL(P(IGL,3),P(IGL,1)) - CALL PYROBO(IGL,IGL,-THETA,0D0,0D0,0D0,0D0) - CALL PYROBO(IREC,IREC,-THETA,0D0,0D0,0D0,0D0) - -C... Calculate new kinematics in this frame, for desired gluino mass. - ETOT=P(IGL,4)+P(IREC,4) - IF(ETOT.GT.PMNEW+P(IREC,5)) THEN - IFAIL=0 - PZNEW=0.5D0 - & *SQRT(MAX(0D0,(ETOT**2-PMNEW**2-P(IREC,5)**2)**2- - & 4D0*PMNEW**2*P(IREC,5)**2))/ETOT - P(IGL,3)=PZNEW - P(IGL,4)=SQRT(PZNEW**2+PMNEW**2) - P(IGL,5)=PMNEW - P(IREC,3)=-PZNEW - P(IREC,4)=SQRT(PZNEW**2+P(IREC,5)**2) - -C... If not enough momentum, take what can be taken. - ELSE - IFAIL=1 - PMOLD=ETOT-P(IREC,5) - P(IGL,3)=0D0 - P(IGL,4)=PMOLD - P(IGL,5)=PMOLD - P(IREC,3)=0D0 - P(IREC,4)=P(IREC,5) - ENDIF - -C... Bost back to lab frame. - CALL PYROBO(IGL,IGL,THETA,PHI,PSUM(1)/PSUM(4), - & PSUM(2)/PSUM(4),PSUM(3)/PSUM(4)) - CALL PYROBO(IREC,IREC,THETA,PHI,PSUM(1)/PSUM(4), - & PSUM(2)/PSUM(4),PSUM(3)/PSUM(4)) - -C... Loop back when not enough momentum could be shuffled. -C... (As long as there is something left on either side.) - IF(IFAIL.EQ.1) THEN - 215 IF(IS.EQ.1.AND.IREC.GT.IMIN) THEN - IREC=IREC-1 - GOTO 200 - ELSEIF(IS.EQ.2.AND.IREC.LT.IMAX) THEN - IREC=IREC+1 - GOTO 200 - ELSEIF(ISDE.EQ.2.AND.IS.EQ.3-ISIDE) THEN - IS=ISIDE - IREC=IRECSV - GOTO 215 - ENDIF - ENDIF - -C... End loop over fragmentation of two sides around gluino. - IRECSV=IREC - 220 CONTINUE - -C... New slot at end of record for gluino R-hadron. - DO 230 J=1,5 - K(N+1,J)=0 - P(N+1,J)=P(IGL,J) - V(N+1,J)=V(IGL,J) - 230 CONTINUE - -C... Status and code of this slot. - K(N+1,1)=15+IGLUI - KFSVMX=MAX(IABS(KFSAV(1)),IABS(KFSAV(2))) - KFSVMN=MIN(IABS(KFSAV(1)),IABS(KFSAV(2))) -C... Gluino-ball. - IF(KFSVMX.EQ.21) THEN - K(N+1,2)=KSUSY1+991 -C... Gluino-meson. - ELSEIF(KFSVMX.LT.10) THEN - IF(KFSVMX.eq.KFSVMN.and.KFSVMX.gt.1) then - KFSVMN=1 - KFSVMX=1 - endif - K(N+1,2)=KSUSY1+9000+100*KFSVMX+10*KFSVMN+1 - IF(KFSVMX.EQ.KFSVMN) THEN - ELSEIF(MOD(KFSVMX,2).EQ.0) THEN - IF(KFSVMX.EQ.KFSAV(1).OR.KFSVMX.EQ.KFSAV(2)) - & K(N+1,2)=-K(N+1,2) - ELSE - IF(KFSVMX.EQ.-KFSAV(1).OR.KFSVMX.EQ.-KFSAV(2)) - & K(N+1,2)=-K(N+1,2) - ENDIF -C... Gluino-baryon. - ELSE - KFSVX1=KFSVMX/1000 - KFSVX2=MOD(KFSVMX/100,10) - KFA=MAX(KFSVX1,KFSVX2,KFSVMN) - KFC=MIN(KFSVX1,KFSVX2,KFSVMN) - KFSPIN=(MOD(KFSVMX,10)-1)/2 - KFB=KFSVX1+KFSVX2+KFSVMN-KFA-KFC - 235 continue - K(N+1,2)=SIGN(KSUSY1+90000+1000*KFA+100*KFB+10*KFC+2*KFSPIN - & +2, -KFSAV(1)) - if(KFA.eq.KFC.and.KFA.eq.KFB) goto 90 - if(CHRHAD.eq.' '.and.KFA.eq.3) then - KFA=1 - 238 if(KFC.gt.KFA.or.KFB.gt.KFA.or.KFC.gt.KFB) then - if(KFB.gt.KFA) then - KFTMP=KFA - KFA=KFB - KFB=KFTMP - endif - if(KFC.gt.KFB) then - KFTMP=KFB - KFB=KFC - KFC=KFTMP - endif - goto 238 - endif - goto 235 - endif - CALL PYNAME(K(N+1,2),CHRHAD) - if(CHRHAD(1:1).ne.'~') goto 90 - ENDIF - CALL PYNAME(K(N+1,2),CHRHAD) - if(CHRHAD(1:1).ne.'~') goto 90 - print*, 'R-hadron KF = ',K(N+1,2),' and name ',CHRHAD - P(N+1,5)=PYMASS(K(N+1,2)) - P(N+1,4)=SQRT( - & P(N+1,1)**2+P(N+1,2)**2+P(N+1,3)**2+P(N+1,5)**2 - & ) - - - K(N+1,3)=K(IGL,3) - N=N+1 - -C... Code and momentum of two new string endpoints. - K(IGL,2)=KFSAV(1) - K(IGL+1,2)=KFSAV(2) - IF(KFSAV(1).NE.21) K(IGL,1)=1 - DO 240 J=1,5 - P(IGL,J)=PSAV(1,J) - P(IGL+1,J)=PSAV(2,J) - 240 CONTINUE - -C... End of loop over two gluinos. - 300 CONTINUE - -C... Cleanup: remove zero-energy gluons. - NNOW=N - N=NOLD - DO 330 I=NOLD+1,NNOW - IF(K(I,2).EQ.21.AND.P(I,4).LT.1D-10) THEN - ELSEIF(I.EQ.N+1) THEN - N=N+1 - ELSE - N=N+1 - DO 320 J=1,5 - K(N,J)=K(I,J) - P(N,J)=P(I,J) - V(N,J)=V(I,J) - 320 CONTINUE - ENDIF - 330 CONTINUE - -C... Finish off with standard hadronization. -C... Note that the R-hadrons are not affected here, since they -C... (deliberately erroneously) have been bookkept as decayed. - - CALL PYEXEC - -C... Restore code of gluino-hadrons to non-fragmented numbers. - N6=0 - N7=0 - DO 340 I=1,N - IF(K(I,1).EQ.16.OR.K(I,1).EQ.17) K(I,1)=K(I,1)-10 -C... First R-hadron - IF(K(I,1).EQ.6) then - ihad1=i -c WRITE(*,*) 'R-hadron 1 chg:',PYCHGE(K(I,2))/3D0,K(I,2) - N6=N6+1 - ENDIF -C... Second R-hadron - IF(K(I,1).EQ.7) then - N7=N7+1 - ihad2=i -c WRITE(*,*) 'R-hadron 2 chg:',PYCHGE(K(I,2))/3D0,K(I,2) - ENDIF - - 340 CONTINUE - IF(N6.GT.1.OR.N7.GT.1) MSTU(24)=1 - -C... Extracheck charge. - - chgnew=pyp(0,6) - - IF(ABS(CHGNEW-CHGSAV).GT.0.1D0) MSTU(24)=1 -c WRITE(*,*) 'CHGNEW CHGSAV',CHGNEW,CHGSAV - -C... In case of trouble, make up to five attempts. - IF(MSTU(24).NE.0.AND.LOOP.LT.5) THEN - WRITE(*,*) '...give it new try...' - MSTU(23)=MSTU(23)-1 - GOTO 90 - ELSEIF(MSTU(24).NE.0) THEN - WRITE(*,*) '...but still fail after repeated attempts!' -C*** Set error flag. - IERR=2 - ELSEIF(MSTU(24).EQ.0.AND.LOOP.GT.1) THEN - WRITE(*,*) '...and now it worked!' - ENDIF - -C... Finished. Restore baryon production model. - MSTJ(12)=MSTJ12 -c call pylist(2) - RETURN - END diff --git a/Generators/PythiaExo_i/src/PythiaModified/pyscat.F b/Generators/PythiaExo_i/src/PythiaModified/pyscat.F deleted file mode 100644 index fc8586672ed7043b84a70ad8a589cb030f6eeb1f..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/PythiaModified/pyscat.F +++ /dev/null @@ -1,3046 +0,0 @@ -C********************************************************************* - -C...PYSCAT -C...Finds outgoing flavours and event type; sets up the kinematics -C...and colour flow of the hard scattering - -C ATLAS - locally modified version, enabled for /SPTMDF/ISTMDF.EQ.1 - - SUBROUTINE PYSCAT - -C...Double precision and integer declarations - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - INTEGER PYK,PYCHGE,PYCOMP -C...Parameter statement to help give large particle numbers. - PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000, - &KEXCIT=4000000,KDIMEN=5000000) -C...Parameter statement for maximum size of showers. - PARAMETER (MAXNUR=1000) - -C...User process event common block. - INTEGER MAXNUP - PARAMETER (MAXNUP=500) - INTEGER NUP,IDPRUP,IDUP,ISTUP,MOTHUP,ICOLUP - DOUBLE PRECISION XWGTUP,SCALUP,AQEDUP,AQCDUP,PUP,VTIMUP,SPINUP - COMMON/HEPEUP/NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP,IDUP(MAXNUP), - &ISTUP(MAXNUP),MOTHUP(2,MAXNUP),ICOLUP(2,MAXNUP),PUP(5,MAXNUP), - &VTIMUP(MAXNUP),SPINUP(MAXNUP) - SAVE /HEPEUP/ - -C...Commonblocks. - COMMON/PYPART/NPART,NPARTD,IPART(MAXNUR),PTPART(MAXNUR) - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) - COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5) - COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200) - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) - COMMON/PYINT1/MINT(400),VINT(400) - COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2) - COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000) - COMMON/PYINT4/MWID(500),WIDS(500,5) - COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3) - COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2), - &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2) - COMMON/PYTCSM/ITCM(0:99),RTCM(0:99) - COMMON/PYPUED/IUED(0:99),RUED(0:99) - SAVE /PYPART/,/PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/, - &/PYPARS/,/PYINT1/,/PYINT2/,/PYINT3/,/PYINT4/,/PYINT5/,/PYSSMT/, - &/PYTCSM/,/PYPUED/ - -C ATLAS-specific commonB: - COMMON/SPTMDF/ISTMDF - SAVE /SPTMDF/ - -C...Local arrays and saved variables - DIMENSION WDTP(0:400),WDTE(0:400,0:5),PMQ(2),Z(2),CTHE(2), - &PHI(2),KUPPO(100),VINTSV(41:66),ILAB(100) - INTEGER IOKFLA(6),IIFLAV -C...UED related declarations: -C...equivalences between ordered particles (451->475) -C...and UED particle code (5 000 000 + id) - DIMENSION IUEDEQ(475),MUED(2) - DATA (IUEDEQ(I),I=451,475)/ - & 6100001,6100002,6100003,6100004,6100005,6100006, - & 5100001,5100002,5100003,5100004,5100005,5100006, - & 6100011,6100013,6100015, - & 5100012,5100011,5100014,5100013,5100016,5100015, - & 5100021,5100022,5100023,5100024/ - SAVE VINTSV - -C...Read out process - ISUB=MINT(1) - ISUBSV=ISUB - -C...Restore information for low-pT processes - IF(ISUB.EQ.95.AND.MINT(57).GE.1) THEN - DO 100 J=41,66 - 100 VINT(J)=VINTSV(J) - ENDIF - -C...Convert H' or A process into equivalent H one - IHIGG=1 - KFHIGG=25 - IF((ISUB.GE.151.AND.ISUB.LE.160).OR.(ISUB.GE.171.AND. - &ISUB.LE.190)) THEN - IHIGG=2 - IF(MOD(ISUB-1,10).GE.5) IHIGG=3 - KFHIGG=33+IHIGG - IF(ISUB.EQ.151.OR.ISUB.EQ.156) ISUB=3 - IF(ISUB.EQ.152.OR.ISUB.EQ.157) ISUB=102 - IF(ISUB.EQ.153.OR.ISUB.EQ.158) ISUB=103 - IF(ISUB.EQ.171.OR.ISUB.EQ.176) ISUB=24 - IF(ISUB.EQ.172.OR.ISUB.EQ.177) ISUB=26 - IF(ISUB.EQ.173.OR.ISUB.EQ.178) ISUB=123 - IF(ISUB.EQ.174.OR.ISUB.EQ.179) ISUB=124 - IF(ISUB.EQ.181.OR.ISUB.EQ.186) ISUB=121 - IF(ISUB.EQ.182.OR.ISUB.EQ.187) ISUB=122 - IF(ISUB.EQ.183.OR.ISUB.EQ.188) ISUB=111 - IF(ISUB.EQ.184.OR.ISUB.EQ.189) ISUB=112 - IF(ISUB.EQ.185.OR.ISUB.EQ.190) ISUB=113 - ENDIF - - IF(ISUB.EQ.401.OR.ISUB.EQ.402) KFHIGG=KFPR(ISUB,1) - -C...Convert bottomonium process into equivalent charmonium ones. - IF(ISUB.GE.461.AND.ISUB.LE.479) ISUB=ISUB-40 - -C...Choice of subprocess, number of documentation lines - IDOC=6+ISET(ISUB) - IF(ISUB.EQ.95) IDOC=8 - IF(ISET(ISUB).EQ.5) IDOC=9 - IF(ISET(ISUB).EQ.11) IDOC=4+NUP - MINT(3)=IDOC-6 - IF(IDOC.GE.9.AND.ISET(ISUB).LE.4) IDOC=IDOC+2 - MINT(4)=IDOC - IPU1=MINT(84)+1 - IPU2=MINT(84)+2 - IPU3=MINT(84)+3 - IPU4=MINT(84)+4 - IPU5=MINT(84)+5 - IPU6=MINT(84)+6 - -C...Reset K, P and V vectors. Store incoming particles - DO 120 JT=1,MSTP(126)+100 - I=MINT(83)+JT - IF(I.GT.MSTU(4)) GOTO 120 - DO 110 J=1,5 - K(I,J)=0 - P(I,J)=0D0 - V(I,J)=0D0 - 110 CONTINUE - 120 CONTINUE - DO 140 JT=1,2 - I=MINT(83)+JT - K(I,1)=21 - K(I,2)=MINT(10+JT) - DO 130 J=1,5 - P(I,J)=VINT(285+5*JT+J) - 130 CONTINUE - 140 CONTINUE - MINT(6)=2 - KFRES=0 - -C...Store incoming partons in their CM-frame. Save pdf value. - SH=VINT(44) - SHR=SQRT(SH) - SHP=VINT(26)*VINT(2) - SHPR=SQRT(SHP) - SHUSER=SHR - IF(ISET(ISUB).GE.3.AND.ISET(ISUB).LE.5) SHUSER=SHPR - DO 150 JT=1,2 - I=MINT(84)+JT - K(I,1)=14 - K(I,2)=MINT(14+JT) - K(I,3)=MINT(83)+2+JT - P(I,3)=0.5D0*SHUSER*(-1D0)**(JT-1) - P(I,4)=0.5D0*SHUSER - IF(MINT(14+JT).GE.-40.AND.MINT(14+JT).LE.40) THEN - VINT(38+JT)=XSFX(JT,MINT(14+JT)) - ELSE - VINT(38+JT)=1D0 - ENDIF - 150 CONTINUE - -C...Copy incoming partons to documentation lines - DO 170 JT=1,2 - I1=MINT(83)+4+JT - I2=MINT(84)+JT - K(I1,1)=21 - K(I1,2)=K(I2,2) - K(I1,3)=I1-2 - DO 160 J=1,5 - P(I1,J)=P(I2,J) - 160 CONTINUE - 170 CONTINUE - -C...Choose new quark/lepton flavour for relevant annihilation graphs - IF(ISUB.EQ.12.OR.ISUB.EQ.53.OR.ISUB.EQ.54.OR.ISUB.EQ.58.OR. - &ISUB.EQ.314.OR.ISUB.EQ.319.OR.ISUB.EQ.316.OR. - &(ISUB.GE.135.AND.ISUB.LE.140).OR.ISUB.EQ.382.OR.ISUB.EQ.385) THEN - IGLGA=21 - IF(ISUB.EQ.58.OR.(ISUB.GE.137.AND.ISUB.LE.140)) IGLGA=22 - CALL PYWIDT(IGLGA,SH,WDTP,WDTE) - 180 RKFL=(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))*PYR(0) - DO 190 I=1,MDCY(IGLGA,3) - KFLF=KFDP(I+MDCY(IGLGA,2)-1,1) - RKFL=RKFL-(WDTE(I,1)+WDTE(I,2)+WDTE(I,4)) - IF(RKFL.LE.0D0) GOTO 200 - 190 CONTINUE - 200 CONTINUE - IF((ISUB.EQ.53.OR.ISUB.EQ.385.OR.ISUB.EQ.314.OR.ISUB.EQ.319 - & .OR.ISUB.EQ.316).AND.MINT(2).LE.2) THEN - IF(KFLF.GE.4) GOTO 180 - ELSEIF((ISUB.EQ.53.OR.ISUB.EQ.385.OR.ISUB.EQ.314.OR.ISUB.EQ.319. - & OR.ISUB.EQ.316).AND.MINT(2).LE.4) THEN - KFLF=4 - MINT(2)=MINT(2)-2 - ELSEIF(ISUB.EQ.53.OR.ISUB.EQ.385.OR.ISUB.EQ.314.OR.ISUB.EQ.319. - & OR.ISUB.EQ.316) THEN - KFLF=5 - MINT(2)=MINT(2)-4 - ELSEIF(ISUB.EQ.382.AND.ITCM(5).EQ.1.AND.IABS(MINT(15)).LE.2 - & .AND.IABS(KFLF).GE.3) THEN - FACQQB=VINT(58)**2*4D0/9D0*(VINT(45)**2+VINT(46)**2)/ - & VINT(44)**2 - FACCIB=VINT(46)**2/RTCM(41)**4 - IF(FACQQB/(FACQQB+FACCIB).LT.PYR(0)) GOTO 180 - ELSEIF(ISUB.EQ.382.AND.ITCM(5).EQ.5.AND.MINT(2).EQ.2) THEN - KFLF=5 - MINT(2)=1 - ELSEIF(ISUB.EQ.382.AND.ITCM(5).EQ.5.AND.MINT(2).EQ.1) THEN - IF(KFLF.EQ.5) GOTO 180 - ELSEIF(ISUB.EQ.54.OR.ISUB.EQ.135.OR.ISUB.EQ.136) THEN - IF((KCHG(PYCOMP(KFLF),1)/2D0)**2.LT.PYR(0)) GOTO 180 - ELSEIF(ISUB.EQ.58.OR.(ISUB.GE.137.AND.ISUB.LE.140)) THEN - IF((KCHG(PYCOMP(KFLF),1)/3D0)**2.LT.PYR(0)) GOTO 180 - ENDIF - ENDIF - -C...Final state flavours and colour flow: default values - JS=1 - MINT(21)=MINT(15) - MINT(22)=MINT(16) - MINT(23)=0 - MINT(24)=0 - KCC=20 - KCS=ISIGN(1,MINT(15)) - - IF(ISET(ISUB).EQ.11) THEN -C...User-defined processes: find products - MINT(3)=0 - DO 210 IUP=3,NUP - IF(ISTUP(IUP).LT.1.OR.ISTUP(IUP).GT.3) THEN - ELSEIF(NUP.EQ.5.AND.IUP.GE.4.AND.MOTHUP(1,4).EQ.3) THEN - MINT(21+IUP)=IDUP(IUP) - ELSEIF(ISTUP(IUP).EQ.1.AND.(ISTUP(MOTHUP(1,IUP)).EQ.2.OR. - & ISTUP(MOTHUP(1,IUP)).EQ.3).AND.IDUP(MOTHUP(1,IUP)).NE.0) THEN - ELSEIF(IDUP(IUP).EQ.0) THEN - ELSE - MINT(3)=MINT(3)+1 - IF(MINT(3).LE.6) MINT(20+MINT(3))=IDUP(IUP) - ENDIF - 210 CONTINUE - - ELSEIF(ISUB.LE.10) THEN - IF(ISUB.EQ.1) THEN -C...f + fbar -> gamma*/Z0 - KFRES=23 - - ELSEIF(ISUB.EQ.2) THEN -C...f + fbar' -> W+/- - KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15)) - KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16)) - KFRES=ISIGN(24,KCH1+KCH2) - - ELSEIF(ISUB.EQ.3) THEN -C...f + fbar -> h0 (or H0, or A0) - KFRES=KFHIGG - - ELSEIF(ISUB.EQ.4) THEN -C...gamma + W+/- -> W+/- - - ELSEIF(ISUB.EQ.5) THEN -C...Z0 + Z0 -> h0 - XH=SH/SHP - MINT(21)=MINT(15) - MINT(22)=MINT(16) - PMQ(1)=PYMASS(MINT(21)) - PMQ(2)=PYMASS(MINT(22)) - 220 JT=INT(1.5D0+PYR(0)) - ZMIN=2D0*PMQ(JT)/SHPR - ZMAX=1D0-PMQ(3-JT)/SHPR-(SH-PMQ(JT)**2)/ - & (SHPR*(SHPR-PMQ(3-JT))) - ZMAX=MIN(1D0-XH,ZMAX) - Z(JT)=ZMIN+(ZMAX-ZMIN)*PYR(0) - IF(-1D0+(1D0+XH)/(1D0-Z(JT))-XH/(1D0-Z(JT))**2.LT. - & (1D0-XH)**2/(4D0*XH)*PYR(0)) GOTO 220 - SQC1=1D0-4D0*PMQ(JT)**2/(Z(JT)**2*SHP) - IF(SQC1.LT.1D-8) GOTO 220 - C1=SQRT(SQC1) - C2=1D0+2D0*(PMAS(23,1)**2-PMQ(JT)**2)/(Z(JT)*SHP) - CTHE(JT)=(C2-(C2**2-C1**2)/(C2+(2D0*PYR(0)-1D0)*C1))/C1 - CTHE(JT)=MIN(1D0,MAX(-1D0,CTHE(JT))) - Z(3-JT)=1D0-XH/(1D0-Z(JT)) - SQC1=1D0-4D0*PMQ(3-JT)**2/(Z(3-JT)**2*SHP) - IF(SQC1.LT.1D-8) GOTO 220 - C1=SQRT(SQC1) - C2=1D0+2D0*(PMAS(23,1)**2-PMQ(3-JT)**2)/(Z(3-JT)*SHP) - CTHE(3-JT)=(C2-(C2**2-C1**2)/(C2+(2D0*PYR(0)-1D0)*C1))/C1 - CTHE(3-JT)=MIN(1D0,MAX(-1D0,CTHE(3-JT))) - PHIR=PARU(2)*PYR(0) - CPHI=COS(PHIR) - ANG=CTHE(1)*CTHE(2)-SQRT(1D0-CTHE(1)**2)* - & SQRT(1D0-CTHE(2)**2)*CPHI - Z1=2D0-Z(JT) - Z2=ANG*SQRT(Z(JT)**2-4D0*PMQ(JT)**2/SHP) - Z3=1D0-Z(JT)-XH+(PMQ(1)**2+PMQ(2)**2)/SHP - Z(3-JT)=2D0/(Z1**2-Z2**2)*(Z1*Z3+Z2*SQRT(Z3**2-(Z1**2-Z2**2)* - & PMQ(3-JT)**2/SHP)) - ZMIN=2D0*PMQ(3-JT)/SHPR - ZMAX=1D0-PMQ(JT)/SHPR-(SH-PMQ(3-JT)**2)/(SHPR*(SHPR-PMQ(JT))) - ZMAX=MIN(1D0-XH,ZMAX) - IF(Z(3-JT).LT.ZMIN.OR.Z(3-JT).GT.ZMAX) GOTO 220 - KCC=22 - KFRES=25 - - ELSEIF(ISUB.EQ.6) THEN -C...Z0 + W+/- -> W+/- - - ELSEIF(ISUB.EQ.7) THEN -C...W+ + W- -> Z0 - - ELSEIF(ISUB.EQ.8) THEN -C...W+ + W- -> h0 - XH=SH/SHP - 230 DO 260 JT=1,2 - I=MINT(14+JT) - IA=IABS(I) - IF(IA.LE.10) THEN - RVCKM=VINT(180+I)*PYR(0) - DO 240 J=1,MSTP(1) - IB=2*J-1+MOD(IA,2) - IPM=(5-ISIGN(1,I))/2 - IDC=J+MDCY(IA,2)+2 - IF(MDME(IDC,1).NE.1.AND.MDME(IDC,1).NE.IPM) GOTO 240 - MINT(20+JT)=ISIGN(IB,I) - RVCKM=RVCKM-VCKM((IA+1)/2,(IB+1)/2) - IF(RVCKM.LE.0D0) GOTO 250 - 240 CONTINUE - ELSE - IB=2*((IA+1)/2)-1+MOD(IA,2) - MINT(20+JT)=ISIGN(IB,I) - ENDIF - 250 PMQ(JT)=PYMASS(MINT(20+JT)) - 260 CONTINUE - JT=INT(1.5D0+PYR(0)) - ZMIN=2D0*PMQ(JT)/SHPR - ZMAX=1D0-PMQ(3-JT)/SHPR-(SH-PMQ(JT)**2)/ - & (SHPR*(SHPR-PMQ(3-JT))) - ZMAX=MIN(1D0-XH,ZMAX) - IF(ZMIN.GE.ZMAX) GOTO 230 - Z(JT)=ZMIN+(ZMAX-ZMIN)*PYR(0) - IF(-1D0+(1D0+XH)/(1D0-Z(JT))-XH/(1D0-Z(JT))**2.LT. - & (1D0-XH)**2/(4D0*XH)*PYR(0)) GOTO 230 - SQC1=1D0-4D0*PMQ(JT)**2/(Z(JT)**2*SHP) - IF(SQC1.LT.1D-8) GOTO 230 - C1=SQRT(SQC1) - C2=1D0+2D0*(PMAS(24,1)**2-PMQ(JT)**2)/(Z(JT)*SHP) - CTHE(JT)=(C2-(C2**2-C1**2)/(C2+(2D0*PYR(0)-1D0)*C1))/C1 - CTHE(JT)=MIN(1D0,MAX(-1D0,CTHE(JT))) - Z(3-JT)=1D0-XH/(1D0-Z(JT)) - SQC1=1D0-4D0*PMQ(3-JT)**2/(Z(3-JT)**2*SHP) - IF(SQC1.LT.1D-8) GOTO 230 - C1=SQRT(SQC1) - C2=1D0+2D0*(PMAS(24,1)**2-PMQ(3-JT)**2)/(Z(3-JT)*SHP) - CTHE(3-JT)=(C2-(C2**2-C1**2)/(C2+(2D0*PYR(0)-1D0)*C1))/C1 - CTHE(3-JT)=MIN(1D0,MAX(-1D0,CTHE(3-JT))) - PHIR=PARU(2)*PYR(0) - CPHI=COS(PHIR) - ANG=CTHE(1)*CTHE(2)-SQRT(1D0-CTHE(1)**2)* - & SQRT(1D0-CTHE(2)**2)*CPHI - Z1=2D0-Z(JT) - Z2=ANG*SQRT(Z(JT)**2-4D0*PMQ(JT)**2/SHP) - Z3=1D0-Z(JT)-XH+(PMQ(1)**2+PMQ(2)**2)/SHP - Z(3-JT)=2D0/(Z1**2-Z2**2)*(Z1*Z3+Z2*SQRT(Z3**2-(Z1**2-Z2**2)* - & PMQ(3-JT)**2/SHP)) - ZMIN=2D0*PMQ(3-JT)/SHPR - ZMAX=1D0-PMQ(JT)/SHPR-(SH-PMQ(3-JT)**2)/(SHPR*(SHPR-PMQ(JT))) - ZMAX=MIN(1D0-XH,ZMAX) - IF(Z(3-JT).LT.ZMIN.OR.Z(3-JT).GT.ZMAX) GOTO 230 - KCC=22 - KFRES=25 - - ELSEIF(ISUB.EQ.10) THEN -C...f + f' -> f + f' (gamma/Z/W exchange); th = (p(f)-p(f))**2 - IF(MINT(2).EQ.1) THEN - KCC=22 - ELSE -C...W exchange: need to mix flavours according to CKM matrix - DO 280 JT=1,2 - I=MINT(14+JT) - IA=IABS(I) - IF(IA.LE.10) THEN - RVCKM=VINT(180+I)*PYR(0) - DO 270 J=1,MSTP(1) - IB=2*J-1+MOD(IA,2) - IPM=(5-ISIGN(1,I))/2 - IDC=J+MDCY(IA,2)+2 - IF(MDME(IDC,1).NE.1.AND.MDME(IDC,1).NE.IPM) GOTO 270 - MINT(20+JT)=ISIGN(IB,I) - RVCKM=RVCKM-VCKM((IA+1)/2,(IB+1)/2) - IF(RVCKM.LE.0D0) GOTO 280 - 270 CONTINUE - ELSE - IB=2*((IA+1)/2)-1+MOD(IA,2) - MINT(20+JT)=ISIGN(IB,I) - ENDIF - 280 CONTINUE - KCC=22 - ENDIF - ENDIF - - ELSEIF(ISUB.LE.20) THEN - IF(ISUB.EQ.11) THEN -C...f + f' -> f + f' (g exchange); th = (p(f)-p(f))**2 - KCC=MINT(2) - IF(MINT(15)*MINT(16).LT.0) KCC=KCC+2 - - ELSEIF(ISUB.EQ.12) THEN -C...f + fbar -> f' + fbar'; th = (p(f)-p(f'))**2 - MINT(21)=ISIGN(KFLF,MINT(15)) - MINT(22)=-MINT(21) - KCC=4 - - ELSEIF(ISUB.EQ.13) THEN -C...f + fbar -> g + g; th arbitrary - MINT(21)=21 - MINT(22)=21 - KCC=MINT(2)+4 - - ELSEIF(ISUB.EQ.14) THEN -C...f + fbar -> g + gamma; th arbitrary - IF(PYR(0).GT.0.5D0) JS=2 - MINT(20+JS)=21 - MINT(23-JS)=22 - KCC=17+JS - - ELSEIF(ISUB.EQ.15) THEN -C...f + fbar -> g + Z0; th arbitrary - IF(PYR(0).GT.0.5D0) JS=2 - MINT(20+JS)=21 - MINT(23-JS)=23 - KCC=17+JS - - ELSEIF(ISUB.EQ.16) THEN -C...f + fbar' -> g + W+/-; th = (p(f)-p(W-))**2 or (p(fbar')-p(W+))**2 - KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15)) - KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16)) - IF(MINT(15)*(KCH1+KCH2).LT.0) JS=2 - MINT(20+JS)=21 - MINT(23-JS)=ISIGN(24,KCH1+KCH2) - KCC=17+JS - - ELSEIF(ISUB.EQ.17) THEN -C...f + fbar -> g + h0; th arbitrary - IF(PYR(0).GT.0.5D0) JS=2 - MINT(20+JS)=21 - MINT(23-JS)=25 - KCC=17+JS - - ELSEIF(ISUB.EQ.18) THEN -C...f + fbar -> gamma + gamma; th arbitrary - MINT(21)=22 - MINT(22)=22 - - ELSEIF(ISUB.EQ.19) THEN -C...f + fbar -> gamma + Z0; th arbitrary - IF(PYR(0).GT.0.5D0) JS=2 - MINT(20+JS)=22 - MINT(23-JS)=23 - - ELSEIF(ISUB.EQ.20) THEN -C...f + fbar' -> gamma + W+/-; th = (p(f)-p(W-))**2 or -C...(p(fbar')-p(W+))**2 - KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15)) - KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16)) - IF(MINT(15)*(KCH1+KCH2).LT.0) JS=2 - MINT(20+JS)=22 - MINT(23-JS)=ISIGN(24,KCH1+KCH2) - ENDIF - - ELSEIF(ISUB.LE.30) THEN - IF(ISUB.EQ.21) THEN -C...f + fbar -> gamma + h0; th arbitrary - IF(PYR(0).GT.0.5D0) JS=2 - MINT(20+JS)=22 - MINT(23-JS)=25 - - ELSEIF(ISUB.EQ.22) THEN -C...f + fbar -> Z0 + Z0; th arbitrary - MINT(21)=23 - MINT(22)=23 - - ELSEIF(ISUB.EQ.23) THEN -C...f + fbar' -> Z0 + W+/-; th = (p(f)-p(W-))**2 or (p(fbar')-p(W+))**2 - KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15)) - KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16)) - IF(MINT(15)*(KCH1+KCH2).LT.0) JS=2 - MINT(20+JS)=23 - MINT(23-JS)=ISIGN(24,KCH1+KCH2) - - ELSEIF(ISUB.EQ.24) THEN -C...f + fbar -> Z0 + h0 (or H0, or A0); th arbitrary - IF(PYR(0).GT.0.5D0) JS=2 - MINT(20+JS)=23 - MINT(23-JS)=KFHIGG - - ELSEIF(ISUB.EQ.25) THEN -C...f + fbar -> W+ + W-; th = (p(f)-p(W-))**2 - MINT(21)=-ISIGN(24,MINT(15)) - MINT(22)=-MINT(21) - - ELSEIF(ISUB.EQ.26) THEN -C...f + fbar' -> W+/- + h0 (or H0, or A0); -C...th = (p(f)-p(W-))**2 or (p(fbar')-p(W+))**2 - KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15)) - KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16)) - IF(MINT(15)*(KCH1+KCH2).GT.0) JS=2 - MINT(20+JS)=ISIGN(24,KCH1+KCH2) - MINT(23-JS)=KFHIGG - - ELSEIF(ISUB.EQ.27) THEN -C...f + fbar -> h0 + h0 - - ELSEIF(ISUB.EQ.28) THEN -C...f + g -> f + g; th = (p(f)-p(f))**2 - IF(MINT(15).EQ.21) JS=2 - KCC=MINT(2)+6 - IF(MINT(15).EQ.21) KCC=KCC+2 - IF(MINT(15).NE.21) KCS=ISIGN(1,MINT(15)) - IF(MINT(16).NE.21) KCS=ISIGN(1,MINT(16)) - - ELSEIF(ISUB.EQ.29) THEN -C...f + g -> f + gamma; th = (p(f)-p(f))**2 - IF(MINT(15).EQ.21) JS=2 - MINT(23-JS)=22 - KCC=15+JS - KCS=ISIGN(1,MINT(14+JS)) - - ELSEIF(ISUB.EQ.30) THEN -C...f + g -> f + Z0; th = (p(f)-p(f))**2 - IF(MINT(15).EQ.21) JS=2 - MINT(23-JS)=23 - KCC=15+JS - KCS=ISIGN(1,MINT(14+JS)) - ENDIF - - ELSEIF(ISUB.LE.40) THEN - IF(ISUB.EQ.31) THEN -C...f + g -> f' + W+/-; th = (p(f)-p(f'))**2; choose flavour f' - IF(MINT(15).EQ.21) JS=2 - I=MINT(14+JS) - IA=IABS(I) - MINT(23-JS)=ISIGN(24,KCHG(IA,1)*I) - RVCKM=VINT(180+I)*PYR(0) - DO 290 J=1,MSTP(1) - IB=2*J-1+MOD(IA,2) - IPM=(5-ISIGN(1,I))/2 - IDC=J+MDCY(IA,2)+2 - IF(MDME(IDC,1).NE.1.AND.MDME(IDC,1).NE.IPM) GOTO 290 - MINT(20+JS)=ISIGN(IB,I) - RVCKM=RVCKM-VCKM((IA+1)/2,(IB+1)/2) - IF(RVCKM.LE.0D0) GOTO 300 - 290 CONTINUE - 300 KCC=15+JS - KCS=ISIGN(1,MINT(14+JS)) - - ELSEIF(ISUB.EQ.32) THEN -C...f + g -> f + h0; th = (p(f)-p(f))**2 - IF(MINT(15).EQ.21) JS=2 - MINT(23-JS)=25 - KCC=15+JS - KCS=ISIGN(1,MINT(14+JS)) - - ELSEIF(ISUB.EQ.33) THEN -C...f + gamma -> f + g; th=(p(f)-p(f))**2 - IF(MINT(15).EQ.22) JS=2 - MINT(23-JS)=21 - KCC=24+JS - KCS=ISIGN(1,MINT(14+JS)) - - ELSEIF(ISUB.EQ.34) THEN -C...f + gamma -> f + gamma; th=(p(f)-p(f))**2 - IF(MINT(15).EQ.22) JS=2 - KCC=22 - KCS=ISIGN(1,MINT(14+JS)) - - ELSEIF(ISUB.EQ.35) THEN -C...f + gamma -> f + Z0; th=(p(f)-p(f))**2 - IF(MINT(15).EQ.22) JS=2 - MINT(23-JS)=23 - KCC=22 - - ELSEIF(ISUB.EQ.36) THEN -C...f + gamma -> f' + W+/-; th=(p(f)-p(f'))**2 - IF(MINT(15).EQ.22) JS=2 - I=MINT(14+JS) - IA=IABS(I) - MINT(23-JS)=ISIGN(24,KCHG(IA,1)*I) - IF(IA.LE.10) THEN - RVCKM=VINT(180+I)*PYR(0) - DO 310 J=1,MSTP(1) - IB=2*J-1+MOD(IA,2) - IPM=(5-ISIGN(1,I))/2 - IDC=J+MDCY(IA,2)+2 - IF(MDME(IDC,1).NE.1.AND.MDME(IDC,1).NE.IPM) GOTO 310 - MINT(20+JS)=ISIGN(IB,I) - RVCKM=RVCKM-VCKM((IA+1)/2,(IB+1)/2) - IF(RVCKM.LE.0D0) GOTO 320 - 310 CONTINUE - ELSE - IB=2*((IA+1)/2)-1+MOD(IA,2) - MINT(20+JS)=ISIGN(IB,I) - ENDIF - 320 KCC=22 - - ELSEIF(ISUB.EQ.37) THEN -C...f + gamma -> f + h0 - - ELSEIF(ISUB.EQ.38) THEN -C...f + Z0 -> f + g - - ELSEIF(ISUB.EQ.39) THEN -C...f + Z0 -> f + gamma - - ELSEIF(ISUB.EQ.40) THEN -C...f + Z0 -> f + Z0 - ENDIF - - ELSEIF(ISUB.LE.50) THEN - IF(ISUB.EQ.41) THEN -C...f + Z0 -> f' + W+/- - - ELSEIF(ISUB.EQ.42) THEN -C...f + Z0 -> f + h0 - - ELSEIF(ISUB.EQ.43) THEN -C...f + W+/- -> f' + g - - ELSEIF(ISUB.EQ.44) THEN -C...f + W+/- -> f' + gamma - - ELSEIF(ISUB.EQ.45) THEN -C...f + W+/- -> f' + Z0 - - ELSEIF(ISUB.EQ.46) THEN -C...f + W+/- -> f' + W+/- - - ELSEIF(ISUB.EQ.47) THEN -C...f + W+/- -> f' + h0 - - ELSEIF(ISUB.EQ.48) THEN -C...f + h0 -> f + g - - ELSEIF(ISUB.EQ.49) THEN -C...f + h0 -> f + gamma - - ELSEIF(ISUB.EQ.50) THEN -C...f + h0 -> f + Z0 - ENDIF - - ELSEIF(ISUB.LE.60) THEN - IF(ISUB.EQ.51) THEN -C...f + h0 -> f' + W+/- - - ELSEIF(ISUB.EQ.52) THEN -C...f + h0 -> f + h0 - - ELSEIF(ISUB.EQ.53) THEN -C...g + g -> f + fbar; th arbitrary - KCS=(-1)**INT(1.5D0+PYR(0)) - MINT(21)=ISIGN(KFLF,KCS) - MINT(22)=-MINT(21) - KCC=MINT(2)+10 - - ELSEIF(ISUB.EQ.54) THEN -C...g + gamma -> f + fbar; th arbitrary - KCS=(-1)**INT(1.5D0+PYR(0)) - MINT(21)=ISIGN(KFLF,KCS) - MINT(22)=-MINT(21) - KCC=27 - IF(MINT(16).EQ.21) KCC=28 - - ELSEIF(ISUB.EQ.55) THEN -C...g + Z0 -> f + fbar - - ELSEIF(ISUB.EQ.56) THEN -C...g + W+/- -> f + fbar' - - ELSEIF(ISUB.EQ.57) THEN -C...g + h0 -> f + fbar - - ELSEIF(ISUB.EQ.58) THEN -C...gamma + gamma -> f + fbar; th arbitrary - KCS=(-1)**INT(1.5D0+PYR(0)) - MINT(21)=ISIGN(KFLF,KCS) - MINT(22)=-MINT(21) - KCC=21 - - ELSEIF(ISUB.EQ.59) THEN -C...gamma + Z0 -> f + fbar - - ELSEIF(ISUB.EQ.60) THEN -C...gamma + W+/- -> f + fbar' - ENDIF - - ELSEIF(ISUB.LE.70) THEN - IF(ISUB.EQ.61) THEN -C...gamma + h0 -> f + fbar - - ELSEIF(ISUB.EQ.62) THEN -C...Z0 + Z0 -> f + fbar - - ELSEIF(ISUB.EQ.63) THEN -C...Z0 + W+/- -> f + fbar' - - ELSEIF(ISUB.EQ.64) THEN -C...Z0 + h0 -> f + fbar - - ELSEIF(ISUB.EQ.65) THEN -C...W+ + W- -> f + fbar - - ELSEIF(ISUB.EQ.66) THEN -C...W+/- + h0 -> f + fbar' - - ELSEIF(ISUB.EQ.67) THEN -C...h0 + h0 -> f + fbar - - ELSEIF(ISUB.EQ.68) THEN -C...g + g -> g + g; th arbitrary - KCC=MINT(2)+12 - KCS=(-1)**INT(1.5D0+PYR(0)) - - ELSEIF(ISUB.EQ.69) THEN -C...gamma + gamma -> W+ + W-; th arbitrary - MINT(21)=24 - MINT(22)=-24 - KCC=21 - - ELSEIF(ISUB.EQ.70) THEN -C...gamma + W+/- -> Z0 + W+/-; th=(p(W)-p(W))**2 - IF(MINT(15).EQ.22) MINT(21)=23 - IF(MINT(16).EQ.22) MINT(22)=23 - KCC=21 - ENDIF - - ELSEIF(ISUB.LE.80) THEN - IF(ISUB.EQ.71.OR.ISUB.EQ.72) THEN -C...Z0 + Z0 -> Z0 + Z0; Z0 + Z0 -> W+ + W- - XH=SH/SHP - MINT(21)=MINT(15) - MINT(22)=MINT(16) - PMQ(1)=PYMASS(MINT(21)) - PMQ(2)=PYMASS(MINT(22)) - 330 JT=INT(1.5D0+PYR(0)) - ZMIN=2D0*PMQ(JT)/SHPR - ZMAX=1D0-PMQ(3-JT)/SHPR-(SH-PMQ(JT)**2)/ - & (SHPR*(SHPR-PMQ(3-JT))) - ZMAX=MIN(1D0-XH,ZMAX) - Z(JT)=ZMIN+(ZMAX-ZMIN)*PYR(0) - IF(-1D0+(1D0+XH)/(1D0-Z(JT))-XH/(1D0-Z(JT))**2.LT. - & (1D0-XH)**2/(4D0*XH)*PYR(0)) GOTO 330 - SQC1=1D0-4D0*PMQ(JT)**2/(Z(JT)**2*SHP) - IF(SQC1.LT.1D-8) GOTO 330 - C1=SQRT(SQC1) - C2=1D0+2D0*(PMAS(23,1)**2-PMQ(JT)**2)/(Z(JT)*SHP) - CTHE(JT)=(C2-(C2**2-C1**2)/(C2+(2D0*PYR(0)-1D0)*C1))/C1 - CTHE(JT)=MIN(1D0,MAX(-1D0,CTHE(JT))) - Z(3-JT)=1D0-XH/(1D0-Z(JT)) - SQC1=1D0-4D0*PMQ(3-JT)**2/(Z(3-JT)**2*SHP) - IF(SQC1.LT.1D-8) GOTO 330 - C1=SQRT(SQC1) - C2=1D0+2D0*(PMAS(23,1)**2-PMQ(3-JT)**2)/(Z(3-JT)*SHP) - CTHE(3-JT)=(C2-(C2**2-C1**2)/(C2+(2D0*PYR(0)-1D0)*C1))/C1 - CTHE(3-JT)=MIN(1D0,MAX(-1D0,CTHE(3-JT))) - PHIR=PARU(2)*PYR(0) - CPHI=COS(PHIR) - ANG=CTHE(1)*CTHE(2)-SQRT(1D0-CTHE(1)**2)* - & SQRT(1D0-CTHE(2)**2)*CPHI - Z1=2D0-Z(JT) - Z2=ANG*SQRT(Z(JT)**2-4D0*PMQ(JT)**2/SHP) - Z3=1D0-Z(JT)-XH+(PMQ(1)**2+PMQ(2)**2)/SHP - Z(3-JT)=2D0/(Z1**2-Z2**2)*(Z1*Z3+Z2*SQRT(Z3**2-(Z1**2-Z2**2)* - & PMQ(3-JT)**2/SHP)) - ZMIN=2D0*PMQ(3-JT)/SHPR - ZMAX=1D0-PMQ(JT)/SHPR-(SH-PMQ(3-JT)**2)/(SHPR*(SHPR-PMQ(JT))) - ZMAX=MIN(1D0-XH,ZMAX) - IF(Z(3-JT).LT.ZMIN.OR.Z(3-JT).GT.ZMAX) GOTO 330 - KCC=22 - - ELSEIF(ISUB.EQ.73) THEN -C...Z0 + W+/- -> Z0 + W+/- - JS=MINT(2) - XH=SH/SHP - 340 JT=3-MINT(2) - I=MINT(14+JT) - IA=IABS(I) - IF(IA.LE.10) THEN - RVCKM=VINT(180+I)*PYR(0) - DO 350 J=1,MSTP(1) - IB=2*J-1+MOD(IA,2) - IPM=(5-ISIGN(1,I))/2 - IDC=J+MDCY(IA,2)+2 - IF(MDME(IDC,1).NE.1.AND.MDME(IDC,1).NE.IPM) GOTO 350 - MINT(20+JT)=ISIGN(IB,I) - RVCKM=RVCKM-VCKM((IA+1)/2,(IB+1)/2) - IF(RVCKM.LE.0D0) GOTO 360 - 350 CONTINUE - ELSE - IB=2*((IA+1)/2)-1+MOD(IA,2) - MINT(20+JT)=ISIGN(IB,I) - ENDIF - 360 PMQ(JT)=PYMASS(MINT(20+JT)) - MINT(23-JT)=MINT(17-JT) - PMQ(3-JT)=PYMASS(MINT(23-JT)) - JT=INT(1.5D0+PYR(0)) - ZMIN=2D0*PMQ(JT)/SHPR - ZMAX=1D0-PMQ(3-JT)/SHPR-(SH-PMQ(JT)**2)/ - & (SHPR*(SHPR-PMQ(3-JT))) - ZMAX=MIN(1D0-XH,ZMAX) - IF(ZMIN.GE.ZMAX) GOTO 340 - Z(JT)=ZMIN+(ZMAX-ZMIN)*PYR(0) - IF(-1D0+(1D0+XH)/(1D0-Z(JT))-XH/(1D0-Z(JT))**2.LT. - & (1D0-XH)**2/(4D0*XH)*PYR(0)) GOTO 340 - SQC1=1D0-4D0*PMQ(JT)**2/(Z(JT)**2*SHP) - IF(SQC1.LT.1D-8) GOTO 340 - C1=SQRT(SQC1) - C2=1D0+2D0*(PMAS(23,1)**2-PMQ(JT)**2)/(Z(JT)*SHP) - CTHE(JT)=(C2-(C2**2-C1**2)/(C2+(2D0*PYR(0)-1D0)*C1))/C1 - CTHE(JT)=MIN(1D0,MAX(-1D0,CTHE(JT))) - Z(3-JT)=1D0-XH/(1D0-Z(JT)) - SQC1=1D0-4D0*PMQ(3-JT)**2/(Z(3-JT)**2*SHP) - IF(SQC1.LT.1D-8) GOTO 340 - C1=SQRT(SQC1) - C2=1D0+2D0*(PMAS(23,1)**2-PMQ(3-JT)**2)/(Z(3-JT)*SHP) - CTHE(3-JT)=(C2-(C2**2-C1**2)/(C2+(2D0*PYR(0)-1D0)*C1))/C1 - CTHE(3-JT)=MIN(1D0,MAX(-1D0,CTHE(3-JT))) - PHIR=PARU(2)*PYR(0) - CPHI=COS(PHIR) - ANG=CTHE(1)*CTHE(2)-SQRT(1D0-CTHE(1)**2)* - & SQRT(1D0-CTHE(2)**2)*CPHI - Z1=2D0-Z(JT) - Z2=ANG*SQRT(Z(JT)**2-4D0*PMQ(JT)**2/SHP) - Z3=1D0-Z(JT)-XH+(PMQ(1)**2+PMQ(2)**2)/SHP - Z(3-JT)=2D0/(Z1**2-Z2**2)*(Z1*Z3+Z2*SQRT(Z3**2-(Z1**2-Z2**2)* - & PMQ(3-JT)**2/SHP)) - ZMIN=2D0*PMQ(3-JT)/SHPR - ZMAX=1D0-PMQ(JT)/SHPR-(SH-PMQ(3-JT)**2)/(SHPR*(SHPR-PMQ(JT))) - ZMAX=MIN(1D0-XH,ZMAX) - IF(Z(3-JT).LT.ZMIN.OR.Z(3-JT).GT.ZMAX) GOTO 340 - KCC=22 - - ELSEIF(ISUB.EQ.74) THEN -C...Z0 + h0 -> Z0 + h0 - - ELSEIF(ISUB.EQ.75) THEN -C...W+ + W- -> gamma + gamma - - ELSEIF(ISUB.EQ.76.OR.ISUB.EQ.77) THEN -C...W+ + W- -> Z0 + Z0; W+ + W- -> W+ + W- - XH=SH/SHP - 370 DO 400 JT=1,2 - I=MINT(14+JT) - IA=IABS(I) - IF(IA.LE.10) THEN - RVCKM=VINT(180+I)*PYR(0) - DO 380 J=1,MSTP(1) - IB=2*J-1+MOD(IA,2) - IPM=(5-ISIGN(1,I))/2 - IDC=J+MDCY(IA,2)+2 - IF(MDME(IDC,1).NE.1.AND.MDME(IDC,1).NE.IPM) GOTO 380 - MINT(20+JT)=ISIGN(IB,I) - RVCKM=RVCKM-VCKM((IA+1)/2,(IB+1)/2) - IF(RVCKM.LE.0D0) GOTO 390 - 380 CONTINUE - ELSE - IB=2*((IA+1)/2)-1+MOD(IA,2) - MINT(20+JT)=ISIGN(IB,I) - ENDIF - 390 PMQ(JT)=PYMASS(MINT(20+JT)) - 400 CONTINUE - JT=INT(1.5D0+PYR(0)) - ZMIN=2D0*PMQ(JT)/SHPR - ZMAX=1D0-PMQ(3-JT)/SHPR-(SH-PMQ(JT)**2)/ - & (SHPR*(SHPR-PMQ(3-JT))) - ZMAX=MIN(1D0-XH,ZMAX) - IF(ZMIN.GE.ZMAX) GOTO 370 - Z(JT)=ZMIN+(ZMAX-ZMIN)*PYR(0) - IF(-1D0+(1D0+XH)/(1D0-Z(JT))-XH/(1D0-Z(JT))**2.LT. - & (1D0-XH)**2/(4D0*XH)*PYR(0)) GOTO 370 - SQC1=1D0-4D0*PMQ(JT)**2/(Z(JT)**2*SHP) - IF(SQC1.LT.1D-8) GOTO 370 - C1=SQRT(SQC1) - C2=1D0+2D0*(PMAS(24,1)**2-PMQ(JT)**2)/(Z(JT)*SHP) - CTHE(JT)=(C2-(C2**2-C1**2)/(C2+(2D0*PYR(0)-1D0)*C1))/C1 - CTHE(JT)=MIN(1D0,MAX(-1D0,CTHE(JT))) - Z(3-JT)=1D0-XH/(1D0-Z(JT)) - SQC1=1D0-4D0*PMQ(3-JT)**2/(Z(3-JT)**2*SHP) - IF(SQC1.LT.1D-8) GOTO 370 - C1=SQRT(SQC1) - C2=1D0+2D0*(PMAS(24,1)**2-PMQ(3-JT)**2)/(Z(3-JT)*SHP) - CTHE(3-JT)=(C2-(C2**2-C1**2)/(C2+(2D0*PYR(0)-1D0)*C1))/C1 - CTHE(3-JT)=MIN(1D0,MAX(-1D0,CTHE(3-JT))) - PHIR=PARU(2)*PYR(0) - CPHI=COS(PHIR) - ANG=CTHE(1)*CTHE(2)-SQRT(1D0-CTHE(1)**2)* - & SQRT(1D0-CTHE(2)**2)*CPHI - Z1=2D0-Z(JT) - Z2=ANG*SQRT(Z(JT)**2-4D0*PMQ(JT)**2/SHP) - Z3=1D0-Z(JT)-XH+(PMQ(1)**2+PMQ(2)**2)/SHP - Z(3-JT)=2D0/(Z1**2-Z2**2)*(Z1*Z3+Z2*SQRT(Z3**2-(Z1**2-Z2**2)* - & PMQ(3-JT)**2/SHP)) - ZMIN=2D0*PMQ(3-JT)/SHPR - ZMAX=1D0-PMQ(JT)/SHPR-(SH-PMQ(3-JT)**2)/(SHPR*(SHPR-PMQ(JT))) - ZMAX=MIN(1D0-XH,ZMAX) - IF(Z(3-JT).LT.ZMIN.OR.Z(3-JT).GT.ZMAX) GOTO 370 - KCC=22 - - ELSEIF(ISUB.EQ.78) THEN -C...W+/- + h0 -> W+/- + h0 - - ELSEIF(ISUB.EQ.79) THEN -C...h0 + h0 -> h0 + h0 - - ELSEIF(ISUB.EQ.80) THEN -C...q + gamma -> q' + pi+/-; th=(p(q)-p(q'))**2 - IF(MINT(15).EQ.22) JS=2 - I=MINT(14+JS) - IA=IABS(I) - MINT(23-JS)=ISIGN(211,KCHG(IA,1)*I) - IB=3-IA - MINT(20+JS)=ISIGN(IB,I) - KCC=22 - ENDIF - - ELSEIF(ISUB.LE.90) THEN - IF(ISUB.EQ.81) THEN -C...q + qbar -> Q + Qbar; th = (p(q)-p(Q))**2 - MINT(21)=ISIGN(MINT(55),MINT(15)) - MINT(22)=-MINT(21) - KCC=4 - -C ATLAS modif.: - IF (ISTMDF.EQ.1) THEN - IF(MINT(21).LT.MINT(22)) THEN - VTMP=VINT(63) - VINT(63)=VINT(64) - VINT(64)=VTMP - ENDIF - ENDIF - - ELSEIF(ISUB.EQ.82) THEN -C...g + g -> Q + Qbar; th arbitrary - KCS=(-1)**INT(1.5D0+PYR(0)) - MINT(21)=ISIGN(MINT(55),KCS) - MINT(22)=-MINT(21) - KCC=MINT(2)+10 - -C ATLAS modif.: - IF (ISTMDF.EQ.1) THEN - IF(MINT(21).LT.MINT(22)) THEN - VTMP=VINT(63) - VINT(63)=VINT(64) - VINT(64)=VTMP - ENDIF - ENDIF - - ELSEIF(ISUB.EQ.83) THEN -C...f + q -> f' + Q; th = (p(f) - p(f'))**2 - KFOLD=MINT(16) - IF(MINT(2).EQ.2) KFOLD=MINT(15) - KFAOLD=IABS(KFOLD) - IF(KFAOLD.GT.10) THEN - KFANEW=KFAOLD+2*MOD(KFAOLD,2)-1 - ELSE - RCKM=VINT(180+KFOLD)*PYR(0) - IPM=(5-ISIGN(1,KFOLD))/2 - KFANEW=-MOD(KFAOLD+1,2) - 410 KFANEW=KFANEW+2 - IDC=MDCY(KFAOLD,2)+(KFANEW+1)/2+2 - IF(MDME(IDC,1).EQ.1.OR.MDME(IDC,1).EQ.IPM) THEN - IF(MOD(KFAOLD,2).EQ.0) RCKM=RCKM- - & VCKM(KFAOLD/2,(KFANEW+1)/2) - IF(MOD(KFAOLD,2).EQ.1) RCKM=RCKM- - & VCKM(KFANEW/2,(KFAOLD+1)/2) - ENDIF - IF(KFANEW.LE.6.AND.RCKM.GT.0D0) GOTO 410 - ENDIF - IF(MINT(2).EQ.1) THEN - MINT(21)=ISIGN(MINT(55),MINT(15)) - MINT(22)=ISIGN(KFANEW,MINT(16)) - ELSE - MINT(21)=ISIGN(KFANEW,MINT(15)) - MINT(22)=ISIGN(MINT(55),MINT(16)) - JS=2 - ENDIF - KCC=22 - - ELSEIF(ISUB.EQ.84) THEN -C...g + gamma -> Q + Qbar; th arbitary - KCS=(-1)**INT(1.5D0+PYR(0)) - MINT(21)=ISIGN(MINT(55),KCS) - MINT(22)=-MINT(21) - KCC=27 - IF(MINT(16).EQ.21) KCC=28 - - ELSEIF(ISUB.EQ.85) THEN -C...gamma + gamma -> F + Fbar; th arbitary - KCS=(-1)**INT(1.5D0+PYR(0)) - MINT(21)=ISIGN(MINT(56),KCS) - MINT(22)=-MINT(21) - KCC=21 - - ELSEIF(ISUB.GE.86.AND.ISUB.LE.89) THEN -C...g + g -> (J/Psi, chi_0c, chi_1c or chi_2c) + g - MINT(21)=KFPR(ISUB,1) - MINT(22)=KFPR(ISUB,2) - KCC=24 - KCS=(-1)**INT(1.5D0+PYR(0)) - ENDIF - - ELSEIF(ISUB.LE.100) THEN - IF(ISUB.EQ.95) THEN -C...Low-pT ( = energyless g + g -> g + g) - KCC=MINT(2)+12 - KCS=(-1)**INT(1.5D0+PYR(0)) - - ELSEIF(ISUB.EQ.96) THEN -C...Multiple interactions (should be reassigned to QCD process) - ENDIF - - ELSEIF(ISUB.LE.110) THEN - IF(ISUB.EQ.101) THEN -C...g + g -> gamma*/Z0 - KCC=21 - KFRES=22 - - ELSEIF(ISUB.EQ.102) THEN -C...g + g -> h0 (or H0, or A0) - KCC=21 - KFRES=KFHIGG - - ELSEIF(ISUB.EQ.103) THEN -C...gamma + gamma -> h0 (or H0, or A0) - KCC=21 - KFRES=KFHIGG - - ELSEIF(ISUB.EQ.104.OR.ISUB.EQ.105) THEN -C...g + g -> chi_0c or chi_2c. - KCC=21 - KFRES=KFPR(ISUB,1) - - ELSEIF(ISUB.EQ.106) THEN -C...g + g -> J/Psi + gamma - MINT(21)=KFPR(ISUB,1) - MINT(22)=KFPR(ISUB,2) - KCC=21 - - ELSEIF(ISUB.EQ.107) THEN -C...g + gamma -> J/Psi + g - MINT(21)=KFPR(ISUB,1) - MINT(22)=KFPR(ISUB,2) - KCC=22 - IF(MINT(16).EQ.22) KCC=33 - - ELSEIF(ISUB.EQ.108) THEN -C...gamma + gamma -> J/Psi + gamma - MINT(21)=KFPR(ISUB,1) - MINT(22)=KFPR(ISUB,2) - - ELSEIF(ISUB.EQ.110) THEN -C...f + fbar -> gamma + h0; th arbitrary - IF(PYR(0).GT.0.5D0) JS=2 - MINT(20+JS)=22 - MINT(23-JS)=KFHIGG - ENDIF - - ELSEIF(ISUB.LE.120) THEN - IF(ISUB.EQ.111) THEN -C...f + fbar -> g + h0; th arbitrary - IF(PYR(0).GT.0.5D0) JS=2 - MINT(20+JS)=21 - MINT(23-JS)=KFHIGG - KCC=17+JS - - ELSEIF(ISUB.EQ.112) THEN -C...f + g -> f + h0; th = (p(f) - p(f))**2 - IF(MINT(15).EQ.21) JS=2 - MINT(23-JS)=KFHIGG - KCC=15+JS - KCS=ISIGN(1,MINT(14+JS)) - - ELSEIF(ISUB.EQ.113) THEN -C...g + g -> g + h0; th arbitrary - IF(PYR(0).GT.0.5D0) JS=2 - MINT(23-JS)=KFHIGG - KCC=22+JS - KCS=(-1)**INT(1.5D0+PYR(0)) - - ELSEIF(ISUB.EQ.114) THEN -C...g + g -> gamma + gamma; th arbitrary - IF(PYR(0).GT.0.5D0) JS=2 - MINT(21)=22 - MINT(22)=22 - KCC=21 - - ELSEIF(ISUB.EQ.115) THEN -C...g + g -> g + gamma; th arbitrary - IF(PYR(0).GT.0.5D0) JS=2 - MINT(23-JS)=22 - KCC=22+JS - KCS=(-1)**INT(1.5D0+PYR(0)) - - ELSEIF(ISUB.EQ.116) THEN -C...g + g -> gamma + Z0 - - ELSEIF(ISUB.EQ.117) THEN -C...g + g -> Z0 + Z0 - - ELSEIF(ISUB.EQ.118) THEN -C...g + g -> W+ + W- - ENDIF - - ELSEIF(ISUB.LE.140) THEN - IF(ISUB.EQ.121) THEN -C...g + g -> Q + Qbar + h0 - KCS=(-1)**INT(1.5D0+PYR(0)) - MINT(21)=ISIGN(KFPR(ISUBSV,2),KCS) - MINT(22)=-MINT(21) - KCC=11+INT(0.5D0+PYR(0)) - KFRES=KFHIGG - - ELSEIF(ISUB.EQ.122) THEN -C...q + qbar -> Q + Qbar + h0 - MINT(21)=ISIGN(KFPR(ISUBSV,2),MINT(15)) - MINT(22)=-MINT(21) - KCC=4 - KFRES=KFHIGG - - ELSEIF(ISUB.EQ.123) THEN -C...f + f' -> f + f' + h0 (or H0, or A0) (Z0 + Z0 -> h0 as -C...inner process) - KCC=22 - KFRES=KFHIGG - - ELSEIF(ISUB.EQ.124) THEN -C...f + f' -> f" + f"' + h0 (or H0, or A) (W+ + W- -> h0 as -C...inner process) - DO 430 JT=1,2 - I=MINT(14+JT) - IA=IABS(I) - IF(IA.LE.10) THEN - RVCKM=VINT(180+I)*PYR(0) - DO 420 J=1,MSTP(1) - IB=2*J-1+MOD(IA,2) - IPM=(5-ISIGN(1,I))/2 - IDC=J+MDCY(IA,2)+2 - IF(MDME(IDC,1).NE.1.AND.MDME(IDC,1).NE.IPM) GOTO 420 - MINT(20+JT)=ISIGN(IB,I) - RVCKM=RVCKM-VCKM((IA+1)/2,(IB+1)/2) - IF(RVCKM.LE.0D0) GOTO 430 - 420 CONTINUE - ELSE - IB=2*((IA+1)/2)-1+MOD(IA,2) - MINT(20+JT)=ISIGN(IB,I) - ENDIF - 430 CONTINUE - KCC=22 - KFRES=KFHIGG - - ELSEIF(ISUB.EQ.131.OR.ISUB.EQ.132) THEN -C...f + gamma*_(T,L) -> f + g; th=(p(f)-p(f))**2 - IF(MINT(15).EQ.22) JS=2 - MINT(23-JS)=21 - KCC=24+JS - KCS=ISIGN(1,MINT(14+JS)) - - ELSEIF(ISUB.EQ.133.OR.ISUB.EQ.134) THEN -C...f + gamma*_(T,L) -> f + gamma; th=(p(f)-p(f))**2 - IF(MINT(15).EQ.22) JS=2 - KCC=22 - KCS=ISIGN(1,MINT(14+JS)) - - ELSEIF(ISUB.EQ.135.OR.ISUB.EQ.136) THEN -C...g + gamma*_(T,L) -> f + fbar; th arbitrary - KCS=(-1)**INT(1.5D0+PYR(0)) - MINT(21)=ISIGN(KFLF,KCS) - MINT(22)=-MINT(21) - KCC=27 - IF(MINT(16).EQ.21) KCC=28 - - ELSEIF(ISUB.GE.137.AND.ISUB.LE.140) THEN -C...gamma*_(T,L) + gamma*_(T,L) -> f + fbar; th arbitrary - KCS=(-1)**INT(1.5D0+PYR(0)) - MINT(21)=ISIGN(KFLF,KCS) - MINT(22)=-MINT(21) - KCC=21 - - ENDIF - - ELSEIF(ISUB.LE.160) THEN - IF(ISUB.EQ.141) THEN -C...f + fbar -> gamma*/Z0/Z'0 - KFRES=32 - - ELSEIF(ISUB.EQ.142) THEN -C...f + fbar' -> W'+/- - KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15)) - KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16)) - KFRES=ISIGN(34,KCH1+KCH2) - - ELSEIF(ISUB.EQ.143) THEN -C...f + fbar' -> H+/- - KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15)) - KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16)) - KFRES=ISIGN(37,KCH1+KCH2) - - ELSEIF(ISUB.EQ.144) THEN -C...f + fbar' -> R - KFRES=ISIGN(41,MINT(15)+MINT(16)) - - ELSEIF(ISUB.EQ.145) THEN -C...q + l -> LQ (leptoquark) - IF(IABS(MINT(16)).LE.8) JS=2 - KFRES=ISIGN(42,MINT(14+JS)) - KCC=28+JS - KCS=ISIGN(1,MINT(14+JS)) - - ELSEIF(ISUB.EQ.146) THEN -C...e + gamma -> e* (excited lepton) - IF(MINT(15).EQ.22) JS=2 - KFRES=ISIGN(KFPR(ISUB,1),MINT(14+JS)) - KCC=22 - - ELSEIF(ISUB.EQ.147.OR.ISUB.EQ.148) THEN -C...q + g -> q* (excited quark) - IF(MINT(15).EQ.21) JS=2 - KFRES=ISIGN(KFPR(ISUB,1),MINT(14+JS)) - KCC=30+JS - KCS=ISIGN(1,MINT(14+JS)) - - ELSEIF(ISUB.EQ.149) THEN -C...g + g -> eta_tc - KFRES=KTECHN+331 - KCC=23 - KCS=(-1)**INT(1.5D0+PYR(0)) - ENDIF - - ELSEIF(ISUB.LE.200) THEN - IF(ISUB.EQ.161) THEN -C...f + g -> f' + H+/-; th = (p(f)-p(f'))**2 - IF(MINT(15).EQ.21) JS=2 - I=MINT(14+JS) - IA=IABS(I) - MINT(23-JS)=ISIGN(37,KCHG(IA,1)*I) - IB=IA+MOD(IA,2)-MOD(IA+1,2) - MINT(20+JS)=ISIGN(IB,I) - KCC=15+JS - KCS=ISIGN(1,MINT(14+JS)) - - ELSEIF(ISUB.EQ.162) THEN -C...q + g -> LQ + lbar; LQ=leptoquark; th=(p(q)-p(LQ))^2 - IF(MINT(15).EQ.21) JS=2 - MINT(20+JS)=ISIGN(42,MINT(14+JS)) - KFLQL=KFDP(MDCY(42,2),2) - MINT(23-JS)=-ISIGN(KFLQL,MINT(14+JS)) - KCC=15+JS - KCS=ISIGN(1,MINT(14+JS)) - - ELSEIF(ISUB.EQ.163) THEN -C...g + g -> LQ + LQbar; LQ=leptoquark; th arbitrary - KCS=(-1)**INT(1.5D0+PYR(0)) - MINT(21)=ISIGN(42,KCS) - MINT(22)=-MINT(21) - KCC=MINT(2)+10 - - ELSEIF(ISUB.EQ.164) THEN -C...q + qbar -> LQ + LQbar; LQ=leptoquark; th=(p(q)-p(LQ))**2 - MINT(21)=ISIGN(42,MINT(15)) - MINT(22)=-MINT(21) - KCC=4 - - ELSEIF(ISUB.EQ.165) THEN -C...q + qbar -> l- + l+; th=(p(q)-p(l-))**2 - MINT(21)=ISIGN(KFPR(ISUB,1),MINT(15)) - MINT(22)=-MINT(21) - - ELSEIF(ISUB.EQ.166) THEN -C...q + qbar' -> l + nu; th=(p(u)-p(nu))**2 or (p(ubar)-p(nubar))**2 - IF(MOD(MINT(15),2).EQ.0) THEN - MINT(21)=ISIGN(KFPR(ISUB,1)+1,MINT(15)) - MINT(22)=ISIGN(KFPR(ISUB,1),MINT(16)) - ELSE - MINT(21)=ISIGN(KFPR(ISUB,1),MINT(15)) - MINT(22)=ISIGN(KFPR(ISUB,1)+1,MINT(16)) - ENDIF - - ELSEIF(ISUB.EQ.167.OR.ISUB.EQ.168) THEN -C...q + q' -> q" + q* (excited quark) - KFQSTR=KFPR(ISUB,2) - KFQEXC=MOD(KFQSTR,KEXCIT) - JS=MINT(2) - MINT(20+JS)=ISIGN(KFQSTR,MINT(14+JS)) - IF(IABS(MINT(15)).NE.KFQEXC.AND.IABS(MINT(16)).NE.KFQEXC) - & MINT(23-JS)=ISIGN(KFQEXC,MINT(17-JS)) - KCC=22 - JS=3-JS - - ELSEIF(ISUB.EQ.169) THEN -C...q + qbar -> e + e* (excited lepton) - KFQSTR=KFPR(ISUB,2) - KFQEXC=MOD(KFQSTR,KEXCIT) - JS=MINT(2) - MINT(20+JS)=ISIGN(KFQSTR,MINT(14+JS)) - MINT(23-JS)=ISIGN(KFQEXC,MINT(17-JS)) - JS=3-JS - - ELSEIF(ISUB.EQ.191) THEN -C...f + fbar -> rho_tc0. - KFRES=KTECHN+113 - - ELSEIF(ISUB.EQ.192) THEN -C...f + fbar' -> rho_tc+/- - KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15)) - KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16)) - KFRES=ISIGN(KTECHN+213,KCH1+KCH2) - - ELSEIF(ISUB.EQ.193) THEN -C...f + fbar -> omega_tc0. - KFRES=KTECHN+223 - - ELSEIF(ISUB.EQ.194) THEN -C...f + fbar -> f' + fbar' via mixture of s-channel -C...rho_tc and omega_tc; th=(p(f)-p(f'))**2 - MINT(21)=ISIGN(KFPR(ISUB,1),MINT(15)) - MINT(22)=-MINT(21) - - ELSEIF(ISUB.EQ.195) THEN -C...f + fbar' -> f'' + fbar''' via s-channel -C...rho_tc+ th=(p(f)-p(f'))**2 -C...q + qbar' -> l + nu; th=(p(u)-p(nu))**2 or (p(ubar)-p(nubar))**2 - IF(MOD(MINT(15),2).EQ.0) THEN - MINT(21)=ISIGN(KFPR(ISUB,1)+1,MINT(15)) - MINT(22)=ISIGN(KFPR(ISUB,1),MINT(16)) - ELSE - MINT(21)=ISIGN(KFPR(ISUB,1),MINT(15)) - MINT(22)=ISIGN(KFPR(ISUB,1)+1,MINT(16)) - ENDIF - ENDIF - -CMRENNA++ - ELSEIF(ISUB.LE.215) THEN - IF(ISUB.EQ.201) THEN -C...f + fbar -> ~e_L + ~e_Lbar - MINT(21)=ISIGN(KSUSY1+11,KCS) - MINT(22)=-MINT(21) - - ELSEIF(ISUB.EQ.202) THEN -C...f + fbar -> ~e_R + ~e_Rbar - MINT(21)=ISIGN(KSUSY2+11,KCS) - MINT(22)=-MINT(21) - - ELSEIF(ISUB.EQ.203) THEN -C...f + fbar -> ~e_L + ~e_Rbar - IF(MINT(15).LT.0) JS=2 - IF(MINT(2).EQ.1) THEN - MINT(20+JS)=KFPR(ISUB,1) - MINT(23-JS)=-KFPR(ISUB,2) - ELSE - MINT(20+JS)=-KFPR(ISUB,1) - MINT(23-JS)=KFPR(ISUB,2) - ENDIF - - ELSEIF(ISUB.EQ.204) THEN -C...f + fbar -> ~mu_L + ~mu_Lbar - MINT(21)=ISIGN(KSUSY1+13,KCS) - MINT(22)=-MINT(21) - - ELSEIF(ISUB.EQ.205) THEN -C...f + fbar -> ~mu_R + ~mu_Rbar - MINT(21)=ISIGN(KSUSY2+13,KCS) - MINT(22)=-MINT(21) - - ELSEIF(ISUB.EQ.206) THEN -C...f + fbar -> ~mu_L + ~mu_Rbar - IF(MINT(15).LT.0) JS=2 - IF(MINT(2).EQ.1) THEN - MINT(20+JS)=KFPR(ISUB,1) - MINT(23-JS)=-KFPR(ISUB,2) - ELSE - MINT(20+JS)=-KFPR(ISUB,1) - MINT(23-JS)=KFPR(ISUB,2) - ENDIF - - ELSEIF(ISUB.EQ.207) THEN -C...f + fbar -> ~tau_1 + ~tau_1bar - MINT(21)=ISIGN(KSUSY1+15,KCS) - MINT(22)=-MINT(21) - - ELSEIF(ISUB.EQ.208) THEN -C...f + fbar -> ~tau_2 + ~tau_2bar - MINT(21)=ISIGN(KSUSY2+15,KCS) - MINT(22)=-MINT(21) - - ELSEIF(ISUB.EQ.209) THEN -C...f + fbar -> ~tau_1 + ~tau_2bar - IF(MINT(15).LT.0) JS=2 - IF(MINT(2).EQ.1) THEN - MINT(20+JS)=KFPR(ISUB,1) - MINT(23-JS)=-KFPR(ISUB,2) - ELSE - MINT(20+JS)=-KFPR(ISUB,1) - MINT(23-JS)=KFPR(ISUB,2) - ENDIF - - ELSEIF(ISUB.EQ.210) THEN -C...q + qbar' -> ~l_L + ~nulbar; th arbitrary - KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15)) - KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16)) - MINT(21)=-ISIGN(KFPR(ISUB,1),KCH1+KCH2) - MINT(22)=ISIGN(KFPR(ISUB,2),KCH1+KCH2) - - ELSEIF(ISUB.EQ.211) THEN -C...q + qbar'-> ~tau_1 + ~nutaubar; th arbitrary - KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15)) - KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16)) - MINT(21)=-ISIGN(KSUSY1+15,KCH1+KCH2) - MINT(22)=ISIGN(KSUSY1+16,KCH1+KCH2) - - ELSEIF(ISUB.EQ.212) THEN -C...q + qbar'-> ~tau_2 + ~nutaubar; th arbitrary - KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15)) - KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16)) - MINT(21)=-ISIGN(KSUSY2+15,KCH1+KCH2) - MINT(22)=ISIGN(KSUSY1+16,KCH1+KCH2) - - ELSEIF(ISUB.EQ.213) THEN -C...f + fbar -> ~nul + ~nulbar - MINT(21)=ISIGN(KFPR(ISUB,1),KCS) - MINT(22)=-MINT(21) - - ELSEIF(ISUB.EQ.214) THEN -C...f + fbar -> ~nutau + ~nutaubar - MINT(21)=ISIGN(KSUSY1+16,KCS) - MINT(22)=-MINT(21) - ENDIF - - ELSEIF(ISUB.LE.225) THEN - IF(ISUB.EQ.216) THEN -C...f + fbar -> ~chi01 + ~chi01 - MINT(21)=KSUSY1+22 - MINT(22)=KSUSY1+22 - - ELSEIF(ISUB.EQ.217) THEN -C...f + fbar -> ~chi02 + ~chi02 - MINT(21)=KSUSY1+23 - MINT(22)=KSUSY1+23 - - ELSEIF(ISUB.EQ.218 ) THEN -C...f + fbar -> ~chi03 + ~chi03 - MINT(21)=KSUSY1+25 - MINT(22)=KSUSY1+25 - - ELSEIF(ISUB.EQ.219 ) THEN -C...f + fbar -> ~chi04 + ~chi04 - MINT(21)=KSUSY1+35 - MINT(22)=KSUSY1+35 - - ELSEIF(ISUB.EQ.220 ) THEN -C...f + fbar -> ~chi01 + ~chi02 - IF(MINT(15).LT.0) JS=2 -C IF(PYR(0).GT.0.5D0) JS=2 - MINT(20+JS)=KSUSY1+22 - MINT(23-JS)=KSUSY1+23 - - ELSEIF(ISUB.EQ.221 ) THEN -C...f + fbar -> ~chi01 + ~chi03 - IF(MINT(15).LT.0) JS=2 -C IF(PYR(0).GT.0.5D0) JS=2 - MINT(20+JS)=KSUSY1+22 - MINT(23-JS)=KSUSY1+25 - - ELSEIF(ISUB.EQ.222) THEN -C...f + fbar -> ~chi01 + ~chi04 - IF(MINT(15).LT.0) JS=2 -C IF(PYR(0).GT.0.5D0) JS=2 - MINT(20+JS)=KSUSY1+22 - MINT(23-JS)=KSUSY1+35 - - ELSEIF(ISUB.EQ.223) THEN -C...f + fbar -> ~chi02 + ~chi03 - IF(MINT(15).LT.0) JS=2 -C IF(PYR(0).GT.0.5D0) JS=2 - MINT(20+JS)=KSUSY1+23 - MINT(23-JS)=KSUSY1+25 - - ELSEIF(ISUB.EQ.224) THEN -C...f + fbar -> ~chi02 + ~chi04 - IF(MINT(15).LT.0) JS=2 -C IF(PYR(0).GT.0.5D0) JS=2 - MINT(20+JS)=KSUSY1+23 - MINT(23-JS)=KSUSY1+35 - - ELSEIF(ISUB.EQ.225) THEN -C...f + fbar -> ~chi03 + ~chi04 - IF(MINT(15).LT.0) JS=2 -C IF(PYR(0).GT.0.5D0) JS=2 - MINT(20+JS)=KSUSY1+25 - MINT(23-JS)=KSUSY1+35 - ENDIF - - ELSEIF(ISUB.LE.236) THEN - IF(ISUB.EQ.226) THEN -C...f + fbar -> ~chi+-1 + ~chi-+1 -C...th=(p(q)-p(chi+))**2 or (p(qbar)-p(chi-))**2 - KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15)) - MINT(21)=ISIGN(KSUSY1+24,KCH1) - MINT(22)=-MINT(21) - - ELSEIF(ISUB.EQ.227) THEN -C...f + fbar -> ~chi+-2 + ~chi-+2 - KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15)) - MINT(21)=ISIGN(KSUSY1+37,KCH1) - MINT(22)=-MINT(21) - - ELSEIF(ISUB.EQ.228) THEN -C...f + fbar -> ~chi+-1 + ~chi-+2 -C...th=(p(q)-p(chi1+))**2 or th=(p(qbar)-p(chi1-))**2 -C...js=1 if pyr<.5, js=2 if pyr>.5 -C...if 15=q, 16=qbar and js=1, chi1+ + chi2-, th=(q-chi1+)**2 -C...if 15=qbar, 16=q and js=1, chi2- + chi1+, th=(q-chi1+)**2 -C...if 15=q, 16=qbar and js=2, chi1- + chi2+, th=(qbar-chi1-)**2 -C...if 15=qbar, 16=q and js=2, chi2+ + chi1-, th=(q-chi1-)**2 - KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15)) - KCH2=INT(1-KCH1)/2 - IF(MINT(2).EQ.1) THEN - MINT(21)= ISIGN(KSUSY1+24,KCH1) - MINT(22)= -ISIGN(KSUSY1+37,KCH1) -c IF(KCH2.EQ.0) JS=2 - ELSE - MINT(21)= ISIGN(KSUSY1+37,KCH1) - MINT(22)= -ISIGN(KSUSY1+24,KCH1) - JS=2 -c IF(KCH2.EQ.1) JS=2 - ENDIF - - ELSEIF(ISUB.EQ.229) THEN -C...q + qbar' -> ~chi01 + ~chi+-1 -C...th=(p(u)-p(chi+))**2 or (p(ubar)-p(chi-))**2 - KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15)) - KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16)) -C...CHECK THIS - IF(MOD(MINT(15),2).EQ.0) JS=2 - MINT(20+JS)=KSUSY1+22 - MINT(23-JS)=ISIGN(KSUSY1+24,KCH1+KCH2) - - ELSEIF(ISUB.EQ.230) THEN -C...q + qbar' -> ~chi02 + ~chi+-1 - KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15)) - KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16)) - IF(MOD(MINT(15),2).EQ.0) JS=2 - MINT(20+JS)=KSUSY1+23 - MINT(23-JS)=ISIGN(KSUSY1+24,KCH1+KCH2) - - ELSEIF(ISUB.EQ.231) THEN -C...q + qbar' -> ~chi03 + ~chi+-1 - KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15)) - KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16)) - IF(MOD(MINT(15),2).EQ.0) JS=2 - MINT(20+JS)=KSUSY1+25 - MINT(23-JS)=ISIGN(KSUSY1+24,KCH1+KCH2) - - ELSEIF(ISUB.EQ.232) THEN -C...q + qbar' -> ~chi04 + ~chi+-1 - KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15)) - KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16)) - IF(MOD(MINT(15),2).EQ.0) JS=2 - MINT(20+JS)=KSUSY1+35 - MINT(23-JS)=ISIGN(KSUSY1+24,KCH1+KCH2) - - ELSEIF(ISUB.EQ.233) THEN -C...q + qbar' -> ~chi01 + ~chi+-2 - KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15)) - KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16)) - IF(MOD(MINT(15),2).EQ.0) JS=2 - MINT(20+JS)=KSUSY1+22 - MINT(23-JS)=ISIGN(KSUSY1+37,KCH1+KCH2) - - ELSEIF(ISUB.EQ.234) THEN -C...q + qbar' -> ~chi02 + ~chi+-2 - KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15)) - KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16)) - IF(MOD(MINT(15),2).EQ.0) JS=2 - MINT(20+JS)=KSUSY1+23 - MINT(23-JS)=ISIGN(KSUSY1+37,KCH1+KCH2) - - ELSEIF(ISUB.EQ.235) THEN -C...q + qbar' -> ~chi03 + ~chi+-2 - KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15)) - KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16)) - IF(MOD(MINT(15),2).EQ.0) JS=2 - MINT(20+JS)=KSUSY1+25 - MINT(23-JS)=ISIGN(KSUSY1+37,KCH1+KCH2) - - ELSEIF(ISUB.EQ.236) THEN -C...q + qbar' -> ~chi04 + ~chi+-2 - KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15)) - KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16)) - IF(MOD(MINT(15),2).EQ.0) JS=2 - MINT(20+JS)=KSUSY1+35 - MINT(23-JS)=ISIGN(KSUSY1+37,KCH1+KCH2) - ENDIF - - ELSEIF(ISUB.LE.245) THEN - IF(ISUB.EQ.237) THEN -C...q + qbar -> ~chi01 + ~g -C...th arbitrary - IF(PYR(0).GT.0.5D0) JS=2 - MINT(20+JS)=KSUSY1+21 - MINT(23-JS)=KSUSY1+22 - KCC=17+JS - - ELSEIF(ISUB.EQ.238) THEN -C...q + qbar -> ~chi02 + ~g -C...th arbitrary - IF(PYR(0).GT.0.5D0) JS=2 - MINT(20+JS)=KSUSY1+21 - MINT(23-JS)=KSUSY1+23 - KCC=17+JS - - ELSEIF(ISUB.EQ.239) THEN -C...q + qbar -> ~chi03 + ~g -C...th arbitrary - IF(PYR(0).GT.0.5D0) JS=2 - MINT(20+JS)=KSUSY1+21 - MINT(23-JS)=KSUSY1+25 - KCC=17+JS - - ELSEIF(ISUB.EQ.240) THEN -C...q + qbar -> ~chi04 + ~g -C...th arbitrary - IF(PYR(0).GT.0.5D0) JS=2 - MINT(20+JS)=KSUSY1+21 - MINT(23-JS)=KSUSY1+35 - KCC=17+JS - - ELSEIF(ISUB.EQ.241) THEN -C...q + qbar' -> ~chi+-1 + ~g -C...if 15=u, 16=dbar, then (kch1+kch2)>0, js=1, chi+ -C...if 15=d, 16=ubar, then (kch1+kch2)<0, js=2, chi- -C...if 15=ubar, 16=d, then (kch1+kch2)<0, js=1, chi- -C...if 15=dbar, 16=u, then (kch1+kch2)>0, js=2, chi+ -C...th=(p(q)-p(chi+))**2 or (p(qbar')-p(chi-))**2 - KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15)) - KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16)) - JS=1 - IF(MINT(15)*(KCH1+KCH2).GT.0) JS=2 - MINT(20+JS)=KSUSY1+21 - MINT(23-JS)=ISIGN(KSUSY1+24,KCH1+KCH2) - KCC=17+JS - - ELSEIF(ISUB.EQ.242) THEN -C...q + qbar' -> ~chi+-2 + ~g -C...if 15=u, 16=dbar, then (kch1+kch2)>0, js=1, chi+ -C...if 15=d, 16=ubar, then (kch1+kch2)<0, js=2, chi- -C...if 15=ubar, 16=d, then (kch1+kch2)<0, js=1, chi- -C...if 15=dbar, 16=u, then (kch1+kch2)>0, js=2, chi+ -C...th=(p(q)-p(chi+))**2 or (p(qbar')-p(chi-))**2 - KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15)) - KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16)) - JS=1 - IF(MINT(15)*(KCH1+KCH2).GT.0) JS=2 - MINT(20+JS)=KSUSY1+21 - MINT(23-JS)=ISIGN(KSUSY1+37,KCH1+KCH2) - KCC=17+JS - - ELSEIF(ISUB.EQ.243) THEN -C...q + qbar -> ~g + ~g ; th arbitrary - MINT(21)=KSUSY1+21 - MINT(22)=KSUSY1+21 - KCC=MINT(2)+4 - - ELSEIF(ISUB.EQ.244) THEN -C...g + g -> ~g + ~g ; th arbitrary - KCC=MINT(2)+12 - KCS=(-1)**INT(1.5D0+PYR(0)) - MINT(21)=KSUSY1+21 - MINT(22)=KSUSY1+21 - ENDIF - - ELSEIF(ISUB.LE.260) THEN - IF(ISUB.EQ.246) THEN -C...qj + g -> ~qj_L + ~chi01 - IF(MINT(15).EQ.21) JS=2 - I=MINT(14+JS) - IA=IABS(I) - MINT(20+JS)=ISIGN(KSUSY1+IA,I) - MINT(23-JS)=KSUSY1+22 - KCC=15+JS - KCS=ISIGN(1,MINT(14+JS)) - - ELSEIF(ISUB.EQ.247) THEN -C...qj + g -> ~qj_R + ~chi01 - IF(MINT(15).EQ.21) JS=2 - I=MINT(14+JS) - IA=IABS(I) - MINT(20+JS)=ISIGN(KSUSY2+IA,I) - MINT(23-JS)=KSUSY1+22 - KCC=15+JS - KCS=ISIGN(1,MINT(14+JS)) - - ELSEIF(ISUB.EQ.248) THEN -C...qj + g -> ~qj_L + ~chi02 - IF(MINT(15).EQ.21) JS=2 - I=MINT(14+JS) - IA=IABS(I) - MINT(20+JS)=ISIGN(KSUSY1+IA,I) - MINT(23-JS)=KSUSY1+23 - KCC=15+JS - KCS=ISIGN(1,MINT(14+JS)) - - ELSEIF(ISUB.EQ.249) THEN -C...qj + g -> ~qj_R + ~chi02 - IF(MINT(15).EQ.21) JS=2 - I=MINT(14+JS) - IA=IABS(I) - MINT(20+JS)=ISIGN(KSUSY2+IA,I) - MINT(23-JS)=KSUSY1+23 - KCC=15+JS - KCS=ISIGN(1,MINT(14+JS)) - - ELSEIF(ISUB.EQ.250) THEN -C...qj + g -> ~qj_L + ~chi03 - IF(MINT(15).EQ.21) JS=2 - I=MINT(14+JS) - IA=IABS(I) - MINT(20+JS)=ISIGN(KSUSY1+IA,I) - MINT(23-JS)=KSUSY1+25 - KCC=15+JS - KCS=ISIGN(1,MINT(14+JS)) - - ELSEIF(ISUB.EQ.251) THEN -C...qj + g -> ~qj_R + ~chi03 - IF(MINT(15).EQ.21) JS=2 - I=MINT(14+JS) - IA=IABS(I) - MINT(20+JS)=ISIGN(KSUSY2+IA,I) - MINT(23-JS)=KSUSY1+25 - KCC=15+JS - KCS=ISIGN(1,MINT(14+JS)) - - ELSEIF(ISUB.EQ.252) THEN -C...qj + g -> ~qj_L + ~chi04 - IF(MINT(15).EQ.21) JS=2 - I=MINT(14+JS) - IA=IABS(I) - MINT(20+JS)=ISIGN(KSUSY1+IA,I) - MINT(23-JS)=KSUSY1+35 - KCC=15+JS - KCS=ISIGN(1,MINT(14+JS)) - - ELSEIF(ISUB.EQ.253) THEN -C...qj + g -> ~qj_R + ~chi04 - IF(MINT(15).EQ.21) JS=2 - I=MINT(14+JS) - IA=IABS(I) - MINT(20+JS)=ISIGN(KSUSY2+IA,I) - MINT(23-JS)=KSUSY1+35 - KCC=15+JS - KCS=ISIGN(1,MINT(14+JS)) - - ELSEIF(ISUB.EQ.254) THEN -C...qj + g -> ~qk_L + ~chi+-1 - IF(MINT(15).EQ.21) JS=2 - I=MINT(14+JS) - IA=IABS(I) - MINT(23-JS)=ISIGN(KSUSY1+24,KCHG(IA,1)*I) - IB=-IA+INT((IA+1)/2)*4-1 - MINT(20+JS)=ISIGN(KSUSY1+IB,I) - KCC=15+JS - KCS=ISIGN(1,MINT(14+JS)) - - ELSEIF(ISUB.EQ.255) THEN -C...qj + g -> ~qk_L + ~chi+-1 - IF(MINT(15).EQ.21) JS=2 - I=MINT(14+JS) - IA=IABS(I) - MINT(23-JS)=ISIGN(KSUSY1+24,KCHG(IA,1)*I) - IB=-IA+INT((IA+1)/2)*4-1 - MINT(20+JS)=ISIGN(KSUSY2+IB,I) - KCC=15+JS - KCS=ISIGN(1,MINT(14+JS)) - - ELSEIF(ISUB.EQ.256) THEN -C...qj + g -> ~qk_L + ~chi+-2 - IF(MINT(15).EQ.21) JS=2 - I=MINT(14+JS) - IA=IABS(I) - IB=-IA+INT((IA+1)/2)*4-1 - MINT(20+JS)=ISIGN(KSUSY1+IB,I) - MINT(23-JS)=ISIGN(KSUSY1+37,KCHG(IA,1)*I) - KCC=15+JS - KCS=ISIGN(1,MINT(14+JS)) - - ELSEIF(ISUB.EQ.257) THEN -C...qj + g -> ~qk_R + ~chi+-2 - IF(MINT(15).EQ.21) JS=2 - I=MINT(14+JS) - IA=IABS(I) - IB=-IA+INT((IA+1)/2)*4-1 - MINT(20+JS)=ISIGN(KSUSY2+IB,I) - MINT(23-JS)=ISIGN(KSUSY1+37,KCHG(IA,1)*I) - KCC=15+JS - KCS=ISIGN(1,MINT(14+JS)) - - ELSEIF(ISUB.EQ.258) THEN -C...qj + g -> ~qj_L + ~g - IF(MINT(15).EQ.21) JS=2 - I=MINT(14+JS) - IA=IABS(I) - MINT(20+JS)=ISIGN(KSUSY1+IA,I) - MINT(23-JS)=KSUSY1+21 - KCC=MINT(2)+6 - IF(JS.EQ.2) KCC=KCC+2 - KCS=ISIGN(1,I) - - ELSEIF(ISUB.EQ.259) THEN -C...qj + g -> ~qj_R + ~g - IF(MINT(15).EQ.21) JS=2 - I=MINT(14+JS) - IA=IABS(I) - MINT(20+JS)=ISIGN(KSUSY2+IA,I) - MINT(23-JS)=KSUSY1+21 - KCC=MINT(2)+6 - IF(JS.EQ.2) KCC=KCC+2 - KCS=ISIGN(1,I) - ENDIF - - ELSEIF(ISUB.LE.270) THEN - IF(ISUB.EQ.261) THEN -C...f + fbar -> ~t_1 + ~t_1bar; th = (p(q)-p(sq))**2 - ISGN=1 - IF(MINT(43).EQ.1.AND.PYR(0).GT.0.5D0) ISGN=-1 - MINT(21)=ISGN*ISIGN(KFPR(ISUB,1),KCS) - MINT(22)=-MINT(21) -C...Correct color combination - IF(MINT(43).EQ.4) KCC=4 - - ELSEIF(ISUB.EQ.262) THEN -C...f + fbar -> ~t_2 + ~t_2bar; th = (p(q)-p(sq))**2 - ISGN=1 - IF(MINT(43).EQ.1.AND.PYR(0).GT.0.5D0) ISGN=-1 - MINT(21)=ISGN*ISIGN(KFPR(ISUB,1),KCS) - MINT(22)=-MINT(21) -C...Correct color combination - IF(MINT(43).EQ.4) KCC=4 - - ELSEIF(ISUB.EQ.263) THEN -C...f + fbar -> ~t_1 + ~t_2bar; th = (p(q)-p(sq))**2 - IF((KCS.GT.0.AND.MINT(2).EQ.1).OR. - & (KCS.LT.0.AND.MINT(2).EQ.2)) THEN - MINT(21)=ISIGN(KFPR(ISUB,1),KCS) - MINT(22)=-ISIGN(KFPR(ISUB,2),KCS) - ELSE - JS=2 - MINT(21)=ISIGN(KFPR(ISUB,2),KCS) - MINT(22)=-ISIGN(KFPR(ISUB,1),KCS) - ENDIF -C...Correct color combination - IF(MINT(43).EQ.4) KCC=4 - - ELSEIF(ISUB.EQ.264) THEN -C...g + g -> ~t_1 + ~t_1bar; th arbitrary - KCS=(-1)**INT(1.5D0+PYR(0)) - MINT(21)=ISIGN(KFPR(ISUB,1),KCS) - MINT(22)=-MINT(21) - KCC=MINT(2)+10 - - ELSEIF(ISUB.EQ.265) THEN -C...g + g -> ~t_2 + ~t_2bar; th arbitrary - KCS=(-1)**INT(1.5D0+PYR(0)) - MINT(21)=ISIGN(KFPR(ISUB,1),KCS) - MINT(22)=-MINT(21) - KCC=MINT(2)+10 - ENDIF - - ELSEIF(ISUB.LE.301) THEN - IF(ISUB.EQ.271.OR.ISUB.EQ.281.OR.ISUB.EQ.291) THEN -C...qi + qj -> ~qi_L + ~qj_L - KCC=MINT(2) - IF(MINT(15)*MINT(16).LT.0) KCC=KCC+2 - MINT(21)=ISIGN(KSUSY1+IABS(MINT(15)),MINT(15)) - MINT(22)=ISIGN(KSUSY1+IABS(MINT(16)),MINT(16)) - - ELSEIF(ISUB.EQ.272.OR.ISUB.EQ.282.OR.ISUB.EQ.292) THEN -C...qi + qj -> ~qi_R + ~qj_R - KCC=MINT(2) - IF(MINT(15)*MINT(16).LT.0) KCC=KCC+2 - MINT(21)=ISIGN(KSUSY2+IABS(MINT(15)),MINT(15)) - MINT(22)=ISIGN(KSUSY2+IABS(MINT(16)),MINT(16)) - - ELSEIF(ISUB.EQ.273.OR.ISUB.EQ.283.OR.ISUB.EQ.293) THEN -C...qi + qj -> ~qi_L + ~qj_R - MINT(21)=ISIGN(KFPR(ISUB,1),MINT(15)) - MINT(22)=ISIGN(KFPR(ISUB,2),MINT(16)) - KCC=MINT(2) - IF(MINT(15)*MINT(16).LT.0) KCC=KCC+2 - - ELSEIF(ISUB.EQ.274.OR.ISUB.EQ.284) THEN -C...qi + qjbar -> ~qi_L + ~qj_Lbar; th = (p(f)-p(sf'))**2 - MINT(21)=ISIGN(KSUSY1+IABS(MINT(15)),MINT(15)) - MINT(22)=ISIGN(KSUSY1+IABS(MINT(16)),MINT(16)) - KCC=MINT(2) - IF(MINT(15)*MINT(16).LT.0) KCC=KCC+2 - - ELSEIF(ISUB.EQ.275.OR.ISUB.EQ.285) THEN -C...qi + qjbar -> ~qi_R + ~qj_Rbar ; th = (p(f)-p(sf'))**2 - MINT(21)=ISIGN(KSUSY2+IABS(MINT(15)),MINT(15)) - MINT(22)=ISIGN(KSUSY2+IABS(MINT(16)),MINT(16)) - KCC=MINT(2) - IF(MINT(15)*MINT(16).LT.0) KCC=KCC+2 - - ELSEIF(ISUB.EQ.276.OR.ISUB.EQ.286.OR.ISUB.EQ.296) THEN -C...qi + qjbar -> ~qi_L + ~qj_Rbar ; th = (p(f)-p(sf'))**2 - MINT(21)=ISIGN(KFPR(ISUB,1),MINT(15)) - MINT(22)=ISIGN(KFPR(ISUB,2),MINT(16)) - KCC=MINT(2) - IF(MINT(15)*MINT(16).LT.0) KCC=KCC+2 - - ELSEIF(ISUB.EQ.277.OR.ISUB.EQ.287) THEN -C...f + fbar -> ~qi_L + ~qi_Lbar ; th = (p(q)-p(sq))**2 - ISGN=1 - IF(MINT(43).EQ.1.AND.PYR(0).GT.0.5D0) ISGN=-1 - MINT(21)=ISGN*ISIGN(KFPR(ISUB,1),KCS) - MINT(22)=-MINT(21) - IF(MINT(43).EQ.4) KCC=4 - - ELSEIF(ISUB.EQ.278.OR.ISUB.EQ.288) THEN -C...f + fbar -> ~qi_R + ~qi_Rbar; th = (p(q)-p(sq))**2 - ISGN=1 - IF(MINT(43).EQ.1.AND.PYR(0).GT.0.5D0) ISGN=-1 - MINT(21)=ISGN*ISIGN(KFPR(ISUB,1),KCS) - MINT(22)=-MINT(21) - IF(MINT(43).EQ.4) KCC=4 - - ELSEIF(ISUB.EQ.279.OR.ISUB.EQ.289) THEN -C...g + g -> ~qi_L + ~qi_Lbar ; th arbitrary -C...pure LL + RR - KCS=(-1)**INT(1.5D0+PYR(0)) - MINT(21)=ISIGN(KFPR(ISUB,1),KCS) - MINT(22)=-MINT(21) - KCC=MINT(2)+10 - - ELSEIF(ISUB.EQ.280.OR.ISUB.EQ.290) THEN -C...g + g -> ~qi_R + ~qi_Rbar ; th arbitrary - KCS=(-1)**INT(1.5D0+PYR(0)) - MINT(21)=ISIGN(KFPR(ISUB,1),KCS) - MINT(22)=-MINT(21) - KCC=MINT(2)+10 - - ELSEIF(ISUB.EQ.294) THEN -C...qj + g -> ~qj_L + ~g - IF(MINT(15).EQ.21) JS=2 - I=MINT(14+JS) - IA=IABS(I) - MINT(20+JS)=ISIGN(KSUSY1+IA,I) - MINT(23-JS)=KSUSY1+21 - KCC=MINT(2)+6 - IF(JS.EQ.2) KCC=KCC+2 - KCS=ISIGN(1,I) - - ELSEIF(ISUB.EQ.295) THEN -C...qj + g -> ~qj_R + ~g - IF(MINT(15).EQ.21) JS=2 - I=MINT(14+JS) - IA=IABS(I) - MINT(20+JS)=ISIGN(KSUSY2+IA,I) - MINT(23-JS)=KSUSY1+21 - KCC=MINT(2)+6 - IF(JS.EQ.2) KCC=KCC+2 - KCS=ISIGN(1,I) - - ELSEIF(ISUB.EQ.297.OR.ISUB.EQ.298) THEN -C...q + qbar' -> H+ + H0 - KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15)) - KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16)) - IF(MINT(15)*(KCH1+KCH2).GT.0) JS=2 - MINT(20+JS)=ISIGN(37,KCH1+KCH2) - MINT(23-JS)=KFPR(ISUB,2) - ELSEIF(ISUB.EQ.299.OR.ISUB.EQ.300) THEN -C...f + fbar -> A0 + H0; th arbitrary - IF(PYR(0).GT.0.5D0) JS=2 - MINT(20+JS)=KFPR(ISUB,1) - MINT(23-JS)=KFPR(ISUB,2) - ELSEIF(ISUB.EQ.301) THEN -C...f + fbar -> H+ H- - MINT(21)=ISIGN(KFPR(ISUB,1),KCS) - MINT(22)=-MINT(21) - ENDIF -CMRENNA-- - ELSEIF(ISUB.LE.330) THEN - IF(ISUB.EQ.311)THEN -C...g + g -> g* + g* (UED) - KCC=MINT(2)+12 - KCS=(-1)**INT(1.5D0+PYR(0)) - MUED(1)=472 - MUED(2)=472 - MINT(21)=IUEDEQ(472) - MINT(22)=IUEDEQ(472) - ELSEIF(ISUB.EQ.312)THEN -C...q + g -> q*_D + g*, q*_S + g* -C...The two channels have the same cross section - KKFLMI=450 - IF(PYR(0).GT.0.5)KKFLMI=456 - IF(MINT(15).EQ.21) JS=2 - KCC=MINT(2)+6 - IF(MINT(15).EQ.21)KCC=KCC+2 - IF(MINT(15).NE.21)THEN - KCS=ISIGN(1,MINT(15)) - MUED(2)=472 - MUED(1)=KCS*(KKFLMI+IABS(MINT(15))) - MINT(22)=IUEDEQ(472) - MINT(21)=KCS*IUEDEQ(KKFLMI+IABS(MINT(15))) - ENDIF - IF(MINT(16).NE.21)THEN - KCS=ISIGN(1,MINT(16)) - MUED(2)=KCS*(KKFLMI+IABS(MINT(16))) - MUED(1)=472 - MINT(22)=KCS*IUEDEQ(KKFLMI+IABS(MINT(16))) - MINT(21)=IUEDEQ(472) - ENDIF - ELSEIF(ISUB.EQ.313)THEN -C...q + q' -> q*_D + q*_D',q*_S+q*_S' -C...The two channels have the same cross section - KKFLMI=450 - IF(PYR(0).GT.0.5)KKFLMI=456 - KCC=MINT(2) - IF(MINT(15).EQ.MINT(16))THEN - MUED(1)=SIGN(1,MINT(15))*(KKFLMI+IABS(MINT(15))) - MUED(2)=MINT(21) - MINT(21)=SIGN(1,MINT(15))*IUEDEQ(KKFLMI+IABS(MINT(15))) - MINT(22)=MINT(21) - ELSE - MUED(1)=SIGN(1,MINT(15))*(KKFLMI+IABS(MINT(15))) - MUED(2)=SIGN(1,MINT(16))*(KKFLMI+IABS(MINT(16))) - MINT(21)=SIGN(1,MINT(15))*IUEDEQ(KKFLMI+IABS(MINT(15))) - MINT(22)=SIGN(1,MINT(16))*IUEDEQ(KKFLMI+IABS(MINT(16))) - ENDIF - IF(MINT(15)*MINT(16).LT.0) KCC=KCC+2 - ELSEIF(ISUB.EQ.314)THEN -C...g + g -> q*_D + q*_D_bar, q*_S + q*_S_bar -C...The two channels have the same cross section - KKFLMI=450 - IF(PYR(0).GT.0.5)KKFLMI=456 - KCS=(-1)**INT(1.5D0+PYR(0)) - XFLAOUT=PYR(0) - IF(XFLAOUT.LE.0.2)THEN - MUED(1)=ISIGN(1,KCS)*(KKFLMI+1) - MINT(21)=ISIGN(1,KCS)*IUEDEQ(KKFLMI+1) - ELSEIF(XFLAOUT.LE.0.4)THEN - MUED(1)=ISIGN(1,KCS)*(KKFLMI+2) - MINT(21)=ISIGN(1,KCS)*IUEDEQ(KKFLMI+2) - ELSEIF(XFLAOUT.LE.0.6)THEN - MUED(1)=ISIGN(1,KCS)*(KKFLMI+3) - MINT(21)=ISIGN(1,KCS)*IUEDEQ(KKFLMI+3) - ELSEIF(XFLAOUT.LE.0.8)THEN - MUED(1)=ISIGN(1,KCS)*(KKFLMI+4) - MINT(21)=ISIGN(1,KCS)*IUEDEQ(KKFLMI+4) - ELSE - MUED(1)=ISIGN(1,KCS)*(KKFLMI+5) - MINT(21)=ISIGN(1,KCS)*IUEDEQ(KKFLMI+5) - ENDIF - MINT(22)=-MINT(21) - MUED(2)=-MUED(1) - KCC=MINT(2)+10 - ELSEIF(ISUB.EQ.315)THEN -C...q + qbar -> q*_D + q*_D_bar, q*_S + q*_S_bar -C...The two channels have the same cross section - KKFLMI=450 - IF(PYR(0).GT.0.5)KKFLMI=456 - MUED(1)=ISIGN(1,MINT(15))*(KKFLMI+IABS(MINT(15))) - MUED(2)=-MINT(21) - MINT(21)=ISIGN(1,MINT(15))*IUEDEQ(KKFLMI+IABS(MINT(15))) - MINT(22)=-MINT(21) - KCC=4 - ELSEIF(ISUB.EQ.316)THEN -C...q + qbar' -> q*_D + q*_S_bar' - MUED(1)=ISIGN(1,MINT(15))*(456+IABS(MINT(15))) - MUED(2)=ISIGN(1,MINT(16))*(450+IABS(MINT(16))) - MINT(21)=ISIGN(1,MINT(15))*IUEDEQ(456+IABS(MINT(15))) - MINT(22)=ISIGN(1,MINT(16))*IUEDEQ(450+IABS(MINT(16))) - KCC=MINT(2)+2 - ELSEIF(ISUB.EQ.317)THEN -C...q + qbar' -> q*_D + q*_D_bar', q*_S + q*_S_bar -C...The two channels have the same cross section - KKFLMI=450 - IF(PYR(0).GT.0.5)KKFLMI=456 - MUED(1)=ISIGN(1,MINT(15))*(KKFLMI+IABS(MINT(15))) - MUED(2)=ISIGN(1,MINT(16))*(KKFLMI+IABS(MINT(16))) - MINT(21)=ISIGN(1,MINT(15))*IUEDEQ(KKFLMI+IABS(MINT(15))) - MINT(22)=ISIGN(1,MINT(16))*IUEDEQ(KKFLMI+IABS(MINT(16))) - KCC=MINT(2)+2 - ELSEIF(ISUB.EQ.318)THEN -C...q + q' -> q*_D + q*_S' - KCC=MINT(2) - MUED(1)=SIGN(1,MINT(15))*(456+IABS(MINT(15))) - MUED(2)=SIGN(1,MINT(16))*(450+IABS(MINT(16))) - MINT(21)=SIGN(1,MINT(15))*IUEDEQ(456+IABS(MINT(15))) - MINT(22)=SIGN(1,MINT(16))*IUEDEQ(450+IABS(MINT(16))) - ELSEIF(ISUB.EQ.319)THEN -C...q + qbar -> q*_D' + q*_D_bar', q*_S' + q*_S_bar' -C...The two channels have the same cross section - KKFLMI=450 - IF(PYR(0).GT.0.5)KKFLMI=456 - XFLAOUT=PYR(0) - IIFLAV=0 -C...N.B. NFLAVOURS=IUED(3) -C DO I=1,NFLAVOURS - DO 433 I=1,IUED(3) - IF(I.NE.IABS(MINT(15)))THEN - IIFLAV=IIFLAV+1 - IOKFLA(IIFLAV)=I - ENDIF - 433 CONTINUE - FLASTEP=1./(IUED(3)-1) - DO I=1,IUED(3)-1 - FLAVV=FLASTEP*I - IF(XFLAOUT.LE.FLAVV)THEN - MUED(1)=ISIGN(1,MINT(15))*(KKFLMI+IOKFLA(I)) - MINT(21)=ISIGN(1,MINT(15))*IUEDEQ(KKFLMI+IOKFLA(I)) - GOTO 435 - ENDIF - ENDDO - 435 CONTINUE - IF(IABS(MUED(1)).LT.451.AND.IABS(MUED(1)).GT.462)THEN - WRITE(MSTU(11),*) 'IN PYSCAT: KK FLAVORS PROBLEM !!!' - CALL PYSTOP(5000000) - ENDIF - MINT(22)=-MINT(21) - KCC=4 - ENDIF - - ELSEIF(ISUB.LE.360) THEN - - IF(ISUB.EQ.341.OR.ISUB.EQ.342) THEN -C...l + l -> H_L++/--, H_R++/-- - KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15)) - KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16)) - KFRES=ISIGN(KFPR(ISUB,1),KCH1+KCH2) - - ELSEIF(ISUB.GE.343.AND.ISUB.LE.348) THEN -C...l + gamma -> l' + H++/--; th=(p(l)-p(H))**2 - IF(MINT(15).EQ.22) JS=2 - MINT(20+JS)=ISIGN(KFPR(ISUB,1),-MINT(14+JS)) - MINT(23-JS)=ISIGN(KFPR(ISUB,2),-MINT(14+JS)) - KCC=22 - - ELSEIF(ISUB.EQ.349.OR.ISUB.EQ.350) THEN -C...f + fbar -> H++ + H--; th = (p(f)-p(H--))**2 - MINT(21)=-ISIGN(KFPR(ISUB,1),MINT(15)) - MINT(22)=-MINT(21) - - ELSEIF(ISUB.EQ.351.OR.ISUB.EQ.352) THEN -C...f + f' -> f" + f"' + H++/-- (W+/- + W+/- -> H++/-- -C...as inner process). - DO 450 JT=1,2 - I=MINT(14+JT) - IA=IABS(I) - IF(IA.LE.10) THEN - RVCKM=VINT(180+I)*PYR(0) - DO 440 J=1,MSTP(1) - IB=2*J-1+MOD(IA,2) - IPM=(5-ISIGN(1,I))/2 - IDC=J+MDCY(IA,2)+2 - IF(MDME(IDC,1).NE.1.AND.MDME(IDC,1).NE.IPM) GOTO 440 - MINT(20+JT)=ISIGN(IB,I) - RVCKM=RVCKM-VCKM((IA+1)/2,(IB+1)/2) - IF(RVCKM.LE.0D0) GOTO 450 - 440 CONTINUE - ELSE - IB=2*((IA+1)/2)-1+MOD(IA,2) - MINT(20+JT)=ISIGN(IB,I) - ENDIF - 450 CONTINUE - KCC=22 - KFRES=ISIGN(KFPR(ISUB,1),MINT(15)) - IF(MOD(MINT(15),2).EQ.1) KFRES=-KFRES - - ELSEIF(ISUB.EQ.353) THEN -C...f + fbar -> Z_R0 - KFRES=KFPR(ISUB,1) - - ELSEIF(ISUB.EQ.354) THEN -C...f + fbar' -> W+/- - KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15)) - KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16)) - KFRES=ISIGN(KFPR(ISUB,1),KCH1+KCH2) - - ENDIF - - ELSEIF(ISUB.LE.380) THEN - - IF(ISUB.LE.363.OR.ISUB.EQ.368) THEN -C...f + fbar -> charged+ charged- technicolor - KSW=(-1)**INT(1.5D0+PYR(0)) - MINT(21)=ISIGN(KFPR(ISUB,1),KSW) - MINT(22)=-ISIGN(KFPR(ISUB,2),KSW) - - ELSEIF(ISUB.LE.367.OR.ISUB.EQ.379.OR.ISUB.EQ.380) THEN -C...f + fbar -> neutral neutral technicolor - MINT(21)=KFPR(ISUB,1) - MINT(22)=KFPR(ISUB,2) - - ELSEIF(ISUB.EQ.374.OR.ISUB.EQ.375.OR.ISUB.EQ.378) THEN -C...f + fbar' -> neutral charged technicolor - IN=1 - IC=2 - KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15)) - KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16)) - IF(MINT(15)*(KCH1+KCH2).LT.0) JS=2 - MINT(23-JS)=ISIGN(KFPR(ISUB,IC),KCH1+KCH2) - MINT(20+JS)=KFPR(ISUB,IN) - - ELSEIF(ISUB.GE.370.AND.ISUB.LE.377) THEN -C...f + fbar' -> charged neutral technicolor - IN=2 - IC=1 - KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15)) - KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16)) - IF(MINT(15)*(KCH1+KCH2).GT.0) JS=2 - MINT(20+JS)=ISIGN(KFPR(ISUB,IC),KCH1+KCH2) - MINT(23-JS)=KFPR(ISUB,IN) - ENDIF - - ELSEIF(ISUB.LE.400) THEN - IF(ISUB.EQ.381) THEN -C...f + f' -> f + f' (g exchange); th = (p(f)-p(f))**2, TC extensions - KCC=MINT(2) - IF(MINT(15)*MINT(16).LT.0) KCC=KCC+2 - - ELSEIF(ISUB.EQ.382) THEN -C...f + fbar -> f' + fbar'; th = (p(f)-p(f'))**2, TC extensions - MINT(21)=ISIGN(KFLF,MINT(15)) - MINT(22)=-MINT(21) - KCC=4 - - ELSEIF(ISUB.EQ.383) THEN -C...f + fbar -> g + g; th arbitrary, TC extensions - MINT(21)=21 - MINT(22)=21 - KCC=MINT(2)+4 - - ELSEIF(ISUB.EQ.384) THEN -C...f + g -> f + g; th = (p(f)-p(f))**2, TC extensions - IF(MINT(15).EQ.21) JS=2 - KCC=MINT(2)+6 - IF(MINT(15).EQ.21) KCC=KCC+2 - IF(MINT(15).NE.21) KCS=ISIGN(1,MINT(15)) - IF(MINT(16).NE.21) KCS=ISIGN(1,MINT(16)) - - ELSEIF(ISUB.EQ.385) THEN -C...g + g -> f + fbar; th arbitrary, TC extensions - KCS=(-1)**INT(1.5D0+PYR(0)) - MINT(21)=ISIGN(KFLF,KCS) - MINT(22)=-MINT(21) - KCC=MINT(2)+10 - - ELSEIF(ISUB.EQ.386) THEN -C...g + g -> g + g; th arbitrary, TC extensions - KCC=MINT(2)+12 - KCS=(-1)**INT(1.5D0+PYR(0)) - - ELSEIF(ISUB.EQ.387) THEN -C...q + qbar -> Q + Qbar; th = (p(q)-p(Q))**2, TC extensions - MINT(21)=ISIGN(MINT(55),MINT(15)) - MINT(22)=-MINT(21) - KCC=4 - - ELSEIF(ISUB.EQ.388) THEN -C...g + g -> Q + Qbar; th arbitrary, TC extensions - KCS=(-1)**INT(1.5D0+PYR(0)) - MINT(21)=ISIGN(MINT(55),KCS) - MINT(22)=-MINT(21) - KCC=MINT(2)+10 - - ELSEIF(ISUB.EQ.391) THEN -C...f + fbar -> G*. - KFRES=KFPR(ISUB,1) - - ELSEIF(ISUB.EQ.392) THEN -C...g + g -> G*. - KCC=21 - KFRES=KFPR(ISUB,1) - - ELSEIF(ISUB.EQ.393) THEN -C...q + qbar -> g + G*; th arbitrary. - IF(PYR(0).GT.0.5D0) JS=2 - MINT(20+JS)=KFPR(ISUB,1) - MINT(23-JS)=KFPR(ISUB,2) - KCC=17+JS - - ELSEIF(ISUB.EQ.394) THEN -C...q + g -> q + G*; th = (p(f) - p(f))**2 - IF(MINT(15).EQ.21) JS=2 - MINT(23-JS)=KFPR(ISUB,2) - KCC=15+JS - KCS=ISIGN(1,MINT(14+JS)) - - ELSEIF(ISUB.EQ.395) THEN -C...g + g -> G* + g; th arbitrary. - IF(PYR(0).GT.0.5D0) JS=2 - MINT(23-JS)=KFPR(ISUB,2) - KCC=22+JS - ENDIF - - ELSEIF(ISUB.LE.420) THEN - IF(ISUB.EQ.401) THEN -C...g + g -> t + b + H+/- - KCS=(-1)**INT(1.5D0+PYR(0)) - MINT(21)=ISIGN(KFPR(ISUBSV,2),KCS) - MINT(22)=ISIGN(5,-KCS) - KCC=11+INT(0.5D0+PYR(0)) - KFRES=ISIGN(KFHIGG,-KCS) - - ELSEIF(ISUB.EQ.402) THEN -C...q + qbar -> t + b + H+/- - KFL=(-1)**INT(1.5D0+PYR(0)) - MINT(21)=ISIGN(INT(6.+.5*KFL),KCS) - MINT(22)=ISIGN(INT(6.-.5*KFL),-KCS) - KCC=4 - KFRES=ISIGN(KFHIGG,-KFL*KCS) - ENDIF - -C...QUARKONIA+++ -C...Additional code by Stefan Wolf - ELSEIF(ISUB.LE.430) THEN - IF(ISUB.GE.421.AND.ISUB.LE.424) THEN -C...g + g -> QQ~[n] + g -C...MINT(21), MINT(22) copied from ISUB.EQ.86-89 -C...[g + g -> (J/Psi, chi_0c, chi_1c or chi_2c) + g] -C...KCC and KCS copied from ISUB.EQ.86-89 (for ISUB.EQ.421) -C...[g + g -> (J/Psi, chi_0c, chi_1c or chi_2c) + g] -C...or from ISUB.EQ.68 (for ISUB.NE.421) -C...[g + g -> g + g; th arbitrary] - MINT(21)=KFPR(ISUBSV,1) - MINT(22)=KFPR(ISUBSV,2) - IF(ISUB.EQ.421) THEN - KCC=24 - KCS=(-1)**INT(1.5D0+PYR(0)) - ELSE - KCC=MINT(2)+12 - KCS=(-1)**INT(1.5D0+PYR(0)) - ENDIF - - ELSEIF(ISUB.GE.425.AND.ISUB.LE.427) THEN -C...q + g -> q + QQ~[n] -C...MINT(21), MINT(22) "copied" from ISUB.EQ.112 -C...[f + g -> f + h0; th = (p(f)-p(f))**2; (q + g -> q + h0 only)] -C...KCC copied from ISUB.EQ.28 -C...[f + g -> f + g; th = (p(f)-p(f))**2; (q + g -> q + g only)] - IF(MINT(15).EQ.21) JS=2 - MINT(23-JS)=KFPR(ISUBSV,2) - KCC=MINT(2)+6 - IF(MINT(15).EQ.21) KCC=KCC+2 - IF(MINT(15).NE.21) KCS=ISIGN(1,MINT(15)) - IF(MINT(16).NE.21) KCS=ISIGN(1,MINT(16)) - - ELSEIF(ISUB.GE.428.AND.ISUB.LE.430) THEN -C...q + q~ -> g + QQ~[n] -C...MINT(21), MINT(22) "copied" from ISUB.EQ.111 -C...[f + fbar -> g + h0; th arbitrary; (q + qbar -> g + h0 only)] -C...KCC copied from ISUB.EQ.13 -C...[f + fbar -> g + g; th arbitrary; (q + qbar -> g + g only)] - IF(PYR(0).GT.0.5) JS=2 - MINT(20+JS)=21 - MINT(23-JS)=KFPR(ISUBSV,2) - KCC=MINT(2)+4 - ENDIF - - ELSEIF(ISUB.LE.440) THEN - IF(ISUB.GE.431.AND.ISUB.LE.433) THEN -C...g + g -> QQ~[n] + g -C...MINT(21), MINT(22) copied from ISUB.EQ.86-89 -C...[g + g -> (J/Psi, chi_0c, chi_1c or chi_2c) + g] -C...KCC and KCS copied from ISUB.EQ.86-89 -C...[g + g -> (J/Psi, chi_0c, chi_1c or chi_2c) + g] - MINT(21)=KFPR(ISUBSV,1) - MINT(22)=KFPR(ISUBSV,2) - KCC=24 - KCS=(-1)**INT(1.5D0+PYR(0)) - - ELSEIF(ISUB.GE.434.AND.ISUB.LE.436) THEN -C...q + g -> q + QQ~[n] -C...MINT(21), MINT(22) "copied" from ISUB.EQ.112 -C...[f + g -> f + h0; th = (p(f)-p(f))**2; (q + g -> q + h0 only)] -C...KCC and KCS copied from ISUB.EQ.112 -C...[f + g -> f + h0; th = (p(f)-p(f))**2; (q + g -> q + h0 only)] - IF(MINT(15).EQ.21) JS=2 - MINT(23-JS)=KFPR(ISUBSV,2) - KCC=15+JS - KCS=ISIGN(1,MINT(14+JS)) - - ELSEIF(ISUB.GE.437.AND.ISUB.LE.439) THEN -C...q + q~ -> g + QQ~[n] -C...MINT(21), MINT(22) "copied" from ISUB.EQ.111 -C...[f + fbar -> g + h0; th arbitrary; (q + qbar -> g + h0 only)] -C...KCC copied from ISUB.EQ.111 -C...[f + fbar -> g + h0; th arbitrary; (q + qbar -> g + h0 only)] - IF(PYR(0).GT.0.5) JS=2 - MINT(20+JS)=21 - MINT(23-JS)=KFPR(ISUBSV,2) - KCC=17+JS -C...QUARKONIA--- - ENDIF - ELSEIF(ISUB.LE.500) THEN - IF(ISUB.EQ.481.OR.ISUB.EQ.482) THEN - KFRES=9900001 - KCRES=PYCOMP(KFRES) - MCOL=KCHG(KCRES,2) - MCHG=KCHG(KCRES,1) - IF(KCRES.EQ.0) - $ CALL PYERRM(21,"No resonance for Generic 2-> 2 Process") - IDCY=MDCY(KCRES,2) - IF(IDCY.EQ.0) - $ CALL PYERRM(21,"No decays for resonance in Generic 2->2") - KCI1=PYCOMP(MINT(15)) - KCI2=PYCOMP(MINT(16)) - ICOL1=ISIGN(KCHG(KCI1,2),MINT(15)) - ICOL2=ISIGN(KCHG(KCI2,2),MINT(16)) - KFF1=KFPR(ISUB,1) - KFF2=KFPR(ISUB,2) - KCF1=PYCOMP(KFF1) - KCF2=PYCOMP(KFF2) - JCOL1=SIGN(KCHG(KCF1,2),KFF1) - IF(JCOL1.EQ.-2) JCOL1=2 - JCOL2=SIGN(KCHG(KCF2,2),KFF2) - IF(JCOL2.EQ.-2) JCOL2=2 - KCH1=KCHG(IABS(MINT(15)),1)*ISIGN(1,MINT(15)) - KCH2=KCHG(IABS(MINT(16)),1)*ISIGN(1,MINT(16)) - KCHW=KCH1+KCH2 - KREL=1 - IF(MCHG.NE.0.AND.KCHW.EQ.-MCHG) KREL=-1 - IF(KCHG(KCF1,3).NE.0) KFF1=KFF1*KREL - IF(KCHG(KCF2,3).NE.0) KFF2=KFF2*KREL - IF(JCOL1.EQ.1.OR.JCOL1.EQ.-1) JCOL1=JCOL1*KREL - IF(JCOL2.EQ.1.OR.JCOL2.EQ.-1) JCOL2=JCOL2*KREL - IF((ICOL1.EQ.1.AND.ICOL2.EQ.-1).OR. - $ (ICOL2.EQ.1.AND.ICOL1.EQ.-1)) THEN - IF(PYR(0).GT.0.5D0) JS=2 - MINT(20+JS)=KFF1 - MINT(23-JS)=KFF2 - IF(JCOL1.EQ.0.AND.JCOL2.EQ.0) THEN - - ELSEIF(JCOL1.EQ.0.AND.JCOL2.EQ.2) THEN - KCC=17+JS - MINT(20+JS)=KFF2 - MINT(23-JS)=KFF1 - ELSEIF(JCOL1.EQ.2.AND.JCOL2.EQ.0) THEN - KCC=17+JS - MINT(20+JS)=KFF1 - MINT(23-JS)=KFF2 - ELSEIF(JCOL1.EQ.2.AND.JCOL2.EQ.2.AND.MCOL.EQ.0) THEN - - ELSEIF(JCOL1.EQ.2.AND.JCOL2.EQ.2) THEN - KCC=MINT(2)+4 - ELSEIF((JCOL1.EQ.1.AND.JCOL2.EQ.-1).OR. - $ (JCOL1.EQ.-1.AND.JCOL2.EQ.1)) THEN - IF(ICOL1.EQ.JCOL1) THEN - JS=1 - MINT(21)=KFF1 - MINT(22)=KFF2 - ELSE - JS=2 - MINT(21)=KFF2 - MINT(22)=KFF1 - ENDIF - IF(MCOL.EQ.0) THEN - - ELSE - KCC=4 - ENDIF - ENDIF - ELSEIF((ICOL1.EQ.2.AND.(ICOL2.EQ.1.OR.ICOL2.EQ.-1)).OR. - $ (ICOL2.EQ.2.AND.(ICOL1.EQ.1.OR.ICOL1.EQ.-1))) THEN - IF((JCOL1.EQ.2.AND.ABS(JCOL2).EQ.1).OR. - $ (JCOL2.EQ.2.AND.ABS(JCOL1).EQ.1)) THEN - IF(MINT(15).EQ.21) JS=2 - KCC=MINT(2)+6 - IF(MINT(15).EQ.21) KCC=KCC+2 - IF(MINT(15).NE.21) KCS=ISIGN(1,MINT(15)) - IF(MINT(16).NE.21) KCS=ISIGN(1,MINT(16)) - IF(JCOL1.EQ.2) THEN - MINT(20+JS)=KFF2 - MINT(23-JS)=KFF1 - ELSE - MINT(20+JS)=KFF1 - MINT(23-JS)=KFF2 - ENDIF - ELSEIF((ABS(JCOL1).EQ.1.AND.JCOL2.EQ.0).OR. - $ (ABS(JCOL2).EQ.1.AND.JCOL1.EQ.0)) THEN - IF(MINT(15).EQ.21) JS=2 - KCC=15+JS - KCS=ISIGN(1,MINT(14+JS)) - IF(JCOL1.EQ.0) THEN - MINT(23-JS)=KFF1 - MINT(20+JS)=KFF2 - ELSE - MINT(23-JS)=KFF2 - MINT(20+JS)=KFF1 - ENDIF - ENDIF - ELSEIF(ICOL1.EQ.2.AND.ICOL2.EQ.2.AND. - $ JCOL1.EQ.0.AND.JCOL2.EQ.0) THEN - IF(PYR(0).GT.0.5D0) JS=2 - KCC=21 - MINT(20+JS)=KFF1 - MINT(23-JS)=KFF2 - ELSEIF(ICOL1.EQ.2.AND.ICOL2.EQ.2.AND. - $ ((JCOL1.EQ.0.AND.JCOL2.EQ.2).OR. - $ ((JCOL2.EQ.0.AND.JCOL1.EQ.2)))) THEN - IF(PYR(0).GT.0.5D0) JS=2 - KCC=22+JS - KCS=(-1)**INT(1.5D0+PYR(0)) - IF(JCOL1.EQ.0) THEN - MINT(23-JS)=KFF1 - MINT(20+JS)=KFF2 - ELSE - MINT(23-JS)=KFF2 - MINT(20+JS)=KFF1 - ENDIF - ELSEIF(ICOL1.EQ.2.AND.ICOL2.EQ.2.AND. - $ ((JCOL1.EQ.1.AND.JCOL2.EQ.-1).OR. - $ ((JCOL2.EQ.1.AND.JCOL1.EQ.-1)))) THEN -C....two choices, 0 or 2 depending upon mother properties - IF(MCOL.EQ.2) THEN - KCS=(-1)**INT(1.5D0+PYR(0)) - KCC=MINT(2)+10 - IF(JCOL1.EQ.1) THEN - MINT(21)=KFF1*KCS - MINT(22)=KFF2*KCS - ELSE - MINT(22)=KFF1*KCS - MINT(21)=KFF2*KCS - ENDIF -c MINT(20+JS)=KFF1*KCS -c MINT(23-JS)=KFF2*KCS - ELSEIF(MCOL.EQ.0) THEN - KCC=21 - MINT(20+JS)=KFF1*KCS - MINT(23-JS)=KFF2*KCS - ENDIF - - ELSEIF(ICOL1.EQ.2.AND.ICOL2.EQ.2.AND. - $ JCOL1.EQ.2.AND.JCOL2.EQ.2) THEN -C....two choices, 0 or 2 depending upon mother properties - IF(MCOL.EQ.0) THEN - KCC=21 - IF(PYR(0).GT.0.5D0) JS=2 - MINT(20+JS)=KFF1 - MINT(23-JS)=KFF2 - ELSEIF(MCOL.EQ.2) THEN - IF(PYR(0).GT.0.5D0) JS=2 - KCC=MINT(2)+12 - KCS=(-1)**INT(1.5D0+PYR(0)) - MINT(20+JS)=KFF1 - MINT(23-JS)=KFF2 - ENDIF - ELSEIF((ICOL1.EQ.1.AND.ICOL2.EQ.1).OR. - $ (ICOL1.EQ.-1.AND.ICOL2.EQ.-1)) THEN - KCC=MINT(2) - IF(PYR(0).GT.0.5D0) JS=2 - MINT(20+JS)=KFF1 - MINT(23-JS)=KFF2 - ELSEIF(ICOL1.EQ.0.AND.ICOL2.EQ.0.AND.MCOL.EQ.0) THEN - KCC=20 - IF(PYR(0).GT.0.5D0) JS=2 - MINT(20+JS)=KFF1 - MINT(23-JS)=KFF2 - ELSE - CALL PYERRM(21,"PYSCAT: No recognized Generic Process") - ENDIF - IF(ISUBSV.EQ.482) KFRES=0 - ENDIF - ENDIF - - IF(ISET(ISUB).EQ.11) THEN -C...Store documentation for user-defined processes - BEZUP=(PUP(3,1)+PUP(3,2))/(PUP(4,1)+PUP(4,2)) - KUPPO(1)=MINT(83)+5 - KUPPO(2)=MINT(83)+6 - I=MINT(83)+6 - DO 470 IUP=3,NUP - KUPPO(IUP)=0 - IF(MSTP(128).GE.2.AND.MOTHUP(1,IUP).GE.3) THEN - IDOC=IDOC-1 - MINT(4)=MINT(4)-1 - GOTO 470 - ENDIF - I=I+1 - KUPPO(IUP)=I - K(I,1)=21 - K(I,2)=IDUP(IUP) - IF(IDUP(IUP).EQ.0) K(I,2)=90 - K(I,3)=0 - IF(MOTHUP(1,IUP).GE.3) K(I,3)=KUPPO(MOTHUP(1,IUP)) - K(I,4)=0 - K(I,5)=0 - DO 460 J=1,5 - P(I,J)=PUP(J,IUP) - 460 CONTINUE - V(I,5)=VTIMUP(IUP) - 470 CONTINUE - CALL PYROBO(MINT(83)+7,MINT(83)+4+NUP,0D0,VINT(24),0D0,0D0, - & -BEZUP) - -C...Store final state partons for user-defined processes - N=IPU2 - DO 490 IUP=3,NUP - N=N+1 - K(N,1)=1 - IF(ISTUP(IUP).EQ.2.OR.ISTUP(IUP).EQ.3) K(N,1)=11 - K(N,2)=IDUP(IUP) - IF(IDUP(IUP).EQ.0) K(N,2)=90 - IF(MSTP(128).LE.0.OR.MOTHUP(1,IUP).EQ.0) THEN - K(N,3)=KUPPO(IUP) - ELSE - K(N,3)=MINT(84)+MOTHUP(1,IUP) - ENDIF - K(N,4)=0 - K(N,5)=0 -C...Search for daughters of intermediate colourless particles. - IF(K(N,1).EQ.11.AND.KCHG(PYCOMP(K(N,2)),2).EQ.0) THEN - DO 475 IUPDAU=IUP+1,NUP - IF(MOTHUP(1,IUPDAU).EQ.IUP.AND.K(N,4).EQ.0) K(N,4)= - & N+IUPDAU-IUP - IF(MOTHUP(1,IUPDAU).EQ.IUP) K(N,5)=N+IUPDAU-IUP - 475 CONTINUE - ENDIF - DO 480 J=1,5 - P(N,J)=PUP(J,IUP) - 480 CONTINUE - V(N,5)=VTIMUP(IUP) - 490 CONTINUE - CALL PYROBO(IPU3,N,0D0,VINT(24),0D0,0D0,-BEZUP) - -C...Arrange colour flow for user-defined processes - NLBL=0 - DO 540 IUP1=1,NUP - I1=MINT(84)+IUP1 - IF(KCHG(PYCOMP(K(I1,2)),2).EQ.0) GOTO 540 - IF(K(I1,1).EQ.1) K(I1,1)=3 - IF(K(I1,1).EQ.11) K(I1,1)=14 -C...Find a not yet considered colour/anticolour line. - DO 530 ISDE1=1,2 - IF(ICOLUP(ISDE1,IUP1).EQ.0) GOTO 530 - NMAT=0 - DO 500 ILBL=1,NLBL - IF(ICOLUP(ISDE1,IUP1).EQ.ILAB(ILBL)) NMAT=1 - 500 CONTINUE - IF(NMAT.EQ.0) THEN - NLBL=NLBL+1 - ILAB(NLBL)=ICOLUP(ISDE1,IUP1) -C...Find all others belonging to same line. - I3=I1 - I4=0 - DO 520 IUP2=IUP1+1,NUP - I2=MINT(84)+IUP2 - DO 510 ISDE2=1,2 - IF(ICOLUP(ISDE2,IUP2).EQ.ICOLUP(ISDE1,IUP1)) THEN - IF(ISDE2.EQ.ISDE1) THEN - K(I3,3+ISDE2)=K(I3,3+ISDE2)+I2 - K(I2,3+ISDE2)=K(I2,3+ISDE2)+MSTU(5)*I3 - I3=I2 - ELSEIF(I4.NE.0) THEN - K(I4,3+ISDE2)=K(I4,3+ISDE2)+I2 - K(I2,3+ISDE2)=K(I2,3+ISDE2)+MSTU(5)*I4 - I4=I2 - ELSEIF(IUP2.LE.2) THEN - K(I1,3+ISDE1)=K(I1,3+ISDE1)+I2 - K(I2,3+ISDE2)=K(I2,3+ISDE2)+I1 - I4=I2 - ELSE - K(I1,3+ISDE1)=K(I1,3+ISDE1)+MSTU(5)*I2 - K(I2,3+ISDE2)=K(I2,3+ISDE2)+MSTU(5)*I1 - I4=I2 - ENDIF - ENDIF - 510 CONTINUE - 520 CONTINUE - ENDIF - 530 CONTINUE - 540 CONTINUE - - ELSEIF(IDOC.EQ.7) THEN -C...Resonance not decaying; store kinematics - I=MINT(83)+7 - K(IPU3,1)=1 - K(IPU3,2)=KFRES - K(IPU3,3)=I - P(IPU3,4)=SHUSER - P(IPU3,5)=SHUSER - K(I,1)=21 - K(I,2)=KFRES - P(I,4)=SHUSER - P(I,5)=SHUSER - N=IPU3 - MINT(21)=KFRES - MINT(22)=0 - -C...Special cases: colour flow in coloured resonances - KCRES=PYCOMP(KFRES) - IF(KCHG(KCRES,2).NE.0) THEN - K(IPU3,1)=3 - DO 550 J=1,2 - JC=J - IF(KCS.EQ.-1) JC=3-J - IF(ICOL(KCC,1,JC).NE.0.AND.K(IPU1,1).EQ.14) K(IPU1,J+3)= - & MINT(84)+ICOL(KCC,1,JC) - IF(ICOL(KCC,2,JC).NE.0.AND.K(IPU2,1).EQ.14) K(IPU2,J+3)= - & MINT(84)+ICOL(KCC,2,JC) - IF(ICOL(KCC,3,JC).NE.0.AND.K(IPU3,1).EQ.3) K(IPU3,J+3)= - & MSTU(5)*(MINT(84)+ICOL(KCC,3,JC)) - 550 CONTINUE - ELSE - K(IPU1,4)=IPU2 - K(IPU1,5)=IPU2 - K(IPU2,4)=IPU1 - K(IPU2,5)=IPU1 - ENDIF - - ELSEIF(IDOC.EQ.8) THEN -C...2 -> 2 processes: store outgoing partons in their CM-frame - DO 560 JT=1,2 - I=MINT(84)+2+JT - KCA=PYCOMP(MINT(20+JT)) - K(I,1)=1 - IF(KCHG(KCA,2).NE.0) K(I,1)=3 - K(I,2)=MINT(20+JT) - K(I,3)=MINT(83)+IDOC+JT-2 - KFAA=IABS(K(I,2)) - IF(KFPR(ISUBSV,1+MOD(JS+JT,2)).NE.0) THEN - P(I,5)=SQRT(VINT(63+MOD(JS+JT,2))) - ELSE - P(I,5)=PYMASS(K(I,2)) - ENDIF - IF((KFAA.EQ.6.OR.KFAA.EQ.7.OR.KFAA.EQ.8).AND. - & P(I,5).LT.PARP(42)) P(I,5)=PYMASS(K(I,2)) - 560 CONTINUE - IF(P(IPU3,5)+P(IPU4,5).GE.SHR) THEN - KFA1=IABS(MINT(21)) - KFA2=IABS(MINT(22)) - IF((KFA1.GT.3.AND.KFA1.NE.21).OR.(KFA2.GT.3.AND.KFA2.NE.21)) - & THEN - MINT(51)=1 - RETURN - ENDIF - P(IPU3,5)=0D0 - P(IPU4,5)=0D0 - ENDIF - P(IPU3,4)=0.5D0*(SHR+(P(IPU3,5)**2-P(IPU4,5)**2)/SHR) - P(IPU3,3)=SQRT(MAX(0D0,P(IPU3,4)**2-P(IPU3,5)**2)) - P(IPU4,4)=SHR-P(IPU3,4) - P(IPU4,3)=-P(IPU3,3) - N=IPU4 - MINT(7)=MINT(83)+7 - MINT(8)=MINT(83)+8 - -C...Rotate outgoing partons using cos(theta)=(th-uh)/lam(sh,sqm3,sqm4) - CALL PYROBO(IPU3,IPU4,ACOS(VINT(23)),VINT(24),0D0,0D0,0D0) - - ELSEIF(IDOC.EQ.9) THEN -C...2 -> 3 processes: store outgoing partons in their CM frame - DO 570 JT=1,2 - I=MINT(84)+2+JT - KCA=PYCOMP(MINT(20+JT)) - K(I,1)=1 - IF(KCHG(KCA,2).NE.0) K(I,1)=3 - K(I,2)=MINT(20+JT) - K(I,3)=MINT(83)+IDOC+JT-3 - JTA=JT -C...t and b in opposide order in event list as compared to -C...matrix element? - IF(ISUB.EQ.402.AND.IABS(MINT(21)).EQ.5) JTA=3-JT - IF(IABS(K(I,2)).LE.22) THEN - P(I,5)=PYMASS(K(I,2)) - ELSE - P(I,5)=SQRT(VINT(63+MOD(JS+JTA,2))) - ENDIF - PT=SQRT(MAX(0D0,VINT(197+5*JTA)-P(I,5)**2+VINT(196+5*JTA)**2)) - P(I,1)=PT*COS(VINT(198+5*JTA)) - P(I,2)=PT*SIN(VINT(198+5*JTA)) - 570 CONTINUE - K(IPU5,1)=1 - K(IPU5,2)=KFRES - K(IPU5,3)=MINT(83)+IDOC - P(IPU5,5)=SHR - P(IPU5,1)=-P(IPU3,1)-P(IPU4,1) - P(IPU5,2)=-P(IPU3,2)-P(IPU4,2) - PMS1=P(IPU3,5)**2+P(IPU3,1)**2+P(IPU3,2)**2 - PMS2=P(IPU4,5)**2+P(IPU4,1)**2+P(IPU4,2)**2 - PMS3=P(IPU5,5)**2+P(IPU5,1)**2+P(IPU5,2)**2 - PMT3=SQRT(PMS3) - P(IPU5,3)=PMT3*SINH(VINT(211)) - P(IPU5,4)=PMT3*COSH(VINT(211)) - PMS12=(SHPR-P(IPU5,4))**2-P(IPU5,3)**2 - SQL12=(PMS12-PMS1-PMS2)**2-4D0*PMS1*PMS2 - IF(SQL12.LE.0D0) THEN - MINT(51)=1 - RETURN - ENDIF - P(IPU3,3)=(-P(IPU5,3)*(PMS12+PMS1-PMS2)+ - & VINT(213)*(SHPR-P(IPU5,4))*SQRT(SQL12))/(2D0*PMS12) - P(IPU4,3)=-P(IPU3,3)-P(IPU5,3) - IF(ISUB.EQ.402.AND.IABS(MINT(21)).EQ.5) THEN -C...t and b in opposide order in event list as compared to -C...matrix element - P(IPU4,3)=(-P(IPU5,3)*(PMS12+PMS2-PMS1)+ - & VINT(213)*(SHPR-P(IPU5,4))*SQRT(SQL12))/(2D0*PMS12) - P(IPU3,3)=-P(IPU4,3)-P(IPU5,3) - END IF - P(IPU3,4)=SQRT(PMS1+P(IPU3,3)**2) - P(IPU4,4)=SQRT(PMS2+P(IPU4,3)**2) - MINT(23)=KFRES - N=IPU5 - MINT(7)=MINT(83)+7 - MINT(8)=MINT(83)+8 - - ELSEIF(IDOC.EQ.11) THEN -C...Z0 + Z0 -> h0, W+ + W- -> h0: store Higgs and outgoing partons - PHI(1)=PARU(2)*PYR(0) - PHI(2)=PHI(1)-PHIR - DO 580 JT=1,2 - I=MINT(84)+2+JT - K(I,1)=1 - IF(KCHG(PYCOMP(MINT(20+JT)),2).NE.0) K(I,1)=3 - K(I,2)=MINT(20+JT) - K(I,3)=MINT(83)+IDOC+JT-2 - P(I,5)=PYMASS(K(I,2)) - IF(0.5D0*SHPR*Z(JT).LE.P(I,5)) THEN - MINT(51)=1 - RETURN - ENDIF - PABS=SQRT(MAX(0D0,(0.5D0*SHPR*Z(JT))**2-P(I,5)**2)) - PTABS=PABS*SQRT(MAX(0D0,1D0-CTHE(JT)**2)) - P(I,1)=PTABS*COS(PHI(JT)) - P(I,2)=PTABS*SIN(PHI(JT)) - P(I,3)=PABS*CTHE(JT)*(-1)**(JT+1) - P(I,4)=0.5D0*SHPR*Z(JT) - IZW=MINT(83)+6+JT - K(IZW,1)=21 - K(IZW,2)=23 - IF(ISUB.EQ.8) K(IZW,2)=ISIGN(24,PYCHGE(MINT(14+JT))) - K(IZW,3)=IZW-2 - P(IZW,1)=-P(I,1) - P(IZW,2)=-P(I,2) - P(IZW,3)=(0.5D0*SHPR-PABS*CTHE(JT))*(-1)**(JT+1) - P(IZW,4)=0.5D0*SHPR*(1D0-Z(JT)) - P(IZW,5)=-SQRT(MAX(0D0,P(IZW,3)**2+PTABS**2-P(IZW,4)**2)) - 580 CONTINUE - I=MINT(83)+9 - K(IPU5,1)=1 - K(IPU5,2)=KFRES - K(IPU5,3)=I - P(IPU5,5)=SHR - P(IPU5,1)=-P(IPU3,1)-P(IPU4,1) - P(IPU5,2)=-P(IPU3,2)-P(IPU4,2) - P(IPU5,3)=-P(IPU3,3)-P(IPU4,3) - P(IPU5,4)=SHPR-P(IPU3,4)-P(IPU4,4) - K(I,1)=21 - K(I,2)=KFRES - DO 590 J=1,5 - P(I,J)=P(IPU5,J) - 590 CONTINUE - N=IPU5 - MINT(23)=KFRES - - ELSEIF(IDOC.EQ.12) THEN -C...Z0 and W+/- scattering: store bosons and outgoing partons - PHI(1)=PARU(2)*PYR(0) - PHI(2)=PHI(1)-PHIR - JTRAN=INT(1.5D0+PYR(0)) - DO 600 JT=1,2 - I=MINT(84)+2+JT - K(I,1)=1 - IF(KCHG(PYCOMP(MINT(20+JT)),2).NE.0) K(I,1)=3 - K(I,2)=MINT(20+JT) - K(I,3)=MINT(83)+IDOC+JT-2 - P(I,5)=PYMASS(K(I,2)) - IF(0.5D0*SHPR*Z(JT).LE.P(I,5)) P(I,5)=0D0 - PABS=SQRT(MAX(0D0,(0.5D0*SHPR*Z(JT))**2-P(I,5)**2)) - PTABS=PABS*SQRT(MAX(0D0,1D0-CTHE(JT)**2)) - P(I,1)=PTABS*COS(PHI(JT)) - P(I,2)=PTABS*SIN(PHI(JT)) - P(I,3)=PABS*CTHE(JT)*(-1)**(JT+1) - P(I,4)=0.5D0*SHPR*Z(JT) - IZW=MINT(83)+6+JT - K(IZW,1)=21 - IF(MINT(14+JT).EQ.MINT(20+JT)) THEN - K(IZW,2)=23 - ELSE - K(IZW,2)=ISIGN(24,PYCHGE(MINT(14+JT))-PYCHGE(MINT(20+JT))) - ENDIF - K(IZW,3)=IZW-2 - P(IZW,1)=-P(I,1) - P(IZW,2)=-P(I,2) - P(IZW,3)=(0.5D0*SHPR-PABS*CTHE(JT))*(-1)**(JT+1) - P(IZW,4)=0.5D0*SHPR*(1D0-Z(JT)) - P(IZW,5)=-SQRT(MAX(0D0,P(IZW,3)**2+PTABS**2-P(IZW,4)**2)) - IPU=MINT(84)+4+JT - K(IPU,1)=3 - K(IPU,2)=KFPR(ISUB,JT) - IF(ISUB.EQ.72.AND.JT.EQ.JTRAN) K(IPU,2)=-K(IPU,2) - IF(ISUB.EQ.73.OR.ISUB.EQ.77) K(IPU,2)=K(IZW,2) - K(IPU,3)=MINT(83)+8+JT - IF(IABS(K(IPU,2)).LE.10.OR.K(IPU,2).EQ.21) THEN - P(IPU,5)=PYMASS(K(IPU,2)) - ELSE - P(IPU,5)=SQRT(VINT(63+MOD(JS+JT,2))) - ENDIF - MINT(22+JT)=K(IPU,2) - 600 CONTINUE -C...Find rotation and boost for hard scattering subsystem - I1=MINT(83)+7 - I2=MINT(83)+8 - BEXCM=(P(I1,1)+P(I2,1))/(P(I1,4)+P(I2,4)) - BEYCM=(P(I1,2)+P(I2,2))/(P(I1,4)+P(I2,4)) - BEZCM=(P(I1,3)+P(I2,3))/(P(I1,4)+P(I2,4)) - GAMCM=(P(I1,4)+P(I2,4))/SHR - BEPCM=BEXCM*P(I1,1)+BEYCM*P(I1,2)+BEZCM*P(I1,3) - PX=P(I1,1)+GAMCM*(GAMCM/(1D0+GAMCM)*BEPCM-P(I1,4))*BEXCM - PY=P(I1,2)+GAMCM*(GAMCM/(1D0+GAMCM)*BEPCM-P(I1,4))*BEYCM - PZ=P(I1,3)+GAMCM*(GAMCM/(1D0+GAMCM)*BEPCM-P(I1,4))*BEZCM - THECM=PYANGL(PZ,SQRT(PX**2+PY**2)) - PHICM=PYANGL(PX,PY) -C...Store hard scattering subsystem. Rotate and boost it - SQLAM=(SH-P(IPU5,5)**2-P(IPU6,5)**2)**2-4D0*P(IPU5,5)**2* - & P(IPU6,5)**2 - PABS=SQRT(MAX(0D0,SQLAM/(4D0*SH))) - CTHWZ=VINT(23) - STHWZ=SQRT(MAX(0D0,1D0-CTHWZ**2)) - PHIWZ=VINT(24)-PHICM - P(IPU5,1)=PABS*STHWZ*COS(PHIWZ) - P(IPU5,2)=PABS*STHWZ*SIN(PHIWZ) - P(IPU5,3)=PABS*CTHWZ - P(IPU5,4)=SQRT(PABS**2+P(IPU5,5)**2) - P(IPU6,1)=-P(IPU5,1) - P(IPU6,2)=-P(IPU5,2) - P(IPU6,3)=-P(IPU5,3) - P(IPU6,4)=SQRT(PABS**2+P(IPU6,5)**2) - CALL PYROBO(IPU5,IPU6,THECM,PHICM,BEXCM,BEYCM,BEZCM) - DO 620 JT=1,2 - I1=MINT(83)+8+JT - I2=MINT(84)+4+JT - K(I1,1)=21 - K(I1,2)=K(I2,2) - DO 610 J=1,5 - P(I1,J)=P(I2,J) - 610 CONTINUE - 620 CONTINUE - N=IPU6 - MINT(7)=MINT(83)+9 - MINT(8)=MINT(83)+10 - ENDIF - - IF(ISET(ISUB).EQ.11) THEN - ELSEIF(IDOC.GE.8) THEN -C...Store colour connection indices - DO 630 J=1,2 - JC=J - IF(KCS.EQ.-1) JC=3-J - IF(ICOL(KCC,1,JC).NE.0.AND.K(IPU1,1).EQ.14) K(IPU1,J+3)= - & K(IPU1,J+3)+MINT(84)+ICOL(KCC,1,JC) - IF(ICOL(KCC,2,JC).NE.0.AND.K(IPU2,1).EQ.14) K(IPU2,J+3)= - & K(IPU2,J+3)+MINT(84)+ICOL(KCC,2,JC) - IF(ICOL(KCC,3,JC).NE.0.AND.K(IPU3,1).EQ.3) K(IPU3,J+3)= - & MSTU(5)*(MINT(84)+ICOL(KCC,3,JC)) - IF(ICOL(KCC,4,JC).NE.0.AND.K(IPU4,1).EQ.3) K(IPU4,J+3)= - & MSTU(5)*(MINT(84)+ICOL(KCC,4,JC)) - 630 CONTINUE - -C...Copy outgoing partons to documentation lines - IMAX=2 - IF(IDOC.EQ.9) IMAX=3 - DO 650 I=1,IMAX - I1=MINT(83)+IDOC-IMAX+I - I2=MINT(84)+2+I - K(I1,1)=21 - K(I1,2)=K(I2,2) - IF(IDOC.LE.9) K(I1,3)=0 - IF(IDOC.GE.11) K(I1,3)=MINT(83)+2+I - DO 640 J=1,5 - P(I1,J)=P(I2,J) - 640 CONTINUE - 650 CONTINUE - - ELSEIF(IDOC.EQ.9) THEN -C...Store colour connection indices - DO 660 J=1,2 - JC=J - IF(KCS.EQ.-1) JC=3-J - IF(ICOL(KCC,1,JC).NE.0.AND.K(IPU1,1).EQ.14) K(IPU1,J+3)= - & K(IPU1,J+3)+MINT(84)+ICOL(KCC,1,JC)+ - & MAX(0,MIN(1,ICOL(KCC,1,JC)-2)) - IF(ICOL(KCC,2,JC).NE.0.AND.K(IPU2,1).EQ.14) K(IPU2,J+3)= - & K(IPU2,J+3)+MINT(84)+ICOL(KCC,2,JC)+ - & MAX(0,MIN(1,ICOL(KCC,2,JC)-2)) - IF(ICOL(KCC,3,JC).NE.0.AND.K(IPU4,1).EQ.3) K(IPU4,J+3)= - & MSTU(5)*(MINT(84)+ICOL(KCC,3,JC)) - IF(ICOL(KCC,4,JC).NE.0.AND.K(IPU5,1).EQ.3) K(IPU5,J+3)= - & MSTU(5)*(MINT(84)+ICOL(KCC,4,JC)) - 660 CONTINUE - -C...Copy outgoing partons to documentation lines - DO 680 I=1,3 - I1=MINT(83)+IDOC-3+I - I2=MINT(84)+2+I - K(I1,1)=21 - K(I1,2)=K(I2,2) - K(I1,3)=0 - DO 670 J=1,5 - P(I1,J)=P(I2,J) - 670 CONTINUE - 680 CONTINUE - ENDIF - -C...Copy outgoing partons to list of allowed radiators. - NPART=0 - IF(MINT(35).GE.2.AND.ISET(ISUB).NE.0) THEN - DO 690 I=MINT(84)+3,N - NPART=NPART+1 - IPART(NPART)=I - PTPART(NPART)=SQRT(P(I,5)**2+P(I,1)**2+P(I,2)**2) - 690 CONTINUE - ENDIF - -C...Low-pT events: remove gluons used for string drawing purposes - IF(ISUB.EQ.95) THEN - IF(MINT(35).LE.1) THEN - K(IPU3,1)=K(IPU3,1)+10 - K(IPU4,1)=K(IPU4,1)+10 - ENDIF - DO 700 J=41,66 - VINTSV(J)=VINT(J) - VINT(J)=0D0 - 700 CONTINUE - DO 720 I=MINT(83)+5,MINT(83)+8 - DO 710 J=1,5 - P(I,J)=0D0 - 710 CONTINUE - 720 CONTINUE - ENDIF - - RETURN - END - diff --git a/Generators/PythiaExo_i/src/PythiaModified/pysgex.F b/Generators/PythiaExo_i/src/PythiaModified/pysgex.F deleted file mode 100644 index 948f788a82a0f2deb7af43ceaefe9d05e783351d..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/PythiaModified/pysgex.F +++ /dev/null @@ -1,873 +0,0 @@ -C...PYSGEX -C...Subprocess cross sections for assorted exotic processes, -C...including Z'/W'/LQ/R/f*/H++/Z_R/W_R/G*. -C...Auxiliary to PYSIGH. - -C ATLAS - locally modified version; controlled by /SPSGEX/ common -C W', Z' and graviton with flat mass spectrum via the removal of the breit-wigner term: -C enabled for /SPSGEX/ISSP.EQ.1 - - SUBROUTINE PYSGEX(NCHN,SIGS) - -C...Double precision and integer declarations - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - INTEGER PYK,PYCHGE,PYCOMP -C...Parameter statement to help give large particle numbers. - PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000, - &KEXCIT=4000000,KDIMEN=5000000) -C...Commonblocks - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) - COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5) - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) - COMMON/PYINT1/MINT(400),VINT(400) - COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2) - COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000) - COMMON/PYINT4/MWID(500),WIDS(500,5) - COMMON/PYTCSM/ITCM(0:99),RTCM(0:99) - COMMON/PYSGCM/ISUB,ISUBSV,MMIN1,MMAX1,MMIN2,MMAX2,MMINA,MMAXA, - &KFAC(2,-40:40),COMFAC,FACK,FACA,SH,TH,UH,SH2,TH2,UH2,SQM3,SQM4, - &SHR,SQPTH,TAUP,BE34,CTH,X(2),SQMZ,SQMW,GMMZ,GMMW, - &AEM,AS,XW,XW1,XWC,XWV,POLL,POLR,POLLL,POLRR - -C ATLAS-specific commonB: - COMMON/SPSGEX/ISSP - SAVE /SPSGEX/ - - SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYPARS/,/PYINT1/,/PYINT2/, - &/PYINT3/,/PYINT4/,/PYTCSM/,/PYSGCM/ -C...Local arrays - DIMENSION WDTP(0:400),WDTE(0:400,0:5) - - IF(ISUB.LE.160) THEN - IF(ISUB.EQ.141) THEN -C...f + fbar -> gamma*/Z0/Z'0 - SQMZP=PMAS(32,1)**2 - MINT(61)=2 - CALL PYWIDT(32,SH,WDTP,WDTE) - HP0=AEM/3D0*SH - HP1=AEM/3D0*XWC*SH - HP2=HP1 - HS=SHR*VINT(117) - HSP=SHR*WDTP(0) - FACZP=4D0*COMFAC*3D0 - DO 100 I=MMINA,MMAXA - IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 100 - EI=KCHG(IABS(I),1)/3D0 - AI=SIGN(1D0,EI) - VI=AI-4D0*EI*XWV - IA=IABS(I) - IF(IA.LT.10) THEN - IF(IA.LE.2) THEN - VPI=PARU(123-2*MOD(IABS(I),2)) - API=PARU(124-2*MOD(IABS(I),2)) - ELSEIF(IA.LE.4) THEN - VPI=PARJ(182-2*MOD(IABS(I),2)) - API=PARJ(183-2*MOD(IABS(I),2)) - ELSE - VPI=PARJ(190-2*MOD(IABS(I),2)) - API=PARJ(191-2*MOD(IABS(I),2)) - ENDIF - ELSE - IF(IA.LE.12) THEN - VPI=PARU(127-2*MOD(IABS(I),2)) - API=PARU(128-2*MOD(IABS(I),2)) - ELSEIF(IA.LE.14) THEN - VPI=PARJ(186-2*MOD(IABS(I),2)) - API=PARJ(187-2*MOD(IABS(I),2)) - ELSE - VPI=PARJ(194-2*MOD(IABS(I),2)) - API=PARJ(195-2*MOD(IABS(I),2)) - ENDIF - ENDIF - HI0=HP0 - IF(IABS(I).LE.10) HI0=HI0*FACA/3D0 - HI1=HP1 - IF(IABS(I).LE.10) HI1=HI1*FACA/3D0 - HI2=HP2 - IF(IABS(I).LE.10) HI2=HI2*FACA/3D0 - NCHN=NCHN+1 - ISIG(NCHN,1)=I - ISIG(NCHN,2)=-I - ISIG(NCHN,3)=1 -C...Special case: if only branching ratios known then use them. - IF(MWID(32).EQ.2.AND.MSTP(44).EQ.3) THEN - HI=0D0 - IF(IA.LT.10) THEN - HI=SHR*WDTP(IA)*FACA/9D0 - ELSEIF(IA.LT.20) THEN - HI=SHR*WDTP(IA-2) - ENDIF - HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4)) - SIGH(NCHN)=HI*FACZP*HF/((SH-SQMZP)**2+HSP**2) - ELSE -C...Normal cross section. - SIGH(NCHN)=FACZP*(EI**2/SH2*HI0*HP0*VINT(111)+EI*VI* - & (1D0-SQMZ/SH)/((SH-SQMZ)**2+HS**2)*(HI0*HP1+HI1*HP0)* - & VINT(112)+EI*VPI*(1D0-SQMZP/SH)/((SH-SQMZP)**2+HSP**2)* - & (HI0*HP2+HI2*HP0)*VINT(113)+(VI**2+AI**2)/ - & ((SH-SQMZ)**2+HS**2)*HI1*HP1*VINT(114)+(VI*VPI+AI*API)* - & ((SH-SQMZ)*(SH-SQMZP)+HS*HSP)/(((SH-SQMZ)**2+HS**2)* - & ((SH-SQMZP)**2+HSP**2))*(HI1*HP2+HI2*HP1)*VINT(115)+ - & (VPI**2+API**2)/((SH-SQMZP)**2+HSP**2)*HI2*HP2*VINT(116)) - IF (ISSP.EQ.1) THEN -C... Take out Breit-Wigner dependence OSC Apr/11/2010 - SIGH(NCHN) = SIGH(NCHN) * ((SH-SQMZP)**2+HSP**2) -C... Supress low mass events from parton luminosities with simple exp fct - SIGH(NCHN) = SIGH(NCHN)/(exp(-0.00195*SQRT(SH))) - ENDIF - ENDIF - 100 CONTINUE - - ELSEIF(ISUB.EQ.142) THEN -C...f + fbar' -> W'+/- - SQMWP=PMAS(34,1)**2 - CALL PYWIDT(34,SH,WDTP,WDTE) - HS=SHR*WDTP(0) - FACBW=4D0*COMFAC/((SH-SQMWP)**2+HS**2)*3D0 - HP=AEM/(24D0*XW)*SH - DO 120 I=MMIN1,MMAX1 - IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 120 - IA=IABS(I) - DO 110 J=MMIN2,MMAX2 - IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 110 - JA=IABS(J) - IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 110 - IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10)) - & GOTO 110 - KCHW=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3 -C...Special case: if only branching ratios known then use them. - IF(MWID(34).EQ.2) THEN - HI=0D0 - DO 105 IDC=MDCY(34,2),MDCY(34,2)+MDCY(34,3)-1 - IF((IA.EQ.IABS(KFDP(IDC,1)).AND.JA.EQ. - & IABS(KFDP(IDC,2))).OR.(IA.EQ.IABS(KFDP(IDC,2)) - & .AND.JA.EQ.IABS(KFDP(IDC,1)))) - & HI=SHR*WDTP(IDC+1-MDCY(34,2)) - 105 CONTINUE - IF(IA.LT.10) HI=HI*FACA/9D0 - ELSE -C...Normal cross section. - HI=HP*(PARU(133)**2+PARU(134)**2) - IF(IA.LE.10) HI=HP*(PARU(131)**2+PARU(132)**2)* - & VCKM((IA+1)/2,(JA+1)/2)*FACA/3D0 - ENDIF - NCHN=NCHN+1 - ISIG(NCHN,1)=I - ISIG(NCHN,2)=J - ISIG(NCHN,3)=1 - HF=SHR*(WDTE(0,1)+WDTE(0,(5-KCHW)/2)+WDTE(0,4)) - SIGH(NCHN)=HI*FACBW*HF - IF (ISSP.EQ.1) THEN -C... Take out Breit-Wigner dependence OSC Apr/11/2010 - SIGH(NCHN)=SIGH(NCHN) * ((SH-SQMWP)**2+HS**2) -C... Supress low mass events from parton luminosities with simple exp fct - SIGH(NCHN) = SIGH(NCHN)/(exp(-0.00195*SQRT(SH))) - ENDIF - 110 CONTINUE - 120 CONTINUE - - ELSEIF(ISUB.EQ.144) THEN -C... f + fbar' -> R - SQMR=PMAS(41,1)**2 - CALL PYWIDT(41,SH,WDTP,WDTE) - HS=SHR*WDTP(0) - FACBW=4D0*COMFAC/((SH-SQMR)**2+HS**2)*3D0 - HP=AEM/(12D0*XW)*SH - DO 140 I=MMIN1,MMAX1 - IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 140 - IA=IABS(I) - DO 130 J=MMIN2,MMAX2 - IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 130 - JA=IABS(J) - IF(I*J.GT.0.OR.IABS(IA-JA).NE.2) GOTO 130 - HI=HP - IF(IA.LE.10) HI=HI*FACA/3D0 - HF=SHR*(WDTE(0,1)+WDTE(0,(10-(I+J))/4)+WDTE(0,4)) - NCHN=NCHN+1 - ISIG(NCHN,1)=I - ISIG(NCHN,2)=J - ISIG(NCHN,3)=1 - SIGH(NCHN)=HI*FACBW*HF - 130 CONTINUE - 140 CONTINUE - - ELSEIF(ISUB.EQ.145) THEN -C...q + l -> LQ (leptoquark) - SQMLQ=PMAS(42,1)**2 - CALL PYWIDT(42,SH,WDTP,WDTE) - HS=SHR*WDTP(0) - FACBW=4D0*COMFAC/((SH-SQMLQ)**2+HS**2) - IF(ABS(SHR-PMAS(42,1)).GT.PARP(48)*PMAS(42,2)) FACBW=0D0 - HP=AEM/4D0*SH - KFLQQ=KFDP(MDCY(42,2),1) - KFLQL=KFDP(MDCY(42,2),2) - DO 160 I=MMIN1,MMAX1 - IF(KFAC(1,I).EQ.0) GOTO 160 - IA=IABS(I) - IF(IA.NE.KFLQQ.AND.IA.NE.IABS(KFLQL)) GOTO 160 - DO 150 J=MMIN2,MMAX2 - IF(KFAC(2,J).EQ.0) GOTO 150 - JA=IABS(J) - IF(JA.NE.KFLQQ.AND.JA.NE.IABS(KFLQL)) GOTO 150 - IF(I*J.NE.KFLQQ*KFLQL) GOTO 150 - IF(JA.EQ.IA) GOTO 150 - IF(IA.EQ.KFLQQ) KCHLQ=ISIGN(1,I) - IF(JA.EQ.KFLQQ) KCHLQ=ISIGN(1,J) - HI=HP*PARU(151) - HF=SHR*(WDTE(0,1)+WDTE(0,(5-KCHLQ)/2)+WDTE(0,4)) - NCHN=NCHN+1 - ISIG(NCHN,1)=I - ISIG(NCHN,2)=J - ISIG(NCHN,3)=1 - SIGH(NCHN)=HI*FACBW*HF - 150 CONTINUE - 160 CONTINUE - - ELSEIF(ISUB.EQ.146) THEN -C...e + gamma* -> e* (excited lepton) - KFQSTR=KFPR(ISUB,1) - KCQSTR=PYCOMP(KFQSTR) - KFQEXC=MOD(KFQSTR,KEXCIT) - CALL PYWIDT(KFQSTR,SH,WDTP,WDTE) - HS=SHR*WDTP(0) - FACBW=COMFAC/((SH-PMAS(KCQSTR,1)**2)**2+HS**2) - QF=-RTCM(43)/2D0-RTCM(44)/2D0 - FACBW=FACBW*AEM*QF**2*SH/RTCM(41)**2 - IF(ABS(SHR-PMAS(KCQSTR,1)).GT.PARP(48)*PMAS(KCQSTR,2)) - & FACBW=0D0 - HP=SH - DO 180 I=-KFQEXC,KFQEXC,2*KFQEXC - DO 170 ISDE=1,2 - IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,22).EQ.0) GOTO 170 - IF(ISDE.EQ.2.AND.KFAC(1,22)*KFAC(2,I).EQ.0) GOTO 170 - HI=HP - IF(I.GT.0) HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4)) - IF(I.LT.0) HF=SHR*(WDTE(0,1)+WDTE(0,3)+WDTE(0,4)) - NCHN=NCHN+1 - ISIG(NCHN,ISDE)=I - ISIG(NCHN,3-ISDE)=22 - ISIG(NCHN,3)=1 - SIGH(NCHN)=HI*FACBW*HF - 170 CONTINUE - 180 CONTINUE - - ELSEIF(ISUB.EQ.147.OR.ISUB.EQ.148) THEN -C...d + g -> d* and u + g -> u* (excited quarks) - KFQSTR=KFPR(ISUB,1) - KCQSTR=PYCOMP(KFQSTR) - KFQEXC=MOD(KFQSTR,KEXCIT) - CALL PYWIDT(KFQSTR,SH,WDTP,WDTE) - HS=SHR*WDTP(0) - FACBW=COMFAC/((SH-PMAS(KCQSTR,1)**2)**2+HS**2) - FACBW=FACBW*AS*RTCM(45)**2*SH/(3D0*RTCM(41)**2) - IF(ABS(SHR-PMAS(KCQSTR,1)).GT.PARP(48)*PMAS(KCQSTR,2)) - & FACBW=0D0 - HP=SH - DO 200 I=-KFQEXC,KFQEXC,2*KFQEXC - DO 190 ISDE=1,2 - IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 190 - IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 190 - HI=HP - IF(I.GT.0) HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4)) - IF(I.LT.0) HF=SHR*(WDTE(0,1)+WDTE(0,3)+WDTE(0,4)) - NCHN=NCHN+1 - ISIG(NCHN,ISDE)=I - ISIG(NCHN,3-ISDE)=21 - ISIG(NCHN,3)=1 - SIGH(NCHN)=HI*FACBW*HF - 190 CONTINUE - 200 CONTINUE - ENDIF - - ELSEIF(ISUB.LE.190) THEN - IF(ISUB.EQ.162) THEN -C...q + g -> LQ + lbar; LQ=leptoquark - SQMLQ=PMAS(42,1)**2 - FACLQ=COMFAC*FACA*PARU(151)*(AS*AEM/6D0)*(-TH/SH)* - & (UH2+SQMLQ**2)/(UH-SQMLQ)**2 - KFLQQ=KFDP(MDCY(42,2),1) - DO 220 I=MMINA,MMAXA - IF(IABS(I).NE.KFLQQ) GOTO 220 - KCHLQ=ISIGN(1,I) - DO 210 ISDE=1,2 - IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 210 - IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 210 - NCHN=NCHN+1 - ISIG(NCHN,ISDE)=I - ISIG(NCHN,3-ISDE)=21 - ISIG(NCHN,3)=1 - SIGH(NCHN)=FACLQ*WIDS(42,(5-KCHLQ)/2) - 210 CONTINUE - 220 CONTINUE - - ELSEIF(ISUB.EQ.163) THEN -C...g + g -> LQ + LQbar; LQ=leptoquark - SQMLQ=PMAS(42,1)**2 - FACLQ=COMFAC*FACA*WIDS(42,1)*(AS**2/2D0)* - & (7D0/48D0+3D0*(UH-TH)**2/(16D0*SH2))*(1D0+2D0*SQMLQ*TH/ - & (TH-SQMLQ)**2+2D0*SQMLQ*UH/(UH-SQMLQ)**2+4D0*SQMLQ**2/ - & ((TH-SQMLQ)*(UH-SQMLQ))) - IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 230 - NCHN=NCHN+1 - ISIG(NCHN,1)=21 - ISIG(NCHN,2)=21 -C...Since don't know proper colour flow, randomize between alternatives - ISIG(NCHN,3)=INT(1.5D0+PYR(0)) - SIGH(NCHN)=FACLQ - 230 CONTINUE - - ELSEIF(ISUB.EQ.164) THEN -C...q + qbar -> LQ + LQbar; LQ=leptoquark - DELTA=0.25D0*(SQM3-SQM4)**2/SH - SQMLQ=0.5D0*(SQM3+SQM4)-DELTA - TH=TH-DELTA - UH=UH-DELTA -C SQMLQ=PMAS(42,1)**2 - FACLQA=COMFAC*WIDS(42,1)*(AS**2/9D0)* - & (SH*(SH-4D0*SQMLQ)-(UH-TH)**2)/SH2 - FACLQS=COMFAC*WIDS(42,1)*((PARU(151)**2*AEM**2/8D0)* - & (-SH*TH-(SQMLQ-TH)**2)/TH2+(PARU(151)*AEM*AS/18D0)* - & ((SQMLQ-TH)*(UH-TH)+SH*(SQMLQ+TH))/(SH*TH)) - KFLQQ=KFDP(MDCY(42,2),1) - DO 240 I=MMINA,MMAXA - IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR. - & KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 240 - NCHN=NCHN+1 - ISIG(NCHN,1)=I - ISIG(NCHN,2)=-I - ISIG(NCHN,3)=1 - SIGH(NCHN)=FACLQA - IF(IABS(I).EQ.KFLQQ) SIGH(NCHN)=FACLQA+FACLQS - 240 CONTINUE - - ELSEIF(ISUB.EQ.167.OR.ISUB.EQ.168) THEN -C...q + q' -> q" + d* and q + q' -> q" + u* (excited quarks) - KFQSTR=KFPR(ISUB,2) - KCQSTR=PYCOMP(KFQSTR) - KFQEXC=MOD(KFQSTR,KEXCIT) - FACQSA=COMFAC*(SH/RTCM(41)**2)**2*(1D0-SQM4/SH) - FACQSB=COMFAC*0.25D0*(SH/RTCM(41)**2)**2*(1D0-SQM4/SH)* - & (1D0+SQM4/SH)*(1D0+CTH)*(1D0+((SH-SQM4)/(SH+SQM4))*CTH) -C...Propagators: as simulated in PYOFSH and as desired - GMMQ=PMAS(KCQSTR,1)*PMAS(KCQSTR,2) - HBW4=GMMQ/((SQM4-PMAS(KCQSTR,1)**2)**2+GMMQ**2) - CALL PYWIDT(KFQSTR,SQM4,WDTP,WDTE) - GMMQC=SQRT(SQM4)*WDTP(0) - HBW4C=GMMQC/((SQM4-PMAS(KCQSTR,1)**2)**2+GMMQC**2) - FACQSA=FACQSA*HBW4C/HBW4 - FACQSB=FACQSB*HBW4C/HBW4 -C...Branching ratios. - BRPOS=(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))/WDTP(0) - BRNEG=(WDTE(0,1)+WDTE(0,3)+WDTE(0,4))/WDTP(0) - DO 260 I=MMIN1,MMAX1 - IA=IABS(I) - IF(I.EQ.0.OR.IA.GT.6.OR.KFAC(1,I).EQ.0) GOTO 260 - DO 250 J=MMIN2,MMAX2 - JA=IABS(J) - IF(J.EQ.0.OR.JA.GT.6.OR.KFAC(2,J).EQ.0) GOTO 250 - IF(IA.EQ.KFQEXC.AND.I.EQ.J) THEN - NCHN=NCHN+1 - ISIG(NCHN,1)=I - ISIG(NCHN,2)=J - ISIG(NCHN,3)=1 - IF(I.GT.0) SIGH(NCHN)=(4D0/3D0)*FACQSA*BRPOS - IF(I.LT.0) SIGH(NCHN)=(4D0/3D0)*FACQSA*BRNEG - NCHN=NCHN+1 - ISIG(NCHN,1)=I - ISIG(NCHN,2)=J - ISIG(NCHN,3)=2 - IF(J.GT.0) SIGH(NCHN)=(4D0/3D0)*FACQSA*BRPOS - IF(J.LT.0) SIGH(NCHN)=(4D0/3D0)*FACQSA*BRNEG - ELSEIF((IA.EQ.KFQEXC.OR.JA.EQ.KFQEXC).AND.I*J.GT.0) THEN - NCHN=NCHN+1 - ISIG(NCHN,1)=I - ISIG(NCHN,2)=J - ISIG(NCHN,3)=1 - IF(JA.EQ.KFQEXC) ISIG(NCHN,3)=2 - IF(ISIG(NCHN,ISIG(NCHN,3)).GT.0) SIGH(NCHN)=FACQSA*BRPOS - IF(ISIG(NCHN,ISIG(NCHN,3)).LT.0) SIGH(NCHN)=FACQSA*BRNEG - ELSEIF(IA.EQ.KFQEXC.AND.I.EQ.-J) THEN - NCHN=NCHN+1 - ISIG(NCHN,1)=I - ISIG(NCHN,2)=J - ISIG(NCHN,3)=1 - IF(I.GT.0) SIGH(NCHN)=(8D0/3D0)*FACQSB*BRPOS - IF(I.LT.0) SIGH(NCHN)=(8D0/3D0)*FACQSB*BRNEG - NCHN=NCHN+1 - ISIG(NCHN,1)=I - ISIG(NCHN,2)=J - ISIG(NCHN,3)=2 - IF(J.GT.0) SIGH(NCHN)=(8D0/3D0)*FACQSB*BRPOS - IF(J.LT.0) SIGH(NCHN)=(8D0/3D0)*FACQSB*BRNEG - ELSEIF(I.EQ.-J) THEN - NCHN=NCHN+1 - ISIG(NCHN,1)=I - ISIG(NCHN,2)=J - ISIG(NCHN,3)=1 - IF(I.GT.0) SIGH(NCHN)=FACQSB*BRPOS - IF(I.LT.0) SIGH(NCHN)=FACQSB*BRNEG - NCHN=NCHN+1 - ISIG(NCHN,1)=I - ISIG(NCHN,2)=J - ISIG(NCHN,3)=2 - IF(J.GT.0) SIGH(NCHN)=FACQSB*BRPOS - IF(J.LT.0) SIGH(NCHN)=FACQSB*BRNEG - ELSEIF(IA.EQ.KFQEXC.OR.JA.EQ.KFQEXC) THEN - NCHN=NCHN+1 - ISIG(NCHN,1)=I - ISIG(NCHN,2)=J - ISIG(NCHN,3)=1 - IF(JA.EQ.KFQEXC) ISIG(NCHN,3)=2 - IF(ISIG(NCHN,ISIG(NCHN,3)).GT.0) SIGH(NCHN)=FACQSB*BRPOS - IF(ISIG(NCHN,ISIG(NCHN,3)).LT.0) SIGH(NCHN)=FACQSB*BRNEG - ENDIF - 250 CONTINUE - 260 CONTINUE - - ELSEIF(ISUB.EQ.169) THEN -C...q + qbar -> e + e* (excited lepton) - KFQSTR=KFPR(ISUB,2) - KCQSTR=PYCOMP(KFQSTR) - KFQEXC=MOD(KFQSTR,KEXCIT) - FACQSB=(COMFAC/12D0)*(SH/RTCM(41)**2)**2*(1D0-SQM4/SH)* - & (1D0+SQM4/SH)*(1D0+CTH)*(1D0+((SH-SQM4)/(SH+SQM4))*CTH) -C...Propagators: as simulated in PYOFSH and as desired - GMMQ=PMAS(KCQSTR,1)*PMAS(KCQSTR,2) - HBW4=GMMQ/((SQM4-PMAS(KCQSTR,1)**2)**2+GMMQ**2) - CALL PYWIDT(KFQSTR,SQM4,WDTP,WDTE) - GMMQC=SQRT(SQM4)*WDTP(0) - HBW4C=GMMQC/((SQM4-PMAS(KCQSTR,1)**2)**2+GMMQC**2) - FACQSB=FACQSB*HBW4C/HBW4 -C...Branching ratios. - BRPOS=(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))/WDTP(0) - BRNEG=(WDTE(0,1)+WDTE(0,3)+WDTE(0,4))/WDTP(0) - DO 270 I=MMIN1,MMAX1 - IA=IABS(I) - IF(I.EQ.0.OR.IA.GT.6.OR.KFAC(1,I).EQ.0) GOTO 270 - J=-I - JA=IABS(J) - IF(J.EQ.0.OR.JA.GT.6.OR.KFAC(2,J).EQ.0) GOTO 270 - NCHN=NCHN+1 - ISIG(NCHN,1)=I - ISIG(NCHN,2)=J - ISIG(NCHN,3)=1 - IF(I.GT.0) SIGH(NCHN)=FACQSB*BRPOS - IF(I.LT.0) SIGH(NCHN)=FACQSB*BRNEG - NCHN=NCHN+1 - ISIG(NCHN,1)=I - ISIG(NCHN,2)=J - ISIG(NCHN,3)=2 - IF(J.GT.0) SIGH(NCHN)=FACQSB*BRPOS - IF(J.LT.0) SIGH(NCHN)=FACQSB*BRNEG - 270 CONTINUE - ENDIF - - ELSEIF(ISUB.LE.360) THEN - IF(ISUB.EQ.341.OR.ISUB.EQ.342) THEN -C...l + l -> H_L++/-- or H_R++/--. - KFRES=KFPR(ISUB,1) - KFREC=PYCOMP(KFRES) - CALL PYWIDT(KFRES,SH,WDTP,WDTE) - HS=SHR*WDTP(0) - FACBW=8D0*COMFAC/((SH-PMAS(KFREC,1)**2)**2+HS**2) - DO 290 I=MMIN1,MMAX1 - IA=IABS(I) - IF((IA.NE.11.AND.IA.NE.13.AND.IA.NE.15).OR.KFAC(1,I).EQ.0) - & GOTO 290 - DO 280 J=MMIN2,MMAX2 - JA=IABS(J) - IF((JA.NE.11.AND.JA.NE.13.AND.JA.NE.15).OR.KFAC(2,J).EQ.0) - & GOTO 280 - IF(I*J.LT.0) GOTO 280 - KCHH=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3 - NCHN=NCHN+1 - ISIG(NCHN,1)=I - ISIG(NCHN,2)=J - ISIG(NCHN,3)=1 - HI=SH*PARP(181+3*((IA-11)/2)+(JA-11)/2)**2/(8D0*PARU(1)) - HF=SHR*(WDTE(0,1)+WDTE(0,(5-KCHH/2)/2)+WDTE(0,4)) - SIGH(NCHN)=HI*FACBW*HF - 280 CONTINUE - 290 CONTINUE - - ELSEIF(ISUB.GE.343.AND.ISUB.LE.348) THEN -C...l + gamma -> H_L++/-- l' or l + gamma -> H_R++/-- l'. - KFRES=KFPR(ISUB,1) - KFREC=PYCOMP(KFRES) -C...Propagators: as simulated in PYOFSH and as desired - HBW3=PMAS(KFREC,1)*PMAS(KFREC,2)/((SQM3-PMAS(KFREC,1)**2)**2+ - & (PMAS(KFREC,1)*PMAS(KFREC,2))**2) - CALL PYWIDT(KFRES,SQM3,WDTP,WDTE) - GMMC=SQRT(SQM3)*WDTP(0) - HBW3C=GMMC/((SQM3-PMAS(KFREC,1)**2)**2+GMMC**2) - FHCC=COMFAC*AEM*HBW3C/HBW3 - DO 310 I=MMINA,MMAXA - IA=IABS(I) - IF(IA.NE.11.AND.IA.NE.13.AND.IA.NE.15) GOTO 310 - SQML=PMAS(IA,1)**2 - J=ISIGN(KFPR(ISUB,2),-I) - KCHH=ISIGN(2,KCHG(IA,1)*ISIGN(1,I)) - WIDSC=(WDTE(0,1)+WDTE(0,(5-KCHH/2)/2)+WDTE(0,4))/WDTP(0) - SMM1=8D0*(SH+TH-SQM3)*(SH+TH-2D0*SQM3-SQML-SQM4)/ - & (UH-SQM3)**2 - SMM2=2D0*((2D0*SQM3-3D0*SQML)*SQM4+(SQML-2D0*SQM4)*TH- - & (TH-SQM4)*SH)/(TH-SQM4)**2 - SMM3=2D0*((2D0*SQM3-3D0*SQM4+TH)*SQML-(2D0*SQML-SQM4+TH)* - & SH)/(SH-SQML)**2 - SMM12=4D0*((2D0*SQML-SQM4-2D0*SQM3+TH)*SH+(TH-3D0*SQM3- - & 3D0*SQM4)*TH+(2D0*SQM3-2D0*SQML+3D0*SQM4)*SQM3)/ - & ((UH-SQM3)*(TH-SQM4)) - SMM13=-4D0*((TH+SQML-2D0*SQM4)*TH-(SQM3+3D0*SQML-2D0*SQM4)* - & SQM3+(SQM3+3D0*SQML+TH)*SH-(TH-SQM3+SH)**2)/ - & ((UH-SQM3)*(SH-SQML)) - SMM23=-4D0*((SQML-SQM4+SQM3)*TH-SQM3**2+SQM3*(SQML+SQM4)- - & 3D0*SQML*SQM4-(SQML-SQM4-SQM3+TH)*SH)/ - & ((SH-SQML)*(TH-SQM4)) - SMM=(SH/(SH-SQML))**2*(SMM1+SMM2+SMM3+SMM12+SMM13+SMM23)* - & PARP(181+3*((IA-11)/2)+(IABS(J)-11)/2)**2/(4D0*PARU(1)) - DO 300 ISDE=1,2 - IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,22).EQ.0) GOTO 300 - IF(ISDE.EQ.2.AND.KFAC(1,22)*KFAC(2,I).EQ.0) GOTO 300 - NCHN=NCHN+1 - ISIG(NCHN,ISDE)=I - ISIG(NCHN,3-ISDE)=22 - ISIG(NCHN,3)=0 - SIGH(NCHN)=FHCC*SMM*WIDSC - 300 CONTINUE - 310 CONTINUE - - ELSEIF(ISUB.EQ.349.OR.ISUB.EQ.350) THEN -C...f + fbar -> H_L++ + H_L-- or H_R++ + H_R-- - KFRES=KFPR(ISUB,1) - KFREC=PYCOMP(KFRES) - SQMH=PMAS(KFREC,1)**2 - GMMH=PMAS(KFREC,1)*PMAS(KFREC,2) -C...Propagators: H++/-- as simulated in PYOFSH and as desired - HBW3=GMMH/((SQM3-SQMH)**2+GMMH**2) - CALL PYWIDT(KFRES,SQM3,WDTP,WDTE) - GMMH3=SQRT(SQM3)*WDTP(0) - HBW3C=GMMH3/((SQM3-SQMH)**2+GMMH3**2) - HBW4=GMMH/((SQM4-SQMH)**2+GMMH**2) - CALL PYWIDT(KFRES,SQM4,WDTP,WDTE) - GMMH4=SQRT(SQM4)*WDTP(0) - HBW4C=GMMH4/((SQM4-SQMH)**2+GMMH4**2) -C...Kinematical and coupling functions - FACHH=COMFAC*(HBW3C/HBW3)*(HBW4C/HBW4)*(TH*UH-SQM3*SQM4) - XWHH=(1D0-2D0*XWV)/(8D0*XWV*(1D0-XWV)) -C...Loop over allowed flavours - DO 320 I=MMINA,MMAXA - IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 320 - EI=KCHG(IABS(I),1)/3D0 - AI=SIGN(1D0,EI+0.1D0) - VI=AI-4D0*EI*XWV - FCOI=1D0 - IF(IABS(I).LE.10) FCOI=FACA/3D0 - IF(ISUB.EQ.349) THEN - HBWZ=1D0/((SH-SQMZ)**2+GMMZ**2) - IF(IABS(I).LT.10) THEN - DSIGHH=8D0*AEM**2*(EI**2/SH2+ - & 2D0*EI*VI*XWHH*(SH-SQMZ)*HBWZ/SH+ - & (VI**2+AI**2)*XWHH**2*HBWZ) - ELSE - IAOFF=181+3*((IABS(I)-11)/2) - HSUM=(PARP(IAOFF)**2+PARP(IAOFF+1)**2+PARP(IAOFF+2)**2)/ - & (4D0*PARU(1)) - DSIGHH=8D0*AEM**2*(EI**2/SH2+ - & 2D0*EI*VI*XWHH*(SH-SQMZ)*HBWZ/SH+ - & (VI**2+AI**2)*XWHH**2*HBWZ)+ - & 8D0*AEM*(EI*HSUM/(SH*TH)+ - & (VI+AI)*XWHH*HSUM*(SH-SQMZ)*HBWZ/TH)+ - & 4D0*HSUM**2/TH2 - ENDIF - ELSE - IF(IABS(I).LT.10) THEN - DSIGHH=8D0*AEM**2*EI**2/SH2 - ELSE - IAOFF=181+3*((IABS(I)-11)/2) - HSUM=(PARP(IAOFF)**2+PARP(IAOFF+1)**2+PARP(IAOFF+2)**2)/ - & (4D0*PARU(1)) - DSIGHH=8D0*AEM**2*EI**2/SH2+8D0*AEM*EI*HSUM/(SH*TH)+ - & 4D0*HSUM**2/TH2 - ENDIF - ENDIF - NCHN=NCHN+1 - ISIG(NCHN,1)=I - ISIG(NCHN,2)=-I - ISIG(NCHN,3)=1 - SIGH(NCHN)=FACHH*FCOI*DSIGHH - 320 CONTINUE - - ELSEIF(ISUB.EQ.351.OR.ISUB.EQ.352) THEN -C...f + f' -> f" + f"' + H++/-- (W+/- + W+/- -> H++/-- as inner process) - KFRES=KFPR(ISUB,1) - KFREC=PYCOMP(KFRES) - SQMH=PMAS(KFREC,1)**2 - IF(ISUB.EQ.351) FACNOR=PARP(190)**8*PARP(192)**2 - IF(ISUB.EQ.352) FACNOR=PARP(191)**6*2D0* - & PMAS(PYCOMP(9900024),1)**2 - FACWW=COMFAC*FACNOR*TAUP*VINT(2)*VINT(219) - FACPRT=1D0/((VINT(204)**2-VINT(215))* - & (VINT(209)**2-VINT(216))) - FACPRU=1D0/((VINT(204)**2+2D0*VINT(217))* - & (VINT(209)**2+2D0*VINT(218))) - CALL PYWIDT(KFRES,SH,WDTP,WDTE) - HS=SHR*WDTP(0) - FACBW=(1D0/PARU(1))*VINT(2)/((SH-SQMH)**2+HS**2) - IF(ABS(SHR-PMAS(KFREC,1)).GT.PARP(48)*PMAS(KFREC,2)) - & FACBW=0D0 - DO 340 I=MMIN1,MMAX1 - IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 340 - IF(ISUB.EQ.352.AND.IABS(I).GT.10) GOTO 340 - KCHWI=(1-2*MOD(IABS(I),2))*ISIGN(1,I) - DO 330 J=MMIN2,MMAX2 - IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 330 - IF(ISUB.EQ.352.AND.IABS(J).GT.10) GOTO 330 - KCHWJ=(1-2*MOD(IABS(J),2))*ISIGN(1,J) - KCHH=KCHWI+KCHWJ - IF(IABS(KCHH).NE.2) GOTO 330 - FACLR=VINT(180+I)*VINT(180+J) - HF=SHR*(WDTE(0,1)+WDTE(0,(5-KCHH/2)/2)+WDTE(0,4)) - IF(I.EQ.J.AND.IABS(I).GT.10) THEN - FACPRP=0.5D0*(FACPRT+FACPRU)**2 - ELSE - FACPRP=FACPRT**2 - ENDIF - NCHN=NCHN+1 - ISIG(NCHN,1)=I - ISIG(NCHN,2)=J - ISIG(NCHN,3)=1 - SIGH(NCHN)=FACLR*FACWW*FACPRP*FACBW*HF - 330 CONTINUE - 340 CONTINUE - - ELSEIF(ISUB.EQ.353) THEN -C...f + fbar -> Z_R0 - SQMZR=PMAS(PYCOMP(KFPR(ISUB,1)),1)**2 - CALL PYWIDT(KFPR(ISUB,1),SH,WDTP,WDTE) - HS=SHR*WDTP(0) - FACBW=4D0*COMFAC/((SH-SQMZR)**2+HS**2)*3D0 - HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4)) - HP=(AEM/(3D0*(1D0-2D0*XW)))*XWC*SH - DO 350 I=MMINA,MMAXA - IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 350 - IF(IABS(I).LE.8) THEN - EI=KCHG(IABS(I),1)/3D0 - AI=SIGN(1D0,EI+0.1D0)*(1D0-2D0*XW) - VI=SIGN(1D0,EI+0.1D0)-4D0*EI*XW - ELSE - AI=-(1D0-2D0*XW) - VI=-1D0+4D0*XW - ENDIF - HI=HP*(VI**2+AI**2) - IF(IABS(I).LE.10) HI=HI*FACA/3D0 - NCHN=NCHN+1 - ISIG(NCHN,1)=I - ISIG(NCHN,2)=-I - ISIG(NCHN,3)=1 - SIGH(NCHN)=HI*FACBW*HF - 350 CONTINUE - - ELSEIF(ISUB.EQ.354) THEN -C...f + fbar' -> W_R+/- - SQMWR=PMAS(PYCOMP(KFPR(ISUB,1)),1)**2 - CALL PYWIDT(KFPR(ISUB,1),SH,WDTP,WDTE) - HS=SHR*WDTP(0) - FACBW=4D0*COMFAC/((SH-SQMWR)**2+HS**2)*3D0 - HP=AEM/(24D0*XW)*SH - DO 370 I=MMIN1,MMAX1 - IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 370 - IA=IABS(I) - DO 360 J=MMIN2,MMAX2 - IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 360 - JA=IABS(J) - IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 360 - IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10)) - & GOTO 360 - KCHW=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3 - HI=HP*2D0 - IF(IA.LE.10) HI=HI*VCKM((IA+1)/2,(JA+1)/2)*FACA/3D0 - NCHN=NCHN+1 - ISIG(NCHN,1)=I - ISIG(NCHN,2)=J - ISIG(NCHN,3)=1 - HF=SHR*(WDTE(0,1)+WDTE(0,(5-KCHW)/2)+WDTE(0,4)) - SIGH(NCHN)=HI*FACBW*HF - 360 CONTINUE - 370 CONTINUE - ENDIF - - ELSEIF(ISUB.LE.400) THEN - IF(ISUB.EQ.391) THEN -C...f + fbar -> G*. - KFGSTR=KFPR(ISUB,1) - KCGSTR=PYCOMP(KFGSTR) - CALL PYWIDT(KFGSTR,SH,WDTP,WDTE) - HS=SHR*WDTP(0) - HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4)) - FACG=COMFAC*PARP(50)**2/(16D0*PARU(1))*SH*HF - -C ATLAS: gluon with flat mass spectrum - IF (ISSP.EQ.1) THEN -C qq Modifications Start - -C Remove Breit-Wigner Term from qq component -C & /((SH-PMAS(KCGSTR,1)**2)**2+HS**2) - -C Remove Modified cross section in wings of peak. -C FACG = FACG * SH**2 -C & /PMAS(KCGSTR,1)**4 - -C Do a mass dependent fit to the total parton luminosity distribution (gg and qq) and apply the inverse to flatten the mass distribution - IF(SQRT(SH).LE.550) FACG=FACG/(exp(-0.005882*SQRT(SH))) - IF(SQRT(SH).GT.550.AND.SQRT(SH).LE.1250) FACG=FACG - & /(0.2912*(exp(-0.003457*SQRT(SH)))) - IF(SQRT(SH).GT.1250) FACG=FACG - & /(0.0903*(exp(-0.002411*SQRT(SH)))) - -C qq Modification End -C ATLAS : end of gluon with flat mass spectrum modf. block - ELSE - FACG=COMFAC*PARP(50)**2/(16D0*PARU(1))*SH*HF/ - & ((SH-PMAS(KCGSTR,1)**2)**2+HS**2) -C... Modify cross section in wings of peak. - FACG = FACG * SH**2 / PMAS(KCGSTR,1)**4 - ENDIF - - DO 380 I=MMINA,MMAXA - IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 380 - HI=1D0 - IF(IABS(I).LE.10) HI=HI*FACA/3D0 - NCHN=NCHN+1 - ISIG(NCHN,1)=I - ISIG(NCHN,2)=-I - ISIG(NCHN,3)=1 - SIGH(NCHN)=FACG*HI - 380 CONTINUE - - ELSEIF(ISUB.EQ.392) THEN -C...g + g -> G*. - KFGSTR=KFPR(ISUB,1) - KCGSTR=PYCOMP(KFGSTR) - CALL PYWIDT(KFGSTR,SH,WDTP,WDTE) - HS=SHR*WDTP(0) - HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4)) - FACG=COMFAC*PARP(50)**2/(32D0*PARU(1))*SH*HF - -C ATLAS: gluon with flat mass spectrum -C gg Modifications Start - IF (ISSP.EQ.1) THEN -C Remove Breit-Wigner Term from gg component -C & /((SH-PMAS(KCGSTR,1)**2)**2+HS**2) - -C C Remove Modified cross section in wings of peak. -C FACG = FACG * SH**2 -C & /PMAS(KCGSTR,1)**4 - -C Do a mass dependent fit to the total parton luminosity distribution (gg and qq) and apply the inverse to flatten the mass distribution - IF(SQRT(SH).LE.550) FACG=FACG/(exp(-0.005882*SQRT(SH))) - IF(SQRT(SH).GT.550.AND.SQRT(SH).LE.1250) FACG=FACG - & /(0.2912*(exp(-0.003457*SQRT(SH)))) - IF(SQRT(SH).GT.1250) FACG=FACG - & /(0.0903*(exp(-0.002411*SQRT(SH)))) -C gg Modification End -C ATLAS: end of gluon with flat mass spectrum block - ELSE - - FACG=COMFAC*PARP(50)**2/(32D0*PARU(1))*SH*HF/ - & ((SH-PMAS(KCGSTR,1)**2)**2+HS**2) -C... Modify cross section in wings of peak. - FACG = FACG * SH**2 / PMAS(KCGSTR,1)**4 - ENDIF - - IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 390 - NCHN=NCHN+1 - ISIG(NCHN,1)=21 - ISIG(NCHN,2)=21 - ISIG(NCHN,3)=1 - SIGH(NCHN)=FACG - 390 CONTINUE - - ELSEIF(ISUB.EQ.393) THEN -C...q + qbar -> g + G*. - KFGSTR=KFPR(ISUB,2) - KCGSTR=PYCOMP(KFGSTR) - FACG=COMFAC*PARP(50)**2*AS*SH/(72D0*PARU(1)*SQM4)* - & (4D0*(TH2+UH2)/SH2+9D0*(TH+UH)/SH+(TH2/UH+UH2/TH)/SH+ - & 3D0*(4D0+TH/UH+UH/TH)+4D0*(SH/UH+SH/TH)+ - & 2D0*SH2/(TH*UH)) -C...Propagators: as simulated in PYOFSH and as desired - GMMG=PMAS(KCGSTR,1)*PMAS(KCGSTR,2) - HBW4=GMMG/((SQM4-PMAS(KCGSTR,1)**2)**2+GMMG**2) - CALL PYWIDT(KFGSTR,SQM4,WDTP,WDTE) - HS=SQRT(SQM4)*WDTP(0) - HF=SQRT(SQM4)*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4)) - HBW4C=HF/((SQM4-PMAS(KCGSTR,1)**2)**2+HS**2) - FACG=FACG*HBW4C/HBW4 - DO 400 I=MMINA,MMAXA - IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR. - & KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 400 - NCHN=NCHN+1 - ISIG(NCHN,1)=I - ISIG(NCHN,2)=-I - ISIG(NCHN,3)=1 - SIGH(NCHN)=FACG - 400 CONTINUE - - ELSEIF(ISUB.EQ.394) THEN -C...q + g -> q + G*. - KFGSTR=KFPR(ISUB,2) - KCGSTR=PYCOMP(KFGSTR) - FACG=-COMFAC*PARP(50)**2*AS*SH/(192D0*PARU(1)*SQM4)* - & (4D0*(SH2+UH2)/(TH*SH)+9D0*(SH+UH)/SH+SH/UH+UH2/SH2+ - & 3D0*TH*(4D0+SH/UH+UH/SH)/SH+4D0*TH2*(1D0/UH+1D0/SH)/SH+ - & 2D0*TH2*TH/(UH*SH2)) -C...Propagators: as simulated in PYOFSH and as desired - GMMG=PMAS(KCGSTR,1)*PMAS(KCGSTR,2) - HBW4=GMMG/((SQM4-PMAS(KCGSTR,1)**2)**2+GMMG**2) - CALL PYWIDT(KFGSTR,SQM4,WDTP,WDTE) - HS=SQRT(SQM4)*WDTP(0) - HF=SQRT(SQM4)*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4)) - HBW4C=HF/((SQM4-PMAS(KCGSTR,1)**2)**2+HS**2) - FACG=FACG*HBW4C/HBW4 - DO 420 I=MMINA,MMAXA - IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 420 - DO 410 ISDE=1,2 - IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 410 - IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 410 - NCHN=NCHN+1 - ISIG(NCHN,ISDE)=I - ISIG(NCHN,3-ISDE)=21 - ISIG(NCHN,3)=1 - SIGH(NCHN)=FACG - 410 CONTINUE - 420 CONTINUE - - ELSEIF(ISUB.EQ.395) THEN -C...g + g -> g + G*. - KFGSTR=KFPR(ISUB,2) - KCGSTR=PYCOMP(KFGSTR) - FACG=COMFAC*3D0*PARP(50)**2*AS*SH/(32D0*PARU(1)*SQM4)* - & ((TH2+TH*UH+UH2)**2/(SH2*TH*UH)+2D0*(TH2/UH+UH2/TH)/SH+ - & 3D0*(TH/UH+UH/TH)+2D0*(SH/UH+SH/TH)+SH2/(TH*UH)) -C...Propagators: as simulated in PYOFSH and as desired - GMMG=PMAS(KCGSTR,1)*PMAS(KCGSTR,2) - HBW4=GMMG/((SQM4-PMAS(KCGSTR,1)**2)**2+GMMG**2) - CALL PYWIDT(KFGSTR,SQM4,WDTP,WDTE) - HS=SQRT(SQM4)*WDTP(0) - HF=SQRT(SQM4)*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4)) - HBW4C=HF/((SQM4-PMAS(KCGSTR,1)**2)**2+HS**2) - FACG=FACG*HBW4C/HBW4 - IF(KFAC(1,21)*KFAC(2,21).NE.0) THEN - NCHN=NCHN+1 - ISIG(NCHN,1)=21 - ISIG(NCHN,2)=21 - ISIG(NCHN,3)=1 - SIGH(NCHN)=FACG - ENDIF - ENDIF - ENDIF - - RETURN - END diff --git a/Generators/PythiaExo_i/src/PythiaModified/pysgwz.F b/Generators/PythiaExo_i/src/PythiaModified/pysgwz.F deleted file mode 100644 index f29064aaa06747ce22a69ddb653b113f32187f71..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/PythiaModified/pysgwz.F +++ /dev/null @@ -1,822 +0,0 @@ -C...PYSGWZ -C...Subprocess cross sections for W/Z processes, -C...except that longitudinal WW scattering is in Higgs sector. -C...Auxiliary to PYSIGH. -c -c Drell-Yan coupling modified for monopole pair -c production (Daniel Goldin) -c - - SUBROUTINE PYSGWZ(NCHN,SIGS) - -C...Double precision and integer declarations - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - -C...Parameter statement to help give large particle numbers. - PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000, - &KEXCIT=4000000,KDIMEN=5000000) -C...Commonblocks - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) - COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5) - COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200) - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) - COMMON/PYINT1/MINT(400),VINT(400) - COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2) - COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000) - COMMON/PYINT4/MWID(500),WIDS(500,5) - COMMON/PYTCSM/ITCM(0:99),RTCM(0:99) - COMMON/PYSGCM/ISUB,ISUBSV,MMIN1,MMAX1,MMIN2,MMAX2,MMINA,MMAXA, - &KFAC(2,-40:40),COMFAC,FACK,FACA,SH,TH,UH,SH2,TH2,UH2,SQM3,SQM4, - &SHR,SQPTH,TAUP,BE34,CTH,X(2),SQMZ,SQMW,GMMZ,GMMW, - &ALEM,AS,XW,XW1,XWC,XWV,POLL,POLR,POLLL,POLRR - SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYSUBS/,/PYPARS/,/PYINT1/, - &/PYINT2/,/PYINT3/,/PYINT4/,/PYTCSM/,/PYSGCM/ -C...Local arrays and complex numbers - DIMENSION WDTP(0:400),WDTE(0:400,0:5),HGZ(6,3),HL3(3),HR3(3), - &HL4(3),HR4(3) - COMPLEX*16 COULCK,COULCP,COULCD,COULCR,COULCS - -C...Differential cross section expressions. - - IF(ISUB.LE.20) THEN - IF(ISUB.EQ.1) THEN -C...f + fbar -> gamma*/Z0 - MINT(61)=2 - CALL PYWIDT(23,SH,WDTP,WDTE) - HS=SHR*WDTP(0) - FACZ=4D0*COMFAC*3D0 -c -c Redefine coupling constant corresponding to DY process -c for monopoles (Daniel Goldin) -c - ALEM = SQRT(1.-4.*PMAS(13,1)*PMAS(13,1)/VINT(44))/2. -c print *,'Mono mass, Effective coupling (ALEM) ', PMAS(13,1), ALEM - HP0=ALEM/3D0*SH - HP1=ALEM/3D0*XWC*SH - DO 100 I=MMINA,MMAXA - IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 100 - EI=KCHG(IABS(I),1)/3D0 - AI=SIGN(1D0,EI) - VI=AI-4D0*EI*XWV - HI0=HP0 - IF(IABS(I).LE.10) HI0=HI0*FACA/3D0 - HI1=HP1 - IF(IABS(I).LE.10) HI1=HI1*FACA/3D0 - NCHN=NCHN+1 - ISIG(NCHN,1)=I - ISIG(NCHN,2)=-I - ISIG(NCHN,3)=1 - SIGH(NCHN)=FACZ*(EI**2/SH2*HI0*HP0*VINT(111)+ - & EI*VI*(1D0-SQMZ/SH)/((SH-SQMZ)**2+HS**2)* - & (HI0*HP1+HI1*HP0)*VINT(112)+(VI**2+AI**2)/ - & ((SH-SQMZ)**2+HS**2)*HI1*HP1*VINT(114)) - 100 CONTINUE - - ELSEIF(ISUB.EQ.2) THEN -C...f + fbar' -> W+/- - CALL PYWIDT(24,SH,WDTP,WDTE) - HS=SHR*WDTP(0) - FACBW=4D0*COMFAC/((SH-SQMW)**2+HS**2)*3D0 - HP=ALEM/(24D0*XW)*SH - DO 120 I=MMIN1,MMAX1 - IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 120 - IA=IABS(I) - DO 110 J=MMIN2,MMAX2 - IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 110 - JA=IABS(J) - IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 110 - IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10)) - & GOTO 110 - KCHW=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3 - HI=HP*2D0 - IF(IA.LE.10) HI=HI*VCKM((IA+1)/2,(JA+1)/2)*FACA/3D0 - NCHN=NCHN+1 - ISIG(NCHN,1)=I - ISIG(NCHN,2)=J - ISIG(NCHN,3)=1 - HF=SHR*(WDTE(0,1)+WDTE(0,(5-KCHW)/2)+WDTE(0,4)) - SIGH(NCHN)=HI*FACBW*HF - 110 CONTINUE - 120 CONTINUE - - ELSEIF(ISUB.EQ.15) THEN -C...f + fbar -> g + (gamma*/Z0) (q + qbar -> g + (gamma*/Z0) only) - FACZG=COMFAC*AS*ALEM*(8D0/9D0)*(TH2+UH2+2D0*SQM4*SH)/(TH*UH) -C...gamma, gamma/Z interference and Z couplings to final fermion pairs - HFGG=0D0 - HFGZ=0D0 - HFZZ=0D0 - RADC4=1D0+PYALPS(SQM4)/PARU(1) - DO 130 I=1,MIN(16,MDCY(23,3)) - IDC=I+MDCY(23,2)-1 - IF(MDME(IDC,1).LT.0) GOTO 130 - IMDM=0 - IF(MDME(IDC,1).EQ.1.OR.MDME(IDC,1).EQ.2.OR.MDME(IDC,1).EQ.4) - & IMDM=1 - IF(I.LE.8) THEN - EF=KCHG(I,1)/3D0 - AF=SIGN(1D0,EF+0.1D0) - VF=AF-4D0*EF*XWV - ELSEIF(I.LE.16) THEN - EF=KCHG(I+2,1)/3D0 - AF=SIGN(1D0,EF+0.1D0) - VF=AF-4D0*EF*XWV - ENDIF - RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SQM4 - IF(4D0*RM1.LT.1D0) THEN - FCOF=1D0 - IF(I.LE.8) FCOF=3D0*RADC4 - BE34=SQRT(MAX(0D0,1D0-4D0*RM1)) - IF(IMDM.EQ.1) THEN - HFGG=HFGG+FCOF*EF**2*(1D0+2D0*RM1)*BE34 - HFGZ=HFGZ+FCOF*EF*VF*(1D0+2D0*RM1)*BE34 - HFZZ=HFZZ+FCOF*(VF**2*(1D0+2D0*RM1)+ - & AF**2*(1D0-4D0*RM1))*BE34 - ENDIF - ENDIF - 130 CONTINUE -C...Propagators: as simulated in PYOFSH and as desired - HBW4=(1D0/PARU(1))*GMMZ/((SQM4-SQMZ)**2+GMMZ**2) - MINT15=MINT(15) - MINT(15)=1 - MINT(61)=1 - CALL PYWIDT(23,SQM4,WDTP,WDTE) - MINT(15)=MINT15 - HFALEM=(PARU(108)/PARU(2))*(2D0/3D0) - HFGG=HFGG*HFALEM*VINT(111)/SQM4 - HFGZ=HFGZ*HFALEM*VINT(112)/SQM4 - HFZZ=HFZZ*HFALEM*VINT(114)/SQM4 -C...Loop over flavours; consider full gamma/Z structure - DO 140 I=MMINA,MMAXA - IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR. - & KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 140 - EI=KCHG(IABS(I),1)/3D0 - AI=SIGN(1D0,EI) - VI=AI-4D0*EI*XWV - NCHN=NCHN+1 - ISIG(NCHN,1)=I - ISIG(NCHN,2)=-I - ISIG(NCHN,3)=1 - SIGH(NCHN)=FACZG*(EI**2*HFGG+EI*VI*HFGZ+ - & (VI**2+AI**2)*HFZZ)/HBW4 - 140 CONTINUE - - ELSEIF(ISUB.EQ.16) THEN -C...f + fbar' -> g + W+/- (q + qbar' -> g + W+/- only) - FACWG=COMFAC*AS*ALEM/XW*2D0/9D0*(TH2+UH2+2D0*SQM4*SH)/(TH*UH) -C...Propagators: as simulated in PYOFSH and as desired - HBW4=GMMW/((SQM4-SQMW)**2+GMMW**2) - CALL PYWIDT(24,SQM4,WDTP,WDTE) - GMMWC=SQRT(SQM4)*WDTP(0) - HBW4C=GMMWC/((SQM4-SQMW)**2+GMMWC**2) - FACWG=FACWG*HBW4C/HBW4 - DO 160 I=MMIN1,MMAX1 - IA=IABS(I) - IF(I.EQ.0.OR.IA.GT.10.OR.KFAC(1,I).EQ.0) GOTO 160 - DO 150 J=MMIN2,MMAX2 - JA=IABS(J) - IF(J.EQ.0.OR.JA.GT.10.OR.KFAC(2,J).EQ.0) GOTO 150 - IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 150 - KCHW=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3 - WIDSC=(WDTE(0,1)+WDTE(0,(5-KCHW)/2)+WDTE(0,4))/WDTP(0) - FCKM=VCKM((IA+1)/2,(JA+1)/2) - NCHN=NCHN+1 - ISIG(NCHN,1)=I - ISIG(NCHN,2)=J - ISIG(NCHN,3)=1 - SIGH(NCHN)=FACWG*FCKM*WIDSC - 150 CONTINUE - 160 CONTINUE - - ELSEIF(ISUB.EQ.19) THEN -C...f + fbar -> gamma + (gamma*/Z0) - FACGZ=COMFAC*2D0*ALEM**2*(TH2+UH2+2D0*SQM4*SH)/(TH*UH) -C...gamma, gamma/Z interference and Z couplings to final fermion pairs - HFGG=0D0 - HFGZ=0D0 - HFZZ=0D0 - RADC4=1D0+PYALPS(SQM4)/PARU(1) - DO 170 I=1,MIN(16,MDCY(23,3)) - IDC=I+MDCY(23,2)-1 - IF(MDME(IDC,1).LT.0) GOTO 170 - IMDM=0 - IF(MDME(IDC,1).EQ.1.OR.MDME(IDC,1).EQ.2.OR.MDME(IDC,1).EQ.4) - & IMDM=1 - IF(I.LE.8) THEN - EF=KCHG(I,1)/3D0 - AF=SIGN(1D0,EF+0.1D0) - VF=AF-4D0*EF*XWV - ELSEIF(I.LE.16) THEN - EF=KCHG(I+2,1)/3D0 - AF=SIGN(1D0,EF+0.1D0) - VF=AF-4D0*EF*XWV - ENDIF - RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SQM4 - IF(4D0*RM1.LT.1D0) THEN - FCOF=1D0 - IF(I.LE.8) FCOF=3D0*RADC4 - BE34=SQRT(MAX(0D0,1D0-4D0*RM1)) - IF(IMDM.EQ.1) THEN - HFGG=HFGG+FCOF*EF**2*(1D0+2D0*RM1)*BE34 - HFGZ=HFGZ+FCOF*EF*VF*(1D0+2D0*RM1)*BE34 - HFZZ=HFZZ+FCOF*(VF**2*(1D0+2D0*RM1)+ - & AF**2*(1D0-4D0*RM1))*BE34 - ENDIF - ENDIF - 170 CONTINUE -C...Propagators: as simulated in PYOFSH and as desired - HBW4=(1D0/PARU(1))*GMMZ/((SQM4-SQMZ)**2+GMMZ**2) - MINT15=MINT(15) - MINT(15)=1 - MINT(61)=1 - CALL PYWIDT(23,SQM4,WDTP,WDTE) - MINT(15)=MINT15 - HFALEM=(PARU(108)/PARU(2))*(2D0/3D0) - HFGG=HFGG*HFALEM*VINT(111)/SQM4 - HFGZ=HFGZ*HFALEM*VINT(112)/SQM4 - HFZZ=HFZZ*HFALEM*VINT(114)/SQM4 -C...Loop over flavours; consider full gamma/Z structure - DO 180 I=MMINA,MMAXA - IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 180 - EI=KCHG(IABS(I),1)/3D0 - AI=SIGN(1D0,EI) - VI=AI-4D0*EI*XWV - FCOI=1D0 - IF(IABS(I).LE.10) FCOI=FACA/3D0 - NCHN=NCHN+1 - ISIG(NCHN,1)=I - ISIG(NCHN,2)=-I - ISIG(NCHN,3)=1 - SIGH(NCHN)=FACGZ*FCOI*EI**2*(EI**2*HFGG+EI*VI*HFGZ+ - & (VI**2+AI**2)*HFZZ)/HBW4 - 180 CONTINUE - - ELSEIF(ISUB.EQ.20) THEN -C...f + fbar' -> gamma + W+/- - FACGW=COMFAC*0.5D0*ALEM**2/XW -C...Propagators: as simulated in PYOFSH and as desired - HBW4=GMMW/((SQM4-SQMW)**2+GMMW**2) - CALL PYWIDT(24,SQM4,WDTP,WDTE) - GMMWC=SQRT(SQM4)*WDTP(0) - HBW4C=GMMWC/((SQM4-SQMW)**2+GMMWC**2) - FACGW=FACGW*HBW4C/HBW4 -C...Anomalous couplings - TERM1=(TH2+UH2+2D0*SQM4*SH)/(TH*UH) - TERM2=0D0 - TERM3=0D0 - IF(ITCM(5).GE.1.AND.ITCM(5).LE.4) THEN - TERM2=RTCM(46)*(TH-UH)/(TH+UH) - TERM3=0.5D0*RTCM(46)**2*(TH*UH+(TH2+UH2)*SH/ - & (4D0*SQMW))/(TH+UH)**2 - ENDIF - DO 200 I=MMIN1,MMAX1 - IA=IABS(I) - IF(I.EQ.0.OR.IA.GT.20.OR.KFAC(1,I).EQ.0) GOTO 200 - DO 190 J=MMIN2,MMAX2 - JA=IABS(J) - IF(J.EQ.0.OR.JA.GT.20.OR.KFAC(2,J).EQ.0) GOTO 190 - IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 190 - IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10)) - & GOTO 190 - KCHW=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3 - WIDSC=(WDTE(0,1)+WDTE(0,(5-KCHW)/2)+WDTE(0,4))/WDTP(0) - IF(IA.LE.10) THEN - FACWR=UH/(TH+UH)-1D0/3D0 - FCKM=VCKM((IA+1)/2,(JA+1)/2) - FCOI=FACA/3D0 - ELSE - FACWR=-(TH/(TH+UH)) - FCKM=1D0 - FCOI=1D0 - ENDIF - FACWK=TERM1*FACWR**2+TERM2*FACWR+TERM3 - NCHN=NCHN+1 - ISIG(NCHN,1)=I - ISIG(NCHN,2)=J - ISIG(NCHN,3)=1 - SIGH(NCHN)=FACGW*FACWK*FCOI*FCKM*WIDSC - 190 CONTINUE - 200 CONTINUE - ENDIF - - ELSEIF(ISUB.LE.40) THEN - IF(ISUB.EQ.22) THEN -C...f + fbar -> (gamma*/Z0) + (gamma*/Z0) -C...Kinematics dependence - FACZZ=COMFAC*ALEM**2*((TH2+UH2+2D0*(SQM3+SQM4)*SH)/(TH*UH)- - & SQM3*SQM4*(1D0/TH2+1D0/UH2)) -C...gamma, gamma/Z interference and Z couplings to final fermion pairs - DO 220 I=1,6 - DO 210 J=1,3 - HGZ(I,J)=0D0 - 210 CONTINUE - 220 CONTINUE - RADC3=1D0+PYALPS(SQM3)/PARU(1) - RADC4=1D0+PYALPS(SQM4)/PARU(1) - DO 230 I=1,MIN(16,MDCY(23,3)) - IDC=I+MDCY(23,2)-1 - IF(MDME(IDC,1).LT.0) GOTO 230 - IMDM=0 - IF(MDME(IDC,1).EQ.1.OR.MDME(IDC,1).EQ.2) IMDM=1 - IF(MDME(IDC,1).EQ.4.OR.MDME(IDC,1).EQ.5) IMDM=MDME(IDC,1)-2 - IF(I.LE.8) THEN - EF=KCHG(I,1)/3D0 - AF=SIGN(1D0,EF+0.1D0) - VF=AF-4D0*EF*XWV - ELSEIF(I.LE.16) THEN - EF=KCHG(I+2,1)/3D0 - AF=SIGN(1D0,EF+0.1D0) - VF=AF-4D0*EF*XWV - ENDIF - RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SQM3 - IF(4D0*RM1.LT.1D0) THEN - FCOF=1D0 - IF(I.LE.8) FCOF=3D0*RADC3 - BE34=SQRT(MAX(0D0,1D0-4D0*RM1)) - IF(IMDM.GE.1) THEN - HGZ(1,IMDM)=HGZ(1,IMDM)+FCOF*EF**2*(1D0+2D0*RM1)*BE34 - HGZ(2,IMDM)=HGZ(2,IMDM)+FCOF*EF*VF*(1D0+2D0*RM1)*BE34 - HGZ(3,IMDM)=HGZ(3,IMDM)+FCOF*(VF**2*(1D0+2D0*RM1)+ - & AF**2*(1D0-4D0*RM1))*BE34 - ENDIF - ENDIF - RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SQM4 - IF(4D0*RM1.LT.1D0) THEN - FCOF=1D0 - IF(I.LE.8) FCOF=3D0*RADC4 - BE34=SQRT(MAX(0D0,1D0-4D0*RM1)) - IF(IMDM.GE.1) THEN - HGZ(4,IMDM)=HGZ(4,IMDM)+FCOF*EF**2*(1D0+2D0*RM1)*BE34 - HGZ(5,IMDM)=HGZ(5,IMDM)+FCOF*EF*VF*(1D0+2D0*RM1)*BE34 - HGZ(6,IMDM)=HGZ(6,IMDM)+FCOF*(VF**2*(1D0+2D0*RM1)+ - & AF**2*(1D0-4D0*RM1))*BE34 - ENDIF - ENDIF - 230 CONTINUE -C...Propagators: as simulated in PYOFSH and as desired - HBW3=(1D0/PARU(1))*GMMZ/((SQM3-SQMZ)**2+GMMZ**2) - HBW4=(1D0/PARU(1))*GMMZ/((SQM4-SQMZ)**2+GMMZ**2) - MINT15=MINT(15) - MINT(15)=1 - MINT(61)=1 - CALL PYWIDT(23,SQM3,WDTP,WDTE) - MINT(15)=MINT15 - HFALEM=(PARU(108)/PARU(2))*(2D0/3D0) - DO 240 J=1,3 - HGZ(1,J)=HGZ(1,J)*HFALEM*VINT(111)/SQM3 - HGZ(2,J)=HGZ(2,J)*HFALEM*VINT(112)/SQM3 - HGZ(3,J)=HGZ(3,J)*HFALEM*VINT(114)/SQM3 - 240 CONTINUE - MINT15=MINT(15) - MINT(15)=1 - MINT(61)=1 - CALL PYWIDT(23,SQM4,WDTP,WDTE) - MINT(15)=MINT15 - HFALEM=(PARU(108)/PARU(2))*(2D0/3D0) - DO 250 J=1,3 - HGZ(4,J)=HGZ(4,J)*HFALEM*VINT(111)/SQM4 - HGZ(5,J)=HGZ(5,J)*HFALEM*VINT(112)/SQM4 - HGZ(6,J)=HGZ(6,J)*HFALEM*VINT(114)/SQM4 - 250 CONTINUE -C...Loop over flavours; separate left- and right-handed couplings - DO 270 I=MMINA,MMAXA - IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 270 - EI=KCHG(IABS(I),1)/3D0 - AI=SIGN(1D0,EI) - VI=AI-4D0*EI*XWV - VALI=VI-AI - VARI=VI+AI - FCOI=1D0 - IF(IABS(I).LE.10) FCOI=FACA/3D0 - DO 260 J=1,3 - HL3(J)=EI**2*HGZ(1,J)+EI*VALI*HGZ(2,J)+VALI**2*HGZ(3,J) - HR3(J)=EI**2*HGZ(1,J)+EI*VARI*HGZ(2,J)+VARI**2*HGZ(3,J) - HL4(J)=EI**2*HGZ(4,J)+EI*VALI*HGZ(5,J)+VALI**2*HGZ(6,J) - HR4(J)=EI**2*HGZ(4,J)+EI*VARI*HGZ(5,J)+VARI**2*HGZ(6,J) - 260 CONTINUE - FACLR=HL3(1)*HL4(1)+HL3(1)*(HL4(2)+HL4(3))+ - & HL4(1)*(HL3(2)+HL3(3))+HL3(2)*HL4(3)+HL4(2)*HL3(3)+ - & HR3(1)*HR4(1)+HR3(1)*(HR4(2)+HR4(3))+ - & HR4(1)*(HR3(2)+HR3(3))+HR3(2)*HR4(3)+HR4(2)*HR3(3) - NCHN=NCHN+1 - ISIG(NCHN,1)=I - ISIG(NCHN,2)=-I - ISIG(NCHN,3)=1 - SIGH(NCHN)=0.5D0*FACZZ*FCOI*FACLR/(HBW3*HBW4) - 270 CONTINUE - - ELSEIF(ISUB.EQ.23) THEN -C...f + fbar' -> Z0 + W+/- (Z0 only, i.e. no gamma* admixture.) - FACZW=COMFAC*0.5D0*(ALEM/XW)**2 - FACZW=FACZW*WIDS(23,2) - THUH=MAX(TH*UH-SQM3*SQM4,SH*CKIN(3)**2) - FACBW=1D0/((SH-SQMW)**2+GMMW**2) - DO 290 I=MMIN1,MMAX1 - IA=IABS(I) - IF(I.EQ.0.OR.IA.GT.20.OR.KFAC(1,I).EQ.0) GOTO 290 - DO 280 J=MMIN2,MMAX2 - JA=IABS(J) - IF(J.EQ.0.OR.JA.GT.20.OR.KFAC(2,J).EQ.0) GOTO 280 - IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 280 - IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10)) - & GOTO 280 - KCHW=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3 - EI=KCHG(IA,1)/3D0 - AI=SIGN(1D0,EI+0.1D0) - VI=AI-4D0*EI*XWV - EJ=KCHG(JA,1)/3D0 - AJ=SIGN(1D0,EJ+0.1D0) - VJ=AJ-4D0*EJ*XWV - IF(VI+AI.GT.0) THEN - VISAV=VI - AISAV=AI - VI=VJ - AI=AJ - VJ=VISAV - AJ=AISAV - ENDIF - FCKM=1D0 - IF(IA.LE.10) FCKM=VCKM((IA+1)/2,(JA+1)/2) - FCOI=1D0 - IF(IA.LE.10) FCOI=FACA/3D0 - NCHN=NCHN+1 - ISIG(NCHN,1)=I - ISIG(NCHN,2)=J - ISIG(NCHN,3)=1 - SIGH(NCHN)=FACZW*FCOI*FCKM*(FACBW*((9D0-8D0*XW)/4D0*THUH+ - & (8D0*XW-6D0)/4D0*SH*(SQM3+SQM4))+(THUH-SH*(SQM3+SQM4))* - & (SH-SQMW)*FACBW*0.5D0*((VJ+AJ)/TH-(VI+AI)/UH)+ - & THUH/(16D0*XW1)*((VJ+AJ)**2/TH2+(VI+AI)**2/UH2)+ - & SH*(SQM3+SQM4)/(8D0*XW1)*(VI+AI)*(VJ+AJ)/(TH*UH))* - & WIDS(24,(5-KCHW)/2) -C***Protect against slightly negative cross sections. (Reason yet to be -C***sorted out. One possibility: addition of width to the W propagator.) - SIGH(NCHN)=MAX(0D0,SIGH(NCHN)) - 280 CONTINUE - 290 CONTINUE - - ELSEIF(ISUB.EQ.25) THEN -C...f + fbar -> W+ + W- -C...Propagators: Z0, W+- as simulated in PYOFSH and as desired - GMMZC=GMMZ - HBWZC=SH**2/((SH-SQMZ)**2+GMMZC**2) - HBW3=GMMW/((SQM3-SQMW)**2+GMMW**2) - CALL PYWIDT(24,SQM3,WDTP,WDTE) - GMMW3=SQRT(SQM3)*WDTP(0) - HBW3C=GMMW3/((SQM3-SQMW)**2+GMMW3**2) - HBW4=GMMW/((SQM4-SQMW)**2+GMMW**2) - CALL PYWIDT(24,SQM4,WDTP,WDTE) - GMMW4=SQRT(SQM4)*WDTP(0) - HBW4C=GMMW4/((SQM4-SQMW)**2+GMMW4**2) -C...Kinematical functions - THUH=MAX(TH*UH-SQM3*SQM4,SH*CKIN(3)**2) - THUH34=(2D0*SH*(SQM3+SQM4)+THUH)/(SQM3*SQM4) - GS=(((SH-SQM3-SQM4)**2-4D0*SQM3*SQM4)*THUH34+12D0*THUH)/SH2 - GT=THUH34+4D0*THUH/TH2 - GST=((SH-SQM3-SQM4)*THUH34+4D0*(SH*(SQM3+SQM4)-THUH)/TH)/SH - GU=THUH34+4D0*THUH/UH2 - GSU=((SH-SQM3-SQM4)*THUH34+4D0*(SH*(SQM3+SQM4)-THUH)/UH)/SH -C...Common factors and couplings - FACWW=COMFAC*(HBW3C/HBW3)*(HBW4C/HBW4) - FACWW=FACWW*WIDS(24,1) - CGG=ALEM**2/2D0 - CGZ=ALEM**2/(4D0*XW)*HBWZC*(1D0-SQMZ/SH) - CZZ=ALEM**2/(32D0*XW**2)*HBWZC - CNG=ALEM**2/(4D0*XW) - CNZ=ALEM**2/(16D0*XW**2)*HBWZC*(1D0-SQMZ/SH) - CNN=ALEM**2/(16D0*XW**2) -C...Coulomb factor for W+W- pair - IF(MSTP(40).GE.1.AND.MSTP(40).LE.3) THEN - COULE=(SH-4D0*SQMW)/(4D0*PMAS(24,1)) - COULP=MAX(1D-10,0.5D0*BE34*SQRT(SH)) - IF(COULE.LT.100D0*PMAS(24,2)) THEN - COULP1=SQRT(0.5D0*PMAS(24,1)*(SQRT(COULE**2+ - & PMAS(24,2)**2)-COULE)) - ELSE - COULP1=SQRT(0.5D0*PMAS(24,1)*(0.5D0*PMAS(24,2)**2/COULE)) - ENDIF - IF(COULE.GT.-(100D0*PMAS(24,2))) THEN - COULP2=SQRT(0.5D0*PMAS(24,1)*(SQRT(COULE**2+ - & PMAS(24,2)**2)+COULE)) - ELSE - COULP2=SQRT(0.5D0*PMAS(24,1)*(0.5D0*PMAS(24,2)**2/ - & ABS(COULE))) - ENDIF - IF(MSTP(40).EQ.1) THEN - COULDC=PARU(1)-2D0*ATAN((COULP1**2+COULP2**2-COULP**2)/ - & MAX(1D-10,2D0*COULP*COULP1)) - FACCOU=1D0+0.5D0*PARU(101)*COULDC/MAX(1D-5,BE34) - ELSEIF(MSTP(40).EQ.2) THEN - COULCK=DCMPLX(DBLE(COULP1),DBLE(COULP2)) - COULCP=DCMPLX(0D0,DBLE(COULP)) - COULCD=(COULCK+COULCP)/(COULCK-COULCP) - COULCR=1D0+DBLE(PARU(101)*SQRT(SH))/ - & (4D0*COULCP)*LOG(COULCD) - COULCS=DCMPLX(0D0,0D0) - NSTP=100 - DO 300 ISTP=1,NSTP - COULXX=(ISTP-0.5)/NSTP - COULCS=COULCS+(1D0/COULXX)*LOG((1D0+COULXX*COULCD)/ - & (1D0+COULXX/COULCD)) - 300 CONTINUE - COULCR=COULCR+DBLE(PARU(101)**2*SH)/(16D0*COULCP*COULCK)* - & (COULCS/NSTP) - FACCOU=ABS(COULCR)**2 - ELSEIF(MSTP(40).EQ.3) THEN - COULDC=PARU(1)-2D0*(1D0-BE34)**2*ATAN((COULP1**2+ - & COULP2**2-COULP**2)/MAX(1D-10,2D0*COULP*COULP1)) - FACCOU=1D0+0.5D0*PARU(101)*COULDC/MAX(1D-5,BE34) - ENDIF - ELSEIF(MSTP(40).EQ.4) THEN - FACCOU=1D0+0.5D0*PARU(101)*PARU(1)/MAX(1D-5,BE34) - ELSE - FACCOU=1D0 - ENDIF - VINT(95)=FACCOU - FACWW=FACWW*FACCOU -C...Loop over allowed flavours - DO 310 I=MMINA,MMAXA - IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 310 - EI=KCHG(IABS(I),1)/3D0 - AI=SIGN(1D0,EI+0.1D0) - VI=AI-4D0*EI*XWV - FCOI=1D0 - IF(IABS(I).LE.10) FCOI=FACA/3D0 - IF(MSTP(50).LE.0.OR.IABS(I).LE.10) THEN - IF(AI.LT.0D0) THEN - DSIGWW=(CGG*EI**2+CGZ*VI*EI+CZZ*(VI**2+AI**2))*GS+ - & (CNG*EI+CNZ*(VI+AI))*GST+CNN*GT - ELSE - DSIGWW=(CGG*EI**2+CGZ*VI*EI+CZZ*(VI**2+AI**2))*GS- - & (CNG*EI+CNZ*(VI+AI))*GSU+CNN*GU - ENDIF - ELSE - XMW02=0.5D0*(SQM3+SQM4)-0.25D0*(SQM3-SQM4)**2/SH - BET=SQRT(1D0-4D0*XMW02/SH) - GAT=1D0/SQRT(1D0-BET**2) - STHE2=1D0-CTH**2 - AMPZG=BET**3*(16D0+(4D0*BET**2*GAT**2+3D0/GAT**2)*STHE2) - AMPNU=BET*(2D0+BET**2*GAT**2*STHE2/2D0+ - & 2D0*BET**2*(1D0-BET**2)*STHE2/(1D0-2D0*BET*CTH+BET**2)**2) - AMPNG=BET*((1D0+BET**2)*(4D0+BET**2*GAT**2*STHE2)+ - & 2D0*(1D0-BET**2)*(BET**2*STHE2-2D0*(1D0-BET**2))/ - & (1D0-2D0*BET*CTH+BET**2)) - PROPI1=(0.25D0*SQMZ/XMW02)*HBWZC*(1D0-SQMZ/SH) - PROPI2=(0.25D0*SQMZ/XMW02)**2*HBWZC - A0=(2D0*(XMW02/SQMZ)-(1D0-BET**2)*XW)*POLL - A1=(2D0*(XMW02/SQMZ)**2-2*XMW02/SQMZ*(1D0-BET**2)*XW)*POLL - A2=(1D0-BET**2)**2*XW**2*(POLR+POLL)/2D0 - ATOT=AMPNU*POLL+(A1+A2)*PROPI2*AMPZG-A0*PROPI1*AMPNG - ATOT=ATOT*CNN/SQMW*SH/BET*2D0 - DSIGWW=ATOT - ENDIF - NCHN=NCHN+1 - ISIG(NCHN,1)=I - ISIG(NCHN,2)=-I - ISIG(NCHN,3)=1 - SIGH(NCHN)=FACWW*FCOI*DSIGWW - 310 CONTINUE - - ELSEIF(ISUB.EQ.30) THEN -C...f + g -> f + (gamma*/Z0) (q + g -> q + (gamma*/Z0) only) - FZQ=COMFAC*FACA*AS*ALEM*(1D0/3D0)*(SH2+UH2+2D0*SQM4*TH)/ - & (-(SH*UH)) -C...gamma, gamma/Z interference and Z couplings to final fermion pairs - HFGG=0D0 - HFGZ=0D0 - HFZZ=0D0 - RADC4=1D0+PYALPS(SQM4)/PARU(1) - DO 320 I=1,MIN(16,MDCY(23,3)) - IDC=I+MDCY(23,2)-1 - IF(MDME(IDC,1).LT.0) GOTO 320 - IMDM=0 - IF(MDME(IDC,1).EQ.1.OR.MDME(IDC,1).EQ.2.OR.MDME(IDC,1).EQ.4) - & IMDM=1 - IF(I.LE.8) THEN - EF=KCHG(I,1)/3D0 - AF=SIGN(1D0,EF+0.1D0) - VF=AF-4D0*EF*XWV - ELSEIF(I.LE.16) THEN - EF=KCHG(I+2,1)/3D0 - AF=SIGN(1D0,EF+0.1D0) - VF=AF-4D0*EF*XWV - ENDIF - RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SQM4 - IF(4D0*RM1.LT.1D0) THEN - FCOF=1D0 - IF(I.LE.8) FCOF=3D0*RADC4 - BE34=SQRT(MAX(0D0,1D0-4D0*RM1)) - IF(IMDM.EQ.1) THEN - HFGG=HFGG+FCOF*EF**2*(1D0+2D0*RM1)*BE34 - HFGZ=HFGZ+FCOF*EF*VF*(1D0+2D0*RM1)*BE34 - HFZZ=HFZZ+FCOF*(VF**2*(1D0+2D0*RM1)+ - & AF**2*(1D0-4D0*RM1))*BE34 - ENDIF - ENDIF - 320 CONTINUE -C...Propagators: as simulated in PYOFSH and as desired - HBW4=(1D0/PARU(1))*GMMZ/((SQM4-SQMZ)**2+GMMZ**2) - MINT15=MINT(15) - MINT(15)=1 - MINT(61)=1 - CALL PYWIDT(23,SQM4,WDTP,WDTE) - MINT(15)=MINT15 - HFALEM=(PARU(108)/PARU(2))*(2D0/3D0) - HFGG=HFGG*HFALEM*VINT(111)/SQM4 - HFGZ=HFGZ*HFALEM*VINT(112)/SQM4 - HFZZ=HFZZ*HFALEM*VINT(114)/SQM4 -C...Loop over flavours; consider full gamma/Z structure - DO 340 I=MMINA,MMAXA - IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 340 - EI=KCHG(IABS(I),1)/3D0 - AI=SIGN(1D0,EI) - VI=AI-4D0*EI*XWV - FACZQ=FZQ*(EI**2*HFGG+EI*VI*HFGZ+ - & (VI**2+AI**2)*HFZZ)/HBW4 - DO 330 ISDE=1,2 - IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 330 - IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 330 - NCHN=NCHN+1 - ISIG(NCHN,ISDE)=I - ISIG(NCHN,3-ISDE)=21 - ISIG(NCHN,3)=1 - SIGH(NCHN)=FACZQ - 330 CONTINUE - 340 CONTINUE - - ELSEIF(ISUB.EQ.31) THEN -C...f + g -> f' + W+/- (q + g -> q' + W+/- only) - FACWQ=COMFAC*FACA*AS*ALEM/XW*1D0/12D0* - & (SH2+UH2+2D0*SQM4*TH)/(-(SH*UH)) -C...Propagators: as simulated in PYOFSH and as desired - HBW4=GMMW/((SQM4-SQMW)**2+GMMW**2) - CALL PYWIDT(24,SQM4,WDTP,WDTE) - GMMWC=SQRT(SQM4)*WDTP(0) - HBW4C=GMMWC/((SQM4-SQMW)**2+GMMWC**2) - FACWQ=FACWQ*HBW4C/HBW4 - DO 360 I=MMINA,MMAXA - IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 360 - IA=IABS(I) - KCHW=ISIGN(1,KCHG(IA,1)*ISIGN(1,I)) - WIDSC=(WDTE(0,1)+WDTE(0,(5-KCHW)/2)+WDTE(0,4))/WDTP(0) - DO 350 ISDE=1,2 - IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 350 - IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 350 - NCHN=NCHN+1 - ISIG(NCHN,ISDE)=I - ISIG(NCHN,3-ISDE)=21 - ISIG(NCHN,3)=1 - SIGH(NCHN)=FACWQ*VINT(180+I)*WIDSC - 350 CONTINUE - 360 CONTINUE - - ELSEIF(ISUB.EQ.35) THEN -C...f + gamma -> f + (gamma*/Z0) - IF(MINT(15).EQ.22.AND.VINT(3).LT.0D0) THEN - FZQN=SH2+UH2+2D0*(SQM4-VINT(3)**2)*TH - FZQDTM=VINT(3)**2*SQM4-SH*(UH-VINT(4)**2) - ELSEIF(MINT(16).EQ.22.AND.VINT(4).LT.0D0) THEN - FZQN=SH2+UH2+2D0*(SQM4-VINT(4)**2)*TH - FZQDTM=VINT(4)**2*SQM4-SH*(UH-VINT(3)**2) - ELSE - FZQN=SH2+UH2+2D0*SQM4*TH - FZQDTM=-(SH*UH) - ENDIF - FZQN=COMFAC*2D0*ALEM**2*MAX(0D0,FZQN) -C...gamma, gamma/Z interference and Z couplings to final fermion pairs - HFGG=0D0 - HFGZ=0D0 - HFZZ=0D0 - RADC4=1D0+PYALPS(SQM4)/PARU(1) - DO 370 I=1,MIN(16,MDCY(23,3)) - IDC=I+MDCY(23,2)-1 - IF(MDME(IDC,1).LT.0) GOTO 370 - IMDM=0 - IF(MDME(IDC,1).EQ.1.OR.MDME(IDC,1).EQ.2.OR.MDME(IDC,1).EQ.4) - & IMDM=1 - IF(I.LE.8) THEN - EF=KCHG(I,1)/3D0 - AF=SIGN(1D0,EF+0.1D0) - VF=AF-4D0*EF*XWV - ELSEIF(I.LE.16) THEN - EF=KCHG(I+2,1)/3D0 - AF=SIGN(1D0,EF+0.1D0) - VF=AF-4D0*EF*XWV - ENDIF - RM1=PMAS(IABS(KFDP(IDC,1)),1)**2/SQM4 - IF(4D0*RM1.LT.1D0) THEN - FCOF=1D0 - IF(I.LE.8) FCOF=3D0*RADC4 - BE34=SQRT(MAX(0D0,1D0-4D0*RM1)) - IF(IMDM.EQ.1) THEN - HFGG=HFGG+FCOF*EF**2*(1D0+2D0*RM1)*BE34 - HFGZ=HFGZ+FCOF*EF*VF*(1D0+2D0*RM1)*BE34 - HFZZ=HFZZ+FCOF*(VF**2*(1D0+2D0*RM1)+ - & AF**2*(1D0-4D0*RM1))*BE34 - ENDIF - ENDIF - 370 CONTINUE -C...Propagators: as simulated in PYOFSH and as desired - HBW4=(1D0/PARU(1))*GMMZ/((SQM4-SQMZ)**2+GMMZ**2) - MINT15=MINT(15) - MINT(15)=1 - MINT(61)=1 - CALL PYWIDT(23,SQM4,WDTP,WDTE) - MINT(15)=MINT15 - HFALEM=(PARU(108)/PARU(2))*(2D0/3D0) - HFGG=HFGG*HFALEM*VINT(111)/SQM4 - HFGZ=HFGZ*HFALEM*VINT(112)/SQM4 - HFZZ=HFZZ*HFALEM*VINT(114)/SQM4 -C...Loop over flavours; consider full gamma/Z structure - DO 390 I=MMINA,MMAXA - IF(I.EQ.0) GOTO 390 - EI=KCHG(IABS(I),1)/3D0 - AI=SIGN(1D0,EI) - VI=AI-4D0*EI*XWV - FACZQ=EI**2*(EI**2*HFGG+EI*VI*HFGZ+ - & (VI**2+AI**2)*HFZZ)/HBW4 - FZQD=MAX(PMAS(IABS(I),1)**2*SQM4,FZQDTM) - DO 380 ISDE=1,2 - IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,22).EQ.0) GOTO 380 - IF(ISDE.EQ.2.AND.KFAC(1,22)*KFAC(2,I).EQ.0) GOTO 380 - NCHN=NCHN+1 - ISIG(NCHN,ISDE)=I - ISIG(NCHN,3-ISDE)=22 - ISIG(NCHN,3)=1 - SIGH(NCHN)=FACZQ*FZQN/FZQD - 380 CONTINUE - 390 CONTINUE - - ELSEIF(ISUB.EQ.36) THEN -C...f + gamma -> f' + W+/- - FWQ=COMFAC*ALEM**2/(2D0*XW)* - & (SH2+UH2+2D0*SQM4*TH)/(SQPTH*SQM4-SH*UH) -C...Propagators: as simulated in PYOFSH and as desired - HBW4=GMMW/((SQM4-SQMW)**2+GMMW**2) - CALL PYWIDT(24,SQM4,WDTP,WDTE) - GMMWC=SQRT(SQM4)*WDTP(0) - HBW4C=GMMWC/((SQM4-SQMW)**2+GMMWC**2) - FWQ=FWQ*HBW4C/HBW4 - DO 410 I=MMINA,MMAXA - IF(I.EQ.0) GOTO 410 - IA=IABS(I) - EIA=ABS(KCHG(IABS(I),1)/3D0) - FACWQ=FWQ*(EIA-SH/(SH+UH))**2 - KCHW=ISIGN(1,KCHG(IA,1)*ISIGN(1,I)) - WIDSC=(WDTE(0,1)+WDTE(0,(5-KCHW)/2)+WDTE(0,4))/WDTP(0) - DO 400 ISDE=1,2 - IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,22).EQ.0) GOTO 400 - IF(ISDE.EQ.2.AND.KFAC(1,22)*KFAC(2,I).EQ.0) GOTO 400 - NCHN=NCHN+1 - ISIG(NCHN,ISDE)=I - ISIG(NCHN,3-ISDE)=22 - ISIG(NCHN,3)=1 - SIGH(NCHN)=FACWQ*VINT(180+I)*WIDSC - 400 CONTINUE - 410 CONTINUE - ENDIF - - ELSEIF(ISUB.LE.100) THEN - IF(ISUB.EQ.69) THEN -C...gamma + gamma -> W+ + W- - SQMWE=MAX(0.5D0*SQMW,SQRT(SQM3*SQM4)) - FPROP=SH2/((SQMWE-TH)*(SQMWE-UH)) - FACWW=COMFAC*6D0*ALEM**2*(1D0-FPROP*(4D0/3D0+2D0*SQMWE/SH)+ - & FPROP**2*(2D0/3D0+2D0*(SQMWE/SH)**2))*WIDS(24,1) - IF(KFAC(1,22)*KFAC(2,22).EQ.0) GOTO 420 - NCHN=NCHN+1 - ISIG(NCHN,1)=22 - ISIG(NCHN,2)=22 - ISIG(NCHN,3)=1 - SIGH(NCHN)=FACWW - 420 CONTINUE - - ELSEIF(ISUB.EQ.70) THEN -C...gamma + W+/- -> Z0 + W+/- - SQMWE=MAX(0.5D0*SQMW,SQRT(SQM3*SQM4)) - FPROP=(TH-SQMWE)**2/(-(SH*(SQMWE-UH))) - FACZW=COMFAC*6D0*ALEM**2*(XW1/XW)* - & (1D0-FPROP*(4D0/3D0+2D0*SQMWE/(TH-SQMWE))+ - & FPROP**2*(2D0/3D0+2D0*(SQMWE/(TH-SQMWE))**2))*WIDS(23,2) - DO 440 KCHW=1,-1,-2 - DO 430 ISDE=1,2 - IF(KFAC(ISDE,22)*KFAC(3-ISDE,24*KCHW).EQ.0) GOTO 430 - NCHN=NCHN+1 - ISIG(NCHN,ISDE)=22 - ISIG(NCHN,3-ISDE)=24*KCHW - ISIG(NCHN,3)=1 - SIGH(NCHN)=FACZW*WIDS(24,(5-KCHW)/2) - 430 CONTINUE - 440 CONTINUE - ENDIF - ENDIF - - RETURN - END - - - - - diff --git a/Generators/PythiaExo_i/src/PythiaModified/pysthad.F b/Generators/PythiaExo_i/src/PythiaModified/pysthad.F deleted file mode 100644 index b32299a237ebaa4d2580db351b9bb824fe5953c1..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/PythiaModified/pysthad.F +++ /dev/null @@ -1,1294 +0,0 @@ -C********************************************************************* - -C...PYSTFR -C...Fragments the string near to a stop, to form a stop-hadron, -C...by producing a new q-qbar pair. - - SUBROUTINE PYSTFR(IERR) - -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) -C INTEGER PYK,PYCHGE,PYCOMP - INTEGER PYCOMP -C...Parameter statement to help give large particle numbers -C...(left- and righthanded SUSY, excited fermions). - PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KEXCIT=4000000) -C...Commonblocks. - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) -C...Note that dimensions below grew from 4000 to 8000 in Pythia 6.2! - COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5) - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) - COMMON/PYINT1/MINT(400),VINT(400) - COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2) - SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYPARS/,/PYINT1/, - &/PYINT2/ -C...Local array. -C DIMENSION PSUM(5),PSAV(5),IJOIN(2),IPOSST(10) - DIMENSION PSUM(5),PSAV(5),IPOSST(10) - -c print*, "PYSTFR called" - -C...Default is no error. - IERR=0 - -C...Free parameter: max kinetic energy in gluino-hadron. - PMKIN=0.5D0 - -C...Free parameter: part of stop mass that does not participate -C...in weak decay. - PMINAC=0.5D0 - -C...Switch off popcorn baryon production. (Not imperative, but more -C...failed events when popcorn is allowed.) - MSTJ12=MSTJ(12) - MSTJ(12)=1 - -C...Convenient shorthand. - KFST=KSUSY1+6 - KCST=PYCOMP(KFST) - KFGL=KSUSY1+21 - -C...Loopback point for serious problems, with new try. - LOOP=0 - CALL PYEDIT(21) - CHGSAV=PYP(0,6) - 90 LOOP=LOOP+1 - IF(LOOP.GT.1) CALL PYEDIT(22) - -C...Give up when too much problems. - IF(LOOP.GT.5) THEN - WRITE(*,*) ' Problematical event skipped' - IERR=1 - RETURN - ENDIF - -C...Take copy of string system(s). - NOLD=N - NSTOP=0 - DO 120 I=1,NOLD - ICOPY=0 - IF(K(I,1).EQ.2) ICOPY=1 - IF(K(I,1).EQ.1.AND.I.GE.2) THEN - IF(K(I-1,1).EQ.12) ICOPY=1 - ENDIF - IF(ICOPY.EQ.1) THEN - N=N+1 - DO 100 J=1,5 - K(N,J)=K(I,J) - P(N,J)=P(I,J) - V(N,J)=V(I,J) - 100 CONTINUE - K(I,1)=K(I,1)+10 - K(I,4)=N - K(I,5)=N - K(N,3)=I - IF(IABS(K(I,2)).EQ.KFST) THEN - NSTOP=NSTOP+1 - IPOSST(NSTOP)=N - ENDIF - ENDIF - 120 CONTINUE - NTMP=N - -C...Loop over (up to) two stops per event. -C...Identify position of stop (randomize order of treatment). - IRNST=INT(1.5D0+PYR(0)) - DO 300 ISTOP=1,NSTOP - IST=IPOSST(1) - IF(NSTOP.EQ.2.AND.ISTOP.NE.IRNST) IST=IPOSST(2) - -C...Identify range of partons on string the stop belongs to. - IMIN=IST+1 - 140 IMIN=IMIN-1 - IF(K(IMIN-1,1).EQ.2) GOTO 140 - IMAX=IST-1 - 150 IMAX=IMAX+1 - IF(K(IMAX,1).EQ.2) GOTO 150 - IOTHER=IMAX - IF(IST.EQ.IMAX) IOTHER=IMIN - -C...Find mass of this stop-string. - DO 170 J=1,5 - PSUM(J)=0D0 - DO 160 I=IMIN,IMAX - PSUM(J)=PSUM(J)+P(I,J) - 160 CONTINUE - 170 CONTINUE - PSUM(5)=SQRT(MAX(0D0,PSUM(4)**2-PSUM(1)**2-PSUM(2)**2- - & PSUM(3)**2)) - -C... If low-mass, then consider stop-hadron already formed. - IF(PSUM(5).LE.P(IST,5)+P(IOTHER,5)+PMKIN) THEN - -C... New slot at end of record for stop-hadron - N=N+1 - DO 175 J=1,5 - K(N,J)=0 - P(N,J)=PSUM(J) - V(N,J)=V(IST,J) - 175 CONTINUE - K(N,1)=5+ISTOP - K(N,3)=IST - -C... Particle code for stop-hadron in low-mass system. - KFSTHD=0 - KFSAV=K(IOTHER,2) - IF(K(IST,2).GT.0) THEN - IF(KFSAV.LE.-1.AND.KFSAV.GE.-5) - & KFSTHD=KSUSY1+600-10*KFSAV+2 - IF(KFSAV.GE.1103.AND.KFSAV.LE.3303) KFSTHD=KSUSY1+6000+ - & (KFSAV/10)+MOD(KFSAV,10) - ELSE - IF(KFSAV.GE.1.AND.KFSAV.LE.5) KFSTHD=KSUSY1+600+10*KFSAV+2 - IF(KFSAV.LE.-1103.AND.KFSAV.GE.-3303) KFSTHD=KSUSY1+6000+ - & (IABS(KFSAV)/10)+MOD(IABS(KFSAV),10) - KFSTHD=-KFSTHD - ENDIF - IF(KFSTHD.EQ.0) THEN - WRITE(*,*) ' Failed to find R-hadron code from ', - & K(IST,2),KFSAV - IERR=1 - RETURN - ENDIF - K(N,2)=KFSTHD - -C... Mark original partons decayed. Done for low-mass system. - DO 180 I=IMIN,IMAX - K(I,1)=K(I,1)+10 - K(I,4)=N - K(I,5)=N - 180 CONTINUE - GOTO 300 - ENDIF - - - -C...Else break string by production of new qqbar pair. -C...(Also diquarks allowed, but not popcorn.) - INFLAV=ISIGN(4,K(IST,2)) - CALL PYDCYK(INFLAV,0,KFSAV,KFDUM) - KFSAV=ISIGN(MOD(IABS(KFSAV),10000),KFSAV) - MSTJ(93)=1 - PMSAV=PYMASS(KFSAV) - -C...Mass of stop-hadron. - PMSSAV=P(IST,5) - PMSHAD=P(IST,5)+PMSAV - -C...Pick momentum sharing according to fragmentation function as if bottom. - PMBSAV=PARF(105) - PARF(105)=PMSSAV - CALL PYZDIS(5,0,PMSHAD**2,ZST) - PARF(105)=PMBSAV - ZST=MAX(0.9D0,MIN(0.9999D0,ZST)) - DO 190 J=1,5 - PSAV(J)=(1D0-ZST)*P(IST,J) - P(IST,J)=ZST*P(IST,J) - 190 CONTINUE - -C...Recoiling parton from which to shuffle momentum. System momentum. - IF(IST.EQ.IMIN) IREC=IST+1 - IF(IST.EQ.IMAX) IREC=IST-1 - 200 DO 210 J=1,4 - PSUM(J)=P(IST,J)+P(IREC,J) - 210 CONTINUE - -C...Boost to rest frame of system, and align stop along +z axis. - CALL PYROBO(IST,IST,0D0,0D0,-(PSUM(1)/PSUM(4)), - & -(PSUM(2)/PSUM(4)),-(PSUM(3)/PSUM(4))) - CALL PYROBO(IREC,IREC,0D0,0D0,-(PSUM(1)/PSUM(4)), - & -(PSUM(2)/PSUM(4)),-(PSUM(3)/PSUM(4))) - PHI=PYANGL(P(IST,1),P(IST,2)) - CALL PYROBO(IST,IST,0D0,-PHI,0D0,0D0,0D0) - CALL PYROBO(IREC,IREC,0D0,-PHI,0D0,0D0,0D0) - THETA=PYANGL(P(IST,3),P(IST,1)) - CALL PYROBO(IST,IST,-THETA,0D0,0D0,0D0,0D0) - CALL PYROBO(IREC,IREC,-THETA,0D0,0D0,0D0,0D0) - -C...Calculate new kinematics in this frame, for desired stop hadron mass. - ETOT=P(IST,4)+P(IREC,4) - PMREC=P(IREC,5) - IF(K(IREC,2).NE.21.AND.IABS(K(IREC,2)).NE.KFST) THEN - MSTJ(93)=1 - PMREC=PYMASS(K(IREC,2)) - ENDIF - IF(ETOT.GT.PMSHAD+PMREC) THEN - IFAIL=0 - PZNEW=0.5D0*SQRT(MAX(0D0,(ETOT**2-PMSHAD**2-PMREC**2)**2- - & 4D0*PMSHAD**2*PMREC**2))/ETOT - P(IST,3)=PZNEW - P(IST,4)=SQRT(PZNEW**2+PMSHAD**2) - P(IST,5)=PMSHAD - P(IREC,3)=-PZNEW - P(IREC,4)=SQRT(PZNEW**2+PMREC**2) - P(IREC,5)=PMREC - -C...If not enough momentum, take what can be taken. - ELSE - IFAIL=1 - P(IST,3)=0D0 - P(IST,4)=ETOT-PMREC - P(IST,5)=P(IST,4) - P(IREC,3)=0D0 - P(IREC,4)=PMREC - P(IREC,5)=PMREC - ENDIF - -C...Bost back to lab frame. - CALL PYROBO(IST,IST,THETA,PHI,PSUM(1)/PSUM(4), - & PSUM(2)/PSUM(4),PSUM(3)/PSUM(4)) - CALL PYROBO(IREC,IREC,THETA,PHI,PSUM(1)/PSUM(4), - & PSUM(2)/PSUM(4),PSUM(3)/PSUM(4)) - -C...Loop back when not enough momentum could be shuffled. -C...(As long as there is something left.) - IF(IFAIL.EQ.1) THEN - IF(IST.EQ.IMIN.AND.IREC.LT.IMAX) THEN - IREC=IREC+1 - GOTO 200 - ELSEIF(IST.EQ.IMAX.AND.IREC.GT.IMIN) THEN - IREC=IREC-1 - GOTO 200 - ENDIF - ENDIF - -C...Particle code for stop-hadron. - KFSTHD=0 - IF(K(IST,2).GT.0) THEN - IF(KFSAV.LE.-1.AND.KFSAV.GE.-5) KFSTHD=KSUSY1+600-10*KFSAV+2 - IF(KFSAV.GE.1103.AND.KFSAV.LE.3303) KFSTHD=KSUSY1+6000+ - & (KFSAV/10)+MOD(KFSAV,10) - ELSE - IF(KFSAV.GE.1.AND.KFSAV.LE.5) KFSTHD=KSUSY1+600+10*KFSAV+2 - IF(KFSAV.LE.-1103.AND.KFSAV.GE.-3303) KFSTHD=KSUSY1+6000+ - & (IABS(KFSAV)/10)+MOD(IABS(KFSAV),10) - KFSTHD=-KFSTHD - ENDIF - IF(KFSTHD.EQ.0) THEN - WRITE(*,*) ' Failed to find R-hadron code from ', - & K(IST,2),KFSAV - IERR=1 - RETURN - ENDIF - -C...New slot at end of record for stop-hadron - DO 230 J=1,5 - K(N+1,J)=0 - P(N+1,J)=P(IST,J) - V(N+1,J)=V(IST,J) - 230 CONTINUE - K(N+1,1)=5+ISTOP - K(N+1,2)=KFSTHD - K(N+1,3)=K(IST,3) - N=N+1 - -C...Code and momentum of new string endpoint. - K(IST,2)=-KFSAV - DO 240 J=1,5 - P(IST,J)=PSAV(J) - 240 CONTINUE - -C...End of loop over two stops. - 300 CONTINUE - -C...Cleanup: remove zero-energy gluons. - NNOW=N - N=NOLD - DO 330 I=NOLD+1,NNOW - IF(K(I,2).EQ.21.AND.P(I,4).LT.1D-10) THEN - ELSEIF(I.EQ.N+1) THEN - N=N+1 - ELSE - N=N+1 - DO 320 J=1,5 - K(N,J)=K(I,J) - P(N,J)=P(I,J) - V(N,J)=V(I,J) - 320 CONTINUE - ENDIF - 330 CONTINUE - NNOW=N - -C...Check that no low-mass system of diquark-antidiquark kind, -C...or very low-mass of any kind. - KFBEG=0 - DO 332 J=1,5 - PSUM(J)=0D0 - 332 CONTINUE - DO 338 I=NOLD+1,NNOW - DO 334 J=1,4 - PSUM(J)=PSUM(J)+P(I,J) - 334 CONTINUE - IF(KFBEG.EQ.0) THEN - KFBEG=IABS(K(I,2)) - MSTJ(93)=1 - PSUM(5)=PSUM(5)+PYMASS(K(I,2)) - ELSEIF(K(I,1).EQ.1) THEN - KFEND=IABS(K(I,2)) - MSTJ(93)=1 - PSUM(5)=PSUM(5)+PYMASS(K(I,2)) - DELTA=SQRT(MAX(0D0,PSUM(4)**2-PSUM(1)**2-PSUM(2)**2- - & PSUM(3)**2))-PSUM(5) - IF(KFBEG.GT.10.AND.KFBEG.LT.10000.AND.KFEND.GT.10.AND. - & KFEND.LT.10000.AND.DELTA.LT.PARJ(32).AND.(KFBEG.NE.21 - & .AND.KFEND.NE.21)) GOTO 90 - IF(DELTA.LT.0D0) GOTO 90 - KFBEG=0 - DO 336 J=1,5 - PSUM(J)=0D0 - 336 CONTINUE - ENDIF - 338 CONTINUE - -C...Finished with stop hadronization. Restore baryon production model. - MSTJ(12)=MSTJ12 - -C...Now hadronize everything else. Some cheating to allow sensible -C...momentum shuffling. - MSTJ16=MSTJ(16) - MSTJ(16)=0 - CALL PYEXEC - MSTJ(16)=MSTJ16 - IF(MSTU(24).NE.0) THEN - WRITE(*,*) ' Event to be skipped' - IERR=1 - ENDIF -c call pylist(2) - RETURN - END - -C********************************************************************* - -C...PYSTFRRE -C...Fragments the string near to a stop, to form a stop-hadron, -C...by producing a new q-qbar pair. -C...Regge scheme applied - SUBROUTINE PYSTFRRE(IERR) - -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) -C INTEGER PYK,PYCHGE,PYCOMP - INTEGER PYCOMP -C...Parameter statement to help give large particle numbers -C...(left- and righthanded SUSY, excited fermions). - PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KEXCIT=4000000) -C...Commonblocks. - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) -C...Note that dimensions below grew from 4000 to 8000 in Pythia 6.2! - COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5) - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) - COMMON/PYINT1/MINT(400),VINT(400) - COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2) - SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYPARS/,/PYINT1/, - &/PYINT2/ -C...Local array. -C DIMENSION PSUM(5),PSAV(5),IJOIN(2),IPOSST(10) - DIMENSION PSUM(5),PSAV(5),IPOSST(10) - -c print*, "PYSTFRRE called" - -C...Default is no error. - IERR=0 - -C...Free parameter: max kinetic energy in gluino-hadron. - PMKIN=0.5D0 - -C...Free parameter: part of stop mass that does not participate -C...in weak decay. - PMINAC=0.5D0 - -C...Switch off popcorn baryon production. (Not imperative, but more -C...failed events when popcorn is allowed.) - MSTJ12=MSTJ(12) - MSTJ(12)=1 - -C...Convenient shorthand. - KFST=KSUSY1+6 - KCST=PYCOMP(KFST) - KFGL=KSUSY1+21 - -C...Loopback point for serious problems, with new try. - LOOP=0 - CALL PYEDIT(21) - CHGSAV=PYP(0,6) - 90 LOOP=LOOP+1 - IF(LOOP.GT.1) CALL PYEDIT(22) - -C...Give up when too much problems. - IF(LOOP.GT.5) THEN - WRITE(*,*) ' Problematical event skipped' - IERR=1 - RETURN - ENDIF - -C...Take copy of string system(s). - NOLD=N - NSTOP=0 - DO 120 I=1,NOLD - ICOPY=0 - IF(K(I,1).EQ.2) ICOPY=1 - IF(K(I,1).EQ.1.AND.I.GE.2) THEN - IF(K(I-1,1).EQ.12) ICOPY=1 - ENDIF - IF(ICOPY.EQ.1) THEN - N=N+1 - DO 100 J=1,5 - K(N,J)=K(I,J) - P(N,J)=P(I,J) - V(N,J)=V(I,J) - 100 CONTINUE - K(I,1)=K(I,1)+10 - K(I,4)=N - K(I,5)=N - K(N,3)=I - IF(IABS(K(I,2)).EQ.KFST) THEN - NSTOP=NSTOP+1 - IPOSST(NSTOP)=N - ENDIF - ENDIF - 120 CONTINUE - NTMP=N - -C...Loop over (up to) two stops per event. -C...Identify position of stop (randomize order of treatment). - IRNST=INT(1.5D0+PYR(0)) - DO 300 ISTOP=1,NSTOP - IST=IPOSST(1) - IF(NSTOP.EQ.2.AND.ISTOP.NE.IRNST) IST=IPOSST(2) - -C...Identify range of partons on string the stop belongs to. - IMIN=IST+1 - 140 IMIN=IMIN-1 - IF(K(IMIN-1,1).EQ.2) GOTO 140 - IMAX=IST-1 - 150 IMAX=IMAX+1 - IF(K(IMAX,1).EQ.2) GOTO 150 - IOTHER=IMAX - IF(IST.EQ.IMAX) IOTHER=IMIN - -C...Find mass of this stop-string. - DO 170 J=1,5 - PSUM(J)=0D0 - DO 160 I=IMIN,IMAX - PSUM(J)=PSUM(J)+P(I,J) - 160 CONTINUE - 170 CONTINUE - PSUM(5)=SQRT(MAX(0D0,PSUM(4)**2-PSUM(1)**2-PSUM(2)**2- - & PSUM(3)**2)) - -C... If low-mass, then consider stop-hadron already formed. - IF(PSUM(5).LE.P(IST,5)+P(IOTHER,5)+PMKIN) THEN - -C... New slot at end of record for stop-hadron - N=N+1 - DO 175 J=1,5 - K(N,J)=0 - P(N,J)=PSUM(J) - V(N,J)=V(IST,J) - 175 CONTINUE - K(N,1)=5+ISTOP - K(N,3)=IST - -C... Particle code for stop-hadron in low-mass system. - KFSTHD=0 - KFSAV=K(IOTHER,2) - if(KFSAV.eq.3.or.KFSAV.eq.5) then - KFSAV=1 - endif - if(KFSAV.eq.4) then - KFSAV=2 - endif - if(KFSAV.eq.-3.or.KFSAV.eq.-5) then - KFSAV=-1 - endif - if(KFSAV.eq.-4) then - KFSAV=-2 - endif - IF(K(IST,2).GT.0) THEN - IF(KFSAV.LE.-1.AND.KFSAV.GE.-5) - & KFSTHD=KSUSY1+600-10*KFSAV+2 - IF(KFSAV.GE.1103.AND.KFSAV.LE.3303) KFSTHD=KSUSY1+6000+ - & (KFSAV/10)+MOD(KFSAV,10) - ELSE - IF(KFSAV.GE.1.AND.KFSAV.LE.5) KFSTHD=KSUSY1+600+10*KFSAV+2 - IF(KFSAV.LE.-1103.AND.KFSAV.GE.-3303) KFSTHD=KSUSY1+6000+ - & (IABS(KFSAV)/10)+MOD(IABS(KFSAV),10) - KFSTHD=-KFSTHD - ENDIF - IF(KFSTHD.EQ.0) THEN - WRITE(*,*) ' Failed to find R-hadron code from ', - & K(IST,2),KFSAV - IERR=1 - RETURN - ENDIF - K(N,2)=KFSTHD - -C... Mark original partons decayed. Done for low-mass system. - DO 180 I=IMIN,IMAX - K(I,1)=K(I,1)+10 - K(I,4)=N - K(I,5)=N - 180 CONTINUE - GOTO 300 - ENDIF - -C...Else break string by production of new qqbar pair. -C...(Also diquarks allowed, but not popcorn.) - INFLAV=ISIGN(4,K(IST,2)) - CALL PYDCYK(INFLAV,0,KFSAV,KFDUM) - KFSAV=ISIGN(MOD(IABS(KFSAV),10000),KFSAV) - - if(KFSAV.eq.3.or.KFSAV.eq.5) then - KFSAV=1 - endif - if(KFSAV.eq.4) then - KFSAV=2 - endif - if(KFSAV.eq.-3.or.KFSAV.eq.-5) then - KFSAV=-1 - endif - if(KFSAV.eq.-4) then - KFSAV=-2 - endif - - MSTJ(93)=1 - PMSAV=PYMASS(KFSAV) - -C...Mass of stop-hadron. - PMSSAV=P(IST,5) - PMSHAD=P(IST,5)+PMSAV - -C...Pick momentum sharing according to fragmentation function as if bottom. - PMBSAV=PARF(105) - PARF(105)=PMSSAV - CALL PYZDIS(5,0,PMSHAD**2,ZST) - PARF(105)=PMBSAV - ZST=MAX(0.9D0,MIN(0.9999D0,ZST)) - DO 190 J=1,5 - PSAV(J)=(1D0-ZST)*P(IST,J) - P(IST,J)=ZST*P(IST,J) - 190 CONTINUE - -C...Recoiling parton from which to shuffle momentum. System momentum. - IF(IST.EQ.IMIN) IREC=IST+1 - IF(IST.EQ.IMAX) IREC=IST-1 - 200 DO 210 J=1,4 - PSUM(J)=P(IST,J)+P(IREC,J) - 210 CONTINUE - -C...Boost to rest frame of system, and align stop along +z axis. - CALL PYROBO(IST,IST,0D0,0D0,-(PSUM(1)/PSUM(4)), - & -(PSUM(2)/PSUM(4)),-(PSUM(3)/PSUM(4))) - CALL PYROBO(IREC,IREC,0D0,0D0,-(PSUM(1)/PSUM(4)), - & -(PSUM(2)/PSUM(4)),-(PSUM(3)/PSUM(4))) - PHI=PYANGL(P(IST,1),P(IST,2)) - CALL PYROBO(IST,IST,0D0,-PHI,0D0,0D0,0D0) - CALL PYROBO(IREC,IREC,0D0,-PHI,0D0,0D0,0D0) - THETA=PYANGL(P(IST,3),P(IST,1)) - CALL PYROBO(IST,IST,-THETA,0D0,0D0,0D0,0D0) - CALL PYROBO(IREC,IREC,-THETA,0D0,0D0,0D0,0D0) - -C...Calculate new kinematics in this frame, for desired stop hadron mass. - ETOT=P(IST,4)+P(IREC,4) - PMREC=P(IREC,5) - IF(K(IREC,2).NE.21.AND.IABS(K(IREC,2)).NE.KFST) THEN - MSTJ(93)=1 - PMREC=PYMASS(K(IREC,2)) - ENDIF - IF(ETOT.GT.PMSHAD+PMREC) THEN - IFAIL=0 - PZNEW=0.5D0*SQRT(MAX(0D0,(ETOT**2-PMSHAD**2-PMREC**2)**2- - & 4D0*PMSHAD**2*PMREC**2))/ETOT - P(IST,3)=PZNEW - P(IST,4)=SQRT(PZNEW**2+PMSHAD**2) - P(IST,5)=PMSHAD - P(IREC,3)=-PZNEW - P(IREC,4)=SQRT(PZNEW**2+PMREC**2) - P(IREC,5)=PMREC - -C...If not enough momentum, take what can be taken. - ELSE - IFAIL=1 - P(IST,3)=0D0 - P(IST,4)=ETOT-PMREC - P(IST,5)=P(IST,4) - P(IREC,3)=0D0 - P(IREC,4)=PMREC - P(IREC,5)=PMREC - ENDIF - -C...Bost back to lab frame. - CALL PYROBO(IST,IST,THETA,PHI,PSUM(1)/PSUM(4), - & PSUM(2)/PSUM(4),PSUM(3)/PSUM(4)) - CALL PYROBO(IREC,IREC,THETA,PHI,PSUM(1)/PSUM(4), - & PSUM(2)/PSUM(4),PSUM(3)/PSUM(4)) - -C...Loop back when not enough momentum could be shuffled. -C...(As long as there is something left.) - IF(IFAIL.EQ.1) THEN - IF(IST.EQ.IMIN.AND.IREC.LT.IMAX) THEN - IREC=IREC+1 - GOTO 200 - ELSEIF(IST.EQ.IMAX.AND.IREC.GT.IMIN) THEN - IREC=IREC-1 - GOTO 200 - ENDIF - ENDIF - -C...Particle code for stop-hadron. - KFSTHD=0 - IF(K(IST,2).GT.0) THEN - IF(KFSAV.LE.-1.AND.KFSAV.GE.-5) KFSTHD=KSUSY1+600-10*KFSAV+2 - IF(KFSAV.GE.1103.AND.KFSAV.LE.3303) then - if (KFSAV/100.ne.21) goto 90 - KFSAV=2101 - KFSTHD=KSUSY1+6000+ - & (KFSAV/10)+MOD(KFSAV,10) - endif - ELSE - IF(KFSAV.GE.1.AND.KFSAV.LE.5) KFSTHD=KSUSY1+600+10*KFSAV+2 - IF(KFSAV.LE.-1103.AND.KFSAV.GE.-3303) then - if (-KFSAV/100.ne.21) goto 90 - KFSAV=-2101 - KFSTHD=KSUSY1+6000+ - & (IABS(KFSAV)/10)+MOD(IABS(KFSAV),10) - endif - KFSTHD=-KFSTHD - ENDIF - IF(KFSTHD.EQ.0) THEN - WRITE(*,*) ' Failed to find R-hadron code from ', - & K(IST,2),KFSAV - IERR=1 - RETURN - ENDIF - -C...New slot at end of record for stop-hadron - DO 230 J=1,5 - K(N+1,J)=0 - P(N+1,J)=P(IST,J) - V(N+1,J)=V(IST,J) - 230 CONTINUE - K(N+1,1)=5+ISTOP - K(N+1,2)=KFSTHD - K(N+1,3)=K(IST,3) - N=N+1 - -C...Code and momentum of new string endpoint. - K(IST,2)=-KFSAV - DO 240 J=1,5 - P(IST,J)=PSAV(J) - 240 CONTINUE - -C...End of loop over two stops. - 300 CONTINUE - -C...Cleanup: remove zero-energy gluons. - NNOW=N - N=NOLD - DO 330 I=NOLD+1,NNOW - IF(K(I,2).EQ.21.AND.P(I,4).LT.1D-10) THEN - ELSEIF(I.EQ.N+1) THEN - N=N+1 - ELSE - N=N+1 - DO 320 J=1,5 - K(N,J)=K(I,J) - P(N,J)=P(I,J) - V(N,J)=V(I,J) - 320 CONTINUE - ENDIF - 330 CONTINUE - NNOW=N - -C...Check that no low-mass system of diquark-antidiquark kind, -C...or very low-mass of any kind. - KFBEG=0 - DO 332 J=1,5 - PSUM(J)=0D0 - 332 CONTINUE - DO 338 I=NOLD+1,NNOW - DO 334 J=1,4 - PSUM(J)=PSUM(J)+P(I,J) - 334 CONTINUE - IF(KFBEG.EQ.0) THEN - KFBEG=IABS(K(I,2)) - MSTJ(93)=1 - PSUM(5)=PSUM(5)+PYMASS(K(I,2)) - ELSEIF(K(I,1).EQ.1) THEN - KFEND=IABS(K(I,2)) - MSTJ(93)=1 - PSUM(5)=PSUM(5)+PYMASS(K(I,2)) - DELTA=SQRT(MAX(0D0,PSUM(4)**2-PSUM(1)**2-PSUM(2)**2- - & PSUM(3)**2))-PSUM(5) - IF(KFBEG.GT.10.AND.KFBEG.LT.10000.AND.KFEND.GT.10.AND. - & KFEND.LT.10000.AND.DELTA.LT.PARJ(32).AND.(KFBEG.NE.21 - & .AND.KFEND.NE.21)) GOTO 90 - IF(DELTA.LT.0D0) GOTO 90 - KFBEG=0 - DO 336 J=1,5 - PSUM(J)=0D0 - 336 CONTINUE - ENDIF - 338 CONTINUE - -C...Finished with stop hadronization. Restore baryon production model. - MSTJ(12)=MSTJ12 - -C...Now hadronize everything else. Some cheating to allow sensible -C...momentum shuffling. - MSTJ16=MSTJ(16) - MSTJ(16)=0 - CALL PYEXEC - MSTJ(16)=MSTJ16 - IF(MSTU(24).NE.0) THEN - WRITE(*,*) ' Event to be skipped' - IERR=1 - ENDIF -c call pylist(2) - RETURN - END -C********************************************************************* - -C...PYSBFRRE -C...Fragments the string near to a sbottom, to form a sbottom-hadron, -C...by producing a new q-qbar pair. -C...Regge scheme applied - SUBROUTINE PYSBFRRE(IERR) - -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) -C INTEGER PYK,PYCHGE,PYCOMP - INTEGER PYCOMP -C...Parameter statement to help give large particle numbers -C...(left- and righthanded SUSY, excited fermions). - PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KEXCIT=4000000) -C...Commonblocks. - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) -C...Note that dimensions below grew from 4000 to 8000 in Pythia 6.2! - COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5) - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) - COMMON/PYINT1/MINT(400),VINT(400) - COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2) - SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYPARS/,/PYINT1/, - &/PYINT2/ -C...Local array. -C DIMENSION PSUM(5),PSAV(5),IJOIN(2),IPOSST(10) - DIMENSION PSUM(5),PSAV(5),IPOSST(10) - -c print*, "PYSBFR called" - -C...Default is no error. - IERR=0 - -C...Free parameter: max kinetic energy in gluino-hadron. - PMKIN=0.5D0 - -C...Free parameter: part of sbottom mass that does not participate -C...in weak decay. - PMINAC=0.5D0 - -C...Switch off popcorn baryon production. (Not imperative, but more -C...failed events when popcorn is allowed.) - MSTJ12=MSTJ(12) - MSTJ(12)=1 - -C...Convenient shorthand. - KFST=KSUSY1+6 - KCST=PYCOMP(KFST) - KFGL=KSUSY1+21 - -C...Loopback point for serious problems, with new try. - LOOP=0 - CALL PYEDIT(21) - CHGSAV=PYP(0,6) - 90 LOOP=LOOP+1 - IF(LOOP.GT.1) CALL PYEDIT(22) - -C...Give up when too much problems. - IF(LOOP.GT.5) THEN - WRITE(*,*) ' Problematical event skipped' - IERR=1 - RETURN - ENDIF - -C...Take copy of string system(s). - NOLD=N - NSTOP=0 - DO 120 I=1,NOLD - ICOPY=0 - IF(K(I,1).EQ.2) ICOPY=1 - IF(K(I,1).EQ.1.AND.I.GE.2) THEN - IF(K(I-1,1).EQ.12) ICOPY=1 - ENDIF - IF(ICOPY.EQ.1) THEN - N=N+1 - DO 100 J=1,5 - K(N,J)=K(I,J) - P(N,J)=P(I,J) - V(N,J)=V(I,J) - 100 CONTINUE - K(I,1)=K(I,1)+10 - K(I,4)=N - K(I,5)=N - K(N,3)=I - IF(IABS(K(I,2)).EQ.KFST) THEN - NSTOP=NSTOP+1 - IPOSST(NSTOP)=N - ENDIF - ENDIF - 120 CONTINUE - NTMP=N - -C...Loop over (up to) two sbottoms per event. -C...Identify position of sbottom (randomize order of treatment). - IRNST=INT(1.5D0+PYR(0)) - DO 300 ISTOP=1,NSTOP - IST=IPOSST(1) - IF(NSTOP.EQ.2.AND.ISTOP.NE.IRNST) IST=IPOSST(2) - -C...Identify range of partons on string the sbottom belongs to. - IMIN=IST+1 - 140 IMIN=IMIN-1 - IF(K(IMIN-1,1).EQ.2) GOTO 140 - IMAX=IST-1 - 150 IMAX=IMAX+1 - IF(K(IMAX,1).EQ.2) GOTO 150 - IOTHER=IMAX - IF(IST.EQ.IMAX) IOTHER=IMIN - -C...Find mass of this sbottom-string. - DO 170 J=1,5 - PSUM(J)=0D0 - DO 160 I=IMIN,IMAX - PSUM(J)=PSUM(J)+P(I,J) - 160 CONTINUE - 170 CONTINUE - PSUM(5)=SQRT(MAX(0D0,PSUM(4)**2-PSUM(1)**2-PSUM(2)**2- - & PSUM(3)**2)) - -C... If low-mass, then consider sbottom-hadron already formed. - IF(PSUM(5).LE.P(IST,5)+P(IOTHER,5)+PMKIN) THEN - -C... New slot at end of record for sbottom-hadron - N=N+1 - DO 175 J=1,5 - K(N,J)=0 - P(N,J)=PSUM(J) - V(N,J)=V(IST,J) - 175 CONTINUE - K(N,1)=5+ISTOP - K(N,3)=IST - -C... Particle code for sbottom-hadron in low-mass system. - KFSTHD=0 - KFSAV=K(IOTHER,2) - if(KFSAV.eq.3.or.KFSAV.eq.5) then - KFSAV=1 - endif - if(KFSAV.eq.4) then - KFSAV=2 - endif - if(KFSAV.eq.-3.or.KFSAV.eq.-5) then - KFSAV=-1 - endif - if(KFSAV.eq.-4) then - KFSAV=-2 - endif - IF(K(IST,2).GT.0) THEN - IF(KFSAV.LE.-1.AND.KFSAV.GE.-5) - & KFSTHD=KSUSY1+500-10*KFSAV+2 - IF(KFSAV.GE.1103.AND.KFSAV.LE.3303) KFSTHD=KSUSY1+5000+ - & (KFSAV/10)+MOD(KFSAV,10) - ELSE - IF(KFSAV.GE.1.AND.KFSAV.LE.5) KFSTHD=KSUSY1+500+10*KFSAV+2 - IF(KFSAV.LE.-1103.AND.KFSAV.GE.-3303) KFSTHD=KSUSY1+5000+ - & (IABS(KFSAV)/10)+MOD(IABS(KFSAV),10) - KFSTHD=-KFSTHD - ENDIF - IF(KFSTHD.EQ.0) THEN - WRITE(*,*) ' Failed to find R-hadron code from ', - & K(IST,2),KFSAV - IERR=1 - RETURN - ENDIF - K(N,2)=KFSTHD - -C... Mark original partons decayed. Done for low-mass system. - DO 180 I=IMIN,IMAX - K(I,1)=K(I,1)+10 - K(I,4)=N - K(I,5)=N - 180 CONTINUE - GOTO 300 - ENDIF - - - -C...Else break string by production of new qqbar pair. -C...(Also diquarks allowed, but not popcorn.) - INFLAV=ISIGN(4,K(IST,2)) - CALL PYDCYK(INFLAV,0,KFSAV,KFDUM) - KFSAV=ISIGN(MOD(IABS(KFSAV),10000),KFSAV) - - if(KFSAV.eq.3.or.KFSAV.eq.5) then - KFSAV=1 - endif - if(KFSAV.eq.4) then - KFSAV=2 - endif - if(KFSAV.eq.-3.or.KFSAV.eq.-5) then - KFSAV=-1 - endif - if(KFSAV.eq.-4) then - KFSAV=-2 - endif - - MSTJ(93)=1 - PMSAV=PYMASS(KFSAV) - -C...Mass of sbottom-hadron. - PMSSAV=P(IST,5) - PMSHAD=P(IST,5)+PMSAV - -C...Pick momentum sharing according to fragmentation function as if bottom. - PMBSAV=PARF(105) - PARF(105)=PMSSAV - CALL PYZDIS(5,0,PMSHAD**2,ZST) - PARF(105)=PMBSAV - ZST=MAX(0.9D0,MIN(0.9999D0,ZST)) - DO 190 J=1,5 - PSAV(J)=(1D0-ZST)*P(IST,J) - P(IST,J)=ZST*P(IST,J) - 190 CONTINUE - -C...Recoiling parton from which to shuffle momentum. System momentum. - IF(IST.EQ.IMIN) IREC=IST+1 - IF(IST.EQ.IMAX) IREC=IST-1 - 200 DO 210 J=1,4 - PSUM(J)=P(IST,J)+P(IREC,J) - 210 CONTINUE - -C...Boost to rest frame of system, and align sbottom along +z axis. - CALL PYROBO(IST,IST,0D0,0D0,-(PSUM(1)/PSUM(4)), - & -(PSUM(2)/PSUM(4)),-(PSUM(3)/PSUM(4))) - CALL PYROBO(IREC,IREC,0D0,0D0,-(PSUM(1)/PSUM(4)), - & -(PSUM(2)/PSUM(4)),-(PSUM(3)/PSUM(4))) - PHI=PYANGL(P(IST,1),P(IST,2)) - CALL PYROBO(IST,IST,0D0,-PHI,0D0,0D0,0D0) - CALL PYROBO(IREC,IREC,0D0,-PHI,0D0,0D0,0D0) - THETA=PYANGL(P(IST,3),P(IST,1)) - CALL PYROBO(IST,IST,-THETA,0D0,0D0,0D0,0D0) - CALL PYROBO(IREC,IREC,-THETA,0D0,0D0,0D0,0D0) - -C...Calculate new kinematics in this frame, for desired sbottom hadron mass. - ETOT=P(IST,4)+P(IREC,4) - PMREC=P(IREC,5) - IF(K(IREC,2).NE.21.AND.IABS(K(IREC,2)).NE.KFST) THEN - MSTJ(93)=1 - PMREC=PYMASS(K(IREC,2)) - ENDIF - IF(ETOT.GT.PMSHAD+PMREC) THEN - IFAIL=0 - PZNEW=0.5D0*SQRT(MAX(0D0,(ETOT**2-PMSHAD**2-PMREC**2)**2- - & 4D0*PMSHAD**2*PMREC**2))/ETOT - P(IST,3)=PZNEW - P(IST,4)=SQRT(PZNEW**2+PMSHAD**2) - P(IST,5)=PMSHAD - P(IREC,3)=-PZNEW - P(IREC,4)=SQRT(PZNEW**2+PMREC**2) - P(IREC,5)=PMREC - -C...If not enough momentum, take what can be taken. - ELSE - IFAIL=1 - P(IST,3)=0D0 - P(IST,4)=ETOT-PMREC - P(IST,5)=P(IST,4) - P(IREC,3)=0D0 - P(IREC,4)=PMREC - P(IREC,5)=PMREC - ENDIF - -C...Bost back to lab frame. - CALL PYROBO(IST,IST,THETA,PHI,PSUM(1)/PSUM(4), - & PSUM(2)/PSUM(4),PSUM(3)/PSUM(4)) - CALL PYROBO(IREC,IREC,THETA,PHI,PSUM(1)/PSUM(4), - & PSUM(2)/PSUM(4),PSUM(3)/PSUM(4)) - -C...Loop back when not enough momentum could be shuffled. -C...(As long as there is something left.) - IF(IFAIL.EQ.1) THEN - IF(IST.EQ.IMIN.AND.IREC.LT.IMAX) THEN - IREC=IREC+1 - GOTO 200 - ELSEIF(IST.EQ.IMAX.AND.IREC.GT.IMIN) THEN - IREC=IREC-1 - GOTO 200 - ENDIF - ENDIF - -C...Particle code for sbottom-hadron. - KFSTHD=0 - IF(K(IST,2).GT.0) THEN - IF(KFSAV.LE.-1.AND.KFSAV.GE.-5) KFSTHD=KSUSY1+500-10*KFSAV+2 - IF(KFSAV.GE.1103.AND.KFSAV.LE.3303) then - if (KFSAV/100.ne.21) goto 90 - KFSAV=2101 - KFSTHD=KSUSY1+5000+ - & (KFSAV/10)+MOD(KFSAV,10) - endif - ELSE - IF(KFSAV.GE.1.AND.KFSAV.LE.5) KFSTHD=KSUSY1+500+10*KFSAV+2 - IF(KFSAV.LE.-1103.AND.KFSAV.GE.-3303) then - if (-KFSAV/100.ne.21) goto 90 - KFSAV=-2101 - KFSTHD=KSUSY1+5000+ - & (IABS(KFSAV)/10)+MOD(IABS(KFSAV),10) - endif - KFSTHD=-KFSTHD - ENDIF - IF(KFSTHD.EQ.0) THEN - WRITE(*,*) ' Failed to find R-hadron code from ', - & K(IST,2),KFSAV - IERR=1 - RETURN - ENDIF - -C...New slot at end of record for sbottom-hadron - DO 230 J=1,5 - K(N+1,J)=0 - P(N+1,J)=P(IST,J) - V(N+1,J)=V(IST,J) - 230 CONTINUE - K(N+1,1)=5+ISBOTTOM - K(N+1,2)=KFSTHD - K(N+1,3)=K(IST,3) - N=N+1 - -C...Code and momentum of new string endpoint. - K(IST,2)=-KFSAV - DO 240 J=1,5 - P(IST,J)=PSAV(J) - 240 CONTINUE - -C...End of loop over two sbottoms. - 300 CONTINUE - -C...Cleanup: remove zero-energy gluons. - NNOW=N - N=NOLD - DO 330 I=NOLD+1,NNOW - IF(K(I,2).EQ.21.AND.P(I,4).LT.1D-10) THEN - ELSEIF(I.EQ.N+1) THEN - N=N+1 - ELSE - N=N+1 - DO 320 J=1,5 - K(N,J)=K(I,J) - P(N,J)=P(I,J) - V(N,J)=V(I,J) - 320 CONTINUE - ENDIF - 330 CONTINUE - NNOW=N - -C...Check that no low-mass system of diquark-antidiquark kind, -C...or very low-mass of any kind. - KFBEG=0 - DO 332 J=1,5 - PSUM(J)=0D0 - 332 CONTINUE - DO 338 I=NOLD+1,NNOW - DO 334 J=1,4 - PSUM(J)=PSUM(J)+P(I,J) - 334 CONTINUE - IF(KFBEG.EQ.0) THEN - KFBEG=IABS(K(I,2)) - MSTJ(93)=1 - PSUM(5)=PSUM(5)+PYMASS(K(I,2)) - ELSEIF(K(I,1).EQ.1) THEN - KFEND=IABS(K(I,2)) - MSTJ(93)=1 - PSUM(5)=PSUM(5)+PYMASS(K(I,2)) - DELTA=SQRT(MAX(0D0,PSUM(4)**2-PSUM(1)**2-PSUM(2)**2- - & PSUM(3)**2))-PSUM(5) - IF(KFBEG.GT.10.AND.KFBEG.LT.10000.AND.KFEND.GT.10.AND. - & KFEND.LT.10000.AND.DELTA.LT.PARJ(32).AND.(KFBEG.NE.21 - & .AND.KFEND.NE.21)) GOTO 90 - IF(DELTA.LT.0D0) GOTO 90 - KFBEG=0 - DO 336 J=1,5 - PSUM(J)=0D0 - 336 CONTINUE - ENDIF - 338 CONTINUE - -C...Finished with sbottom hadronization. Restore baryon production model. - MSTJ(12)=MSTJ12 - -C...Now hadronize everything else. Some cheating to allow sensible -C...momentum shuffling. - MSTJ16=MSTJ(16) - MSTJ(16)=0 - CALL PYEXEC - MSTJ(16)=MSTJ16 - IF(MSTU(24).NE.0) THEN - WRITE(*,*) ' Event to be skipped' - IERR=1 - ENDIF -c call pylist(2) - RETURN - END - - -C********************************************************************* - -C...PYSQDC -C...Decays the squark inside a squark-hadron. - - SUBROUTINE PYSQDC(KSQUARK) - -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - INTEGER PYK,PYCHGE,PYCOMP -C...Parameter statement to help give large particle numbers -C...(left- and righthanded SUSY, excited fermions). - PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KEXCIT=4000000) -C...Commonblocks. - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) -C...Note that dimensions below grew from 4000 to 8000 in Pythia 6.2! - COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5) - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) - COMMON/PYINT1/MINT(400),VINT(400) - COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2) -C...Width properties. - COMMON/PYINT4/MWID(500),WIDS(500,5) - SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYPARS/,/PYINT1/, - &/PYINT2/ - integer indices(2) -C...Optional offset of constituent quark/diquark mass, -C...representing gluon cloud around squark not part of the decay. - PMOFF = 0.2D0 - MWID(PYCOMP(KSQUARK))=2 - -C...The probability that it has spin 1. -C...(Except for identical flavours, where spin 1 is only possibility.) -C...(Recall that all R-baryon codes were given as if spin 1, sloppily.) - PROBS1=0.5D0 - - - print*,'In PYSQDC' - -C...Loop through to find R-hadrons. - DO 150 I=1,N -C...If only one of the R-hadrons should decay inside the detector, -C...you could here pick at random whether to allow the one with -C...K(I,1) = 6 or the one with =7. (Where the random choice of course -C...could depend on the position of an imagined displaced vertex.) -c IF(IABS(K(I,2)).gt.100000) THEN -c print*,"RMA: ",K(I,1),K(I,2) -c endif - IF(K(I,1).EQ.5.or.K(I,1).EQ.6.OR.K(I,1).EQ.7) THEN - -C...Begin resolve R-hadron flavour content to ~q + qbar or ~q + qq. -c print*,'RMA: PDG: ',K(I,2) - KFRH=(IABS(K(I,2))-KSUSY1)/10 - KSGN=K(I,2)/IABS(K(I,2)); -c print*, 'RMA: Stripped PDG: ',KFRH -c print*, 'RMA: Sign: ',KSGN - -C...Squark meson : Strip quark - IF(KFRH.LT.100) THEN - KFQ=MOD(KFRH,10)*(-1)*KSGN -c print*, 'RMA: QUARK: ',KFQ - -C...Squarkbaryon : Strip diquark - ELSEIF(KFRH.LT.1000) THEN - KFQ=100*MOD(KFRH,100)+3 - KFB=MOD(KFRH/10,10) - KFC=MOD(KFRH,10) - if(KFB.NE.KFC.AND.PROBS1.LT.PYR(0)) KFQ=KFQ-2 - KFQ=KSGN*KFQ -c print*, 'RMA: DIQUARK: ',KFQ - endif - - -C...Subdivide R-hadron into squark + 1 light (di)quark in new slots. - DO 120 I1=N+1,N+2 - K(I1,1)=3 - K(I1,3)=I - K(I1,4)=0 - K(I1,5)=0 - DO 110 J=1,5 - V(I1,J)=0D0 - 110 CONTINUE - 120 CONTINUE - -C...Store new flavours. - K(N+1,2)=KSGN*(KSQUARK) -c K(N+1,2)=KSGN*6 - K(N+2,2)=KFQ -c print*, 'RMA: PDG1: ',K(N+1,2) -c print*, 'RMA: PDG2: ',K(N+2,2) - - - -c call pylist(3) -C...Set up colour flow. Konverter til colur singlet. Find dokumentation -C Squark -c K(N+1,4)=MSTU(5)*(N+2) -c K(N+1,5)=MSTU(5)*(N+2) - -C Quark/Di-quark -c K(N+2,4)=MSTU(5)*(N+1) -c K(N+2,5)=MSTU(5)*(N+1) - -c Saving the indices for PYJOIN later - indices(1)=N+1 - indices(2)=N+2 - - -C...Define effective quark/diquark masses. - MSTJ(93)=1 - PM=PYMASS(KFQ)+PMOFF -c print*,'RMA: PM: ',PM -C...Share gluino"hadron" momentum with two light quarks. - FAC=PM/P(I,5) - - DO 130 J=1,5 - P(N+1,J)=(1D0-FAC)*P(I,J) - P(N+2,J)=FAC*P(I,J) - 130 CONTINUE - -C...If you want a displaced vertex, you could also write that info -C...into the V array, but you have to calculate that vertex yourself. - -C...Mark R-hadron decayed and update number counter. - K(I,1)=K(I,1)+10 - K(I,4)=N+1 - K(I,5)=N+2 - N=N+2 - call pyjoin(2,indices) - -cJack call pylist(2) -C...Let squark decay now. -c print*,'RMA: Trying to decay ',N-1 - CALL PYRESD(N-1) -c call pylist(2) -C...End of loop over two R-hadrons. - ENDIF - 150 CONTINUE - -C...And then the decay products can fragment, etc. - CALL PYEXEC - - RETURN - END diff --git a/Generators/PythiaExo_i/src/PythiaModified/pytaud.F b/Generators/PythiaExo_i/src/PythiaModified/pytaud.F deleted file mode 100644 index 0b440fa10b463af303584e9e02ab0472e67e953d..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/PythiaModified/pytaud.F +++ /dev/null @@ -1,213 +0,0 @@ - SUBROUTINE PYTAUD(ITAU,IORIG,KFORIG,NDECAY) - -C... created: 28.04.2009 by vadym.zhuravlov@cern.ch -C decay of tau to 3 muons, uniform distribution -C in phase space (mandelstam s,t,u) - -C... Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - INTEGER PYCOMP -C... Commonblocks. - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) - SAVE /PYJETS/,/PYDAT1/ - - LOGICAL PASSED - INTEGER COUNTER - DOUBLE PRECISION A(2) - DOUBLE PRECISION E(3), PMU(3), PX(3), PY(3), PZ(3) - DIMENSION DP(4) - - - TAUMASS = PMAS(PYCOMP(15),1) - EMUMASS = PMAS(PYCOMP(13),1) - -C PRINT *, "TAUMASS = ", TAUMASS, "MUMASS = ", EMUMASS - -C fill NDECAY, K, mass, px and py - NDECAY = 3 - DO I=N+1, N+NDECAY - P(I, 5) = EMUMASS - ENDDO - - IF (K(ITAU, 2).GT. 0) THEN - K(N+1, 2) = 13 - K(N+2, 2) = 13 - K(N+3, 2) = -13 - ELSE - K(N+1, 2) = -13 - K(N+2, 2) = -13 - K(N+3, 2) = 13 - ENDIF - - TAUMASS2 = TAUMASS*TAUMASS - EMUMASS2 = EMUMASS*EMUMASS - -C generate two random numbers - COUNTER = 0 - PASSED = .FALSE. - DO WHILE (.NOT. PASSED) - A(1) = PYR(0) - A(2) = PYR(0) -C sort numbers - IF (A(1)>A(2)) THEN - TMP = A(1) - A(1) = A(2) - A(2) = TMP - ENDIF - -C PRINT *, 'GENERATED NUMBERS: ', A(1), A(2) - -C calculated Mandelstam variables - S = (3*EMUMASS2+TAUMASS2)*A(1) - T = (3*EMUMASS2+TAUMASS2)*(A(2)-A(1)) - U = (3*EMUMASS2+TAUMASS2)*(1-A(2)) - -C PRINT *, 'MANDELSTAM VARIABLES: ', S, T, U - -C calculate muon energy - E(1) = (TAUMASS2+EMUMASS2-S)/(2*TAUMASS) - E(2) = (TAUMASS2+EMUMASS2-T)/(2*TAUMASS) - E(3) = (TAUMASS2+EMUMASS2-U)/(2*TAUMASS) - -C PRINT *, 'TOTAL MUON ENERGY BEFORE BUST: ', E(1)+E(2)+E(3) - - IF (E(1).LT.EMUMASS.OR.E(2).LT.EMUMASS.OR.E(3).LT.EMUMASS) THEN - PASSED = .FALSE. - ELSE - PASSED = .TRUE. - ENDIF - - DO I=1,3 - PMU(I)=SQRT(E(I)**2-EMUMASS2) - ENDDO - -C PRINT *, "MUON MOMENTA: ", PMU - - IF (PASSED - & .AND.PMU(1)+PMU(2).GT.PMU(3) - & .AND.PMU(3)+PMU(1).GT.PMU(2) - & .AND.PMU(2)+PMU(3).GT.PMU(1)) THEN - PASSED = .TRUE. - ELSE - PASSED = .FALSE. - ENDIF - - COUNTER = COUNTER+1 - IF (COUNTER.GT.1000) THEN - PRINT *, "ERROR IN PYTAUD: FAILED TO GENERATE MUON MOMENTA" - RETURN - ENDIF - ENDDO - - PX(1) = - PMU(1) - PX(2) = (PMU(1)**2+PMU(2)**2-PMU(3)**2)/(2*PMU(1)) - PX(3) = (PMU(1)**2-PMU(2)**2+PMU(3)**2)/(2*PMU(1)) - - PY(1) = 0.0 - PY(2) = -SQRT(PMU(2)**2-PX(2)**2) - PY(3) = SQRT(PMU(3)**2-PX(3)**2) - - PZ(1) =0.0 - PZ(2) =0.0 - PZ(3) =0.0 - -C PRINT *, "BEFORE rotation 3MU INV.MASS = ", -C & SQRT((E(1)+E(2)+E(3))**2 -C & - (PX(1)+PX(2)+PX(3))**2 -C & - (PY(1)+PY(2)+PY(3))**2 -C & - (PZ(1)+PZ(2)+PZ(3))**2) - - -C PRINT *, "Before rotation in decay plane: sum px = ", -C & PX(1)+PX(2)+PX(3), -C & " sum py = ", PX(1)+PX(2)+PX(3), -C & " inv. masses: " -C DO I=1,3 -C PRINT *, SQRT(E(I)**2-PX(I)**2-PY(I)**2) -C ENDDO - - CALL ROTATE(PX, PY) - -C PRINT *, "After rotation in decay plane: sum px = ", -C & PX(1)+PX(2)+PX(3), -C & "sum py = ", PX(1)+PX(2)+PX(3), -C & "inv. masses: " -C DO I=1,3 -C PRINT *, SQRT(E(I)**2-PX(I)**2-PY(I)**2) -C ENDDO - -C PRINT *, "BEFORE BOOST 3MU INV.MASS = ", -C & SQRT((E(1)+E(2)+E(3))**2 -C & - (PX(1)+PX(2)+PX(3))**2 -C & - (PY(1)+PY(2)+PY(3))**2 -C & - (PZ(1)+PZ(2)+PZ(3))**2) - -C boost to tau rest frame - BEX = P(ITAU,1)/P(ITAU,4) - BEY = P(ITAU,2)/P(ITAU,4) - BEZ = P(ITAU,3)/P(ITAU,4) - - IF(BEX**2+BEY**2+BEZ**2.GT.1D-20) THEN - DBX=BEX - DBY=BEY - DBZ=BEZ - DB=SQRT(DBX**2+DBY**2+DBZ**2) - DGA=1D0/SQRT(1D0-DB**2) -C LOOP OVER 3 MUONS - DO 160 I=1,3 - DP(1) = PX(I) - DP(2) = PY(I) - DP(3) = 0.0 - DP(4) = E(I) - - DBP=DBX*DP(1)+DBY*DP(2)+DBZ*DP(3) - DGABP=DGA*(DGA*DBP/(1D0+DGA)+DP(4)) - PX(I)=DP(1)+DGABP*DBX - PY(I)=DP(2)+DGABP*DBY - PZ(I)=DP(3)+DGABP*DBZ - E(I)=DGA*(DP(4)+DBP) - 160 CONTINUE - ENDIF -C STORE MOMENTA -C PRINT *, " PX = ", PX -C PRINT *, " PY = ", PY -C PRINT *, " PZ = ", PZ -C PRINT *, " 3MU INV.MASS = ", -C & SQRT((E(1)+E(2)+E(3))**2 -C & - (PX(1)+PX(2)+PX(3))**2 -C & - (PY(1)+PY(2)+PY(3))**2 -C & - (PZ(1)+PZ(2)+PZ(3))**2) - - DO I = 1, 3 - P(N+I, 1) = PX(I) - P(N+I, 2) = PY(I) - P(N+I, 3) = PZ(I) - P(N+I, 4) = E(I) - P(N+I, 5) = EMUMASS - ENDDO - - RETURN - END - - SUBROUTINE ROTATE(PX, PY) -c USED BY PYTAUD -c ROTATION OF THE TAU DECAY PRODUCTS BY ARBITRARY ANGLE IN DECAY PLANE -C... Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - - DATA PI/3.141592654D0/ - DIMENSION PX(3), PY(3) - PHI = PI*PYR(0) - - DO I=1,3 - TMP = PX(I) - PX(I) = SIN(PHI)*TMP+COS(PHI)*PY(I) - PY(I) = COS(PHI)*TMP-SIN(PHI)*PY(I) - ENDDO - - RETURN - END diff --git a/Generators/PythiaExo_i/src/PythiaMono.cxx b/Generators/PythiaExo_i/src/PythiaMono.cxx deleted file mode 100644 index 9ddcdef9a63c4b1a25dd7bddf9afc273e5def581..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/PythiaMono.cxx +++ /dev/null @@ -1,954 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -////////////////////////////////////////////////////////////////// -// -// GeneratorModules/PythiaMono.cxx Description: Allows the user -// to generate MONOPOLE pythia events and store the result in the -// Transient Store. -// -// Adapted from Pythia.cxx by Daniel Goldin -// -// AuthorList:U -// Ian Hinchliffe: Initial Code June: 2000 -// Modeled after the CDF code by Stan Thompson -// parsing added August 2000 -// more switches added Feb 2001 -// Les Houches external process interface added May 2002 -// added access to pyint1 common Sept 2002 -// added access to pypued common Oct. 2008 (L. Mijovic, liza.mijovic@cern.ch) -// Header for this module:- -#include "PythiaExo_i/PythiaMono.h" -#include "TruthUtils/GeneratorName.h" - -// Framework Related Headers:- -//#include "GaudiKernel/MsgStream.h" - -// Other classes used by this class:- -#include "StoreGate/StoreGateSvc.h" - -#include "HepMC/IO_HEPEVT.h" -#include "HepMC/HEPEVT_Wrapper.h" - -#include "GeneratorUtils/StringParse.h" -#include <stdlib.h> -//------------------------------- -// calls to fortran routines -#include "CLHEP/Random/RandFlat.h" -#include "AthenaKernel/IAtRndmGenSvc.h" - -// Pointer On AtRndmGenSvc -IAtRndmGenSvc* PythiaMono::p_AtRndmGenSvc = 0; -std::string PythiaMono::pythia_stream = "PYTHIA_INIT"; -extern "C" double atl_pyr_( int* /*idummy*/ ) -{ - CLHEP::HepRandomEngine* engine = PythiaMono::p_AtRndmGenSvc->GetEngine(PythiaMono::pythia_stream); - return CLHEP::RandFlat::shoot(engine); -} - -extern "C" { - void initpyblock_(int*, const char*); - int openrandom_(int*, int*, const char*); - void pyinit_(const char*, - const char*, - const char*, - double* , - int, // lengths of character strings - int,// (should be value, not reference) - int - ); - void pyevnt_(); - void pyevnw_(); - void pystat_(int*); - void pylist_(int*); - void pyupda_(int*, int*); - void pyrget_(int*, int*); - void pyrset_(int*, int*); - int pycomp_(int*); -// void lunhep_(int*); // STDHEP routine for PYJETS->HEPEVT - void pyhepc_(int*); - int opdcay_(const char*, int*, char*, int, int); - void cldcay_(int*); - void rinpar_(); // comphep - void subnum_(); // comphep file - void rheader_(); // comphep initialization - void extproc_(int*); - void opensusyfile_(const char* ,int * , int); -} - -// File scope declarations:- - -// set pointer to zero at start -Atlas_HEPEVT* PythiaMono::s_atlas_HEPEVT = new Atlas_HEPEVT(); - -//-------------------------------------------------------------------------- -PythiaMono::PythiaMono(const std::string& name, - ISvcLocator* pSvcLocator): GenModule(name,pSvcLocator) -{ -//-------------------------------------------------------------------------- - pythia_stream = "PYTHIA_INIT"; - declareProperty("SetAtlasDefaults", m_AtlasDefaults = true ); - declareProperty("SusyInputFile", m_read_Filesusy = " "); - declareProperty("PythiaCommand", m_pythiaCommandVector); - - m_firstlistevent = -1; - m_lastlistevent = -1; - - m_ExternalProcess = 0; - m_RndmFileLength=0; - m_RndmFileNumber=0; - m_RndmFirstEvent=1; - m_RndmMOVE=0; - m_RndmSkipEvents=0; - m_RndmSwitch=0; - m_eventlistlevel=0; - m_events = 0; - m_fortout=0; - m_initlistlevel=11; - m_msel=6; - m_randomseed=19780503; - m_win=14000.; - -} -//-------------------------------------------------------------------------- -PythiaMono::~PythiaMono(){ -//-------------------------------------------------------------------------- -} -//------------------------------------------------------------- -//-------------- -// Operations -- -//-------------- -Pydat1& PythiaMono::pydat1() { - return m_pydat1; -} -Pydat2& PythiaMono::pydat2() { - return m_pydat2; -} -Pydat3& PythiaMono::pydat3() { - return m_pydat3; -} -Pysubs& PythiaMono::pysubs() { - return m_pysubs; -} -Pypars& PythiaMono::pypars() { - return m_pypars; -} -Pydatr& PythiaMono::pydatr() { - return m_pydatr; -} -Pymssm& PythiaMono::pymssm() { - return m_pymssm; -} -//Pypued& PythiaMono::pypued() { -// return m_pypued; -//} -//Pymsrv& PythiaMono::pymsrv() { -// return m_pymsrv; -//} -Pyint1& PythiaMono::pyint1() { - return m_pyint1; -} -Pyint2& PythiaMono::pyint2() { - return m_pyint2; -} -Pyint5& PythiaMono::pyint5() { - return m_pyint5; -} -Pytcsm& PythiaMono::pytcsm() { - return m_pytcsm; -} -AcerMC_acset& PythiaMono::acermc_acset() { - return m_acermc_acset; -} - -//--------------------------------------------------------------------------- -StatusCode PythiaMono::genInitialize() { - //--------------------------------------------------------------------------- - // Initialise the listing output, parameter and decay data input streams - // - // MsgStream log(messageService(), name()); -if(msgLvl(MSG::INFO)){ - msg(MSG::INFO) << " PYTHIA INITIALISING. \n" << endmsg;} - - static const bool CREATEIFNOTTHERE(true); - StatusCode RndmStatus = service("AtRndmGenSvc", - PythiaMono::p_AtRndmGenSvc, - CREATEIFNOTTHERE); - if (!RndmStatus.isSuccess() || 0 == PythiaMono::p_AtRndmGenSvc) - { - if(msgLvl(MSG::ERROR)){ - msg(MSG::ERROR) << " Could not initialize Random Number Service" << endmsg;} - return RndmStatus; - } - PythiaMono::pythia_stream = "PYTHIA_INIT"; - - // set up the input parameters to pyinit: these can be changed by the user - m_frame = "CMS "; - m_beam = "P "; - m_target = "P "; - m_win=14000.; - m_initlistlevel=11; - m_pystatlistlevel.push_back(1); - m_fortout=0; - - m_RndmFileName=" "; - m_RndmFileNumber=0; - m_RndmSwitch=0; - m_RndmFirstEvent=1; - m_RndmSkipEvents=0; - m_RndmMOVE=0; - m_RndmFileLength=0; - m_ExternalProcess = 0; - - // end of setup to pyinit - //now set defaults - m_randomseed=19780503; - this->pydatr().mrpy(1) = m_randomseed; // can be overwritten by user - // default process is ttbar - // these can be overwritten by user. - m_msel=6; - this->pysubs().msel() = m_msel; - - // Set the ATLAS defaults - if (m_AtlasDefaults) { - - this->pydat2().pmas(6,1) =175.; // top quark mass - this->pydat2().pmas(24,1) =80.42; // W mass - this->pydat2().pmas(24,2) =2.124; // W width - this->pydat2().pmas(23,1) =91.19; // Z0 mass - this->pydat2().pmas(23,2) =2.495; // Z0 width - this->pypars().mstp(128) =1; // fix junk output for documentary particles - this->pydat1().mstu(21) =1; // error handling switch - - this->pypars().mstp(81) =21; // ATLAS default for MI and also for the associated - // treatment of initial- and final-state showers - // and beam remnants. MI on; new model for PYEVNW. - - // Check the user request here and reset mstp(81) - for (unsigned int i = 0; i < m_pythiaCommandVector.size(); i++) { - StringParse mystring(m_pythiaCommandVector[i]); - string myblock=mystring.piece(1); - string myentry=mystring.piece(2); - int myint1=mystring.intpiece(3); - int myint2=mystring.intpiece(4); - if (myblock == "pypars"){ - if(myentry == "mstp" && myint1 == 81){ - this->pypars().mstp(myint1)=myint2; - } - } - } - - // The new pyevnw routine is used which accesses the new scenario with pT-ordered showers and - // interleaved multiple interactions - if (this->pypars().mstp(81) >= 20) { - // this->pypars().mstp(68)=1; Removed for 6.4xxx - this->pypars().mstp(70)=2; // (virtuality scale for ISR) - this->pypars().mstp(72)=0; - this->pypars().mstp(82)=4; // (mutiple interaction model) - this->pypars().mstp(84)=1; - this->pypars().mstp(85)=1; - this->pypars().mstp(86)=2; - this->pypars().mstp(87)=4; - this->pypars().mstp(88)=0; - this->pypars().mstp(89)=1; - this->pypars().mstp(90)=1; - this->pypars().mstp(95)=1; - this->pypars().parp(78)=0.2; - this->pypars().parp(80)=0.01; - this->pypars().parp(82)=1.9; // (cut off scale) - this->pypars().parp(83)=0.3; - this->pypars().parp(84)=0.5; // (matter distribution) - this->pypars().parp(89)=1800.; - this->pypars().parp(90)=0.22; // (cut off scale) - this->pydat1().mstj(11)=3; // (select peterson for charm fragmentation) - this->pydat1().mstj(22)=2; // (Make K_S, Lambda stable) - this->pydat1().parj(54)=-0.07; // (c hadronization) - this->pydat1().parj(55)=-0.006; // (b hadronization) - this->pydat1().parj(81)=0.14; - this->pypars().mstp(52)=2; // (needed for CTEQ6L) - this->pypars().mstp(54)=2; // (needed for CTEQ6L) - this->pypars().mstp(56)=2; // (needed for CTEQ6L) - this->pypars().mstp(51)=10042; // (needed for CTEQ6L) - this->pypars().mstp(53)=10042; // (needed for CTEQ6L) - this->pypars().mstp(55)=10042; // (needed for CTEQ6L) - } else { - this->pypars().mstp(81) = 1; - this->pypars().mstp(82) = 4; - this->pypars().mstp(86) = 2; - this->pypars().parp(67) = 3.; - this->pypars().parp(82) = 2.2; - this->pypars().parp(83) = 0.5; - this->pypars().parp(84) = 0.3; - this->pypars().parp(85) = 0.33; - this->pypars().parp(86) = 0.66; - this->pypars().parp(89) = 1800.; - this->pypars().parp(90) = 0.24; - this->pypars().mstp(52) = 2; - this->pypars().mstp(54) = 2; - this->pypars().mstp(56) = 2; - this->pypars().mstp(51) = 10042; - this->pypars().mstp(53) = 10042; - this->pypars().mstp(55) = 10042; - this->pydat1().mstj(11) = 3; - this->pydat1().mstj(22) = 2; - this->pydat1().parj(54) = -0.07; - this->pydat1().parj(55) = -0.006; - } - } - - // - // Parse Commands and Set Values from Properties Service... - // - // for(CommandVector::iterator it = m_pythiaCommandVector.begin(); - // it != m_pythiaCommand.end(); it++ ) { - for (unsigned int i = 0; i < m_pythiaCommandVector.size(); i++) { - if(msgLvl(MSG::INFO)){ - msg(MSG::INFO)<< " Command is: " << m_pythiaCommandVector[i] << endmsg;} - StringParse mystring(m_pythiaCommandVector[i]); - string myblock=mystring.piece(1); - string myentry=mystring.piece(2); - string mystr=mystring.piece(3); - int myint1=mystring.intpiece(3); - int myint2=mystring.intpiece(4); - int myint3=mystring.intpiece(5); - int myint4=mystring.intpiece(6); - int myint5=mystring.intpiece(7); - double myfl1=mystring.numpiece(4); - double myfl2=mystring.numpiece(5); - double myfl0=mystring.numpiece(3); - - // Note that Pythia needs doubles hence the convert here - // log << MSG::INFO - if(msgLvl(MSG::INFO)){ - msg(MSG::INFO) << myblock << " block " << myentry << " item " << myint1 << " value " << myfl1 <<endmsg;} - if (myblock=="pyinit") { - if(myentry=="user"){ - m_frame="USER "; - m_external=mystr; - if(mystr=="comphep"){ - m_ExternalProcess = 1; - } else if(mystr=="user"){ - m_ExternalProcess = 2; - } else if(mystr=="acermc"){ - m_ExternalProcess = 3; - } else if(mystr=="alpgen"){ - m_ExternalProcess = 4; - } else if (mystr == "madgraph") { - m_ExternalProcess = 5; - } else if(mystr== "madcup") { - m_ExternalProcess = 6; - } else if(mystr== "lhaext") { - m_ExternalProcess = 8; - } else if(mystr== "matchig") { - m_ExternalProcess = 9; - } else if(mystr== "hvgen") { - m_ExternalProcess = 10; - } else if(mystr== "lhef") { - m_ExternalProcess = 11; - } else { - // log << MSG:: ERROR - if(msgLvl(MSG::ERROR)){ - msg(MSG::ERROR) << "PYTHIA ERROR, entry PYINIT USER has comphep, acermc, alpgen, madgraph, madcup, lhaext, hvgen, lhef and user as options: YOU HAVE SPECIFIED " - << myentry <<endmsg ;} - } - extproc_(&m_ExternalProcess); - } - else if(myentry=="FIXT"){ - m_frame="FIXT"; - } - else if(myentry=="pbar"){ - m_beam="P~- "; - } - else if(myentry=="win"){ - m_win=myfl0; - } - else if(myentry=="pylisti"){ - m_initlistlevel=myint1; - } - else if(myentry=="pylistf"){ - m_eventlistlevel=myint1; - } - else if(myentry=="dumpr"){ - m_firstlistevent=myint1; - m_lastlistevent=myint2; - } - else if(myentry=="output"){ - m_envval1=mystr; - m_fortout=49; - this->pydat1().mstu(11)=m_fortout; - } - else if(myentry=="rndm_IO"){ - m_RndmFileName=mystr; - m_RndmFileNumber=36; - m_RndmSwitch=myint2; - m_RndmFirstEvent=myint3; - m_RndmSkipEvents=myint4; - m_RndmMOVE=myint5; - if (m_RndmSwitch == 1) ++m_RndmSkipEvents; - - if (m_RndmSwitch > 0) - { - if (m_RndmFirstEvent < 1 || m_RndmSkipEvents < 0) - { - // log << MSG:: ERROR - if(msgLvl(MSG::ERROR)){ - msg(MSG::ERROR) - << " INCOSISTENT SET OF rndm_IO PARAMETERS : FirstEvent < 1 || SkipEvents < 0. DUMPING RNDM SEEDS SWITCHED OFF" - << myentry <<endmsg ;} - m_RndmSwitch = 0; - } - } - if(msgLvl(MSG::INFO)){ - msg(MSG::INFO) << " !!!!!!!!!! WARNING ON PYTHIA RANDOM NUMBERS !!!!!!!! " << endmsg; - msg(MSG::INFO) << " THE ATHENA/PYTHIA DOES NOT USE ANY MORE THE STANDARD " << endmsg; - msg(MSG::INFO) << " PYTHIA RANDOM NUMBER SERVICES. SINCE RELEASE 5.2.0 THE" << endmsg; - msg(MSG::INFO) << " ATHENA SERVICE AtRndmGenSvc IS USED. PLEASE FOR MORE " << endmsg; - msg(MSG::INFO) << " DETAILS LOOK IN " << endmsg; - msg(MSG::INFO) << " http://atlassw1.phy.bnl.gov/lxrsource/current/atlas/Generators/GeneratorModules/doc/Pythia.pdf " - << endmsg; - msg(MSG::INFO) << " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! " << endmsg;} - - m_RndmSwitch = 0; - } - else { - // log << MSG:: ERROR - if(msgLvl(MSG::ERROR)){ - msg(MSG::ERROR) << "PYTHIA ERROR, entry PYINIT has USER PBAR PYLISTI PYLISTF PYSTAT OUTPUT DUMPR WIN AND RNDM_IO: YOU HAVE SPECIFIED "<< myentry <<endmsg ;} - } - } - else if (myblock == "pysubs") { - if(myentry == "msel"){ - this->pysubs().msel()=myint1; - } - else if (myentry == "msub"){ - this->pysubs().msub(myint1)=myint2; - } - else if (myentry == "ckin"){ - this->pysubs().ckin(myint1)=myfl1; - } - else if (myentry == "kfin"){ - this->pysubs().kfin(myint1,myint2)=myint3; - } - else { - // log << MSG:: ERROR - if(msgLvl(MSG::ERROR)){ - msg(MSG::ERROR) << "PYTHIA ERROR, block PYSUBS has MSEL, MSUB, KFIN AND CKIN: YOU HAVE SPECIFIED "<< myentry <<endmsg ;} - } - } - else if (myblock == "pypars"){ - if(myentry == "mstp"){ - this->pypars().mstp(myint1)=myint2; - } - else if(myentry == "msti"){ - this->pypars().msti(myint1)=myint2; - } - else if(myentry == "parp"){ - this->pypars().parp(myint1)=myfl1; - } - else if(myentry == "pari"){ - this->pypars().pari(myint1)=myfl1; - } - else { - // log << MSG:: ERROR - if(msgLvl(MSG::ERROR)){ - msg(MSG::ERROR) << "PYTHIA ERROR, block PYPARS has MSTP,PARP, MSTI AND PARI: YOU HAVE SPECIFIED "<< myentry <<endmsg ;} - } - } - else if (myblock == "pydat1"){ - if(myentry == "mstu"){ - this->pydat1().mstu(myint1)=myint2; - } - else if(myentry == "mstj"){ - this->pydat1().mstj(myint1)=myint2; - } - else if(myentry == "paru"){ - this->pydat1().paru(myint1)=myfl1; - } - else if(myentry == "parj"){ - this->pydat1().parj(myint1)=myfl1; - } - else { - // log << MSG:: ERROR - if(msgLvl(MSG::ERROR)){ - msg(MSG::ERROR) << "PYTHIA ERROR, block PYDAT1 HAS MSTU, MSTJ, PARU AND PARJ: YOU HAVE SPECIFIED "<< myentry <<endmsg ;} - } - } - else if (myblock == "pydat2"){ - if(myentry == "kchg"){ - this->pydat2().kchg(myint1,myint2)=myint3; - } - else if(myentry == "pmas"){ - this->pydat2().pmas(pycomp_(&myint1),myint2)=myfl2; - } - else if(myentry == "parf"){ - this->pydat2().parf(myint1)=myfl1; - } - else if(myentry == "vckm"){ - this->pydat2().vckm(myint1,myint2)=myfl2; - } - else { - // log << MSG:: ERROR - if(msgLvl(MSG::ERROR)){ - msg(MSG::ERROR) << "PYTHIA ERROR, block PYDAT2 HAS KCHG, PMAS, PARF AND VCKM: YOU HAVE SPECIFIED "<< myentry <<endmsg ;} - } - } - else if (myblock == "pydat3"){ - if(myentry == "mdcy"){ - this->pydat3().mdcy(myint1,myint2)=myint3; - } - else if(myentry == "mdme"){ - this->pydat3().mdme(myint1,myint2)=myint3; - } - else if(myentry == "brat"){ - this->pydat3().brat(myint1)=myfl1; - } - else if(myentry == "kfdp"){ - this->pydat3().kfdp(myint1,myint2)=myint3; - } - else { - if(msgLvl(MSG::ERROR)){ - msg(MSG::ERROR) << "PYTHIA ERROR, block PYDAT3 HAS KFDP, MDCY, BRAT AND MDME : YOU HAVE SPECIFIED "<< myentry <<endmsg ;} - } - } - else if (myblock == "pydatr"){ - if(myentry == "mrpy"){ - if(msgLvl(MSG::INFO)){ - msg(MSG::INFO)<< " !!!!!!!!!! WARNING ON PYTHIA RANDOM NUMBERS !!!!!!!! " << endmsg; - msg(MSG::INFO)<< " THE ATHENA/PYTHIA DOES NOT USE ANY MORE THE STANDARD " << endmsg; - msg(MSG::INFO)<< " PYTHIA RANDOM NUMBER SERVICES. SINCE RELEASE 5.2.0 THE" << endmsg; - msg(MSG::INFO)<< " ATHENA SERVICE AtRndmGenSvc IS USED. PLEASE FOR MORE " << endmsg; - msg(MSG::INFO)<< " DETAILS LOOK IN " << endmsg; - msg(MSG::INFO)<< " http://atlassw1.phy.bnl.gov/lxrsource/current/atlas/Generators/GeneratorModules/doc/Pythia.pdf " - << endmsg; - msg(MSG::INFO)<< " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! " << endmsg;} - - this->pydatr().mrpy(myint1)=myint2; - } - else if(myentry == "rrpy"){ - this->pydatr().rrpy(myint1)=myfl1; - } - else { - if(msgLvl(MSG::ERROR)){ - msg(MSG::ERROR) << "PYTHIA ERROR, block PYDATR HAS MRPY AND RRPY : YOU HAVE SPECIFIED "<< myentry <<endmsg ;} - } - } - else if (myblock == "pymssm"){ - if (myentry=="imss"){ - if (myint1 == 21 || myint1 == 22) { - // log << MSG::WARNING - if(msgLvl(MSG::WARNING)){ - msg(MSG::WARNING) << "The seting of imss(21) and imss(22) is not allowed. When imss(1)=11 is chosen imss(21) and imss(22) are set to 66 by default" <<endmsg;} - } else { - this->pymssm().imss(myint1)=myint2; - } - } - else if (myentry=="rmss"){ - this->pymssm().rmss(myint1)=myfl1; - } - else { - if(msgLvl(MSG::ERROR)){ - msg(MSG::ERROR) << "PYTHIA ERROR, block PYMSSM has IMSS AND RMSS: YOU HAVE SPECIFIED "<< myentry <<endmsg ;} - } - } - else if (myblock == "pyint2"){ - if (myentry == "iset"){ - this->pyint2().iset(myint1)=myint2; - } - else if (myentry == "kfpr"){ - this->pyint2().kfpr(myint1,myint2)=myint3; - } - else if (myentry == "coef"){ - this->pyint2().coef(myint1,myint2)=myfl2; - } - else if (myentry == "icol"){ - this->pyint2().icol(myint1,myint2,myint3)=myint4; - } - else { - if(msgLvl(MSG::ERROR)){ - msg(MSG::ERROR) << "PYTHIA ERROR, block PYINT2 has ISET KFPR COEF AND ICOL: YOU HAVE SPECIFIED "<< myentry <<endmsg ;} - } - } - else if (myblock == "pystat"){ - m_pystatlistlevel.clear(); - for (unsigned i = 2; i <= mystring.string_size(); ++i) - m_pystatlistlevel.push_back(mystring.intpiece(i)); - } - else if (myblock == "pytcsm"){ - if (myentry == "itcm"){ - this->pytcsm().itcm(myint1)=myint2; - } - else if (myentry=="rtcm"){ - this->pytcsm().rtcm(myint1)=myfl1; - } - else { - if(msgLvl(MSG::ERROR)){ - msg(MSG::ERROR) << "PYTHIA ERROR, block PYTCM has ITCM AND RTCM: YOU HAVE SPECIFIED "<< myentry <<endmsg ;} - } - - } - - // AcerMC tt~ decay mode switching - else if (myblock == "acermc" && myentry=="acset12") { - if (m_ExternalProcess == 3) { - this->acermc_acset().acset12()=myint1; - } - } - - else { - if(msgLvl(MSG::ERROR)){ - msg(MSG::ERROR) << " ERROR in PYTHIA PARAMETERS " << myblock << " is and invalid common block name !" << endmsg;} - } - } - // end of parsing - //------------------------------------------------------------------ - - // Set the logical Unit Number for the immss(1)=11 option and open the file - if (this->pymssm().imss(1) == 11) { - int syunit = 66; - this->pymssm().imss(21) = syunit; - this->pymssm().imss(22) = syunit; - const std::string& fileName = m_read_Filesusy; - opensusyfile_(fileName.c_str(),&syunit,fileName.size()); - } - - // !!!!! PROTECT AGAINST mstp(81)/mstp(82) Pythia looping - if (this->pypars().mstp(81) == 0 && this->pypars().mstp(82) > 2) - { - this->pypars().mstp(82) = 1; - if(msgLvl(MSG::INFO)){ - msg(MSG::INFO)<< " !!!!!!!!!! WARNING ON PYTHIA LOOPING !!!!!!!! " << endmsg; - msg(MSG::INFO)<< " YOU HAVE SWITCHED OFF MULTIPLE INTERACTIONS, mstp(81) = 0 " << endmsg; - msg(MSG::INFO)<< " THE DEFAULT ATLAS MULTIPLE INTERACTIONS SCENARIO, mstp(82) = 4 " << endmsg; - msg(MSG::INFO)<< " CHANGED TO mstp(82) = 1, BECAUSE PYTHIA IS LOOPING WHEN " << endmsg; - msg(MSG::INFO)<< " mstp(81) = 0 and mstp(82) > 2 " << endmsg; - msg(MSG::INFO)<< " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! " << endmsg;} - } - - // Now call pyinit and set listing - // Note the `extra' arguments to pyinit on the end of the argument - // list which do *not* explicitly occur in the FORTRAN - // implementation of the function -- one for each character - // variable, in the same order (reference Randy Herber, - // herber@fnal.gov). Note also that the `extern "C"' function - // declaration matches the C usage rather than the FORTRAN - // definition of the PYINIT function and therefore includes the 3 - // extra arguments. - // activate the block data - const char* envval = m_envval1.c_str(); - initpyblock_(&m_fortout,envval); - - if (m_RndmSwitch > 0) - { - const char* RndmFileName = m_RndmFileName.c_str(); - m_RndmFileLength = openrandom_(&m_RndmSwitch, &m_RndmFileNumber, RndmFileName); - if (m_RndmSwitch ==2 ) if(msgLvl(MSG::INFO)){ msg(MSG::INFO) << " THEY ARE " << m_RndmFileLength - << " EVENTS STORED IN THE PYTHIA RANDOM NUMBER FILE \n" << endmsg;} - } - - const char* frame = m_frame.c_str(); - const char* beam = m_beam.c_str(); - double winval = m_win; - const char* target = m_target.c_str(); - int minlist = m_initlistlevel; - // special initialization for comphep - if(m_external=="comphep"){ - rinpar_(); - subnum_(); - rheader_(); - } - - // end of comphep initialization -// std::cout << " ****** BEFORE PYINIT ********" << std::endl; -// std::cout << setiosflags(ios::fixed); -// std::cout << " MSTU(11) " -// << std::setw(3) << setprecision(0) << this->pydat1().mstu(11) << " MSTU(20) " -// << std::setw(3) << setprecision(0) << this->pydat1().mstu(20) << " MSTU(118) " -// << std::setw(3) << setprecision(0) << this->pydat1().mstu(118) << std::endl; -// std::cout << " PARU(108) " -// << std::setw(10) << setprecision(8) << this->pydat1().paru(108) << " PARU(117) " -// << std::setw(10) << setprecision(8) << this->pydat1().paru(117) << " PARU(118) " -// << std::setw(10) << setprecision(8) << this->pydat1().paru(118) << std::endl; -// for (int ii = 210; ii < 353; ++ii) -// { -// std::cout << " BRAT(" << ii << ") " -// << std::setw(10) << setprecision(8) << this->pydat3().brat(ii) << std::endl; -// } -// std::cout << " MDCY(310) " -// << std::setw(3) << setprecision(0) << this->pydat3().mdcy(310,1) << ", " -// << std::setw(3) << setprecision(0) << this->pydat3().mdcy(310,2) << ", " -// << std::setw(3) << setprecision(0) << this->pydat3().mdcy(310,3); - -// std::cout << std::resetiosflags(std::ios::fixed) -// << std::endl; - - // Save the PYTHIA_INIT stream seeds.... - CLHEP::HepRandomEngine* engine = PythiaMono::p_AtRndmGenSvc->GetEngine(PythiaMono::pythia_stream); - const long* sip = engine->getSeeds(); - long int si1 = sip[0]; - long int si2 = sip[1]; - - pyinit_(frame,beam,target,&winval, - strlen(frame),strlen(beam),strlen(target) - ); - - // ... and set them back to the stream for proper save - PythiaMono::p_AtRndmGenSvc->CreateStream(si1, si2, PythiaMono::pythia_stream); - - PythiaMono::pythia_stream = "PYTHIA"; - -// std::cout << " ****** AFTER PYINIT ********" << std::endl; -// std::cout << setiosflags(ios::fixed); -// std::cout << " MSTU(11) " -// << std::setw(3) << setprecision(0) << this->pydat1().mstu(11) << " MSTU(20) " -// << std::setw(3) << setprecision(0) << this->pydat1().mstu(20) << " MSTU(118) " -// << std::setw(3) << setprecision(0) << this->pydat1().mstu(118) << std::endl; -// std::cout << " PARU(108) " -// << std::setw(10) << setprecision(8) << this->pydat1().paru(108) << " PARU(117) " -// << std::setw(10) << setprecision(8) << this->pydat1().paru(117) << " PARU(118) " -// << std::setw(10) << setprecision(8) << this->pydat1().paru(118) << std::endl; -// for (int ii = 210; ii < 353; ++ii) -// { -// std::cout << " BRAT(" << ii << ") " -// << std::setw(10) << setprecision(8) << this->pydat3().brat(ii) << std::endl; -// } -// std::cout << " MDCY(310) " -// << std::setw(3) << setprecision(0) << this->pydat3().mdcy(310,1) << ", " -// << std::setw(3) << setprecision(0) << this->pydat3().mdcy(310,2) << ", " -// << std::setw(3) << setprecision(0) << this->pydat3().mdcy(310,3); - -// std::cout << std::resetiosflags(std::ios::fixed) -// << std::endl; - - pylist_(&minlist); - m_events = 0; - // cout << " kfpr ============ " << this->pyint2().kfpr(186,2) <<endl; - //cout << " kfpr ============ " << this->pyint2().kfpr(187,2) <<endl; - //decay table - const char *p_envar1="PYDAT"; - // char *p_envval1=0; - //p_envval1= - getenv(p_envar1); - //---------------------------------------------------------- - // This is the decay table file - // - // int mode=2; - // int lun=37; - // pyupda_(&mode,&lun); - // cldcay_(&lun); - // Set size of common blocks in HEPEVT: note these correspond to stdhep -// HepMC::HEPEVT_Wrapper::set_sizeof_int(4); - HepMC::HEPEVT_Wrapper::set_sizeof_int(sizeof(int)); - HepMC::HEPEVT_Wrapper::set_sizeof_real(8); - HepMC::HEPEVT_Wrapper::set_max_number_entries(10000); - - return StatusCode::SUCCESS; -} - - -//--------------------------------------------------------------------------- -StatusCode PythiaMono::callGenerator() { - //--------------------------------------------------------------------------- - // MsgStream log(messageService(), name()); - // log << MSG::DEBUG - if(msgLvl(MSG::DEBUG)){ - msg(MSG::DEBUG) << " PYTHIA generating. \n" << endmsg; - } - // Write/Read the random numbers to/from file if requested - if (m_RndmSwitch > 0) RandomNumberIO(); - - // Save the random number seeds in the event - CLHEP::HepRandomEngine* engine = PythiaMono::p_AtRndmGenSvc->GetEngine(PythiaMono::pythia_stream); - const long* s = engine->getSeeds(); - m_seeds.clear(); - m_seeds.push_back(s[0]); - m_seeds.push_back(s[1]); - - // Generate event - pyevnt_(); - - // update event counter - ++m_events; - int mevlist=m_eventlistlevel; - // Is the event to be listed - if ( m_events >= m_firstlistevent && - m_events <= m_lastlistevent) { - // log<< MSG:: INFO - if(msgLvl(MSG::INFO)){ - msg(MSG::INFO) << "PYEVNT event no. " << m_events << " will be listed" << endmsg;} - if (m_frame == "USER ") - { - int uspr = 7; - pylist_(&uspr); // Special listing when external generator was selected - } - pylist_(&mevlist); // List this event if required - } - // Tell lunhep to convert from PYJETS to HEPEVT - int mconv=1; - // Do the conversion -// lunhep_(&mconv); // Use STDHEP translation routine 1999/01/27 CG - pyhepc_(&mconv); // Use STDHEP translation routine 1999/01/27 CG - if ( HepMC::HEPEVT_Wrapper::number_entries() <= 0 ) { - std::cout << "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" << std::endl; - std::cout << "!!! " << generator_name(100000 * m_ExternalProcess) << " TERMINATES NORMALY: NO MORE EVENTS IN FILE !!!" << std::endl; - std::cout << "!!! PLEASE IGNORE ANY ATHENA ERROR MESSAGES LIKE !!!" << std::endl; - std::cout << "!!! AthenaEventLoopMgr ERROR Terminating event processing loop due to errors !!!" << std::endl; - std::cout << "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" << std::endl; - return StatusCode::FAILURE; - } - HepMC::HEPEVT_Wrapper::set_event_number(m_events); -// HepMC::HEPEVT_Wrapper::print_hepevt(); - return StatusCode::SUCCESS; -} - -//--------------------------------------------------------------------------- -StatusCode PythiaMono::genFinalize() { - //--------------------------------------------------------------------------- - // MsgStream log(messageService(), name()); - if(msgLvl(MSG::INFO)){ msg(MSG::INFO) << " PYTHIA Ending. \n" << endmsg;} - for (std::vector<int>::iterator i = m_pystatlistlevel.begin(); i != m_pystatlistlevel.end(); ++i) - { - if(msgLvl(MSG::INFO)){ msg(MSG::INFO) <<"Call PYSTAT at endRun with level " << *i << endmsg;} - pystat_(&(*i)); - } - std::cout << "MetaData: cross-section (nb)= " << 1000000. * this->pyint5().xsec(0,3) << std::endl; - return StatusCode::SUCCESS; -} -//--------------------------------------------------------------------------- -StatusCode PythiaMono::fillEvt(HepMC::GenEvent* evt) { - //--------------------------------------------------------------------------- - // MsgStream log(messageService(), name()); - - // log << MSG::DEBUG - if(msgLvl(MSG::DEBUG)){ - msg(MSG::DEBUG) << " PYTHIA Atlas_HEPEVT Filling. \n" << endmsg;} - store_Atlas_HEPEVT(); - - // log << MSG::DEBUG - if(msgLvl(MSG::DEBUG)){ - msg(MSG::DEBUG) << " PYTHIA Filling. \n" << endmsg;} - HepMC::IO_HEPEVT hepio; - hepio.set_print_inconsistency_errors(0); - //HepMC::IO_Ascii output("dump.dat",ios::out); - - // Fill event into HepMC and transient store -// std::cout << "====================================================================" << std::endl; -// std::cout << " === Event dump IN PYTHIA: === " << std::endl; -// std::cout << "====================================================================" << std::endl; -// HepMC::HEPEVT_Wrapper::print_hepevt(); - - hepio.fill_next_event(evt); - int pr_id = PYTHIA + 100000 * m_ExternalProcess + this->pyint1().mint(1); - if (m_ExternalProcess > 0) pr_id = PYTHIA + 100000 * m_ExternalProcess; - evt->set_signal_process_id(pr_id); - evt->set_random_states(m_seeds); - evt->weights().push_back(this->pypars().pari(7)); - evt->weights().push_back(this->pypars().pari(9)); - evt->weights().push_back(this->pypars().pari(10)); - //evt -> print(); - //cout << " ----------------- END " << endl; - - //PDF WEIGHTS - using Pdf Info object.. - //pdf_id x_1, x_1, Q2, f_1, f_2 - int id1=this->pypars().msti(15); - int id2=this->pypars().msti(16); - double x1=this->pypars().pari(33); - double x2=this->pypars().pari(34); - double q=this->pypars().pari(23); - double pdf1=(double)this->pypars().mstp(51); //pdg id - awkward but.. - double pdf2=0.; //dummy - HepMC::PdfInfo tmp_pdi(id1,id2,x1,x2,q,pdf1,pdf2); - evt->set_pdf_info(tmp_pdi); - /* std::cout << "pdfiinfo:"<< evt->pdf_info()->id1() << std::endl; - std::cout << "pdfiinfo:"<< evt->pdf_info()->id2() << std::endl; - std::cout << "pdfiinfo:"<< evt->pdf_info()->x1() << std::endl; - std::cout << "pdfiinfo:"<< evt->pdf_info()->x2() << std::endl; - std::cout << "pdfiinfo:"<< evt->pdf_info()->scalePDF() << std::endl; - std::cout << "pdfiinfo:"<< evt->pdf_info()->pdf1() << std::endl; - std::cout << "pdfiinfo:"<< evt->pdf_info()->pdf2() << std::endl; - */ - - // output << evt; - - // Convert cm->mm and GeV->MeV -// cmTomm(evt); - GeVToMeV(evt); - - return StatusCode::SUCCESS; -} - -void -PythiaMono::RandomNumberIO() -{ - // MsgStream log(messageService(), name()); - - // m_RndmSwitch == 1 : Write the random numbers of the selected events into - // the file m_RndmFileNumber - if (m_RndmSwitch == 1) - { - int WriteEvent = m_events - m_RndmFirstEvent + 1; - if (WriteEvent >= 0) - { - WriteEvent = WriteEvent%m_RndmSkipEvents; - if (WriteEvent == 0) pyrget_(&m_RndmFileNumber, &m_RndmMOVE); - } - } - // m_RndmSwitch == 2 : Read the random numbers from the selected records from - // the file m_RndmFileNumber - else if (m_RndmSwitch == 2) - { - int MOVE = m_RndmMOVE; - if (MOVE == 0) - { - if (m_RndmFirstEvent > 0) - { - if (m_events == 0) - { - MOVE = m_RndmFirstEvent - 1; - } - else - { - MOVE = m_RndmSkipEvents; - } - } - int c_pos = this->pydatr().mrpy(6)+MOVE; - if (c_pos < m_RndmFileLength) - { - if(msgLvl(MSG::INFO)){ - msg(MSG::INFO) << "EVENT " << m_events+1 - << " will be generated with the random seeds read from record " - << c_pos+1 << " in file " << m_RndmFileName << endmsg;} - pyrset_(&m_RndmFileNumber, &MOVE); - } - } - else - { - pyrset_(&m_RndmFileNumber, &MOVE); - } - - } -} - -void -PythiaMono::store_Atlas_HEPEVT(void) -{ - -// std::cout << "s_atlas_HEPEVT------" << s_atlas_HEPEVT->nhep() << std::endl; -// std::cout << "s_atlas_HEPEVT------" << s_atlas_HEPEVT->isthep(10) << std::endl; -// std::cout << "s_atlas_HEPEVT------" << s_atlas_HEPEVT->idhep(10) << std::endl; -// std::cout << "s_atlas_HEPEVT------" << s_atlas_HEPEVT->jmohep(1,10) << std::endl; -// std::cout << "s_atlas_HEPEVT------" << s_atlas_HEPEVT->jdahep(2,10) << std::endl; - - s_atlas_HEPEVT->fill(); - - Atlas_HEPEVT* Ahep = new Atlas_HEPEVT(); - *(Ahep)=*(s_atlas_HEPEVT); - static const std::string keyid = "PythiaMono"; - StatusCode sc = evtStore() ->record(Ahep, keyid); - if (!sc.isSuccess()) { - // MsgStream msg(messageService(), name()); - if(msgLvl(MSG::DEBUG)){ - msg(MSG::WARNING) << " Could not record Atlas_HEPEVT" << endmsg;} - } - -} diff --git a/Generators/PythiaExo_i/src/PythiaMono_i_entries.cxx b/Generators/PythiaExo_i/src/PythiaMono_i_entries.cxx deleted file mode 100644 index 3dc4b433604b35f7b071aadb4a462e222df66b5d..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/PythiaMono_i_entries.cxx +++ /dev/null @@ -1,7 +0,0 @@ -/* - Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration -*/ -#include "PythiaExo_i/PythiaMono.h" - -DECLARE_COMPONENT( PythiaMono ) - diff --git a/Generators/PythiaExo_i/src/PythiaResMod.cxx b/Generators/PythiaExo_i/src/PythiaResMod.cxx deleted file mode 100644 index 51ee5c47ee99cda74f25d0bc4d97d60db3a7fa7a..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/PythiaResMod.cxx +++ /dev/null @@ -1,1087 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// File: GeneratorModules/PythiaResMod.cxx -// Description: Generate pythia events and store the result in the Transient Store. -// -// AuthorList: -// Ian Hinchliffe: Initial Code June: 2000 -// Modeled after the CDF code by Stan Thompson -// Parsing added August 2000 -// More switches added Feb 2001 -// Les Houches external process interface added May 2002 -// Added access to pyint1 common Sept 2002 -// Added access to pypued common Oct. 2008 (L. Mijovic, liza.mijovic@cern.ch) -// Direct use of generator codes - replaced with gen. names (E.M.Lobodzinska, Dec 2008) -// Remove obsolete code and pseudo atlas default pythia settings (Cano Ay, April 2009) -// Move Pythia ATLAS tune from Pythia_i + jO to Pythia_i, LM -// Added PYGIVE functionality, LM, Jul. 09 -// Tunes schema, LM, Aug. 09 -// Conversion to AthAlgorithm methods (via GenModule) and clean-up, Andy Buckley, Dec 2009 -// added access to pypevwt common, March 2010: Eric Feng (Chicago) <Eric.Feng@cern.ch> - -#include "PythiaExo_i/PythiaResMod.h" -#include "TruthUtils/GeneratorName.h" -#include "GeneratorUtils/StringParse.h" -#include <cstdlib> - -#include "CLHEP/Random/RandFlat.h" -#include "AthenaKernel/IAtRndmGenSvc.h" - -#include "HepMC/IO_HEPEVT.h" -#include "HepMC/HEPEVT_Wrapper.h" - -#include "ExoGraviton_i/ExoGraviton.h" -#include "PathResolver/PathResolver.h" - -#include "PythiaExo_i/Lhefinfo.h" - -#include "boost/algorithm/string/trim.hpp" - - -// Pointer to AtRndmGenSvc -IAtRndmGenSvc* PythiaResMod::p_AtRndmGenSvc = 0; -std::string PythiaResMod::pythia_stream = "PYTHIA_INIT"; -extern "C" double atl_pyr_( int* /*idummy*/ ) -{ - CLHEP::HepRandomEngine* engine = PythiaResMod::p_AtRndmGenSvc->GetEngine(PythiaResMod::pythia_stream); - return CLHEP::RandFlat::shoot(engine); -} - -extern "C" { - void initpyblock_(int*, const char*); - int openrandom_(int*, int*, const char*); - void pyinit_(const char*, - const char*, - const char*, - double* , - int, // lengths of character strings - int,// (should be value, not reference) - int - ); - void pyevnt_(); - void pyevnw_(); - void pystat_(int*); - void pylist_(int*); - void pyupda_(int*, int*); - void pyrget_(int*, int*); - void pyrset_(int*, int*); - void addparticle_(const char*, int slen); - //pygive implementation: calls Pythia SUBROUTINE PYGIVE(CHIN) - void pygive_(const char*,int); // character string to pygive && its length - //pytune : calls Pythia SUBROUTINE PYTUNE(ITUNE) - //this call should be used in case one wants to override some of the values PYTUNE sets from the jO - //in contrary to using MSTP(5) value the PYTUNE will in this case act before PYINIT - void pytune_(int*); // value of int corresponds to the respective ITUNE value - int pycomp_(int*); - // void lunhep_(int*); // STDHEP routine for PYJETS->HEPEVT - void pyhepc_(int*); - int opdcay_(const char*, int*, char*, int, int); - void cldcay_(int*); - void rinpar_(); // comphep - void subnum_(); // comphep file - void rheader_(); // comphep initialization - void extproc_(int*); - void opensusyfile_(const char* ,int * , int); - void setecm_(double*); - void parout_(int*); - void specix_(int*); -} - - -Atlas_HEPEVT* PythiaResMod::s_atlas_HEPEVT = new Atlas_HEPEVT(); - - -//-------------------------------------------------------------------------- - - -PythiaResMod::PythiaResMod(const std::string& name, ISvcLocator* pSvcLocator) - : GenModule(name, pSvcLocator) -{ - pythia_stream="PYTHIA_INIT"; - // ATLAS default tune - m_Default_Tune_Name="ATLAS_20110002"; - m_Default_Tune_Type="ATLAS"; - m_Default_Tune_Index=20110002; - m_Starting_Tune_Name="ATLAS_99999999"; - m_Starting_Tune_Type="ATLAS"; - m_Starting_Tune_Index=99999999; - //set dummy values at start - m_Tune_Index=0; - m_Tune_Type=""; - //for non-0 value call PYTUNE directly - m_direct_call_to_pytune=0; - // some defaults - m_firstlistevent = -1; - m_lastlistevent = -1; - // old schema, backw. compatibility - m_mc0809_Tune_Type="ATLAS"; - m_mc09_Tune_Index=20090001; - m_mc08_Tune_Index=20080001; - m_Default_useAtlasPythiaRecomm=true; - m_Default_useAtlasPythiaCommon=true; - m_Default_useAtlasPythiaTune09=false; - m_Default_useAtlasPythiaTune08=false; - m_Default_useNoAtlasPythiaParam=false; - // printing-out manually set x-section for the MetaData - m_Default_SetCrossSection=-1.0; - m_Default_xsscale=-99999; - // properties - declareProperty("SusyInputFile", m_read_Filesusy = " "); - declareProperty("PythiaCommand", m_pythiaCommandVector); - declareProperty("PygiveCommand", m_PygiveCommandVector); - declareProperty("Direct_call_to_pytune", m_direct_call_to_pytune); - declareProperty("Param_Query_AfterInit",m_Param_Query_AfterInit); - declareProperty("Param_Query_AfterGen", m_Param_Query_AfterGen); - declareProperty("CrossSectionScaleFactor", m_xsscale=m_Default_xsscale); - declareProperty("SetAtlasDefaults", m_AtlasDefaults = false ); - declareProperty("Tune_Name", m_Tune_Name = m_Starting_Tune_Name ); - declareProperty("SetCrossSection",m_SetCrossSection=m_Default_SetCrossSection); - declareProperty("addParticle", m_addParticle = false ); - declareProperty("UseResMod", m_UseResMod = 0); - // old schema, backw. compatibility - declareProperty("useAtlasPythiaRecomm", m_useAtlasPythiaRecomm = m_Default_useAtlasPythiaRecomm); - declareProperty("useAtlasPythiaCommon", m_useAtlasPythiaCommon = m_Default_useAtlasPythiaCommon); - declareProperty("useAtlasPythiaTune09", m_useAtlasPythiaTune09 = m_Default_useAtlasPythiaTune09); - declareProperty("useAtlasPythiaTune08", m_useAtlasPythiaTune08 = m_Default_useAtlasPythiaTune08); - declareProperty("useNoAtlasPythiaParam", m_useNoAtlasPythiaParam = m_Default_useNoAtlasPythiaParam); - - m_pygive_gen_cstr = 0; - m_pygive_init_cstr = 0; - m_pygive_gen_cstr = 0; - - m_pygive_cstr = 0; - - m_win = 0.; - m_msel = 0; - m_eventlistlevel = 0; - m_initlistlevel = 0; - m_randomseed = 0; - m_fortout = 0; - m_RndmFileNumber = 0; - m_RndmSwitch = 0; - m_RndmFirstEvent = 0; - m_RndmSkipEvents = 0; - m_RndmMOVE = 0; - m_RndmFileLength = 0; - m_events = 0; - m_ExternalProcess = 0; - m_atlasTune_loop_prot = 0; - -} -//-------------------------------------------------------------------------- -PythiaResMod::~PythiaResMod(){ -//-------------------------------------------------------------------------- -} -//------------------------------------------------------------- -//-------------- -// Operations -- -//-------------- -Pydat1& PythiaResMod::pydat1() { - return m_pydat1; -} -Pydat2& PythiaResMod::pydat2() { - return m_pydat2; -} -Pydat3& PythiaResMod::pydat3() { - return m_pydat3; -} -Pysubs& PythiaResMod::pysubs() { - return m_pysubs; -} -Pypars& PythiaResMod::pypars() { - return m_pypars; -} -Pydatr& PythiaResMod::pydatr() { - return m_pydatr; -} -Pymssm& PythiaResMod::pymssm() { - return m_pymssm; -} -Pypued& PythiaResMod::pypued() { - return m_pypued; -} -Pypevwt& PythiaResMod::pypevwt() { - return m_pypevwt; -} -Pymsrv& PythiaResMod::pymsrv() { - return m_pymsrv; -} -Pyint1& PythiaResMod::pyint1() { - return m_pyint1; -} -Pyint2& PythiaResMod::pyint2() { - return m_pyint2; -} -Pyint5& PythiaResMod::pyint5() { - return m_pyint5; -} -Pytcsm& PythiaResMod::pytcsm() { - return m_pytcsm; -} -AcerMC_acset& PythiaResMod::acermc_acset() { - return m_acermc_acset; -} - - -//--------------------------------------------------------------------------- - - -StatusCode PythiaResMod::genInitialize() { - // Initialise the listing output, parameter and decay data input streams - ATH_MSG_INFO(" PYTHIA INITIALISING."); - - /// @todo Use ServiceHandle - static const bool CREATEIFNOTTHERE(true); - StatusCode RndmStatus = service("AtRndmGenSvc", - PythiaResMod::p_AtRndmGenSvc, - CREATEIFNOTTHERE); - if (!RndmStatus.isSuccess() || 0 == PythiaResMod::p_AtRndmGenSvc) - { - ATH_MSG_ERROR(" Could not initialize Random Number Service"); - return RndmStatus; - } - PythiaResMod::pythia_stream = "PYTHIA_INIT"; - - m_atlasTune_loop_prot=0; - - // set up the input parameters to pyinit: these can be changed by the user - m_frame = "CMS "; - m_beam = "P "; - m_target = "P "; - m_win=10000.; - m_initlistlevel=11; - m_pystatlistlevel.push_back(1); - m_fortout=0; - - m_RndmFileName=" "; - m_RndmFileNumber=0; - m_RndmSwitch=0; - m_RndmFirstEvent=1; - m_RndmSkipEvents=0; - m_RndmMOVE=0; - m_RndmFileLength=0; - m_ExternalProcess = 0; - - // end of setup to pyinit -// special initialisation for Pythiasgluon - if(m_addParticle==true) - { -//adding a new particle to Pythia for PythiaSgluon - std::string s_newParticleCARD_path = - PathResolver::find_file("sgluons.dat", "DATAPATH"); - const char* c_newParticleCARD_path = s_newParticleCARD_path.c_str(); - addparticle_(c_newParticleCARD_path,strlen(c_newParticleCARD_path)); - } - //now set defaults - m_randomseed=19780503; - this->pydatr().mrpy(1) = m_randomseed; // can be overwritten by user - // default process is ttbar - // these can be overwritten by user. - m_msel=6; - this->pysubs().msel() = m_msel; - - // Set the ATLAS defaults - if (m_AtlasDefaults) - { - ATH_MSG_WARNING("********** You have chosen the default Atlas Settings. **********"); - ATH_MSG_WARNING("********** This switch is not valid any more. **********"); - } - - //m_Tune_Name parsing to find m_Tune_Type and m_Tune_Index for setPythiaTune() and atlasTune() calls - std::string::size_type sep_index = m_Tune_Name.find_first_of('_'); - if (sep_index != std::string::npos) - { - m_Tune_Type=m_Tune_Name.substr(0,sep_index); - // atoi : returns 0 if conversion not possible - no additional protection needed - m_Tune_Index=atoi((m_Tune_Name.substr(sep_index+1,m_Tune_Name.length()-1)).c_str()); - } - else - { - // invalid Tune_Name, m_Tune_Type and m_Tune_Index kept at the dummy vals from constructor, - // let setPythiaTune() handle the error - ATH_MSG_WARNING("Invalid Tune_Name: "<< m_Tune_Name <<" specified ."); - } - // set any Pythia parameters different from Pythia defaults - // allow only one reset - if (m_atlasTune_loop_prot<2) - { - // m_atlasTune_loop_prot counts setPythiaTune() calls in setPythiaTune.cxx - StatusCode sc=setPythiaTune(); - if ( sc.isFailure() ) - { - ATH_MSG_FATAL("ERROR returned from setPythiaTune, exit."); - return StatusCode::FAILURE; - } - } - else - { - ATH_MSG_FATAL("More than one reset attempt of tune using setPythiaTune."); - ATH_MSG_FATAL("Please correct your jobOptions."); - return StatusCode::FAILURE; - } - - //call pytune directly in case any parameters set py the tune are to be overwritten from jO - if (m_direct_call_to_pytune!=0) pytune_(&m_direct_call_to_pytune); - - //PYGIVE command parsing && call - for (unsigned int i = 0; i < m_PygiveCommandVector.size(); i++) - { - m_pygive_cstr = (m_PygiveCommandVector[i]).c_str(); - pygive_(m_pygive_cstr,strlen(m_pygive_cstr)); - } - - // Parse Commands and Set Values from Properties Service... - for (unsigned int i = 0; i < m_pythiaCommandVector.size(); i++) { - ATH_MSG_INFO(" Command is: " << m_pythiaCommandVector[i]); - StringParse mystring(m_pythiaCommandVector[i]); - string myblock = mystring.piece(1); - string myentry = mystring.piece(2); - string mystr = mystring.piece(3); - string mystr2 = mystring.piece(4); - string mystr3 = mystring.piece(5); - int myint1 = mystring.intpiece(3); - int myint2 = mystring.intpiece(4); - int myint3 = mystring.intpiece(5); - int myint4 = mystring.intpiece(6); - int myint5 = mystring.intpiece(7); - double myfl0 = mystring.numpiece(3); - double myfl1 = mystring.numpiece(4); - double myfl2 = mystring.numpiece(5); - double myfl3 = mystring.numpiece(6); - // For ExoGraviton_i and PythiaBc_i user param. input - int myint6 = mystring.intpiece(2); - - // Print a warning when attempt is made to choose PYTUNE tune via MSTP(5) ; - // more than MSTP(5) setting is needed for consistent PYTUNE run within Athena - if (myblock == "pypars" && myentry == "mstp" && myint1==5) - { - ATH_MSG_WARNING("--------------------------------------------------------------------------------\n" - << " MSTP(5) set to "<< myint2 <<", Pythia recieves a command to run PYTUNE # " << myint2 << "\n" - << " Please note: " << "\n" - << " 1. it is up to you to switch off any ATLAS defaults you do not want to use; " << "\n" - << " - the interface takes care of this if PYTUNE tune is called via Pythia.Tune_Name=\"PYTUNE_" << myint2 << "\" in the jO." << "\n" - << " 2. in the jO overrides of the parameters set by PYTUNE # " << myint2 << " will have no effect " << "\n" - << " - this correspods to (standalone) Pythia behavior " << "\n" - << " 3. handling of non-existing PYTUNE tune is same as for (default) Pythia standalone." << "\n" - << "--------------------------------------------------------------------------------"); - } - - // Note that Pythia needs doubles hence the convert here - if (myentry!="use_PYINIT") - { - ATH_MSG_INFO(myblock << " block " << myentry << " item " << myint1 << " value " << myfl1); - } - else ATH_MSG_INFO(myblock << " block " << myentry << " set to " << mystr << " " <<mystr2<<" " <<mystr3<<" "<<myfl3); - - if (myblock=="pyinit") { - if (myentry=="user"){ - m_frame = "USER "; - m_external=mystr; - m_ExternalProcess = generator_int(mystr); - extproc_(&m_ExternalProcess); - } - else if(myentry=="use_PYINIT") - { - m_frame=mystr; - m_beam=mystr2; - m_target=mystr3; - m_win=myfl3; - } - else if(myentry=="FIXT"){ - m_frame="FIXT"; - } - else if(myentry=="pbar"){ - m_beam="P~- "; - } - else if(myentry=="win"){ - m_win=myfl0; - } - else if(myentry=="pylisti"){ - m_initlistlevel=myint1; - } - else if(myentry=="pylistf"){ - m_eventlistlevel=myint1; - } - else if(myentry=="dumpr"){ - m_firstlistevent=myint1; - m_lastlistevent=myint2; - } - else if(myentry=="output"){ - m_envval1=mystr; - m_fortout=49; - this->pydat1().mstu(11)=m_fortout; - } - else if(myentry=="rndm_IO"){ - m_RndmFileName=mystr; - m_RndmFileNumber=36; - m_RndmSwitch=myint2; - m_RndmFirstEvent=myint3; - m_RndmSkipEvents=myint4; - m_RndmMOVE=myint5; - if (m_RndmSwitch == 1) ++m_RndmSkipEvents; - - if (m_RndmSwitch > 0) - { - if (m_RndmFirstEvent < 1 || m_RndmSkipEvents < 0) - { - ATH_MSG_ERROR(" INCONSISTENT SET OF rndm_IO PARAMETERS : FirstEvent < 1 || SkipEvents < 0. DUMPING RNDM SEEDS SWITCHED OFF" << myentry); - m_RndmSwitch = 0; - } - } - - ATH_MSG_INFO(" !!!!!!!!!! WARNING ON PYTHIA RANDOM NUMBERS !!!!!!!! "); - ATH_MSG_INFO(" THE ATHENA/PYTHIA DOES NOT USE ANY MORE THE STANDARD "); - ATH_MSG_INFO(" PYTHIA RANDOM NUMBER SERVICES. SINCE RELEASE 5.2.0 THE"); - ATH_MSG_INFO(" ATHENA SERVICE AtRndmGenSvc IS USED. PLEASE FOR MORE "); - ATH_MSG_INFO(" DETAILS LOOK IN "); - ATH_MSG_INFO(" http://atlassw1.phy.bnl.gov/lxrsource/current/atlas/Generators/GeneratorModules/doc/Pythia.pdf "); - ATH_MSG_INFO(" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! "); - - m_RndmSwitch = 0; - } - else { - ATH_MSG_ERROR("PYTHIA ERROR, entry PYINIT has USER PBAR PYLISTI PYLISTF PYSTAT OUTPUT DUMPR WIN use_PYINIT AND RNDM_IO: YOU HAVE SPECIFIED " << myentry); - } - - - } - else if (myblock == "pysubs") { - if(myentry == "msel"){ - this->pysubs().msel()=myint1; - } - else if (myentry == "msub"){ - this->pysubs().msub(myint1)=myint2; - } - else if (myentry == "ckin"){ - this->pysubs().ckin(myint1)=myfl1; - } - else if (myentry == "kfin"){ - this->pysubs().kfin(myint1,myint2)=myint3; - } - else { - ATH_MSG_ERROR("PYTHIA ERROR, block PYSUBS has MSEL, MSUB, KFIN AND CKIN: YOU HAVE SPECIFIED " << myentry); - } - } - else if (myblock == "pypars"){ - if(myentry == "mstp"){ - this->pypars().mstp(myint1)=myint2; - } - else if(myentry == "msti"){ - this->pypars().msti(myint1)=myint2; - } - else if(myentry == "parp"){ - this->pypars().parp(myint1)=myfl1; - } - else if(myentry == "pari"){ - this->pypars().pari(myint1)=myfl1; - } - else { - ATH_MSG_ERROR("PYTHIA ERROR, block PYPARS has MSTP,PARP, MSTI AND PARI: YOU HAVE SPECIFIED " << myentry); - } - } - else if (myblock == "pydat1"){ - if(myentry == "mstu"){ - this->pydat1().mstu(myint1)=myint2; - } - else if(myentry == "mstj"){ - this->pydat1().mstj(myint1)=myint2; - } - else if(myentry == "paru"){ - this->pydat1().paru(myint1)=myfl1; - } - else if(myentry == "parj"){ - this->pydat1().parj(myint1)=myfl1; - } - else { - ATH_MSG_ERROR("PYTHIA ERROR, block PYDAT1 HAS MSTU, MSTJ, PARU AND PARJ: YOU HAVE SPECIFIED " << myentry); - } - } - else if (myblock == "pydat2"){ - if(myentry == "kchg"){ - this->pydat2().kchg(myint1,myint2)=myint3; - } - else if(myentry == "pmas"){ - this->pydat2().pmas(pycomp_(&myint1),myint2)=myfl2; - } - else if(myentry == "parf"){ - this->pydat2().parf(myint1)=myfl1; - } - else if(myentry == "vckm"){ - this->pydat2().vckm(myint1,myint2)=myfl2; - } - else { - ATH_MSG_ERROR("PYTHIA ERROR, block PYDAT2 HAS KCHG, PMAS, PARF AND VCKM: YOU HAVE SPECIFIED " << myentry); - } - } - else if (myblock == "pydat3"){ - if(myentry == "mdcy"){ - this->pydat3().mdcy(myint1,myint2)=myint3; - } - else if(myentry == "mdme"){ - this->pydat3().mdme(myint1,myint2)=myint3; - } - else if(myentry == "brat"){ - this->pydat3().brat(myint1)=myfl1; - } - else if(myentry == "kfdp"){ - this->pydat3().kfdp(myint1,myint2)=myint3; - } - else { - ATH_MSG_ERROR("PYTHIA ERROR, block PYDAT3 HAS KFDP, MDCY, BRAT AND MDME : YOU HAVE SPECIFIED " << myentry); - } - } - else if (myblock == "pydatr"){ - if(myentry == "mrpy"){ - ATH_MSG_INFO(" !!!!!!!!!! WARNING ON PYTHIA RANDOM NUMBERS !!!!!!!! "); - ATH_MSG_INFO(" THE ATHENA/PYTHIA DOES NOT USE ANY MORE THE STANDARD "); - ATH_MSG_INFO(" PYTHIA RANDOM NUMBER SERVICES. SINCE RELEASE 5.2.0 THE"); - ATH_MSG_INFO(" ATHENA SERVICE AtRndmGenSvc IS USED. PLEASE FOR MORE "); - ATH_MSG_INFO(" DETAILS LOOK IN "); - ATH_MSG_INFO(" http://atlassw1.phy.bnl.gov/lxrsource/current/atlas/Generators/GeneratorModules/doc/Pythia.pdf "); - ATH_MSG_INFO(" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! "); - - this->pydatr().mrpy(myint1)=myint2; - } - else if(myentry == "rrpy"){ - this->pydatr().rrpy(myint1)=myfl1; - } - else { - ATH_MSG_ERROR("PYTHIA ERROR, block PYDATR HAS MRPY AND RRPY: YOU HAVE SPECIFIED " << myentry); - } - } - else if (myblock == "pymssm"){ - if (myentry=="imss"){ - if (myint1 == 21 || myint1 == 22) { - ATH_MSG_WARNING("The setting of imss(21) and imss(22) is not allowed. When imss(1)=11 is chosen imss(21) and imss(22) are set to 66 by default"); - } else { - this->pymssm().imss(myint1)=myint2; - } - } - else if (myentry=="rmss"){ - this->pymssm().rmss(myint1)=myfl1; - } - else { - ATH_MSG_ERROR("PYTHIA ERROR, block PYMSSM has IMSS AND RMSS: YOU HAVE SPECIFIED "<< myentry); - } - } - else if (myblock == "pypued"){ - if (myentry=="iued") - { - this->pypued().iued(myint1)=myint2; - } - else if (myentry=="rued"){ - this->pypued().rued(myint1)=myfl1; - } - else { - ATH_MSG_ERROR("PYTHIA ERROR, block PYPUED has IUED AND RUED: YOU HAVE SPECIFIED "<< myentry); - } - } - else if (myblock == "pypevwt"){ - if (myentry=="ievwt") - { - this->pypevwt().ievwt(myint1)=myint2; - } - else if (myentry=="revwt"){ - this->pypevwt().revwt(myint1)=myfl1; - } - else { - ATH_MSG_ERROR("PYTHIA ERROR, block PYPEVWT has IEVWT AND REVWT: YOU HAVE SPECIFIED "<< myentry) ; - } - } - //CLA: RPV couplings - else if (myblock == "pymsrv") { - //LLE - if (myentry=="rvlam"){ - this->pymsrv().rvlam(myint1)=myfl1; - ATH_MSG_INFO("setting Yukawa coupling lambda to "<< myfl1); - } - //LQD - else if (myentry=="rvlamp"){ - this->pymsrv().rvlamp(myint1)=myfl1; - ATH_MSG_INFO("setting Yukawa coupling lambda^prime to "<< myfl1); - } - //UDD - else if (myentry=="rvlamb"){ - this->pymsrv().rvlamb(myint1)=myfl1; - ATH_MSG_INFO("setting Yukawa coupling lambda^doubelprime to "<< myfl1); - } - else { - ATH_MSG_ERROR("PYTHIA ERROR, block PYMSRV has RVLAM, RVLAMP AND RVLAMB: YOU HAVE SPECIFIED "<< myentry); - } - } - else if (myblock == "pyint2"){ - if (myentry == "iset"){ - this->pyint2().iset(myint1)=myint2; - } - else if (myentry == "kfpr"){ - this->pyint2().kfpr(myint1,myint2)=myint3; - } - else if (myentry == "coef"){ - this->pyint2().coef(myint1,myint2)=myfl2; - } - else if (myentry == "icol"){ - this->pyint2().icol(myint1,myint2,myint3)=myint4; - } - else { - ATH_MSG_ERROR("PYTHIA ERROR, block PYINT2 has ISET KFPR COEF AND ICOL: YOU HAVE SPECIFIED "<< myentry); - } - } - else if (myblock == "pystat"){ - m_pystatlistlevel.clear(); - for (unsigned i = 2; i <= mystring.string_size(); ++i) - m_pystatlistlevel.push_back(mystring.intpiece(i)); - } - else if (myblock == "pytcsm"){ - if (myentry == "itcm"){ - this->pytcsm().itcm(myint1)=myint2; - } - else if (myentry=="rtcm"){ - this->pytcsm().rtcm(myint1)=myfl1; - } - else { - ATH_MSG_ERROR("PYTHIA ERROR, block PYTCM has ITCM AND RTCM: YOU HAVE SPECIFIED "<< myentry); - } - - } - - // AcerMC tt~ decay mode switching - else if (myblock == "acermc" && myentry=="acset12") { - if (m_ExternalProcess == ACERMC) { - this->acermc_acset().acset12()=myint1; - } - } - // for ExoGraviton user parameter setup - else if (myblock == "grav") - { - ::WriteGravParam(myint6, myint1, (double)myfl0); - } - // for PythiaBc_i user parameters setup - /* - else if (myblock == "pythiabc") - { - ::WritePythiaBcParam(myint6, myint1, (double)myfl0); - } - */ - else { - ATH_MSG_ERROR(" ERROR in PYTHIA PARAMETERS " << myblock << " is and invalid common block name !"); - } - } - // End of param parsing - - // Set the logical Unit Number for the immss(1)=11 option and open the file - if (this->pymssm().imss(1) == 11) { - int syunit = 66; - this->pymssm().imss(21) = syunit; - this->pymssm().imss(22) = syunit; - const std::string& fileName = m_read_Filesusy; - opensusyfile_(fileName.c_str(),&syunit,fileName.size()); - } - - // !!!!! PROTECT AGAINST mstp(81)/mstp(82) Pythia looping - if (this->pypars().mstp(81) == 0 && this->pypars().mstp(82) > 2) - { - this->pypars().mstp(82) = 1; - ATH_MSG_INFO(" !!!!!!!!!! WARNING ON PYTHIA LOOPING !!!!!!!!"); - ATH_MSG_INFO(" YOU HAVE SWITCHED OFF MULTIPLE INTERACTIONS, mstp(81) = 0"); - ATH_MSG_INFO(" THE DEFAULT ATLAS MULTIPLE INTERACTIONS SCENARIO, mstp(82) = 4"); - ATH_MSG_INFO(" CHANGED TO mstp(82) = 1, BECAUSE PYTHIA IS LOOPING WHEN"); - ATH_MSG_INFO(" mstp(81) = 0 and mstp(82) > 2"); - ATH_MSG_INFO(" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); - } - - // Now call pyinit and set listing - // Note the `extra' arguments to pyinit on the end of the argument - // list which do *not* explicitly occur in the FORTRAN - // implementation of the function -- one for each character - // variable, in the same order (reference Randy Herber, - // herber@fnal.gov). Note also that the `extern "C"' function - // declaration matches the C usage rather than the FORTRAN - // definition of the PYINIT function and therefore includes the 3 - // extra arguments. - // activate the block data - const char* envval = m_envval1.c_str(); - initpyblock_(&m_fortout,envval); - - if (m_RndmSwitch > 0) - { - const char* RndmFileName = m_RndmFileName.c_str(); - m_RndmFileLength = openrandom_(&m_RndmSwitch, &m_RndmFileNumber, RndmFileName); - if (m_RndmSwitch ==2 ) { - ATH_MSG_INFO(" THERE ARE " << m_RndmFileLength << " EVENTS STORED IN THE PYTHIA RANDOM NUMBER FILE"); - } - } - - const char* frame = m_frame.c_str(); - const char* beam = m_beam.c_str(); - double winval = m_win; - const char* target = m_target.c_str(); - int minlist = m_initlistlevel; - // special initialization for comphep - if(m_external=="comphep"){ - rinpar_(); - subnum_(); - rheader_(); - } - // special initialization for matchig - if(m_external=="matchig") - { - ATH_MSG_DEBUG("Calling setecm with argument winval=" << winval); - setecm_(&winval); - } - - // end of comphep initialization - - ATH_MSG_DEBUG(" ****** BEFORE PYINIT ********"); - ATH_MSG_DEBUG(" MSTU(11) " << this->pydat1().mstu(11) << - " MSTU(20) " << this->pydat1().mstu(20) << - " MSTU(118) " << this->pydat1().mstu(118)); - ATH_MSG_DEBUG(" PARU(108) " << this->pydat1().paru(108) << - " PARU(117) " << this->pydat1().paru(117) << - " PARU(118) " << this->pydat1().paru(118)); - for (int ii = 210; ii < 353; ++ii) - { - ATH_MSG_DEBUG(" BRAT(" << ii << ") " - << this->pydat3().brat(ii)); - } - ATH_MSG_DEBUG(" MDCY(310) " - << this->pydat3().mdcy(310,1) << ", " - << this->pydat3().mdcy(310,2) << ", " - << this->pydat3().mdcy(310,3)); - - // Save the PYTHIA_INIT stream seeds.... - CLHEP::HepRandomEngine* engine = PythiaResMod::p_AtRndmGenSvc->GetEngine(PythiaResMod::pythia_stream); - const long* sip = engine->getSeeds(); - long int si1 = sip[0]; - long int si2 = sip[1]; - - - // write warning for non p-p collistion, strip white-spaces off beam and target strings - std::string beam_strp(beam); boost::trim(beam_strp); - std::string target_strp(target); boost::trim(target_strp); - if ((beam_strp!="P" && beam_strp!="P+" && beam_strp!="p" && beam_strp!="p+") || (target_strp!="P" && target_strp!="P+" && target_strp!="p" && target_strp!="p+")) - { - ATH_MSG_WARNING("PYINIT(FRAME,BEAM,TARGET,WIN) called from within ATHENA using parameters: "); - ATH_MSG_WARNING("FRAME : "<< frame << ", BEAM : "<< beam <<", TARGET: "<< target<< ", WIN: "<< winval); - ATH_MSG_WARNING("Initialization with non-standard BEAM-TARGET combination: "); - ATH_MSG_WARNING("making sure sensible PYTHIA parameters setup is used is up to you."); - } - - // call specix function to enable the use of modified diff. x-sect evaluation for Z',W' - // specix(int=1)=enabled, specix(int=0) disabled - // int can be passed to PythiaResMod using UseResMod property in jO - specix_(&m_UseResMod); - - pyinit_(frame, beam, target, &winval, - strlen(frame), strlen(beam), strlen(target)); - - // ... and set them back to the stream for proper save - PythiaResMod::p_AtRndmGenSvc->CreateStream(si1, si2, PythiaResMod::pythia_stream); - - PythiaResMod::pythia_stream = "PYTHIA"; - - ATH_MSG_DEBUG(" ****** AFTER PYINIT ********"); - ATH_MSG_DEBUG(" MSTU(11) " << this->pydat1().mstu(11) << - " MSTU(20) " << this->pydat1().mstu(20) << - " MSTU(118) " << this->pydat1().mstu(118)); - ATH_MSG_DEBUG(" PARU(108) " << this->pydat1().paru(108) << - " PARU(117) " << this->pydat1().paru(117) << - " PARU(118) " << this->pydat1().paru(118)); - for (int ii = 210; ii < 353; ++ii) - { - ATH_MSG_DEBUG(" BRAT(" << ii << ") " - << this->pydat3().brat(ii)); - } - ATH_MSG_DEBUG(" MDCY(310) " - << this->pydat3().mdcy(310,1) << ", " - << this->pydat3().mdcy(310,2) << ", " - << this->pydat3().mdcy(310,3)); - - ATH_MSG_DEBUG(std::resetiosflags(std::ios::fixed)); - - - pylist_(&minlist); - m_events = 0; - ATH_MSG_DEBUG(" kfpr (186,2)============ " << this->pyint2().kfpr(186,2)); - ATH_MSG_DEBUG(" kfpr (187,2)============ " << this->pyint2().kfpr(187,2)); - - //decay table - const char *p_envar1="PYDAT"; - // char *p_envval1=0; - // p_envval1 = - getenv(p_envar1); - - // do parameter querries after PYINIT : - //PYGIVE command parsing && call - - if (m_Param_Query_AfterInit.size()!=0) - { - //save MSTU(11) value before the parout_ call which starts a new stream: - int tmp_m11=this->pydat1().mstu(11); - // set output to a dedicated file for params after the initialization - int tmp_mode=1; - parout_(&tmp_mode); - // query the requested parameter values: - for (unsigned int i = 0; i < m_Param_Query_AfterInit.size(); i++) - { - m_pygive_init_cstr = (m_Param_Query_AfterInit[i]).c_str(); - pygive_(m_pygive_init_cstr,strlen(m_pygive_init_cstr)); - } - //set MSTU(11) back to the default value - this->pydat1().mstu(11)=tmp_m11; - } - - // get rid of an residual old event generation parameters data: - if (m_Param_Query_AfterGen.size()!=0) - { - //save MSTU(11) value before the parout_ call which starts a new stream: - int tmp_m11=this->pydat1().mstu(11); - // set output to a dedicated file for params after the initialization - int tmp_mode=2; - parout_(&tmp_mode); - //set MSTU(11) back to the default value - this->pydat1().mstu(11)=tmp_m11; - } - - // Set size of common blocks in HEPEVT: note these correspond to stdhep - HepMC::HEPEVT_Wrapper::set_sizeof_int(sizeof(int)); - HepMC::HEPEVT_Wrapper::set_sizeof_real(8); - HepMC::HEPEVT_Wrapper::set_max_number_entries(10000); - - return StatusCode::SUCCESS; -} - - -//--------------------------------------------------------------------------- - - -StatusCode PythiaResMod::callGenerator() { - ATH_MSG_DEBUG(" PYTHIA generating."); - - // Write/Read the random numbers to/from file if requested - if (m_RndmSwitch > 0) RandomNumberIO(); - - // Save the random number seeds in the event - CLHEP::HepRandomEngine* engine = PythiaResMod::p_AtRndmGenSvc->GetEngine(PythiaResMod::pythia_stream); - const long* s = engine->getSeeds(); - m_seeds.clear(); - m_seeds.push_back(s[0]); - m_seeds.push_back(s[1]); - - // Generate event - pyevnt_(); - - // update event counter - ++m_events; - int mevlist=m_eventlistlevel; - // Is the event to be listed - if ( m_events >= m_firstlistevent && - m_events <= m_lastlistevent) { - ATH_MSG_INFO("PYEVNT event no. " << m_events << " will be listed"); - if (m_frame == "USER ") - { - int uspr = 7; - pylist_(&uspr); // Special listing when external generator was selected - } - pylist_(&mevlist); // List this event if required - } - - // make parameter querry after event generation: - for (unsigned int i = 0; i < m_Param_Query_AfterGen.size(); i++) - { - int tmp_m11=this->pydat1().mstu(11); - int tmp_mode=3; - parout_(&tmp_mode); - m_pygive_gen_cstr = (m_Param_Query_AfterGen[i]).c_str(); - pygive_(m_pygive_gen_cstr,strlen(m_pygive_gen_cstr)); - //set MSTU(11) back to the default value - this->pydat1().mstu(11)=tmp_m11; - } - - // Tell lunhep to convert from PYJETS to HEPEVT - int mconv=1; - // Do the conversion - pyhepc_(&mconv); // Use STDHEP translation routine 1999/01/27 CG - if ( HepMC::HEPEVT_Wrapper::number_entries() <= 0 ) { - std::cout << "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" << std::endl; - std::cout << "!!! " << generator_name(m_ExternalProcess) << " TERMINATES NORMALY: NO MORE EVENTS IN FILE !!!" << std::endl; - std::cout << "!!! PLEASE IGNORE ANY ATHENA ERROR MESSAGES LIKE !!!" << std::endl; - std::cout << "!!! AthenaEventLoopMgr ERROR Terminating event processing loop due to errors !!!" << std::endl; - std::cout << "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" << std::endl; - return StatusCode::FAILURE; - } - HepMC::HEPEVT_Wrapper::set_event_number(m_events); - return StatusCode::SUCCESS; -} - -//--------------------------------------------------------------------------- - -StatusCode PythiaResMod::genFinalize() { - ATH_MSG_INFO(" PYTHIA Ending." ); - for (std::vector<int>::iterator i = m_pystatlistlevel.begin(); i != m_pystatlistlevel.end(); ++i) - { - ATH_MSG_INFO("Call PYSTAT at endRun with level " << *i); - pystat_(&(*i)); - } - if (m_SetCrossSection==m_Default_SetCrossSection) - { - //always print out the non-scaled x-section - std::cout << "MetaData: cross-section (nb)= " << 1000000. * (this->pyint5().xsec(0,3))<< std::endl; - //print out additional MetaData fields if cross-section scaling is requested - if (m_xsscale != m_Default_xsscale) - { - std::cout << "MetaData: cross-section*CrossSectionScaleFactor (nb)= " << 1000000. * (this->pyint5().xsec(0,3)) * m_xsscale << std::endl; - std::cout << "MetaData: CrossSectionScaleFactor = " << m_xsscale << std::endl; - } - } - else - { - // cross section is a fixed number: - std::cout << " Printing cross-section passed by SetCrossSection in jO: "<< std::endl; - std::cout << " MetaData: cross-section (nb)= " << m_SetCrossSection << std::endl; - } - return StatusCode::SUCCESS; -} - -//--------------------------------------------------------------------------- - -StatusCode PythiaResMod::fillEvt(HepMC::GenEvent* evt) { - ATH_MSG_DEBUG(" PYTHIA Atlas_HEPEVT Filling."); - store_Atlas_HEPEVT(); - - ATH_MSG_DEBUG(" PYTHIA Filling." ); - HepMC::IO_HEPEVT hepio; - hepio.set_print_inconsistency_errors(0); - - hepio.fill_next_event(evt); - int pr_id = PYTHIA + m_ExternalProcess + this->pyint1().mint(1); - if (m_ExternalProcess > 0) pr_id = PYTHIA + m_ExternalProcess; - evt->set_signal_process_id(pr_id); - evt->set_random_states(m_seeds); - evt->weights().push_back(this->pypars().pari(7)); - evt->weights().push_back(this->pypars().pari(9)); - evt->weights().push_back(this->pypars().pari(10)); - - // Set beam particle status = 4 - if (evt->valid_beam_particles()) { - evt->beam_particles().first->set_status(4); - evt->beam_particles().second->set_status(4); - } - - // PDF weights, using Pdf Info object: pdf_id, x_1, x_1, Q2, f_1, f_2 - const int id1=this->pypars().msti(15); - const int id2=this->pypars().msti(16); - const double x1=this->pypars().pari(33); - const double x2=this->pypars().pari(34); - const double q=this->pypars().pari(23); - const double pdf1=(double)this->pypars().pari(29); // x*pdf1 - const double pdf2=(double)this->pypars().pari(30); // x*pdf2 - - if ( m_external == "lhef" ) { - Lhefinfo linfo; - - ATH_MSG_DEBUG("lhefinfo, id1: " << linfo.id1()); - ATH_MSG_DEBUG("lhefinfo, id2: " << linfo.id2()); - ATH_MSG_DEBUG("lhefinfo, x1: " << linfo.x1()); - ATH_MSG_DEBUG("lhefinfo, x2: " << linfo.x2()); - ATH_MSG_DEBUG("lhefinfo, scale: " << linfo.scalePdf()); - ATH_MSG_DEBUG("lhefinfo, xpdf1: " << linfo.xPdf1()); - ATH_MSG_DEBUG("lhefinfo, xpdf2: " << linfo.xPdf2()); - - HepMC::PdfInfo tmp_pdi( linfo.id1(), linfo.id2(), linfo.x1(), linfo.x2(), - linfo.scalePdf(), linfo.xPdf1(), linfo.xPdf2() ); - evt->set_pdf_info(tmp_pdi); - - } else { - HepMC::PdfInfo tmp_pdi(id1,id2,x1,x2,q,pdf1,pdf2); - evt->set_pdf_info(tmp_pdi); - } - - ATH_MSG_DEBUG("pdfinfo:"<< evt->pdf_info()->id1()); - ATH_MSG_DEBUG("pdfinfo:"<< evt->pdf_info()->id2()); - ATH_MSG_DEBUG("pdfinfo:"<< evt->pdf_info()->x1()); - ATH_MSG_DEBUG("pdfinfo:"<< evt->pdf_info()->x2()); - ATH_MSG_DEBUG("pdfinfo:"<< evt->pdf_info()->scalePDF()); - ATH_MSG_DEBUG("pdfinfo:"<< evt->pdf_info()->pdf1()); - ATH_MSG_DEBUG("pdfinfo:"<< evt->pdf_info()->pdf2()); - - // Convert cm->mm and GeV->MeV - // cmTomm(evt); - GeVToMeV(evt); - - return StatusCode::SUCCESS; -} - - -void -PythiaResMod::RandomNumberIO() -{ - // m_RndmSwitch == 1 : Write the random numbers of the selected events into - // the file m_RndmFileNumber - if (m_RndmSwitch == 1) - { - int WriteEvent = m_events - m_RndmFirstEvent + 1; - if (WriteEvent >= 0) - { - WriteEvent = WriteEvent%m_RndmSkipEvents; - if (WriteEvent == 0) pyrget_(&m_RndmFileNumber, &m_RndmMOVE); - } - } - // m_RndmSwitch == 2 : Read the random numbers from the selected records from - // the file m_RndmFileNumber - else if (m_RndmSwitch == 2) - { - int MOVE = m_RndmMOVE; - if (MOVE == 0) - { - if (m_RndmFirstEvent > 0) - { - if (m_events == 0) - { - MOVE = m_RndmFirstEvent - 1; - } - else - { - MOVE = m_RndmSkipEvents; - } - } - int c_pos = this->pydatr().mrpy(6) + MOVE; - if (c_pos < m_RndmFileLength) - { - ATH_MSG_INFO("EVENT " << m_events+1 - << " will be generated with the random seeds read from record " - << c_pos+1 << " in file " << m_RndmFileName); - pyrset_(&m_RndmFileNumber, &MOVE); - } - } - else - { - pyrset_(&m_RndmFileNumber, &MOVE); - } - } -} - - - -void -PythiaResMod::store_Atlas_HEPEVT() -{ - - ATH_MSG_DEBUG("s_atlas_HEPEVT------" << s_atlas_HEPEVT->nhep() ); - ATH_MSG_DEBUG("s_atlas_HEPEVT------" << s_atlas_HEPEVT->isthep(10) ); - ATH_MSG_DEBUG("s_atlas_HEPEVT------" << s_atlas_HEPEVT->idhep(10) ); - ATH_MSG_DEBUG("s_atlas_HEPEVT------" << s_atlas_HEPEVT->jmohep(1,10) ); - ATH_MSG_DEBUG("s_atlas_HEPEVT------" << s_atlas_HEPEVT->jdahep(2,10) ); - - s_atlas_HEPEVT->fill(); - - Atlas_HEPEVT* ahep = new Atlas_HEPEVT(); - *(ahep) = *(s_atlas_HEPEVT); - static const std::string keyid = "Pythia"; - StatusCode sc = evtStore()->record(ahep, keyid); - if (!sc.isSuccess()) { - ATH_MSG_WARNING("Could not record Atlas_HEPEVT"); - } - -} diff --git a/Generators/PythiaExo_i/src/PythiaResMod_i_entries.cxx b/Generators/PythiaExo_i/src/PythiaResMod_i_entries.cxx deleted file mode 100644 index 929df1e915728c33872ed29c22a825e90e66a876..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/PythiaResMod_i_entries.cxx +++ /dev/null @@ -1,7 +0,0 @@ -/* - Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration -*/ -#include "PythiaExo_i/PythiaResMod.h" - -DECLARE_COMPONENT( PythiaResMod ) - diff --git a/Generators/PythiaExo_i/src/PythiaTau3Mu.cxx b/Generators/PythiaExo_i/src/PythiaTau3Mu.cxx deleted file mode 100644 index ed53a17c37a20d144a919a31b5918b0a321a5150..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/PythiaTau3Mu.cxx +++ /dev/null @@ -1,13 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#include "PythiaExo_i/PythiaTau3Mu.h" - -//-------------------------------------------------------------------------- -PythiaTau3Mu::PythiaTau3Mu(const std::string& name, - ISvcLocator* pSvcLocator): Pythia(name,pSvcLocator){ -} - -PythiaTau3Mu::~PythiaTau3Mu(){ -} diff --git a/Generators/PythiaExo_i/src/PythiaTau3Mu_i_entries.cxx b/Generators/PythiaExo_i/src/PythiaTau3Mu_i_entries.cxx deleted file mode 100644 index d49b0f34687ac1780aefdce6e592343b402decc2..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/PythiaTau3Mu_i_entries.cxx +++ /dev/null @@ -1,7 +0,0 @@ -/* - Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration -*/ -#include "PythiaExo_i/PythiaTau3Mu.h" - -DECLARE_COMPONENT( PythiaTau3Mu ) - diff --git a/Generators/PythiaExo_i/src/PythiaTopMdiff.cxx b/Generators/PythiaExo_i/src/PythiaTopMdiff.cxx deleted file mode 100644 index efe65850eebafe529bf956457abd22b3148415e8..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/PythiaTopMdiff.cxx +++ /dev/null @@ -1,1088 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// File: GeneratorModules/PythiaTopMdiff.cxx -// Description: Generate pythia events and store the result in the Transient Store. -// -// AuthorList: -// Ian Hinchliffe: Initial Code June: 2000 -// Modeled after the CDF code by Stan Thompson -// Parsing added August 2000 -// More switches added Feb 2001 -// Les Houches external process interface added May 2002 -// Added access to pyint1 common Sept 2002 -// Added access to pypued common Oct. 2008 (L. Mijovic, liza.mijovic@cern.ch) -// Direct use of generator codes - replaced with gen. names (E.M.Lobodzinska, Dec 2008) -// Remove obsolete code and pseudo atlas default pythia settings (Cano Ay, April 2009) -// Move Pythia ATLAS tune from Pythia_i + jO to Pythia_i, LM -// Added PYGIVE functionality, LM, Jul. 09 -// Tunes schema, LM, Aug. 09 -// Conversion to AthAlgorithm methods (via GenModule) and clean-up, Andy Buckley, Dec 2009 -// added access to pypevwt common, March 2010: Eric Feng (Chicago) <Eric.Feng@cern.ch> - -#include "PythiaExo_i/PythiaTopMdiff.h" -#include "TruthUtils/GeneratorName.h" -#include "GeneratorUtils/StringParse.h" -#include <cstdlib> - -#include "CLHEP/Random/RandFlat.h" -#include "AthenaKernel/IAtRndmGenSvc.h" - -#include "HepMC/IO_HEPEVT.h" -#include "HepMC/HEPEVT_Wrapper.h" - -#include "ExoGraviton_i/ExoGraviton.h" -#include "PathResolver/PathResolver.h" - -#include "PythiaExo_i/Lhefinfo.h" - -#include "boost/algorithm/string/trim.hpp" - - -// Pointer to AtRndmGenSvc -IAtRndmGenSvc* PythiaTopMdiff::p_AtRndmGenSvc = 0; -std::string PythiaTopMdiff::pythia_stream = "PYTHIA_INIT"; -extern "C" double atl_pyr_( int* /*idummy*/ ) -{ - CLHEP::HepRandomEngine* engine = PythiaTopMdiff::p_AtRndmGenSvc->GetEngine(PythiaTopMdiff::pythia_stream); - return CLHEP::RandFlat::shoot(engine); -} - -extern "C" { - void initpyblock_(int*, const char*); - int openrandom_(int*, int*, const char*); - void pyinit_(const char*, - const char*, - const char*, - double* , - int, // lengths of character strings - int,// (should be value, not reference) - int - ); - void pyevnt_(); - void pyevnw_(); - void pystat_(int*); - void pylist_(int*); - void pyupda_(int*, int*); - void pyrget_(int*, int*); - void pyrset_(int*, int*); - void addparticle_(const char*, int slen); - //pygive implementation: calls Pythia SUBROUTINE PYGIVE(CHIN) - void pygive_(const char*,int); // character string to pygive && its length - //pytune : calls Pythia SUBROUTINE PYTUNE(ITUNE) - //this call should be used in case one wants to override some of the values PYTUNE sets from the jO - //in contrary to using MSTP(5) value the PYTUNE will in this case act before PYINIT - void pytune_(int*); // value of int corresponds to the respective ITUNE value - int pycomp_(int*); - // void lunhep_(int*); // STDHEP routine for PYJETS->HEPEVT - void pyhepc_(int*); - int opdcay_(const char*, int*, char*, int, int); - void cldcay_(int*); - void rinpar_(); // comphep - void subnum_(); // comphep file - void rheader_(); // comphep initialization - void extproc_(int*); - void opensusyfile_(const char* ,int * , int); - void setecm_(double*); - void parout_(int*); - void specix_(int*); -} - - -Atlas_HEPEVT* PythiaTopMdiff::s_atlas_HEPEVT = new Atlas_HEPEVT(); - - -//-------------------------------------------------------------------------- - - -PythiaTopMdiff::PythiaTopMdiff(const std::string& name, ISvcLocator* pSvcLocator) - : GenModule(name, pSvcLocator) -{ - pythia_stream="PYTHIA_INIT"; - // ATLAS default tune - m_Default_Tune_Name="ATLAS_20110002"; - m_Default_Tune_Type="ATLAS"; - m_Default_Tune_Index=20110002; - m_Starting_Tune_Name="ATLAS_99999999"; - m_Starting_Tune_Type="ATLAS"; - m_Starting_Tune_Index=99999999; - //set dummy values at start - m_Tune_Index=0; - m_Tune_Type=""; - //for non-0 value call PYTUNE directly - m_direct_call_to_pytune=0; - // some defaults - m_firstlistevent = -1; - m_lastlistevent = -1; - // old schema, backw. compatibility - m_mc0809_Tune_Type="ATLAS"; - m_mc09_Tune_Index=20090001; - m_mc08_Tune_Index=20080001; - m_Default_useAtlasPythiaRecomm=true; - m_Default_useAtlasPythiaCommon=true; - m_Default_useAtlasPythiaTune09=false; - m_Default_useAtlasPythiaTune08=false; - m_Default_useNoAtlasPythiaParam=false; - // printing-out manually set x-section for the MetaData - m_Default_SetCrossSection=-1.0; - m_Default_xsscale=-99999; - // properties - declareProperty("SusyInputFile", m_read_Filesusy = " "); - declareProperty("PythiaCommand", m_pythiaCommandVector); - declareProperty("PygiveCommand", m_PygiveCommandVector); - declareProperty("Direct_call_to_pytune", m_direct_call_to_pytune); - declareProperty("Param_Query_AfterInit",m_Param_Query_AfterInit); - declareProperty("Param_Query_AfterGen", m_Param_Query_AfterGen); - declareProperty("CrossSectionScaleFactor", m_xsscale=m_Default_xsscale); - declareProperty("SetAtlasDefaults", m_AtlasDefaults = false ); - declareProperty("Tune_Name", m_Tune_Name = m_Starting_Tune_Name ); - declareProperty("SetCrossSection",m_SetCrossSection=m_Default_SetCrossSection); - declareProperty("addParticle", m_addParticle = false ); - declareProperty("UseTopMdiff", m_UseTopMdiff = 0); - // old schema, backw. compatibility - declareProperty("useAtlasPythiaRecomm", m_useAtlasPythiaRecomm = m_Default_useAtlasPythiaRecomm); - declareProperty("useAtlasPythiaCommon", m_useAtlasPythiaCommon = m_Default_useAtlasPythiaCommon); - declareProperty("useAtlasPythiaTune09", m_useAtlasPythiaTune09 = m_Default_useAtlasPythiaTune09); - declareProperty("useAtlasPythiaTune08", m_useAtlasPythiaTune08 = m_Default_useAtlasPythiaTune08); - declareProperty("useNoAtlasPythiaParam", m_useNoAtlasPythiaParam = m_Default_useNoAtlasPythiaParam); - - m_pygive_gen_cstr = 0; - m_pygive_init_cstr = 0; - m_pygive_cstr = 0; - - m_win = 0.; - m_msel = 0; - m_eventlistlevel = 0; - m_initlistlevel = 0; - m_randomseed = 0; - m_fortout = 0; - m_RndmFileNumber = 0; - m_RndmSwitch = 0; - m_RndmFirstEvent = 0; - m_RndmSkipEvents = 0; - m_RndmMOVE = 0; - m_RndmFileLength = 0; - m_events = 0; - m_ExternalProcess = 0; - m_atlasTune_loop_prot = 0; - - -} -//-------------------------------------------------------------------------- -PythiaTopMdiff::~PythiaTopMdiff(){ -//-------------------------------------------------------------------------- -} -//------------------------------------------------------------- -//-------------- -// Operations -- -//-------------- -Pydat1& PythiaTopMdiff::pydat1() { - return m_pydat1; -} -Pydat2& PythiaTopMdiff::pydat2() { - return m_pydat2; -} -Pydat3& PythiaTopMdiff::pydat3() { - return m_pydat3; -} -Pysubs& PythiaTopMdiff::pysubs() { - return m_pysubs; -} -Pypars& PythiaTopMdiff::pypars() { - return m_pypars; -} -Pydatr& PythiaTopMdiff::pydatr() { - return m_pydatr; -} -Pymssm& PythiaTopMdiff::pymssm() { - return m_pymssm; -} -Pypued& PythiaTopMdiff::pypued() { - return m_pypued; -} -Pypevwt& PythiaTopMdiff::pypevwt() { - return m_pypevwt; -} -Pymsrv& PythiaTopMdiff::pymsrv() { - return m_pymsrv; -} -Pyint1& PythiaTopMdiff::pyint1() { - return m_pyint1; -} -Pyint2& PythiaTopMdiff::pyint2() { - return m_pyint2; -} -Pyint5& PythiaTopMdiff::pyint5() { - return m_pyint5; -} -Pytcsm& PythiaTopMdiff::pytcsm() { - return m_pytcsm; -} -AcerMC_acset& PythiaTopMdiff::acermc_acset() { - return m_acermc_acset; -} - - -//--------------------------------------------------------------------------- - - -StatusCode PythiaTopMdiff::genInitialize() { - // Initialise the listing output, parameter and decay data input streams - ATH_MSG_INFO(" PYTHIA INITIALISING."); - - /// @todo Use ServiceHandle - static const bool CREATEIFNOTTHERE(true); - StatusCode RndmStatus = service("AtRndmGenSvc", - PythiaTopMdiff::p_AtRndmGenSvc, - CREATEIFNOTTHERE); - if (!RndmStatus.isSuccess() || 0 == PythiaTopMdiff::p_AtRndmGenSvc) - { - ATH_MSG_ERROR(" Could not initialize Random Number Service"); - return RndmStatus; - } - PythiaTopMdiff::pythia_stream = "PYTHIA_INIT"; - - m_atlasTune_loop_prot=0; - - // set up the input parameters to pyinit: these can be changed by the user - m_frame = "CMS "; - m_beam = "P "; - m_target = "P "; - m_win=10000.; - m_initlistlevel=11; - m_pystatlistlevel.push_back(1); - m_fortout=0; - - m_RndmFileName=" "; - m_RndmFileNumber=0; - m_RndmSwitch=0; - m_RndmFirstEvent=1; - m_RndmSkipEvents=0; - m_RndmMOVE=0; - m_RndmFileLength=0; - m_ExternalProcess = 0; - - // end of setup to pyinit -// special initialisation for Pythiasgluon - if(m_addParticle==true) - { -//adding a new particle to Pythia for PythiaSgluon - std::string s_newParticleCARD_path = - PathResolver::find_file("sgluons.dat", "DATAPATH"); - const char* c_newParticleCARD_path = s_newParticleCARD_path.c_str(); - addparticle_(c_newParticleCARD_path,strlen(c_newParticleCARD_path)); - } - //now set defaults - m_randomseed=19780503; - this->pydatr().mrpy(1) = m_randomseed; // can be overwritten by user - // default process is ttbar - // these can be overwritten by user. - m_msel=6; - this->pysubs().msel() = m_msel; - - // Set the ATLAS defaults - if (m_AtlasDefaults) - { - ATH_MSG_WARNING("********** You have chosen the default Atlas Settings. **********"); - ATH_MSG_WARNING("********** This switch is not valid any more. **********"); - } - - //m_Tune_Name parsing to find m_Tune_Type and m_Tune_Index for setPythiaTune() and atlasTune() calls - std::string::size_type sep_index = m_Tune_Name.find_first_of('_'); - if (sep_index != std::string::npos) - { - m_Tune_Type=m_Tune_Name.substr(0,sep_index); - // atoi : returns 0 if conversion not possible - no additional protection needed - m_Tune_Index=atoi((m_Tune_Name.substr(sep_index+1,m_Tune_Name.length()-1)).c_str()); - } - else - { - // invalid Tune_Name, m_Tune_Type and m_Tune_Index kept at the dummy vals from constructor, - // let setPythiaTune() handle the error - ATH_MSG_WARNING("Invalid Tune_Name: "<< m_Tune_Name <<" specified ."); - } - // set any Pythia parameters different from Pythia defaults - // allow only one reset - if (m_atlasTune_loop_prot<2) - { - // m_atlasTune_loop_prot counts setPythiaTune() calls in setPythiaTune.cxx - StatusCode sc=setPythiaTune(); - if ( sc.isFailure() ) - { - ATH_MSG_FATAL("ERROR returned from setPythiaTune, exit."); - return StatusCode::FAILURE; - } - } - else - { - ATH_MSG_FATAL("More than one reset attempt of tune using setPythiaTune."); - ATH_MSG_FATAL("Please correct your jobOptions."); - return StatusCode::FAILURE; - } - - //call pytune directly in case any parameters set py the tune are to be overwritten from jO - if (m_direct_call_to_pytune!=0) pytune_(&m_direct_call_to_pytune); - - //PYGIVE command parsing && call - for (unsigned int i = 0; i < m_PygiveCommandVector.size(); i++) - { - m_pygive_cstr = (m_PygiveCommandVector[i]).c_str(); - pygive_(m_pygive_cstr,strlen(m_pygive_cstr)); - } - - // Parse Commands and Set Values from Properties Service... - for (unsigned int i = 0; i < m_pythiaCommandVector.size(); i++) { - ATH_MSG_INFO(" Command is: " << m_pythiaCommandVector[i]); - StringParse mystring(m_pythiaCommandVector[i]); - string myblock = mystring.piece(1); - string myentry = mystring.piece(2); - string mystr = mystring.piece(3); - string mystr2 = mystring.piece(4); - string mystr3 = mystring.piece(5); - int myint1 = mystring.intpiece(3); - int myint2 = mystring.intpiece(4); - int myint3 = mystring.intpiece(5); - int myint4 = mystring.intpiece(6); - int myint5 = mystring.intpiece(7); - double myfl0 = mystring.numpiece(3); - double myfl1 = mystring.numpiece(4); - double myfl2 = mystring.numpiece(5); - double myfl3 = mystring.numpiece(6); - // For ExoGraviton_i and PythiaBc_i user param. input - int myint6 = mystring.intpiece(2); - - // Print a warning when attempt is made to choose PYTUNE tune via MSTP(5) ; - // more than MSTP(5) setting is needed for consistent PYTUNE run within Athena - if (myblock == "pypars" && myentry == "mstp" && myint1==5) - { - ATH_MSG_WARNING("--------------------------------------------------------------------------------\n" - << " MSTP(5) set to "<< myint2 <<", Pythia recieves a command to run PYTUNE # " << myint2 << "\n" - << " Please note: " << "\n" - << " 1. it is up to you to switch off any ATLAS defaults you do not want to use; " << "\n" - << " - the interface takes care of this if PYTUNE tune is called via Pythia.Tune_Name=\"PYTUNE_" << myint2 << "\" in the jO." << "\n" - << " 2. in the jO overrides of the parameters set by PYTUNE # " << myint2 << " will have no effect " << "\n" - << " - this correspods to (standalone) Pythia behavior " << "\n" - << " 3. handling of non-existing PYTUNE tune is same as for (default) Pythia standalone." << "\n" - << "--------------------------------------------------------------------------------"); - } - - // Note that Pythia needs doubles hence the convert here - if (myentry!="use_PYINIT") - { - ATH_MSG_INFO(myblock << " block " << myentry << " item " << myint1 << " value " << myfl1); - } - else ATH_MSG_INFO(myblock << " block " << myentry << " set to " << mystr << " " <<mystr2<<" " <<mystr3<<" "<<myfl3); - - if (myblock=="pyinit") { - if (myentry=="user"){ - m_frame = "USER "; - m_external=mystr; - m_ExternalProcess = generator_int(mystr); - extproc_(&m_ExternalProcess); - } - else if(myentry=="use_PYINIT") - { - m_frame=mystr; - m_beam=mystr2; - m_target=mystr3; - m_win=myfl3; - } - else if(myentry=="FIXT"){ - m_frame="FIXT"; - } - else if(myentry=="pbar"){ - m_beam="P~- "; - } - else if(myentry=="win"){ - m_win=myfl0; - } - else if(myentry=="pylisti"){ - m_initlistlevel=myint1; - } - else if(myentry=="pylistf"){ - m_eventlistlevel=myint1; - } - else if(myentry=="dumpr"){ - m_firstlistevent=myint1; - m_lastlistevent=myint2; - } - else if(myentry=="output"){ - m_envval1=mystr; - m_fortout=49; - this->pydat1().mstu(11)=m_fortout; - } - else if(myentry=="rndm_IO"){ - m_RndmFileName=mystr; - m_RndmFileNumber=36; - m_RndmSwitch=myint2; - m_RndmFirstEvent=myint3; - m_RndmSkipEvents=myint4; - m_RndmMOVE=myint5; - if (m_RndmSwitch == 1) ++m_RndmSkipEvents; - - if (m_RndmSwitch > 0) - { - if (m_RndmFirstEvent < 1 || m_RndmSkipEvents < 0) - { - ATH_MSG_ERROR(" INCONSISTENT SET OF rndm_IO PARAMETERS : FirstEvent < 1 || SkipEvents < 0. DUMPING RNDM SEEDS SWITCHED OFF" << myentry); - m_RndmSwitch = 0; - } - } - - ATH_MSG_INFO(" !!!!!!!!!! WARNING ON PYTHIA RANDOM NUMBERS !!!!!!!! "); - ATH_MSG_INFO(" THE ATHENA/PYTHIA DOES NOT USE ANY MORE THE STANDARD "); - ATH_MSG_INFO(" PYTHIA RANDOM NUMBER SERVICES. SINCE RELEASE 5.2.0 THE"); - ATH_MSG_INFO(" ATHENA SERVICE AtRndmGenSvc IS USED. PLEASE FOR MORE "); - ATH_MSG_INFO(" DETAILS LOOK IN "); - ATH_MSG_INFO(" http://atlassw1.phy.bnl.gov/lxrsource/current/atlas/Generators/GeneratorModules/doc/Pythia.pdf "); - ATH_MSG_INFO(" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! "); - - m_RndmSwitch = 0; - } - else { - ATH_MSG_ERROR("PYTHIA ERROR, entry PYINIT has USER PBAR PYLISTI PYLISTF PYSTAT OUTPUT DUMPR WIN use_PYINIT AND RNDM_IO: YOU HAVE SPECIFIED " << myentry); - } - - - } - else if (myblock == "pysubs") { - if(myentry == "msel"){ - this->pysubs().msel()=myint1; - } - else if (myentry == "msub"){ - this->pysubs().msub(myint1)=myint2; - } - else if (myentry == "ckin"){ - this->pysubs().ckin(myint1)=myfl1; - } - else if (myentry == "kfin"){ - this->pysubs().kfin(myint1,myint2)=myint3; - } - else { - ATH_MSG_ERROR("PYTHIA ERROR, block PYSUBS has MSEL, MSUB, KFIN AND CKIN: YOU HAVE SPECIFIED " << myentry); - } - } - else if (myblock == "pypars"){ - if(myentry == "mstp"){ - this->pypars().mstp(myint1)=myint2; - } - else if(myentry == "msti"){ - this->pypars().msti(myint1)=myint2; - } - else if(myentry == "parp"){ - this->pypars().parp(myint1)=myfl1; - } - else if(myentry == "pari"){ - this->pypars().pari(myint1)=myfl1; - } - else { - ATH_MSG_ERROR("PYTHIA ERROR, block PYPARS has MSTP,PARP, MSTI AND PARI: YOU HAVE SPECIFIED " << myentry); - } - } - else if (myblock == "pydat1"){ - if(myentry == "mstu"){ - this->pydat1().mstu(myint1)=myint2; - } - else if(myentry == "mstj"){ - this->pydat1().mstj(myint1)=myint2; - } - else if(myentry == "paru"){ - this->pydat1().paru(myint1)=myfl1; - } - else if(myentry == "parj"){ - this->pydat1().parj(myint1)=myfl1; - } - else { - ATH_MSG_ERROR("PYTHIA ERROR, block PYDAT1 HAS MSTU, MSTJ, PARU AND PARJ: YOU HAVE SPECIFIED " << myentry); - } - } - else if (myblock == "pydat2"){ - if(myentry == "kchg"){ - this->pydat2().kchg(myint1,myint2)=myint3; - } - else if(myentry == "pmas"){ - this->pydat2().pmas(pycomp_(&myint1),myint2)=myfl2; - } - else if(myentry == "parf"){ - this->pydat2().parf(myint1)=myfl1; - } - else if(myentry == "vckm"){ - this->pydat2().vckm(myint1,myint2)=myfl2; - } - else { - ATH_MSG_ERROR("PYTHIA ERROR, block PYDAT2 HAS KCHG, PMAS, PARF AND VCKM: YOU HAVE SPECIFIED " << myentry); - } - } - else if (myblock == "pydat3"){ - if(myentry == "mdcy"){ - this->pydat3().mdcy(myint1,myint2)=myint3; - } - else if(myentry == "mdme"){ - this->pydat3().mdme(myint1,myint2)=myint3; - } - else if(myentry == "brat"){ - this->pydat3().brat(myint1)=myfl1; - } - else if(myentry == "kfdp"){ - this->pydat3().kfdp(myint1,myint2)=myint3; - } - else { - ATH_MSG_ERROR("PYTHIA ERROR, block PYDAT3 HAS KFDP, MDCY, BRAT AND MDME : YOU HAVE SPECIFIED " << myentry); - } - } - else if (myblock == "pydatr"){ - if(myentry == "mrpy"){ - ATH_MSG_INFO(" !!!!!!!!!! WARNING ON PYTHIA RANDOM NUMBERS !!!!!!!! "); - ATH_MSG_INFO(" THE ATHENA/PYTHIA DOES NOT USE ANY MORE THE STANDARD "); - ATH_MSG_INFO(" PYTHIA RANDOM NUMBER SERVICES. SINCE RELEASE 5.2.0 THE"); - ATH_MSG_INFO(" ATHENA SERVICE AtRndmGenSvc IS USED. PLEASE FOR MORE "); - ATH_MSG_INFO(" DETAILS LOOK IN "); - ATH_MSG_INFO(" http://atlassw1.phy.bnl.gov/lxrsource/current/atlas/Generators/GeneratorModules/doc/Pythia.pdf "); - ATH_MSG_INFO(" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! "); - - this->pydatr().mrpy(myint1)=myint2; - } - else if(myentry == "rrpy"){ - this->pydatr().rrpy(myint1)=myfl1; - } - else { - ATH_MSG_ERROR("PYTHIA ERROR, block PYDATR HAS MRPY AND RRPY: YOU HAVE SPECIFIED " << myentry); - } - } - else if (myblock == "pymssm"){ - if (myentry=="imss"){ - if (myint1 == 21 || myint1 == 22) { - ATH_MSG_WARNING("The setting of imss(21) and imss(22) is not allowed. When imss(1)=11 is chosen imss(21) and imss(22) are set to 66 by default"); - } else { - this->pymssm().imss(myint1)=myint2; - } - } - else if (myentry=="rmss"){ - this->pymssm().rmss(myint1)=myfl1; - } - else { - ATH_MSG_ERROR("PYTHIA ERROR, block PYMSSM has IMSS AND RMSS: YOU HAVE SPECIFIED "<< myentry); - } - } - else if (myblock == "pypued"){ - if (myentry=="iued") - { - this->pypued().iued(myint1)=myint2; - } - else if (myentry=="rued"){ - this->pypued().rued(myint1)=myfl1; - } - else { - ATH_MSG_ERROR("PYTHIA ERROR, block PYPUED has IUED AND RUED: YOU HAVE SPECIFIED "<< myentry); - } - } - else if (myblock == "pypevwt"){ - if (myentry=="ievwt") - { - this->pypevwt().ievwt(myint1)=myint2; - } - else if (myentry=="revwt"){ - this->pypevwt().revwt(myint1)=myfl1; - } - else { - ATH_MSG_ERROR("PYTHIA ERROR, block PYPEVWT has IEVWT AND REVWT: YOU HAVE SPECIFIED "<< myentry) ; - } - } - //CLA: RPV couplings - else if (myblock == "pymsrv") { - //LLE - if (myentry=="rvlam"){ - this->pymsrv().rvlam(myint1)=myfl1; - ATH_MSG_INFO("setting Yukawa coupling lambda to "<< myfl1); - } - //LQD - else if (myentry=="rvlamp"){ - this->pymsrv().rvlamp(myint1)=myfl1; - ATH_MSG_INFO("setting Yukawa coupling lambda^prime to "<< myfl1); - } - //UDD - else if (myentry=="rvlamb"){ - this->pymsrv().rvlamb(myint1)=myfl1; - ATH_MSG_INFO("setting Yukawa coupling lambda^doubelprime to "<< myfl1); - } - else { - ATH_MSG_ERROR("PYTHIA ERROR, block PYMSRV has RVLAM, RVLAMP AND RVLAMB: YOU HAVE SPECIFIED "<< myentry); - } - } - else if (myblock == "pyint2"){ - if (myentry == "iset"){ - this->pyint2().iset(myint1)=myint2; - } - else if (myentry == "kfpr"){ - this->pyint2().kfpr(myint1,myint2)=myint3; - } - else if (myentry == "coef"){ - this->pyint2().coef(myint1,myint2)=myfl2; - } - else if (myentry == "icol"){ - this->pyint2().icol(myint1,myint2,myint3)=myint4; - } - else { - ATH_MSG_ERROR("PYTHIA ERROR, block PYINT2 has ISET KFPR COEF AND ICOL: YOU HAVE SPECIFIED "<< myentry); - } - } - else if (myblock == "pystat"){ - m_pystatlistlevel.clear(); - for (unsigned i = 2; i <= mystring.string_size(); ++i) - m_pystatlistlevel.push_back(mystring.intpiece(i)); - } - else if (myblock == "pytcsm"){ - if (myentry == "itcm"){ - this->pytcsm().itcm(myint1)=myint2; - } - else if (myentry=="rtcm"){ - this->pytcsm().rtcm(myint1)=myfl1; - } - else { - ATH_MSG_ERROR("PYTHIA ERROR, block PYTCM has ITCM AND RTCM: YOU HAVE SPECIFIED "<< myentry); - } - - } - - // AcerMC tt~ decay mode switching - else if (myblock == "acermc" && myentry=="acset12") { - if (m_ExternalProcess == ACERMC) { - this->acermc_acset().acset12()=myint1; - } - } - // for ExoGraviton user parameter setup - else if (myblock == "grav") - { - ::WriteGravParam(myint6, myint1, (double)myfl0); - } - // for PythiaBc_i user parameters setup - /* - else if (myblock == "pythiabc") - { - ::WritePythiaBcParam(myint6, myint1, (double)myfl0); - } - */ - else { - ATH_MSG_ERROR(" ERROR in PYTHIA PARAMETERS " << myblock << " is and invalid common block name !"); - } - } - // End of param parsing - - // Set the logical Unit Number for the immss(1)=11 option and open the file - if (this->pymssm().imss(1) == 11) { - int syunit = 66; - this->pymssm().imss(21) = syunit; - this->pymssm().imss(22) = syunit; - const std::string& fileName = m_read_Filesusy; - opensusyfile_(fileName.c_str(),&syunit,fileName.size()); - } - - // !!!!! PROTECT AGAINST mstp(81)/mstp(82) Pythia looping - if (this->pypars().mstp(81) == 0 && this->pypars().mstp(82) > 2) - { - this->pypars().mstp(82) = 1; - ATH_MSG_INFO(" !!!!!!!!!! WARNING ON PYTHIA LOOPING !!!!!!!!"); - ATH_MSG_INFO(" YOU HAVE SWITCHED OFF MULTIPLE INTERACTIONS, mstp(81) = 0"); - ATH_MSG_INFO(" THE DEFAULT ATLAS MULTIPLE INTERACTIONS SCENARIO, mstp(82) = 4"); - ATH_MSG_INFO(" CHANGED TO mstp(82) = 1, BECAUSE PYTHIA IS LOOPING WHEN"); - ATH_MSG_INFO(" mstp(81) = 0 and mstp(82) > 2"); - ATH_MSG_INFO(" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); - } - - // Now call pyinit and set listing - // Note the `extra' arguments to pyinit on the end of the argument - // list which do *not* explicitly occur in the FORTRAN - // implementation of the function -- one for each character - // variable, in the same order (reference Randy Herber, - // herber@fnal.gov). Note also that the `extern "C"' function - // declaration matches the C usage rather than the FORTRAN - // definition of the PYINIT function and therefore includes the 3 - // extra arguments. - // activate the block data - const char* envval = m_envval1.c_str(); - initpyblock_(&m_fortout,envval); - - if (m_RndmSwitch > 0) - { - const char* RndmFileName = m_RndmFileName.c_str(); - m_RndmFileLength = openrandom_(&m_RndmSwitch, &m_RndmFileNumber, RndmFileName); - if (m_RndmSwitch ==2 ) { - ATH_MSG_INFO(" THERE ARE " << m_RndmFileLength << " EVENTS STORED IN THE PYTHIA RANDOM NUMBER FILE"); - } - } - - const char* frame = m_frame.c_str(); - const char* beam = m_beam.c_str(); - double winval = m_win; - const char* target = m_target.c_str(); - int minlist = m_initlistlevel; - // special initialization for comphep - if(m_external=="comphep"){ - rinpar_(); - subnum_(); - rheader_(); - } - // special initialization for matchig - if(m_external=="matchig") - { - ATH_MSG_DEBUG("Calling setecm with argument winval=" << winval); - setecm_(&winval); - } - - // end of comphep initialization - - ATH_MSG_DEBUG(" ****** BEFORE PYINIT ********"); - ATH_MSG_DEBUG(" MSTU(11) " << this->pydat1().mstu(11) << - " MSTU(20) " << this->pydat1().mstu(20) << - " MSTU(118) " << this->pydat1().mstu(118)); - ATH_MSG_DEBUG(" PARU(108) " << this->pydat1().paru(108) << - " PARU(117) " << this->pydat1().paru(117) << - " PARU(118) " << this->pydat1().paru(118)); - for (int ii = 210; ii < 353; ++ii) - { - ATH_MSG_DEBUG(" BRAT(" << ii << ") " - << this->pydat3().brat(ii)); - } - ATH_MSG_DEBUG(" MDCY(310) " - << this->pydat3().mdcy(310,1) << ", " - << this->pydat3().mdcy(310,2) << ", " - << this->pydat3().mdcy(310,3)); - - // Save the PYTHIA_INIT stream seeds.... - CLHEP::HepRandomEngine* engine = PythiaTopMdiff::p_AtRndmGenSvc->GetEngine(PythiaTopMdiff::pythia_stream); - const long* sip = engine->getSeeds(); - long int si1 = sip[0]; - long int si2 = sip[1]; - - - // write warning for non p-p collistion, strip white-spaces off beam and target strings - std::string beam_strp(beam); boost::trim(beam_strp); - std::string target_strp(target); boost::trim(target_strp); - if ((beam_strp!="P" && beam_strp!="P+" && beam_strp!="p" && beam_strp!="p+") || (target_strp!="P" && target_strp!="P+" && target_strp!="p" && target_strp!="p+")) - { - ATH_MSG_WARNING("PYINIT(FRAME,BEAM,TARGET,WIN) called from within ATHENA using parameters: "); - ATH_MSG_WARNING("FRAME : "<< frame << ", BEAM : "<< beam <<", TARGET: "<< target<< ", WIN: "<< winval); - ATH_MSG_WARNING("Initialization with non-standard BEAM-TARGET combination: "); - ATH_MSG_WARNING("making sure sensible PYTHIA parameters setup is used is up to you."); - } - - - pyinit_(frame, beam, target, &winval, - strlen(frame), strlen(beam), strlen(target)); - - // ... and set them back to the stream for proper save - PythiaTopMdiff::p_AtRndmGenSvc->CreateStream(si1, si2, PythiaTopMdiff::pythia_stream); - - PythiaTopMdiff::pythia_stream = "PYTHIA"; - - ATH_MSG_DEBUG(" ****** AFTER PYINIT ********"); - ATH_MSG_DEBUG(" MSTU(11) " << this->pydat1().mstu(11) << - " MSTU(20) " << this->pydat1().mstu(20) << - " MSTU(118) " << this->pydat1().mstu(118)); - ATH_MSG_DEBUG(" PARU(108) " << this->pydat1().paru(108) << - " PARU(117) " << this->pydat1().paru(117) << - " PARU(118) " << this->pydat1().paru(118)); - for (int ii = 210; ii < 353; ++ii) - { - ATH_MSG_DEBUG(" BRAT(" << ii << ") " - << this->pydat3().brat(ii)); - } - ATH_MSG_DEBUG(" MDCY(310) " - << this->pydat3().mdcy(310,1) << ", " - << this->pydat3().mdcy(310,2) << ", " - << this->pydat3().mdcy(310,3)); - - ATH_MSG_DEBUG(std::resetiosflags(std::ios::fixed)); - - // call specix function to enable collecting modifications from PytiaModified files; - // specix(int=2)=corresponds to enabling TopMdiff - // int can be passed to PythiaTopMdiff using UseTopMdiff property in jO to 1 - int TopMdiff_mode=0; - if ( m_UseTopMdiff == 1) TopMdiff_mode=2; - specix_(&TopMdiff_mode); - - pylist_(&minlist); - m_events = 0; - ATH_MSG_DEBUG(" kfpr (186,2)============ " << this->pyint2().kfpr(186,2)); - ATH_MSG_DEBUG(" kfpr (187,2)============ " << this->pyint2().kfpr(187,2)); - - //decay table - const char *p_envar1="PYDAT"; - // char *p_envval1=0; - //p_envval1 = - getenv(p_envar1); - - // do parameter querries after PYINIT : - //PYGIVE command parsing && call - - if (m_Param_Query_AfterInit.size()!=0) - { - //save MSTU(11) value before the parout_ call which starts a new stream: - int tmp_m11=this->pydat1().mstu(11); - // set output to a dedicated file for params after the initialization - int tmp_mode=1; - parout_(&tmp_mode); - // query the requested parameter values: - for (unsigned int i = 0; i < m_Param_Query_AfterInit.size(); i++) - { - m_pygive_init_cstr = (m_Param_Query_AfterInit[i]).c_str(); - pygive_(m_pygive_init_cstr,strlen(m_pygive_init_cstr)); - } - //set MSTU(11) back to the default value - this->pydat1().mstu(11)=tmp_m11; - } - - // get rid of an residual old event generation parameters data: - if (m_Param_Query_AfterGen.size()!=0) - { - //save MSTU(11) value before the parout_ call which starts a new stream: - int tmp_m11=this->pydat1().mstu(11); - // set output to a dedicated file for params after the initialization - int tmp_mode=2; - parout_(&tmp_mode); - //set MSTU(11) back to the default value - this->pydat1().mstu(11)=tmp_m11; - } - - // Set size of common blocks in HEPEVT: note these correspond to stdhep - HepMC::HEPEVT_Wrapper::set_sizeof_int(sizeof(int)); - HepMC::HEPEVT_Wrapper::set_sizeof_real(8); - HepMC::HEPEVT_Wrapper::set_max_number_entries(10000); - - return StatusCode::SUCCESS; -} - - -//--------------------------------------------------------------------------- - - -StatusCode PythiaTopMdiff::callGenerator() { - ATH_MSG_DEBUG(" PYTHIA generating."); - - // Write/Read the random numbers to/from file if requested - if (m_RndmSwitch > 0) RandomNumberIO(); - - // Save the random number seeds in the event - CLHEP::HepRandomEngine* engine = PythiaTopMdiff::p_AtRndmGenSvc->GetEngine(PythiaTopMdiff::pythia_stream); - const long* s = engine->getSeeds(); - m_seeds.clear(); - m_seeds.push_back(s[0]); - m_seeds.push_back(s[1]); - - // Generate event - pyevnt_(); - - // update event counter - ++m_events; - int mevlist=m_eventlistlevel; - // Is the event to be listed - if ( m_events >= m_firstlistevent && - m_events <= m_lastlistevent) { - ATH_MSG_INFO("PYEVNT event no. " << m_events << " will be listed"); - if (m_frame == "USER ") - { - int uspr = 7; - pylist_(&uspr); // Special listing when external generator was selected - } - pylist_(&mevlist); // List this event if required - } - - // make parameter querry after event generation: - for (unsigned int i = 0; i < m_Param_Query_AfterGen.size(); i++) - { - int tmp_m11=this->pydat1().mstu(11); - int tmp_mode=3; - parout_(&tmp_mode); - m_pygive_gen_cstr = (m_Param_Query_AfterGen[i]).c_str(); - pygive_(m_pygive_gen_cstr,strlen(m_pygive_gen_cstr)); - //set MSTU(11) back to the default value - this->pydat1().mstu(11)=tmp_m11; - } - - // Tell lunhep to convert from PYJETS to HEPEVT - int mconv=1; - // Do the conversion - pyhepc_(&mconv); // Use STDHEP translation routine 1999/01/27 CG - if ( HepMC::HEPEVT_Wrapper::number_entries() <= 0 ) { - std::cout << "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" << std::endl; - std::cout << "!!! " << generator_name(m_ExternalProcess) << " TERMINATES NORMALY: NO MORE EVENTS IN FILE !!!" << std::endl; - std::cout << "!!! PLEASE IGNORE ANY ATHENA ERROR MESSAGES LIKE !!!" << std::endl; - std::cout << "!!! AthenaEventLoopMgr ERROR Terminating event processing loop due to errors !!!" << std::endl; - std::cout << "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" << std::endl; - return StatusCode::FAILURE; - } - HepMC::HEPEVT_Wrapper::set_event_number(m_events); - return StatusCode::SUCCESS; -} - -//--------------------------------------------------------------------------- - -StatusCode PythiaTopMdiff::genFinalize() { - ATH_MSG_INFO(" PYTHIA Ending." ); - for (std::vector<int>::iterator i = m_pystatlistlevel.begin(); i != m_pystatlistlevel.end(); ++i) - { - ATH_MSG_INFO("Call PYSTAT at endRun with level " << *i); - pystat_(&(*i)); - } - if (m_SetCrossSection==m_Default_SetCrossSection) - { - //always print out the non-scaled x-section - std::cout << "MetaData: cross-section (nb)= " << 1000000. * (this->pyint5().xsec(0,3))<< std::endl; - //print out additional MetaData fields if cross-section scaling is requested - if (m_xsscale != m_Default_xsscale) - { - std::cout << "MetaData: cross-section*CrossSectionScaleFactor (nb)= " << 1000000. * (this->pyint5().xsec(0,3)) * m_xsscale << std::endl; - std::cout << "MetaData: CrossSectionScaleFactor = " << m_xsscale << std::endl; - } - } - else - { - // cross section is a fixed number: - std::cout << " Printing cross-section passed by SetCrossSection in jO: "<< std::endl; - std::cout << " MetaData: cross-section (nb)= " << m_SetCrossSection << std::endl; - } - return StatusCode::SUCCESS; -} - -//--------------------------------------------------------------------------- - -StatusCode PythiaTopMdiff::fillEvt(HepMC::GenEvent* evt) { - ATH_MSG_DEBUG(" PYTHIA Atlas_HEPEVT Filling."); - store_Atlas_HEPEVT(); - - ATH_MSG_DEBUG(" PYTHIA Filling." ); - HepMC::IO_HEPEVT hepio; - hepio.set_print_inconsistency_errors(0); - - hepio.fill_next_event(evt); - int pr_id = PYTHIA + m_ExternalProcess + this->pyint1().mint(1); - if (m_ExternalProcess > 0) pr_id = PYTHIA + m_ExternalProcess; - evt->set_signal_process_id(pr_id); - evt->set_random_states(m_seeds); - evt->weights().push_back(this->pypars().pari(7)); - evt->weights().push_back(this->pypars().pari(9)); - evt->weights().push_back(this->pypars().pari(10)); - - // Set beam particle status = 4 - if (evt->valid_beam_particles()) { - evt->beam_particles().first->set_status(4); - evt->beam_particles().second->set_status(4); - } - - // PDF weights, using Pdf Info object: pdf_id, x_1, x_1, Q2, f_1, f_2 - const int id1=this->pypars().msti(15); - const int id2=this->pypars().msti(16); - const double x1=this->pypars().pari(33); - const double x2=this->pypars().pari(34); - const double q=this->pypars().pari(23); - const double pdf1=(double)this->pypars().pari(29); // x*pdf1 - const double pdf2=(double)this->pypars().pari(30); // x*pdf2 - - if ( m_external == "lhef" ) { - Lhefinfo linfo; - - ATH_MSG_DEBUG("lhefinfo, id1: " << linfo.id1()); - ATH_MSG_DEBUG("lhefinfo, id2: " << linfo.id2()); - ATH_MSG_DEBUG("lhefinfo, x1: " << linfo.x1()); - ATH_MSG_DEBUG("lhefinfo, x2: " << linfo.x2()); - ATH_MSG_DEBUG("lhefinfo, scale: " << linfo.scalePdf()); - ATH_MSG_DEBUG("lhefinfo, xpdf1: " << linfo.xPdf1()); - ATH_MSG_DEBUG("lhefinfo, xpdf2: " << linfo.xPdf2()); - - HepMC::PdfInfo tmp_pdi( linfo.id1(), linfo.id2(), linfo.x1(), linfo.x2(), - linfo.scalePdf(), linfo.xPdf1(), linfo.xPdf2() ); - evt->set_pdf_info(tmp_pdi); - - } else { - HepMC::PdfInfo tmp_pdi(id1,id2,x1,x2,q,pdf1,pdf2); - evt->set_pdf_info(tmp_pdi); - } - - ATH_MSG_DEBUG("pdfinfo:"<< evt->pdf_info()->id1()); - ATH_MSG_DEBUG("pdfinfo:"<< evt->pdf_info()->id2()); - ATH_MSG_DEBUG("pdfinfo:"<< evt->pdf_info()->x1()); - ATH_MSG_DEBUG("pdfinfo:"<< evt->pdf_info()->x2()); - ATH_MSG_DEBUG("pdfinfo:"<< evt->pdf_info()->scalePDF()); - ATH_MSG_DEBUG("pdfinfo:"<< evt->pdf_info()->pdf1()); - ATH_MSG_DEBUG("pdfinfo:"<< evt->pdf_info()->pdf2()); - - // Convert cm->mm and GeV->MeV - // cmTomm(evt); - GeVToMeV(evt); - - return StatusCode::SUCCESS; -} - - -void -PythiaTopMdiff::RandomNumberIO() -{ - // m_RndmSwitch == 1 : Write the random numbers of the selected events into - // the file m_RndmFileNumber - if (m_RndmSwitch == 1) - { - int WriteEvent = m_events - m_RndmFirstEvent + 1; - if (WriteEvent >= 0) - { - WriteEvent = WriteEvent%m_RndmSkipEvents; - if (WriteEvent == 0) pyrget_(&m_RndmFileNumber, &m_RndmMOVE); - } - } - // m_RndmSwitch == 2 : Read the random numbers from the selected records from - // the file m_RndmFileNumber - else if (m_RndmSwitch == 2) - { - int MOVE = m_RndmMOVE; - if (MOVE == 0) - { - if (m_RndmFirstEvent > 0) - { - if (m_events == 0) - { - MOVE = m_RndmFirstEvent - 1; - } - else - { - MOVE = m_RndmSkipEvents; - } - } - int c_pos = this->pydatr().mrpy(6) + MOVE; - if (c_pos < m_RndmFileLength) - { - ATH_MSG_INFO("EVENT " << m_events+1 - << " will be generated with the random seeds read from record " - << c_pos+1 << " in file " << m_RndmFileName); - pyrset_(&m_RndmFileNumber, &MOVE); - } - } - else - { - pyrset_(&m_RndmFileNumber, &MOVE); - } - } -} - - - -void -PythiaTopMdiff::store_Atlas_HEPEVT() -{ - - ATH_MSG_DEBUG("s_atlas_HEPEVT------" << s_atlas_HEPEVT->nhep() ); - ATH_MSG_DEBUG("s_atlas_HEPEVT------" << s_atlas_HEPEVT->isthep(10) ); - ATH_MSG_DEBUG("s_atlas_HEPEVT------" << s_atlas_HEPEVT->idhep(10) ); - ATH_MSG_DEBUG("s_atlas_HEPEVT------" << s_atlas_HEPEVT->jmohep(1,10) ); - ATH_MSG_DEBUG("s_atlas_HEPEVT------" << s_atlas_HEPEVT->jdahep(2,10) ); - - s_atlas_HEPEVT->fill(); - - Atlas_HEPEVT* ahep = new Atlas_HEPEVT(); - *(ahep) = *(s_atlas_HEPEVT); - static const std::string keyid = "Pythia"; - StatusCode sc = evtStore()->record(ahep, keyid); - if (!sc.isSuccess()) { - ATH_MSG_WARNING("Could not record Atlas_HEPEVT"); - } - -} diff --git a/Generators/PythiaExo_i/src/PythiaTopMdiff_i_entries.cxx b/Generators/PythiaExo_i/src/PythiaTopMdiff_i_entries.cxx deleted file mode 100644 index c226ba4bcdfe3f0527225e7a4f55dd984cdd29c5..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/PythiaTopMdiff_i_entries.cxx +++ /dev/null @@ -1,7 +0,0 @@ -/* - Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration -*/ -#include "PythiaExo_i/PythiaTopMdiff.h" - -DECLARE_COMPONENT( PythiaTopMdiff ) - diff --git a/Generators/PythiaExo_i/src/atlasTuneResMod.cxx b/Generators/PythiaExo_i/src/atlasTuneResMod.cxx deleted file mode 100644 index 0151123dc8733c67b256056420bca268090ca4f0..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/atlasTuneResMod.cxx +++ /dev/null @@ -1,1439 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#include "PythiaExo_i/PythiaResMod.h" - -/* - ________________________________________________________________________________________________________________________ - - L.M., - Pythia parameter settings / TUNE - - Aug. 09 - - called by Pythia.cxx - set ATLAS tune/parameters set determined by m_Tune_Index - m_Tune_Index 0,-1 and -2 are technical settings to run with 0, recommended or common set of ATLAS Pythia parameters - in case m_Tune_Index does not correspond to ATLAS tune index use default ATLAS tune (set by m_Default_Tune_Name) - ------------------------------------------------------------------------------------------------------------------------- - Backw. compat: old tune setting syntax remains supported. - Mixing of the old and new tune settings is not supported and in this case Atlas default tune settings are used and - - May 09 - - In case only the old syntax is used, the switches have the following effect: - 1. useAtlasPythiaRecomm : false sets m_Tune_Index=0 [default:true ] - Event record, error handlig, new PS/MI model, MI structure - 2. useAtlasPythiaCommon : false sets m_Tune_Index=-1; [default:true ] - (ATLAS specific) print-out, particle properties, MI structure, pdf - 3. useAtlasPythiaTune09 : sets m_Tune_Index=m_mc09_Tune_Index [default:false ] - 4. useAtlasPythiaTune08 : sets m_Tune_Index=m_mc08_Tune_Index [default:false ] - 5. useNoAtlasPythiaParam : sets bool m_useNoAtlasPythiaParam [default:false ] - Using Pythia defaults + parameters set by the jO only. - Please note that the use of ATLAS defaults is recommended. - Please consider keeping the settings of switch 1. - - ________________________________________________________________________________________________________________________ - */ - -StatusCode PythiaResMod::atlasTune() - -{ - // if tune is left to the dummy starting value, use the default tune: - if (m_Tune_Index==m_Starting_Tune_Index) m_Tune_Index=m_Default_Tune_Index; - - ATH_MSG_INFO( "\n________________________________________________________________________________\n" - << "atlasTune: [Pythia_i/src/atlasTune.cxx] \n" - << "atlasTune: setting Pythia parameter values: \n" - << "--------------------------------------------------------------------------------" ); - - // note: m_Tune_Name == "ATLAS_blah" will end here since atoi() returns 0 if it can't ocnvert arg. to int - if (m_Tune_Index==0) - { - ATH_MSG_WARNING( "setPythiaTune: m_Tune_Index=0 requested, \n" - << "setPythiaTune: skipping par. setting by Pythia_i, running with Pythia defaults. \n" - << "setPythiaTune: Using Pythia defaults + parameters set by the USER. \n" - << "setPythiaTune: Please note that the use of ATLAS defaults is recommended. \n" - << "setPythiaTune: Please consider keeping the settings of Tune_Name=-1,-2. \n" - << "--------------------------------------------------------------------------------" ); - return StatusCode::SUCCESS; - }//end of {m_Tune_Index==0} condition - //--------------------------------------------------------------------------- - //____________________________________________________________________________________________________________________________ - // when not using an ATLAS tune but want to keep recommended / common settings: - else if (m_Tune_Index<0) - { - if (m_Tune_Index==-1) - { - //________________________________________________________________________________________________________________________ - // printout details + - this->pypars().mstp(128) =1; // fix junk output for documentary particles - this->pydat1().mstu(21) =1; // error handling switch - this->pypars().mstp(81) =21; // run PYEVNW with PYEVNT - this->pydat1().mstj(22)=2; // stable particles convention - //________________________________________________________________________________________________________________________ - ATH_MSG_INFO( "mstp(128) = "<< this->pypars().mstp(128) << "\n" - << "mstu(21) = "<< this->pydat1().mstu(21) << "\n" - << "mstp(81) = "<< this->pypars().mstp(81) << "\n" - << "mstj(22) = "<< this->pydat1().mstj(22) ); - - //________________________________________________________________________________________________________________________ - } - if (m_Tune_Index==-2) - { - //________________________________________________________________________________________________________________________ - // printout details - this->pypars().mstp(128) =1; // fix junk output for documentary particles - this->pydat1().mstu(21) =1; // error handling switch - this->pypars().mstp(81) =21; // run PYEVNW with PYEVNT - this->pydat1().mstj(22)=2; // stable particles convention - //________________________________________________________________________________________________________________________ - //physics-related - this->pypars().mstp(82)=4; // MI structure - this->pypars().mstp(52)=2; // (needed for MRST2007lomod (LO* for MC)) - this->pypars().mstp(54)=2; // (needed for MRST2007lomod (LO* for MC)) - this->pypars().mstp(56)=2; // (needed for MRST2007lomod (LO* for MC)) - this->pypars().mstp(51)=20651; // LO** - this->pypars().mstp(53)=20651; // LO** - this->pypars().mstp(55)=20651; // LO** - this->pydat2().pmas(6,1)=172.5; // PDG2007 TOP mass - this->pydat2().pmas(24,1)=80.399; // PDG2007 W mass - //this->pydat2().pmas(24,2)=2.141; W-width is calculated dynamically - this->pydat2().pmas(23,1)=91.1876; // PDG2007 Z0 mass - //this->pydat2().pmas(23,2)=2.4952; // PDG2007 Z0 width - //________________________________________________________________________________________________________________________ - //printout details ... + - ATH_MSG_INFO( "mstp(128) = "<< this->pypars().mstp(128) << "\n" - << "mstu(21) = "<< this->pydat1().mstu(21) << "\n" - << "mstp(81) = "<< this->pypars().mstp(81) << "\n" - //physics-related - << "mstp(82) = "<< this->pypars().mstp(82) << "\n" - << "mstp(52) = "<< this->pypars().mstp(52) << "\n" - << "mstp(54) = "<< this->pypars().mstp(54) << "\n" - << "mstp(56) = "<< this->pypars().mstp(56) << "\n" - << "mstp(51) = "<< this->pypars().mstp(51) << "\n" - << "mstp(53) = "<< this->pypars().mstp(53) << "\n" - << "mstp(55) = "<< this->pypars().mstp(55) << "\n" - << "pmas(6,1) = "<< this->pydat2().pmas(6,1) << "\n" - << "pmas(24,1)= "<< this->pydat2().pmas(24,1) << "\n" - //<< "pmas(24,2)= "<< this->pydat2().pmas(24,2) << "\n" - << "pmas(23,1)= "<< this->pydat2().pmas(23,1) << "\n" ); - //<< "pmas(23,2)= "<< this->pydat2().pmas(23,2) << "\n" - //________________________________________________________________________________________________________________________ - } - } - else if (m_Tune_Index==20090001) - { - // ATLAS jargon : MC09 - // author : Markus Warsinsky - // Pythia : 6.4.20 - // date: May 2009 - // short description: MC09 production round tune for LO* PDFs - //________________________________________________________________________________________________________________________ - this->pypars().mstp(128) =1; // fix junk output for documentary particles - this->pydat1().mstu(21) =1; // error handling switch - //physics - related - this->pypars().mstp(81)=21; // run PYEVNW with PYEVNT - this->pypars().mstp(82)=4; // MI structure - this->pypars().mstp(52)=2; // (needed for MRST2007lomod (LO* for MC)) - this->pypars().mstp(54)=2; // (needed for MRST2007lomod (LO* for MC)) - this->pypars().mstp(56)=2; // (needed for MRST2007lomod (LO* for MC)) - this->pypars().mstp(51)=20650; // (needed for MRST2007lomod (LO* for MC)) - this->pypars().mstp(53)=20650; // (needed for MRST2007lomod (LO* for MC)) - this->pypars().mstp(55)=20650; // (needed for MRST2007lomod (LO* for MC)) - this->pydat2().pmas(6,1)=172.5; // PDG2007 TOP mass - this->pydat2().pmas(24,1)=80.399; // PDG2007 W mass - //this->pydat2().pmas(24,2)=2.141; W-width is calculated dynamically - this->pydat2().pmas(23,1)=91.1876; // PDG2007 Z0 mass - //this->pydat2().pmas(23,2)=2.4952; // Z-width is calculated dynamically - this->pypars().mstp(70)=0; // (virtuality scale for ISR) - this->pypars().mstp(72)=1; - this->pypars().mstp(88)=1; - this->pypars().mstp(90)=0; - this->pypars().parp(78)=0.3; - this->pypars().parp(80)=0.1; - this->pypars().parp(82)=2.3; // (cut off scale) - this->pypars().parp(83)=0.8; - this->pypars().parp(84)=0.7; // (matter distribution) - this->pypars().parp(90)=0.25; // (cut off scale) - this->pydat1().parj(81)=0.29; - this->pypars().mstp(95)=6; - this->pydat1().mstj(11)=4; // select Lund-Bowler for c && b fragmentation - this->pydat1().mstj(22)=2; // (Make K_S, Lambda stable) - this->pydat1().parj(41)=0.3; // Lund-Bowler a - this->pydat1().parj(42)=0.58; // Lund-Bowler b - this->pydat1().parj(46)=0.75; // Lund-Bowler rQ - this->pypars().mstp(84)=1; - this->pypars().mstp(85)=1; - this->pypars().mstp(86)=2; - this->pypars().mstp(87)=4; - this->pypars().mstp(89)=1; - this->pypars().parp(89)=1800.; - //________________________________________________________________________________________________________________________ - ATH_MSG_INFO( "--------------------------------------------------------------------------------\n" - << "atlasTune: parameter setting to Tune_Index "<<m_Tune_Index<<" tune values : \n" - << "mstp(128) = "<< this->pypars().mstp(128) << "\n" - << "mstu(21) = "<< this->pydat1().mstu(21) << "\n" - << "mstp(81) = "<< this->pypars().mstp(81) << "\n" - << "mstp(82) = "<< this->pypars().mstp(82) << "\n" - << "mstp(52) = "<< this->pypars().mstp(52) << "\n" - << "mstp(54) = "<< this->pypars().mstp(54) << "\n" - << "mstp(56) = "<< this->pypars().mstp(56) << "\n" - << "mstp(51) = "<< this->pypars().mstp(51) << "\n" - << "mstp(53) = "<< this->pypars().mstp(53) << "\n" - << "mstp(55) = "<< this->pypars().mstp(55) << "\n" - << "pmas(6,1) = "<< this->pydat2().pmas(6,1) << "\n" - << "pmas(24,1) = "<< this->pydat2().pmas(24,1) << "\n" - //<< "pmas(24,2) = "<< this->pydat2().pmas(24,2) << "\n" - << "pmas(23,1) = "<< this->pydat2().pmas(23,1) << "\n" - //<< "pmas(23,2) = "<< this->pydat2().pmas(23,2) << "\n" - << "mstp(70) = "<< this->pypars().mstp(70) << "\n" - << "mstp(72) = "<< this->pypars().mstp(72) << "\n" - << "mstp(88) = "<< this->pypars().mstp(88) << "\n" - << "mstp(90) = "<< this->pypars().mstp(90) << "\n" - << "parp(78) = "<< this->pypars().parp(78) << "\n" - << "parp(80) = "<< this->pypars().parp(80) << "\n" - << "parp(82) = "<< this->pypars().parp(82) << "\n" - << "parp(83) = "<< this->pypars().parp(83) << "\n" - << "parp(84) = "<< this->pypars().parp(84) << "\n" - << "parp(90) = "<< this->pypars().parp(90) << "\n" - << "parj(81) = "<< this->pydat1().parj(81) << "\n" - << "mstp(95) = "<< this->pypars().mstp(95) << "\n" - << "mstj(11) = "<< this->pydat1().mstj(11) << "\n" - << "mstj(22) = "<< this->pydat1().mstj(22) << "\n" - << "parj(41) = "<< this->pydat1().parj(41) << "\n" - << "parj(42) = "<< this->pydat1().parj(42) << "\n" - << "parj(46) = "<< this->pydat1().parj(46) << "\n" - << "mstp(84) = "<< this->pypars().mstp(84) << "\n" - << "mstp(85) = "<< this->pypars().mstp(85) << "\n" - << "mstp(86) = "<< this->pypars().mstp(86) << "\n" - << "mstp(87) = "<< this->pypars().mstp(87) << "\n" - << "mstp(89) = "<< this->pypars().mstp(89) << "\n" - << "parp(89) = "<< this->pypars().parp(89) << "\n" - << "----------------------------------------------- \n" - << "atlasTune: end of the list of Tune_Index "<<m_Tune_Index<<" tune values : \n" - << "--------------------------------------------------------------------------------\n" ); - //________________________________________________________________________________________________________________________ - }// end of if (m_Tune_Index==20090001) condition - else if (m_Tune_Index==20080001) - { - // ATLAS jargon : MC08 - // author : Arthur Moraes - // Pythia : ~ 6.4.18 - // date: ~ 2008 - // short description: MC08 production round tune - //________________________________________________________________________________________________________________________ - this->pypars().mstp(128) =1; // fix junk output for documentary particles - this->pydat1().mstu(21) =1; // error handling switch - //physics - related - this->pypars().mstp(81)=21; // run PYEVNW with PYEVNT - this->pypars().mstp(82)=4; // MI structure - this->pypars().mstp(52)=2; // (needed for CTEQ6L) - this->pypars().mstp(54)=2; // (needed for CTEQ6L) - this->pypars().mstp(56)=2; // (needed for CTEQ6L) - this->pypars().mstp(51)=10042; // (needed for CTEQ6L) - this->pypars().mstp(53)=10042; // (needed for CTEQ6L) - this->pypars().mstp(55)=10042; // (needed for CTEQ6L) - this->pydat2().pmas(6,1)=172.5; // PDG2007 TOP mass - this->pydat2().pmas(24,1)=80.399; // PDG2007 W mass - //this->pydat2().pmas(24,2)=2.141; W-width is calculated dynamically - this->pydat2().pmas(23,1)=91.1876; // PDG2007 Z0 mass - //this->pydat2().pmas(23,2)=2.4952; // Z-width is calculated dynamically - this->pypars().mstp(70)=0; // (virtuality scale for ISR) - this->pypars().mstp(72)=1; - this->pypars().mstp(88)=1; - this->pypars().mstp(90)=0; - this->pypars().parp(78)=0.3; - this->pypars().parp(80)=0.1; - this->pypars().parp(82)=2.1; // (cut off scale) - this->pypars().parp(83)=0.8; - this->pypars().parp(84)=0.7; // (matter distribution) - this->pypars().parp(90)=0.16; // (cut off scale) - this->pydat1().parj(81)=0.29; - this->pypars().mstp(95)=1; - this->pydat1().mstj(11)=3; // (select peterson for charm fragmentation) - this->pydat1().mstj(22)=2; // (Make K_S, Lambda stable) - this->pydat1().parj(54)=-0.07; // (c hadronization) - this->pydat1().parj(55)=-0.006; // (b hadronization) - this->pypars().mstp(84)=1; - this->pypars().mstp(85)=1; - this->pypars().mstp(86)=2; - this->pypars().mstp(87)=4; - this->pypars().mstp(89)=1; - this->pypars().parp(89)=1800.; - //________________________________________________________________________________________________________________________ - ATH_MSG_INFO( "--------------------------------------------------------------------------------\n" - << "atlasTune: parameter setting to Tune_Index "<<m_Tune_Index<<" tune values : \n" - << "mstp(128) = "<< this->pypars().mstp(128) << "\n" - << "mstu(21) = "<< this->pydat1().mstu(21) << "\n" - << "mstp(81) = "<< this->pypars().mstp(81) << "\n" - << "mstp(82) = "<< this->pypars().mstp(82) << "\n" - << "mstp(52) = "<< this->pypars().mstp(52) << "\n" - << "mstp(54) = "<< this->pypars().mstp(54) << "\n" - << "mstp(56) = "<< this->pypars().mstp(56) << "\n" - << "mstp(51) = "<< this->pypars().mstp(51) << "\n" - << "mstp(53) = "<< this->pypars().mstp(53) << "\n" - << "mstp(55) = "<< this->pypars().mstp(55) << "\n" - << "pmas(6,1) = "<< this->pydat2().pmas(6,1) << "\n" - << "pmas(24,1) = "<< this->pydat2().pmas(24,1)<< "\n" - //<< "pmas(24,2) = "<< this->pydat2().pmas(24,2) << "\n" - << "pmas(23,1) = "<< this->pydat2().pmas(23,1)<< "\n" - //<< "pmas(23,2) = "<< this->pydat2().pmas(23,2)<< "\n" - << "mstp(70) = "<< this->pypars().mstp(70) << "\n" - << "mstp(72) = "<< this->pypars().mstp(72) << "\n" - << "mstp(88) = "<< this->pypars().mstp(88) << "\n" - << "mstp(90) = "<< this->pypars().mstp(90) << "\n" - << "parp(78) = "<< this->pypars().parp(78) << "\n" - << "parp(80) = "<< this->pypars().parp(80) << "\n" - << "parp(82) = "<< this->pypars().parp(82) << "\n" - << "parp(83) = "<< this->pypars().parp(83) << "\n" - << "parp(84) = "<< this->pypars().parp(84) << "\n" - << "parp(90) = "<< this->pypars().parp(90)<< "\n" - << "parj(81) = "<< this->pydat1().parj(81)<< "\n" - << "mstp(95) = "<< this->pypars().mstp(95) << "\n" - << "mstj(11) = "<< this->pydat1().mstj(11) << "\n" - << "mstj(22) = "<< this->pydat1().mstj(22) << "\n" - << "parj(54) = "<< this->pydat1().parj(54) << "\n" - << "parj(55) = "<< this->pydat1().parj(55) << "\n" - << "mstp(84) = "<< this->pypars().mstp(84) << "\n" - << "mstp(85) = "<< this->pypars().mstp(85) << "\n" - << "mstp(86) = "<< this->pypars().mstp(86) << "\n" - << "mstp(87) = "<< this->pypars().mstp(87) << "\n" - << "mstp(89) = "<< this->pypars().mstp(89) << "\n" - << "parp(89) = "<< this->pypars().parp(89)<< "\n" - << "----------------------------------------------- \n" - << "atlasTune: end of the list of Tune_Index "<<m_Tune_Index<<" tune values : \n" - << "--------------------------------------------------------------------------------\n" ); - //________________________________________________________________________________________________________________________ - } // end of if (m_Tune_Index==20080001) condition - else if (m_Tune_Index==20090002) - { - // ATLAS jargon : MC09' - // author : Markus Warsinsky - // Pythia : 6.4.20 - // date: Jun. 2009 - // short description: MC08 tune update for the MC09 production - //________________________________________________________________________________________________________________________ - this->pypars().mstp(128) =1; // fix junk output for documentary particles - this->pydat1().mstu(21) =1; // error handling switch - //physics - related - this->pypars().mstp(81)=21; // run PYEVNW with PYEVNT - this->pypars().mstp(82)=4; // MI structure - this->pypars().mstp(52)=2; // (needed for ext. PDF) - this->pypars().mstp(54)=2; // (needed for ext. PDF) - this->pypars().mstp(56)=2; // (needed for ext. PDF) - this->pypars().mstp(51)=10042; // (needed for CTEQ6L) this is changed for MC08'' (20090002) wrt MC09 20090001 - this->pypars().mstp(53)=10042; // (needed for CTEQ6L) this is changed for MC08'' (20090002) wrt MC09 20090001 - this->pypars().mstp(55)=10042; // (needed for CTEQ6L) this is changed for MC08'' (20090002) wrt MC09 20090001 - this->pydat2().pmas(6,1)=172.5; // PDG2007 TOP mass - this->pydat2().pmas(24,1)=80.399; // PDG2007 W mass - //this->pydat2().pmas(24,2)=2.141; W-width is calculated dynamically - this->pydat2().pmas(23,1)=91.1876; // PDG2007 Z0 mass - //this->pydat2().pmas(23,2)=2.4952; // Z-width is calculated dynamically - this->pypars().mstp(70)=0; // (virtuality scale for ISR) - this->pypars().mstp(72)=1; - this->pypars().mstp(88)=1; - this->pypars().mstp(90)=0; - this->pypars().parp(78)=0.3; - this->pypars().parp(80)=0.1; - this->pypars().parp(82)=2.1; // this is changed for MC08'' (20090002) wrt MC09 20090001 - this->pypars().parp(83)=0.8; - this->pypars().parp(84)=0.7; // (matter distribution) - this->pypars().parp(90)=0.25; // (cut off scale) - this->pydat1().parj(81)=0.29; - this->pypars().mstp(95)=6; - this->pydat1().mstj(11)=4; // select Lund-Bowler for c && b fragmentation - this->pydat1().mstj(22)=2; // (Make K_S, Lambda stable) - this->pydat1().parj(41)=0.3; // Lund-Bowler a - this->pydat1().parj(42)=0.58; // Lund-Bowler b - this->pydat1().parj(46)=0.75; // Lund-Bowler rQ - this->pypars().mstp(84)=1; - this->pypars().mstp(85)=1; - this->pypars().mstp(86)=2; - this->pypars().mstp(87)=4; - this->pypars().mstp(89)=1; - this->pypars().parp(89)=1800.; - //________________________________________________________________________________________________________________________ - ATH_MSG_INFO( "--------------------------------------------------------------------------------\n" - << "atlasTune: parameter setting to Tune_Index "<<m_Tune_Index<<" tune values : \n" - << "mstp(128) = "<< this->pypars().mstp(128) << "\n" - << "mstu(21) = "<< this->pydat1().mstu(21) << "\n" - << "mstp(81) = "<< this->pypars().mstp(81) << "\n" - << "mstp(82) = "<< this->pypars().mstp(82) << "\n" - << "mstp(52) = "<< this->pypars().mstp(52) << "\n" - << "mstp(54) = "<< this->pypars().mstp(54) << "\n" - << "mstp(56) = "<< this->pypars().mstp(56) << "\n" - << "mstp(51) = "<< this->pypars().mstp(51) << "\n" - << "mstp(53) = "<< this->pypars().mstp(53) << "\n" - << "mstp(55) = "<< this->pypars().mstp(55) << "\n" - << "pmas(6,1) = "<< this->pydat2().pmas(6,1) << "\n" - << "pmas(24,1) = "<< this->pydat2().pmas(24,1) << "\n" - //<< "pmas(24,2) = "<< this->pydat2().pmas(24,2) << "\n" - << "pmas(23,1) = "<< this->pydat2().pmas(23,1) << "\n" - //<< "pmas(23,2) = "<< this->pydat2().pmas(23,2) << "\n" - << "mstp(70) = "<< this->pypars().mstp(70) << "\n" - << "mstp(72) = "<< this->pypars().mstp(72) << "\n" - << "mstp(88) = "<< this->pypars().mstp(88) << "\n" - << "mstp(90) = "<< this->pypars().mstp(90) << "\n" - << "parp(78) = "<< this->pypars().parp(78) << "\n" - << "parp(80) = "<< this->pypars().parp(80) << "\n" - << "parp(82) = "<< this->pypars().parp(82) << "\n" - << "parp(83) = "<< this->pypars().parp(83) << "\n" - << "parp(84) = "<< this->pypars().parp(84) << "\n" - << "parp(90) = "<< this->pypars().parp(90) << "\n" - << "parj(81) = "<< this->pydat1().parj(81) << "\n" - << "mstp(95) = "<< this->pypars().mstp(95) << "\n" - << "mstj(11) = "<< this->pydat1().mstj(11) << "\n" - << "mstj(22) = "<< this->pydat1().mstj(22) << "\n" - << "parj(41) = "<< this->pydat1().parj(41) << "\n" - << "parj(42) = "<< this->pydat1().parj(42) << "\n" - << "parj(46) = "<< this->pydat1().parj(46) << "\n" - << "mstp(84) = "<< this->pypars().mstp(84) << "\n" - << "mstp(85) = "<< this->pypars().mstp(85) << "\n" - << "mstp(86) = "<< this->pypars().mstp(86) << "\n" - << "mstp(87) = "<< this->pypars().mstp(87) << "\n" - << "mstp(89) = "<< this->pypars().mstp(89) << "\n" - << "parp(89) = "<< this->pypars().parp(89) << "\n" - << "----------------------------------------------- \n" - << "atlasTune: end of the list of Tune_Index "<<m_Tune_Index<<" tune values : \n" - << "--------------------------------------------------------------------------------\n" ); - //________________________________________________________________________________________________________________________ - } - else if (m_Tune_Index==20090003) - { - // ATLAS jargon : MC09c - // references : ATL-COM-PHYS-2010-040, ATL-PHYS-PUB-2010-002 - // author : Markus Warsinsky et. al - // Pythia : 6.4.21 - // impl. date : June 2010 - // tune produced in : 2009 - // short description: simmilar to MC09, but with lowered CR - // changes wrt. MC09: - // MC09c has: parp(78)=0.224, parp(82)=2.315, parp(90)=0.2487 - // MC09 has: parp(78)=0.3, parp(82)=2.3, parp(90)=0.25 - //________________________________________________________________________________________________________________________ - this->pypars().mstp(128) =1; // fix junk output for documentary particles - this->pydat1().mstu(21) =1; // error handling switch - //physics - related - this->pypars().mstp(81)=21; // run PYEVNW with PYEVNT - this->pypars().mstp(82)=4; // MI structure - this->pypars().mstp(52)=2; // (needed for MRST2007lomod (LO* for MC)) - this->pypars().mstp(54)=2; // (needed for MRST2007lomod (LO* for MC)) - this->pypars().mstp(56)=2; // (needed for MRST2007lomod (LO* for MC)) - this->pypars().mstp(51)=20650; // (needed for MRST2007lomod (LO* for MC)) - this->pypars().mstp(53)=20650; // (needed for MRST2007lomod (LO* for MC)) - this->pypars().mstp(55)=20650; // (needed for MRST2007lomod (LO* for MC)) - this->pydat2().pmas(6,1)=172.5; // PDG2007 TOP mass - this->pydat2().pmas(24,1)=80.399; // PDG2007 W mass - this->pydat2().pmas(23,1)=91.1876; // PDG2007 Z0 mass - this->pypars().mstp(70)=0; // (virtuality scale for ISR) - this->pypars().mstp(72)=1; - this->pypars().mstp(88)=1; - this->pypars().mstp(90)=0; - this->pypars().parp(78)=0.224; - this->pypars().parp(80)=0.1; - this->pypars().parp(82)=2.315; // (cut off scale) - this->pypars().parp(83)=0.8; - this->pypars().parp(84)=0.7; // (matter distribution) - this->pypars().parp(90)=0.2487; // (cut off scale) - this->pydat1().parj(81)=0.29; - this->pypars().mstp(95)=6; - this->pydat1().mstj(11)=4; // select Lund-Bowler for c && b fragmentation - this->pydat1().mstj(22)=2; // (Make K_S, Lambda stable) - this->pydat1().parj(41)=0.3; // Lund-Bowler a - this->pydat1().parj(42)=0.58; // Lund-Bowler b - this->pydat1().parj(46)=0.75; // Lund-Bowler rQ - this->pypars().mstp(84)=1; - this->pypars().mstp(85)=1; - this->pypars().mstp(86)=2; - this->pypars().mstp(87)=4; - this->pypars().mstp(89)=1; - this->pypars().parp(89)=1800.; - //________________________________________________________________________________________________________________________ - ATH_MSG_INFO( "--------------------------------------------------------------------------------\n" - << "atlasTune: parameter setting to Tune_Index "<<m_Tune_Index<<" tune values : \n" - << "mstp(128) = "<< this->pypars().mstp(128) << "\n" - << "mstu(21) = "<< this->pydat1().mstu(21) << "\n" - << "mstp(81) = "<< this->pypars().mstp(81) << "\n" - << "mstp(82) = "<< this->pypars().mstp(82) << "\n" - << "mstp(52) = "<< this->pypars().mstp(52) << "\n" - << "mstp(54) = "<< this->pypars().mstp(54) << "\n" - << "mstp(56) = "<< this->pypars().mstp(56) << "\n" - << "mstp(51) = "<< this->pypars().mstp(51) << "\n" - << "mstp(53) = "<< this->pypars().mstp(53) << "\n" - << "mstp(55) = "<< this->pypars().mstp(55) << "\n" - << "pmas(6,1) = "<< this->pydat2().pmas(6,1) << "\n" - << "pmas(24,1) = "<< this->pydat2().pmas(24,1) << "\n" - << "pmas(23,1) = "<< this->pydat2().pmas(23,1) << "\n" - << "mstp(70) = "<< this->pypars().mstp(70) << "\n" - << "mstp(72) = "<< this->pypars().mstp(72) << "\n" - << "mstp(88) = "<< this->pypars().mstp(88) << "\n" - << "mstp(90) = "<< this->pypars().mstp(90) << "\n" - << "parp(78) = "<< this->pypars().parp(78) << "\n" - << "parp(80) = "<< this->pypars().parp(80) << "\n" - << "parp(82) = "<< this->pypars().parp(82) << "\n" - << "parp(83) = "<< this->pypars().parp(83) << "\n" - << "parp(84) = "<< this->pypars().parp(84) << "\n" - << "parp(90) = "<< this->pypars().parp(90) << "\n" - << "parj(81) = "<< this->pydat1().parj(81) << "\n" - << "mstp(95) = "<< this->pypars().mstp(95) << "\n" - << "mstj(11) = "<< this->pydat1().mstj(11) << "\n" - << "mstj(22) = "<< this->pydat1().mstj(22) << "\n" - << "parj(41) = "<< this->pydat1().parj(41) << "\n" - << "parj(42) = "<< this->pydat1().parj(42) << "\n" - << "parj(46) = "<< this->pydat1().parj(46) << "\n" - << "mstp(84) = "<< this->pypars().mstp(84) << "\n" - << "mstp(85) = "<< this->pypars().mstp(85) << "\n" - << "mstp(86) = "<< this->pypars().mstp(86) << "\n" - << "mstp(87) = "<< this->pypars().mstp(87) << "\n" - << "mstp(89) = "<< this->pypars().mstp(89) << "\n" - << "parp(89) = "<< this->pypars().parp(89) << "\n" - << "----------------------------------------------- \n" - << "atlasTune: end of the list of Tune_Index "<<m_Tune_Index<<" tune values : \n" - << "--------------------------------------------------------------------------------\n" ); - //________________________________________________________________________________________________________________________ - }// end of if (m_Tune_Index==20090003) condition - else if (m_Tune_Index==20100001) - { - // ATLAS jargon : AMBT1 - // references : ATLAS-CONF-2010-031, ATL-COM-PHYS-2010-267, ATL-COM-PHYS-2010-268 - // author : Markus Warsinsky et. al - // Pythia : 6.4.21 - // impl. date : June 2010 - // tune produced in : 2010 - // short description: the first tune including the ATLAS (MinBias, UE, 0.9TeV and 7TeV) data - //________________________________________________________________________________________________________________________ - this->pypars().mstp(128) =1; // fix junk output for documentary particles - this->pydat1().mstu(21) =1; // error handling switch - //physics - related - this->pypars().mstp(81)=21; // run PYEVNW with PYEVNT - this->pypars().mstp(82)=4; // MI structure - this->pypars().mstp(52)=2; // (needed for MRST2007lomod (LO* for MC)) - this->pypars().mstp(54)=2; // (needed for MRST2007lomod (LO* for MC)) - this->pypars().mstp(56)=2; // (needed for MRST2007lomod (LO* for MC)) - this->pypars().mstp(51)=20650; // (needed for MRST2007lomod (LO* for MC)) - this->pypars().mstp(53)=20650; // (needed for MRST2007lomod (LO* for MC)) - this->pypars().mstp(55)=20650; // (needed for MRST2007lomod (LO* for MC)) - this->pydat2().pmas(6,1)=172.5; // PDG2007 TOP mass - this->pydat2().pmas(24,1)=80.399; // PDG2007 W mass - this->pydat2().pmas(23,1)=91.1876; // PDG2007 Z0 mass - this->pypars().parp(62)=1.025; - this->pypars().mstp(70)=0; // (virtuality scale for ISR) - this->pypars().mstp(72)=1; - this->pypars().mstp(88)=1; - this->pypars().mstp(90)=0; - this->pypars().parp(77)=1.016; - this->pypars().parp(78)=0.538; - this->pypars().parp(80)=0.1; - this->pypars().parp(82)=2.292; // (cut off scale) - this->pypars().parp(83)=0.356; - this->pypars().parp(84)=0.651; // (matter distribution) - this->pypars().parp(90)=0.250; // (cut off scale) - this->pypars().parp(93)=10.0; - this->pydat1().parj(81)=0.29; - this->pypars().mstp(95)=6; - this->pydat1().mstj(11)=4; // select Lund-Bowler for c && b fragmentation - this->pydat1().mstj(22)=2; // (Make K_S, Lambda stable) - this->pydat1().parj(41)=0.3; // Lund-Bowler a - this->pydat1().parj(42)=0.58; // Lund-Bowler b - this->pydat1().parj(46)=0.75; // Lund-Bowler rQ - this->pypars().mstp(84)=1; - this->pypars().mstp(85)=1; - this->pypars().mstp(86)=2; - this->pypars().mstp(87)=4; - this->pypars().mstp(89)=1; - this->pypars().parp(89)=1800.; - //________________________________________________________________________________________________________________________ - ATH_MSG_INFO( "--------------------------------------------------------------------------------\n" - << "atlasTune: parameter setting to Tune_Index "<<m_Tune_Index<<" tune values : \n" - << "mstp(128) = "<< this->pypars().mstp(128) << "\n" - << "mstu(21) = "<< this->pydat1().mstu(21) << "\n" - << "mstp(81) = "<< this->pypars().mstp(81) << "\n" - << "mstp(82) = "<< this->pypars().mstp(82) << "\n" - << "mstp(52) = "<< this->pypars().mstp(52) << "\n" - << "mstp(54) = "<< this->pypars().mstp(54) << "\n" - << "mstp(56) = "<< this->pypars().mstp(56) << "\n" - << "mstp(51) = "<< this->pypars().mstp(51) << "\n" - << "mstp(53) = "<< this->pypars().mstp(53) << "\n" - << "mstp(55) = "<< this->pypars().mstp(55) << "\n" - << "pmas(6,1) = "<< this->pydat2().pmas(6,1) << "\n" - << "pmas(24,1) = "<< this->pydat2().pmas(24,1) << "\n" - << "pmas(23,1) = "<< this->pydat2().pmas(23,1) << "\n" - << "parp(62) = "<< this->pypars().parp(62) << "\n" - << "mstp(70) = "<< this->pypars().mstp(70) << "\n" - << "mstp(72) = "<< this->pypars().mstp(72) << "\n" - << "mstp(88) = "<< this->pypars().mstp(88) << "\n" - << "mstp(90) = "<< this->pypars().mstp(90) << "\n" - << "parp(77) = "<< this->pypars().parp(77) << "\n" - << "parp(78) = "<< this->pypars().parp(78) << "\n" - << "parp(80) = "<< this->pypars().parp(80) << "\n" - << "parp(82) = "<< this->pypars().parp(82) << "\n" - << "parp(83) = "<< this->pypars().parp(83) << "\n" - << "parp(84) = "<< this->pypars().parp(84) << "\n" - << "parp(90) = "<< this->pypars().parp(90) << "\n" - << "parp(93) = "<< this->pypars().parp(93) << "\n" - << "parj(81) = "<< this->pydat1().parj(81) << "\n" - << "mstp(95) = "<< this->pypars().mstp(95) << "\n" - << "mstj(11) = "<< this->pydat1().mstj(11) << "\n" - << "mstj(22) = "<< this->pydat1().mstj(22) << "\n" - << "parj(41) = "<< this->pydat1().parj(41) << "\n" - << "parj(42) = "<< this->pydat1().parj(42) << "\n" - << "parj(46) = "<< this->pydat1().parj(46) << "\n" - << "mstp(84) = "<< this->pypars().mstp(84) << "\n" - << "mstp(85) = "<< this->pypars().mstp(85) << "\n" - << "mstp(86) = "<< this->pypars().mstp(86) << "\n" - << "mstp(87) = "<< this->pypars().mstp(87) << "\n" - << "mstp(89) = "<< this->pypars().mstp(89) << "\n" - << "parp(89) = "<< this->pypars().parp(89) << "\n" - << "----------------------------------------------- \n" - << "atlasTune: end of the list of Tune_Index "<<m_Tune_Index<<" tune values : \n" - << "--------------------------------------------------------------------------------\n" ); - //________________________________________________________________________________________________________________________ - }// end of if (m_Tune_Index==20100001) condition - else if (m_Tune_Index==20110001) - { - // ATLAS jargon : AUET2 - // references : todo : add - // author : A. Buckley, J. Katzy (et. al) - // Pythia : 6.4.23 - // impl. date : Mar 2011 - // tune produced in : 2011 - // short description: LO** tune incl. ISR/FSR parameters, optimized for UE - //________________________________________________________________________________________________________________________ - this->pypars().mstp(128)=1; - this->pydat1().mstu(21)=1; - this->pypars().mstp(81)=21; - this->pypars().mstp(82)=4; - this->pypars().mstp(88)=1; - this->pypars().mstp(90)=0; - this->pypars().parp(80)=0.1; - this->pypars().parp(83)=0.356; - this->pypars().parp(93)=10.0; - this->pypars().mstp(95)=6; - this->pydat1().mstj(22)=2; - this->pydat1().parj(46)=0.75; - this->pypars().mstp(84)=1; - this->pypars().mstp(85)=1; - this->pypars().mstp(86)=2; - this->pypars().mstp(87)=4; - this->pypars().mstp(89)=1; - this->pypars().parp(89)=1800.; - this->pydat2().pmas(6,1)=172.5; - this->pydat2().pmas(24,1)=80.399; - this->pydat2().pmas(23,1)=91.1876; - this->pypars().mstp(51)=20651; - this->pypars().mstp(53)=20651; - this->pypars().mstp(55)=20651; - this->pypars().mstp(52)=2; - this->pypars().mstp(54)=2; - this->pypars().mstp(56)=2; - this->pydat1().mstj(11)=5; - this->pydat1().parj(1)=7.272809e-02; - this->pydat1().parj(2)=2.018845e-01; - this->pydat1().parj(3)=9.498471e-01; - this->pydat1().parj(4)=3.316182e-02; - this->pydat1().parj(11)=3.089764e-01; - this->pydat1().parj(12)=4.015396e-01; - this->pydat1().parj(13)=5.442874e-01; - this->pydat1().parj(25)=6.276964e-01; - this->pydat1().parj(26)=1.292377e-01; - this->pydat1().parj(21)=3.001463e-01; - this->pydat1().parj(41)=3.683123e-01; - this->pydat1().parj(42)=1.003531e+00; - this->pydat1().parj(47)=8.727703e-01; - this->pydat1().parj(81)=2.564716e-01; - this->pydat1().parj(82)=8.296215e-01; - this->pypars().mstp(3)=1; - this->pydat1().paru(112)=0.265; - this->pypars().parp(1)=0.265; - this->pypars().parp(61)=0.265; - this->pydat1().mstu(112)=4; - this->pypars().mstp(70)=0; - this->pypars().mstp(64)=3; - this->pypars().mstp(72)=2; - this->pypars().parp(62)=2.803673e+00; - this->pypars().parp(64)=2.213751e+00; - this->pypars().parp(67)=6.635356e-01; - this->pypars().parp(72)=2.496789e-01; - this->pypars().parp(91)=1.918441e+00; - this->pypars().parp(77)=1.127437e+00; - this->pypars().parp(78)=3.320624e-01; - this->pypars().parp(82)=2.451288e+00; - this->pypars().parp(84)=5.296569e-01; - this->pypars().parp(90)=2.290732e-01; - ATH_MSG_INFO( "---------------------------------------------------------------------------------\n" - << "atlasTune: parameter setting to Tune_Index "<<m_Tune_Index<<" tune values : \n" - << "----------------------------------------------- \n" - << "mstp(128)=" << this->pypars().mstp(128) << "\n" - << "mstu(21)=" << this->pydat1().mstu(21) << "\n" - << "mstp(81)=" << this->pypars().mstp(81) << "\n" - << "mstp(82)=" << this->pypars().mstp(82) << "\n" - << "mstp(88)=" << this->pypars().mstp(88) << "\n" - << "mstp(90)=" << this->pypars().mstp(90) << "\n" - << "parp(80)=" << this->pypars().parp(80) << "\n" - << "parp(83)=" << this->pypars().parp(83) << "\n" - << "parp(93)=" << this->pypars().parp(93) << "\n" - << "mstp(95)=" << this->pypars().mstp(95) << "\n" - << "mstj(22)=" << this->pydat1().mstj(22) << "\n" - << "parj(46)=" << this->pydat1().parj(46) << "\n" - << "mstp(84)=" << this->pypars().mstp(84) << "\n" - << "mstp(85)=" << this->pypars().mstp(85) << "\n" - << "mstp(86)=" << this->pypars().mstp(86) << "\n" - << "mstp(87)=" << this->pypars().mstp(87) << "\n" - << "mstp(89)=" << this->pypars().mstp(89) << "\n" - << "parp(89)=" << this->pypars().parp(89) << "\n" - << "pmas(6,1)=" << this->pydat2().pmas(6,1) << "\n" - << "pmas(24,1)=" << this->pydat2().pmas(24,1) << "\n" - << "pmas(23,1)=" << this->pydat2().pmas(23,1) << "\n" - << "mstp(51)=" << this->pypars().mstp(51) << "\n" - << "mstp(53)=" << this->pypars().mstp(53) << "\n" - << "mstp(55)=" << this->pypars().mstp(55) << "\n" - << "mstp(52)=" << this->pypars().mstp(52) << "\n" - << "mstp(54)=" << this->pypars().mstp(54) << "\n" - << "mstp(56)=" << this->pypars().mstp(56) << "\n" - << "mstj(11)=" << this->pydat1().mstj(11) << "\n" - << "parj(1)=" << this->pydat1().parj(1) << "\n" - << "parj(2)=" << this->pydat1().parj(2) << "\n" - << "parj(3)=" << this->pydat1().parj(3) << "\n" - << "parj(4)=" << this->pydat1().parj(4) << "\n" - << "parj(11)=" << this->pydat1().parj(11) << "\n" - << "parj(12)=" << this->pydat1().parj(12) << "\n" - << "parj(13)=" << this->pydat1().parj(13) << "\n" - << "parj(25)=" << this->pydat1().parj(25) << "\n" - << "parj(26)=" << this->pydat1().parj(26) << "\n" - << "parj(21)=" << this->pydat1().parj(21) << "\n" - << "parj(41)=" << this->pydat1().parj(41) << "\n" - << "parj(42)=" << this->pydat1().parj(42) << "\n" - << "parj(47)=" << this->pydat1().parj(47) << "\n" - << "parj(81)=" << this->pydat1().parj(81) << "\n" - << "parj(82)=" << this->pydat1().parj(82) << "\n" - << "mstp(3)=" << this->pypars().mstp(3) << "\n" - << "paru(112)=" << this->pydat1().paru(112) << "\n" - << "parp(1)=" << this->pypars().parp(1) << "\n" - << "parp(61)=" << this->pypars().parp(61) << "\n" - << "mstu(112)=" << this->pydat1().mstu(112) << "\n" - << "mstp(70)=" << this->pypars().mstp(70) << "\n" - << "mstp(64)=" << this->pypars().mstp(64) << "\n" - << "mstp(72)=" << this->pypars().mstp(72) << "\n" - << "parp(62)=" << this->pypars().parp(62) << "\n" - << "parp(64)=" << this->pypars().parp(64) << "\n" - << "parp(67)=" << this->pypars().parp(67) << "\n" - << "parp(72)=" << this->pypars().parp(72) << "\n" - << "parp(91)=" << this->pypars().parp(91) << "\n" - << "parp(77)=" << this->pypars().parp(77) << "\n" - << "parp(78)=" << this->pypars().parp(78) << "\n" - << "parp(82)=" << this->pypars().parp(82) << "\n" - << "parp(84)=" << this->pypars().parp(84) << "\n" - << "parp(90)=" << this->pypars().parp(90) << "\n" - << "----------------------------------------------- \n" - << "atlasTune: end of the list of Tune_Index "<<m_Tune_Index<<" tune values : \n" - << "--------------------------------------------------------------------------------\n" ); - } // end of 20110001 (AUET2) condition - else if (m_Tune_Index==20110101) - { - // ATLAS jargon : AMBT2 - // references : todo : add - // author : A. Buckley, J. Katzy (et. al) - // Pythia : 6.4.23 - // impl. date : Mar 2011 - // tune produced in : 2011 - // short description: LO** tune incl. ISR/FSR parameters, optimized for MinBias - //________________________________________________________________________________________________________________________ - this->pypars().mstp(128)=1; - this->pydat1().mstu(21)=1; - this->pypars().mstp(81)=21; - this->pypars().mstp(82)=4; - this->pypars().mstp(88)=1; - this->pypars().mstp(90)=0; - this->pypars().parp(80)=0.1; - this->pypars().parp(83)=0.356; - this->pypars().parp(93)=10.0; - this->pypars().mstp(95)=6; - this->pydat1().mstj(22)=2; - this->pydat1().parj(46)=0.75; - this->pypars().mstp(84)=1; - this->pypars().mstp(85)=1; - this->pypars().mstp(86)=2; - this->pypars().mstp(87)=4; - this->pypars().mstp(89)=1; - this->pypars().parp(89)=1800.; - this->pydat2().pmas(6,1)=172.5; - this->pydat2().pmas(24,1)=80.399; - this->pydat2().pmas(23,1)=91.1876; - this->pypars().mstp(51)=20651; - this->pypars().mstp(53)=20651; - this->pypars().mstp(55)=20651; - this->pypars().mstp(52)=2; - this->pypars().mstp(54)=2; - this->pypars().mstp(56)=2; - this->pydat1().mstj(11)=5; - this->pydat1().parj(1)=7.272809e-02; - this->pydat1().parj(2)=2.018845e-01; - this->pydat1().parj(3)=9.498471e-01; - this->pydat1().parj(4)=3.316182e-02; - this->pydat1().parj(11)=3.089764e-01; - this->pydat1().parj(12)=4.015396e-01; - this->pydat1().parj(13)=5.442874e-01; - this->pydat1().parj(25)=6.276964e-01; - this->pydat1().parj(26)=1.292377e-01; - this->pydat1().parj(21)=3.001463e-01; - this->pydat1().parj(41)=3.683123e-01; - this->pydat1().parj(42)=1.003531e+00; - this->pydat1().parj(47)=8.727703e-01; - this->pydat1().parj(81)=2.564716e-01; - this->pydat1().parj(82)=8.296215e-01; - this->pypars().mstp(3)=1; - this->pydat1().paru(112)=0.265; - this->pypars().parp(1)=0.265; - this->pypars().parp(61)=0.265; - this->pydat1().mstu(112)=4; - this->pypars().mstp(70)=0; - this->pypars().mstp(64)=3; - this->pypars().mstp(72)=2; - this->pypars().parp(62)=2.803673e+00; - this->pypars().parp(64)=2.213751e+00; - this->pypars().parp(67)=6.635356e-01; - this->pypars().parp(72)=2.496789e-01; - this->pypars().parp(91)=1.918441e+00; - this->pypars().parp(77)=0.88; - this->pypars().parp(78)=0.18; - this->pypars().parp(82)=2.49; - this->pypars().parp(84)=0.61; - this->pypars().parp(90)=0.244; - ATH_MSG_INFO( "---------------------------------------------------------------------------------\n" - << "atlasTune: parameter setting to Tune_Index "<<m_Tune_Index<<" tune values : \n" - << "----------------------------------------------- \n" - << "mstp(128)=" << this->pypars().mstp(128) << "\n" - << "mstu(21)=" << this->pydat1().mstu(21) << "\n" - << "mstp(81)=" << this->pypars().mstp(81) << "\n" - << "mstp(82)=" << this->pypars().mstp(82) << "\n" - << "mstp(88)=" << this->pypars().mstp(88) << "\n" - << "mstp(90)=" << this->pypars().mstp(90) << "\n" - << "parp(80)=" << this->pypars().parp(80) << "\n" - << "parp(83)=" << this->pypars().parp(83) << "\n" - << "parp(93)=" << this->pypars().parp(93) << "\n" - << "mstp(95)=" << this->pypars().mstp(95) << "\n" - << "mstj(22)=" << this->pydat1().mstj(22) << "\n" - << "parj(46)=" << this->pydat1().parj(46) << "\n" - << "mstp(84)=" << this->pypars().mstp(84) << "\n" - << "mstp(85)=" << this->pypars().mstp(85) << "\n" - << "mstp(86)=" << this->pypars().mstp(86) << "\n" - << "mstp(87)=" << this->pypars().mstp(87) << "\n" - << "mstp(89)=" << this->pypars().mstp(89) << "\n" - << "parp(89)=" << this->pypars().parp(89) << "\n" - << "pmas(6,1)=" << this->pydat2().pmas(6,1) << "\n" - << "pmas(24,1)=" << this->pydat2().pmas(24,1) << "\n" - << "pmas(23,1)=" << this->pydat2().pmas(23,1) << "\n" - << "mstp(51)=" << this->pypars().mstp(51) << "\n" - << "mstp(53)=" << this->pypars().mstp(53) << "\n" - << "mstp(55)=" << this->pypars().mstp(55) << "\n" - << "mstp(52)=" << this->pypars().mstp(52) << "\n" - << "mstp(54)=" << this->pypars().mstp(54) << "\n" - << "mstp(56)=" << this->pypars().mstp(56) << "\n" - << "mstj(11)=" << this->pydat1().mstj(11) << "\n" - << "parj(1)=" << this->pydat1().parj(1) << "\n" - << "parj(2)=" << this->pydat1().parj(2) << "\n" - << "parj(3)=" << this->pydat1().parj(3) << "\n" - << "parj(4)=" << this->pydat1().parj(4) << "\n" - << "parj(11)=" << this->pydat1().parj(11) << "\n" - << "parj(12)=" << this->pydat1().parj(12) << "\n" - << "parj(13)=" << this->pydat1().parj(13) << "\n" - << "parj(25)=" << this->pydat1().parj(25) << "\n" - << "parj(26)=" << this->pydat1().parj(26) << "\n" - << "parj(21)=" << this->pydat1().parj(21) << "\n" - << "parj(41)=" << this->pydat1().parj(41) << "\n" - << "parj(42)=" << this->pydat1().parj(42) << "\n" - << "parj(47)=" << this->pydat1().parj(47) << "\n" - << "parj(81)=" << this->pydat1().parj(81) << "\n" - << "parj(82)=" << this->pydat1().parj(82) << "\n" - << "mstp(3)=" << this->pypars().mstp(3) << "\n" - << "paru(112)=" << this->pydat1().paru(112) << "\n" - << "parp(1)=" << this->pypars().parp(1) << "\n" - << "parp(61)=" << this->pypars().parp(61) << "\n" - << "mstu(112)=" << this->pydat1().mstu(112) << "\n" - << "mstp(70)=" << this->pypars().mstp(70) << "\n" - << "mstp(64)=" << this->pypars().mstp(64) << "\n" - << "mstp(72)=" << this->pypars().mstp(72) << "\n" - << "parp(62)=" << this->pypars().parp(62) << "\n" - << "parp(64)=" << this->pypars().parp(64) << "\n" - << "parp(67)=" << this->pypars().parp(67) << "\n" - << "parp(72)=" << this->pypars().parp(72) << "\n" - << "parp(91)=" << this->pypars().parp(91) << "\n" - << "parp(77)=" << this->pypars().parp(77) << "\n" - << "parp(78)=" << this->pypars().parp(78) << "\n" - << "parp(82)=" << this->pypars().parp(82) << "\n" - << "parp(84)=" << this->pypars().parp(84) << "\n" - << "parp(90)=" << this->pypars().parp(90) << "\n" - << "----------------------------------------------- \n" - << "atlasTune: end of the list of Tune_Index "<<m_Tune_Index<<" tune values : \n" - << "--------------------------------------------------------------------------------\n" ); - } // end of 20110101 (AMBT2) condition - else if (m_Tune_Index==20110002) - { - // ATLAS jargon : AMBT1FF / AUET2b - // references : todo : add - // author : A. Buckley, J. Katzy (et. al) - // Pythia : 6.4.23 - // impl. date : Apr 2011 - // tune produced in : 2011 - // short description: LO** tune incl. ISR/FSR parameters, optimized for UE - //_______________________________________________________________________________________________________________________ - this->pypars().mstp(128)=1; - this->pydat1().mstu(21)=1; - this->pypars().mstp(81)=21; - this->pypars().mstp(82)=4; - this->pypars().mstp(72)=1; - this->pypars().mstp(88)=1; - this->pypars().mstp(90)=0; - this->pypars().parp(80)=0.1; - this->pypars().parp(83)=0.356; - this->pypars().parp(93)=10.0; - this->pypars().mstp(95)=6; - this->pydat1().mstj(22)=2; - this->pydat1().parj(46)=0.75; - this->pypars().mstp(84)=1; - this->pypars().mstp(85)=1; - this->pypars().mstp(86)=2; - this->pypars().mstp(87)=4; - this->pypars().mstp(89)=1; - this->pypars().parp(89)=1800.; - this->pydat2().pmas(6,1)=172.5; - this->pydat2().pmas(24,1)=80.399; - this->pydat2().pmas(23,1)=91.1876; - this->pypars().mstp(51)=20651; - this->pypars().mstp(53)=20651; - this->pypars().mstp(55)=20651; - this->pypars().mstp(52)=2; - this->pypars().mstp(54)=2; - this->pypars().mstp(56)=2; - this->pydat1().mstj(11)=5; - this->pydat1().parj(1)=7.272809e-02; - this->pydat1().parj(2)=2.018845e-01; - this->pydat1().parj(3)=9.498471e-01; - this->pydat1().parj(4)=3.316182e-02; - this->pydat1().parj(11)=3.089764e-01; - this->pydat1().parj(12)=4.015396e-01; - this->pydat1().parj(13)=5.442874e-01; - this->pydat1().parj(25)=6.276964e-01; - this->pydat1().parj(26)=1.292377e-01; - this->pydat1().parj(21)=3.001463e-01; - this->pydat1().parj(41)=3.683123e-01; - this->pydat1().parj(42)=1.003531e+00; - this->pydat1().parj(47)=8.727703e-01; - this->pydat1().parj(81)=2.564716e-01; - this->pydat1().parj(82)=8.296215e-01; - this->pypars().mstp(3)=1; - this->pydat1().paru(112)=0.192; - this->pypars().parp(1)=0.192; - this->pypars().parp(61)=0.192; - this->pypars().mstp(70)=0; - this->pypars().parp(67)=1.00; - this->pypars().parp(91)=2.00; - this->pypars().parp(62)=2.17; - this->pypars().parp(64)=0.60; - this->pypars().parp(72)=0.43; - this->pypars().parp(77)=9.006820e-01; - this->pypars().parp(78)=3.092771e-01; - this->pypars().parp(82)=2.437442e+00; - this->pypars().parp(84)=5.598934e-01; - this->pypars().parp(90)=2.414007e-01; - ATH_MSG_INFO( "---------------------------------------------------------------------------------\n" - << "atlasTune: parameter setting to Tune_Index "<<m_Tune_Index<<" tune values : \n" - << "----------------------------------------------- \n" - << "mstp(128)=" << this->pypars().mstp(128) << "\n" - << "mstu(21)=" << this->pydat1().mstu(21) << "\n" - << "mstp(81)=" << this->pypars().mstp(81) << "\n" - << "mstp(82)=" << this->pypars().mstp(82) << "\n" - << "mstp(72)=" << this->pypars().mstp(72) << "\n" - << "mstp(88)=" << this->pypars().mstp(88) << "\n" - << "mstp(90)=" << this->pypars().mstp(90) << "\n" - << "parp(80)=" << this->pypars().parp(80) << "\n" - << "parp(83)=" << this->pypars().parp(83) << "\n" - << "parp(93)=" << this->pypars().parp(93) << "\n" - << "mstp(95)=" << this->pypars().mstp(95) << "\n" - << "mstj(22)=" << this->pydat1().mstj(22) << "\n" - << "parj(46)=" << this->pydat1().parj(46) << "\n" - << "mstp(84)=" << this->pypars().mstp(84) << "\n" - << "mstp(85)=" << this->pypars().mstp(85) << "\n" - << "mstp(86)=" << this->pypars().mstp(86) << "\n" - << "mstp(87)=" << this->pypars().mstp(87) << "\n" - << "mstp(89)=" << this->pypars().mstp(89) << "\n" - << "parp(89)=" << this->pypars().parp(89) << "\n" - << "pmas(6,1)=" << this->pydat2().pmas(6,1) << "\n" - << "pmas(24,1)=" << this->pydat2().pmas(24,1) << "\n" - << "pmas(23,1)=" << this->pydat2().pmas(23,1) << "\n" - << "pmas(23,1)=" << this->pydat2().pmas(23,1) << "\n" - << "pmas(23,1)=" << this->pydat2().pmas(23,1) << "\n" - << "mstp(51)=" << this->pypars().mstp(51) << "\n" - << "mstp(53)=" << this->pypars().mstp(53) << "\n" - << "mstp(55)=" << this->pypars().mstp(55) << "\n" - << "mstp(52)=" << this->pypars().mstp(52) << "\n" - << "mstp(54)=" << this->pypars().mstp(54) << "\n" - << "mstp(56)=" << this->pypars().mstp(56) << "\n" - << "mstj(11)=" << this->pydat1().mstj(11) << "\n" - << "parj(1)=" << this->pydat1().parj(1) << "\n" - << "parj(2)=" << this->pydat1().parj(2) << "\n" - << "parj(3)=" << this->pydat1().parj(3) << "\n" - << "parj(4)=" << this->pydat1().parj(4) << "\n" - << "parj(11)=" << this->pydat1().parj(11) << "\n" - << "parj(12)=" << this->pydat1().parj(12) << "\n" - << "parj(13)=" << this->pydat1().parj(13) << "\n" - << "parj(25)=" << this->pydat1().parj(25) << "\n" - << "parj(26)=" << this->pydat1().parj(26) << "\n" - << "parj(21)=" << this->pydat1().parj(21) << "\n" - << "parj(41)=" << this->pydat1().parj(41) << "\n" - << "parj(42)=" << this->pydat1().parj(42) << "\n" - << "parj(47)=" << this->pydat1().parj(47) << "\n" - << "parj(81)=" << this->pydat1().parj(81) << "\n" - << "parj(82)=" << this->pydat1().parj(82) << "\n" - << "mstp(3)=" << this->pypars().mstp(3) << "\n" - << "paru(112)=" << this->pydat1().paru(112) << "\n" - << "parp(1)=" << this->pypars().parp(1) << "\n" - << "parp(61)=" << this->pypars().parp(61) << "\n" - << "parp(61)=" << this->pypars().parp(61) << "\n" - << "mstp(70)=" << this->pypars().mstp(70) << "\n" - << "parp(67)=" << this->pypars().parp(67) << "\n" - << "parp(91)=" << this->pypars().parp(91) << "\n" - << "parp(62)=" << this->pypars().parp(62) << "\n" - << "parp(64)=" << this->pypars().parp(64) << "\n" - << "parp(72)=" << this->pypars().parp(72) << "\n" - << "parp(77)=" << this->pypars().parp(77) << "\n" - << "parp(78)=" << this->pypars().parp(78) << "\n" - << "parp(82)=" << this->pypars().parp(82) << "\n" - << "parp(84)=" << this->pypars().parp(84) << "\n" - << "parp(90)=" << this->pypars().parp(90) << "\n" - << "----------------------------------------------- \n" - << "atlasTune: end of the list of Tune_Index "<<m_Tune_Index<<" tune values : \n" - << "--------------------------------------------------------------------------------\n" ); - } // end of 20110002 (AMBT1FF/AUET2b) condition - else if (m_Tune_Index==20110102) - { - // ATLAS jargon : AMBT2b - // references : todo : add - // author : A. Buckley, J. Katzy (et. al) - // Pythia : 6.4.23 - // impl. date : Apr 2011 - // tune produced in : 2011 - // short description: LO** tune incl. ISR/FSR parameters, optimized for MinBias - //_______________________________________________________________________________________________________________________ - this->pypars().mstp(128)=1; - this->pydat1().mstu(21)=1; - this->pypars().mstp(81)=21; - this->pypars().mstp(82)=4; - this->pypars().mstp(72)=1; - this->pypars().mstp(88)=1; - this->pypars().mstp(90)=0; - this->pypars().parp(80)=0.1; - this->pypars().parp(83)=0.356; - this->pypars().parp(93)=10.0; - this->pypars().mstp(95)=6; - this->pydat1().mstj(22)=2; - this->pydat1().parj(46)=0.75; - this->pypars().mstp(84)=1; - this->pypars().mstp(85)=1; - this->pypars().mstp(86)=2; - this->pypars().mstp(87)=4; - this->pypars().mstp(89)=1; - this->pypars().parp(89)=1800.; - this->pydat2().pmas(6,1)=172.5; - this->pydat2().pmas(24,1)=80.399; - this->pydat2().pmas(23,1)=91.1876; - this->pypars().mstp(51)=20651; - this->pypars().mstp(53)=20651; - this->pypars().mstp(55)=20651; - this->pypars().mstp(52)=2; - this->pypars().mstp(54)=2; - this->pypars().mstp(56)=2; - this->pydat1().mstj(11)=5; - this->pydat1().parj(1)=7.272809e-02; - this->pydat1().parj(2)=2.018845e-01; - this->pydat1().parj(3)=9.498471e-01; - this->pydat1().parj(4)=3.316182e-02; - this->pydat1().parj(11)=3.089764e-01; - this->pydat1().parj(12)=4.015396e-01; - this->pydat1().parj(13)=5.442874e-01; - this->pydat1().parj(25)=6.276964e-01; - this->pydat1().parj(26)=1.292377e-01; - this->pydat1().parj(21)=3.001463e-01; - this->pydat1().parj(41)=3.683123e-01; - this->pydat1().parj(42)=1.003531e+00; - this->pydat1().parj(47)=8.727703e-01; - this->pydat1().parj(81)=2.564716e-01; - this->pydat1().parj(82)=8.296215e-01; - this->pypars().mstp(3)=1; - this->pydat1().paru(112)=0.192; - this->pypars().parp(1)=0.192; - this->pypars().parp(61)=0.192; - this->pypars().mstp(70)=0; - this->pypars().parp(67)=1.00; - this->pypars().parp(91)=2.00; - this->pypars().parp(62)=2.17; - this->pypars().parp(64)=0.60; - this->pypars().parp(72)=0.43; - this->pypars().parp(77)=1.100584e+00; - this->pypars().parp(78)=2.478809e-01; - this->pypars().parp(82)=2.592214e+00; - this->pypars().parp(84)=6.669917e-01; - this->pypars().parp(90)=2.552765e-01; - ATH_MSG_INFO( "---------------------------------------------------------------------------------\n" - << "atlasTune: parameter setting to Tune_Index "<<m_Tune_Index<<" tune values : \n" - << "----------------------------------------------- \n" - << "mstp(128)=" << this->pypars().mstp(128) << "\n" - << "mstu(21)=" << this->pydat1().mstu(21) << "\n" - << "mstp(81)=" << this->pypars().mstp(81) << "\n" - << "mstp(82)=" << this->pypars().mstp(82) << "\n" - << "mstp(72)=" << this->pypars().mstp(72) << "\n" - << "mstp(88)=" << this->pypars().mstp(88) << "\n" - << "mstp(90)=" << this->pypars().mstp(90) << "\n" - << "parp(80)=" << this->pypars().parp(80) << "\n" - << "parp(83)=" << this->pypars().parp(83) << "\n" - << "parp(93)=" << this->pypars().parp(93) << "\n" - << "mstp(95)=" << this->pypars().mstp(95) << "\n" - << "mstj(22)=" << this->pydat1().mstj(22) << "\n" - << "parj(46)=" << this->pydat1().parj(46) << "\n" - << "mstp(84)=" << this->pypars().mstp(84) << "\n" - << "mstp(85)=" << this->pypars().mstp(85) << "\n" - << "mstp(86)=" << this->pypars().mstp(86) << "\n" - << "mstp(87)=" << this->pypars().mstp(87) << "\n" - << "mstp(89)=" << this->pypars().mstp(89) << "\n" - << "parp(89)=" << this->pypars().parp(89) << "\n" - << "pmas(6,1)=" << this->pydat2().pmas(6,1) << "\n" - << "pmas(24,1)=" << this->pydat2().pmas(24,1) << "\n" - << "pmas(23,1)=" << this->pydat2().pmas(23,1) << "\n" - << "pmas(23,1)=" << this->pydat2().pmas(23,1) << "\n" - << "pmas(23,1)=" << this->pydat2().pmas(23,1) << "\n" - << "mstp(51)=" << this->pypars().mstp(51) << "\n" - << "mstp(53)=" << this->pypars().mstp(53) << "\n" - << "mstp(55)=" << this->pypars().mstp(55) << "\n" - << "mstp(52)=" << this->pypars().mstp(52) << "\n" - << "mstp(54)=" << this->pypars().mstp(54) << "\n" - << "mstp(56)=" << this->pypars().mstp(56) << "\n" - << "mstj(11)=" << this->pydat1().mstj(11) << "\n" - << "parj(1)=" << this->pydat1().parj(1) << "\n" - << "parj(2)=" << this->pydat1().parj(2) << "\n" - << "parj(3)=" << this->pydat1().parj(3) << "\n" - << "parj(4)=" << this->pydat1().parj(4) << "\n" - << "parj(11)=" << this->pydat1().parj(11) << "\n" - << "parj(12)=" << this->pydat1().parj(12) << "\n" - << "parj(13)=" << this->pydat1().parj(13) << "\n" - << "parj(25)=" << this->pydat1().parj(25) << "\n" - << "parj(26)=" << this->pydat1().parj(26) << "\n" - << "parj(21)=" << this->pydat1().parj(21) << "\n" - << "parj(41)=" << this->pydat1().parj(41) << "\n" - << "parj(42)=" << this->pydat1().parj(42) << "\n" - << "parj(47)=" << this->pydat1().parj(47) << "\n" - << "parj(81)=" << this->pydat1().parj(81) << "\n" - << "parj(82)=" << this->pydat1().parj(82) << "\n" - << "mstp(3)=" << this->pypars().mstp(3) << "\n" - << "paru(112)=" << this->pydat1().paru(112) << "\n" - << "parp(1)=" << this->pypars().parp(1) << "\n" - << "parp(61)=" << this->pypars().parp(61) << "\n" - << "parp(61)=" << this->pypars().parp(61) << "\n" - << "mstp(70)=" << this->pypars().mstp(70) << "\n" - << "parp(67)=" << this->pypars().parp(67) << "\n" - << "parp(91)=" << this->pypars().parp(91) << "\n" - << "parp(62)=" << this->pypars().parp(62) << "\n" - << "parp(64)=" << this->pypars().parp(64) << "\n" - << "parp(72)=" << this->pypars().parp(72) << "\n" - << "parp(77)=" << this->pypars().parp(77) << "\n" - << "parp(78)=" << this->pypars().parp(78) << "\n" - << "parp(82)=" << this->pypars().parp(82) << "\n" - << "parp(84)=" << this->pypars().parp(84) << "\n" - << "parp(90)=" << this->pypars().parp(90) << "\n" - << "----------------------------------------------- \n" - << "atlasTune: end of the list of Tune_Index "<<m_Tune_Index<<" tune values : \n" - << "--------------------------------------------------------------------------------\n" ); - } // end of 20110102 (AMBT2b) condition - else if (m_Tune_Index==20110003) - { - // ATLAS jargon : AUET2b - // references : todo : add - // author : A. Buckley, J. Katzy (et. al) - // Pythia : 6.4.23 - // impl. date : Apr 2011 - // tune produced in : 2011 - // short description: CTEQ6L1 tune incl. ISR/FSR parameters, optimized for UE - //_______________________________________________________________________________________________________________________ - this->pypars().mstp(128)=1; - this->pydat1().mstu(21)=1; - this->pypars().mstp(81)=21; - this->pypars().mstp(82)=4; - this->pypars().mstp(72)=1; - this->pypars().mstp(88)=1; - this->pypars().mstp(90)=0; - this->pypars().parp(80)=0.1; - this->pypars().parp(83)=0.356; - this->pypars().parp(93)=10.0; - this->pypars().mstp(95)=6; - this->pydat1().mstj(22)=2; - this->pydat1().parj(46)=0.75; - this->pypars().mstp(84)=1; - this->pypars().mstp(85)=1; - this->pypars().mstp(86)=2; - this->pypars().mstp(87)=4; - this->pypars().mstp(89)=1; - this->pypars().parp(89)=1800.; - this->pydat2().pmas(6,1)=172.5; - this->pydat2().pmas(24,1)=80.399; - this->pydat2().pmas(23,1)=91.1876; - this->pypars().mstp(51)=10042; - this->pypars().mstp(53)=10042; - this->pypars().mstp(55)=10042; - this->pypars().mstp(52)=2; - this->pypars().mstp(54)=2; - this->pypars().mstp(56)=2; - this->pydat1().mstj(11)=5; - this->pydat1().parj(1)=7.272809e-02; - this->pydat1().parj(2)=2.018845e-01; - this->pydat1().parj(3)=9.498471e-01; - this->pydat1().parj(4)=3.316182e-02; - this->pydat1().parj(11)=3.089764e-01; - this->pydat1().parj(12)=4.015396e-01; - this->pydat1().parj(13)=5.442874e-01; - this->pydat1().parj(25)=6.276964e-01; - this->pydat1().parj(26)=1.292377e-01; - this->pydat1().parj(21)=3.001463e-01; - this->pydat1().parj(41)=3.683123e-01; - this->pydat1().parj(42)=1.003531e+00; - this->pydat1().parj(47)=8.727703e-01; - this->pydat1().parj(81)=2.564716e-01; - this->pydat1().parj(82)=8.296215e-01; - this->pypars().mstp(3)=1; - this->pydat1().paru(112)=0.192; - this->pypars().parp(1)=0.192; - this->pypars().parp(61)=0.192; - this->pypars().mstp(70)=0; - this->pypars().parp(67)=1.00; - this->pypars().parp(91)=2.00; - this->pypars().parp(62)=1.13; - this->pypars().parp(64)=0.68; - this->pypars().parp(72)=0.527; - this->pypars().parp(77)=4.905171e-01; - this->pypars().parp(78)=3.105197e-01; - this->pypars().parp(82)=2.259809e+00; - this->pypars().parp(84)=4.430423e-01; - this->pypars().parp(90)=2.490763e-01; - ATH_MSG_INFO( "---------------------------------------------------------------------------------\n" - << "atlasTune: parameter setting to Tune_Index "<<m_Tune_Index<<" tune values : \n" - << "----------------------------------------------- \n" - << "mstp(128)=" << this->pypars().mstp(128) << "\n" - << "mstu(21)=" << this->pydat1().mstu(21) << "\n" - << "mstp(81)=" << this->pypars().mstp(81) << "\n" - << "mstp(82)=" << this->pypars().mstp(82) << "\n" - << "mstp(72)=" << this->pypars().mstp(72) << "\n" - << "mstp(88)=" << this->pypars().mstp(88) << "\n" - << "mstp(90)=" << this->pypars().mstp(90) << "\n" - << "parp(80)=" << this->pypars().parp(80) << "\n" - << "parp(83)=" << this->pypars().parp(83) << "\n" - << "parp(93)=" << this->pypars().parp(93) << "\n" - << "mstp(95)=" << this->pypars().mstp(95) << "\n" - << "mstj(22)=" << this->pydat1().mstj(22) << "\n" - << "parj(46)=" << this->pydat1().parj(46) << "\n" - << "mstp(84)=" << this->pypars().mstp(84) << "\n" - << "mstp(85)=" << this->pypars().mstp(85) << "\n" - << "mstp(86)=" << this->pypars().mstp(86) << "\n" - << "mstp(87)=" << this->pypars().mstp(87) << "\n" - << "mstp(89)=" << this->pypars().mstp(89) << "\n" - << "parp(89)=" << this->pypars().parp(89) << "\n" - << "pmas(6,1)=" << this->pydat2().pmas(6,1) << "\n" - << "pmas(24,1)=" << this->pydat2().pmas(24,1) << "\n" - << "pmas(23,1)=" << this->pydat2().pmas(23,1) << "\n" - << "pmas(23,1)=" << this->pydat2().pmas(23,1) << "\n" - << "pmas(23,1)=" << this->pydat2().pmas(23,1) << "\n" - << "mstp(51)=" << this->pypars().mstp(51) << "\n" - << "mstp(53)=" << this->pypars().mstp(53) << "\n" - << "mstp(55)=" << this->pypars().mstp(55) << "\n" - << "mstp(52)=" << this->pypars().mstp(52) << "\n" - << "mstp(54)=" << this->pypars().mstp(54) << "\n" - << "mstp(56)=" << this->pypars().mstp(56) << "\n" - << "mstj(11)=" << this->pydat1().mstj(11) << "\n" - << "parj(1)=" << this->pydat1().parj(1) << "\n" - << "parj(2)=" << this->pydat1().parj(2) << "\n" - << "parj(3)=" << this->pydat1().parj(3) << "\n" - << "parj(4)=" << this->pydat1().parj(4) << "\n" - << "parj(11)=" << this->pydat1().parj(11) << "\n" - << "parj(12)=" << this->pydat1().parj(12) << "\n" - << "parj(13)=" << this->pydat1().parj(13) << "\n" - << "parj(25)=" << this->pydat1().parj(25) << "\n" - << "parj(26)=" << this->pydat1().parj(26) << "\n" - << "parj(21)=" << this->pydat1().parj(21) << "\n" - << "parj(41)=" << this->pydat1().parj(41) << "\n" - << "parj(42)=" << this->pydat1().parj(42) << "\n" - << "parj(47)=" << this->pydat1().parj(47) << "\n" - << "parj(81)=" << this->pydat1().parj(81) << "\n" - << "parj(82)=" << this->pydat1().parj(82) << "\n" - << "mstp(3)=" << this->pypars().mstp(3) << "\n" - << "paru(112)=" << this->pydat1().paru(112) << "\n" - << "parp(1)=" << this->pypars().parp(1) << "\n" - << "parp(61)=" << this->pypars().parp(61) << "\n" - << "parp(61)=" << this->pypars().parp(61) << "\n" - << "mstp(70)=" << this->pypars().mstp(70) << "\n" - << "parp(67)=" << this->pypars().parp(67) << "\n" - << "parp(91)=" << this->pypars().parp(91) << "\n" - << "parp(62)=" << this->pypars().parp(62) << "\n" - << "parp(64)=" << this->pypars().parp(64) << "\n" - << "parp(72)=" << this->pypars().parp(72) << "\n" - << "parp(77)=" << this->pypars().parp(77) << "\n" - << "parp(78)=" << this->pypars().parp(78) << "\n" - << "parp(82)=" << this->pypars().parp(82) << "\n" - << "parp(84)=" << this->pypars().parp(84) << "\n" - << "parp(90)=" << this->pypars().parp(90) << "\n" - << "----------------------------------------------- \n" - << "atlasTune: end of the list of Tune_Index "<<m_Tune_Index<<" tune values : \n" - << "--------------------------------------------------------------------------------\n" ); - } // end of 20110003 (AUET2b) condition - else if (m_Tune_Index==20110103) - { - // ATLAS jargon : AMBT2b - // references : todo : add - // author : A. Buckley, J. Katzy (et. al) - // Pythia : 6.4.23 - // impl. date : Apr 2011 - // tune produced in : 2011 - // short description: CTEQ6L1 tune incl. ISR/FSR parameters, optimized for MinBias - //_______________________________________________________________________________________________________________________ - this->pypars().mstp(128)=1; - this->pydat1().mstu(21)=1; - this->pypars().mstp(81)=21; - this->pypars().mstp(82)=4; - this->pypars().mstp(72)=1; - this->pypars().mstp(88)=1; - this->pypars().mstp(90)=0; - this->pypars().parp(80)=0.1; - this->pypars().parp(83)=0.356; - this->pypars().parp(93)=10.0; - this->pypars().mstp(95)=6; - this->pydat1().mstj(22)=2; - this->pydat1().parj(46)=0.75; - this->pypars().mstp(84)=1; - this->pypars().mstp(85)=1; - this->pypars().mstp(86)=2; - this->pypars().mstp(87)=4; - this->pypars().mstp(89)=1; - this->pypars().parp(89)=1800.; - this->pydat2().pmas(6,1)=172.5; - this->pydat2().pmas(24,1)=80.399; - this->pydat2().pmas(23,1)=91.1876; - this->pypars().mstp(51)=10042; - this->pypars().mstp(53)=10042; - this->pypars().mstp(55)=10042; - this->pypars().mstp(52)=2; - this->pypars().mstp(54)=2; - this->pypars().mstp(56)=2; - this->pydat1().mstj(11)=5; - this->pydat1().parj(1)=7.272809e-02; - this->pydat1().parj(2)=2.018845e-01; - this->pydat1().parj(3)=9.498471e-01; - this->pydat1().parj(4)=3.316182e-02; - this->pydat1().parj(11)=3.089764e-01; - this->pydat1().parj(12)=4.015396e-01; - this->pydat1().parj(13)=5.442874e-01; - this->pydat1().parj(25)=6.276964e-01; - this->pydat1().parj(26)=1.292377e-01; - this->pydat1().parj(21)=3.001463e-01; - this->pydat1().parj(41)=3.683123e-01; - this->pydat1().parj(42)=1.003531e+00; - this->pydat1().parj(47)=8.727703e-01; - this->pydat1().parj(81)=2.564716e-01; - this->pydat1().parj(82)=8.296215e-01; - this->pypars().mstp(3)=1; - this->pydat1().paru(112)=0.192; - this->pypars().parp(1)=0.192; - this->pypars().parp(61)=0.192; - this->pypars().mstp(70)=0; - this->pypars().parp(67)=1.00; - this->pypars().parp(91)=2.00; - this->pypars().parp(62)=1.13; - this->pypars().parp(64)=0.68; - this->pypars().parp(72)=0.527; - this->pypars().parp(77)=3.566023e-01; - this->pypars().parp(78)=2.350777e-01; - this->pypars().parp(82)=2.342685e+00; - this->pypars().parp(84)=6.053474e-01; - this->pypars().parp(90)=2.456730e-01; - ATH_MSG_INFO( "---------------------------------------------------------------------------------\n" - << "atlasTune: parameter setting to Tune_Index "<<m_Tune_Index<<" tune values : \n" - << "----------------------------------------------- \n" - << "mstp(128)=" << this->pypars().mstp(128) << "\n" - << "mstu(21)=" << this->pydat1().mstu(21) << "\n" - << "mstp(81)=" << this->pypars().mstp(81) << "\n" - << "mstp(82)=" << this->pypars().mstp(82) << "\n" - << "mstp(72)=" << this->pypars().mstp(72) << "\n" - << "mstp(88)=" << this->pypars().mstp(88) << "\n" - << "mstp(90)=" << this->pypars().mstp(90) << "\n" - << "parp(80)=" << this->pypars().parp(80) << "\n" - << "parp(83)=" << this->pypars().parp(83) << "\n" - << "parp(93)=" << this->pypars().parp(93) << "\n" - << "mstp(95)=" << this->pypars().mstp(95) << "\n" - << "mstj(22)=" << this->pydat1().mstj(22) << "\n" - << "parj(46)=" << this->pydat1().parj(46) << "\n" - << "mstp(84)=" << this->pypars().mstp(84) << "\n" - << "mstp(85)=" << this->pypars().mstp(85) << "\n" - << "mstp(86)=" << this->pypars().mstp(86) << "\n" - << "mstp(87)=" << this->pypars().mstp(87) << "\n" - << "mstp(89)=" << this->pypars().mstp(89) << "\n" - << "parp(89)=" << this->pypars().parp(89) << "\n" - << "pmas(6,1)=" << this->pydat2().pmas(6,1) << "\n" - << "pmas(24,1)=" << this->pydat2().pmas(24,1) << "\n" - << "pmas(23,1)=" << this->pydat2().pmas(23,1) << "\n" - << "pmas(23,1)=" << this->pydat2().pmas(23,1) << "\n" - << "pmas(23,1)=" << this->pydat2().pmas(23,1) << "\n" - << "mstp(51)=" << this->pypars().mstp(51) << "\n" - << "mstp(53)=" << this->pypars().mstp(53) << "\n" - << "mstp(55)=" << this->pypars().mstp(55) << "\n" - << "mstp(52)=" << this->pypars().mstp(52) << "\n" - << "mstp(54)=" << this->pypars().mstp(54) << "\n" - << "mstp(56)=" << this->pypars().mstp(56) << "\n" - << "mstj(11)=" << this->pydat1().mstj(11) << "\n" - << "parj(1)=" << this->pydat1().parj(1) << "\n" - << "parj(2)=" << this->pydat1().parj(2) << "\n" - << "parj(3)=" << this->pydat1().parj(3) << "\n" - << "parj(4)=" << this->pydat1().parj(4) << "\n" - << "parj(11)=" << this->pydat1().parj(11) << "\n" - << "parj(12)=" << this->pydat1().parj(12) << "\n" - << "parj(13)=" << this->pydat1().parj(13) << "\n" - << "parj(25)=" << this->pydat1().parj(25) << "\n" - << "parj(26)=" << this->pydat1().parj(26) << "\n" - << "parj(21)=" << this->pydat1().parj(21) << "\n" - << "parj(41)=" << this->pydat1().parj(41) << "\n" - << "parj(42)=" << this->pydat1().parj(42) << "\n" - << "parj(47)=" << this->pydat1().parj(47) << "\n" - << "parj(81)=" << this->pydat1().parj(81) << "\n" - << "parj(82)=" << this->pydat1().parj(82) << "\n" - << "mstp(3)=" << this->pypars().mstp(3) << "\n" - << "paru(112)=" << this->pydat1().paru(112) << "\n" - << "parp(1)=" << this->pypars().parp(1) << "\n" - << "parp(61)=" << this->pypars().parp(61) << "\n" - << "parp(61)=" << this->pypars().parp(61) << "\n" - << "mstp(70)=" << this->pypars().mstp(70) << "\n" - << "parp(67)=" << this->pypars().parp(67) << "\n" - << "parp(91)=" << this->pypars().parp(91) << "\n" - << "parp(62)=" << this->pypars().parp(62) << "\n" - << "parp(64)=" << this->pypars().parp(64) << "\n" - << "parp(72)=" << this->pypars().parp(72) << "\n" - << "parp(77)=" << this->pypars().parp(77) << "\n" - << "parp(78)=" << this->pypars().parp(78) << "\n" - << "parp(82)=" << this->pypars().parp(82) << "\n" - << "parp(84)=" << this->pypars().parp(84) << "\n" - << "parp(90)=" << this->pypars().parp(90) << "\n" - << "----------------------------------------------- \n" - << "atlasTune: end of the list of Tune_Index "<<m_Tune_Index<<" tune values : \n" - << "--------------------------------------------------------------------------------\n" ); - } // end of 20110103 (AMBT2b) condition - else - { - ATH_MSG_WARNING( "atlasTune: no tune with Tune_Index : "<<m_Tune_Index << "\n" - << "run with current default ATLAS tune : "<<m_Default_Tune_Name << "\n" ); - //set Tune_Type to empty to get common undefined tune behavior - m_Tune_Type=" "; - StatusCode sc = PythiaResMod::setPythiaTune(); - } - - ATH_MSG_INFO( "atlasTune: all done \n" - << "________________________________________________________________________________\n" ); - return StatusCode::SUCCESS; - - //end of atlasTune def. -} - diff --git a/Generators/PythiaExo_i/src/atlasTuneTopMdiff.cxx b/Generators/PythiaExo_i/src/atlasTuneTopMdiff.cxx deleted file mode 100644 index 51940926083d01f4a8e073e56abb77d8e07b21b3..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/atlasTuneTopMdiff.cxx +++ /dev/null @@ -1,1439 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#include "PythiaExo_i/PythiaTopMdiff.h" - -/* - ________________________________________________________________________________________________________________________ - - L.M., - Pythia parameter settings / TUNE - - Aug. 09 - - called by Pythia.cxx - set ATLAS tune/parameters set determined by m_Tune_Index - m_Tune_Index 0,-1 and -2 are technical settings to run with 0, recommended or common set of ATLAS Pythia parameters - in case m_Tune_Index does not correspond to ATLAS tune index use default ATLAS tune (set by m_Default_Tune_Name) - ------------------------------------------------------------------------------------------------------------------------- - Backw. compat: old tune setting syntax remains supported. - Mixing of the old and new tune settings is not supported and in this case Atlas default tune settings are used and - - May 09 - - In case only the old syntax is used, the switches have the following effect: - 1. useAtlasPythiaRecomm : false sets m_Tune_Index=0 [default:true ] - Event record, error handlig, new PS/MI model, MI structure - 2. useAtlasPythiaCommon : false sets m_Tune_Index=-1; [default:true ] - (ATLAS specific) print-out, particle properties, MI structure, pdf - 3. useAtlasPythiaTune09 : sets m_Tune_Index=m_mc09_Tune_Index [default:false ] - 4. useAtlasPythiaTune08 : sets m_Tune_Index=m_mc08_Tune_Index [default:false ] - 5. useNoAtlasPythiaParam : sets bool m_useNoAtlasPythiaParam [default:false ] - Using Pythia defaults + parameters set by the jO only. - Please note that the use of ATLAS defaults is recommended. - Please consider keeping the settings of switch 1. - - ________________________________________________________________________________________________________________________ - */ - -StatusCode PythiaTopMdiff::atlasTune() - -{ - // if tune is left to the dummy starting value, use the default tune: - if (m_Tune_Index==m_Starting_Tune_Index) m_Tune_Index=m_Default_Tune_Index; - - ATH_MSG_INFO( "\n________________________________________________________________________________\n" - << "atlasTune: [Pythia_i/src/atlasTune.cxx] \n" - << "atlasTune: setting Pythia parameter values: \n" - << "--------------------------------------------------------------------------------" ); - - // note: m_Tune_Name == "ATLAS_blah" will end here since atoi() returns 0 if it can't ocnvert arg. to int - if (m_Tune_Index==0) - { - ATH_MSG_WARNING( "setPythiaTune: m_Tune_Index=0 requested, \n" - << "setPythiaTune: skipping par. setting by Pythia_i, running with Pythia defaults. \n" - << "setPythiaTune: Using Pythia defaults + parameters set by the USER. \n" - << "setPythiaTune: Please note that the use of ATLAS defaults is recommended. \n" - << "setPythiaTune: Please consider keeping the settings of Tune_Name=-1,-2. \n" - << "--------------------------------------------------------------------------------" ); - return StatusCode::SUCCESS; - }//end of {m_Tune_Index==0} condition - //--------------------------------------------------------------------------- - //____________________________________________________________________________________________________________________________ - // when not using an ATLAS tune but want to keep recommended / common settings: - else if (m_Tune_Index<0) - { - if (m_Tune_Index==-1) - { - //________________________________________________________________________________________________________________________ - // printout details + - this->pypars().mstp(128) =1; // fix junk output for documentary particles - this->pydat1().mstu(21) =1; // error handling switch - this->pypars().mstp(81) =21; // run PYEVNW with PYEVNT - this->pydat1().mstj(22)=2; // stable particles convention - //________________________________________________________________________________________________________________________ - ATH_MSG_INFO( "mstp(128) = "<< this->pypars().mstp(128) << "\n" - << "mstu(21) = "<< this->pydat1().mstu(21) << "\n" - << "mstp(81) = "<< this->pypars().mstp(81) << "\n" - << "mstj(22) = "<< this->pydat1().mstj(22) ); - - //________________________________________________________________________________________________________________________ - } - if (m_Tune_Index==-2) - { - //________________________________________________________________________________________________________________________ - // printout details - this->pypars().mstp(128) =1; // fix junk output for documentary particles - this->pydat1().mstu(21) =1; // error handling switch - this->pypars().mstp(81) =21; // run PYEVNW with PYEVNT - this->pydat1().mstj(22)=2; // stable particles convention - //________________________________________________________________________________________________________________________ - //physics-related - this->pypars().mstp(82)=4; // MI structure - this->pypars().mstp(52)=2; // (needed for MRST2007lomod (LO* for MC)) - this->pypars().mstp(54)=2; // (needed for MRST2007lomod (LO* for MC)) - this->pypars().mstp(56)=2; // (needed for MRST2007lomod (LO* for MC)) - this->pypars().mstp(51)=20651; // LO** - this->pypars().mstp(53)=20651; // LO** - this->pypars().mstp(55)=20651; // LO** - this->pydat2().pmas(6,1)=172.5; // PDG2007 TOP mass - this->pydat2().pmas(24,1)=80.399; // PDG2007 W mass - //this->pydat2().pmas(24,2)=2.141; W-width is calculated dynamically - this->pydat2().pmas(23,1)=91.1876; // PDG2007 Z0 mass - //this->pydat2().pmas(23,2)=2.4952; // PDG2007 Z0 width - //________________________________________________________________________________________________________________________ - //printout details ... + - ATH_MSG_INFO( "mstp(128) = "<< this->pypars().mstp(128) << "\n" - << "mstu(21) = "<< this->pydat1().mstu(21) << "\n" - << "mstp(81) = "<< this->pypars().mstp(81) << "\n" - //physics-related - << "mstp(82) = "<< this->pypars().mstp(82) << "\n" - << "mstp(52) = "<< this->pypars().mstp(52) << "\n" - << "mstp(54) = "<< this->pypars().mstp(54) << "\n" - << "mstp(56) = "<< this->pypars().mstp(56) << "\n" - << "mstp(51) = "<< this->pypars().mstp(51) << "\n" - << "mstp(53) = "<< this->pypars().mstp(53) << "\n" - << "mstp(55) = "<< this->pypars().mstp(55) << "\n" - << "pmas(6,1) = "<< this->pydat2().pmas(6,1) << "\n" - << "pmas(24,1)= "<< this->pydat2().pmas(24,1) << "\n" - //<< "pmas(24,2)= "<< this->pydat2().pmas(24,2) << "\n" - << "pmas(23,1)= "<< this->pydat2().pmas(23,1) << "\n" ); - //<< "pmas(23,2)= "<< this->pydat2().pmas(23,2) << "\n" - //________________________________________________________________________________________________________________________ - } - } - else if (m_Tune_Index==20090001) - { - // ATLAS jargon : MC09 - // author : Markus Warsinsky - // Pythia : 6.4.20 - // date: May 2009 - // short description: MC09 production round tune for LO* PDFs - //________________________________________________________________________________________________________________________ - this->pypars().mstp(128) =1; // fix junk output for documentary particles - this->pydat1().mstu(21) =1; // error handling switch - //physics - related - this->pypars().mstp(81)=21; // run PYEVNW with PYEVNT - this->pypars().mstp(82)=4; // MI structure - this->pypars().mstp(52)=2; // (needed for MRST2007lomod (LO* for MC)) - this->pypars().mstp(54)=2; // (needed for MRST2007lomod (LO* for MC)) - this->pypars().mstp(56)=2; // (needed for MRST2007lomod (LO* for MC)) - this->pypars().mstp(51)=20650; // (needed for MRST2007lomod (LO* for MC)) - this->pypars().mstp(53)=20650; // (needed for MRST2007lomod (LO* for MC)) - this->pypars().mstp(55)=20650; // (needed for MRST2007lomod (LO* for MC)) - this->pydat2().pmas(6,1)=172.5; // PDG2007 TOP mass - this->pydat2().pmas(24,1)=80.399; // PDG2007 W mass - //this->pydat2().pmas(24,2)=2.141; W-width is calculated dynamically - this->pydat2().pmas(23,1)=91.1876; // PDG2007 Z0 mass - //this->pydat2().pmas(23,2)=2.4952; // Z-width is calculated dynamically - this->pypars().mstp(70)=0; // (virtuality scale for ISR) - this->pypars().mstp(72)=1; - this->pypars().mstp(88)=1; - this->pypars().mstp(90)=0; - this->pypars().parp(78)=0.3; - this->pypars().parp(80)=0.1; - this->pypars().parp(82)=2.3; // (cut off scale) - this->pypars().parp(83)=0.8; - this->pypars().parp(84)=0.7; // (matter distribution) - this->pypars().parp(90)=0.25; // (cut off scale) - this->pydat1().parj(81)=0.29; - this->pypars().mstp(95)=6; - this->pydat1().mstj(11)=4; // select Lund-Bowler for c && b fragmentation - this->pydat1().mstj(22)=2; // (Make K_S, Lambda stable) - this->pydat1().parj(41)=0.3; // Lund-Bowler a - this->pydat1().parj(42)=0.58; // Lund-Bowler b - this->pydat1().parj(46)=0.75; // Lund-Bowler rQ - this->pypars().mstp(84)=1; - this->pypars().mstp(85)=1; - this->pypars().mstp(86)=2; - this->pypars().mstp(87)=4; - this->pypars().mstp(89)=1; - this->pypars().parp(89)=1800.; - //________________________________________________________________________________________________________________________ - ATH_MSG_INFO( "--------------------------------------------------------------------------------\n" - << "atlasTune: parameter setting to Tune_Index "<<m_Tune_Index<<" tune values : \n" - << "mstp(128) = "<< this->pypars().mstp(128) << "\n" - << "mstu(21) = "<< this->pydat1().mstu(21) << "\n" - << "mstp(81) = "<< this->pypars().mstp(81) << "\n" - << "mstp(82) = "<< this->pypars().mstp(82) << "\n" - << "mstp(52) = "<< this->pypars().mstp(52) << "\n" - << "mstp(54) = "<< this->pypars().mstp(54) << "\n" - << "mstp(56) = "<< this->pypars().mstp(56) << "\n" - << "mstp(51) = "<< this->pypars().mstp(51) << "\n" - << "mstp(53) = "<< this->pypars().mstp(53) << "\n" - << "mstp(55) = "<< this->pypars().mstp(55) << "\n" - << "pmas(6,1) = "<< this->pydat2().pmas(6,1) << "\n" - << "pmas(24,1) = "<< this->pydat2().pmas(24,1) << "\n" - //<< "pmas(24,2) = "<< this->pydat2().pmas(24,2) << "\n" - << "pmas(23,1) = "<< this->pydat2().pmas(23,1) << "\n" - //<< "pmas(23,2) = "<< this->pydat2().pmas(23,2) << "\n" - << "mstp(70) = "<< this->pypars().mstp(70) << "\n" - << "mstp(72) = "<< this->pypars().mstp(72) << "\n" - << "mstp(88) = "<< this->pypars().mstp(88) << "\n" - << "mstp(90) = "<< this->pypars().mstp(90) << "\n" - << "parp(78) = "<< this->pypars().parp(78) << "\n" - << "parp(80) = "<< this->pypars().parp(80) << "\n" - << "parp(82) = "<< this->pypars().parp(82) << "\n" - << "parp(83) = "<< this->pypars().parp(83) << "\n" - << "parp(84) = "<< this->pypars().parp(84) << "\n" - << "parp(90) = "<< this->pypars().parp(90) << "\n" - << "parj(81) = "<< this->pydat1().parj(81) << "\n" - << "mstp(95) = "<< this->pypars().mstp(95) << "\n" - << "mstj(11) = "<< this->pydat1().mstj(11) << "\n" - << "mstj(22) = "<< this->pydat1().mstj(22) << "\n" - << "parj(41) = "<< this->pydat1().parj(41) << "\n" - << "parj(42) = "<< this->pydat1().parj(42) << "\n" - << "parj(46) = "<< this->pydat1().parj(46) << "\n" - << "mstp(84) = "<< this->pypars().mstp(84) << "\n" - << "mstp(85) = "<< this->pypars().mstp(85) << "\n" - << "mstp(86) = "<< this->pypars().mstp(86) << "\n" - << "mstp(87) = "<< this->pypars().mstp(87) << "\n" - << "mstp(89) = "<< this->pypars().mstp(89) << "\n" - << "parp(89) = "<< this->pypars().parp(89) << "\n" - << "----------------------------------------------- \n" - << "atlasTune: end of the list of Tune_Index "<<m_Tune_Index<<" tune values : \n" - << "--------------------------------------------------------------------------------\n" ); - //________________________________________________________________________________________________________________________ - }// end of if (m_Tune_Index==20090001) condition - else if (m_Tune_Index==20080001) - { - // ATLAS jargon : MC08 - // author : Arthur Moraes - // Pythia : ~ 6.4.18 - // date: ~ 2008 - // short description: MC08 production round tune - //________________________________________________________________________________________________________________________ - this->pypars().mstp(128) =1; // fix junk output for documentary particles - this->pydat1().mstu(21) =1; // error handling switch - //physics - related - this->pypars().mstp(81)=21; // run PYEVNW with PYEVNT - this->pypars().mstp(82)=4; // MI structure - this->pypars().mstp(52)=2; // (needed for CTEQ6L) - this->pypars().mstp(54)=2; // (needed for CTEQ6L) - this->pypars().mstp(56)=2; // (needed for CTEQ6L) - this->pypars().mstp(51)=10042; // (needed for CTEQ6L) - this->pypars().mstp(53)=10042; // (needed for CTEQ6L) - this->pypars().mstp(55)=10042; // (needed for CTEQ6L) - this->pydat2().pmas(6,1)=172.5; // PDG2007 TOP mass - this->pydat2().pmas(24,1)=80.399; // PDG2007 W mass - //this->pydat2().pmas(24,2)=2.141; W-width is calculated dynamically - this->pydat2().pmas(23,1)=91.1876; // PDG2007 Z0 mass - //this->pydat2().pmas(23,2)=2.4952; // Z-width is calculated dynamically - this->pypars().mstp(70)=0; // (virtuality scale for ISR) - this->pypars().mstp(72)=1; - this->pypars().mstp(88)=1; - this->pypars().mstp(90)=0; - this->pypars().parp(78)=0.3; - this->pypars().parp(80)=0.1; - this->pypars().parp(82)=2.1; // (cut off scale) - this->pypars().parp(83)=0.8; - this->pypars().parp(84)=0.7; // (matter distribution) - this->pypars().parp(90)=0.16; // (cut off scale) - this->pydat1().parj(81)=0.29; - this->pypars().mstp(95)=1; - this->pydat1().mstj(11)=3; // (select peterson for charm fragmentation) - this->pydat1().mstj(22)=2; // (Make K_S, Lambda stable) - this->pydat1().parj(54)=-0.07; // (c hadronization) - this->pydat1().parj(55)=-0.006; // (b hadronization) - this->pypars().mstp(84)=1; - this->pypars().mstp(85)=1; - this->pypars().mstp(86)=2; - this->pypars().mstp(87)=4; - this->pypars().mstp(89)=1; - this->pypars().parp(89)=1800.; - //________________________________________________________________________________________________________________________ - ATH_MSG_INFO( "--------------------------------------------------------------------------------\n" - << "atlasTune: parameter setting to Tune_Index "<<m_Tune_Index<<" tune values : \n" - << "mstp(128) = "<< this->pypars().mstp(128) << "\n" - << "mstu(21) = "<< this->pydat1().mstu(21) << "\n" - << "mstp(81) = "<< this->pypars().mstp(81) << "\n" - << "mstp(82) = "<< this->pypars().mstp(82) << "\n" - << "mstp(52) = "<< this->pypars().mstp(52) << "\n" - << "mstp(54) = "<< this->pypars().mstp(54) << "\n" - << "mstp(56) = "<< this->pypars().mstp(56) << "\n" - << "mstp(51) = "<< this->pypars().mstp(51) << "\n" - << "mstp(53) = "<< this->pypars().mstp(53) << "\n" - << "mstp(55) = "<< this->pypars().mstp(55) << "\n" - << "pmas(6,1) = "<< this->pydat2().pmas(6,1) << "\n" - << "pmas(24,1) = "<< this->pydat2().pmas(24,1)<< "\n" - //<< "pmas(24,2) = "<< this->pydat2().pmas(24,2) << "\n" - << "pmas(23,1) = "<< this->pydat2().pmas(23,1)<< "\n" - //<< "pmas(23,2) = "<< this->pydat2().pmas(23,2)<< "\n" - << "mstp(70) = "<< this->pypars().mstp(70) << "\n" - << "mstp(72) = "<< this->pypars().mstp(72) << "\n" - << "mstp(88) = "<< this->pypars().mstp(88) << "\n" - << "mstp(90) = "<< this->pypars().mstp(90) << "\n" - << "parp(78) = "<< this->pypars().parp(78) << "\n" - << "parp(80) = "<< this->pypars().parp(80) << "\n" - << "parp(82) = "<< this->pypars().parp(82) << "\n" - << "parp(83) = "<< this->pypars().parp(83) << "\n" - << "parp(84) = "<< this->pypars().parp(84) << "\n" - << "parp(90) = "<< this->pypars().parp(90)<< "\n" - << "parj(81) = "<< this->pydat1().parj(81)<< "\n" - << "mstp(95) = "<< this->pypars().mstp(95) << "\n" - << "mstj(11) = "<< this->pydat1().mstj(11) << "\n" - << "mstj(22) = "<< this->pydat1().mstj(22) << "\n" - << "parj(54) = "<< this->pydat1().parj(54) << "\n" - << "parj(55) = "<< this->pydat1().parj(55) << "\n" - << "mstp(84) = "<< this->pypars().mstp(84) << "\n" - << "mstp(85) = "<< this->pypars().mstp(85) << "\n" - << "mstp(86) = "<< this->pypars().mstp(86) << "\n" - << "mstp(87) = "<< this->pypars().mstp(87) << "\n" - << "mstp(89) = "<< this->pypars().mstp(89) << "\n" - << "parp(89) = "<< this->pypars().parp(89)<< "\n" - << "----------------------------------------------- \n" - << "atlasTune: end of the list of Tune_Index "<<m_Tune_Index<<" tune values : \n" - << "--------------------------------------------------------------------------------\n" ); - //________________________________________________________________________________________________________________________ - } // end of if (m_Tune_Index==20080001) condition - else if (m_Tune_Index==20090002) - { - // ATLAS jargon : MC09' - // author : Markus Warsinsky - // Pythia : 6.4.20 - // date: Jun. 2009 - // short description: MC08 tune update for the MC09 production - //________________________________________________________________________________________________________________________ - this->pypars().mstp(128) =1; // fix junk output for documentary particles - this->pydat1().mstu(21) =1; // error handling switch - //physics - related - this->pypars().mstp(81)=21; // run PYEVNW with PYEVNT - this->pypars().mstp(82)=4; // MI structure - this->pypars().mstp(52)=2; // (needed for ext. PDF) - this->pypars().mstp(54)=2; // (needed for ext. PDF) - this->pypars().mstp(56)=2; // (needed for ext. PDF) - this->pypars().mstp(51)=10042; // (needed for CTEQ6L) this is changed for MC08'' (20090002) wrt MC09 20090001 - this->pypars().mstp(53)=10042; // (needed for CTEQ6L) this is changed for MC08'' (20090002) wrt MC09 20090001 - this->pypars().mstp(55)=10042; // (needed for CTEQ6L) this is changed for MC08'' (20090002) wrt MC09 20090001 - this->pydat2().pmas(6,1)=172.5; // PDG2007 TOP mass - this->pydat2().pmas(24,1)=80.399; // PDG2007 W mass - //this->pydat2().pmas(24,2)=2.141; W-width is calculated dynamically - this->pydat2().pmas(23,1)=91.1876; // PDG2007 Z0 mass - //this->pydat2().pmas(23,2)=2.4952; // Z-width is calculated dynamically - this->pypars().mstp(70)=0; // (virtuality scale for ISR) - this->pypars().mstp(72)=1; - this->pypars().mstp(88)=1; - this->pypars().mstp(90)=0; - this->pypars().parp(78)=0.3; - this->pypars().parp(80)=0.1; - this->pypars().parp(82)=2.1; // this is changed for MC08'' (20090002) wrt MC09 20090001 - this->pypars().parp(83)=0.8; - this->pypars().parp(84)=0.7; // (matter distribution) - this->pypars().parp(90)=0.25; // (cut off scale) - this->pydat1().parj(81)=0.29; - this->pypars().mstp(95)=6; - this->pydat1().mstj(11)=4; // select Lund-Bowler for c && b fragmentation - this->pydat1().mstj(22)=2; // (Make K_S, Lambda stable) - this->pydat1().parj(41)=0.3; // Lund-Bowler a - this->pydat1().parj(42)=0.58; // Lund-Bowler b - this->pydat1().parj(46)=0.75; // Lund-Bowler rQ - this->pypars().mstp(84)=1; - this->pypars().mstp(85)=1; - this->pypars().mstp(86)=2; - this->pypars().mstp(87)=4; - this->pypars().mstp(89)=1; - this->pypars().parp(89)=1800.; - //________________________________________________________________________________________________________________________ - ATH_MSG_INFO( "--------------------------------------------------------------------------------\n" - << "atlasTune: parameter setting to Tune_Index "<<m_Tune_Index<<" tune values : \n" - << "mstp(128) = "<< this->pypars().mstp(128) << "\n" - << "mstu(21) = "<< this->pydat1().mstu(21) << "\n" - << "mstp(81) = "<< this->pypars().mstp(81) << "\n" - << "mstp(82) = "<< this->pypars().mstp(82) << "\n" - << "mstp(52) = "<< this->pypars().mstp(52) << "\n" - << "mstp(54) = "<< this->pypars().mstp(54) << "\n" - << "mstp(56) = "<< this->pypars().mstp(56) << "\n" - << "mstp(51) = "<< this->pypars().mstp(51) << "\n" - << "mstp(53) = "<< this->pypars().mstp(53) << "\n" - << "mstp(55) = "<< this->pypars().mstp(55) << "\n" - << "pmas(6,1) = "<< this->pydat2().pmas(6,1) << "\n" - << "pmas(24,1) = "<< this->pydat2().pmas(24,1) << "\n" - //<< "pmas(24,2) = "<< this->pydat2().pmas(24,2) << "\n" - << "pmas(23,1) = "<< this->pydat2().pmas(23,1) << "\n" - //<< "pmas(23,2) = "<< this->pydat2().pmas(23,2) << "\n" - << "mstp(70) = "<< this->pypars().mstp(70) << "\n" - << "mstp(72) = "<< this->pypars().mstp(72) << "\n" - << "mstp(88) = "<< this->pypars().mstp(88) << "\n" - << "mstp(90) = "<< this->pypars().mstp(90) << "\n" - << "parp(78) = "<< this->pypars().parp(78) << "\n" - << "parp(80) = "<< this->pypars().parp(80) << "\n" - << "parp(82) = "<< this->pypars().parp(82) << "\n" - << "parp(83) = "<< this->pypars().parp(83) << "\n" - << "parp(84) = "<< this->pypars().parp(84) << "\n" - << "parp(90) = "<< this->pypars().parp(90) << "\n" - << "parj(81) = "<< this->pydat1().parj(81) << "\n" - << "mstp(95) = "<< this->pypars().mstp(95) << "\n" - << "mstj(11) = "<< this->pydat1().mstj(11) << "\n" - << "mstj(22) = "<< this->pydat1().mstj(22) << "\n" - << "parj(41) = "<< this->pydat1().parj(41) << "\n" - << "parj(42) = "<< this->pydat1().parj(42) << "\n" - << "parj(46) = "<< this->pydat1().parj(46) << "\n" - << "mstp(84) = "<< this->pypars().mstp(84) << "\n" - << "mstp(85) = "<< this->pypars().mstp(85) << "\n" - << "mstp(86) = "<< this->pypars().mstp(86) << "\n" - << "mstp(87) = "<< this->pypars().mstp(87) << "\n" - << "mstp(89) = "<< this->pypars().mstp(89) << "\n" - << "parp(89) = "<< this->pypars().parp(89) << "\n" - << "----------------------------------------------- \n" - << "atlasTune: end of the list of Tune_Index "<<m_Tune_Index<<" tune values : \n" - << "--------------------------------------------------------------------------------\n" ); - //________________________________________________________________________________________________________________________ - } - else if (m_Tune_Index==20090003) - { - // ATLAS jargon : MC09c - // references : ATL-COM-PHYS-2010-040, ATL-PHYS-PUB-2010-002 - // author : Markus Warsinsky et. al - // Pythia : 6.4.21 - // impl. date : June 2010 - // tune produced in : 2009 - // short description: simmilar to MC09, but with lowered CR - // changes wrt. MC09: - // MC09c has: parp(78)=0.224, parp(82)=2.315, parp(90)=0.2487 - // MC09 has: parp(78)=0.3, parp(82)=2.3, parp(90)=0.25 - //________________________________________________________________________________________________________________________ - this->pypars().mstp(128) =1; // fix junk output for documentary particles - this->pydat1().mstu(21) =1; // error handling switch - //physics - related - this->pypars().mstp(81)=21; // run PYEVNW with PYEVNT - this->pypars().mstp(82)=4; // MI structure - this->pypars().mstp(52)=2; // (needed for MRST2007lomod (LO* for MC)) - this->pypars().mstp(54)=2; // (needed for MRST2007lomod (LO* for MC)) - this->pypars().mstp(56)=2; // (needed for MRST2007lomod (LO* for MC)) - this->pypars().mstp(51)=20650; // (needed for MRST2007lomod (LO* for MC)) - this->pypars().mstp(53)=20650; // (needed for MRST2007lomod (LO* for MC)) - this->pypars().mstp(55)=20650; // (needed for MRST2007lomod (LO* for MC)) - this->pydat2().pmas(6,1)=172.5; // PDG2007 TOP mass - this->pydat2().pmas(24,1)=80.399; // PDG2007 W mass - this->pydat2().pmas(23,1)=91.1876; // PDG2007 Z0 mass - this->pypars().mstp(70)=0; // (virtuality scale for ISR) - this->pypars().mstp(72)=1; - this->pypars().mstp(88)=1; - this->pypars().mstp(90)=0; - this->pypars().parp(78)=0.224; - this->pypars().parp(80)=0.1; - this->pypars().parp(82)=2.315; // (cut off scale) - this->pypars().parp(83)=0.8; - this->pypars().parp(84)=0.7; // (matter distribution) - this->pypars().parp(90)=0.2487; // (cut off scale) - this->pydat1().parj(81)=0.29; - this->pypars().mstp(95)=6; - this->pydat1().mstj(11)=4; // select Lund-Bowler for c && b fragmentation - this->pydat1().mstj(22)=2; // (Make K_S, Lambda stable) - this->pydat1().parj(41)=0.3; // Lund-Bowler a - this->pydat1().parj(42)=0.58; // Lund-Bowler b - this->pydat1().parj(46)=0.75; // Lund-Bowler rQ - this->pypars().mstp(84)=1; - this->pypars().mstp(85)=1; - this->pypars().mstp(86)=2; - this->pypars().mstp(87)=4; - this->pypars().mstp(89)=1; - this->pypars().parp(89)=1800.; - //________________________________________________________________________________________________________________________ - ATH_MSG_INFO( "--------------------------------------------------------------------------------\n" - << "atlasTune: parameter setting to Tune_Index "<<m_Tune_Index<<" tune values : \n" - << "mstp(128) = "<< this->pypars().mstp(128) << "\n" - << "mstu(21) = "<< this->pydat1().mstu(21) << "\n" - << "mstp(81) = "<< this->pypars().mstp(81) << "\n" - << "mstp(82) = "<< this->pypars().mstp(82) << "\n" - << "mstp(52) = "<< this->pypars().mstp(52) << "\n" - << "mstp(54) = "<< this->pypars().mstp(54) << "\n" - << "mstp(56) = "<< this->pypars().mstp(56) << "\n" - << "mstp(51) = "<< this->pypars().mstp(51) << "\n" - << "mstp(53) = "<< this->pypars().mstp(53) << "\n" - << "mstp(55) = "<< this->pypars().mstp(55) << "\n" - << "pmas(6,1) = "<< this->pydat2().pmas(6,1) << "\n" - << "pmas(24,1) = "<< this->pydat2().pmas(24,1) << "\n" - << "pmas(23,1) = "<< this->pydat2().pmas(23,1) << "\n" - << "mstp(70) = "<< this->pypars().mstp(70) << "\n" - << "mstp(72) = "<< this->pypars().mstp(72) << "\n" - << "mstp(88) = "<< this->pypars().mstp(88) << "\n" - << "mstp(90) = "<< this->pypars().mstp(90) << "\n" - << "parp(78) = "<< this->pypars().parp(78) << "\n" - << "parp(80) = "<< this->pypars().parp(80) << "\n" - << "parp(82) = "<< this->pypars().parp(82) << "\n" - << "parp(83) = "<< this->pypars().parp(83) << "\n" - << "parp(84) = "<< this->pypars().parp(84) << "\n" - << "parp(90) = "<< this->pypars().parp(90) << "\n" - << "parj(81) = "<< this->pydat1().parj(81) << "\n" - << "mstp(95) = "<< this->pypars().mstp(95) << "\n" - << "mstj(11) = "<< this->pydat1().mstj(11) << "\n" - << "mstj(22) = "<< this->pydat1().mstj(22) << "\n" - << "parj(41) = "<< this->pydat1().parj(41) << "\n" - << "parj(42) = "<< this->pydat1().parj(42) << "\n" - << "parj(46) = "<< this->pydat1().parj(46) << "\n" - << "mstp(84) = "<< this->pypars().mstp(84) << "\n" - << "mstp(85) = "<< this->pypars().mstp(85) << "\n" - << "mstp(86) = "<< this->pypars().mstp(86) << "\n" - << "mstp(87) = "<< this->pypars().mstp(87) << "\n" - << "mstp(89) = "<< this->pypars().mstp(89) << "\n" - << "parp(89) = "<< this->pypars().parp(89) << "\n" - << "----------------------------------------------- \n" - << "atlasTune: end of the list of Tune_Index "<<m_Tune_Index<<" tune values : \n" - << "--------------------------------------------------------------------------------\n" ); - //________________________________________________________________________________________________________________________ - }// end of if (m_Tune_Index==20090003) condition - else if (m_Tune_Index==20100001) - { - // ATLAS jargon : AMBT1 - // references : ATLAS-CONF-2010-031, ATL-COM-PHYS-2010-267, ATL-COM-PHYS-2010-268 - // author : Markus Warsinsky et. al - // Pythia : 6.4.21 - // impl. date : June 2010 - // tune produced in : 2010 - // short description: the first tune including the ATLAS (MinBias, UE, 0.9TeV and 7TeV) data - //________________________________________________________________________________________________________________________ - this->pypars().mstp(128) =1; // fix junk output for documentary particles - this->pydat1().mstu(21) =1; // error handling switch - //physics - related - this->pypars().mstp(81)=21; // run PYEVNW with PYEVNT - this->pypars().mstp(82)=4; // MI structure - this->pypars().mstp(52)=2; // (needed for MRST2007lomod (LO* for MC)) - this->pypars().mstp(54)=2; // (needed for MRST2007lomod (LO* for MC)) - this->pypars().mstp(56)=2; // (needed for MRST2007lomod (LO* for MC)) - this->pypars().mstp(51)=20650; // (needed for MRST2007lomod (LO* for MC)) - this->pypars().mstp(53)=20650; // (needed for MRST2007lomod (LO* for MC)) - this->pypars().mstp(55)=20650; // (needed for MRST2007lomod (LO* for MC)) - this->pydat2().pmas(6,1)=172.5; // PDG2007 TOP mass - this->pydat2().pmas(24,1)=80.399; // PDG2007 W mass - this->pydat2().pmas(23,1)=91.1876; // PDG2007 Z0 mass - this->pypars().parp(62)=1.025; - this->pypars().mstp(70)=0; // (virtuality scale for ISR) - this->pypars().mstp(72)=1; - this->pypars().mstp(88)=1; - this->pypars().mstp(90)=0; - this->pypars().parp(77)=1.016; - this->pypars().parp(78)=0.538; - this->pypars().parp(80)=0.1; - this->pypars().parp(82)=2.292; // (cut off scale) - this->pypars().parp(83)=0.356; - this->pypars().parp(84)=0.651; // (matter distribution) - this->pypars().parp(90)=0.250; // (cut off scale) - this->pypars().parp(93)=10.0; - this->pydat1().parj(81)=0.29; - this->pypars().mstp(95)=6; - this->pydat1().mstj(11)=4; // select Lund-Bowler for c && b fragmentation - this->pydat1().mstj(22)=2; // (Make K_S, Lambda stable) - this->pydat1().parj(41)=0.3; // Lund-Bowler a - this->pydat1().parj(42)=0.58; // Lund-Bowler b - this->pydat1().parj(46)=0.75; // Lund-Bowler rQ - this->pypars().mstp(84)=1; - this->pypars().mstp(85)=1; - this->pypars().mstp(86)=2; - this->pypars().mstp(87)=4; - this->pypars().mstp(89)=1; - this->pypars().parp(89)=1800.; - //________________________________________________________________________________________________________________________ - ATH_MSG_INFO( "--------------------------------------------------------------------------------\n" - << "atlasTune: parameter setting to Tune_Index "<<m_Tune_Index<<" tune values : \n" - << "mstp(128) = "<< this->pypars().mstp(128) << "\n" - << "mstu(21) = "<< this->pydat1().mstu(21) << "\n" - << "mstp(81) = "<< this->pypars().mstp(81) << "\n" - << "mstp(82) = "<< this->pypars().mstp(82) << "\n" - << "mstp(52) = "<< this->pypars().mstp(52) << "\n" - << "mstp(54) = "<< this->pypars().mstp(54) << "\n" - << "mstp(56) = "<< this->pypars().mstp(56) << "\n" - << "mstp(51) = "<< this->pypars().mstp(51) << "\n" - << "mstp(53) = "<< this->pypars().mstp(53) << "\n" - << "mstp(55) = "<< this->pypars().mstp(55) << "\n" - << "pmas(6,1) = "<< this->pydat2().pmas(6,1) << "\n" - << "pmas(24,1) = "<< this->pydat2().pmas(24,1) << "\n" - << "pmas(23,1) = "<< this->pydat2().pmas(23,1) << "\n" - << "parp(62) = "<< this->pypars().parp(62) << "\n" - << "mstp(70) = "<< this->pypars().mstp(70) << "\n" - << "mstp(72) = "<< this->pypars().mstp(72) << "\n" - << "mstp(88) = "<< this->pypars().mstp(88) << "\n" - << "mstp(90) = "<< this->pypars().mstp(90) << "\n" - << "parp(77) = "<< this->pypars().parp(77) << "\n" - << "parp(78) = "<< this->pypars().parp(78) << "\n" - << "parp(80) = "<< this->pypars().parp(80) << "\n" - << "parp(82) = "<< this->pypars().parp(82) << "\n" - << "parp(83) = "<< this->pypars().parp(83) << "\n" - << "parp(84) = "<< this->pypars().parp(84) << "\n" - << "parp(90) = "<< this->pypars().parp(90) << "\n" - << "parp(93) = "<< this->pypars().parp(93) << "\n" - << "parj(81) = "<< this->pydat1().parj(81) << "\n" - << "mstp(95) = "<< this->pypars().mstp(95) << "\n" - << "mstj(11) = "<< this->pydat1().mstj(11) << "\n" - << "mstj(22) = "<< this->pydat1().mstj(22) << "\n" - << "parj(41) = "<< this->pydat1().parj(41) << "\n" - << "parj(42) = "<< this->pydat1().parj(42) << "\n" - << "parj(46) = "<< this->pydat1().parj(46) << "\n" - << "mstp(84) = "<< this->pypars().mstp(84) << "\n" - << "mstp(85) = "<< this->pypars().mstp(85) << "\n" - << "mstp(86) = "<< this->pypars().mstp(86) << "\n" - << "mstp(87) = "<< this->pypars().mstp(87) << "\n" - << "mstp(89) = "<< this->pypars().mstp(89) << "\n" - << "parp(89) = "<< this->pypars().parp(89) << "\n" - << "----------------------------------------------- \n" - << "atlasTune: end of the list of Tune_Index "<<m_Tune_Index<<" tune values : \n" - << "--------------------------------------------------------------------------------\n" ); - //________________________________________________________________________________________________________________________ - }// end of if (m_Tune_Index==20100001) condition - else if (m_Tune_Index==20110001) - { - // ATLAS jargon : AUET2 - // references : todo : add - // author : A. Buckley, J. Katzy (et. al) - // Pythia : 6.4.23 - // impl. date : Mar 2011 - // tune produced in : 2011 - // short description: LO** tune incl. ISR/FSR parameters, optimized for UE - //________________________________________________________________________________________________________________________ - this->pypars().mstp(128)=1; - this->pydat1().mstu(21)=1; - this->pypars().mstp(81)=21; - this->pypars().mstp(82)=4; - this->pypars().mstp(88)=1; - this->pypars().mstp(90)=0; - this->pypars().parp(80)=0.1; - this->pypars().parp(83)=0.356; - this->pypars().parp(93)=10.0; - this->pypars().mstp(95)=6; - this->pydat1().mstj(22)=2; - this->pydat1().parj(46)=0.75; - this->pypars().mstp(84)=1; - this->pypars().mstp(85)=1; - this->pypars().mstp(86)=2; - this->pypars().mstp(87)=4; - this->pypars().mstp(89)=1; - this->pypars().parp(89)=1800.; - this->pydat2().pmas(6,1)=172.5; - this->pydat2().pmas(24,1)=80.399; - this->pydat2().pmas(23,1)=91.1876; - this->pypars().mstp(51)=20651; - this->pypars().mstp(53)=20651; - this->pypars().mstp(55)=20651; - this->pypars().mstp(52)=2; - this->pypars().mstp(54)=2; - this->pypars().mstp(56)=2; - this->pydat1().mstj(11)=5; - this->pydat1().parj(1)=7.272809e-02; - this->pydat1().parj(2)=2.018845e-01; - this->pydat1().parj(3)=9.498471e-01; - this->pydat1().parj(4)=3.316182e-02; - this->pydat1().parj(11)=3.089764e-01; - this->pydat1().parj(12)=4.015396e-01; - this->pydat1().parj(13)=5.442874e-01; - this->pydat1().parj(25)=6.276964e-01; - this->pydat1().parj(26)=1.292377e-01; - this->pydat1().parj(21)=3.001463e-01; - this->pydat1().parj(41)=3.683123e-01; - this->pydat1().parj(42)=1.003531e+00; - this->pydat1().parj(47)=8.727703e-01; - this->pydat1().parj(81)=2.564716e-01; - this->pydat1().parj(82)=8.296215e-01; - this->pypars().mstp(3)=1; - this->pydat1().paru(112)=0.265; - this->pypars().parp(1)=0.265; - this->pypars().parp(61)=0.265; - this->pydat1().mstu(112)=4; - this->pypars().mstp(70)=0; - this->pypars().mstp(64)=3; - this->pypars().mstp(72)=2; - this->pypars().parp(62)=2.803673e+00; - this->pypars().parp(64)=2.213751e+00; - this->pypars().parp(67)=6.635356e-01; - this->pypars().parp(72)=2.496789e-01; - this->pypars().parp(91)=1.918441e+00; - this->pypars().parp(77)=1.127437e+00; - this->pypars().parp(78)=3.320624e-01; - this->pypars().parp(82)=2.451288e+00; - this->pypars().parp(84)=5.296569e-01; - this->pypars().parp(90)=2.290732e-01; - ATH_MSG_INFO( "---------------------------------------------------------------------------------\n" - << "atlasTune: parameter setting to Tune_Index "<<m_Tune_Index<<" tune values : \n" - << "----------------------------------------------- \n" - << "mstp(128)=" << this->pypars().mstp(128) << "\n" - << "mstu(21)=" << this->pydat1().mstu(21) << "\n" - << "mstp(81)=" << this->pypars().mstp(81) << "\n" - << "mstp(82)=" << this->pypars().mstp(82) << "\n" - << "mstp(88)=" << this->pypars().mstp(88) << "\n" - << "mstp(90)=" << this->pypars().mstp(90) << "\n" - << "parp(80)=" << this->pypars().parp(80) << "\n" - << "parp(83)=" << this->pypars().parp(83) << "\n" - << "parp(93)=" << this->pypars().parp(93) << "\n" - << "mstp(95)=" << this->pypars().mstp(95) << "\n" - << "mstj(22)=" << this->pydat1().mstj(22) << "\n" - << "parj(46)=" << this->pydat1().parj(46) << "\n" - << "mstp(84)=" << this->pypars().mstp(84) << "\n" - << "mstp(85)=" << this->pypars().mstp(85) << "\n" - << "mstp(86)=" << this->pypars().mstp(86) << "\n" - << "mstp(87)=" << this->pypars().mstp(87) << "\n" - << "mstp(89)=" << this->pypars().mstp(89) << "\n" - << "parp(89)=" << this->pypars().parp(89) << "\n" - << "pmas(6,1)=" << this->pydat2().pmas(6,1) << "\n" - << "pmas(24,1)=" << this->pydat2().pmas(24,1) << "\n" - << "pmas(23,1)=" << this->pydat2().pmas(23,1) << "\n" - << "mstp(51)=" << this->pypars().mstp(51) << "\n" - << "mstp(53)=" << this->pypars().mstp(53) << "\n" - << "mstp(55)=" << this->pypars().mstp(55) << "\n" - << "mstp(52)=" << this->pypars().mstp(52) << "\n" - << "mstp(54)=" << this->pypars().mstp(54) << "\n" - << "mstp(56)=" << this->pypars().mstp(56) << "\n" - << "mstj(11)=" << this->pydat1().mstj(11) << "\n" - << "parj(1)=" << this->pydat1().parj(1) << "\n" - << "parj(2)=" << this->pydat1().parj(2) << "\n" - << "parj(3)=" << this->pydat1().parj(3) << "\n" - << "parj(4)=" << this->pydat1().parj(4) << "\n" - << "parj(11)=" << this->pydat1().parj(11) << "\n" - << "parj(12)=" << this->pydat1().parj(12) << "\n" - << "parj(13)=" << this->pydat1().parj(13) << "\n" - << "parj(25)=" << this->pydat1().parj(25) << "\n" - << "parj(26)=" << this->pydat1().parj(26) << "\n" - << "parj(21)=" << this->pydat1().parj(21) << "\n" - << "parj(41)=" << this->pydat1().parj(41) << "\n" - << "parj(42)=" << this->pydat1().parj(42) << "\n" - << "parj(47)=" << this->pydat1().parj(47) << "\n" - << "parj(81)=" << this->pydat1().parj(81) << "\n" - << "parj(82)=" << this->pydat1().parj(82) << "\n" - << "mstp(3)=" << this->pypars().mstp(3) << "\n" - << "paru(112)=" << this->pydat1().paru(112) << "\n" - << "parp(1)=" << this->pypars().parp(1) << "\n" - << "parp(61)=" << this->pypars().parp(61) << "\n" - << "mstu(112)=" << this->pydat1().mstu(112) << "\n" - << "mstp(70)=" << this->pypars().mstp(70) << "\n" - << "mstp(64)=" << this->pypars().mstp(64) << "\n" - << "mstp(72)=" << this->pypars().mstp(72) << "\n" - << "parp(62)=" << this->pypars().parp(62) << "\n" - << "parp(64)=" << this->pypars().parp(64) << "\n" - << "parp(67)=" << this->pypars().parp(67) << "\n" - << "parp(72)=" << this->pypars().parp(72) << "\n" - << "parp(91)=" << this->pypars().parp(91) << "\n" - << "parp(77)=" << this->pypars().parp(77) << "\n" - << "parp(78)=" << this->pypars().parp(78) << "\n" - << "parp(82)=" << this->pypars().parp(82) << "\n" - << "parp(84)=" << this->pypars().parp(84) << "\n" - << "parp(90)=" << this->pypars().parp(90) << "\n" - << "----------------------------------------------- \n" - << "atlasTune: end of the list of Tune_Index "<<m_Tune_Index<<" tune values : \n" - << "--------------------------------------------------------------------------------\n" ); - } // end of 20110001 (AUET2) condition - else if (m_Tune_Index==20110101) - { - // ATLAS jargon : AMBT2 - // references : todo : add - // author : A. Buckley, J. Katzy (et. al) - // Pythia : 6.4.23 - // impl. date : Mar 2011 - // tune produced in : 2011 - // short description: LO** tune incl. ISR/FSR parameters, optimized for MinBias - //________________________________________________________________________________________________________________________ - this->pypars().mstp(128)=1; - this->pydat1().mstu(21)=1; - this->pypars().mstp(81)=21; - this->pypars().mstp(82)=4; - this->pypars().mstp(88)=1; - this->pypars().mstp(90)=0; - this->pypars().parp(80)=0.1; - this->pypars().parp(83)=0.356; - this->pypars().parp(93)=10.0; - this->pypars().mstp(95)=6; - this->pydat1().mstj(22)=2; - this->pydat1().parj(46)=0.75; - this->pypars().mstp(84)=1; - this->pypars().mstp(85)=1; - this->pypars().mstp(86)=2; - this->pypars().mstp(87)=4; - this->pypars().mstp(89)=1; - this->pypars().parp(89)=1800.; - this->pydat2().pmas(6,1)=172.5; - this->pydat2().pmas(24,1)=80.399; - this->pydat2().pmas(23,1)=91.1876; - this->pypars().mstp(51)=20651; - this->pypars().mstp(53)=20651; - this->pypars().mstp(55)=20651; - this->pypars().mstp(52)=2; - this->pypars().mstp(54)=2; - this->pypars().mstp(56)=2; - this->pydat1().mstj(11)=5; - this->pydat1().parj(1)=7.272809e-02; - this->pydat1().parj(2)=2.018845e-01; - this->pydat1().parj(3)=9.498471e-01; - this->pydat1().parj(4)=3.316182e-02; - this->pydat1().parj(11)=3.089764e-01; - this->pydat1().parj(12)=4.015396e-01; - this->pydat1().parj(13)=5.442874e-01; - this->pydat1().parj(25)=6.276964e-01; - this->pydat1().parj(26)=1.292377e-01; - this->pydat1().parj(21)=3.001463e-01; - this->pydat1().parj(41)=3.683123e-01; - this->pydat1().parj(42)=1.003531e+00; - this->pydat1().parj(47)=8.727703e-01; - this->pydat1().parj(81)=2.564716e-01; - this->pydat1().parj(82)=8.296215e-01; - this->pypars().mstp(3)=1; - this->pydat1().paru(112)=0.265; - this->pypars().parp(1)=0.265; - this->pypars().parp(61)=0.265; - this->pydat1().mstu(112)=4; - this->pypars().mstp(70)=0; - this->pypars().mstp(64)=3; - this->pypars().mstp(72)=2; - this->pypars().parp(62)=2.803673e+00; - this->pypars().parp(64)=2.213751e+00; - this->pypars().parp(67)=6.635356e-01; - this->pypars().parp(72)=2.496789e-01; - this->pypars().parp(91)=1.918441e+00; - this->pypars().parp(77)=0.88; - this->pypars().parp(78)=0.18; - this->pypars().parp(82)=2.49; - this->pypars().parp(84)=0.61; - this->pypars().parp(90)=0.244; - ATH_MSG_INFO( "---------------------------------------------------------------------------------\n" - << "atlasTune: parameter setting to Tune_Index "<<m_Tune_Index<<" tune values : \n" - << "----------------------------------------------- \n" - << "mstp(128)=" << this->pypars().mstp(128) << "\n" - << "mstu(21)=" << this->pydat1().mstu(21) << "\n" - << "mstp(81)=" << this->pypars().mstp(81) << "\n" - << "mstp(82)=" << this->pypars().mstp(82) << "\n" - << "mstp(88)=" << this->pypars().mstp(88) << "\n" - << "mstp(90)=" << this->pypars().mstp(90) << "\n" - << "parp(80)=" << this->pypars().parp(80) << "\n" - << "parp(83)=" << this->pypars().parp(83) << "\n" - << "parp(93)=" << this->pypars().parp(93) << "\n" - << "mstp(95)=" << this->pypars().mstp(95) << "\n" - << "mstj(22)=" << this->pydat1().mstj(22) << "\n" - << "parj(46)=" << this->pydat1().parj(46) << "\n" - << "mstp(84)=" << this->pypars().mstp(84) << "\n" - << "mstp(85)=" << this->pypars().mstp(85) << "\n" - << "mstp(86)=" << this->pypars().mstp(86) << "\n" - << "mstp(87)=" << this->pypars().mstp(87) << "\n" - << "mstp(89)=" << this->pypars().mstp(89) << "\n" - << "parp(89)=" << this->pypars().parp(89) << "\n" - << "pmas(6,1)=" << this->pydat2().pmas(6,1) << "\n" - << "pmas(24,1)=" << this->pydat2().pmas(24,1) << "\n" - << "pmas(23,1)=" << this->pydat2().pmas(23,1) << "\n" - << "mstp(51)=" << this->pypars().mstp(51) << "\n" - << "mstp(53)=" << this->pypars().mstp(53) << "\n" - << "mstp(55)=" << this->pypars().mstp(55) << "\n" - << "mstp(52)=" << this->pypars().mstp(52) << "\n" - << "mstp(54)=" << this->pypars().mstp(54) << "\n" - << "mstp(56)=" << this->pypars().mstp(56) << "\n" - << "mstj(11)=" << this->pydat1().mstj(11) << "\n" - << "parj(1)=" << this->pydat1().parj(1) << "\n" - << "parj(2)=" << this->pydat1().parj(2) << "\n" - << "parj(3)=" << this->pydat1().parj(3) << "\n" - << "parj(4)=" << this->pydat1().parj(4) << "\n" - << "parj(11)=" << this->pydat1().parj(11) << "\n" - << "parj(12)=" << this->pydat1().parj(12) << "\n" - << "parj(13)=" << this->pydat1().parj(13) << "\n" - << "parj(25)=" << this->pydat1().parj(25) << "\n" - << "parj(26)=" << this->pydat1().parj(26) << "\n" - << "parj(21)=" << this->pydat1().parj(21) << "\n" - << "parj(41)=" << this->pydat1().parj(41) << "\n" - << "parj(42)=" << this->pydat1().parj(42) << "\n" - << "parj(47)=" << this->pydat1().parj(47) << "\n" - << "parj(81)=" << this->pydat1().parj(81) << "\n" - << "parj(82)=" << this->pydat1().parj(82) << "\n" - << "mstp(3)=" << this->pypars().mstp(3) << "\n" - << "paru(112)=" << this->pydat1().paru(112) << "\n" - << "parp(1)=" << this->pypars().parp(1) << "\n" - << "parp(61)=" << this->pypars().parp(61) << "\n" - << "mstu(112)=" << this->pydat1().mstu(112) << "\n" - << "mstp(70)=" << this->pypars().mstp(70) << "\n" - << "mstp(64)=" << this->pypars().mstp(64) << "\n" - << "mstp(72)=" << this->pypars().mstp(72) << "\n" - << "parp(62)=" << this->pypars().parp(62) << "\n" - << "parp(64)=" << this->pypars().parp(64) << "\n" - << "parp(67)=" << this->pypars().parp(67) << "\n" - << "parp(72)=" << this->pypars().parp(72) << "\n" - << "parp(91)=" << this->pypars().parp(91) << "\n" - << "parp(77)=" << this->pypars().parp(77) << "\n" - << "parp(78)=" << this->pypars().parp(78) << "\n" - << "parp(82)=" << this->pypars().parp(82) << "\n" - << "parp(84)=" << this->pypars().parp(84) << "\n" - << "parp(90)=" << this->pypars().parp(90) << "\n" - << "----------------------------------------------- \n" - << "atlasTune: end of the list of Tune_Index "<<m_Tune_Index<<" tune values : \n" - << "--------------------------------------------------------------------------------\n" ); - } // end of 20110101 (AMBT2) condition - else if (m_Tune_Index==20110002) - { - // ATLAS jargon : AMBT1FF / AUET2b - // references : todo : add - // author : A. Buckley, J. Katzy (et. al) - // Pythia : 6.4.23 - // impl. date : Apr 2011 - // tune produced in : 2011 - // short description: LO** tune incl. ISR/FSR parameters, optimized for UE - //_______________________________________________________________________________________________________________________ - this->pypars().mstp(128)=1; - this->pydat1().mstu(21)=1; - this->pypars().mstp(81)=21; - this->pypars().mstp(82)=4; - this->pypars().mstp(72)=1; - this->pypars().mstp(88)=1; - this->pypars().mstp(90)=0; - this->pypars().parp(80)=0.1; - this->pypars().parp(83)=0.356; - this->pypars().parp(93)=10.0; - this->pypars().mstp(95)=6; - this->pydat1().mstj(22)=2; - this->pydat1().parj(46)=0.75; - this->pypars().mstp(84)=1; - this->pypars().mstp(85)=1; - this->pypars().mstp(86)=2; - this->pypars().mstp(87)=4; - this->pypars().mstp(89)=1; - this->pypars().parp(89)=1800.; - this->pydat2().pmas(6,1)=172.5; - this->pydat2().pmas(24,1)=80.399; - this->pydat2().pmas(23,1)=91.1876; - this->pypars().mstp(51)=20651; - this->pypars().mstp(53)=20651; - this->pypars().mstp(55)=20651; - this->pypars().mstp(52)=2; - this->pypars().mstp(54)=2; - this->pypars().mstp(56)=2; - this->pydat1().mstj(11)=5; - this->pydat1().parj(1)=7.272809e-02; - this->pydat1().parj(2)=2.018845e-01; - this->pydat1().parj(3)=9.498471e-01; - this->pydat1().parj(4)=3.316182e-02; - this->pydat1().parj(11)=3.089764e-01; - this->pydat1().parj(12)=4.015396e-01; - this->pydat1().parj(13)=5.442874e-01; - this->pydat1().parj(25)=6.276964e-01; - this->pydat1().parj(26)=1.292377e-01; - this->pydat1().parj(21)=3.001463e-01; - this->pydat1().parj(41)=3.683123e-01; - this->pydat1().parj(42)=1.003531e+00; - this->pydat1().parj(47)=8.727703e-01; - this->pydat1().parj(81)=2.564716e-01; - this->pydat1().parj(82)=8.296215e-01; - this->pypars().mstp(3)=1; - this->pydat1().paru(112)=0.192; - this->pypars().parp(1)=0.192; - this->pypars().parp(61)=0.192; - this->pypars().mstp(70)=0; - this->pypars().parp(67)=1.00; - this->pypars().parp(91)=2.00; - this->pypars().parp(62)=2.17; - this->pypars().parp(64)=0.60; - this->pypars().parp(72)=0.43; - this->pypars().parp(77)=9.006820e-01; - this->pypars().parp(78)=3.092771e-01; - this->pypars().parp(82)=2.437442e+00; - this->pypars().parp(84)=5.598934e-01; - this->pypars().parp(90)=2.414007e-01; - ATH_MSG_INFO( "---------------------------------------------------------------------------------\n" - << "atlasTune: parameter setting to Tune_Index "<<m_Tune_Index<<" tune values : \n" - << "----------------------------------------------- \n" - << "mstp(128)=" << this->pypars().mstp(128) << "\n" - << "mstu(21)=" << this->pydat1().mstu(21) << "\n" - << "mstp(81)=" << this->pypars().mstp(81) << "\n" - << "mstp(82)=" << this->pypars().mstp(82) << "\n" - << "mstp(72)=" << this->pypars().mstp(72) << "\n" - << "mstp(88)=" << this->pypars().mstp(88) << "\n" - << "mstp(90)=" << this->pypars().mstp(90) << "\n" - << "parp(80)=" << this->pypars().parp(80) << "\n" - << "parp(83)=" << this->pypars().parp(83) << "\n" - << "parp(93)=" << this->pypars().parp(93) << "\n" - << "mstp(95)=" << this->pypars().mstp(95) << "\n" - << "mstj(22)=" << this->pydat1().mstj(22) << "\n" - << "parj(46)=" << this->pydat1().parj(46) << "\n" - << "mstp(84)=" << this->pypars().mstp(84) << "\n" - << "mstp(85)=" << this->pypars().mstp(85) << "\n" - << "mstp(86)=" << this->pypars().mstp(86) << "\n" - << "mstp(87)=" << this->pypars().mstp(87) << "\n" - << "mstp(89)=" << this->pypars().mstp(89) << "\n" - << "parp(89)=" << this->pypars().parp(89) << "\n" - << "pmas(6,1)=" << this->pydat2().pmas(6,1) << "\n" - << "pmas(24,1)=" << this->pydat2().pmas(24,1) << "\n" - << "pmas(23,1)=" << this->pydat2().pmas(23,1) << "\n" - << "pmas(23,1)=" << this->pydat2().pmas(23,1) << "\n" - << "pmas(23,1)=" << this->pydat2().pmas(23,1) << "\n" - << "mstp(51)=" << this->pypars().mstp(51) << "\n" - << "mstp(53)=" << this->pypars().mstp(53) << "\n" - << "mstp(55)=" << this->pypars().mstp(55) << "\n" - << "mstp(52)=" << this->pypars().mstp(52) << "\n" - << "mstp(54)=" << this->pypars().mstp(54) << "\n" - << "mstp(56)=" << this->pypars().mstp(56) << "\n" - << "mstj(11)=" << this->pydat1().mstj(11) << "\n" - << "parj(1)=" << this->pydat1().parj(1) << "\n" - << "parj(2)=" << this->pydat1().parj(2) << "\n" - << "parj(3)=" << this->pydat1().parj(3) << "\n" - << "parj(4)=" << this->pydat1().parj(4) << "\n" - << "parj(11)=" << this->pydat1().parj(11) << "\n" - << "parj(12)=" << this->pydat1().parj(12) << "\n" - << "parj(13)=" << this->pydat1().parj(13) << "\n" - << "parj(25)=" << this->pydat1().parj(25) << "\n" - << "parj(26)=" << this->pydat1().parj(26) << "\n" - << "parj(21)=" << this->pydat1().parj(21) << "\n" - << "parj(41)=" << this->pydat1().parj(41) << "\n" - << "parj(42)=" << this->pydat1().parj(42) << "\n" - << "parj(47)=" << this->pydat1().parj(47) << "\n" - << "parj(81)=" << this->pydat1().parj(81) << "\n" - << "parj(82)=" << this->pydat1().parj(82) << "\n" - << "mstp(3)=" << this->pypars().mstp(3) << "\n" - << "paru(112)=" << this->pydat1().paru(112) << "\n" - << "parp(1)=" << this->pypars().parp(1) << "\n" - << "parp(61)=" << this->pypars().parp(61) << "\n" - << "parp(61)=" << this->pypars().parp(61) << "\n" - << "mstp(70)=" << this->pypars().mstp(70) << "\n" - << "parp(67)=" << this->pypars().parp(67) << "\n" - << "parp(91)=" << this->pypars().parp(91) << "\n" - << "parp(62)=" << this->pypars().parp(62) << "\n" - << "parp(64)=" << this->pypars().parp(64) << "\n" - << "parp(72)=" << this->pypars().parp(72) << "\n" - << "parp(77)=" << this->pypars().parp(77) << "\n" - << "parp(78)=" << this->pypars().parp(78) << "\n" - << "parp(82)=" << this->pypars().parp(82) << "\n" - << "parp(84)=" << this->pypars().parp(84) << "\n" - << "parp(90)=" << this->pypars().parp(90) << "\n" - << "----------------------------------------------- \n" - << "atlasTune: end of the list of Tune_Index "<<m_Tune_Index<<" tune values : \n" - << "--------------------------------------------------------------------------------\n" ); - } // end of 20110002 (AMBT1FF/AUET2b) condition - else if (m_Tune_Index==20110102) - { - // ATLAS jargon : AMBT2b - // references : todo : add - // author : A. Buckley, J. Katzy (et. al) - // Pythia : 6.4.23 - // impl. date : Apr 2011 - // tune produced in : 2011 - // short description: LO** tune incl. ISR/FSR parameters, optimized for MinBias - //_______________________________________________________________________________________________________________________ - this->pypars().mstp(128)=1; - this->pydat1().mstu(21)=1; - this->pypars().mstp(81)=21; - this->pypars().mstp(82)=4; - this->pypars().mstp(72)=1; - this->pypars().mstp(88)=1; - this->pypars().mstp(90)=0; - this->pypars().parp(80)=0.1; - this->pypars().parp(83)=0.356; - this->pypars().parp(93)=10.0; - this->pypars().mstp(95)=6; - this->pydat1().mstj(22)=2; - this->pydat1().parj(46)=0.75; - this->pypars().mstp(84)=1; - this->pypars().mstp(85)=1; - this->pypars().mstp(86)=2; - this->pypars().mstp(87)=4; - this->pypars().mstp(89)=1; - this->pypars().parp(89)=1800.; - this->pydat2().pmas(6,1)=172.5; - this->pydat2().pmas(24,1)=80.399; - this->pydat2().pmas(23,1)=91.1876; - this->pypars().mstp(51)=20651; - this->pypars().mstp(53)=20651; - this->pypars().mstp(55)=20651; - this->pypars().mstp(52)=2; - this->pypars().mstp(54)=2; - this->pypars().mstp(56)=2; - this->pydat1().mstj(11)=5; - this->pydat1().parj(1)=7.272809e-02; - this->pydat1().parj(2)=2.018845e-01; - this->pydat1().parj(3)=9.498471e-01; - this->pydat1().parj(4)=3.316182e-02; - this->pydat1().parj(11)=3.089764e-01; - this->pydat1().parj(12)=4.015396e-01; - this->pydat1().parj(13)=5.442874e-01; - this->pydat1().parj(25)=6.276964e-01; - this->pydat1().parj(26)=1.292377e-01; - this->pydat1().parj(21)=3.001463e-01; - this->pydat1().parj(41)=3.683123e-01; - this->pydat1().parj(42)=1.003531e+00; - this->pydat1().parj(47)=8.727703e-01; - this->pydat1().parj(81)=2.564716e-01; - this->pydat1().parj(82)=8.296215e-01; - this->pypars().mstp(3)=1; - this->pydat1().paru(112)=0.192; - this->pypars().parp(1)=0.192; - this->pypars().parp(61)=0.192; - this->pypars().mstp(70)=0; - this->pypars().parp(67)=1.00; - this->pypars().parp(91)=2.00; - this->pypars().parp(62)=2.17; - this->pypars().parp(64)=0.60; - this->pypars().parp(72)=0.43; - this->pypars().parp(77)=1.100584e+00; - this->pypars().parp(78)=2.478809e-01; - this->pypars().parp(82)=2.592214e+00; - this->pypars().parp(84)=6.669917e-01; - this->pypars().parp(90)=2.552765e-01; - ATH_MSG_INFO( "---------------------------------------------------------------------------------\n" - << "atlasTune: parameter setting to Tune_Index "<<m_Tune_Index<<" tune values : \n" - << "----------------------------------------------- \n" - << "mstp(128)=" << this->pypars().mstp(128) << "\n" - << "mstu(21)=" << this->pydat1().mstu(21) << "\n" - << "mstp(81)=" << this->pypars().mstp(81) << "\n" - << "mstp(82)=" << this->pypars().mstp(82) << "\n" - << "mstp(72)=" << this->pypars().mstp(72) << "\n" - << "mstp(88)=" << this->pypars().mstp(88) << "\n" - << "mstp(90)=" << this->pypars().mstp(90) << "\n" - << "parp(80)=" << this->pypars().parp(80) << "\n" - << "parp(83)=" << this->pypars().parp(83) << "\n" - << "parp(93)=" << this->pypars().parp(93) << "\n" - << "mstp(95)=" << this->pypars().mstp(95) << "\n" - << "mstj(22)=" << this->pydat1().mstj(22) << "\n" - << "parj(46)=" << this->pydat1().parj(46) << "\n" - << "mstp(84)=" << this->pypars().mstp(84) << "\n" - << "mstp(85)=" << this->pypars().mstp(85) << "\n" - << "mstp(86)=" << this->pypars().mstp(86) << "\n" - << "mstp(87)=" << this->pypars().mstp(87) << "\n" - << "mstp(89)=" << this->pypars().mstp(89) << "\n" - << "parp(89)=" << this->pypars().parp(89) << "\n" - << "pmas(6,1)=" << this->pydat2().pmas(6,1) << "\n" - << "pmas(24,1)=" << this->pydat2().pmas(24,1) << "\n" - << "pmas(23,1)=" << this->pydat2().pmas(23,1) << "\n" - << "pmas(23,1)=" << this->pydat2().pmas(23,1) << "\n" - << "pmas(23,1)=" << this->pydat2().pmas(23,1) << "\n" - << "mstp(51)=" << this->pypars().mstp(51) << "\n" - << "mstp(53)=" << this->pypars().mstp(53) << "\n" - << "mstp(55)=" << this->pypars().mstp(55) << "\n" - << "mstp(52)=" << this->pypars().mstp(52) << "\n" - << "mstp(54)=" << this->pypars().mstp(54) << "\n" - << "mstp(56)=" << this->pypars().mstp(56) << "\n" - << "mstj(11)=" << this->pydat1().mstj(11) << "\n" - << "parj(1)=" << this->pydat1().parj(1) << "\n" - << "parj(2)=" << this->pydat1().parj(2) << "\n" - << "parj(3)=" << this->pydat1().parj(3) << "\n" - << "parj(4)=" << this->pydat1().parj(4) << "\n" - << "parj(11)=" << this->pydat1().parj(11) << "\n" - << "parj(12)=" << this->pydat1().parj(12) << "\n" - << "parj(13)=" << this->pydat1().parj(13) << "\n" - << "parj(25)=" << this->pydat1().parj(25) << "\n" - << "parj(26)=" << this->pydat1().parj(26) << "\n" - << "parj(21)=" << this->pydat1().parj(21) << "\n" - << "parj(41)=" << this->pydat1().parj(41) << "\n" - << "parj(42)=" << this->pydat1().parj(42) << "\n" - << "parj(47)=" << this->pydat1().parj(47) << "\n" - << "parj(81)=" << this->pydat1().parj(81) << "\n" - << "parj(82)=" << this->pydat1().parj(82) << "\n" - << "mstp(3)=" << this->pypars().mstp(3) << "\n" - << "paru(112)=" << this->pydat1().paru(112) << "\n" - << "parp(1)=" << this->pypars().parp(1) << "\n" - << "parp(61)=" << this->pypars().parp(61) << "\n" - << "parp(61)=" << this->pypars().parp(61) << "\n" - << "mstp(70)=" << this->pypars().mstp(70) << "\n" - << "parp(67)=" << this->pypars().parp(67) << "\n" - << "parp(91)=" << this->pypars().parp(91) << "\n" - << "parp(62)=" << this->pypars().parp(62) << "\n" - << "parp(64)=" << this->pypars().parp(64) << "\n" - << "parp(72)=" << this->pypars().parp(72) << "\n" - << "parp(77)=" << this->pypars().parp(77) << "\n" - << "parp(78)=" << this->pypars().parp(78) << "\n" - << "parp(82)=" << this->pypars().parp(82) << "\n" - << "parp(84)=" << this->pypars().parp(84) << "\n" - << "parp(90)=" << this->pypars().parp(90) << "\n" - << "----------------------------------------------- \n" - << "atlasTune: end of the list of Tune_Index "<<m_Tune_Index<<" tune values : \n" - << "--------------------------------------------------------------------------------\n" ); - } // end of 20110102 (AMBT2b) condition - else if (m_Tune_Index==20110003) - { - // ATLAS jargon : AUET2b - // references : todo : add - // author : A. Buckley, J. Katzy (et. al) - // Pythia : 6.4.23 - // impl. date : Apr 2011 - // tune produced in : 2011 - // short description: CTEQ6L1 tune incl. ISR/FSR parameters, optimized for UE - //_______________________________________________________________________________________________________________________ - this->pypars().mstp(128)=1; - this->pydat1().mstu(21)=1; - this->pypars().mstp(81)=21; - this->pypars().mstp(82)=4; - this->pypars().mstp(72)=1; - this->pypars().mstp(88)=1; - this->pypars().mstp(90)=0; - this->pypars().parp(80)=0.1; - this->pypars().parp(83)=0.356; - this->pypars().parp(93)=10.0; - this->pypars().mstp(95)=6; - this->pydat1().mstj(22)=2; - this->pydat1().parj(46)=0.75; - this->pypars().mstp(84)=1; - this->pypars().mstp(85)=1; - this->pypars().mstp(86)=2; - this->pypars().mstp(87)=4; - this->pypars().mstp(89)=1; - this->pypars().parp(89)=1800.; - this->pydat2().pmas(6,1)=172.5; - this->pydat2().pmas(24,1)=80.399; - this->pydat2().pmas(23,1)=91.1876; - this->pypars().mstp(51)=10042; - this->pypars().mstp(53)=10042; - this->pypars().mstp(55)=10042; - this->pypars().mstp(52)=2; - this->pypars().mstp(54)=2; - this->pypars().mstp(56)=2; - this->pydat1().mstj(11)=5; - this->pydat1().parj(1)=7.272809e-02; - this->pydat1().parj(2)=2.018845e-01; - this->pydat1().parj(3)=9.498471e-01; - this->pydat1().parj(4)=3.316182e-02; - this->pydat1().parj(11)=3.089764e-01; - this->pydat1().parj(12)=4.015396e-01; - this->pydat1().parj(13)=5.442874e-01; - this->pydat1().parj(25)=6.276964e-01; - this->pydat1().parj(26)=1.292377e-01; - this->pydat1().parj(21)=3.001463e-01; - this->pydat1().parj(41)=3.683123e-01; - this->pydat1().parj(42)=1.003531e+00; - this->pydat1().parj(47)=8.727703e-01; - this->pydat1().parj(81)=2.564716e-01; - this->pydat1().parj(82)=8.296215e-01; - this->pypars().mstp(3)=1; - this->pydat1().paru(112)=0.192; - this->pypars().parp(1)=0.192; - this->pypars().parp(61)=0.192; - this->pypars().mstp(70)=0; - this->pypars().parp(67)=1.00; - this->pypars().parp(91)=2.00; - this->pypars().parp(62)=1.13; - this->pypars().parp(64)=0.68; - this->pypars().parp(72)=0.527; - this->pypars().parp(77)=4.905171e-01; - this->pypars().parp(78)=3.105197e-01; - this->pypars().parp(82)=2.259809e+00; - this->pypars().parp(84)=4.430423e-01; - this->pypars().parp(90)=2.490763e-01; - ATH_MSG_INFO( "---------------------------------------------------------------------------------\n" - << "atlasTune: parameter setting to Tune_Index "<<m_Tune_Index<<" tune values : \n" - << "----------------------------------------------- \n" - << "mstp(128)=" << this->pypars().mstp(128) << "\n" - << "mstu(21)=" << this->pydat1().mstu(21) << "\n" - << "mstp(81)=" << this->pypars().mstp(81) << "\n" - << "mstp(82)=" << this->pypars().mstp(82) << "\n" - << "mstp(72)=" << this->pypars().mstp(72) << "\n" - << "mstp(88)=" << this->pypars().mstp(88) << "\n" - << "mstp(90)=" << this->pypars().mstp(90) << "\n" - << "parp(80)=" << this->pypars().parp(80) << "\n" - << "parp(83)=" << this->pypars().parp(83) << "\n" - << "parp(93)=" << this->pypars().parp(93) << "\n" - << "mstp(95)=" << this->pypars().mstp(95) << "\n" - << "mstj(22)=" << this->pydat1().mstj(22) << "\n" - << "parj(46)=" << this->pydat1().parj(46) << "\n" - << "mstp(84)=" << this->pypars().mstp(84) << "\n" - << "mstp(85)=" << this->pypars().mstp(85) << "\n" - << "mstp(86)=" << this->pypars().mstp(86) << "\n" - << "mstp(87)=" << this->pypars().mstp(87) << "\n" - << "mstp(89)=" << this->pypars().mstp(89) << "\n" - << "parp(89)=" << this->pypars().parp(89) << "\n" - << "pmas(6,1)=" << this->pydat2().pmas(6,1) << "\n" - << "pmas(24,1)=" << this->pydat2().pmas(24,1) << "\n" - << "pmas(23,1)=" << this->pydat2().pmas(23,1) << "\n" - << "pmas(23,1)=" << this->pydat2().pmas(23,1) << "\n" - << "pmas(23,1)=" << this->pydat2().pmas(23,1) << "\n" - << "mstp(51)=" << this->pypars().mstp(51) << "\n" - << "mstp(53)=" << this->pypars().mstp(53) << "\n" - << "mstp(55)=" << this->pypars().mstp(55) << "\n" - << "mstp(52)=" << this->pypars().mstp(52) << "\n" - << "mstp(54)=" << this->pypars().mstp(54) << "\n" - << "mstp(56)=" << this->pypars().mstp(56) << "\n" - << "mstj(11)=" << this->pydat1().mstj(11) << "\n" - << "parj(1)=" << this->pydat1().parj(1) << "\n" - << "parj(2)=" << this->pydat1().parj(2) << "\n" - << "parj(3)=" << this->pydat1().parj(3) << "\n" - << "parj(4)=" << this->pydat1().parj(4) << "\n" - << "parj(11)=" << this->pydat1().parj(11) << "\n" - << "parj(12)=" << this->pydat1().parj(12) << "\n" - << "parj(13)=" << this->pydat1().parj(13) << "\n" - << "parj(25)=" << this->pydat1().parj(25) << "\n" - << "parj(26)=" << this->pydat1().parj(26) << "\n" - << "parj(21)=" << this->pydat1().parj(21) << "\n" - << "parj(41)=" << this->pydat1().parj(41) << "\n" - << "parj(42)=" << this->pydat1().parj(42) << "\n" - << "parj(47)=" << this->pydat1().parj(47) << "\n" - << "parj(81)=" << this->pydat1().parj(81) << "\n" - << "parj(82)=" << this->pydat1().parj(82) << "\n" - << "mstp(3)=" << this->pypars().mstp(3) << "\n" - << "paru(112)=" << this->pydat1().paru(112) << "\n" - << "parp(1)=" << this->pypars().parp(1) << "\n" - << "parp(61)=" << this->pypars().parp(61) << "\n" - << "parp(61)=" << this->pypars().parp(61) << "\n" - << "mstp(70)=" << this->pypars().mstp(70) << "\n" - << "parp(67)=" << this->pypars().parp(67) << "\n" - << "parp(91)=" << this->pypars().parp(91) << "\n" - << "parp(62)=" << this->pypars().parp(62) << "\n" - << "parp(64)=" << this->pypars().parp(64) << "\n" - << "parp(72)=" << this->pypars().parp(72) << "\n" - << "parp(77)=" << this->pypars().parp(77) << "\n" - << "parp(78)=" << this->pypars().parp(78) << "\n" - << "parp(82)=" << this->pypars().parp(82) << "\n" - << "parp(84)=" << this->pypars().parp(84) << "\n" - << "parp(90)=" << this->pypars().parp(90) << "\n" - << "----------------------------------------------- \n" - << "atlasTune: end of the list of Tune_Index "<<m_Tune_Index<<" tune values : \n" - << "--------------------------------------------------------------------------------\n" ); - } // end of 20110003 (AUET2b) condition - else if (m_Tune_Index==20110103) - { - // ATLAS jargon : AMBT2b - // references : todo : add - // author : A. Buckley, J. Katzy (et. al) - // Pythia : 6.4.23 - // impl. date : Apr 2011 - // tune produced in : 2011 - // short description: CTEQ6L1 tune incl. ISR/FSR parameters, optimized for MinBias - //_______________________________________________________________________________________________________________________ - this->pypars().mstp(128)=1; - this->pydat1().mstu(21)=1; - this->pypars().mstp(81)=21; - this->pypars().mstp(82)=4; - this->pypars().mstp(72)=1; - this->pypars().mstp(88)=1; - this->pypars().mstp(90)=0; - this->pypars().parp(80)=0.1; - this->pypars().parp(83)=0.356; - this->pypars().parp(93)=10.0; - this->pypars().mstp(95)=6; - this->pydat1().mstj(22)=2; - this->pydat1().parj(46)=0.75; - this->pypars().mstp(84)=1; - this->pypars().mstp(85)=1; - this->pypars().mstp(86)=2; - this->pypars().mstp(87)=4; - this->pypars().mstp(89)=1; - this->pypars().parp(89)=1800.; - this->pydat2().pmas(6,1)=172.5; - this->pydat2().pmas(24,1)=80.399; - this->pydat2().pmas(23,1)=91.1876; - this->pypars().mstp(51)=10042; - this->pypars().mstp(53)=10042; - this->pypars().mstp(55)=10042; - this->pypars().mstp(52)=2; - this->pypars().mstp(54)=2; - this->pypars().mstp(56)=2; - this->pydat1().mstj(11)=5; - this->pydat1().parj(1)=7.272809e-02; - this->pydat1().parj(2)=2.018845e-01; - this->pydat1().parj(3)=9.498471e-01; - this->pydat1().parj(4)=3.316182e-02; - this->pydat1().parj(11)=3.089764e-01; - this->pydat1().parj(12)=4.015396e-01; - this->pydat1().parj(13)=5.442874e-01; - this->pydat1().parj(25)=6.276964e-01; - this->pydat1().parj(26)=1.292377e-01; - this->pydat1().parj(21)=3.001463e-01; - this->pydat1().parj(41)=3.683123e-01; - this->pydat1().parj(42)=1.003531e+00; - this->pydat1().parj(47)=8.727703e-01; - this->pydat1().parj(81)=2.564716e-01; - this->pydat1().parj(82)=8.296215e-01; - this->pypars().mstp(3)=1; - this->pydat1().paru(112)=0.192; - this->pypars().parp(1)=0.192; - this->pypars().parp(61)=0.192; - this->pypars().mstp(70)=0; - this->pypars().parp(67)=1.00; - this->pypars().parp(91)=2.00; - this->pypars().parp(62)=1.13; - this->pypars().parp(64)=0.68; - this->pypars().parp(72)=0.527; - this->pypars().parp(77)=3.566023e-01; - this->pypars().parp(78)=2.350777e-01; - this->pypars().parp(82)=2.342685e+00; - this->pypars().parp(84)=6.053474e-01; - this->pypars().parp(90)=2.456730e-01; - ATH_MSG_INFO( "---------------------------------------------------------------------------------\n" - << "atlasTune: parameter setting to Tune_Index "<<m_Tune_Index<<" tune values : \n" - << "----------------------------------------------- \n" - << "mstp(128)=" << this->pypars().mstp(128) << "\n" - << "mstu(21)=" << this->pydat1().mstu(21) << "\n" - << "mstp(81)=" << this->pypars().mstp(81) << "\n" - << "mstp(82)=" << this->pypars().mstp(82) << "\n" - << "mstp(72)=" << this->pypars().mstp(72) << "\n" - << "mstp(88)=" << this->pypars().mstp(88) << "\n" - << "mstp(90)=" << this->pypars().mstp(90) << "\n" - << "parp(80)=" << this->pypars().parp(80) << "\n" - << "parp(83)=" << this->pypars().parp(83) << "\n" - << "parp(93)=" << this->pypars().parp(93) << "\n" - << "mstp(95)=" << this->pypars().mstp(95) << "\n" - << "mstj(22)=" << this->pydat1().mstj(22) << "\n" - << "parj(46)=" << this->pydat1().parj(46) << "\n" - << "mstp(84)=" << this->pypars().mstp(84) << "\n" - << "mstp(85)=" << this->pypars().mstp(85) << "\n" - << "mstp(86)=" << this->pypars().mstp(86) << "\n" - << "mstp(87)=" << this->pypars().mstp(87) << "\n" - << "mstp(89)=" << this->pypars().mstp(89) << "\n" - << "parp(89)=" << this->pypars().parp(89) << "\n" - << "pmas(6,1)=" << this->pydat2().pmas(6,1) << "\n" - << "pmas(24,1)=" << this->pydat2().pmas(24,1) << "\n" - << "pmas(23,1)=" << this->pydat2().pmas(23,1) << "\n" - << "pmas(23,1)=" << this->pydat2().pmas(23,1) << "\n" - << "pmas(23,1)=" << this->pydat2().pmas(23,1) << "\n" - << "mstp(51)=" << this->pypars().mstp(51) << "\n" - << "mstp(53)=" << this->pypars().mstp(53) << "\n" - << "mstp(55)=" << this->pypars().mstp(55) << "\n" - << "mstp(52)=" << this->pypars().mstp(52) << "\n" - << "mstp(54)=" << this->pypars().mstp(54) << "\n" - << "mstp(56)=" << this->pypars().mstp(56) << "\n" - << "mstj(11)=" << this->pydat1().mstj(11) << "\n" - << "parj(1)=" << this->pydat1().parj(1) << "\n" - << "parj(2)=" << this->pydat1().parj(2) << "\n" - << "parj(3)=" << this->pydat1().parj(3) << "\n" - << "parj(4)=" << this->pydat1().parj(4) << "\n" - << "parj(11)=" << this->pydat1().parj(11) << "\n" - << "parj(12)=" << this->pydat1().parj(12) << "\n" - << "parj(13)=" << this->pydat1().parj(13) << "\n" - << "parj(25)=" << this->pydat1().parj(25) << "\n" - << "parj(26)=" << this->pydat1().parj(26) << "\n" - << "parj(21)=" << this->pydat1().parj(21) << "\n" - << "parj(41)=" << this->pydat1().parj(41) << "\n" - << "parj(42)=" << this->pydat1().parj(42) << "\n" - << "parj(47)=" << this->pydat1().parj(47) << "\n" - << "parj(81)=" << this->pydat1().parj(81) << "\n" - << "parj(82)=" << this->pydat1().parj(82) << "\n" - << "mstp(3)=" << this->pypars().mstp(3) << "\n" - << "paru(112)=" << this->pydat1().paru(112) << "\n" - << "parp(1)=" << this->pypars().parp(1) << "\n" - << "parp(61)=" << this->pypars().parp(61) << "\n" - << "parp(61)=" << this->pypars().parp(61) << "\n" - << "mstp(70)=" << this->pypars().mstp(70) << "\n" - << "parp(67)=" << this->pypars().parp(67) << "\n" - << "parp(91)=" << this->pypars().parp(91) << "\n" - << "parp(62)=" << this->pypars().parp(62) << "\n" - << "parp(64)=" << this->pypars().parp(64) << "\n" - << "parp(72)=" << this->pypars().parp(72) << "\n" - << "parp(77)=" << this->pypars().parp(77) << "\n" - << "parp(78)=" << this->pypars().parp(78) << "\n" - << "parp(82)=" << this->pypars().parp(82) << "\n" - << "parp(84)=" << this->pypars().parp(84) << "\n" - << "parp(90)=" << this->pypars().parp(90) << "\n" - << "----------------------------------------------- \n" - << "atlasTune: end of the list of Tune_Index "<<m_Tune_Index<<" tune values : \n" - << "--------------------------------------------------------------------------------\n" ); - } // end of 20110103 (AMBT2b) condition - else - { - ATH_MSG_WARNING( "atlasTune: no tune with Tune_Index : "<<m_Tune_Index << "\n" - << "run with current default ATLAS tune : "<<m_Default_Tune_Name << "\n" ); - //set Tune_Type to empty to get common undefined tune behavior - m_Tune_Type=" "; - StatusCode sc = PythiaTopMdiff::setPythiaTune(); - } - - ATH_MSG_INFO( "atlasTune: all done \n" - << "________________________________________________________________________________\n" ); - return StatusCode::SUCCESS; - - //end of atlasTune def. -} - diff --git a/Generators/PythiaExo_i/src/atopyt.F b/Generators/PythiaExo_i/src/atopyt.F deleted file mode 100644 index cb9255589874b5406299f53c0b99f9ee5632c8b0..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/atopyt.F +++ /dev/null @@ -1,155 +0,0 @@ - SUBROUTINE ALSHCD(CSHO) - CHARACTER*3 CSHO - CSHO='PYT' - END - - SUBROUTINE ALSHEN - END - - SUBROUTINE ALSHER(I) - INTEGER I - I=0 - RETURN - END -C---------------------------------------------------------------------- - SUBROUTINE ALSHIN(I) -C---------------------------------------------------------------------- -C subroutine to initialise the events -C---------------------------------------------------------------------- - IMPLICIT NONE -#include "AlpGen_i/alpsho.inc" - INTEGER I -C--LOCAL VARIABLES -C EASY-TEXT - CHARACTER*10 CGIVE - CHARACTER*12 CGIV2 - CHARACTER*32 CPASS -C LOCAL VARIABLES - DOUBLE PRECISION MQ - INTEGER IQ -C COMMUNICATION CODE - I=661 -C FILL IN PYTHIA SPECIFIC INPUTS - IF(MC.NE.0.) THEN - IQ=4 - MQ=MC - WRITE(CGIVE,'(I5)') IQ - WRITE(CGIV2,'(D12.5)') MQ - CPASS='PMAS('//CGIVE//',1)='//CGIV2 - CALL PYGIVE(CPASS) -C PMAS(IQ,1)=MQ - ENDIF - IF(MB.NE.0.) THEN - IQ=5 - MQ=MB - WRITE(CGIVE,'(I5)') IQ - WRITE(CGIV2,'(D12.5)') MQ - CPASS='PMAS('//CGIVE//',1)='//CGIV2 - CALL PYGIVE(CPASS) -C PMAS(IQ,1)=MQ - ENDIF - IF(MT.NE.0.) THEN - IQ=6 - MQ=MT - WRITE(CGIVE,'(I5)') IQ - WRITE(CGIV2,'(D12.5)') MQ - CPASS='PMAS('//CGIVE//',1)='//CGIV2 - CALL PYGIVE(CPASS) -C PMAS(IQ,1)=MQ - ENDIF - IF(MW.NE.0.) THEN - WRITE(CGIV2,'(D12.5)') MW - CPASS='PMAS(24,1)='//CGIV2 - CALL PYGIVE(CPASS) -C PMAS(24,1)=MW - ENDIF - IF(MZ.NE.0.) THEN - WRITE(CGIV2,'(D12.5)') MZ - CPASS='PMAS(23,1)='//CGIV2 - CALL PYGIVE(CPASS) -C PMAS(23,1)=MZ - ENDIF - IF(MH.NE.0.) THEN - WRITE(CGIV2,'(D12.5)') MH - CPASS='PMAS(25,1)='//CGIV2 - CALL PYGIVE(CPASS) -C PMAS(25,1)=MH - ENDIF - END - -C----------------------------------------------------------------------- - SUBROUTINE ALSFIN -C----------------------------------------------------------------------- -C PYTHIA END OF FILE TREATMENT -C----------------------------------------------------------------------- -C-- GUP Event common block -#include "GeneratorFortranCommon/hepeup.inc" - NUP=0 - END - -C---------------------------------------------------------------------- - SUBROUTINE MGSHIN(I) -C---------------------------------------------------------------------- -C subroutine to initialise the events FOR MADGRAPH ONLY -C---------------------------------------------------------------------- - IMPLICIT NONE -#include "MadGraph_i/madsho.inc" - INTEGER I -C--LOCAL VARIABLES -C EASY-TEXT - CHARACTER*10 CGIVE - CHARACTER*12 CGIV2 - CHARACTER*32 CPASS -C LOCAL VARIABLES - DOUBLE PRECISION MQ - INTEGER IQ -C COMMUNICATION CODE - I=661 -C FILL IN PYTHIA SPECIFIC INPUTS for SM - IF(MC.NE.0.) THEN - IQ=4 - MQ=MC - WRITE(CGIVE,'(I5)') IQ - WRITE(CGIV2,'(D12.5)') MQ - CPASS='PMAS('//CGIVE//',1)='//CGIV2 - CALL PYGIVE(CPASS) -C PMAS(IQ,1)=MQ - ENDIF - IF(MB.NE.0.) THEN - IQ=5 - MQ=MB - WRITE(CGIVE,'(I5)') IQ - WRITE(CGIV2,'(D12.5)') MQ - CPASS='PMAS('//CGIVE//',1)='//CGIV2 - CALL PYGIVE(CPASS) -C PMAS(IQ,1)=MQ - ENDIF - IF(MT.NE.0.) THEN - IQ=6 - MQ=MT - WRITE(CGIVE,'(I5)') IQ - WRITE(CGIV2,'(D12.5)') MQ - CPASS='PMAS('//CGIVE//',1)='//CGIV2 - CALL PYGIVE(CPASS) -C PMAS(IQ,1)=MQ - ENDIF - IF(MW.NE.0.) THEN - WRITE(CGIV2,'(D12.5)') MW - CPASS='PMAS(24,1)='//CGIV2 - CALL PYGIVE(CPASS) -C PMAS(24,1)=MW - ENDIF - IF(MZ.NE.0.) THEN - WRITE(CGIV2,'(D12.5)') MZ - CPASS='PMAS(23,1)='//CGIV2 - CALL PYGIVE(CPASS) -C PMAS(23,1)=MZ - ENDIF - IF(MH.NE.0.) THEN - WRITE(CGIV2,'(D12.5)') MH - CPASS='PMAS(25,1)='//CGIV2 - CALL PYGIVE(CPASS) -C PMAS(25,1)=MH - ENDIF - END - diff --git a/Generators/PythiaExo_i/src/cldcay.F b/Generators/PythiaExo_i/src/cldcay.F deleted file mode 100644 index 5d4b5824f2143a6ec536389685aec31d67242a8d..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/cldcay.F +++ /dev/null @@ -1,8 +0,0 @@ - SUBROUTINE CLDCAY(LUN) - IMPLICIT NONE - INTEGER LUN - - CLOSE(LUN) - - RETURN - END diff --git a/Generators/PythiaExo_i/src/extproc.F b/Generators/PythiaExo_i/src/extproc.F deleted file mode 100644 index 566d47fb7d0d346941d5850e2486a1d1bcfd87c5..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/extproc.F +++ /dev/null @@ -1,9 +0,0 @@ - SUBROUTINE EXTPROC(IPROC) -c -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) -#include "GeneratorFortranCommon/lesatlas.inc" - ATLASCHOICE = IPROC - RETURN - END diff --git a/Generators/PythiaExo_i/src/gatlastaula_decres_py.F b/Generators/PythiaExo_i/src/gatlastaula_decres_py.F deleted file mode 100644 index d1232a04495e05b3efd17a7fcd95542aa21bd4e3..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/gatlastaula_decres_py.F +++ /dev/null @@ -1,22 +0,0 @@ -C FORKING ROUTINE TO DECAY LEFTOVER RESONANCES IN PYTHIA - SUBROUTINE TAUOLA_DECRES_PY(ISTART) - - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - INTEGER ISTART - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - - PARAMETER (NMXHEP=10000) - COMMON/HEPEVT/NEVHEP,NHEP,ISTHEP(NMXHEP),IDHEP(NMXHEP), - &JMOHEP(2,NMXHEP),JDAHEP(2,NMXHEP),PHEP(5,NMXHEP),VHEP(4,NMXHEP) - DOUBLE PRECISION PHEP,VHEP - SAVE /HEPEVT/ - - MSTU(12)=12345 ! PREVENT TOO MANY LOGOS - - CALL PYHEPC(2) -C---DO UNSTABLE PARTICLE DECAYS - CALL PYEXEC ! DECAY AN ODD PION... - CALL PYHEPC(1) -c CALL PYLIST(2) - RETURN - END diff --git a/Generators/PythiaExo_i/src/gpydat1.F b/Generators/PythiaExo_i/src/gpydat1.F deleted file mode 100644 index 35cb472d5928e33031d982920982da7985c7df59..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/gpydat1.F +++ /dev/null @@ -1,11 +0,0 @@ - FVOIDP FUNCTION PYDAT1_ADDRESS() - IMPLICIT NONE - INTEGER MSTU,MSTJ - DOUBLE PRECISION PARU,PARJ - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - EXTERNAL PYDATA ! All that is required to force loading of BLOCK DATA - FVOIDP GETADDR - - PYDAT1_ADDRESS = GETADDR(MSTU(1)) - RETURN - END diff --git a/Generators/PythiaExo_i/src/gpydat2.F b/Generators/PythiaExo_i/src/gpydat2.F deleted file mode 100644 index c4f6fb28bc3a9505493f93f177ba6e852122acc1..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/gpydat2.F +++ /dev/null @@ -1,13 +0,0 @@ - FVOIDP FUNCTION PYDAT2_ADDRESS() - IMPLICIT NONE - INTEGER NSUB,NPAR,NKDP,NPDP,NVDM - PARAMETER (NSUB=500,NPAR=2000,NKDP=4,NPDP=4,NVDM=4) - INTEGER KCHG - DOUBLE PRECISION PMAS,PARF,VCKM - COMMON/PYDAT2/KCHG(NSUB,NKDP),PMAS(NSUB,NPDP),PARF(NPAR), - & VCKM(NVDM,NVDM) - FVOIDP GETADDR - - PYDAT2_ADDRESS = GETADDR(KCHG) - RETURN - END diff --git a/Generators/PythiaExo_i/src/gpydat3_62.F b/Generators/PythiaExo_i/src/gpydat3_62.F deleted file mode 100644 index 13d7ab1f32068b95ad9b2a6b73da1efbc62b718d..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/gpydat3_62.F +++ /dev/null @@ -1,14 +0,0 @@ - FVOIDP FUNCTION PYDAT3_ADDRESS() - IMPLICIT NONE - INTEGER NSUB,NPAR,NMDCY,NMDME,NKFDP - PARAMETER (NSUB=500,NPAR=8000,NMDCY=3,NMDME=2,NKFDP=5) - INTEGER MDCY,MDME,KFDP - DOUBLE PRECISION BRAT - COMMON/PYDAT3/MDCY(NSUB,NMDCY),MDME(NPAR,NMDME),BRAT(NPAR), - & KFDP(NPAR,NKFDP) - - FVOIDP GETADDR - - PYDAT3_ADDRESS = GETADDR(MDCY(1,1)) - RETURN - END diff --git a/Generators/PythiaExo_i/src/gpydatr.F b/Generators/PythiaExo_i/src/gpydatr.F deleted file mode 100644 index 40f670a1a71571145fed1855b2c691e777713f0b..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/gpydatr.F +++ /dev/null @@ -1,11 +0,0 @@ - FVOIDP FUNCTION PYDATR_ADDRESS() - IMPLICIT NONE - INTEGER MRPY - DOUBLE PRECISION RRPY - COMMON/PYDATR/MRPY(6),RRPY(100) - EXTERNAL PYDATA ! All that is required to force loading of BLOCK DATA - FVOIDP GETADDR - - PYDATR_ADDRESS = GETADDR(MRPY(1)) - RETURN - END diff --git a/Generators/PythiaExo_i/src/gpyint1.F b/Generators/PythiaExo_i/src/gpyint1.F deleted file mode 100644 index c6529c26561e7ab39f82c9cf87cc777b4e4aa1db..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/gpyint1.F +++ /dev/null @@ -1,11 +0,0 @@ - FVOIDP FUNCTION PYINT1_ADDRESS() - IMPLICIT NONE - INTEGER MINT - DOUBLE PRECISION VINT - COMMON/PYINT1/MINT(400),VINT(400) - EXTERNAL PYDATA ! All that is required to force loading of BLOCK DATA - FVOIDP GETADDR - - PYINT1_ADDRESS = GETADDR(MINT(1)) - RETURN - END diff --git a/Generators/PythiaExo_i/src/gpyint2.F b/Generators/PythiaExo_i/src/gpyint2.F deleted file mode 100644 index 7bc1a12adfc960abde9b02c41e84ea80838b9083..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/gpyint2.F +++ /dev/null @@ -1,11 +0,0 @@ - FVOIDP FUNCTION PYINT2_ADDRESS() - IMPLICIT NONE - INTEGER ISET,KFPR,ICOL - DOUBLE PRECISION COEF - COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2) - EXTERNAL PYDATA ! All that is required to force loading of BLOCK DATA - FVOIDP GETADDR - - PYINT2_ADDRESS = GETADDR(ISET(1)) - RETURN - END diff --git a/Generators/PythiaExo_i/src/gpyint5.F b/Generators/PythiaExo_i/src/gpyint5.F deleted file mode 100644 index 8e81c3fff6b2ee9324f2cbf8e5bdad071301a555..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/gpyint5.F +++ /dev/null @@ -1,10 +0,0 @@ - FVOIDP FUNCTION PYINT5_ADDRESS() - IMPLICIT NONE - INTEGER NGENPD,NGEN - DOUBLE PRECISION XSEC - COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3) - EXTERNAL PYDATA ! All that is required to force loading of BLOCK DATA - FVOIDP GETADDR - PYINT5_ADDRESS = GETADDR(NGENPD) - RETURN - END diff --git a/Generators/PythiaExo_i/src/gpymssm.F b/Generators/PythiaExo_i/src/gpymssm.F deleted file mode 100644 index 45efaadf57c2b5479c4697b95b11aee874a55bb3..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/gpymssm.F +++ /dev/null @@ -1,10 +0,0 @@ - FVOIDP FUNCTION PYMSSM_ADDRESS() - IMPLICIT NONE - INTEGER ISSM - DOUBLE PRECISION RSSM - COMMON /PYMSSM/ ISSM(0:99),RSSM(0:99) - EXTERNAL PYDATA ! All that is required to force loading of BLOCK DATA - FVOIDP GETADDR - PYMSSM_ADDRESS = GETADDR(ISSM) - RETURN - END diff --git a/Generators/PythiaExo_i/src/gpypars.F b/Generators/PythiaExo_i/src/gpypars.F deleted file mode 100644 index ccd83153ee3e03a096c7d6cc72766e5cd15a559f..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/gpypars.F +++ /dev/null @@ -1,11 +0,0 @@ - FVOIDP FUNCTION PYPARS_ADDRESS() - IMPLICIT NONE - INTEGER MSTP,MSTI - DOUBLE PRECISION PARP,PARI - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) - EXTERNAL PYDATA ! All that is required to force loading of BLOCK DATA - FVOIDP GETADDR - - PYPARS_ADDRESS = GETADDR(MSTP(1)) - RETURN - END diff --git a/Generators/PythiaExo_i/src/gpyssmt.F b/Generators/PythiaExo_i/src/gpyssmt.F deleted file mode 100644 index 1e0a5eda76ed12c62282a900099f0353a517b745..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/gpyssmt.F +++ /dev/null @@ -1,10 +0,0 @@ - FVOIDP FUNCTION PYSSMT_ADDRESS() - IMPLICIT NONE - DOUBLE PRECISION ZMIX, UMIX, VMIX, SMZ, SMW, SFMIX - COMMON /PYSSMT/ ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2), - & SFMIX(16,4) - EXTERNAL PYDATA ! All that is required to force loading of BLOCK DATA - FVOIDP GETADDR - PYSSMT_ADDRESS = GETADDR(ZMIX) - RETURN - END diff --git a/Generators/PythiaExo_i/src/gpysubs.F b/Generators/PythiaExo_i/src/gpysubs.F deleted file mode 100644 index 137d825e28e6d37a517aff28dec6f565180492e1..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/gpysubs.F +++ /dev/null @@ -1,13 +0,0 @@ - FVOIDP FUNCTION PYSUBS_ADDRESS() - IMPLICIT NONE - INTEGER NSUB,NKIN,NFLAV - PARAMETER (NSUB=500,NKIN=200,NFLAV=40) - INTEGER MSEL,MSELPD,MSUB,KFIN - DOUBLE PRECISION CKIN - COMMON/PYSUBS/MSEL,MSELPD,MSUB(NSUB),KFIN(2,-NFLAV:NFLAV), - & CKIN(NKIN) - FVOIDP GETADDR - - PYSUBS_ADDRESS = GETADDR(MSEL) - RETURN - END diff --git a/Generators/PythiaExo_i/src/gpytcsm.F b/Generators/PythiaExo_i/src/gpytcsm.F deleted file mode 100644 index d8c6913842cf6733b30a8638c21468d42cf3ad47..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/gpytcsm.F +++ /dev/null @@ -1,10 +0,0 @@ - FVOIDP FUNCTION PYTCSM_ADDRESS() - IMPLICIT NONE - INTEGER ITCM - DOUBLE PRECISION RTCM - COMMON/PYTCSM/ITCM(0:99),RTCM(0:99) - EXTERNAL PYDATA ! All that is required to force loading of BLOCK DATA - FVOIDP GETADDR - PYTCSM_ADDRESS = GETADDR(ITCM) - RETURN - END diff --git a/Generators/PythiaExo_i/src/initpyblock.F b/Generators/PythiaExo_i/src/initpyblock.F deleted file mode 100644 index 2a56d3d80a11340c10e2c7d9fe81c77e2a01dc47..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/initpyblock.F +++ /dev/null @@ -1,32 +0,0 @@ - SUBROUTINE INITPYBLOCK(LULIS,FILLIS) - IMPLICIT NONE - - EXTERNAL PYDATA ! All that is required to force loading of BLOCK DATA - - COMMON/PYDAT4/CHAF(500,2) - CHARACTER CHAF*16 - integer LULIS,IERR - CHARACTER*60 FILLIS -c This is the listing filefile - -c write(6,*) '<<<<<<<<< Hello from initpyblock >>>>>>> ' -c write(6,*) CHAF(1,1), CHAF(1,2) -c write(6,*) CHAF(100,1), CHAF(100,2) - -C Open for write the pythia listing file File -C ==================================== -C - IF(LULIS.GT.0)THEN - OPEN ( UNIT=LULIS, FORM='FORMATTED', - & FILE=FILLIS,STATUS='NEW',IOSTAT=IERR) - IF(IERR.NE.0) THEN - WRITE(6,*) - & 'Error ', IERR,' failing to open PYTHIA Listing file' - RETURN - ELSE - WRITE(6,*) - & 'Open PYTHIA Listing file' - ENDIF - ENDIF - RETURN - END diff --git a/Generators/PythiaExo_i/src/opdcay.F b/Generators/PythiaExo_i/src/opdcay.F deleted file mode 100644 index 98cf65a9edc212c12adf00e8a7b05fcb74ea440f..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/opdcay.F +++ /dev/null @@ -1,21 +0,0 @@ - INTEGER FUNCTION OPDCAY(FNAME,LUN,MODE) - IMPLICIT NONE - CHARACTER*(*) FNAME - CHARACTER*1 MODE - INTEGER LUN - - IF (MODE.eq.'W') THEN -ccc OPEN(UNIT=LUN,NAME=FNAME,ERR=99) ! gfortran incompatible - OPEN(UNIT=LUN,FILE=FNAME,ERR=99) - ELSE -ccc OPEN(UNIT=LUN,NAME=FNAME,STATUS='OLD',ERR=99)! gfortran incompatible - OPEN(UNIT=LUN,FILE=FNAME,STATUS='OLD',ERR=99) - ENDIF - - OPDCAY=0 - RETURN - -C ERROR OPENING FILE - 99 OPDCAY=1 - RETURN - END diff --git a/Generators/PythiaExo_i/src/openrandom.F b/Generators/PythiaExo_i/src/openrandom.F deleted file mode 100644 index 060edf42056c70606947ba95470ec46cdbc0db06..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/openrandom.F +++ /dev/null @@ -1,39 +0,0 @@ - INTEGER FUNCTION OPENRANDOM(OPTION,LULIS,FILLIS) - IMPLICIT NONE - - integer LULIS,IERR,OPTION - CHARACTER*60 FILLIS - -C Open for write the pythia random number File -C ==================================== -C - OPENRANDOM = 0 - IF(LULIS.GT.0 .and. OPTION .gt.0)THEN - IF(OPTION .eq. 1) THEN - OPEN ( UNIT=LULIS, FORM='UNFORMATTED', - & FILE=FILLIS,STATUS='UNKNOWN',IOSTAT=IERR) - ELSEIF (OPTION .eq. 2) THEN - OPEN ( UNIT=LULIS, FORM='UNFORMATTED', - & FILE=FILLIS,STATUS='OLD',IOSTAT=IERR) - ENDIF - IF(IERR.NE.0) THEN - WRITE(6,*) 'Error ', IERR, - & ' failing to open PYTHIA Random Number file' - RETURN - ELSE - WRITE(6,*) 'Open PYTHIA Random Number file' - ENDIF - ENDIF - -C When in reading mode count the number of records in the file - IF (OPTION .eq. 2) THEN - DO - READ(LULIS,END=120,IOSTAT=IERR) - OPENRANDOM = OPENRANDOM + 1 - ENDDO - 120 REWIND(LULIS) - ENDIF - - RETURN - - END diff --git a/Generators/PythiaExo_i/src/opensusyfile.F b/Generators/PythiaExo_i/src/opensusyfile.F deleted file mode 100644 index 77a5aa704eb38870bfe8e7535a254205cb7f10d6..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/opensusyfile.F +++ /dev/null @@ -1,32 +0,0 @@ - Subroutine opensusyfile(filnam,iunit) - character*(*) filnam -c integer status - integer iunit -c----------------------------------------------------------------------- -c open the SUSY file -c----------------------------------------------------------------------- - write(*,*) ' ' - write (*,6660) - 6660 format (' SUSY filename is ') - write (*,*) filnam - write (*,6664) iunit - 6664 format (' and unit number is ',i6) -C - open(unit=iunit,file=filnam,status='old',err=101) - goto 102 -c----------------------------------------------------------------------- -c error: can't open SUSY file -c----------------------------------------------------------------------- - 101 continue - write(*,*) ' ' - write(*,*) ' ********************************************* ' - write(*,*) ' ' - write(*,*) - $ ' Error in opening SUSY file for READING' - write(*,*) - $ ' Program will abort.' - write(*,*) ' ' - write(*,*) ' ********************************************* ' - write(*,*) ' ' - 102 continue - end diff --git a/Generators/PythiaExo_i/src/parout.F b/Generators/PythiaExo_i/src/parout.F deleted file mode 100644 index 9bf294bbf0f21677788b518f30ad763155d5f405..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/parout.F +++ /dev/null @@ -1,37 +0,0 @@ - SUBROUTINE PAROUT(IMODE) - -C______________________________________________________________________________ -C AUTHOR LMijovic -C helper subroutine for redirecting part of Pythia output to a separate file -C______________________________________________________________________________ - - LOGICAL ISFILE - INTEGER IFOUT1, IFOUT2 - -C if the values are changed also change the MSTU(11) setting below -C file for pythia parameter values after initialization - IFOUT1=7 -C file for pythia parameter values after event generation - IFOUT2=8 - - IF (IMODE .EQ. 1) THEN - CALL PYGIVE("MSTU(11)=7") - INQUIRE(FILE='par_after_init.out',EXIST=ISFILE) - IF (ISFILE .EQV. .TRUE.) THEN - OPEN(IFOUT1,FILE='after_init.out',STATUS='OLD',ERR=3001) - ELSE - OPEN(IFOUT1,FILE='after_init.out',STATUS='NEW',ERR=3001) - ENDIF - ELSE IF (IMODE .EQ. 2) THEN - CALL PYGIVE("MSTU(11)=8") - OPEN(IFOUT2,FILE='after_gen.out',STATUS='NEW',ERR=3001) - ELSE IF (IMODE .EQ. 3) THEN - CALL PYGIVE("MSTU(11)=8") - OPEN(IFOUT2,FILE='after_gen.out',STATUS='OLD',ERR=3001) - ENDIF - - RETURN - - 3001 WRITE (*,*) 'could not open file for writing' - - END diff --git a/Generators/PythiaExo_i/src/pyr.F b/Generators/PythiaExo_i/src/pyr.F deleted file mode 100644 index 382e63207c6ace0ecbc4e14d05e23c14de46c598..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/pyr.F +++ /dev/null @@ -1,7 +0,0 @@ - FUNCTION PYR(IDUMMY) - DOUBLE PRECISION PYR, ATL_PYR - INTEGER IDUMMY - 100 PYR=ATL_PYR(IDUMMY) - IF(PYR.LE.0D0.OR.PYR.GE.1D0) GOTO 100 - RETURN - END diff --git a/Generators/PythiaExo_i/src/setPythiaTuneResMod.cxx b/Generators/PythiaExo_i/src/setPythiaTuneResMod.cxx deleted file mode 100644 index 2de10311dce47f61d501719c277c97a6731f0a7f..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/setPythiaTuneResMod.cxx +++ /dev/null @@ -1,170 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#include "PythiaExo_i/PythiaResMod.h" - -//LM remove these -/*#include <cstdlib> -#include <string> -#include <vector> -#include <iostream> -#include <math.h> -#include <sstream>*/ - -/* - ________________________________________________________________________________________________________________________ - -carbon-copy of Pythia_i impl. for ResMod - ________________________________________________________________________________________________________________________ - */ - -StatusCode PythiaResMod::setPythiaTune() -{ - // count # of function calls for one initialization step (inf. loop protection) - m_atlasTune_loop_prot++; - - //protect against looping; setPythiaTune calls atlasTune so in principle an infinite loop can occur (in case of core code blunder) - if (m_atlasTune_loop_prot>100) - { - ATH_MSG_FATAL( "Got more than 100 calls of setPythiaTune() -> code errors, exit."); - return StatusCode::FAILURE; - } - - StatusCode sc; - // MsgStream log(messageService(), name()); - - //always set printout details - this->m_initlistlevel=12; - this->m_eventlistlevel=1; - this->m_pystatlistlevel.clear(); - this->m_pystatlistlevel.push_back(1); - this->m_pystatlistlevel.push_back(3); - this->m_pystatlistlevel.push_back(4); - this->m_pystatlistlevel.push_back(5); - this->m_firstlistevent=1; - this->m_lastlistevent=5; - - // in case of consistent old syntax : handle it, else pring warnings and use ATLAS defaults - if (m_useAtlasPythiaRecomm != m_Default_useAtlasPythiaRecomm || m_useAtlasPythiaCommon != m_Default_useAtlasPythiaCommon || m_useAtlasPythiaTune09 != m_Default_useAtlasPythiaTune09 || m_useAtlasPythiaTune08 != m_Default_useAtlasPythiaTune08 || m_useNoAtlasPythiaParam != m_Default_useNoAtlasPythiaParam) - { - //be backward compatible if the tune has not been set using the new syntax: - if (m_Tune_Name==m_Starting_Tune_Name) - { - { - if (m_useNoAtlasPythiaParam) - { - // using no ATLAS defaults - m_Tune_Index=0; - } - // set m_Tune_Index acc. to the switch, overrides taken into acc. - if (m_useAtlasPythiaCommon==false) m_Tune_Index=-1; - if (m_useAtlasPythiaRecomm==false) m_Tune_Index=0; - if (m_useAtlasPythiaTune08) m_Tune_Index=m_mc08_Tune_Index; - if (m_useAtlasPythiaTune09) m_Tune_Index=m_mc09_Tune_Index; - } - // atlasTune is Pythia cmember, so knows about m_Tune_Index - sc=atlasTune(); - if ( sc.isFailure() ) - { - ATH_MSG_FATAL( "ERROR returned from atlasTune, exit." ); - return StatusCode::FAILURE; - } - else - { - //setPythiaTune done, return - return StatusCode::SUCCESS; - } - } - //print warnings for the mix of the old and new syntax: - else - { - //mix of the old and new syntax - ATH_MSG_WARNING( "Joboptions contain both new-style tune setting Pythia.Tune_Name=\"TUNETYPE_TUNEINDEX\" as well as setting of the old-style switches:" ); - ATH_MSG_WARNING( "useAtlasPythiaRecomm,useAtlasPythiaCommon,useAtlasPythiaTune09,useAtlasPythiaTune08 or useNoAtlasPythiaParam" ); - ATH_MSG_WARNING( "Please fix the jo so that only one tune-setting style is used." ); - ATH_MSG_WARNING( "The old switches are deprecated, the new tune-setting style is preffered." ); - ATH_MSG_WARNING( "For this run the tune settings are ignored and ATLAS default tune settings will be used:"); - m_Tune_Type=m_Default_Tune_Type; m_Tune_Index=m_Default_Tune_Index; - ATH_MSG_WARNING( m_Tune_Type <<" , "<< m_Tune_Index ); - } - }// end of old switches backward compatibility support - - if (m_Tune_Type=="ATLAS") - { - sc=atlasTune(); - if ( sc.isFailure() ) - { - ATH_MSG_FATAL( "ERROR returned from atlasTune, exit." ); - return StatusCode::FAILURE; - } - else - { - //setPythiaTune done, return - return StatusCode::SUCCESS; - } - } - // call PYTUNE in the original PYTUNE(MSTP(5)) form; - // as for Pythia 6.4.21 numbers 1xx - 4xx are in use - // error checking is as handeled by Pythia in particular too large tune nbr. returns - // (PYTUNE:) Tune number > max. Using defaults. - else if (m_Tune_Type=="PYTUNE") - { - //setPythiaTune done, return - this->pypars().mstp(5)=m_Tune_Index; - //set what is necessary for correct use of Pythia within Athena: - //----------------------------------------------------------------------------- - this->pypars().mstp(128) =1; // fix junk output for documentary particles - this->pydat1().mstu(21) =1; // error handling switch - this->pydat1().mstj(22)=2; // (Make K_S, Lambda stable) - //----------------------------------------------------------------------------- - ATH_MSG_INFO( "setPythiaTune: using Pythia internal tune via PYTUNE(" << m_Tune_Index <<") call."); - ATH_MSG_INFO( "setting parameters needed for desired functioning of Pythia within Athena "); - ATH_MSG_INFO( " mstp(128) =1; fix junk output for documentary particles "); - ATH_MSG_INFO( " mstu(21) =1; error handling switch "); - ATH_MSG_INFO( " mstj(22) =2; (Make K_S, Lambda stable) "); - ATH_MSG_INFO( " Please note: "); - ATH_MSG_INFO( " 1. in the jO overrides of the parameters set by PYTUNE # "<< m_Tune_Index <<" will have no effect " ); - ATH_MSG_INFO( " - this correspods to (standalone) Pythia behavior " ); - ATH_MSG_INFO( " 2. handling of non-existing PYTUNE tune is same as for (default) Pythia standalone." ); - //setPythiaTune done, return - return StatusCode::SUCCESS; - } - //----------------------------------------------------------------------------------------- - else - { - //undefined tune Type (setPythiaTune()) or Index (atlasTune() points here) for Type != PYTUNE - //PythiaExo_i reaction : run with current ATLAS default tune && print WARNINGs: - ATH_MSG_WARNING("setPythiaTune: got invalid Tune_Name : "<< m_Tune_Name ); - ATH_MSG_WARNING("Pythia will run with current ATLAS default tune : "<<m_Default_Tune_Name ); - //string parsing for m_Default_Tune_Name - std::string::size_type sep_index_def = m_Default_Tune_Name.find_first_of('_'); - if (sep_index_def != std::string::npos) - { - m_Tune_Type=m_Default_Tune_Name.substr(0,sep_index_def); - m_Tune_Index=atoi((m_Default_Tune_Name.substr(sep_index_def+1,m_Default_Tune_Name.length()-1)).c_str()); - } - else - { - // this should never happen - ATH_MSG_FATAL ( "setPythiaTune : got invalid m_Default_Tune_Name, PythiaExo_i code needs to be updated." ); - return StatusCode::FAILURE; - } - //call ATLAS tune - sc=atlasTune(); - if ( sc.isFailure() ) - { - ATH_MSG_FATAL ("ERROR returned from atlasTune, exit." ); - return StatusCode::FAILURE; - } - else - { - //setPythiaTune done, return - return StatusCode::SUCCESS; - } - } - //----------------------------------------------------------------------------------------- - // should meet a return condition before this - // ATH_MSG_WARNING ("setPythiaTune: No action by setPythiaTune, exit."); - // return StatusCode::SUCCESS; -}//end of setPythiaTune definition diff --git a/Generators/PythiaExo_i/src/setPythiaTuneTopMdiff.cxx b/Generators/PythiaExo_i/src/setPythiaTuneTopMdiff.cxx deleted file mode 100644 index 5b816151ecd9954b4ce36a9241497b27a17b8cc3..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/setPythiaTuneTopMdiff.cxx +++ /dev/null @@ -1,170 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#include "PythiaExo_i/PythiaTopMdiff.h" - -//LM remove these -/*#include <cstdlib> -#include <string> -#include <vector> -#include <iostream> -#include <math.h> -#include <sstream>*/ - -/* - ________________________________________________________________________________________________________________________ - -carbon-copy of Pythia_i impl. for TopMdiff - ________________________________________________________________________________________________________________________ - */ - -StatusCode PythiaTopMdiff::setPythiaTune() -{ - // count # of function calls for one initialization step (inf. loop protection) - m_atlasTune_loop_prot++; - - //protect against looping; setPythiaTune calls atlasTune so in principle an infinite loop can occur (in case of core code blunder) - if (m_atlasTune_loop_prot>100) - { - ATH_MSG_FATAL( "Got more than 100 calls of setPythiaTune() -> code errors, exit."); - return StatusCode::FAILURE; - } - - StatusCode sc; - // MsgStream log(messageService(), name()); - - //always set printout details - this->m_initlistlevel=12; - this->m_eventlistlevel=1; - this->m_pystatlistlevel.clear(); - this->m_pystatlistlevel.push_back(1); - this->m_pystatlistlevel.push_back(3); - this->m_pystatlistlevel.push_back(4); - this->m_pystatlistlevel.push_back(5); - this->m_firstlistevent=1; - this->m_lastlistevent=5; - - // in case of consistent old syntax : handle it, else pring warnings and use ATLAS defaults - if (m_useAtlasPythiaRecomm != m_Default_useAtlasPythiaRecomm || m_useAtlasPythiaCommon != m_Default_useAtlasPythiaCommon || m_useAtlasPythiaTune09 != m_Default_useAtlasPythiaTune09 || m_useAtlasPythiaTune08 != m_Default_useAtlasPythiaTune08 || m_useNoAtlasPythiaParam != m_Default_useNoAtlasPythiaParam) - { - //be backward compatible if the tune has not been set using the new syntax: - if (m_Tune_Name==m_Starting_Tune_Name) - { - { - if (m_useNoAtlasPythiaParam) - { - // using no ATLAS defaults - m_Tune_Index=0; - } - // set m_Tune_Index acc. to the switch, overrides taken into acc. - if (m_useAtlasPythiaCommon==false) m_Tune_Index=-1; - if (m_useAtlasPythiaRecomm==false) m_Tune_Index=0; - if (m_useAtlasPythiaTune08) m_Tune_Index=m_mc08_Tune_Index; - if (m_useAtlasPythiaTune09) m_Tune_Index=m_mc09_Tune_Index; - } - // atlasTune is Pythia cmember, so knows about m_Tune_Index - sc=atlasTune(); - if ( sc.isFailure() ) - { - ATH_MSG_FATAL( "ERROR returned from atlasTune, exit." ); - return StatusCode::FAILURE; - } - else - { - //setPythiaTune done, return - return StatusCode::SUCCESS; - } - } - //print warnings for the mix of the old and new syntax: - else - { - //mix of the old and new syntax - ATH_MSG_WARNING( "Joboptions contain both new-style tune setting Pythia.Tune_Name=\"TUNETYPE_TUNEINDEX\" as well as setting of the old-style switches:" ); - ATH_MSG_WARNING( "useAtlasPythiaRecomm,useAtlasPythiaCommon,useAtlasPythiaTune09,useAtlasPythiaTune08 or useNoAtlasPythiaParam" ); - ATH_MSG_WARNING( "Please fix the jo so that only one tune-setting style is used." ); - ATH_MSG_WARNING( "The old switches are deprecated, the new tune-setting style is preffered." ); - ATH_MSG_WARNING( "For this run the tune settings are ignored and ATLAS default tune settings will be used:"); - m_Tune_Type=m_Default_Tune_Type; m_Tune_Index=m_Default_Tune_Index; - ATH_MSG_WARNING( m_Tune_Type <<" , "<< m_Tune_Index ); - } - }// end of old switches backward compatibility support - - if (m_Tune_Type=="ATLAS") - { - sc=atlasTune(); - if ( sc.isFailure() ) - { - ATH_MSG_FATAL( "ERROR returned from atlasTune, exit." ); - return StatusCode::FAILURE; - } - else - { - //setPythiaTune done, return - return StatusCode::SUCCESS; - } - } - // call PYTUNE in the original PYTUNE(MSTP(5)) form; - // as for Pythia 6.4.21 numbers 1xx - 4xx are in use - // error checking is as handeled by Pythia in particular too large tune nbr. returns - // (PYTUNE:) Tune number > max. Using defaults. - else if (m_Tune_Type=="PYTUNE") - { - //setPythiaTune done, return - this->pypars().mstp(5)=m_Tune_Index; - //set what is necessary for correct use of Pythia within Athena: - //----------------------------------------------------------------------------- - this->pypars().mstp(128) =1; // fix junk output for documentary particles - this->pydat1().mstu(21) =1; // error handling switch - this->pydat1().mstj(22)=2; // (Make K_S, Lambda stable) - //----------------------------------------------------------------------------- - ATH_MSG_INFO( "setPythiaTune: using Pythia internal tune via PYTUNE(" << m_Tune_Index <<") call."); - ATH_MSG_INFO( "setting parameters needed for desired functioning of Pythia within Athena "); - ATH_MSG_INFO( " mstp(128) =1; fix junk output for documentary particles "); - ATH_MSG_INFO( " mstu(21) =1; error handling switch "); - ATH_MSG_INFO( " mstj(22) =2; (Make K_S, Lambda stable) "); - ATH_MSG_INFO( " Please note: "); - ATH_MSG_INFO( " 1. in the jO overrides of the parameters set by PYTUNE # "<< m_Tune_Index <<" will have no effect " ); - ATH_MSG_INFO( " - this correspods to (standalone) Pythia behavior " ); - ATH_MSG_INFO( " 2. handling of non-existing PYTUNE tune is same as for (default) Pythia standalone." ); - //setPythiaTune done, return - return StatusCode::SUCCESS; - } - //----------------------------------------------------------------------------------------- - else - { - //undefined tune Type (setPythiaTune()) or Index (atlasTune() points here) for Type != PYTUNE - //PythiaExo_i reaction : run with current ATLAS default tune && print WARNINGs: - ATH_MSG_WARNING("setPythiaTune: got invalid Tune_Name : "<< m_Tune_Name ); - ATH_MSG_WARNING("Pythia will run with current ATLAS default tune : "<<m_Default_Tune_Name ); - //string parsing for m_Default_Tune_Name - std::string::size_type sep_index_def = m_Default_Tune_Name.find_first_of('_'); - if (sep_index_def != std::string::npos) - { - m_Tune_Type=m_Default_Tune_Name.substr(0,sep_index_def); - m_Tune_Index=atoi((m_Default_Tune_Name.substr(sep_index_def+1,m_Default_Tune_Name.length()-1)).c_str()); - } - else - { - // this should never happen - ATH_MSG_FATAL ( "setPythiaTune : got invalid m_Default_Tune_Name, PythiaExo_i code needs to be updated." ); - return StatusCode::FAILURE; - } - //call ATLAS tune - sc=atlasTune(); - if ( sc.isFailure() ) - { - ATH_MSG_FATAL ("ERROR returned from atlasTune, exit." ); - return StatusCode::FAILURE; - } - else - { - //setPythiaTune done, return - return StatusCode::SUCCESS; - } - } - //----------------------------------------------------------------------------------------- - // should meet a return condition before this - // ATH_MSG_WARNING ("setPythiaTune: No action by setPythiaTune, exit."); - // return StatusCode::SUCCESS; -}//end of setPythiaTune definition diff --git a/Generators/PythiaExo_i/src/setecm.F b/Generators/PythiaExo_i/src/setecm.F deleted file mode 100644 index 8cfae5f420d65c1aec9b8d1fbfb88c19d73da53c..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/setecm.F +++ /dev/null @@ -1,11 +0,0 @@ - SUBROUTINE SETECM(WINMATCHIG) -c -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) -#include "GeneratorFortranCommon/heprup.inc" - EBMUP(1)=0.5*WINMATCHIG - EBMUP(2)=0.5*WINMATCHIG - - RETURN - END diff --git a/Generators/PythiaExo_i/src/special_exo.F b/Generators/PythiaExo_i/src/special_exo.F deleted file mode 100644 index 65ccad2f5dbce8c5d7e61daad210c117cfa444d3..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/special_exo.F +++ /dev/null @@ -1,46 +0,0 @@ -C____________________________________________________________________________________________________________________________ -C AUTHOR LMijovic -C (place-holder for) subroutine(s) for invoking/screaning special options for processes resisting in Pythia_Exo package; -C idea: the modification some process introduces should not necessarily be picked by each process residing in the package -C the special subroutines can be used in order to enable picking the modifications a-la-carte, from jO. -C____________________________________________________________________________________________________________________________ - -C---------------------------------------------------------------------------------------------------------------------------- -C IMODE 1: -C In Pysgex.F: -C - for W',Z',qq/gg -> G* [ISUB 141,142,391,392]: -C -- take out Breit-Wigner dependence + -C -- suppress low mass events from parton luminosities -C -- Pysgex.F modif. introduced by Oliver Stelzer-Chilton & Daniel Hayden, Exotics group -C---------------------------------------------------------------------------------------------------------------------------- -C IMODE 2: -C In pyofsh.F and pyscat.F: -C - for qqbar (gg) -> QQbar [ISUB 81 (82)]: -C -- pyofsh.F : ISUB 81,82: set top partner to 3000006, spectrum to be filled via SLHA -C -- pyscat.F : account for qqbar (gg) -> QQbar vs qqbar (gg) -> QbarQ -C -- modif. adopted from PythiaTop_i by Vikash Chavda, top group -C---------------------------------------------------------------------------------------------------------------------------- - SUBROUTINE SPECIX(IMODE) - - IMPLICIT INTEGER(I-N) - - COMMON/SPSGEX/ISSP - COMMON/SPTMDF/ISTMDF - SAVE /SPSGEX/,/SPTMDF/ - - IF (IMODE .EQ. 1) THEN - ISSP=1 - ELSE - ISSP=0 - ENDIF - - IF (IMODE .EQ. 2) THEN - ISTMDF=1 - ELSE - ISTMDF=0 - ENDIF - - RETURN - - END -C----------------------------------------------------------------------------------------------------------------------------- diff --git a/Generators/PythiaExo_i/src/upevnt_py.F b/Generators/PythiaExo_i/src/upevnt_py.F deleted file mode 100644 index 78b19510d9eb13287511c0875be3004d3ef74a7a..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/upevnt_py.F +++ /dev/null @@ -1,29 +0,0 @@ - SUBROUTINE UPEVNT -c routine for Les Houches interface to external pythia routines -c adapted from base pythia code. -c Ian Hinchliffe (May 2002) -c -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - -#include "GeneratorFortranCommon/hepeup.inc" -#include "GeneratorFortranCommon/lesatlas.inc" -#include "GeneratorFortranCommon/genames.inc" - IF(ATLASCHOICE.EQ.COMPHEP) CALL USECOMPHEP - IF(ATLASCHOICE.EQ.USER) CALL USEUSER - IF(ATLASCHOICE.EQ.ACERMC) THEN - CALL USEACERMC - CALL ACERMC_ACSET12_PY(0) - ENDIF - IF(ATLASCHOICE.EQ.ALPGEN) CALL USEALPGEN - IF(ATLASCHOICE.EQ.MADGRAPH) CALL USEMADGRAPH - IF(ATLASCHOICE.EQ.MADCUP) CALL USEMADCUP -c IF(ATLASCHOICE.EQ.LHAEXT) CALL USELHAEXT - IF(ATLASCHOICE.EQ.MATCHIG) CALL USEMATCHIG - IF(ATLASCHOICE.EQ.HVGEN) CALL USEHVGEN - IF(ATLASCHOICE.EQ.LHEF) CALL USELHEF - IF(ATLASCHOICE.EQ.EXOGRAVITON) CALL USEGRAV - IF(ATLASCHOICE.EQ.GRAVADD) CALL USEGRAVADD - RETURN - END diff --git a/Generators/PythiaExo_i/src/upinit_py.F b/Generators/PythiaExo_i/src/upinit_py.F deleted file mode 100644 index 50bcdcc8ef333d5d95ac0a9552031cd26a9571c4..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/upinit_py.F +++ /dev/null @@ -1,34 +0,0 @@ - SUBROUTINE UPINIT -c interface to external pythia processes using Les Houches accord -c Adapted for pythia 6.203 -c Ian Hinchliffe (may 2002) -c -c #include "GeneratorFortranCommon/GeneratorName.h" - -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - -#include "GeneratorFortranCommon/heprup.inc" -#include "GeneratorFortranCommon/lesatlas.inc" -#include "GeneratorFortranCommon/genames.inc" - - - - IF(ATLASCHOICE.EQ.COMPHEP) CALL INITCOMPHEP - IF(ATLASCHOICE.EQ.USER) CALL INITUSER - IF(ATLASCHOICE.EQ.ACERMC) THEN - CALL INITACERMC - CALL ACERMC_ACSET12_PY(-1) - ENDIF - IF(ATLASCHOICE.EQ.ALPGEN) CALL INITALPGEN - IF(ATLASCHOICE.EQ.MADGRAPH) CALL INITMADGRAPH - IF(ATLASCHOICE.EQ.MADCUP) CALL INITMADCUP -c IF(ATLASCHOICE.EQ.LHAEXT) CALL INITLHAEXT - IF(ATLASCHOICE.EQ.MATCHIG) CALL INITMATCHIG - IF(ATLASCHOICE.EQ.HVGEN) CALL INITHVGEN - IF(ATLASCHOICE.EQ.LHEF) CALL INITLHEF - IF(ATLASCHOICE.EQ.EXOGRAVITON) CALL INITGRAV - IF(ATLASCHOICE.EQ.GRAVADD) CALL INITGRAVADD - RETURN - END diff --git a/Generators/PythiaExo_i/src/upveto.F b/Generators/PythiaExo_i/src/upveto.F deleted file mode 100644 index 22563542f03ada356185845332ea16c4b744a395..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/upveto.F +++ /dev/null @@ -1,46 +0,0 @@ - -C********************************************************************* - -C...UPVETO -C...Dummy routine, to be replaced by user, to veto event generation -C...on the parton level, after parton showers but before multiple -C...interactions, beam remnants and hadronization is added. -C...If resonances like W, Z, top, Higgs and SUSY particles are handed -C...undecayed from UPEVNT, or are generated by PYTHIA, they will also -C...be undecayed at this stage; if decayed their decay products will -C...have been allowed to shower. - -C...All partons at the end of the shower phase are stored in the -C...HEPEVT commonblock. The interesting information is -C...NHEP = the number of such partons, in entries 1 <= i <= NHEP, -C...IDHEP(I) = the particle ID code according to PDG conventions, -C...PHEP(J,I) = the (p_x, p_y, p_z, E, m) of the particle. -C...All ISTHEP entries are 1, while the rest is zeroed. - -C...The user decision is to be conveyed by the IVETO value. -C...IVETO = 0 : retain current event and generate in full; -C... = 1 : abort generation of current event and move to next. - - SUBROUTINE UPVETO(IVETO) - -C...HEPEVT -C INCLUDE 'hepevt.inc' - -C...Next few lines allow you to see what info PYVETO extracted from -C...the full event record for the first two events. -C...Delete if you don't want it. - INTEGER NLIST/0/ - SAVE NLIST - IF(NLIST.LE.2) THEN - WRITE(*,*) ' Full event record at time of UPVETO call:' - CALL PYLIST(1) - WRITE(*,*) ' Part of event record made available to UPVETO:' - CALL PYLIST(5) - NLIST=NLIST+1 - ENDIF - -C...Make decision here. - IVETO = 0 - - RETURN - END diff --git a/Generators/PythiaExo_i/src/upveto_py.F b/Generators/PythiaExo_i/src/upveto_py.F deleted file mode 100644 index 110411b4d4577db9044dd38aada5961e7a8659af..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/upveto_py.F +++ /dev/null @@ -1,15 +0,0 @@ - SUBROUTINE UPVETO(IPVETO) -c interface to external pythia processes using Les Houches accord -c -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - -#include "GeneratorFortranCommon/lesatlas.inc" -#include "GeneratorFortranCommon/genames.inc" - - IF(ATLASCHOICE.EQ.ALPGEN) CALL VETOALPGEN(IPVETO) - IF(ATLASCHOICE.EQ.MADGRAPH) CALL VETOMADGRAPH(IPVETO) - - RETURN - END diff --git a/Generators/PythiaExo_i/src/visaje.F b/Generators/PythiaExo_i/src/visaje.F deleted file mode 100644 index 0bc7a3e4049262111072c4729a845b17631b8407..0000000000000000000000000000000000000000 --- a/Generators/PythiaExo_i/src/visaje.F +++ /dev/null @@ -1,29 +0,0 @@ - -C********************************************************************* - -C...VISAJE -C...Dummy function, to be removed when ISAJET (ISASUSY) is to be linked. - - FUNCTION VISAJE() - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - CHARACTER*40 VISAJE - -C...Commonblocks. - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - SAVE /PYDAT1/ - -C...Assign default value. - VISAJE='Undefined' - -C...Stop program if this routine is ever called. - WRITE(MSTU(11),5000) - IF(PYR(0).LT.10D0) STOP - -C...Format for error printout. - 5000 FORMAT(1X,'Error: you did not link ISAJET correctly.'/ - &1X,'Dummy function VISAJE in PYTHIA file called instead.'/ - &1X,'Execution stopped!') - - RETURN - END diff --git a/Generators/PythiaRhad_i/CMakeLists.txt b/Generators/PythiaRhad_i/CMakeLists.txt deleted file mode 100644 index 18cbb431efa279f842e715e6725e51eb07d3b0fa..0000000000000000000000000000000000000000 --- a/Generators/PythiaRhad_i/CMakeLists.txt +++ /dev/null @@ -1,47 +0,0 @@ -################################################################################ -# Package: PythiaRhad_i -################################################################################ - -# Declare the package name: -atlas_subdir( PythiaRhad_i ) - -# Declare the package's dependencies: -atlas_depends_on_subdirs( - PUBLIC - Generators/GeneratorModules - Generators/Pythia_i - Generators/Tauola_i - PRIVATE - GaudiKernel - Control/AthenaKernel - Generators/GeneratorUtils - Generators/TruthUtils - Generators/CompHep_i ) - -# External dependencies: -find_package( CLHEP ) -find_package( HepMC COMPONENTS HepMC HepMCfio ) - -# Remove the --as-needed linker flags: -atlas_disable_as_needed() - -# Component(s) in the package: -atlas_add_library( PythiaRhad_iLib - PythiaRhad_i/*.h - src/PythiaRhad.cxx - src/PythiaRhadModified/pyrhad.F - src/PythiaRhadModified/pysthad.F - src/PythiaRhadModified/pyprep.F - PUBLIC_HEADERS PythiaRhad_i - PRIVATE_INCLUDE_DIRS ${CLHEP_INCLUDE_DIRS} ${HEPMC_INCLUDE_DIRS} - PRIVATE_DEFINITIONS ${CLHEP_DEFINITIONS} - LINK_LIBRARIES GeneratorModulesLib Pythia_iLib Tauola_iLib - PRIVATE_LINK_LIBRARIES ${CLHEP_LIBRARIES} ${HEPMC_LIBRARIES} AthenaKernel - TruthUtils CompHep_i ) - -atlas_add_component( PythiaRhad_i - src/components/*.cxx - LINK_LIBRARIES GaudiKernel PythiaRhad_iLib ) - -# Install files from the package: -atlas_install_joboptions( share/*.py ) diff --git a/Generators/PythiaRhad_i/PythiaRhad_i/PythiaRhad.h b/Generators/PythiaRhad_i/PythiaRhad_i/PythiaRhad.h deleted file mode 100644 index 3a8644f1b77be3d9613a6e5560982c97f365a7e6..0000000000000000000000000000000000000000 --- a/Generators/PythiaRhad_i/PythiaRhad_i/PythiaRhad.h +++ /dev/null @@ -1,94 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef GENERATORMODULESPYTHIARHAD_H -#define GENERATORMODULESPYTHIARHAD_H - -#include "Pythia_i/Pythia.h" - -#include "GeneratorModules/GenModule.h" -#include "Tauola_i/Atlas_HEPEVT.h" - -/// @todo Move into class: currently this is GLOBAL -using std::string; -typedef std::vector<std::string> PygiveCommandVector; -typedef std::vector<std::string> CommandVector; - -class IAtRndmGenSvc; - -/** -@brief This code is used to get a PYTHIA Monte Carlo event. - - genInitialize() is used to read parameters - - callGenerator() makes the event - - genFinalize() writes log files etc - - fillEvt(GeneratorEvent* evt) passes the event to HepMC - - The output will be stored in the transient event store so it can be - passed to the simulation. - -@author - - Ian Hinchliffe June 2000 - - Modelled after the CDF code by Stan Thompson - - Added access to pyint2 common Feb 2001 - - Added access to pyint5 common Feb 2002 - - Added access to lesatlas common (not part of pythia but needed for external process May 2002 - - Added access to pyint1 common Sept 2002 - - Ewelina Lobodzinska (Jan. 2008) doxygen doc added - - Spited from Pythia_i Jan Kotanski July 2011 -*/ -class PythiaRhad : public Pythia { -public: - - PythiaRhad(const std::string& name, ISvcLocator* pSvcLocator); - virtual ~PythiaRhad(); - - virtual StatusCode genuserInitialize(); - virtual StatusCode callGenerator(); - virtual StatusCode genFinalize(); - virtual StatusCode fillEvt(HepMC::GenEvent* evt); - - - protected: - - private: - - bool m_run_gluino_hadrons; - bool m_intermediate; - bool m_regge; - bool m_run_stop_hadrons; - bool m_run_sbottom_hadrons; - double m_gluino_ball_prob; - bool m_enable_after_initialize; - - /// @name For StoppedGluino simulation ... - - double m_xshift, m_yshift, m_zshift, m_tshift, m_randomtshift; - bool m_translate_rh_to_stopping_position; - bool m_rotate_rh; - bool m_boost_rh_to_rest_frame; - bool m_strip_out_rh; - bool m_rh_decay; - std::vector<std::vector<double> > m_StoppingInput; - int m_doubleid; - std::vector<int> m_rhs; - - void strip_out_rh(HepMC::GenEvent* evt); - - -}; - - -#endif diff --git a/Generators/PythiaRhad_i/share/StoppingInput.py b/Generators/PythiaRhad_i/share/StoppingInput.py deleted file mode 100644 index a3023f05d990d2738b2fcba73b3efbc03aae732a..0000000000000000000000000000000000000000 --- a/Generators/PythiaRhad_i/share/StoppingInput.py +++ /dev/null @@ -1,9 +0,0 @@ -job.PythiaRhad.StoppingInput += [ [ -2292.779785, -2682.864746, -3711.787109, 170.720840, 1, 2 ] ] -job.PythiaRhad.StoppingInput += [ [ -599.719421, -3709.597656, -4996.067871, 69.257782, 1, 1 ] ] -#PythiaRhad double start -job.PythiaRhad.StoppingInput += [ [ 1135.116699, -2076.569824, 1378.408936, 52.574215, 2, 1 ] ] -job.PythiaRhad.StoppingInput += [ [ 2896.779053, -2266.489746, -2798.317383, 89.985825, 2, 2 ] ] -#PythiaRhad double end -job.PythiaRhad.StoppingInput += [ [ -1088.974243, 1575.663574, -1637.097290, 43.363873, 1, 2 ] ] -job.PythiaRhad.StoppingInput += [ [ -272.143494, -1989.595947, -1716.095093, 63.508831, 1, 1 ] ] -job.PythiaRhad.StoppingInput += [ [ -4938.753906, -1905.402588, -2908.289062, 105.472198, 1, 1 ] ] diff --git a/Generators/PythiaRhad_i/share/jobOptions.pythiaRhad.StoppedGluino.py b/Generators/PythiaRhad_i/share/jobOptions.pythiaRhad.StoppedGluino.py deleted file mode 100644 index ee172b6cdb0acbf0cfd7e8d384a078238eb5d76c..0000000000000000000000000000000000000000 --- a/Generators/PythiaRhad_i/share/jobOptions.pythiaRhad.StoppedGluino.py +++ /dev/null @@ -1,104 +0,0 @@ -from AthenaCommon.AppMgr import ServiceMgr -ServiceMgr.MessageSvc.OutputLevel = INFO - -#in Simulation/G4Extensions/RHadrons/share/ -MASS=1000 #100,300,600,1000,1300,1600,2000 -CASE='gluino' -DECAY=True -TIMESHIFT=0 #ns - -# Number of events to be processed (default is 10) -theApp.EvtMax = 10 - -import os -import sys -import random -#from datetime import datetime - -os.system('get_files -data PDGTABLE_'+CASE+'_'+str(MASS)+'GeV.MeV') -os.system('mv PDGTABLE_'+CASE+'_'+str(MASS)+'GeV.MeV PDGTABLE.MeV') - -random.seed() -R1=random.randint(0,100000000) -R2=random.randint(0,100000000) -R3=random.randint(0,100000000) -R4=random.randint(0,100000000) -PYTHR = "PYTHIA "+str(R1)+" "+str(R2) -PYTHRI = "PYTHIA_INIT "+str(R3)+" "+str(R4) - -from AthenaServices.AthenaServicesConf import AtRndmGenSvc -ServiceMgr += AtRndmGenSvc() -#ServiceMgr.AtRndmGenSvc.Seeds = ["PYTHIA 4789899 989240512","PYTHIA_INIT 820021 2347532"] -ServiceMgr.AtRndmGenSvc.Seeds = [ PYTHR, PYTHRI ] -print ServiceMgr.AtRndmGenSvc.Seeds - -from AthenaCommon.AlgSequence import AlgSequence -job=AlgSequence() -from PythiaRhad_i.PythiaRhad_iConf import PythiaRhad -job +=PythiaRhad() -job.PythiaRhad.PythiaCommand = ["pysubs msel 13","pysubs ckin 3 18.","pypars mstp 43 2"] -job.PythiaRhad.PythiaCommand += ["pypars mstp 51 19070", "pypars mstp 52 2", - "pypars mstp 53 19070", "pypars mstp 54 2", - "pypars mstp 55 19070", "pypars mstp 56 2", - "pypars mstp 81 1", "pydat1 mstj 11 4"] - -# R-hadron commands: -if (CASE=='gluino' and DECAY==False): - job.PythiaRhad.RunGluinoHadrons=True - job.PythiaRhad.RunStopHadrons=False - job.PythiaRhad.PythiaCommand += ["pymssm imss 1 1", "pymssm imss 3 1", "pymssm imss 5 1", - "pymssm rmss 3 "+str(MASS)+".0", "pymssm rmss 1 300.0", #gluino and neutralino masses - "pymssm rmss 2 3000.0", "pymssm rmss 4 10000.0", - "pymssm rmss 7 4000.0", "pymssm rmss 8 4000.0", - "pymssm rmss 9 4000.0", "pymssm rmss 10 4000.0", - "pymssm rmss 11 4000.0", "pymssm rmss 12 5000.0", - "pysubs msel 0", "pysubs msub 243 1", "pysubs msub 244 1", "pypars mstp 111 0", - "pyinit pylistf 3", "pyinit dumpr 0 100" ,"pystat 2" - ] - job.PythiaRhad.strip_out_rh=True -elif (CASE=='gluino' and DECAY==True): - job.PythiaRhad.RunGluinoHadrons=True - job.PythiaRhad.RunStopHadrons=False - job.PythiaRhad.xshift=0 #mm - job.PythiaRhad.yshift=2500 #mm - job.PythiaRhad.zshift=1000 #mm - job.PythiaRhad.tshift=TIMESHIFT #ns - job.PythiaRhad.randomtshift=50 # +-X ns, overrides tshift if non-zero - job.PythiaRhad.rh_decay=True - job.PythiaRhad.strip_out_rh=True - job.PythiaRhad.boost_rh_to_rest_frame=True - job.PythiaRhad.rotate_rh=True - job.PythiaRhad.translate_rh_to_stopping_position=True - job.PythiaRhad.StoppingInput = [ [ 0,0,0,0,0,0 ] ] - include("StoppingInput.py") - theApp.EvtMax = len(job.PythiaRhad.StoppingInput)-1 - job.PythiaRhad.PythiaCommand += ["pymssm imss 1 1", "pymssm imss 3 1", "pymssm imss 5 1", - "pymssm rmss 3 "+str(MASS)+".0", "pymssm rmss 1 300.0", #gluino and neutralino masses - "pymssm rmss 2 3000.0", "pymssm rmss 4 10000.0", - "pymssm rmss 7 4000.0", "pymssm rmss 8 4000.0", - "pymssm rmss 9 4000.0", "pymssm rmss 10 4000.0", - "pymssm rmss 11 4000.0", "pymssm rmss 12 5000.0", -# decays into gluons - "pymssm rmss 21 300.0e9", "pymssm imss 11 1", #ok to use the Gravitino - "pymssm rmss 29 2.0e6", #planck mass, controls BR(gluino->g+Gravitino) - "pydat3 mdcy 1000022 1 0", #kill neutralino decays -# ------------------ - "pysubs msel 0", "pysubs msub 243 1", "pysubs msub 244 1", "pypars mstp 111 0", - "pyinit pylisti 12", #dumps the full decay table, etc. - "pyinit dumpr 0 100" #,"pystat 2" - ] - -#print out MC truth -#from TruthExamples.TruthExamplesConf import PrintMC -#PrintMC.PrintStyle = "Vertex" -#job += PrintMC() - -# the following five lines are added for use of POOL persistency: -include( 'AthenaPoolCnvSvc/WriteAthenaPool_jobOptions.py' ) -include( 'GeneratorObjectsAthenaPool/GeneratorObjectsAthenaPool_joboptions.py' ) -from AthenaPoolCnvSvc.WriteAthenaPool import AthenaPoolOutputStream -Stream1 = AthenaPoolOutputStream( "StreamEVGEN" ) -Stream1.ItemList += [ 'EventInfo#*', 'McEventCollection#*' ] -include( 'AthenaServices/AthenaSealSvc_joboptions.py' ) -AthenaSealSvc.CheckDictionary = TRUE -Stream1.OutputFile = "pythia_"+CASE+"_"+str(MASS)+"GeV.pool.root" diff --git a/Generators/PythiaRhad_i/share/jobOptions.pythiaRhad.py b/Generators/PythiaRhad_i/share/jobOptions.pythiaRhad.py deleted file mode 100644 index 50a18804342b63b921678c1a4790f6b4e6cf9733..0000000000000000000000000000000000000000 --- a/Generators/PythiaRhad_i/share/jobOptions.pythiaRhad.py +++ /dev/null @@ -1,73 +0,0 @@ -from AthenaCommon.AppMgr import ServiceMgr -ServiceMgr.MessageSvc.OutputLevel = INFO - -MASS=1000 -CASE='gluino' - -# Number of events to be processed (default is 10) -MyNevts = 1000 -theApp.EvtMax = MyNevts - -import os -import sys - -os.system('get_files -data PDGTABLE_'+CASE+'_'+str(MASS)+'GeV.MeV') -os.system('mv PDGTABLE_'+CASE+'_'+str(MASS)+'GeV.MeV PDGTABLE.MeV') - - -from AthenaServices.AthenaServicesConf import AtRndmGenSvc -ServiceMgr += AtRndmGenSvc() -ServiceMgr.AtRndmGenSvc.Seeds = ["PYTHIA 4789899 989240512","PYTHIA_INIT 820021 2347532"] - -from AthenaCommon.AlgSequence import AlgSequence -job=AlgSequence() -from PythiaRhad_i.PythiaRhad_iConf import PythiaRhad -job +=PythiaRhad() -job.PythiaRhad.PythiaCommand = ["pysubs msel 13","pysubs ckin 3 18.","pypars mstp 43 2"] -job.PythiaRhad.PythiaCommand += ["pypars mstp 51 19070", "pypars mstp 52 2", - "pypars mstp 53 19070", "pypars mstp 54 2", - "pypars mstp 55 19070", "pypars mstp 56 2", - "pypars mstp 81 1", "pydat1 mstj 11 4"] - -# R-hadron commands: -if (CASE=='gluino'): - job.PythiaRhad.RunGluinoHadrons=True - job.PythiaRhad.RunStopHadrons=False -elif (CASE=='stop'): - job.PythiaRhad.RunGluinoHadrons=False - job.PythiaRhad.RunStopHadrons=True - - -if job.PythiaRhad.RunGluinoHadrons: # Gluino hadron setup - job.PythiaRhad.PythiaCommand += ["pymssm imss 1 1", "pymssm imss 3 1", "pymssm imss 5 1", - "pymssm rmss 3 "+str(MASS)+".0", "pymssm rmss 1 4000.0", - "pymssm rmss 2 4000.0", "pymssm rmss 4 10000.0", - "pymssm rmss 7 4000.0", "pymssm rmss 8 4000.0", - "pymssm rmss 9 4000.0", "pymssm rmss 10 4000.0", - "pymssm rmss 11 4000.0", "pymssm rmss 12 4000.0", - "pysubs msel 0", "pysubs msub 244 1", "pypars mstp 111 0", - "pyinit pylistf 3", "pyinit dumpr 0 100", "pystat 2" - ] -elif job.PythiaRhad.RunStopHadrons: # Stop hadron setup - job.PythiaRhad.PythiaCommand += ["pymssm imss 1 1", "pymssm imss 3 1", "pymssm imss 5 1", - "pymssm rmss 1 4000", "pymssm rmss 2 4000", - "pymssm rmss 3 4000", "pymssm rmss 4 4000", - "pymssm rmss 7 4000.0", "pymssm rmss 8 4000.0", - "pymssm rmss 9 4000.0", "pymssm rmss 10 4000.0", - "pymssm rmss 11 4000.0", "pymssm rmss 12 "+str(MASS)+".0", - "pysubs msel 0", "pysubs msub 261 1", - "pysubs msub 264 1", "pypars mstp 111 0", - "pyinit pylistf 3", "pyinit dumpr 0 20" - ] - - -# the following five lines are added for use of POOL persistency: -include( 'AthenaPoolCnvSvc/WriteAthenaPool_jobOptions.py' ) -include( 'GeneratorObjectsAthenaPool/GeneratorObjectsAthenaPool_joboptions.py' ) -from AthenaPoolCnvSvc.WriteAthenaPool import AthenaPoolOutputStream -Stream1 = AthenaPoolOutputStream( "StreamEVGEN" ) -Stream1.ItemList += [ 'EventInfo#*', 'McEventCollection#*' ] -include( 'AthenaServices/AthenaSealSvc_joboptions.py' ) -AthenaSealSvc.CheckDictionary = TRUE -Stream1.OutputFile = "pythia_"+CASE+"_"+str(MASS)+"GeV_"+str(MyNevts)+"_events.pool.root" - diff --git a/Generators/PythiaRhad_i/src/PythiaRhad.cxx b/Generators/PythiaRhad_i/src/PythiaRhad.cxx deleted file mode 100644 index 805983b8c9442f5d9891a2696acc5cf9264ba390..0000000000000000000000000000000000000000 --- a/Generators/PythiaRhad_i/src/PythiaRhad.cxx +++ /dev/null @@ -1,1180 +0,0 @@ -/* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration -*/ - -// File: GeneratorModules/PythiaRhad.cxx -// Description: Allows the user to generate Pythia-RHad events and -// store the result in the Transient Store. -// -// AuthorList: -// Ian Hinchliffe: Initial Code June: 2000 -// Modeled after the CDF code by Stan Thompson -// Parsing added August 2000 -// More switches added Feb 2001 -// Les Houches external process interface added May 2002 -// Added access to pyint1 common Sept 2002 - -/// @todo Remove all std::cout usage -/// @todo Remove use of newlines in ATH_MSG - -// Header for this module:- -#include "Pythia_i/Pythia.h" -#include "PythiaRhad_i/PythiaRhad.h" -#include "TruthUtils/GeneratorName.h" -#include "GeneratorUtils/StringParse.h" - -#include "HepMC/IO_HEPEVT.h" -#include "HepMC/HEPEVT_Wrapper.h" - -#include "HepMC/GenParticle.h" -#include "HepMC/GenVertex.h" -#include "CLHEP/Vector/LorentzVector.h" - -#include <fstream> -#include <cstdlib> - -// Calls to Fortran routines -#include "CLHEP/Random/RandFlat.h" -#include "AthenaKernel/IAtRndmGenSvc.h" - -using std::string; - - - -extern "C" { - void initpyblock_(int*, const char*); - int openrandom_(int*, int*, const char*); - void pyrhad_(); - void pygldc_(); - void pyglfr_(int*); - void pysthad_(); - void pystfr_(int*); - void pyinit_(const char*, - const char*, - const char*, - double* , - int, // lengths of character strings - int,// (should be value, not reference) - int - ); - void pyevnt_(); - void pyevnw_(); - void pystat_(int*); - void pylist_(int*); - void pyupda_(int*, int*); - void pyrget_(int*, int*); - void pyrset_(int*, int*); - int pycomp_(int*); - // void lunhep_(int*); // STDHEP routine for PYJETS->HEPEVT - void pyhepc_(int*); - int opdcay_(const char*, int*, char*, int, int); - void cldcay_(int*); - void rinpar_(); // comphep - void subnum_(); // comphep file - void rheader_(); // comphep initialization - void extproc_(int*); - void opensusyfile_(const char* ,int * , int); - - void pyrhre_(); - void pyrhin_(double*); - void pysqdc_(int*); - void pyglfrre_(int*); - void pyglfrin_(int*); - void pyggpro_(double*); - void pystfrre_(int*); - void pysbfrre_(int*); - //pygive implementation: calls Pythia SUBROUTINE PYGIVE(CHIN) - void pygive_(const char*,int); // character string to pygive && its length - - -} - -// File scope declarations:- -using namespace HepMC; - - -//-------------------------------------------------------------------------- - -PythiaRhad::PythiaRhad(const std::string& name, ISvcLocator* pSvcLocator) - : Pythia(name, pSvcLocator) -{ - pythia_stream = "PYTHIA_INIT"; - // ATLAS default tune - m_Default_Tune_Name="ATLAS_20090001"; - // old schema backw. compatibility - m_mc0809_Tune_Type="ATLAS"; - m_mc09_Tune_Index=20090001; - m_mc08_Tune_Index=20080001; - //set dummy values at start - m_Tune_Index=0; - m_Tune_Type=""; - // some defaults - m_firstlistevent = -1; - m_lastlistevent = -1; - - // Update defaults for properties declared in base class. - m_useAtlasPythiaTune09 = true; - m_useAtlasPythiaTune08 = false; - m_useNoAtlasPythiaParam = false; - m_AtlasDefaults = false; - m_Tune_Name = m_Default_Tune_Name; - m_read_Filesusy = " "; - - declareProperty("RHadronPDGids", m_rhs ); - declareProperty("RunGluinoHadrons", m_run_gluino_hadrons = false ); - declareProperty("RunStopHadrons", m_run_stop_hadrons = false ); - - - declareProperty("RunReggeModel", m_regge = false ); - declareProperty("RunIntermediateModel", m_intermediate = false ); - declareProperty("RunSbottomHadrons", m_run_sbottom_hadrons = false ); - declareProperty("GluinoBallProbability", m_gluino_ball_prob = 0.1 ); - - declareProperty("EnableAfterInitialize",m_enable_after_initialize = true);//new: if false, turn ourselves off after initialization, so execute (callGnerator) is not called by AthAlogithm - important to do if we are only here to decay things! - - - // For StoppedGluinos - declareProperty("strip_out_rh",m_strip_out_rh=false);//Get rid of all but the RHadron decay products - declareProperty("rh_decay",m_rh_decay=false);//Whether to decay the RHadrons. If you don't decay them, the following manipulations are also turned off. - declareProperty("boost_rh_to_rest_frame",m_boost_rh_to_rest_frame=false);//Boost to that RHadron's rest frame - declareProperty("rotate_rh",m_rotate_rh=false);//Rotate the RHadron decay randomly - declareProperty("translate_rh_to_stopping_position",m_translate_rh_to_stopping_position=false);//Move to a stopping point, defined by the parameters below... - declareProperty("xshift", m_xshift=0);//mm - declareProperty("yshift", m_yshift=2500);//mm - declareProperty("zshift", m_zshift=1000);//mm - declareProperty("tshift", m_tshift=0);//ns - declareProperty("randomtshift", m_randomtshift=0);//ns - declareProperty("StoppingInput", m_StoppingInput, "A matrix of stopping locations" ); - - m_doubleid = 1; -} - - -//-------------------------------------------------------------------------- - - -PythiaRhad::~PythiaRhad() { } - - - - - -//--------------------------------------------------------------------------- - - -StatusCode PythiaRhad::genuserInitialize() { - // Initialise the listing output, parameter and decay data input streams - ATH_MSG_INFO(" PYTHIA INITIALISING. \n"); - - //print out m_rhs - std::cout<<"ACH123, list of rhadron pdgids:"; - for (unsigned int i=0; i<m_rhs.size(); ++i) {std::cout<<" "<<m_rhs[i];} - std::cout<<std::endl; - - /// @todo Convert to use ServiceHandle method - static const bool CREATEIFNOTTHERE(true); - StatusCode RndmStatus = service("AtRndmGenSvc", - PythiaRhad::p_AtRndmGenSvc, - CREATEIFNOTTHERE); - if (!RndmStatus.isSuccess() || 0 == PythiaRhad::p_AtRndmGenSvc) - { - ATH_MSG_ERROR(" Could not initialize Random Number Service" ); - return RndmStatus; - } - PythiaRhad::pythia_stream = "PYTHIA_INIT"; - - m_atlasTune_loop_prot=0; - - // set up the input parameters to pyinit: these can be changed by the user - m_frame = "CMS "; - m_beam = "P "; - m_target = "P "; - m_win=7000.; - m_initlistlevel=11; - m_pystatlistlevel.push_back(1); - m_fortout=0; - - m_RndmFileName=" "; - m_RndmFileNumber=0; - m_RndmSwitch=0; - m_RndmFirstEvent=1; - m_RndmSkipEvents=0; - m_RndmMOVE=0; - m_RndmFileLength=0; - m_ExternalProcess = 0; - - // end of setup to pyinit - //now set defaults - m_randomseed=19780503; - this->pydatr().mrpy(1) = m_randomseed; // can be overwritten by user - // default process is ttbar - // these can be overwritten by user. - m_msel=6; - this->pysubs().msel() = m_msel; - - // Set the ATLAS defaults - if (m_AtlasDefaults) { - ATH_MSG_WARNING( "********** You have chosen the default Atlas Settings. **********" ); - ATH_MSG_WARNING( "********** Tis switch is not valid any more. **********" ); - } - - //m_Tune_Name parsing to find m_Tune_Type and m_Tune_Index for setPythiaTune() and atlasTune() calls - std::string::size_type sep_index = m_Tune_Name.find_first_of('_'); - if (sep_index != std::string::npos) - { - m_Tune_Type=m_Tune_Name.substr(0,sep_index); - // atoi : returns 0 if conversion not possible - no additional protection needed - m_Tune_Index=atoi((m_Tune_Name.substr(sep_index+1,m_Tune_Name.length()-1)).c_str()); - } - else - { - // invalid Tune_Name, m_Tune_Type and m_Tune_Index kept at the dummy vals from constructor, - // let setPythiaTune() handle the error - ATH_MSG_WARNING("Invalid Tune_Name: "<< m_Tune_Name <<" specified ."); - } - // set any Pythia parameters different from Pythia defaults - // allow only one reset - if (m_atlasTune_loop_prot<2) - { - // atlasTune_loop_prot counts setPythiaTune() calls in setPythiaTune.cxx - StatusCode sc=setPythiaTune(); - if ( sc.isFailure() ) - { - ATH_MSG_FATAL("ERROR returned from setPythiaTune, exit." ); - return StatusCode::FAILURE; - } - } - else - { - ATH_MSG_FATAL ("More than one reset attempt of tune using setPythiaTune."); - ATH_MSG_FATAL ("Please correct your jobOptions." ); - return StatusCode::FAILURE; - } - - //PYGIVE command parsing && call - for (unsigned int i = 0; i < m_PygiveCommandVector.size(); i++) - { - // std::cout<<"RMA: "<<m_PygiveCommandVector[i]<<std::endl; - m_pygive_cstr = (m_PygiveCommandVector[i]).c_str(); - pygive_(m_pygive_cstr,strlen(m_pygive_cstr)); - } - - - // - // Parse Commands and Set Values from Properties Service... - // - // for(CommandVector::iterator it = m_pythiaCommandVector.begin(); it != m_pythiaCommand.end(); it++ ) { - for (unsigned int i = 0; i < m_pythiaCommandVector.size(); i++) { - ATH_MSG_INFO(" Command is: " << m_pythiaCommandVector[i]); - StringParse mystring(m_pythiaCommandVector[i]); - string myblock=mystring.piece(1); - string myentry=mystring.piece(2); - string mystr=mystring.piece(3); - int myint1=mystring.intpiece(3); - int myint2=mystring.intpiece(4); - int myint3=mystring.intpiece(5); - int myint4=mystring.intpiece(6); - int myint5=mystring.intpiece(7); - double myfl1=mystring.numpiece(4); - double myfl2=mystring.numpiece(5); - double myfl0=mystring.numpiece(3); - - // Note that Pythia needs doubles hence the convert here - ATH_MSG_INFO(myblock << " block " << myentry << " item " << myint1 << " value " << myfl1); - if (myblock=="pyinit") { - if(myentry=="user"){ - m_frame="USER "; - m_external=mystr; - m_ExternalProcess = generator_int(mystr); - /* - if(mystr=="comphep"){ - m_ExternalProcess = 1; - } else if(mystr=="user"){ - m_ExternalProcess = 2; - } else if(mystr=="acermc"){ - m_ExternalProcess = 3; - } else if(mystr=="alpgen"){ - m_ExternalProcess = 4; - } else if (mystr == "madgraph") { - m_ExternalProcess = 5; - } else if(mystr== "madcup") { - m_ExternalProcess = 6; - } else if(mystr== "toprex") { - m_ExternalProcess = 7; - } else if(mystr== "lhaext") { - m_ExternalProcess = 8; - } else if(mystr== "matchig") { - m_ExternalProcess = 9; - } else if(mystr== "hvgen") { - m_ExternalProcess = 10; - } else { - ATH_MSG_ERROR( - "PYTHIA ERROR, entry PYINIT USER has comphep, acermc, alpgen, madgraph, madcup, " - << "toprex, lhaext, hvgen and user as options: YOU HAVE SPECIFIED " << myentry); - } - */ - extproc_(&m_ExternalProcess); - } - else if(myentry=="FIXT"){ - m_frame="FIXT"; - } - else if(myentry=="pbar"){ - m_beam="P~- "; - } - else if(myentry=="win"){ - m_win=myfl0; - } - else if(myentry=="pylisti"){ - m_initlistlevel=myint1; - } - else if(myentry=="pylistf"){ - m_eventlistlevel=myint1; - } - else if(myentry=="dumpr"){ - m_firstlistevent=myint1; - m_lastlistevent=myint2; - } - else if(myentry=="output"){ - m_envval1=mystr; - m_fortout=49; - this->pydat1().mstu(11)=m_fortout; - } - else if(myentry=="rndm_IO"){ - m_RndmFileName=mystr; - m_RndmFileNumber=36; - m_RndmSwitch=myint2; - m_RndmFirstEvent=myint3; - m_RndmSkipEvents=myint4; - m_RndmMOVE=myint5; - if (m_RndmSwitch == 1) ++m_RndmSkipEvents; - - if (m_RndmSwitch > 0) { - if (m_RndmFirstEvent < 1 || m_RndmSkipEvents < 0) { - ATH_MSG_ERROR(" INCONSISTENT SET OF rndm_IO PARAMETERS : " - << "FirstEvent < 1 || SkipEvents < 0. DUMPING RNDM SEEDS SWITCHED OFF" - << myentry); - m_RndmSwitch = 0; - } - } - - ATH_MSG_INFO(" !!!!!!!!!! WARNING ON PYTHIA RANDOM NUMBERS !!!!!!!! "); - ATH_MSG_INFO(" THE ATHENA/PYTHIA DOES NOT USE ANY MORE THE STANDARD "); - ATH_MSG_INFO(" PYTHIA RANDOM NUMBER SERVICES. SINCE RELEASE 5.2.0 THE"); - ATH_MSG_INFO(" ATHENA SERVICE AtRndmGenSvc IS USED. PLEASE FOR MORE "); - ATH_MSG_INFO(" DETAILS LOOK IN "); - ATH_MSG_INFO(" http://atlassw1.phy.bnl.gov/lxrsource/current/atlas/Generators/GeneratorModules/doc/Pythia.pdf "); - ATH_MSG_INFO(" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! "); - - m_RndmSwitch = 0; - } - else { - ATH_MSG_ERROR("PYTHIA ERROR, entry PYINIT has USER PBAR PYLISTI PYLISTF PYSTAT OUTPUT DUMPR WIN AND RNDM_IO: YOU HAVE SPECIFIED "<< myentry) ; - } - } - else if (myblock == "pysubs") { - if(myentry == "msel"){ - this->pysubs().msel()=myint1; - } - else if (myentry == "msub"){ - this->pysubs().msub(myint1)=myint2; - } - else if (myentry == "ckin"){ - this->pysubs().ckin(myint1)=myfl1; - } - else if (myentry == "kfin"){ - this->pysubs().kfin(myint1,myint2)=myint3; - } - else { - ATH_MSG_ERROR("PYTHIA ERROR, block PYSUBS has MSEL, MSUB, KFIN AND CKIN: YOU HAVE SPECIFIED "<< myentry) ; - } - } - else if (myblock == "pypars"){ - if(myentry == "mstp"){ - this->pypars().mstp(myint1)=myint2; - } - else if(myentry == "msti"){ - this->pypars().msti(myint1)=myint2; - } - else if(myentry == "parp"){ - this->pypars().parp(myint1)=myfl1; - } - else if(myentry == "pari"){ - this->pypars().pari(myint1)=myfl1; - } - else { - ATH_MSG_ERROR("PYTHIA ERROR, block PYPARS has MSTP,PARP, MSTI AND PARI: YOU HAVE SPECIFIED "<< myentry) ; - } - } - else if (myblock == "pydat1"){ - if(myentry == "mstu"){ - this->pydat1().mstu(myint1)=myint2; - } - else if(myentry == "mstj"){ - this->pydat1().mstj(myint1)=myint2; - } - else if(myentry == "paru"){ - this->pydat1().paru(myint1)=myfl1; - } - else if(myentry == "parj"){ - this->pydat1().parj(myint1)=myfl1; - } - else { - ATH_MSG_ERROR("PYTHIA ERROR, block PYDAT1 HAS MSTU, MSTJ, PARU AND PARJ: YOU HAVE SPECIFIED "<< myentry) ; - } - } - else if (myblock == "pydat2"){ - if(myentry == "kchg"){ - this->pydat2().kchg(myint1,myint2)=myint3; - } - else if(myentry == "pmas"){ - this->pydat2().pmas(pycomp_(&myint1),myint2)=myfl2; - } - else if(myentry == "parf"){ - this->pydat2().parf(myint1)=myfl1; - } - else if(myentry == "vckm"){ - this->pydat2().vckm(myint1,myint2)=myfl2; - } - else { - ATH_MSG_ERROR("PYTHIA ERROR, block PYDAT2 HAS KCHG, PMAS, PARF AND VCKM: YOU HAVE SPECIFIED "<< myentry) ; - } - } - else if (myblock == "pydat3"){ - if(myentry == "mdcy"){ - this->pydat3().mdcy(pycomp_(&myint1),myint2)=myint3; - } - else if(myentry == "mdme"){ - this->pydat3().mdme(myint1,myint2)=myint3; - } - else if(myentry == "brat"){ - this->pydat3().brat(myint1)=myfl1; - } - else if(myentry == "kfdp"){ - this->pydat3().kfdp(myint1,myint2)=myint3; - } - else { - ATH_MSG_ERROR("PYTHIA ERROR, block PYDAT3 HAS KFDP, MDCY, BRAT AND MDME : YOU HAVE SPECIFIED "<< myentry) ; - } - } - else if (myblock == "pydatr"){ - if(myentry == "mrpy"){ - ATH_MSG_INFO(" !!!!!!!!!! WARNING ON PYTHIA RANDOM NUMBERS !!!!!!!! "); - ATH_MSG_INFO(" THE ATHENA/PYTHIA DOES NOT USE ANY MORE THE STANDARD "); - ATH_MSG_INFO(" PYTHIA RANDOM NUMBER SERVICES. SINCE RELEASE 5.2.0 THE"); - ATH_MSG_INFO(" ATHENA SERVICE AtRndmGenSvc IS USED. PLEASE FOR MORE "); - ATH_MSG_INFO(" DETAILS LOOK IN "); - ATH_MSG_INFO(" http://atlassw1.phy.bnl.gov/lxrsource/current/atlas/Generators/GeneratorModules/doc/Pythia.pdf "); - ATH_MSG_INFO(" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! "); - - this->pydatr().mrpy(myint1)=myint2; - } - else if(myentry == "rrpy"){ - this->pydatr().rrpy(myint1)=myfl1; - } - else { - ATH_MSG_ERROR("PYTHIA ERROR, block PYDATR HAS MRPY AND RRPY : YOU HAVE SPECIFIED "<< myentry) ; - } - } - else if (myblock == "pymssm"){ - if (myentry=="imss"){ - if (myint1 == 21 || myint1 == 22) { - ATH_MSG_WARNING("The seting of imss(21) and imss(22) is not allowed. When imss(1)=11 is chosen imss(21) and imss(22) are set to 66 by default"); - } else { - this->pymssm().imss(myint1)=myint2; - } - } - else if (myentry=="rmss"){ - this->pymssm().rmss(myint1)=myfl1; - } - else { - ATH_MSG_ERROR("PYTHIA ERROR, block PYMSSM has IMSS AND RMSS: YOU HAVE SPECIFIED "<< myentry) ; - } - } - else if (myblock == "pyint2"){ - if (myentry == "iset"){ - this->pyint2().iset(myint1)=myint2; - } - else if (myentry == "kfpr"){ - this->pyint2().kfpr(myint1,myint2)=myint3; - } - else if (myentry == "coef"){ - this->pyint2().coef(myint1,myint2)=myfl2; - } - else if (myentry == "icol"){ - this->pyint2().icol(myint1,myint2,myint3)=myint4; - } - else { - ATH_MSG_ERROR("PYTHIA ERROR, block PYINT2 has ISET KFPR COEF AND ICOL: YOU HAVE SPECIFIED "<< myentry) ; - } - } - else if (myblock == "pystat"){ - m_pystatlistlevel.clear(); - for (unsigned i = 2; i <= mystring.string_size(); ++i) - m_pystatlistlevel.push_back(mystring.intpiece(i)); - } - else if (myblock == "pytcsm"){ - if (myentry == "itcm"){ - this->pytcsm().itcm(myint1)=myint2; - } - else if (myentry=="rtcm"){ - this->pytcsm().rtcm(myint1)=myfl1; - } - else { - ATH_MSG_ERROR("PYTHIA ERROR, block PYTCM has ITCM AND RTCM: YOU HAVE SPECIFIED "<< myentry) ; - } - - } - - // AcerMC tt~ decay mode switching - else if (myblock == "acermc" && myentry=="acset12") { - if (m_ExternalProcess == ACERMC) { - this->acermc_acset().acset12()=myint1; - } - } - - else { - ATH_MSG_ERROR(" ERROR in PYTHIA PARAMETERS " << myblock << " is and invalid common block name !"); - } - } - // end of parsing - - // Set the logical Unit Number for the immss(1)=11 option and open the file - if (this->pymssm().imss(1) == 11) { - int syunit = 66; - this->pymssm().imss(21) = syunit; - this->pymssm().imss(22) = syunit; - const std::string& fileName = m_read_Filesusy; - opensusyfile_(fileName.c_str(),&syunit,fileName.size()); - } - - // !!!!! PROTECT AGAINST mstp(81)/mstp(82) Pythia looping - if (this->pypars().mstp(81) == 0 && this->pypars().mstp(82) > 2) { - this->pypars().mstp(82) = 1; - ATH_MSG_INFO(" !!!!!!!!!! WARNING ON PYTHIA LOOPING !!!!!!!! "); - ATH_MSG_INFO(" YOU HAVE SWITCHED OFF MULTIPLE INTERACTIONS, mstp(81) = 0 "); - ATH_MSG_INFO(" THE DEFAULT ATLAS MULTIPLE INTERACTIONS SCENARIO, mstp(82) = 4 "); - ATH_MSG_INFO(" CHANGED TO mstp(82) = 1, BECAUSE PYTHIA IS LOOPING WHEN "); - ATH_MSG_INFO(" mstp(81) = 0 and mstp(82) > 2 "); - ATH_MSG_INFO(" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! "); - } - - - // Protect MI and fragmentation settings to ensure they remain in the supported range for R-hadron fragmentation - if (this->pypars().mstp(81) > 1) - { - ATH_MSG_INFO(" !!!!!!!!!! Multiple interactions setting overridden !!!!!!!! "); - ATH_MSG_INFO(" MSTP(81) must be either 0 (off) or 1. Setting to 1..."); - this->pypars().mstp(81) = 1; - } - if (this->pydat1().mstj(11) != 4) - { - ATH_MSG_INFO(" !!!!!!!!!! Fragmentation settings overridden !!!!!!!! "); - ATH_MSG_INFO(" MSTJ(11) must be 4. Enforcing. Have a nice day..."); - this->pydat1().mstj(11) = 4; - } - - - // Now call pyinit and set listing - // Note the `extra' arguments to pyinit on the end of the argument - // list which do *not* explicitly occur in the FORTRAN - // implementation of the function -- one for each character - // variable, in the same order (reference Randy Herber, - // herber@fnal.gov). Note also that the `extern "C"' function - // declaration matches the C usage rather than the FORTRAN - // definition of the PYINIT function and therefore includes the 3 - // extra arguments. - // activate the block data - const char* envval = m_envval1.c_str(); - initpyblock_(&m_fortout,envval); - - if (m_RndmSwitch > 0) { - const char* RndmFileName = m_RndmFileName.c_str(); - m_RndmFileLength = openrandom_(&m_RndmSwitch, &m_RndmFileNumber, RndmFileName); - if (m_RndmSwitch ==2 ) - ATH_MSG_INFO(" THERE ARE " << m_RndmFileLength - << " EVENTS STORED IN THE PYTHIA RANDOM NUMBER FILE \n"); - } - - const char* frame = m_frame.c_str(); - const char* beam = m_beam.c_str(); - double winval = m_win; - const char* target = m_target.c_str(); - int minlist = m_initlistlevel; - // special initialization for comphep - if(m_external=="comphep"){ - rinpar_(); - subnum_(); - rheader_(); - } - - // end of comphep initialization - // std::cout << " ****** BEFORE PYINIT ********" << std::endl; - // std::cout << setiosflags(ios::fixed); - // std::cout << " MSTU(11) " - // << std::setw(3) << setprecision(0) << this->pydat1().mstu(11) << " MSTU(20) " - // << std::setw(3) << setprecision(0) << this->pydat1().mstu(20) << " MSTU(118) " - // << std::setw(3) << setprecision(0) << this->pydat1().mstu(118) << std::endl; - // std::cout << " PARU(108) " - // << std::setw(10) << setprecision(8) << this->pydat1().paru(108) << " PARU(117) " - // << std::setw(10) << setprecision(8) << this->pydat1().paru(117) << " PARU(118) " - // << std::setw(10) << setprecision(8) << this->pydat1().paru(118) << std::endl; - // for (int ii = 210; ii < 353; ++ii) - // { - // std::cout << " BRAT(" << ii << ") " - // << std::setw(10) << setprecision(8) << this->pydat3().brat(ii) << std::endl; - // } - // std::cout << " MDCY(310) " - // << std::setw(3) << setprecision(0) << this->pydat3().mdcy(310,1) << ", " - // << std::setw(3) << setprecision(0) << this->pydat3().mdcy(310,2) << ", " - // << std::setw(3) << setprecision(0) << this->pydat3().mdcy(310,3); - - // std::cout << std::resetiosflags(std::ios::fixed) - // << std::endl; - - // Save the PYTHIA_INIT stream seeds.... - CLHEP::HepRandomEngine* engine = PythiaRhad::p_AtRndmGenSvc->GetEngine(PythiaRhad::pythia_stream); - const long* sip = engine->getSeeds(); - long int si1 = sip[0]; - long int si2 = sip[1]; - - //R-hadron initialization - // std::cout<<"Gluino switch: "<<m_run_gluino_hadrons<<std::endl; - // std::cout<<"Stop switch: "<<m_run_stop_hadrons<<std::endl; - - if(m_run_gluino_hadrons) - pyggpro_(&m_gluino_ball_prob); - - - pyinit_(frame,beam,target,&winval, - strlen(frame),strlen(beam),strlen(target) - ); - - // ... and set them back to the stream for proper save - PythiaRhad::p_AtRndmGenSvc->CreateStream(si1, si2, PythiaRhad::pythia_stream); - - PythiaRhad::pythia_stream = "PYTHIA"; - - // std::cout << " ****** AFTER PYINIT ********" << std::endl; - // std::cout << setiosflags(ios::fixed); - // std::cout << " MSTU(11) " - // << std::setw(3) << setprecision(0) << this->pydat1().mstu(11) << " MSTU(20) " - // << std::setw(3) << setprecision(0) << this->pydat1().mstu(20) << " MSTU(118) " - // << std::setw(3) << setprecision(0) << this->pydat1().mstu(118) << std::endl; - // std::cout << " PARU(108) " - // << std::setw(10) << setprecision(8) << this->pydat1().paru(108) << " PARU(117) " - // << std::setw(10) << setprecision(8) << this->pydat1().paru(117) << " PARU(118) " - // << std::setw(10) << setprecision(8) << this->pydat1().paru(118) << std::endl; - // for (int ii = 210; ii < 353; ++ii) - // { - // std::cout << " BRAT(" << ii << ") " - // << std::setw(10) << setprecision(8) << this->pydat3().brat(ii) << std::endl; - // } - // std::cout << " MDCY(310) " - // << std::setw(3) << setprecision(0) << this->pydat3().mdcy(310,1) << ", " - // << std::setw(3) << setprecision(0) << this->pydat3().mdcy(310,2) << ", " - // << std::setw(3) << setprecision(0) << this->pydat3().mdcy(310,3); - - // std::cout << std::resetiosflags(std::ios::fixed) - // << std::endl; - - pylist_(&minlist); - m_events = 0; - // cout << " kfpr ============ " << this->pyint2().kfpr(186,2) <<endl; - // cout << " kfpr ============ " << this->pyint2().kfpr(187,2) <<endl; - - // Decay table - const char *p_envar1="PYDAT"; - // char *p_envval1=0; - // p_envval1= - getenv(p_envar1); - - // This is the decay table file - // - // int mode=2; - // int lun=37; - // pyupda_(&mode,&lun); - // cldcay_(&lun); - - // Set size of common blocks in HEPEVT: note these correspond to stdhep - // HepMC::HEPEVT_Wrapper::set_sizeof_int(4); - HepMC::HEPEVT_Wrapper::set_sizeof_int(sizeof(int)); - HepMC::HEPEVT_Wrapper::set_sizeof_real(8); - HepMC::HEPEVT_Wrapper::set_max_number_entries(10000); - - // ACH- Get last "double stop" integer from last run for tagging them, for StoppedGluinos simulation - if (m_translate_rh_to_stopping_position){ - std::string line; - std::ifstream myfile ("doubleID.txt"); - if (myfile.is_open()) { - //while (! myfile.eof() ){ - std::getline (myfile,line); - std::cout<<"Got from doubleID.txt: "<<line<<std::endl; - m_doubleid = atoi(line.c_str()); - //} - myfile.close(); - } - else { - std::cout<<"Unable to open file doubleID.txt, will start at 1"<<std::endl; - m_doubleid = 1; - } - std::cout<<"m_doubleid = "<<m_doubleid<<std::endl; - } - - if(m_run_stop_hadrons) - { - int kfst = 1000006; - int kcst = pycomp_(&kfst); - this->pydat3().mdcy(pycomp_(&kfst),1)=0; - // Setting width of stop explixitly to zero - std::ostringstream mypygive; - mypygive<<"MWID("<<kcst<<")=0"; - // std::cout<<mypygive.str()<<std::endl; - pygive_(mypygive.str().c_str(),strlen(mypygive.str().c_str())); - int kfstbar = -1000006; - this->pydat3().mdcy(pycomp_(&kfstbar),1)=0; - } - if(m_run_sbottom_hadrons) - { - int kfst = 1000005; - int kcst = pycomp_(&kfst); - this->pydat3().mdcy(pycomp_(&kfst),1)=0; - // Setting width of stop explixitly to zero - std::ostringstream mypygive; - mypygive<<"MWID("<<kcst<<")=0"; - // std::cout<<mypygive.str()<<std::endl; - pygive_(mypygive.str().c_str(),strlen(mypygive.str().c_str())); - int kfstbar = -1000005; - this->pydat3().mdcy(pycomp_(&kfstbar),1)=0; - } - - //Done initializing - - //Set myself off to prevent generation, if we are in the sim step! - if (!m_enable_after_initialize){ - ATH_MSG_INFO("Setting Enable to False, at the end of initialization..."); - ATH_CHECK(setProperty("Enable", "False" )); - } - - return StatusCode::SUCCESS; -} - - -//--------------------------------------------------------------------------- - - -StatusCode PythiaRhad::callGenerator() { - ATH_MSG_INFO(" PYTHIA generating. \n"); - - int ierr=1; - - while (ierr!=0) { - - // Write/Read the random numbers to/from file if requested - if (m_RndmSwitch > 0) RandomNumberIO(); - - // Save the random number seeds in the event - CLHEP::HepRandomEngine* engine = PythiaRhad::p_AtRndmGenSvc->GetEngine(PythiaRhad::pythia_stream); - const long* s = engine->getSeeds(); - m_seeds.clear(); - m_seeds.push_back(s[0]); - m_seeds.push_back(s[1]); - - //...Put gluino/stop stable. - // int kfgl=0; - //...Put gluino/stop stable. - // int kfgl=0; - if(m_run_gluino_hadrons) - { - int kfgl = 1000021; - this->pydat3().mdcy(pycomp_(&kfgl),1)=0;// MDCY(PYCOMP(KFGL),1)=0 - } - if(m_run_stop_hadrons) - { - int kfst = 1000006; - this->pydat3().mdcy(pycomp_(&kfst),1)=0; - int kfstbar = -1000006; - this->pydat3().mdcy(pycomp_(&kfstbar),1)=0; - } - if(m_run_sbottom_hadrons) - { - int kfst = 1000005; - this->pydat3().mdcy(pycomp_(&kfst),1)=0; - int kfstbar = -1000005; - this->pydat3().mdcy(pycomp_(&kfstbar),1)=0; - } - this->pydat1().mstj(14)=-1;// MSTJ(14)=-1 - - // Generate event - pyevnt_(); - - this->pydat1().mstj(14)=1;// MSTJ(14)=1 - // std::cout<<"IERR: "<<ierr<<", SEEDS: "<<s[0]<<", "<<s[1]<< std::endl; - - if(m_run_gluino_hadrons) { - - // Running selected hadronization - if(m_regge) - pyglfrre_(&ierr); - else if(m_intermediate) - pyglfrin_(&ierr); - else - pyglfr_(&ierr); - - if (m_rh_decay) - { - std::cout << "\n ------- Doing RHadron Gluino decay ---------- " << std::endl; - int kfgl = 1000021;//gluino - this->pydat3().mdcy(pycomp_(&kfgl),1)=1;// MDCY(PYCOMP(KFGL),1)=1 //unstable gluino - pygldc_();//gluino DECAY! - } - } - if(m_run_stop_hadrons) - { - // Running selected hadronization - if(m_regge) - pystfrre_(&ierr); - else - pystfr_(&ierr); - - if (m_rh_decay) - { - std::cout << "\n ------- Doing RHadron Stop decay ---------- " << std::endl; - int kfgl = 1000006;//stop - this->pydat3().mdcy(pycomp_(&kfgl),1)=1;// MDCY(PYCOMP(KFGL),1)=1 //unstable stop - int sq=1000006; - pysqdc_(&sq);//stop DECAY! - } - } - if(m_run_sbottom_hadrons) - { - pysbfrre_(&ierr); - - if (m_rh_decay) - { - std::cout << "\n ------- Doing RHadron Sbottom decay ---------- " << std::endl; - int kfgl = 1000005;//sbottom - this->pydat3().mdcy(pycomp_(&kfgl),1)=1;// MDCY(PYCOMP(KFGL),1)=1 //unstable sbottom - int sq=1000005; - pysqdc_(&sq);//sbottom DECAY! - } - } - - } - - // update event counter - ++m_events; - int mevlist=m_eventlistlevel; - // Is the event to be listed - if ( m_events >= m_firstlistevent && - m_events <= m_lastlistevent) { - ATH_MSG_INFO("PYEVNT event no. " << m_events << " will be listed"); - if (m_frame == "USER ") { - int uspr = 7; - pylist_(&uspr); // Special listing when external generator was selected - } - pylist_(&mevlist); // List this event if required - } - // Tell lunhep to convert from PYJETS to HEPEVT - int mconv=1; - // Do the conversion - // lunhep_(&mconv); // Use STDHEP translation routine 1999/01/27 CG - pyhepc_(&mconv); // Use STDHEP translation routine 1999/01/27 CG - if ( HepMC::HEPEVT_Wrapper::number_entries() <= 0 ) { - std::cout << "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" << std::endl; - std::cout << "!!! " << generator_name(m_ExternalProcess) << " TERMINATES NORMALY: NO MORE EVENTS IN FILE !!!" << std::endl; - std::cout << "!!! PLEASE IGNORE ANY ATHENA ERROR MESSAGES LIKE !!!" << std::endl; - std::cout << "!!! AthenaEventLoopMgr ERROR Terminating event processing loop due to errors !!!" << std::endl; - std::cout << "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" << std::endl; - return StatusCode::FAILURE; - } - HepMC::HEPEVT_Wrapper::set_event_number(m_events); - // HepMC::HEPEVT_Wrapper::print_hepevt(); - return StatusCode::SUCCESS; -} - - -//--------------------------------------------------------------------------- - - -StatusCode PythiaRhad::genFinalize() { - ATH_MSG_INFO(" PYTHIA Ending. \n"); - for (std::vector<int>::iterator i = m_pystatlistlevel.begin(); i != m_pystatlistlevel.end(); ++i) { - ATH_MSG_INFO("Call PYSTAT at endRun with level " << *i); - pystat_(&(*i)); - } - std::cout << "MetaData: cross-section (nb)= " << 1000000. * this->pyint5().xsec(0,3) << std::endl; - - //ACH- Save doubleID for tagging future events in future runs, for StoppedGluinos simulation - if (m_translate_rh_to_stopping_position){ - std::ofstream myfile ("doubleID.txt",std::ios::trunc); - if (myfile.is_open()) { - myfile << m_doubleid <<std::endl; - std::cout<<"Wrote into doubleID.txt: "<<m_doubleid<<std::endl; - myfile.close(); - } - else std::cout << "Unable to open file doubleID.txt for writing!"<<std::endl; - } - - return StatusCode::SUCCESS; -} - - -//--------------------------------------------------------------------------- - - -StatusCode PythiaRhad::fillEvt(GenEvent* evt) { - ATH_MSG_INFO(" PYTHIA Atlas_HEPEVT Filling. \n"); - store_Atlas_HEPEVT(); - - ATH_MSG_DEBUG(" PYTHIA Filling. \n"); - HepMC::IO_HEPEVT hepio; - hepio.set_print_inconsistency_errors(0); - // HepMC::IO_Ascii output("dump.dat",ios::out); - - // Fill event into HepMC and transient store - // std::cout << "====================================================================" << std::endl; - // std::cout << " === Event dump IN PYTHIA: === " << std::endl; - // std::cout << "====================================================================" << std::endl; - // HepMC::HEPEVT_Wrapper::print_hepevt(); - - hepio.fill_next_event(evt); - int pr_id = PYTHIA + m_ExternalProcess + this->pyint1().mint(1); - if (m_ExternalProcess > 0) pr_id = PYTHIA + m_ExternalProcess; - evt->set_signal_process_id(pr_id); - evt->set_random_states(m_seeds); - evt->weights().push_back(this->pypars().pari(7)); - evt->weights().push_back(this->pypars().pari(9)); - evt->weights().push_back(this->pypars().pari(10)); - //evt -> print(); - //cout << " ----------------- END " << endl; - - // Set beam particle status = 4 - if (evt->valid_beam_particles()) { - evt->beam_particles().first->set_status(4); - evt->beam_particles().second->set_status(4); - } - - - // output << evt; - - // Convert cm->mm and GeV->MeV - //cmTomm(evt); - GeVToMeV(evt); - - //Manipulate HepMC info for StoppedGluino simulation. - //Pull out just the parts of the event we want, and possibly boost, rotate, and translate the RHadron decay. - if (m_strip_out_rh) strip_out_rh(evt); - - return StatusCode::SUCCESS; -} - - - - -//For StoppedGluino simulation -void PythiaRhad::strip_out_rh(GenEvent* evt){ - - CLHEP::HepRandomEngine* engine = PythiaRhad::p_AtRndmGenSvc->GetEngine(PythiaRhad::pythia_stream); - //evt->print(); - - if (m_rh_decay){ - //Remove all but (a single) RHadron decay - ATH_MSG_INFO("\n ------- Stripping out all but RHadron decay ---------- "); - std::vector<HepMC::GenVertex*> rhvertices, rhparentvertices; - for (HepMC::GenEvent::vertex_iterator v = evt->vertices_begin(); v != evt->vertices_end(); ++v ) { - HepMC::GenVertex *vv = *v; - for (HepMC::GenVertex::particles_in_const_iterator p = vv->particles_in_const_begin(); p!=vv->particles_in_const_end(); ++p){ - if (std::find(m_rhs.begin(),m_rhs.end(),abs((*p)->pdg_id()))!=m_rhs.end()){ - rhvertices.push_back(vv); - rhparentvertices.push_back((*p)->production_vertex()); - ATH_MSG_INFO("Found RHadron decay!"); - } - } - } - assert (rhvertices.size()==2); - int rh=rand()%2; - std::cout<<"Choosing RHadron "<<rh<<" out of "<<rhvertices.size()<<" total"<<std::endl; - std::list<HepMC::GenVertex*> rhdaughtervertices; - for (HepMC::GenVertex::vertex_iterator rhv = rhvertices[rh]->vertices_begin(HepMC::descendants); rhv!=rhvertices[rh]->vertices_end(HepMC::descendants); ++rhv){ - rhdaughtervertices.push_back(*rhv); - } - std::cout<<"Found "<<rhdaughtervertices.size()<<" descendant vertices of the RHadron"<<std::endl; - HepMC::GenEvent::vertex_iterator v = evt->vertices_begin(); - while ( v != evt->vertices_end() ) { - if (std::find(rhdaughtervertices.begin(), rhdaughtervertices.end(), *v)!=rhdaughtervertices.end()) { - ++v; continue;//a rhadron daughter! - } - if (*v==rhvertices[rh]) { - ++v; continue;//a rhadron! - } - if (*v==rhparentvertices[rh]) { - ++v; continue;//a rhadron parent! - } - HepMC::GenVertex *vv = *v; - evt->remove_vertex(vv); - v = evt->vertices_begin(); - } - - if (m_boost_rh_to_rest_frame){ - std::cout<<"\n--- Boosting to RHadron rest frame---"<<std::endl; - CLHEP::HepLorentzVector mom;//will store the momentum of the RHadron - for ( HepMC::GenVertex::particles_in_const_iterator p = rhvertices[rh]->particles_in_const_begin(); p != rhvertices[rh]->particles_in_const_end(); ++p ) { - HepMC::GenParticle *pp=*p; - //std::cout<<"particle coming into rhadron: "<<std::endl; pp->print(); - if (std::find(m_rhs.begin(),m_rhs.end(),abs(pp->pdg_id()))!=m_rhs.end()){ - FourVector mom4 = pp->momentum(); - mom = CLHEP::HepLorentzVector(mom4.px(),mom4.py(),mom4.pz(),mom4.e()); - std::cout<<"Found RHadron particle momentum: "<<mom<<"\n"<<std::endl; - } - } - //now loop through again and boost back! - CLHEP::Hep3Vector tot_before, tot_after; int nfinal=0; - for ( HepMC::GenEvent::particle_iterator p = evt->particles_begin(); p != evt->particles_end(); ++p ) { - HepMC::GenParticle *pp=*p; - //pp->print(); - FourVector mom4 = pp->momentum(); - CLHEP::HepLorentzVector bm(mom4.px(),mom4.py(),mom4.pz(),mom4.e()); - if (pp->status()==1){ - tot_before+=bm; - } - CLHEP::Hep3Vector vec(-mom.boostVector()); - bm = bm.boost(vec); - pp->set_momentum(bm); - //pp->print(); - if (pp->status()==1){ - FourVector mom4a = pp->momentum(); - CLHEP::HepLorentzVector bma(mom4a.px(),mom4a.py(),mom4a.pz(),mom4a.e()); - tot_after+=bma; - ++nfinal; - } - } - ATH_MSG_INFO("Momentum before boost:"<< tot_before); - ATH_MSG_INFO("Momentum after boost: "<< tot_after); - ATH_MSG_INFO(nfinal << " final-state particles"); - assert(tot_after.mag()<1e-6); - }//m_boost_rh_to_rest_frame - - }//m_rh_decay - else {//!m_rh_decay - //Remove all but the RHadron (stable) particles - ATH_MSG_INFO("\n ------- Stripping out all but RHadron (stable) particles ---------- "); - std::vector<HepMC::GenVertex*> rhvertices; - for (HepMC::GenEvent::vertex_iterator v = evt->vertices_begin(); v != evt->vertices_end(); ++v ) { - HepMC::GenVertex *vv = *v; - for (HepMC::GenVertex::particles_out_const_iterator p = vv->particles_out_const_begin(); p!=vv->particles_out_const_end(); ++p){ - HepMC::GenParticle *pp = *p; - if (std::find(m_rhs.begin(),m_rhs.end(),abs(pp->pdg_id()))!=m_rhs.end()){ - if (pp->status()==1){ - rhvertices.push_back(vv); - ATH_MSG_INFO("Found RHadron vertex!"); - } - else ATH_MSG_INFO("Found RHadon but status is "<<pp->status()<<", not 1 (stable)!"); - } - } - } - assert (rhvertices.size()==2); - HepMC::GenEvent::vertex_iterator v = evt->vertices_begin(); - while ( v != evt->vertices_end() ) { - if (std::find(rhvertices.begin(), rhvertices.end(), *v)!=rhvertices.end()) { - HepMC::GenVertex *vv = *v;//a rhadron! - //remove the other particles in the hadronization of this vertex... - for (HepMC::GenVertex::particles_out_const_iterator p = vv->particles_out_const_begin(); p!=vv->particles_out_const_end(); ++p){ - HepMC::GenParticle *pp = *p; - if (std::find(m_rhs.begin(),m_rhs.end(),abs(pp->pdg_id()))!=m_rhs.end()){ - //std::cout<<"Keeping the RHadron particle, and status = "<<pp->status()<<std::endl; - } - else { - ATH_MSG_INFO("Killing "<<pp->pdg_id()<<" with status "<<pp->status()); - delete vv->remove_particle(pp); - p = vv->particles_out_const_begin();//don't forget to go back to the start of the NEW list... - } - } - ++v; continue; - } - HepMC::GenVertex *vv = *v; - evt->remove_vertex(vv); - v = evt->vertices_begin(); - } - } - - if (m_rotate_rh){ - ATH_MSG_INFO("\n--- Rotating ---"); - double rx = CLHEP::RandFlat::shoot(engine,0.0,2.*M_PI); - double ry = CLHEP::RandFlat::shoot(engine,0.0,2.*M_PI); - double rz = CLHEP::RandFlat::shoot(engine,0.0,2.*M_PI); - ATH_MSG_INFO("rx ry rz = "<<rx<<" "<<ry<<" "<<rz); - CLHEP::Hep3Vector tot_before, tot_after; int nfinal=0; - for ( HepMC::GenEvent::particle_iterator p = evt->particles_begin(); p != evt->particles_end(); ++p ) { - HepMC::GenParticle *pp=*p; - //pp->print(); - FourVector mom4 = pp->momentum(); - CLHEP::HepLorentzVector bm(mom4.px(),mom4.py(),mom4.pz(),mom4.e()); - if (pp->status()==1){ - tot_before+=bm; - } - bm.rotateX(rx); - bm.rotateY(ry); - bm.rotateZ(rz); - pp->set_momentum(bm); - //pp->print(); - if (pp->status()==1){ - FourVector mom4a = pp->momentum(); - CLHEP::HepLorentzVector bma(mom4a.px(),mom4a.py(),mom4a.pz(),mom4a.e()); - tot_after+=bma; - ++nfinal; - } - } - ATH_MSG_INFO("Momentum before rotate:"<< tot_before); - ATH_MSG_INFO("Momentum after rotate: "<< tot_after); - ATH_MSG_INFO(nfinal<<" final-state particles"); - assert((tot_before-tot_after).mag()<1e-6); - } - - if (m_translate_rh_to_stopping_position){ - ATH_MSG_INFO("\n--- Moving ---"); - int rhid = 0; - if (m_StoppingInput.size()>1) { - unsigned int e=m_events; - ATH_MSG_INFO("Using stopping input from vector position "<<e); - if (e>=m_StoppingInput.size()) { - ATH_MSG_WARNING("FAILURE! Out of stopping inputs! Only "<<m_StoppingInput.size()<<" were input!"); - } - m_xshift=m_StoppingInput[e][0]; - m_yshift=m_StoppingInput[e][1]; - m_zshift=m_StoppingInput[e][2]; - //m_tshift=m_StoppingInput[e][3]; //we want the time of the DECAY, not the stopping time... - if (m_randomtshift!=0){ - //adjust time according to flat distribution within +-randomtshift ns - m_tshift = CLHEP::RandFlat::shoot(engine,-m_randomtshift,m_randomtshift); - } - if (fabs(m_StoppingInput[e][4]-2)<.1){ - if (fabs(m_StoppingInput[e][5]-1)<.1) rhid=1; - if (fabs(m_StoppingInput[e][5]-2)<.1) rhid=2; - ATH_MSG_WARNING("Two stopped in an event!"<<rhid); - if (rhid==1) { - m_doubleid++; - ATH_MSG_DEBUG("m_doubleid is now = "<<m_doubleid); - } - } - } - ATH_MSG_INFO("shift x y z t = "<<m_xshift<<"mm "<<m_yshift<<"mm "<<m_zshift<<"mm "<<m_tshift<<"ns"); - for (HepMC::GenEvent::vertex_iterator v = evt->vertices_begin(); v != evt->vertices_end(); ++v ) { - HepMC::GenVertex *vv = *v; - - //The id will be used to keep track of a unique ID which will be the same for each pair of "double stop" decays - if (rhid>0) vv->set_id(m_doubleid); - else vv->set_id(-1); - - FourVector pos = vv->position(); - CLHEP::HepLorentzVector hpos(pos.x(),pos.y(),pos.z(),pos.t()); - //std::cout<<"position/time before: "<<hpos<<std::endl; - //tshift gets multiplied by 300 because HepMC uses units of mm/c = 3.33e-12s or 0.00333ns - vv->set_position(FourVector(hpos.x()+m_xshift,hpos.y()+m_yshift,hpos.z()+m_zshift,hpos.t()+m_tshift*300.)); - FourVector posa = vv->position(); - CLHEP::HepLorentzVector hposa(posa.x(),posa.y(),posa.z(),posa.t()); - //std::cout<<"position/time after: "<<hposa<<std::endl; - } - } - - ATH_MSG_INFO("\n--- Done with RHadron decay manipulations ---\n"); -} diff --git a/Generators/PythiaRhad_i/src/PythiaRhadModified/pyprep.F b/Generators/PythiaRhad_i/src/PythiaRhadModified/pyprep.F deleted file mode 100644 index 653756b91663ec68d6c26e777471357a0ec32a33..0000000000000000000000000000000000000000 --- a/Generators/PythiaRhad_i/src/PythiaRhadModified/pyprep.F +++ /dev/null @@ -1,1495 +0,0 @@ -C from http://pythia6.hepforge.org/svn/tags/v_6_4_27/pyprep.f - -C********************************************************************* - -C...PYPREP -C...Rearranges partons along strings. -C...Special considerations for systems with junctions, with -C...possibility of junction-antijunction annihilation. -C...Allows small systems to collapse into one or two particles. -C...Checks flavours and colour singlet invariant masses. - - SUBROUTINE PYPREP(IP) - -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - INTEGER PYK,PYCHGE,PYCOMP -C...Commonblocks. - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) - COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) - COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5) - COMMON/PYINT1/MINT(400),VINT(400) -C...The common block of colour tags. - COMMON/PYCTAG/NCT,MCT(4000,2) - SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYINT1/,/PYCTAG/, - &/PYPARS/ - DATA NERRPR/0/ - SAVE NERRPR -C...Local arrays. - DIMENSION DPS(5),DPC(5),UE(3),PG(5),E1(3),E2(3),E3(3),E4(3), - &ECL(3),IJUNC(10,0:4),IPIECE(30,0:4),KFEND(4),KFQ(4), - &IJUR(4),PJU(4,6),IRNG(4,2),TJJ(2,5),T(5),PUL(3,5), - &IJCP(0:6),TJUOLD(5) - CHARACTER CHTMP*6 - -C...Function to give four-product. - FOUR(I,J)=P(I,4)*P(J,4)-P(I,1)*P(J,1)-P(I,2)*P(J,2)-P(I,3)*P(J,3) - -C...Rearrange parton shower product listing along strings: begin loop. - MSTU(24)=0 - NOLD=N - I1=N - NJUNC=0 - NPIECE=0 - NJJSTR=0 - MSTU32=MSTU(32)+1 - DO 100 I=MAX(1,IP),N -C...First store junction positions. - IF(K(I,1).EQ.42) THEN - NJUNC=NJUNC+1 - IJUNC(NJUNC,0)=I - IJUNC(NJUNC,4)=0 - ENDIF - 100 CONTINUE - - DO 250 MQGST=1,3 - DO 240 I=MAX(1,IP),N -C...Special treatment for junctions - IF (K(I,1).LE.0) GOTO 240 - IF(K(I,1).EQ.42) THEN -C...MQGST=2: Look for junction-junction strings (not detected in the -C...main search below). - IF (MQGST.EQ.2.AND.NPIECE.NE.3*NJUNC) THEN - IF (NJJSTR.EQ.0) THEN - NJJSTR = (3*NJUNC-NPIECE)/2 - ENDIF -C...Check how many already identified strings end on this junction - ILC=0 - DO 110 J=1,NPIECE - IF (IPIECE(J,4).EQ.I) ILC=ILC+1 - 110 CONTINUE -C...If less than 3, remaining must be to another junction - IF (ILC.LT.3) THEN - IF (ILC.NE.2) THEN -C...Multiple j-j connections not handled yet. - CALL PYERRM(2, - & '(PYPREP:) Too many junction-junction strings.') - MINT(51)=1 - RETURN - ENDIF -C...The colour information in the junction is unreadable for the -C...colour space search further down in this routine, so we must -C...start on the colour mother of this junction and then "artificially" -C...prevent the colour mother from connecting here again. - ITJUNC=MOD(K(I,4)/MSTU(5),MSTU(5)) - KCS=4 - IF (MOD(ITJUNC,2).EQ.0) KCS=5 -C...Switch colour if the junction-junction leg is presumably a -C...junction mother leg rather than a junction daughter leg. - IF (ITJUNC.GE.3) KCS=9-KCS - IF (MINT(33).EQ.0) THEN -C...Find the unconnected leg and reorder junction daughter pointers so -C...MOD(K(I,4),MSTU(5)) always points to the junction-junction string -C...piece. - IA=MOD(K(I,4),MSTU(5)) - IF (K(IA,KCS)/MSTU(5)**2.GE.2) THEN - ITMP=MOD(K(I,5),MSTU(5)) - IF (K(ITMP,KCS)/MSTU(5)**2.GE.2) THEN - ITMP=MOD(K(I,5)/MSTU(5),MSTU(5)) - K(I,5)=K(I,5)+(IA-ITMP)*MSTU(5) - ELSE - K(I,5)=K(I,5)+(IA-ITMP) - ENDIF - K(I,4)=K(I,4)+(ITMP-IA) - IA=ITMP - ENDIF - IF (ITJUNC.LE.2) THEN -C...Beam baryon junction - K(IA,KCS) = K(IA,KCS) + 2*MSTU(5)**2 - K(I,KCS) = K(I,KCS) + 1*MSTU(5)**2 -C...Else 1 -> 2 decay junction - ELSE - K(IA,KCS) = K(IA,KCS) + MSTU(5)**2 - K(I,KCS) = K(I,KCS) + 2*MSTU(5)**2 - ENDIF - I1BEG = I1 - NSTP = 0 - GOTO 170 -C...Alternatively use colour tag information. - ELSE -C...Find a final state parton with appropriate dangling colour tag. - JCT=0 - IA=0 - IJUMO=K(I,3) - DO 140 J1=MAX(1,IP),N - IF (K(J1,1).NE.3) GOTO 140 -C...Check for matching final-state colour tag - IMATCH=0 - DO 120 J2=MAX(1,IP),N - IF (K(J2,1).NE.3) GOTO 120 - IF (MCT(J1,KCS-3).EQ.MCT(J2,6-KCS)) IMATCH=1 - 120 CONTINUE - IF (IMATCH.EQ.1) GOTO 140 -C...Check whether this colour tag belongs to the present junction -C...by seeing whether any parton with this colour tag has the same -C...mother as the junction. - JCT=MCT(J1,KCS-3) - IMATCH=0 - DO 130 J2=MINT(84)+1,N - IMO2=K(J2,3) -C...First scattering partons have IMO1 = 3 and 4. - IF (IMO2.EQ.MINT(83)+3.OR.IMO2.EQ.MINT(83)+4) - & IMO2=IMO2-2 - IF (MCT(J2,KCS-3).EQ.JCT.AND.IMO2.EQ.IJUMO) - & IMATCH=1 - 130 CONTINUE - IF (IMATCH.EQ.0) GOTO 140 - IA=J1 - 140 CONTINUE -C...Check for junction-junction strings without intermediate final state -C...glue (not detected above). - IF (IA.EQ.0) THEN - DO 160 MJU=1,NJUNC - IJU2=IJUNC(MJU,0) - IF (IJU2.EQ.I) GOTO 160 - ITJU2=MOD(K(IJU2,4)/MSTU(5),MSTU(5)) -C...Only opposite types of junctions can connect to each other. - IF (MOD(ITJU2,2).EQ.MOD(ITJUNC,2)) GOTO 160 - IS=0 - DO 150 J=1,NPIECE - IF (IPIECE(J,4).EQ.IJU2) IS=IS+1 - 150 CONTINUE - IF (IS.EQ.3) GOTO 160 - IB=I - IA=IJU2 - 160 CONTINUE - ENDIF -C...Switch to other side of adjacent parton and step from there. - KCS=9-KCS - I1BEG = I1 - NSTP = 0 - GOTO 170 - ENDIF - ELSE IF (ILC.NE.3) THEN - ENDIF - ENDIF - ENDIF - -C...Look for coloured string endpoint, or (later) leftover gluon. - IF(K(I,1).NE.3) GOTO 240 - KC=PYCOMP(K(I,2)) - IF(KC.EQ.0) GOTO 240 - KQ=KCHG(KC,2) - IF(KQ.EQ.0.OR.(MQGST.LE.2.AND.KQ.EQ.2)) GOTO 240 - -C...Pick up loose string end. - KCS=4 - IF(KQ*ISIGN(1,K(I,2)).LT.0) KCS=5 - IA=I - IB=I - I1BEG=I1 - NSTP=0 - 170 NSTP=NSTP+1 - IF(NSTP.GT.4*N) THEN - CALL PYERRM(14,'(PYPREP:) caught in infinite loop') - MINT(51)=1 - RETURN - ENDIF - -C...Copy undecayed parton. Finished if reached string endpoint. - IF(K(IA,1).EQ.3) THEN - IF(I1.GE.MSTU(4)-MSTU32-5) THEN - CALL PYERRM(11,'(PYPREP:) no more memory left in PYJETS') - MINT(51)=1 - MSTU(24)=1 - RETURN - ENDIF - I1=I1+1 - K(I1,1)=2 - IF(NSTP.GE.2.AND.KCHG(PYCOMP(K(IA,2)),2).NE.2) K(I1,1)=1 - K(I1,2)=K(IA,2) - K(I1,3)=IA - K(I1,4)=0 - K(I1,5)=0 - DO 180 J=1,5 - P(I1,J)=P(IA,J) - V(I1,J)=V(IA,J) - 180 CONTINUE - K(IA,1)=K(IA,1)+10 - IF(K(I1,1).EQ.1) GOTO 240 - ENDIF - -C...Also finished (for now) if reached junction; then copy to end. - IF(K(IA,1).EQ.42) THEN - NCOPY=I1-I1BEG - IF(I1.GE.MSTU(4)-MSTU32-NCOPY-5) THEN - CALL PYERRM(11,'(PYPREP:) no more memory left in PYJETS') - MINT(51)=1 - MSTU(24)=1 - RETURN - ENDIF - IF (MQGST.LE.2.AND.NCOPY.NE.0) THEN - DO 200 ICOPY=1,NCOPY - DO 190 J=1,5 - K(MSTU(4)-MSTU32-ICOPY,J)=K(I1BEG+ICOPY,J) - P(MSTU(4)-MSTU32-ICOPY,J)=P(I1BEG+ICOPY,J) - V(MSTU(4)-MSTU32-ICOPY,J)=V(I1BEG+ICOPY,J) - 190 CONTINUE - 200 CONTINUE - ENDIF -C...For junction-junction strings, find end leg and reorder junction -C...daughter pointers so MOD(K(I,4),MSTU(5)) always points to the -C...junction-junction string piece. - IF (K(I,1).EQ.42.AND.MINT(33).EQ.0) THEN - ITMP=MOD(K(IA,4),MSTU(5)) - IF (ITMP.NE.IB) THEN - IF (MOD(K(IA,5),MSTU(5)).EQ.IB) THEN - K(IA,5)=K(IA,5)+(ITMP-IB) - ELSE - K(IA,5)=K(IA,5)+(ITMP-IB)*MSTU(5) - ENDIF - K(IA,4)=K(IA,4)+(IB-ITMP) - ENDIF - ENDIF - NPIECE=NPIECE+1 -C...IPIECE: -C...0: endpoint in original ER -C...1: -C...2: -C...3: Parton immediately next to junction -C...4: Junction - IPIECE(NPIECE,0)=I - IPIECE(NPIECE,1)=MSTU32+1 - IPIECE(NPIECE,2)=MSTU32+NCOPY - IPIECE(NPIECE,3)=IB - IPIECE(NPIECE,4)=IA - MSTU32=MSTU32+NCOPY - I1=I1BEG - GOTO 240 - ENDIF - -C...GOTO next parton in colour space. - IB=IA - IF (MINT(33).EQ.0) THEN - IF(MOD(K(IB,KCS)/MSTU(5)**2,2).EQ.0.AND.MOD(K(IB,KCS),MSTU(5 - & )).NE.0) THEN - IA=MOD(K(IB,KCS),MSTU(5)) - K(IB,KCS)=K(IB,KCS)+MSTU(5)**2 - MREV=0 - ELSE - IF(K(IB,KCS).GE.2*MSTU(5)**2.OR.MOD(K(IB,KCS)/MSTU(5), - & MSTU(5)).EQ.0) KCS=9-KCS - IA=MOD(K(IB,KCS)/MSTU(5),MSTU(5)) - K(IB,KCS)=K(IB,KCS)+2*MSTU(5)**2 - MREV=1 - ENDIF - IF(IA.LE.0.OR.IA.GT.N) THEN - CALL PYERRM(12,'(PYPREP:) colour rearrangement failed') - IF(NERRPR.LT.5) THEN - NERRPR=NERRPR+1 - WRITE(MSTU(11),*) 'started at:', I - WRITE(MSTU(11),*) 'ended going from',IB,' to',IA - WRITE(MSTU(11),*) 'MQGST =',MQGST - CALL PYLIST(4) - ENDIF - MINT(51)=1 - RETURN - ENDIF - IF(MOD(K(IA,4)/MSTU(5),MSTU(5)).EQ.IB.OR.MOD(K(IA,5)/MSTU(5) - & ,MSTU(5)).EQ.IB) THEN - IF(MREV.EQ.1) KCS=9-KCS - IF(MOD(K(IA,KCS)/MSTU(5),MSTU(5)).NE.IB) KCS=9-KCS - K(IA,KCS)=K(IA,KCS)+2*MSTU(5)**2 - ELSE - IF(MREV.EQ.0) KCS=9-KCS - IF(MOD(K(IA,KCS),MSTU(5)).NE.IB) KCS=9-KCS - K(IA,KCS)=K(IA,KCS)+MSTU(5)**2 - ENDIF - IF(IA.NE.I) GOTO 170 -C...Use colour tag information - ELSE -C...First create colour tags starting on IB if none already present. - IF (MCT(IB,KCS-3).EQ.0) THEN - CALL PYCTTR(IB,KCS,IB) - IF(MINT(51).NE.0) RETURN - ENDIF - JCT=MCT(IB,KCS-3) - IFOUND=0 -C...Find final state tag partner - DO 210 IT=MAX(1,IP),N - IF (IT.EQ.IB) GOTO 210 - IF (MCT(IT,6-KCS).EQ.JCT.AND.K(IT,1).LT.10.AND.K(IT,1).GT - & .0) THEN - IFOUND=IFOUND+1 - IA=IT - ENDIF - 210 CONTINUE -C...Just copy and goto next if exactly one partner found. - IF (IFOUND.EQ.1) THEN - GOTO 170 -C...When no match found, match is presumably junction. - ELSEIF (IFOUND.EQ.0.AND.MQGST.LE.2) THEN -C...Check whether this colour tag matches a junction -C...by seeing whether any parton with this colour tag has the same -C...mother as a junction. -C...NB: Only type 1 and 2 junctions handled presently. - DO 230 IJU=1,NJUNC - IJUMO=K(IJUNC(IJU,0),3) - ITJUNC=MOD(K(IJUNC(IJU,0),4)/MSTU(5),MSTU(5)) -C...Colours only connect to junctions, anti-colours to antijunctions: - IF (MOD(ITJUNC+1,2)+1.NE.KCS-3) GOTO 230 - IMATCH=0 - DO 220 J1=MAX(1,IP),N - IF (K(J1,1).LE.0) GOTO 220 -C...First scattering partons have IMO1 = 3 and 4. - IMO=K(J1,3) - IF (IMO.EQ.MINT(83)+3.OR.IMO.EQ.MINT(83)+4) - & IMO=IMO-2 - IF (MCT(J1,KCS-3).EQ.JCT.AND.IMO.EQ.IJUMO.AND.MOD(K(J1 - & ,3+ITJUNC)/MSTU(5),MSTU(5)).EQ.IJUNC(IJU,0)) - & IMATCH=1 -C...Attempt at handling type > 3 junctions also. Not tested. - IF (ITJUNC.GE.3.AND.MCT(J1,6-KCS).EQ.JCT.AND.IMO.EQ - & .IJUMO) IMATCH=1 - 220 CONTINUE - IF (IMATCH.EQ.0) GOTO 230 - IA=IJUNC(IJU,0) - IFOUND=IFOUND+1 - 230 CONTINUE - - IF (IFOUND.EQ.1) THEN - GOTO 170 - ELSEIF (IFOUND.EQ.0) THEN - WRITE(CHTMP,'(I6)') JCT - CALL PYERRM(12,'(PYPREP:) no matching colour tag: ' - & //CHTMP) - IF(NERRPR.LT.5) THEN - NERRPR=NERRPR+1 - CALL PYLIST(4) - ENDIF - MINT(51)=1 - RETURN - ENDIF - ELSEIF (IFOUND.GE.2) THEN - WRITE(CHTMP,'(I6)') JCT - CALL PYERRM(12 - & ,'(PYPREP:) too many occurences of colour line: '// - & CHTMP) - IF(NERRPR.LT.5) THEN - NERRPR=NERRPR+1 - CALL PYLIST(4) - ENDIF - MINT(51)=1 - RETURN - ENDIF - ENDIF - K(I1,1)=1 - 240 CONTINUE - 250 CONTINUE - -C...Junction systems remain. - IJU=0 - IJUS=0 - IJUCNT=0 - MREV=0 - IJJSTR=0 - 260 IJUCNT=IJUCNT+1 - IF (IJUCNT.LE.NJUNC) THEN -C...If we are not processing a j-j string, treat this junction as new. - IF (IJJSTR.EQ.0) THEN - IJU=IJUNC(IJUCNT,0) - MREV=0 -C...If junction has already been read, ignore it. - IF (IJUNC(IJUCNT,4).EQ.1) GOTO 260 -C...If we are on a j-j string, goto second j-j junction. - ELSE - IJUCNT=IJUCNT-1 - IJU=IJUS - ENDIF -C...Mark selected junction read. - DO 270 J=1,NJUNC - IF (IJUNC(J,0).EQ.IJU) IJUNC(J,4)=1 - 270 CONTINUE -C...Determine junction type - ITJUNC = MOD(K(IJU,4)/MSTU(5),MSTU(5)) -C...Type 1 and 2 junctions: ~chi -> q q q, ~chi -> qbar,qbar,qbar -C...Type 3 and 4 junctions: ~qbar -> q q , ~q -> qbar qbar -C...Type 5 and 6 junctions: ~g -> q q q, ~g -> qbar qbar qbar - IF (ITJUNC.GE.1.AND.ITJUNC.LE.6) THEN - IHK=0 - 280 IHK=IHK+1 -C...Find which quarks belong to given junction. - IHF=0 - DO 290 IPC=1,NPIECE - IF (IPIECE(IPC,4).EQ.IJU) THEN - IHF=IHF+1 - IF (IHF.EQ.IHK) IEND=IPIECE(IPC,3) - ENDIF - IF (IHK.EQ.3.AND.IPIECE(IPC,0).EQ.IJU) IEND=IPIECE(IPC,3) - 290 CONTINUE -C...IHK = 3 is special. Either normal string piece, or j-j string. - IF(IHK.EQ.3) THEN - IF (MREV.NE.1) THEN - DO 300 IPC=1,NPIECE -C...If there is a j-j string starting on the present junction which has -C...zero length, insert next junction immediately. - IF (IPIECE(IPC,0).EQ.IJU.AND.K(IPIECE(IPC,4),1) - & .EQ.42.AND.IPIECE(IPC,1)-1-IPIECE(IPC,2).EQ.0) THEN - IJJSTR = 1 - GOTO 340 - ENDIF - 300 CONTINUE - MREV = 1 -C...If MREV is 1 and IHK is 3 we are finished with this system. - ELSE - MREV=0 - GOTO 260 - ENDIF - ENDIF - -C...If we've gotten this far, then either IHK < 3, or -C...an interjunction string exists, or just a third normal string. - IJUNC(IJUCNT,IHK)=0 - IJJSTR = 0 -C..Order pieces belonging to this junction. Also look for j-j. - DO 310 IPC=1,NPIECE - IF (IPIECE(IPC,3).EQ.IEND) IJUNC(IJUCNT,IHK)=IPC - IF (IHK.EQ.3.AND.IPIECE(IPC,0).EQ.IJUNC(IJUCNT,0) - & .AND.K(IPIECE(IPC,4),1).EQ.42) THEN - IJUNC(IJUCNT,IHK)=IPC - IJJSTR = 1 - MREV = 0 - ENDIF - 310 CONTINUE -C...Copy back chains in proper order. MREV=0/1 : descending/ascending - IPC=IJUNC(IJUCNT,IHK) -C...Temporary solution to cover for bug. - IF(IPC.LE.0) THEN - CALL PYERRM(12,'(PYPREP:) fails to hook up junctions') - MINT(51)=1 - RETURN - ENDIF - DO 330 ICP=IPIECE(IPC,1+MREV),IPIECE(IPC,2-MREV),1-2*MREV - I1=I1+1 - DO 320 J=1,5 - K(I1,J)=K(MSTU(4)-ICP,J) - P(I1,J)=P(MSTU(4)-ICP,J) - V(I1,J)=V(MSTU(4)-ICP,J) - 320 CONTINUE - 330 CONTINUE - K(I1,1)=2 -C...Mark last quark. - IF (MREV.EQ.1.AND.IHK.GE.2) K(I1,1)=1 -C...Do not insert junctions at wrong places. - IF(IHK.LT.2.OR.MREV.NE.0) GOTO 360 -C...Insert junction. - 340 IJUS = IJU - IF (IHK.EQ.3) THEN -C...Shift to end junction if a j-j string has been processed. - IF (IJJSTR.NE.0) IJUS = IPIECE(IPC,4) - MREV= 1 - ENDIF - I1=I1+1 - DO 350 J=1,5 - K(I1,J)=0 - P(I1,J)=0. - V(I1,J)=0. - 350 CONTINUE - K(I1,1)=41 - K(IJUS,1)=K(IJUS,1)+10 - K(I1,2)=K(IJUS,2) - K(I1,3)=IJUS - 360 IF (IHK.LT.3) GOTO 280 - ELSE - CALL PYERRM(12,'(PYPREP:) Unknown junction type') - MINT(51)=1 - RETURN - ENDIF - IF (IJUCNT.NE.NJUNC) GOTO 260 - ENDIF - N=I1 - -C...Rearrange three strings from junction, e.g. in case one has been -C...shortened by shower, so the last is the largest-energy one. - IF(NJUNC.GE.1) THEN -C...Find systems with exactly one junction. - MJUN1=0 - NBEG=NOLD+1 - DO 470 I=NOLD+1,N - IF(K(I,1).NE.1.AND.K(I,1).NE.41) THEN - ELSEIF(K(I,1).EQ.41) THEN - MJUN1=MJUN1+1 - ELSEIF(K(I,1).EQ.1.AND.MJUN1.NE.1) THEN - MJUN1=0 - NBEG=I+1 - ELSE - NEND=I -C...Sum up energy-momentum in each junction string. - DO 370 J=1,5 - PJU(1,J)=0D0 - PJU(2,J)=0D0 - PJU(3,J)=0D0 - 370 CONTINUE - NJU=0 - DO 390 I1=NBEG,NEND - IF(K(I1,2).NE.21) THEN - NJU=NJU+1 - IJUR(NJU)=I1 - ENDIF - DO 380 J=1,5 - PJU(MIN(NJU,3),J)=PJU(MIN(NJU,3),J)+P(I1,J) - 380 CONTINUE - 390 CONTINUE -C...Find which of them has highest energy (minus mass) in rest frame. - DO 400 J=1,5 - PJU(4,J)=PJU(1,J)+PJU(2,J)+PJU(3,J) - 400 CONTINUE - PMJU=SQRT(MAX(0D0,PJU(4,4)**2-PJU(4,1)**2-PJU(4,2)**2- - & PJU(4,3)**2)) - DO 410 I2=1,3 - PJU(I2,6)=(PJU(4,4)*PJU(I2,4)-PJU(4,1)*PJU(I2,1)- - & PJU(4,2)*PJU(I2,2)-PJU(4,3)*PJU(I2,3))/PMJU-PJU(I2,5) - 410 CONTINUE - IF(PJU(3,6).LT.MIN(PJU(1,6),PJU(2,6))) THEN -C...Decide how to rearrange so that new last has highest energy. - IF(PJU(1,6).LT.PJU(2,6)) THEN - IRNG(1,1)=IJUR(1) - IRNG(1,2)=IJUR(2)-1 - IRNG(2,1)=IJUR(4) - IRNG(2,2)=IJUR(3)+1 - IRNG(4,1)=IJUR(3)-1 - IRNG(4,2)=IJUR(2) - ELSE - IRNG(1,1)=IJUR(4) - IRNG(1,2)=IJUR(3)+1 - IRNG(2,1)=IJUR(2) - IRNG(2,2)=IJUR(3)-1 - IRNG(4,1)=IJUR(2)-1 - IRNG(4,2)=IJUR(1) - ENDIF - IRNG(3,1)=IJUR(3) - IRNG(3,2)=IJUR(3) -C...Copy in correct order below bottom of current event record. - I2=N - DO 440 II=1,4 - DO 430 I1=IRNG(II,1),IRNG(II,2), - & ISIGN(1,IRNG(II,2)-IRNG(II,1)) - I2=I2+1 - IF(I2.GE.MSTU(4)-MSTU32-5) THEN - CALL PYERRM(11, - & '(PYPREP:) no more memory left in PYJETS') - MINT(51)=1 - MSTU(24)=1 - RETURN - ENDIF - DO 420 J=1,5 - K(I2,J)=K(I1,J) - P(I2,J)=P(I1,J) - V(I2,J)=V(I1,J) - 420 CONTINUE - IF(K(I2,1).EQ.1) K(I2,1)=2 - 430 CONTINUE - 440 CONTINUE - K(I2,1)=1 -C...Copy back up, overwriting but now in correct order. - DO 460 I1=NBEG,NEND - I2=I1-NBEG+N+1 - DO 450 J=1,5 - K(I1,J)=K(I2,J) - P(I1,J)=P(I2,J) - V(I1,J)=V(I2,J) - 450 CONTINUE - 460 CONTINUE - ENDIF - MJUN1=0 - NBEG=I+1 - ENDIF - 470 CONTINUE - -C...Check whether q-q-j-j-qbar-qbar systems should be collapsed -C...to two q-qbar systems. -C...(MSTJ(19)=1 forces q-q-j-j-qbar-qbar.) - IF (MSTJ(19).NE.1) THEN - MJUN1 = 0 - JJGLUE = 0 - NBEG = NOLD+1 -C...Force collapse when MSTJ(19)=2. - IF (MSTJ(19).EQ.2) THEN - DELMJJ = 1D9 - DELMQQ = 0D0 - ENDIF -C...Find systems with exactly two junctions. - DO 700 I=NOLD+1,N -C...Count junctions - IF (K(I,1).EQ.41) THEN - MJUN1 = MJUN1+1 -C...Check for interjunction gluons - IF (MJUN1.EQ.2.AND.K(I-1,1).NE.41) THEN - JJGLUE = 1 - ENDIF - ELSEIF(K(I,1).EQ.1.AND.(MJUN1.NE.2)) THEN -C...If end of system reached with either zero or one junction, restart -C...with next system. - MJUN1 = 0 - JJGLUE = 0 - NBEG = I+1 - ELSEIF(K(I,1).EQ.1) THEN -C...If end of system reached with exactly two junctions, compute string -C...length measure for the (q-q-j-j-qbar-qbar) topology and compare with -C...length measure for the (q-qbar)(q-qbar) topology. - NEND=I -C...Loop down through chain. - ISID=0 - DO 480 I1=NBEG,NEND -C...Store string piece division locations in event record - IF (K(I1,2).NE.21) THEN - ISID = ISID+1 - IJCP(ISID) = I1 - ENDIF - 480 CONTINUE -C...Randomly choose between (1,3)(2,4) and (1,4)(2,3) topologies. - ISW=0 - IF (PYR(0).LT.0.5D0) ISW=1 -C...Randomly choose which qqbar string gets the jj gluons. - IGS=1 - IF (PYR(0).GT.0.5D0) IGS=2 -C...Only compute string lengths when no topology forced. - IF (MSTJ(19).EQ.0) THEN -C...Repeat following for each junction - DO 570 IJU=1,2 -C...Initialize iterative procedure for finding JRF - IJRFIT=0 - DO 490 IX=1,3 - TJUOLD(IX)=0D0 - 490 CONTINUE - TJUOLD(4)=1D0 -C...Start iteration. Sum up momenta in string pieces - 500 DO 540 IJS=1,3 -C...JD=-1 for first junction, +1 for second junction. -C...Find out where piece starts and ends and which direction to go. - JD=2*IJU-3 - IF (IJS.LE.2) THEN - IA = IJCP((IJU-1)*7 - JD*(IJS+1)) + JD - IB = IJCP((IJU-1)*7 - JD*IJS) - ELSEIF (IJS.EQ.3) THEN - JD =-JD - IA = IJCP((IJU-1)*7 + JD*(IJS)) + JD - IB = IJCP((IJU-1)*7 + JD*(IJS+3)) - ENDIF -C...Initialize junction pull 4-vector. - DO 510 J=1,5 - PUL(IJS,J)=0D0 - 510 CONTINUE -C...Initialize weight - PWT = 0D0 - PWTOLD = 0D0 -C...Sum up (weighted) momenta along each string piece - DO 530 ISP=IA,IB,JD -C...If present parton not last in chain - IF (ISP.NE.IA.AND.ISP.NE.IB) THEN -C...If last parton was a junction, store present weight - IF (K(ISP-JD,2).EQ.88) THEN - PWTOLD = PWT -C...If last parton was a quark, reset to stored weight. - ELSEIF (K(ISP-JD,2).NE.21) THEN - PWT = PWTOLD - ENDIF - ENDIF -C...Skip next parton if weight already large - IF (PWT.GT.10D0) GOTO 530 -C...Compute momentum in TJUOLD frame: - TDP=TJUOLD(1)*P(ISP,1)+TJUOLD(2)*P(ISP,2)+TJUOLD(3 - & )*P(ISP,3) - BFC=TDP/(1D0+TJUOLD(4))+P(ISP,4) - DO 520 J=1,3 - TMP=P(ISP,J)+TJUOLD(J)*BFC - PUL(IJS,J)=PUL(IJS,J)+TMP*EXP(-PWT) - 520 CONTINUE -C...Boosted energy - TMP=TJUOLD(4)*P(ISP,4)+TDP - PUL(IJS,4)=PUL(IJS,J)+TMP*EXP(-PWT) -C...Update weight - PWT=PWT+TMP/PARJ(48) -C...Put |p| rather than m in 5th slot - PUL(IJS,5)=SQRT(PUL(IJS,1)**2+PUL(IJS,2)**2 - & +PUL(IJS,3)**2) - 530 CONTINUE - 540 CONTINUE -C...Compute boost - IJRFIT=IJRFIT+1 - CALL PYJURF(PUL,T) -C...Combine new boost (T) with old boost (TJUOLD) - TMP=T(1)*TJUOLD(1)+T(2)*TJUOLD(2)+T(3)*TJUOLD(3) - DO 550 IX=1,3 - TJUOLD(IX)=T(IX)+TJUOLD(IX)*(TMP/(1D0+TJUOLD(4))+T(4 - & )) - 550 CONTINUE - TJUOLD(4)=SQRT(1D0+TJUOLD(1)**2+TJUOLD(2)**2+TJUOLD(3) - & **2) -C...If last boost small, accept JRF, else iterate. -C...Also prevent possibility of infinite loop. - IF (ABS((T(4)-1D0)/TJUOLD(4)).GT.0.01D0.AND. - & IJRFIT.LT.MSTJ(18))THEN - GOTO 500 - ELSEIF (IJRFIT.GE.MSTJ(18)) THEN - CALL PYERRM(1,'(PYPREP:) failed to converge on JRF') - ENDIF -C...Store final boost, with change of sign since TJJ motion vector. - DO 560 IX=1,3 - TJJ(IJU,IX)=-TJUOLD(IX) - 560 CONTINUE - TJJ(IJU,4)=SQRT(1D0+TJJ(IJU,1)**2+TJJ(IJU,2)**2 - & +TJJ(IJU,3)**2) - 570 CONTINUE -C...String length measure for (q-qbar)(q-qbar) topology. -C...Note only momenta of nearest partons used (since rest of system -C...identical). - IF (JJGLUE.EQ.0) THEN - DELMQQ=4D0*FOUR(IJCP(2)-1,IJCP(4+ISW)+1)*FOUR(IJCP(3) - & -1,IJCP(5-ISW)+1) - ELSE -C...Put jj gluons on selected string (IGS selected randomly above). - IF (IGS.EQ.1) THEN - DELMQQ=8D0*FOUR(IJCP(2)-1,IJCP(4)-1)*FOUR(IJCP(3)+1 - & ,IJCP(4+ISW)+1)*FOUR(IJCP(3)-1,IJCP(5-ISW)+1) - ELSE - DELMQQ=8D0*FOUR(IJCP(2)-1,IJCP(4+ISW)+1) - & *FOUR(IJCP(3)-1,IJCP(4)-1)*FOUR(IJCP(3)+1 - & ,IJCP(5-ISW)+1) - ENDIF - ENDIF -C...String length measure for q-q-j-j-q-q topology. - T1G1=0D0 - T2G2=0D0 - T1T2=0D0 - T1P1=0D0 - T1P2=0D0 - T2P3=0D0 - T2P4=0D0 - ISGN=-1 -C...Note only momenta of nearest partons used (since rest of system -C...identical). - DO 580 IX=1,4 - IF (IX.EQ.4) ISGN=1 - T1P1=T1P1+ISGN*TJJ(1,IX)*P(IJCP(2)-1,IX) - T1P2=T1P2+ISGN*TJJ(1,IX)*P(IJCP(3)-1,IX) - T2P3=T2P3+ISGN*TJJ(2,IX)*P(IJCP(4)+1,IX) - T2P4=T2P4+ISGN*TJJ(2,IX)*P(IJCP(5)+1,IX) - IF (JJGLUE.EQ.0) THEN -C...Junction motion vector dot product gives length when inter-junction -C...gluons absent. - T1T2=T1T2+ISGN*TJJ(1,IX)*TJJ(2,IX) - ELSE -C...Junction motion vector dot products with gluon momenta give length -C...when inter-junction gluons present. - T1G1=T1G1+ISGN*TJJ(1,IX)*P(IJCP(3)+1,IX) - T2G2=T2G2+ISGN*TJJ(2,IX)*P(IJCP(4)-1,IX) - ENDIF - 580 CONTINUE - DELMJJ=16D0*T1P1*T1P2*T2P3*T2P4 - IF (JJGLUE.EQ.0) THEN - DELMJJ=DELMJJ*(T1T2+SQRT(T1T2**2-1)) - ELSE - DELMJJ=DELMJJ*4D0*T1G1*T2G2 - ENDIF - ENDIF -C...If delmjj > delmqq collapse string system to q-qbar q-qbar -C...(Always the case for MSTJ(19)=2 due to initialization above) - IF (DELMJJ.GT.DELMQQ) THEN -C...Put new system at end of event record - NCOP=N - DO 650 IST=1,2 - DO 600 ICOP=IJCP(IST),IJCP(IST+1)-1 - NCOP=NCOP+1 - DO 590 IX=1,5 - P(NCOP,IX)=P(ICOP,IX) - K(NCOP,IX)=K(ICOP,IX) - 590 CONTINUE - 600 CONTINUE - IF (JJGLUE.NE.0.AND.IST.EQ.IGS) THEN -C...Insert inter-junction gluon string piece (reversed) - NJJGL=0 - DO 620 ICOP=IJCP(4)-1,IJCP(3)+1,-1 - NJJGL=NJJGL+1 - NCOP=NCOP+1 - DO 610 IX=1,5 - P(NCOP,IX)=P(ICOP,IX) - K(NCOP,IX)=K(ICOP,IX) - 610 CONTINUE - 620 CONTINUE - ENDIF - IFC=-2*IST+3 - DO 640 ICOP=IJCP(IST+IFC*ISW+3)+1,IJCP(IST+IFC*ISW+4) - NCOP=NCOP+1 - DO 630 IX=1,5 - P(NCOP,IX)=P(ICOP,IX) - K(NCOP,IX)=K(ICOP,IX) - 630 CONTINUE - 640 CONTINUE - K(NCOP,1)=1 - 650 CONTINUE -C...Copy system back in right order - DO 670 ICOP=NBEG,NEND-2 - DO 660 IX=1,5 - P(ICOP,IX)=P(N+ICOP-NBEG+1,IX) - K(ICOP,IX)=K(N+ICOP-NBEG+1,IX) - 660 CONTINUE - 670 CONTINUE -C...Shift down rest of event record - DO 690 ICOP=NEND+1,N - DO 680 IX=1,5 - P(ICOP-2,IX)=P(ICOP,IX) - K(ICOP-2,IX)=K(ICOP,IX) - 680 CONTINUE - 690 CONTINUE -C...Update length of event record. - N=N-2 - ENDIF - MJUN1=0 - NBEG=I+1 - ENDIF - 700 CONTINUE - ENDIF - ENDIF - -C...Done if no checks on small-mass systems. - IF(MSTJ(14).LT.0) RETURN - IF(MSTJ(14).EQ.0) GOTO 1140 - -C...Find lowest-mass colour singlet jet system. - NS=N - 710 NSIN=N-NS - PDMIN=1D0+PARJ(32) - IC=0 - DO 770 I=MAX(1,IP),N - IF(K(I,1).NE.1.AND.K(I,1).NE.2) THEN - ELSEIF(K(I,1).EQ.2.AND.IC.EQ.0) THEN - NSIN=NSIN+1 - IC=I - DO 720 J=1,4 - DPS(J)=P(I,J) - 720 CONTINUE - MSTJ(93)=1 - DPS(5)=PYMASS(K(I,2)) - ELSEIF(K(I,1).EQ.2.AND.K(I,2).NE.21) THEN - DO 730 J=1,4 - DPS(J)=DPS(J)+P(I,J) - 730 CONTINUE - MSTJ(93)=1 - DPS(5)=DPS(5)+PYMASS(K(I,2)) - ELSEIF(K(I,1).EQ.2) THEN - DO 740 J=1,4 - DPS(J)=DPS(J)+P(I,J) - 740 CONTINUE - ELSEIF(IC.NE.0.AND.KCHG(PYCOMP(K(I,2)),2).NE.0) THEN - DO 750 J=1,4 - DPS(J)=DPS(J)+P(I,J) - 750 CONTINUE - MSTJ(93)=1 - DPS(5)=DPS(5)+PYMASS(K(I,2)) - PD=SQRT(MAX(0D0,DPS(4)**2-DPS(1)**2-DPS(2)**2-DPS(3)**2))- - & DPS(5) - IF(PD.LT.PDMIN) THEN - PDMIN=PD - DO 760 J=1,5 - DPC(J)=DPS(J) - 760 CONTINUE - IC1=IC - IC2=I - ENDIF - IC=0 - ELSE - NSIN=NSIN+1 - ENDIF - 770 CONTINUE - -C...Done if lowest-mass system above threshold for string frag. - IF(PDMIN.GE.PARJ(32)) GOTO 1140 - -C...Fill small-mass system as cluster. - NSAV=N - PECM=SQRT(MAX(0D0,DPC(4)**2-DPC(1)**2-DPC(2)**2-DPC(3)**2)) - K(N+1,1)=11 - K(N+1,2)=91 - K(N+1,3)=IC1 - P(N+1,1)=DPC(1) - P(N+1,2)=DPC(2) - P(N+1,3)=DPC(3) - P(N+1,4)=DPC(4) - P(N+1,5)=PECM - -C...Set up history, assuming cluster -> 2 hadrons. - NBODY=2 - K(N+1,4)=N+2 - K(N+1,5)=N+3 - K(N+2,1)=1 - K(N+3,1)=1 - IF(MSTU(16).NE.2) THEN - K(N+2,3)=N+1 - K(N+3,3)=N+1 - ELSE - K(N+2,3)=IC1 - K(N+3,3)=IC2 - ENDIF - K(N+2,4)=0 - K(N+3,4)=0 - K(N+2,5)=0 - K(N+3,5)=0 - V(N+1,5)=0D0 - V(N+2,5)=0D0 - V(N+3,5)=0D0 - -C...Find total flavour content - complicated by presence of junctions. - NQ=0 - NDIQ=0 - DO 780 I=IC1,IC2 - IF((K(I,1).EQ.1.OR.K(I,1).EQ.2).AND.K(I,2).NE.21) THEN - NQ=NQ+1 - KFQ(NQ)=K(I,2) - IF(IABS(K(I,2)).GT.1000) NDIQ=NDIQ+1 - ENDIF - 780 CONTINUE - -C...If several diquarks, split up one to give even number of flavours. - IF(NQ.EQ.3.AND.NDIQ.GE.2) THEN - I1=3 - IF(IABS(KFQ(3)).LT.1000) I1=1 - KFQ(4)=ISIGN(MOD(IABS(KFQ(I1))/100,10),KFQ(I1)) - KFQ(I1)=KFQ(I1)/1000 - NQ=4 - NDIQ=NDIQ-1 - ENDIF - -C...If four quark ends, join two to diquark. - IF(NQ.EQ.4.AND.NDIQ.EQ.0) THEN - I1=1 - I2=2 - IF(KFQ(I1)*KFQ(I2).LT.0) I2=3 - IF(I2.EQ.3.AND.KFQ(I1)*KFQ(I2).LT.0) I2=4 - KFLS=2*INT(PYR(0)+3D0*PARJ(4)/(1D0+3D0*PARJ(4)))+1 - IF(KFQ(I1).EQ.KFQ(I2)) KFLS=3 - KFQ(I1)=ISIGN(1000*MAX(IABS(KFQ(I1)),IABS(KFQ(I2)))+ - & 100*MIN(IABS(KFQ(I1)),IABS(KFQ(I2)))+KFLS,KFQ(I1)) - KFQ(I2)=KFQ(4) - NQ=3 - NDIQ=1 - ENDIF - -C...If two quark ends, plus quark or diquark, join quarks to diquark. - IF(NQ.EQ.3) THEN - I1=1 - I2=2 - IF(IABS(KFQ(I1)).GT.1000) I1=3 - IF(IABS(KFQ(I2)).GT.1000) I2=3 - KFLS=2*INT(PYR(0)+3D0*PARJ(4)/(1D0+3D0*PARJ(4)))+1 - IF(KFQ(I1).EQ.KFQ(I2)) KFLS=3 - KFQ(I1)=ISIGN(1000*MAX(IABS(KFQ(I1)),IABS(KFQ(I2)))+ - & 100*MIN(IABS(KFQ(I1)),IABS(KFQ(I2)))+KFLS,KFQ(I1)) - KFQ(I2)=KFQ(3) - NQ=2 - NDIQ=NDIQ+1 - ENDIF - -C...Form two particles from flavours of lowest-mass system, if feasible. - NTRY = 0 - 790 NTRY = NTRY + 1 - -C...Open string with two specified endpoint flavours. - IF(NQ.EQ.2) THEN - KC1=PYCOMP(KFQ(1)) - KC2=PYCOMP(KFQ(2)) - IF(KC1.EQ.0.OR.KC2.EQ.0) GOTO 1140 - KQ1=KCHG(KC1,2)*ISIGN(1,KFQ(1)) - KQ2=KCHG(KC2,2)*ISIGN(1,KFQ(2)) - IF(KQ1+KQ2.NE.0) GOTO 1140 -C...Start with qq, if there is one. Only allow for rank 1 popcorn meson - 800 K1=KFQ(1) - IF(IABS(KFQ(2)).GT.1000) K1=KFQ(2) - MSTU(125)=0 - CALL PYDCYK(K1,0,KFLN,K(N+2,2)) - CALL PYDCYK(KFQ(1)+KFQ(2)-K1,-KFLN,KFLDMP,K(N+3,2)) - IF(K(N+2,2).EQ.0.OR.K(N+3,2).EQ.0) GOTO 800 - -C...Open string with four specified flavours. - ELSEIF(NQ.EQ.4) THEN - KC1=PYCOMP(KFQ(1)) - KC2=PYCOMP(KFQ(2)) - KC3=PYCOMP(KFQ(3)) - KC4=PYCOMP(KFQ(4)) - IF(KC1.EQ.0.OR.KC2.EQ.0.OR.KC3.EQ.0.OR.KC4.EQ.0) GOTO 1140 - KQ1=KCHG(KC1,2)*ISIGN(1,KFQ(1)) - KQ2=KCHG(KC2,2)*ISIGN(1,KFQ(2)) - KQ3=KCHG(KC3,2)*ISIGN(1,KFQ(3)) - KQ4=KCHG(KC4,2)*ISIGN(1,KFQ(4)) - IF(KQ1+KQ2+KQ3+KQ4.NE.0) GOTO 1140 -C...Combine flavours pairwise to form two hadrons. - 810 I1=1 - I2=2 - IF(KQ1*KQ2.GT.0.OR.(IABS(KFQ(1)).GT.1000.AND. - & IABS(KFQ(2)).GT.1000)) I2=3 - IF(I2.EQ.3.AND.(KQ1*KQ3.GT.0.OR.(IABS(KFQ(1)).GT.1000.AND. - & IABS(KFQ(3)).GT.1000))) I2=4 - I3=3 - IF(I2.EQ.3) I3=2 - I4=10-I1-I2-I3 - CALL PYDCYK(KFQ(I1),KFQ(I2),KFLDMP,K(N+2,2)) - CALL PYDCYK(KFQ(I3),KFQ(I4),KFLDMP,K(N+3,2)) - IF(K(N+2,2).EQ.0.OR.K(N+3,2).EQ.0) GOTO 810 - -C...Closed string. - ELSE - IF(IABS(K(IC2,2)).NE.21) GOTO 1140 -C...No room for popcorn mesons in closed string -> 2 hadrons. - MSTU(125)=0 - 820 CALL PYDCYK(1+INT((2D0+PARJ(2))*PYR(0)),0,KFLN,KFDMP) - CALL PYDCYK(KFLN,0,KFLM,K(N+2,2)) - CALL PYDCYK(-KFLN,-KFLM,KFLDMP,K(N+3,2)) - IF(K(N+2,2).EQ.0.OR.K(N+3,2).EQ.0) GOTO 820 - ENDIF - P(N+2,5)=PYMASS(K(N+2,2)) - P(N+3,5)=PYMASS(K(N+3,2)) - -C...If it does not work: try again (a number of times), give up (if no -C...place to shuffle momentum or too many flavours), or form one hadron. - IF(P(N+2,5)+P(N+3,5)+PARJ(64).GE.PECM) THEN - IF(NTRY.LT.MSTJ(17).OR.(NQ.EQ.4.AND.NTRY.LT.5*MSTJ(17))) THEN - GOTO 790 - ELSEIF(NSIN.EQ.1.OR.NQ.EQ.4) THEN - GOTO 1140 - ELSE - GOTO 890 - END IF - END IF - -C...Perform two-particle decay of jet system. -C...First step: find reference axis in decaying system rest frame. -C...(Borrow slot N+2 for temporary direction.) - DO 830 J=1,4 - P(N+2,J)=P(IC1,J) - 830 CONTINUE - DO 850 I=IC1+1,IC2-1 - IF((K(I,1).EQ.1.OR.K(I,1).EQ.2).AND. - & KCHG(PYCOMP(K(I,2)),2).NE.0) THEN - FRAC1=FOUR(IC2,I)/(FOUR(IC1,I)+FOUR(IC2,I)) - DO 840 J=1,4 - P(N+2,J)=P(N+2,J)+FRAC1*P(I,J) - 840 CONTINUE - ENDIF - 850 CONTINUE - CALL PYROBO(N+2,N+2,0D0,0D0,-DPC(1)/DPC(4),-DPC(2)/DPC(4), - &-DPC(3)/DPC(4)) - THE1=PYANGL(P(N+2,3),SQRT(P(N+2,1)**2+P(N+2,2)**2)) - PHI1=PYANGL(P(N+2,1),P(N+2,2)) - -C...Second step: generate isotropic/anisotropic decay. - PA=SQRT((PECM**2-(P(N+2,5)+P(N+3,5))**2)*(PECM**2- - &(P(N+2,5)-P(N+3,5))**2))/(2D0*PECM) - 860 UE(3)=PYR(0) - IF(PARJ(21).LE.0.01D0) UE(3)=1D0 - PT2=(1D0-UE(3)**2)*PA**2 - IF(MSTJ(16).LE.0) THEN - PREV=0.5D0 - ELSE - IF(EXP(-PT2/(2D0*MAX(0.01D0,PARJ(21))**2)).LT.PYR(0)) GOTO 860 - PR1=P(N+2,5)**2+PT2 - PR2=P(N+3,5)**2+PT2 - ALAMBD=SQRT(MAX(0D0,(PECM**2-PR1-PR2)**2-4D0*PR1*PR2)) - PREVCF=PARJ(42) - IF(MSTJ(11).EQ.2) PREVCF=PARJ(39) - PREV=1D0/(1D0+EXP(MIN(50D0,PREVCF*ALAMBD*PARJ(40)))) - ENDIF - IF(PYR(0).LT.PREV) UE(3)=-UE(3) - PHI=PARU(2)*PYR(0) - UE(1)=SQRT(1D0-UE(3)**2)*COS(PHI) - UE(2)=SQRT(1D0-UE(3)**2)*SIN(PHI) - DO 870 J=1,3 - P(N+2,J)=PA*UE(J) - P(N+3,J)=-PA*UE(J) - 870 CONTINUE - P(N+2,4)=SQRT(PA**2+P(N+2,5)**2) - P(N+3,4)=SQRT(PA**2+P(N+3,5)**2) - -C...Third step: move back to event frame and set production vertex. - CALL PYROBO(N+2,N+3,THE1,PHI1,DPC(1)/DPC(4),DPC(2)/DPC(4), - &DPC(3)/DPC(4)) - DO 880 J=1,4 - V(N+1,J)=V(IC1,J) - V(N+2,J)=V(IC1,J) - V(N+3,J)=V(IC2,J) - 880 CONTINUE - N=N+3 - GOTO 1120 - -C...Else form one particle, if possible. - 890 NBODY=1 - K(N+1,5)=N+2 - DO 900 J=1,4 - V(N+1,J)=V(IC1,J) - V(N+2,J)=V(IC1,J) - 900 CONTINUE - -C...Select hadron flavour from available quark flavours. - 910 IF(NQ.EQ.2.AND.IABS(KFQ(1)).GT.100.AND.IABS(KFQ(2)).GT.100) THEN - GOTO 1140 - ELSEIF(NQ.EQ.2) THEN - CALL PYKFDI(KFQ(1),KFQ(2),KFLDMP,K(N+2,2)) - ELSE - KFLN=1+INT((2D0+PARJ(2))*PYR(0)) - CALL PYKFDI(KFLN,-KFLN,KFLDMP,K(N+2,2)) - ENDIF - IF(K(N+2,2).EQ.0) GOTO 910 - P(N+2,5)=PYMASS(K(N+2,2)) - -C...Use old algorithm for E/p conservation? (EN) - IF (MSTJ(16).LE.0) GOTO 1080 - -C...Find the string piece closest to the cluster by a loop -C...over the undecayed partons not in present cluster. (EN) - DGLOMI=1D30 - IBEG=0 - I0=0 - NJUNC=0 - DO 940 I1=MAX(1,IP),N-1 - IF(K(I1,1).EQ.1) NJUNC=0 - IF(K(I1,1).EQ.41) NJUNC=NJUNC+1 - IF(K(I1,1).EQ.41) GOTO 940 - IF(I1.GE.IC1-1.AND.I1.LE.IC2) THEN - I0=0 - ELSEIF(K(I1,1).EQ.2) THEN - IF(I0.EQ.0) I0=I1 - I2=I1 - 920 I2=I2+1 - IF(K(I2,1).EQ.41) GOTO 940 - IF(K(I2,1).GT.10) GOTO 920 - IF(KCHG(PYCOMP(K(I2,2)),2).EQ.0) GOTO 920 - IF(K(I1,2).EQ.21.AND.K(I2,2).NE.21.AND.K(I2,1).NE.1.AND. - & NJUNC.EQ.0) GOTO 940 - IF(K(I1,2).NE.21.AND.K(I2,2).EQ.21.AND.NJUNC.NE.0) GOTO 940 - IF(K(I1,2).NE.21.AND.K(I2,2).NE.21.AND.(I1.GT.I0.OR. - & K(I2,1).NE.1)) GOTO 940 - -C...Define velocity vectors e1, e2, ecl and differences e3, e4. - DO 930 J=1,3 - E1(J)=P(I1,J)/P(I1,4) - E2(J)=P(I2,J)/P(I2,4) - ECL(J)=P(N+1,J)/P(N+1,4) - E3(J)=E2(J)-E1(J) - E4(J)=ECL(J)-E1(J) - 930 CONTINUE - -C...Calculate minimal D=(e4-alpha*e3)**2 for 0<alpha<1. - E3S=E3(1)**2+E3(2)**2+E3(3)**2 - E4S=E4(1)**2+E4(2)**2+E4(3)**2 - E34=E3(1)*E4(1)+E3(2)*E4(2)+E3(3)*E4(3) - IF(E34.LE.0D0) THEN - DDMIN=E4S - ELSEIF(E34.LT.E3S) THEN - DDMIN=E4S-E34**2/E3S - ELSE - DDMIN=E4S-2D0*E34+E3S - ENDIF - -C...Is this the smallest so far? - IF(DDMIN.LT.DGLOMI) THEN - DGLOMI=DDMIN - IBEG=I0 - IPCS=I1 - ENDIF - ELSEIF(K(I1,1).EQ.1.AND.KCHG(PYCOMP(K(I1,2)),2).NE.0) THEN - I0=0 - ENDIF - 940 CONTINUE - -C... Check if there are any strings to connect to the new gluon. (EN) - IF (IBEG.EQ.0) GOTO 1080 - -C...Delta_m = m_clus - m_had > 0: emit a 'gluon' (EN) - IF (P(N+1,5).GE.P(N+2,5)) THEN - -C...Construct 'gluon' that is needed to put hadron on the mass shell. - FRAC=P(N+2,5)/P(N+1,5) - DO 950 J=1,5 - P(N+2,J)=FRAC*P(N+1,J) - PG(J)=(1D0-FRAC)*P(N+1,J) - 950 CONTINUE - -C... Copy string with new gluon put in. - N=N+2 - I=IBEG-1 - 960 I=I+1 - IF(K(I,1).NE.1.AND.K(I,1).NE.2.AND.K(I,1).NE.41) GOTO 960 - IF(KCHG(PYCOMP(K(I,2)),2).EQ.0.AND.K(I,1).NE.41) GOTO 960 - N=N+1 - -c ACH......check for infinite loop here, was causing crash -c write(*,'(A, I6, I6)') 'ACH N and I are now ', N, I - IF(N.GT.10000) THEN - CALL PYERRM(14,'(PYPREP:) caught in infinite loop 1') - MINT(51)=1 - RETURN - ENDIF -c ACH...... - - DO 970 J=1,5 - K(N,J)=K(I,J) - P(N,J)=P(I,J) - V(N,J)=V(I,J) - 970 CONTINUE - K(I,1)=K(I,1)+10 - K(I,4)=N - K(I,5)=N - K(N,3)=I - IF(I.EQ.IPCS) THEN - N=N+1 - -c ACH......check for infinite loop here, was causing crash -c write(*,'(A, I6, I6)') 'ACH N and I are now ', N, I - IF(N.GT.10000) THEN - CALL PYERRM(14,'(PYPREP:) caught in infinite loop 2') - MINT(51)=1 - RETURN - ENDIF -c ACH...... - - DO 980 J=1,5 - K(N,J)=K(N-1,J) - P(N,J)=PG(J) - V(N,J)=V(N-1,J) - 980 CONTINUE - K(N,2)=21 - K(N,3)=NSAV+1 - ENDIF - IF(K(I,1).EQ.12.OR.K(I,1).EQ.51) GOTO 960 - GOTO 1120 - -C...Delta_m = m_clus - m_had < 0: have to absorb a 'gluon' instead, -C...from string piece endpoints. - ELSE - -C...Begin by copying string that should give energy to cluster. - N=N+2 - I=IBEG-1 - 990 I=I+1 - IF(K(I,1).NE.1.AND.K(I,1).NE.2.AND.K(I,1).NE.41) GOTO 990 - IF(KCHG(PYCOMP(K(I,2)),2).EQ.0.AND.K(I,1).NE.41) GOTO 990 - N=N+1 - -c ACH......check for infinite loop here, was causing crash -c write(*,'(A, I6, I6)') 'ACH N and I are now ', N, I - IF(N.GT.10000) THEN - CALL PYERRM(14,'(PYPREP:) caught in infinite loop 3') - MINT(51)=1 - RETURN - ENDIF -c ACH...... - - DO 1000 J=1,5 - K(N,J)=K(I,J) - P(N,J)=P(I,J) - V(N,J)=V(I,J) - 1000 CONTINUE - K(I,1)=K(I,1)+10 - K(I,4)=N - K(I,5)=N - K(N,3)=I - IF(I.EQ.IPCS) I1=N - IF(K(I,1).EQ.12.OR.K(I,1).EQ.51) GOTO 990 - I2=I1+1 - -C...Set initial Phad. - DO 1010 J=1,4 - P(NSAV+2,J)=P(NSAV+1,J) - 1010 CONTINUE - -C...Calculate Pg, a part of which will be added to Phad later. (EN) - 1020 IF(MSTJ(16).EQ.1) THEN - ALPHA=1D0 - BETA=1D0 - ELSE - ALPHA=FOUR(NSAV+1,I2)/FOUR(I1,I2) - BETA=FOUR(NSAV+1,I1)/FOUR(I1,I2) - ENDIF - DO 1030 J=1,4 - PG(J)=ALPHA*P(I1,J)+BETA*P(I2,J) - 1030 CONTINUE - PG(5)=SQRT(MAX(1D-20,PG(4)**2-PG(1)**2-PG(2)**2-PG(3)**2)) - -C..Solve 2nd order equation, use the best (smallest) solution. (EN) - PMSCOL=P(NSAV+2,4)**2-P(NSAV+2,1)**2-P(NSAV+2,2)**2- - & P(NSAV+2,3)**2 - PCLPG=(P(NSAV+2,4)*PG(4)-P(NSAV+2,1)*PG(1)- - & P(NSAV+2,2)*PG(2)-P(NSAV+2,3)*PG(3))/PG(5)**2 - DELTA=SQRT(PCLPG**2+(P(NSAV+2,5)**2-PMSCOL)/PG(5)**2)-PCLPG - -C...If all gluon energy eaten, zero it and take a step back. - ITER=0 - IF(DELTA*ALPHA.GT.1D0.AND.I1.GT.NSAV+3.AND.K(I1,2).EQ.21) THEN - ITER=1 - DO 1040 J=1,4 - P(NSAV+2,J)=P(NSAV+2,J)+P(I1,J) - P(I1,J)=0D0 - 1040 CONTINUE - P(I1,5)=0D0 - K(I1,1)=K(I1,1)+10 - I1=I1-1 - IF(K(I1,1).EQ.41) ITER=-1 - ENDIF - IF(DELTA*BETA.GT.1D0.AND.I2.LT.N.AND.K(I2,2).EQ.21) THEN - ITER=1 - DO 1050 J=1,4 - P(NSAV+2,J)=P(NSAV+2,J)+P(I2,J) - P(I2,J)=0D0 - 1050 CONTINUE - P(I2,5)=0D0 - K(I2,1)=K(I2,1)+10 - I2=I2+1 - IF(K(I2,1).EQ.41) ITER=-1 - ENDIF - IF(ITER.EQ.1) GOTO 1020 - -C...If also all endpoint energy eaten, revert to old procedure. - IF((1D0-DELTA*ALPHA)*P(I1,4).LT.P(I1,5).OR. - & (1D0-DELTA*BETA)*P(I2,4).LT.P(I2,5).OR.ITER.EQ.-1) THEN - DO 1060 I=NSAV+3,N - IM=K(I,3) - K(IM,1)=K(IM,1)-10 - K(IM,4)=0 - K(IM,5)=0 - 1060 CONTINUE - N=NSAV - GOTO 1080 - ENDIF - -C... Construct the collapsed hadron and modified string partons. - DO 1070 J=1,4 - P(NSAV+2,J)=P(NSAV+2,J)+DELTA*PG(J) - P(I1,J)=(1D0-DELTA*ALPHA)*P(I1,J) - P(I2,J)=(1D0-DELTA*BETA)*P(I2,J) - 1070 CONTINUE - P(I1,5)=(1D0-DELTA*ALPHA)*P(I1,5) - P(I2,5)=(1D0-DELTA*BETA)*P(I2,5) - -C...Finished with string collapse in new scheme. - GOTO 1120 - ENDIF - -C... Use old algorithm; by choice or when in trouble. - 1080 CONTINUE -C...Find parton/particle which combines to largest extra mass. - IR=0 - HA=0D0 - HSM=0D0 - DO 1100 MCOMB=1,3 - IF(IR.NE.0) GOTO 1100 - DO 1090 I=MAX(1,IP),N - IF(K(I,1).LE.0.OR.K(I,1).GT.10.OR.(I.GE.IC1.AND.I.LE.IC2 - & .AND.K(I,1).GE.1.AND.K(I,1).LE.2)) GOTO 1090 - IF(MCOMB.EQ.1) KCI=PYCOMP(K(I,2)) - IF(MCOMB.EQ.1.AND.KCI.EQ.0) GOTO 1090 - IF(MCOMB.EQ.1.AND.KCHG(KCI,2).EQ.0.AND.I.LE.NS) GOTO 1090 - IF(MCOMB.EQ.2.AND.IABS(K(I,2)).GT.10.AND.IABS(K(I,2)).LE.100) - & GOTO 1090 - HCR=DPC(4)*P(I,4)-DPC(1)*P(I,1)-DPC(2)*P(I,2)-DPC(3)*P(I,3) - HSR=2D0*HCR+PECM**2-P(N+2,5)**2-2D0*P(N+2,5)*P(I,5) - IF(HSR.GT.HSM) THEN - IR=I - HA=HCR - HSM=HSR - ENDIF - 1090 CONTINUE - 1100 CONTINUE - -C...Shuffle energy and momentum to put new particle on mass shell. - IF(IR.NE.0) THEN - HB=PECM**2+HA - HC=P(N+2,5)**2+HA - HD=P(IR,5)**2+HA - HK2=0.5D0*(HB*SQRT(MAX(0D0,((HB+HC)**2-4D0*(HB+HD)*P(N+2,5)**2)/ - & (HA**2-(PECM*P(IR,5))**2)))-(HB+HC))/(HB+HD) - HK1=(0.5D0*(P(N+2,5)**2-PECM**2)+HD*HK2)/HB - DO 1110 J=1,4 - P(N+2,J)=(1D0+HK1)*DPC(J)-HK2*P(IR,J) - P(IR,J)=(1D0+HK2)*P(IR,J)-HK1*DPC(J) - 1110 CONTINUE - N=N+2 - ELSE - CALL PYERRM(3,'(PYPREP:) no match for collapsing cluster') - RETURN - ENDIF - -C...Mark collapsed system and store daughter pointers. Iterate. - 1120 DO 1130 I=IC1,IC2 - IF((K(I,1).EQ.1.OR.K(I,1).EQ.2).AND. - & KCHG(PYCOMP(K(I,2)),2).NE.0) THEN - K(I,1)=K(I,1)+10 - IF(MSTU(16).NE.2) THEN - K(I,4)=NSAV+1 - K(I,5)=NSAV+1 - ELSE - K(I,4)=NSAV+2 - K(I,5)=NSAV+1+NBODY - ENDIF - ENDIF - IF(K(I,1).EQ.41) K(I,1)=K(I,1)+10 - 1130 CONTINUE - IF(N.LT.MSTU(4)-MSTU(32)-5) GOTO 710 - -C...Check flavours and invariant masses in parton systems. - 1140 NP=0 - KFN=0 - KQS=0 - NJU=0 - DO 1150 J=1,5 - DPS(J)=0D0 - 1150 CONTINUE - DO 1180 I=MAX(1,IP),N - IF(K(I,1).EQ.41) NJU=NJU+1 - IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 1180 - KC=PYCOMP(K(I,2)) - IF(KC.EQ.0) GOTO 1180 - KQ=KCHG(KC,2)*ISIGN(1,K(I,2)) - IF(KQ.EQ.0) GOTO 1180 - NP=NP+1 - IF(KQ.NE.2) THEN - KFN=KFN+1 - KQS=KQS+KQ - MSTJ(93)=1 - DPS(5)=DPS(5)+PYMASS(K(I,2)) - ENDIF - DO 1160 J=1,4 - DPS(J)=DPS(J)+P(I,J) - 1160 CONTINUE - IF(K(I,1).EQ.1) THEN - NFERR=0 - IF(NJU.EQ.0.AND.NP.NE.1) THEN - IF(KFN.EQ.1.OR.KFN.GE.3.OR.KQS.NE.0) NFERR=1 - ELSEIF(NJU.EQ.1) THEN - IF(KFN.NE.3.OR.IABS(KQS).NE.3) NFERR=1 - ELSEIF(NJU.EQ.2) THEN - IF(KFN.NE.4.OR.KQS.NE.0) NFERR=1 - ELSEIF(NJU.GE.3) THEN - NFERR=1 - ENDIF - IF(NFERR.EQ.1) THEN - CALL PYERRM(2,'(PYPREP:) unphysical flavour combination') - MINT(51)=1 - RETURN - ENDIF - IF(NP.NE.1.AND.DPS(4)**2-DPS(1)**2-DPS(2)**2-DPS(3)**2.LT. - & (0.9D0*PARJ(32)+DPS(5))**2) CALL PYERRM(3, - & '(PYPREP:) too small mass in jet system') - NP=0 - KFN=0 - KQS=0 - NJU=0 - DO 1170 J=1,5 - DPS(J)=0D0 - 1170 CONTINUE - ENDIF - 1180 CONTINUE - - RETURN - END - diff --git a/Generators/PythiaRhad_i/src/PythiaRhadModified/pyrhad.F b/Generators/PythiaRhad_i/src/PythiaRhadModified/pyrhad.F deleted file mode 100644 index 8a6458bb17478bec59f0b6634f3c93eaf54c562e..0000000000000000000000000000000000000000 --- a/Generators/PythiaRhad_i/src/PythiaRhadModified/pyrhad.F +++ /dev/null @@ -1,1729 +0,0 @@ -C********************************************************************* - -C...PYGGPRO -C Sets the PROBGG parameter in the fragmentation - -C... Double precision and integer declarations. - SUBROUTINE PYGGPRO(PROB) - - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - INTEGER IKFRH(20),IKCHGRH(20),IKANTRH(20) - REAL*8 PROBGG - COMMON/RHADB/IKFRH,IKCHGRH,IKANTRH,PROBGG - - - PROBGG=PROB - - write(*,*) 'Gluino ball formation probability has been set to ' - & ,PROBGG - - RETURN - END - - - -C********************************************************************* - -C...PYGLFR -C...Fragments the string near to a gluino, to form a gluino-hadron, -C...either by producing a new g-g pair or two new q-qbar ones. - - SUBROUTINE PYGLFRRE(IERR) - -C... Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) -C INTEGER PYK,PYCHGE,PYCOMP -C... Parameter statement to help give large particle numbers -C... (left- and righthanded SUSY, excited fermions). - PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KEXCIT=4000000) -C... Commonblocks. - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) -C... Note that dimensions below grew from 4000 to 8000 in Pythia 6.2! - COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5) - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) - COMMON/PYINT1/MINT(400),VINT(400) - COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2) - COMMON/PYDAT4/CHAF(500,2) - CHARACTER CHAF*16 - SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYPARS/,/PYINT1/, - & /PYINT2/ - CHARACTER*16 CHRHAD - - -C... Local array. - DIMENSION PSUM(5),KFSAV(2),PMSAV(2),PSAV(2,5) - - INTEGER IKFRH(20),IKCHGRH(20),IKANTRH(20) - integer ihad1,ihad2 - REAL*8 PROBGG - COMMON/RHADB/IKFRH,IKCHGRH,IKANTRH,PROBGG - -C... Free parameter: relative probability for gluino-gluon-ball. -C... (But occasional low-mass string will never become it anyway.) -c Rasmus: Moved to rhadb common block to make configurable -c PROBGG=0.1D0 - -C... Free parameter: gluon constituent mass. - PMGLU=0.7D0 - -C... Free parameter: max kinetic energy in gluino-hadron. - PMKIN=0.5D0 - -C... Switch off popcorn baryon production. (Not imperative, but more -C... failed events when popcorn is allowed.) - MSTJ12=MSTJ(12) - MSTJ(12)=1 - -C... Convenient shorthand. - KFGL=KSUSY1+21 - -C*** Reset error code. - IERR=0 - -c write(*,*) 'In PYGLFRRE' - -C... Loopback point for serious problems, with new try. - LOOP=0 - CALL PYEDIT(21) - CHGSAV=PYP(0,6) - 90 LOOP=LOOP+1 - IF(LOOP.GT.1) CALL PYEDIT(22) - -C*** Begin new code for testing. -C... Find if gluino put first or last in closed loop. - 400 IBEGCL=0 - IENDCL=0 - IF(K(1,2).EQ.KFGL.AND.K(1,1).LE.2) IBEGCL=1 - DO 410 I=2,N - IF(K(I,2).EQ.KFGL) THEN - IF(K(I-1,1).NE.2.AND.K(I,1).LE.2) IBEGCL=I - IF(K(I,1).EQ.1) IENDCL=I - ENDIF - 410 CONTINUE - IF(IBEGCL.GT.0) IENDCL=0 - -C... Range of system beginning or ending with gluino. - IF(IBEGCL.NE.0) THEN - IBEG=IBEGCL - IEND=IBEG - 420 IEND=IEND+1 - IF(IEND.LT.N.AND.K(IEND,1).EQ.2) GOTO 420 - IF(IEND.GT.N) IEND=N - ELSEIF(IENDCL.NE.0) THEN - IEND=IENDCL - IBEG=IEND - 430 IBEG=IBEG-1 -C JK REMOVING COMPILER WARNING - IF(IBEG.GE.2.AND.K(IBEG-1,1).EQ.2) THEN - 431 IEND=IEND+1 - IF(IEND.LT.N.AND.K(IEND,1).EQ.2) GOTO 431 - IF(IEND.GT.N) IEND=N - ENDIF -C JK - ENDIF - -C... Count number of gluinos in system. Error return if only gluinos. - IF(IBEGCL.NE.0.OR.IENDCL.NE.0) THEN - WRITE(*,*) ' Gluino found in closed string; ', - & ' special processing begun ' - NGLSYS=0 - DO 435 I=IBEG,IEND - IF(K(I,2).EQ.KFGL) NGLSYS=NGLSYS+1 - 435 CONTINUE - IF(NGLSYS.EQ.IEND-IBEG+1) THEN - IERR=1 - MSTJ(12)=MSTJ12 - WRITE(*,*) ' Fail to fragment closed string of gluinos only' - RETURN - ENDIF - -C... Decide to split system at random gluon. - 440 ISPLIT=IBEG+INT(PYR(0)*(IEND+1-IBEG)) - IF(ISPLIT.GT.IEND.OR.K(ISPLIT,2).EQ.KFGL) GOTO 440 - -C... Copy system from ISPLIT to end, beginning with a d or u quark. - KFSPL=INT(1.5D0+PYR(0)) - DO 470 I=ISPLIT,IEND - N=N+1 - DO 450 J=1,5 - K(N,J)=K(I,J) - P(N,J)=P(I,J) - V(N,J)=V(I,J) - 450 CONTINUE - K(I,1)=K(I,1)+10 - K(I,4)=N - K(I,5)=N - K(N,1)=2 - K(N,3)=I - IF(I.EQ.ISPLIT) THEN - K(N,2)=KFSPL - DO 460 J=1,5 - P(N,J)=0.5D0*P(N,J) - 460 CONTINUE - ENDIF - 470 CONTINUE - -C... Copy system from beginning to ISPLIT, ending with a dbar or ubar quark. - DO 500 I=IBEG,ISPLIT - N=N+1 - DO 480 J=1,5 - K(N,J)=K(I,J) - P(N,J)=P(I,J) - V(N,J)=V(I,J) - 480 CONTINUE - K(I,1)=K(I,1)+10 - K(I,4)=N - K(I,5)=N - K(N,1)=2 - K(N,3)=I - IF(I.EQ.ISPLIT) THEN - K(N,1)=1 - K(N,2)=-KFSPL - DO 490 J=1,5 - P(N,J)=0.5D0*P(N,J) - 490 CONTINUE - ENDIF - 500 CONTINUE - -C... Loop back in case both gluinos need to be addressed this way. - GOTO 400 - ENDIF -C*** End new code for testing. - -C... Take copy of string system(s), leaving extra free slot after gluino. -C... (Eventually to be overwritten by one q and one qbar string break.) - NOLD=N - NGLUI=0 - DO 120 I=1,NOLD - ICOPY=0 - IF(K(I,1).EQ.2) ICOPY=1 - IF(K(I,1).EQ.1.AND.I.GE.2) THEN - IF(K(I-1,1).EQ.12) ICOPY=1 - ENDIF - IF(ICOPY.EQ.1) THEN - N=N+1 - DO 100 J=1,5 - K(N,J)=K(I,J) - P(N,J)=P(I,J) - V(N,J)=V(I,J) - 100 CONTINUE - K(I,1)=K(I,1)+10 - K(I,4)=N - K(I,5)=N - K(N,3)=I - IF(K(I,2).EQ.KFGL) THEN - NGLUI=NGLUI+1 - N=N+1 - DO 110 J=1,5 - K(N,J)=K(N-1,J) - P(N,J)=0D0 - V(N,J)=V(I,J) - 110 CONTINUE - K(I,5)=N - K(N,2)=21 - ENDIF - ENDIF - 120 CONTINUE - -C... Loop over (up to) two gluinos per event. - DO 300 IGLUI=1,NGLUI - -C... Identify position of gluino (randomize order of treatment). - IGL=0 - NGL=0 - DO 130 I=1,N - IF(K(I,1).EQ.2.AND.K(I,2).EQ.KFGL) THEN - NGL=NGL+1 - IF(IGLUI.EQ.NGLUI) THEN - IGL=I - ELSEIF(NGL.EQ.1) THEN - IF(PYR(0).LT.0.5D0) IGL=I - ELSEIF(IGL.EQ.0) THEN - IGL=I - ENDIF - ENDIF - 130 CONTINUE - -C... Identify range of partons on string the gluino belongs to. - IMIN=IGL - 140 IMIN=IMIN-1 - IF(K(IMIN-1,1).EQ.2) GOTO 140 - IMAX=IGL - 150 IMAX=IMAX+1 - IF(K(IMAX,1).EQ.2) GOTO 150 - -C... Find mass of this gluino-string. - DO 170 J=1,5 - PSUM(J)=0D0 - DO 160 I=IMIN,IMAX - PSUM(J)=PSUM(J)+P(I,J) - 160 CONTINUE - 170 CONTINUE - PSUM(5)=SQRT(MAX(0D0,PSUM(4)**2-PSUM(1)**2-PSUM(2)**2- - & PSUM(3)**2)) - -C... If low-mass, then consider gluino-hadron already formed. - IF(PSUM(5).LE.P(IGL,5)+P(IMIN,5)+P(IMAX,5)+PMKIN) THEN - DO 180 I=IMIN,IMAX - K(I,1)=15+IGLUI - 180 CONTINUE - GOTO 300 - ENDIF - -C... Else break string by production of new gg or two new qqbar pairs. -C... (Also diquarks allowed, but not popcorn, and not two adjacent.) - IF(PYR(0).LT.PROBGG) THEN -C... Let a gluon occupy two slots, to make administration work the same -C... way as for the qqbar case. - KFSAV(1)=21 - KFSAV(2)=21 - PMSAV(1)=0.5D0*PMGLU - PMSAV(2)=0.5D0*PMGLU - ELSE - 185 CALL PYDCYK(K(IMIN,2),0,KFSAV(1),KFDUM) - CALL PYDCYK(K(IMAX,2),0,KFSAV(2),KFDUM) - IF(IABS(KFSAV(1)).GT.10.AND.IABS(KFSAV(2)).GT.10) GOTO 185 - IF(IABS(KFSAV(1)).GT.10.AND.IABS(K(IGL-1,2)).GT.10) GOTO 185 - IF(IABS(KFSAV(2)).GT.10.AND.IABS(K(IGL+2,2)).GT.10) GOTO 185 - KFSAV(1)=ISIGN(MOD(IABS(KFSAV(1)),10000),KFSAV(1)) - KFSAV(2)=ISIGN(MOD(IABS(KFSAV(2)),10000),KFSAV(2)) - MSTJ(93)=1 - PMSAV(1)=PYMASS(KFSAV(1)) - MSTJ(93)=1 - PMSAV(2)=PYMASS(KFSAV(2)) - ENDIF - - KFSVMX=MAX(IABS(KFSAV(1)),IABS(KFSAV(2))) - KFSVMN=MIN(IABS(KFSAV(1)),IABS(KFSAV(2))) - -C... Mass of gluino-hadron. - PMGSAV=P(IGL,5) - PMGB=P(IGL,5)+0.7 - -C... Pick at random order in which both sides of gluino string break. - ISIDE=INT(1.5D0+PYR(0)) - DO 220 ISDE=1,2 - IF(ISDE.EQ.1) IS=ISIDE - IF(ISDE.EQ.2) IS=3-ISIDE - -C...Pick momentum sharing according to fragmentation function as if bottom. - M11SAV=MSTJ(11) - PMBSAV=PARF(105) - MSTJ(11)=4 - PARF(105)=PMGSAV - CALL PYZDIS(5,0,PMGB**2,ZGL) - MSTJ(11)=M11SAV - PARF(105)=PMBSAV - ZGL=MAX(0.9D0,MIN(0.9999D0,ZGL)) - DO 190 J=1,5 - PSAV(IS,J)=(1D0-ZGL)*P(IGL,J) - P(IGL,J)=ZGL*P(IGL,J) - 190 CONTINUE - -C... Target gluino-hadron mass for this stage of momentum reshuffling. - PMOLD=P(IGL,5) - IF(ISDE.EQ.1) PMNEW=PMGSAV+PMSAV(IS) - IF(ISDE.EQ.2) PMNEW=PMGB - -C... Recoiling parton from which to shuffle momentum. System momentum. - IF(IS.EQ.1) IREC=IGL-1 - IF(IS.EQ.2) IREC=IGL+2 - 200 DO 210 J=1,4 - PSUM(J)=P(IGL,J)+P(IREC,J) - 210 CONTINUE - -C... Boost to rest frame of system, and align gluino along +z axis. - CALL PYROBO(IGL,IGL,0D0,0D0,-(PSUM(1)/PSUM(4)), - & -(PSUM(2)/PSUM(4)),-(PSUM(3)/PSUM(4))) - CALL PYROBO(IREC,IREC,0D0,0D0,-(PSUM(1)/PSUM(4)), - & -(PSUM(2)/PSUM(4)),-(PSUM(3)/PSUM(4))) - PHI=PYANGL(P(IGL,1),P(IGL,2)) - CALL PYROBO(IGL,IGL,0D0,-PHI,0D0,0D0,0D0) - CALL PYROBO(IREC,IREC,0D0,-PHI,0D0,0D0,0D0) - THETA=PYANGL(P(IGL,3),P(IGL,1)) - CALL PYROBO(IGL,IGL,-THETA,0D0,0D0,0D0,0D0) - CALL PYROBO(IREC,IREC,-THETA,0D0,0D0,0D0,0D0) - -C... Calculate new kinematics in this frame, for desired gluino mass. - ETOT=P(IGL,4)+P(IREC,4) - IF(ETOT.GT.PMNEW+P(IREC,5)) THEN - IFAIL=0 - PZNEW=0.5D0 - & *SQRT(MAX(0D0,(ETOT**2-PMNEW**2-P(IREC,5)**2)**2- - & 4D0*PMNEW**2*P(IREC,5)**2))/ETOT - P(IGL,3)=PZNEW - P(IGL,4)=SQRT(PZNEW**2+PMNEW**2) - P(IGL,5)=PMNEW - P(IREC,3)=-PZNEW - P(IREC,4)=SQRT(PZNEW**2+P(IREC,5)**2) - -C... If not enough momentum, take what can be taken. - ELSE - IFAIL=1 - PMOLD=ETOT-P(IREC,5) - P(IGL,3)=0D0 - P(IGL,4)=PMOLD - P(IGL,5)=PMOLD - P(IREC,3)=0D0 - P(IREC,4)=P(IREC,5) - ENDIF - -C... Bost back to lab frame. - CALL PYROBO(IGL,IGL,THETA,PHI,PSUM(1)/PSUM(4), - & PSUM(2)/PSUM(4),PSUM(3)/PSUM(4)) - CALL PYROBO(IREC,IREC,THETA,PHI,PSUM(1)/PSUM(4), - & PSUM(2)/PSUM(4),PSUM(3)/PSUM(4)) - -C... Loop back when not enough momentum could be shuffled. -C... (As long as there is something left on either side.) - IF(IFAIL.EQ.1) THEN - 215 IF(IS.EQ.1.AND.IREC.GT.IMIN) THEN - IREC=IREC-1 - GOTO 200 - ELSEIF(IS.EQ.2.AND.IREC.LT.IMAX) THEN - IREC=IREC+1 - GOTO 200 - ELSEIF(ISDE.EQ.2.AND.IS.EQ.3-ISIDE) THEN - IS=ISIDE - IREC=IRECSV - GOTO 215 - ENDIF - ENDIF - -C... End loop over fragmentation of two sides around gluino. - IRECSV=IREC - 220 CONTINUE - -C... New slot at end of record for gluino R-hadron. - DO 230 J=1,5 - K(N+1,J)=0 - P(N+1,J)=P(IGL,J) - V(N+1,J)=V(IGL,J) - 230 CONTINUE - -C... Status and code of this slot. - K(N+1,1)=15+IGLUI - -C... Gluino-ball. - IF(KFSVMX.EQ.21) THEN - K(N+1,2)=KSUSY1+993 -C... Gluino-meson. - ELSEIF(KFSVMX.LT.10) THEN - IF(KFSVMX.eq.KFSVMN.and.KFSVMX.gt.1) then - KFSVMN=1 - KFSVMX=1 - endif - K(N+1,2)=KSUSY1+9000+100*KFSVMX+10*KFSVMN+3 - IF(KFSVMX.EQ.KFSVMN) THEN - ELSEIF(MOD(KFSVMX,2).EQ.0) THEN - IF(KFSVMX.EQ.KFSAV(1).OR.KFSVMX.EQ.KFSAV(2)) - & K(N+1,2)=-K(N+1,2) - ELSE - IF(KFSVMX.EQ.-KFSAV(1).OR.KFSVMX.EQ.-KFSAV(2)) - & K(N+1,2)=-K(N+1,2) - ENDIF -C... Gluino-baryon. - ELSE - KFSVX1=KFSVMX/1000 - KFSVX2=MOD(KFSVMX/100,10) - KFA=MAX(KFSVX1,KFSVX2,KFSVMN) - KFC=MIN(KFSVX1,KFSVX2,KFSVMN) - KFB=KFSVX1+KFSVX2+KFSVMN-KFA-KFC - K(N+1,2)=SIGN(KSUSY1+90000+1000*KFA+100*KFB+10*KFC+2, - & -KFSAV(1)) - if(iabs(K(N+1,2)).ne.1093212) goto 90 - ENDIF - - CALL PYNAME(K(N+1,2),CHRHAD) - print*, 'R-hadron KF = ',K(N+1,2),' and name ',CHRHAD -c print*, 'RMA KC = ',PYCOMP(K(N+1,2)) -c print*, 'RMA CHAF = ',CHAF(PYCOMP(K(N+1,2)),1),', ' -c & ,CHAF(PYCOMP(K(N+1,2)),1) - K(N+1,3)=K(IGL,3) - N=N+1 - -C... Code and momentum of two new string endpoints. - K(IGL,2)=KFSAV(1) - K(IGL+1,2)=KFSAV(2) - IF(KFSAV(1).NE.21) K(IGL,1)=1 - DO 240 J=1,5 - P(IGL,J)=PSAV(1,J) - P(IGL+1,J)=PSAV(2,J) - 240 CONTINUE - -C... End of loop over two gluinos. - 300 CONTINUE - -C... Cleanup: remove zero-energy gluons. - NNOW=N - N=NOLD - DO 330 I=NOLD+1,NNOW - IF(K(I,2).EQ.21.AND.P(I,4).LT.1D-10) THEN - ELSEIF(I.EQ.N+1) THEN - N=N+1 - ELSE - N=N+1 - DO 320 J=1,5 - K(N,J)=K(I,J) - P(N,J)=P(I,J) - V(N,J)=V(I,J) - 320 CONTINUE - ENDIF - 330 CONTINUE - -C... Finish off with standard hadronization. -C... Note that the R-hadrons are not affected here, since they -C... (deliberately erroneously) have been bookkept as decayed. - IF(IERR.GT.0) THEN - WRITE(*,*) '...skipping pyexec for this event!' - ELSE -c call pylist(2) - CALL PYEXEC - ENDIF - -C... Restore code of gluino-hadrons to non-fragmented numbers. - N6=0 - N7=0 - DO 340 I=1,N - IF(K(I,1).EQ.16.OR.K(I,1).EQ.17) K(I,1)=K(I,1)-10 -C... First R-hadron - IF(K(I,1).EQ.6) then - ihad1=i -c WRITE(*,*) 'R-hadron 1 chg:',PYCHGE(K(I,2))/3D0,K(I,2) - N6=N6+1 - ENDIF -C... Second R-hadron - IF(K(I,1).EQ.7) then - N7=N7+1 - ihad2=i -c WRITE(*,*) 'R-hadron 2 chg:',PYCHGE(K(I,2))/3D0,K(I,2) - ENDIF - - 340 CONTINUE - IF(N6.GT.1.OR.N7.GT.1) MSTU(24)=1 - -C... Extracheck charge. - - chgnew=pyp(0,6) - - IF(ABS(CHGNEW-CHGSAV).GT.0.1D0) MSTU(24)=1 -c WRITE(*,*) 'CHGNEW CHGSAV',CHGNEW,CHGSAV - -C... In case of trouble, make up to five attempts. - IF(MSTU(24).NE.0.AND.LOOP.LT.5) THEN - WRITE(*,*) '...give it new try...' - MSTU(23)=MSTU(23)-1 - GOTO 90 - ELSEIF(MSTU(24).NE.0) THEN - WRITE(*,*) '...but still fail after repeated attempts!' -C*** Set error flag. - IERR=2 - ELSEIF(MSTU(24).EQ.0.AND.LOOP.GT.1) THEN - WRITE(*,*) '...and now it worked!' - ENDIF - -c.... ACH - check for more errors from pyexec - IF(MSTU(24).GT.0) THEN - IERR=MSTU(24) - WRITE(*,*) 'ACH123 IERR being set to ', IERR - ENDIF - -C... Finished. Restore baryon production model. - MSTJ(12)=MSTJ12 -c call pylist(2) - RETURN - END - -C********************************************************************* - - - -C...PYGLDC -C...Decays the gluino inside a gluino-hadron. - - SUBROUTINE PYGLDC - -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) -C INTEGER PYK,PYCHGE,PYCOMP -C...Parameter statement to help give large particle numbers -C...(left- and righthanded SUSY, excited fermions). - PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KEXCIT=4000000) -C...Commonblocks. - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) -C...Note that dimensions below grew from 4000 to 8000 in Pythia 6.2! - COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5) - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) - COMMON/PYINT1/MINT(400),VINT(400) - COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2) - SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYPARS/,/PYINT1/, - &/PYINT2/ - -C...Optional offset of constituent quark/diquark mass, -C...representing gluon cloud around gluino not part of the decay. - PMOFF = 0.2D0 - -C...The probability that it has spin 1. -C...(Except for identical flavours, where spin 1 is only possibility.) -C...(Recall that all R-baryon codes were given as if spin 1, sloppily.) - PROBS1=0.5D0 - -C...Loop through to find R-hadrons. - DO 150 I=1,N -C...If only one of the R-hadrons should decay inside the detector, -C...you could here pick at random whether to allow the one with -C...K(I,1) = 6 or the one with =7. (Where the random choice of course -C...could depend on the position of an imagined displaced vertex.) - IF(K(I,1).EQ.6.OR.K(I,1).EQ.7) THEN - -C...Begin resolve R-hadron flavour content to q + qbar or q + qq. - KFRH=(IABS(K(I,2))-KSUSY1)/10 -C...Gluino - g : split g to u ubar or d dbar. - IF(KFRH.LT.100) THEN - KF1=1+INT(0.5D0+PYR(0)) - KF2=-KF1 - ELSEIF(KFRH.LT.1000) THEN -C...Gluino-meson: split to q + qbar. - KFRH=KFRH-900 - KF1=KFRH/10 - KF2=-MOD(KFRH,10) - IF(MOD(KF1,2).EQ.1) THEN - KF1=MOD(KFRH,10) - KF2=-(KFRH/10) - ENDIF -c...Gluino-baryon: split to q + qq (diquark). Pick diquark at random. - ELSE - KFRH=KFRH-9000 - KFA=KFRH/100 - KFB=MOD(KFRH/10,10) - KFC=MOD(KFRH,10) - RDIQ=3D0*PYR(0) - IF(RDIQ.LT.1D0) THEN - KF1=KFA - KF2=1000*KFB+100*KFC+3 - IF(KFB.NE.KFC.AND.PROBS1.LT.PYR(0)) KF2=KF2-2 - ELSEIF(RDIQ.LT.2D0) THEN - KF1=KFB - KF2=1000*KFA+100*KFC+3 - IF(KFA.NE.KFC.AND.PROBS1.LT.PYR(0)) KF2=KF2-2 - ELSE - KF1=KFC - KF2=1000*KFA+100*KFB+3 - IF(KFA.NE.KFB.AND.PROBS1.LT.PYR(0)) KF2=KF2-2 - ENDIF - ENDIF -C...Flip for anti-R-hadron. - IF(K(I,2).LT.0) THEN - KFSV=KF1 - KF1=-KF2 - KF2=-KFSV - ENDIF - -C...Subdivide R-hadron into gluino + 2 light (di)quarks in new slots. - DO 120 I1=N+1,N+3 - K(I1,1)=3 - K(I1,3)=I - K(I1,4)=0 - K(I1,5)=0 - DO 110 J=1,5 - V(I1,J)=0D0 - 110 CONTINUE - 120 CONTINUE - -C...Store new flavours. - K(N+1,2)=KSUSY1+21 - K(N+2,2)=KF1 - K(N+3,2)=KF2 - -C...Set up colour flow. - K(N+1,4)=MSTU(5)*(N+3) - K(N+1,5)=MSTU(5)*(N+2) - K(N+2,4)=MSTU(5)*(N+1) - K(N+3,5)=MSTU(5)*(N+1) - -C...Define effective quark/diquark masses. - MSTJ(93)=1 - PM1=PYMASS(KF1)+PMOFF - MSTJ(93)=1 - PM2=PYMASS(KF2)+PMOFF - -C...Share gluino"hadron" momentum with two light quarks. - FAC1=PM1/P(I,5) - FAC2=PM2/P(I,5) - DO 130 J=1,5 - P(N+1,J)=(1D0-FAC1-FAC2)*P(I,J) - P(N+2,J)=FAC1*P(I,J) - P(N+3,J)=FAC2*P(I,J) - 130 CONTINUE - -C...If you want a displaced vertex, you could also write that info -C...into the V array, but you have to calculate that vertex yourself. - -C...Mark R-hadron decayed and update number counter. - K(I,1)=K(I,1)+10 - K(I,4)=N+1 - K(I,5)=N+3 - N=N+3 - -C...Let gluino decay now. - CALL PYRESD(N-2) - -C...End of loop over two R-hadrons. - ENDIF - 150 CONTINUE - -C...And then the decay products can fragment, etc. - CALL PYEXEC - - - RETURN - END - - -CCCCCCCCCCCC - -C********************************************************************* - -C...PYGLFR -C... Gluino fragmentation for Regge model - - SUBROUTINE PYGLFR(IERR) - -C... Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) -C INTEGER PYK,PYCHGE,PYCOMP -C... Parameter statement to help give large particle numbers -C... (left- and righthanded SUSY, excited fermions). - PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KEXCIT=4000000) -C... Commonblocks. - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) -C... Note that dimensions below grew from 4000 to 8000 in Pythia 6.2! - COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5) - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) - COMMON/PYINT1/MINT(400),VINT(400) - COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2) - SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYPARS/,/PYINT1/, - & /PYINT2/ -C... Local array. - DIMENSION PSUM(5),KFSAV(2),PMSAV(2),PSAV(2,5) - - INTEGER IKFRH(20),IKCHGRH(20),IKANTRH(20) - integer ihad1,ihad2 - REAL*8 PROBGG - COMMON/RHADB/IKFRH,IKCHGRH,IKANTRH,PROBGG - CHARACTER*16 CHRHAD - -C... Free parameter: relative probability for gluino-gluon-ball. -C... (But occasional low-mass string will never become it anyway.) -c Rasmus: Moved to rhadb common block to make configurable -c PROBGG=0.1D0 - -C... Free parameter: gluon constituent mass. - PMGLU=0.7D0 - -C... Free parameter: max kinetic energy in gluino-hadron. - PMKIN=0.5D0 - -C... Switch off popcorn baryon production. (Not imperative, but more -C... failed events when popcorn is allowed.) - MSTJ12=MSTJ(12) - MSTJ(12)=1 - -C... Convenient shorthand. - KFGL=KSUSY1+21 - -C*** Reset error code. - IERR=0 - - write(*,*) 'In PYGLFR' - -C... Loopback point for serious problems, with new try. - LOOP=0 - CALL PYEDIT(21) - CHGSAV=PYP(0,6) - 90 LOOP=LOOP+1 - IF(LOOP.GT.1) CALL PYEDIT(22) - -C*** Begin new code for testing. -C... Find if gluino put first or last in closed loop. - 400 IBEGCL=0 - IENDCL=0 - IF(K(1,2).EQ.KFGL.AND.K(1,1).LE.2) IBEGCL=1 - DO 410 I=2,N - IF(K(I,2).EQ.KFGL) THEN - IF(K(I-1,1).NE.2.AND.K(I,1).LE.2) IBEGCL=I - IF(K(I,1).EQ.1) IENDCL=I - ENDIF - 410 CONTINUE - IF(IBEGCL.GT.0) IENDCL=0 - -C... Range of system beginning or ending with gluino. - IF(IBEGCL.NE.0) THEN - IBEG=IBEGCL - IEND=IBEG - 420 IEND=IEND+1 - IF(IEND.LT.N.AND.K(IEND,1).EQ.2) GOTO 420 - IF(IEND.GT.N) IEND=N - ELSEIF(IENDCL.NE.0) THEN - IEND=IENDCL - IBEG=IEND - 430 IBEG=IBEG-1 -C JK REMOVING COMPILER WARNING - IF(IBEG.GE.2.AND.K(IBEG-1,1).EQ.2) THEN - 431 IEND=IEND+1 - IF(IEND.LT.N.AND.K(IEND,1).EQ.2) GOTO 431 - IF(IEND.GT.N) IEND=N - ENDIF -C JK - ENDIF - -C... Count number of gluinos in system. Error return if only gluinos. - IF(IBEGCL.NE.0.OR.IENDCL.NE.0) THEN - WRITE(*,*) ' Gluino found in closed string; ', - & ' special processing begun ' - NGLSYS=0 - DO 435 I=IBEG,IEND - IF(K(I,2).EQ.KFGL) NGLSYS=NGLSYS+1 - 435 CONTINUE - IF(NGLSYS.EQ.IEND-IBEG+1) THEN - IERR=1 - MSTJ(12)=MSTJ12 - WRITE(*,*) ' Fail to fragment closed string of gluinos only' - RETURN - ENDIF - -C... Decide to split system at random gluon. - 440 ISPLIT=IBEG+INT(PYR(0)*(IEND+1-IBEG)) - IF(ISPLIT.GT.IEND.OR.K(ISPLIT,2).EQ.KFGL) GOTO 440 - -C... Copy system from ISPLIT to end, beginning with a d or u quark. - KFSPL=INT(1.5D0+PYR(0)) - DO 470 I=ISPLIT,IEND - N=N+1 - DO 450 J=1,5 - K(N,J)=K(I,J) - P(N,J)=P(I,J) - V(N,J)=V(I,J) - 450 CONTINUE - K(I,1)=K(I,1)+10 - K(I,4)=N - K(I,5)=N - K(N,1)=2 - K(N,3)=I - IF(I.EQ.ISPLIT) THEN - K(N,2)=KFSPL - DO 460 J=1,5 - P(N,J)=0.5D0*P(N,J) - 460 CONTINUE - ENDIF - 470 CONTINUE - -C... Copy system from beginning to ISPLIT, ending with a dbar or ubar quark. - DO 500 I=IBEG,ISPLIT - N=N+1 - DO 480 J=1,5 - K(N,J)=K(I,J) - P(N,J)=P(I,J) - V(N,J)=V(I,J) - 480 CONTINUE - K(I,1)=K(I,1)+10 - K(I,4)=N - K(I,5)=N - K(N,1)=2 - K(N,3)=I - IF(I.EQ.ISPLIT) THEN - K(N,1)=1 - K(N,2)=-KFSPL - DO 490 J=1,5 - P(N,J)=0.5D0*P(N,J) - 490 CONTINUE - ENDIF - 500 CONTINUE - -C... Loop back in case both gluinos need to be addressed this way. - GOTO 400 - ENDIF -C*** End new code for testing. - -C... Take copy of string system(s), leaving extra free slot after gluino. -C... (Eventually to be overwritten by one q and one qbar string break.) - NOLD=N - NGLUI=0 - DO 120 I=1,NOLD - ICOPY=0 - IF(K(I,1).EQ.2) ICOPY=1 - IF(K(I,1).EQ.1.AND.I.GE.2) THEN - IF(K(I-1,1).EQ.12) ICOPY=1 - ENDIF - IF(ICOPY.EQ.1) THEN - N=N+1 - DO 100 J=1,5 - K(N,J)=K(I,J) - P(N,J)=P(I,J) - V(N,J)=V(I,J) - 100 CONTINUE - K(I,1)=K(I,1)+10 - K(I,4)=N - K(I,5)=N - K(N,3)=I - IF(K(I,2).EQ.KFGL) THEN - NGLUI=NGLUI+1 - N=N+1 - DO 110 J=1,5 - K(N,J)=K(N-1,J) - P(N,J)=0D0 - V(N,J)=V(I,J) - 110 CONTINUE - K(I,5)=N - K(N,2)=21 - ENDIF - ENDIF - 120 CONTINUE - -C... Loop over (up to) two gluinos per event. - DO 300 IGLUI=1,NGLUI - -C... Identify position of gluino (randomize order of treatment). - IGL=0 - NGL=0 - DO 130 I=1,N - IF(K(I,1).EQ.2.AND.K(I,2).EQ.KFGL) THEN - NGL=NGL+1 - IF(IGLUI.EQ.NGLUI) THEN - IGL=I - ELSEIF(NGL.EQ.1) THEN - IF(PYR(0).LT.0.5D0) IGL=I - ELSEIF(IGL.EQ.0) THEN - IGL=I - ENDIF - ENDIF - 130 CONTINUE - -C... Identify range of partons on string the gluino belongs to. - IMIN=IGL - 140 IMIN=IMIN-1 - IF(K(IMIN-1,1).EQ.2) GOTO 140 - IMAX=IGL - 150 IMAX=IMAX+1 - IF(K(IMAX,1).EQ.2) GOTO 150 - -C... Find mass of this gluino-string. - DO 170 J=1,5 - PSUM(J)=0D0 - DO 160 I=IMIN,IMAX - PSUM(J)=PSUM(J)+P(I,J) - 160 CONTINUE - 170 CONTINUE - PSUM(5)=SQRT(MAX(0D0,PSUM(4)**2-PSUM(1)**2-PSUM(2)**2- - & PSUM(3)**2)) - -C... If low-mass, then consider gluino-hadron already formed. - IF(PSUM(5).LE.P(IGL,5)+P(IMIN,5)+P(IMAX,5)+PMKIN) THEN - DO 180 I=IMIN,IMAX - K(I,1)=15+IGLUI - 180 CONTINUE - GOTO 300 - ENDIF - -C... Else break string by production of new gg or two new qqbar pairs. -C... (Also diquarks allowed, but not popcorn, and not two adjacent.) - IF(PYR(0).LT.PROBGG) THEN -C... Let a gluon occupy two slots, to make administration work the same -C... way as for the qqbar case. - KFSAV(1)=21 - KFSAV(2)=21 - PMSAV(1)=0.5D0*PMGLU - PMSAV(2)=0.5D0*PMGLU - ELSE - 185 CALL PYDCYK(K(IMIN,2),0,KFSAV(1),KFDUM) - CALL PYDCYK(K(IMAX,2),0,KFSAV(2),KFDUM) - IF(IABS(KFSAV(1)).GT.10.AND.IABS(KFSAV(2)).GT.10) GOTO 185 - IF(IABS(KFSAV(1)).GT.10.AND.IABS(K(IGL-1,2)).GT.10) GOTO 185 - IF(IABS(KFSAV(2)).GT.10.AND.IABS(K(IGL+2,2)).GT.10) GOTO 185 - KFSAV(1)=ISIGN(MOD(IABS(KFSAV(1)),10000),KFSAV(1)) - KFSAV(2)=ISIGN(MOD(IABS(KFSAV(2)),10000),KFSAV(2)) - MSTJ(93)=1 - PMSAV(1)=PYMASS(KFSAV(1)) - MSTJ(93)=1 - PMSAV(2)=PYMASS(KFSAV(2)) - ENDIF - -C... Mass of gluino-hadron. - PMGSAV=P(IGL,5) - PMGB=P(IGL,5)+PMSAV(1)+PMSAV(2) - -C... Pick at random order in which both sides of gluino string break. - ISIDE=INT(1.5D0+PYR(0)) - DO 220 ISDE=1,2 - IF(ISDE.EQ.1) IS=ISIDE - IF(ISDE.EQ.2) IS=3-ISIDE - -C...Pick momentum sharing according to fragmentation function as if bottom. - M11SAV=MSTJ(11) - PMBSAV=PARF(105) - MSTJ(11)=4 - PARF(105)=PMGSAV - CALL PYZDIS(5,0,PMGB**2,ZGL) - MSTJ(11)=M11SAV - PARF(105)=PMBSAV - ZGL=MAX(0.9D0,MIN(0.9999D0,ZGL)) - DO 190 J=1,5 - PSAV(IS,J)=(1D0-ZGL)*P(IGL,J) - P(IGL,J)=ZGL*P(IGL,J) - 190 CONTINUE - -C... Target gluino-hadron mass for this stage of momentum reshuffling. - PMOLD=P(IGL,5) - IF(ISDE.EQ.1) PMNEW=PMGSAV+PMSAV(IS) - IF(ISDE.EQ.2) PMNEW=PMGB - -C... Recoiling parton from which to shuffle momentum. System momentum. - IF(IS.EQ.1) IREC=IGL-1 - IF(IS.EQ.2) IREC=IGL+2 - 200 DO 210 J=1,4 - PSUM(J)=P(IGL,J)+P(IREC,J) - 210 CONTINUE - -C... Boost to rest frame of system, and align gluino along +z axis. - CALL PYROBO(IGL,IGL,0D0,0D0,-(PSUM(1)/PSUM(4)), - & -(PSUM(2)/PSUM(4)),-(PSUM(3)/PSUM(4))) - CALL PYROBO(IREC,IREC,0D0,0D0,-(PSUM(1)/PSUM(4)), - & -(PSUM(2)/PSUM(4)),-(PSUM(3)/PSUM(4))) - PHI=PYANGL(P(IGL,1),P(IGL,2)) - CALL PYROBO(IGL,IGL,0D0,-PHI,0D0,0D0,0D0) - CALL PYROBO(IREC,IREC,0D0,-PHI,0D0,0D0,0D0) - THETA=PYANGL(P(IGL,3),P(IGL,1)) - CALL PYROBO(IGL,IGL,-THETA,0D0,0D0,0D0,0D0) - CALL PYROBO(IREC,IREC,-THETA,0D0,0D0,0D0,0D0) - -C... Calculate new kinematics in this frame, for desired gluino mass. - ETOT=P(IGL,4)+P(IREC,4) - IF(ETOT.GT.PMNEW+P(IREC,5)) THEN - IFAIL=0 - PZNEW=0.5D0 - & *SQRT(MAX(0D0,(ETOT**2-PMNEW**2-P(IREC,5)**2)**2- - & 4D0*PMNEW**2*P(IREC,5)**2))/ETOT - P(IGL,3)=PZNEW - P(IGL,4)=SQRT(PZNEW**2+PMNEW**2) - P(IGL,5)=PMNEW - P(IREC,3)=-PZNEW - P(IREC,4)=SQRT(PZNEW**2+P(IREC,5)**2) - -C... If not enough momentum, take what can be taken. - ELSE - IFAIL=1 - PMOLD=ETOT-P(IREC,5) - P(IGL,3)=0D0 - P(IGL,4)=PMOLD - P(IGL,5)=PMOLD - P(IREC,3)=0D0 - P(IREC,4)=P(IREC,5) - ENDIF - -C... Bost back to lab frame. - CALL PYROBO(IGL,IGL,THETA,PHI,PSUM(1)/PSUM(4), - & PSUM(2)/PSUM(4),PSUM(3)/PSUM(4)) - CALL PYROBO(IREC,IREC,THETA,PHI,PSUM(1)/PSUM(4), - & PSUM(2)/PSUM(4),PSUM(3)/PSUM(4)) - -C... Loop back when not enough momentum could be shuffled. -C... (As long as there is something left on either side.) - IF(IFAIL.EQ.1) THEN - 215 IF(IS.EQ.1.AND.IREC.GT.IMIN) THEN - IREC=IREC-1 - GOTO 200 - ELSEIF(IS.EQ.2.AND.IREC.LT.IMAX) THEN - IREC=IREC+1 - GOTO 200 - ELSEIF(ISDE.EQ.2.AND.IS.EQ.3-ISIDE) THEN - IS=ISIDE - IREC=IRECSV - GOTO 215 - ENDIF - ENDIF - -C... End loop over fragmentation of two sides around gluino. - IRECSV=IREC - 220 CONTINUE - -C... New slot at end of record for gluino R-hadron. - DO 230 J=1,5 - K(N+1,J)=0 - P(N+1,J)=P(IGL,J) - V(N+1,J)=V(IGL,J) - 230 CONTINUE - -C... Status and code of this slot. - K(N+1,1)=15+IGLUI - KFSVMX=MAX(IABS(KFSAV(1)),IABS(KFSAV(2))) - KFSVMN=MIN(IABS(KFSAV(1)),IABS(KFSAV(2))) -C... Gluino-ball. - IF(KFSVMX.EQ.21) THEN - K(N+1,2)=KSUSY1+993 -C... Gluino-meson. - ELSEIF(KFSVMX.LT.10) THEN - K(N+1,2)=KSUSY1+9000+100*KFSVMX+10*KFSVMN+3 - IF(KFSVMX.EQ.KFSVMN) THEN - ELSEIF(MOD(KFSVMX,2).EQ.0) THEN - IF(KFSVMX.EQ.KFSAV(1).OR.KFSVMX.EQ.KFSAV(2)) - & K(N+1,2)=-K(N+1,2) - ELSE - IF(KFSVMX.EQ.-KFSAV(1).OR.KFSVMX.EQ.-KFSAV(2)) - & K(N+1,2)=-K(N+1,2) - ENDIF -C... Gluino-baryon. - ELSE - KFSVX1=KFSVMX/1000 - KFSVX2=MOD(KFSVMX/100,10) - KFA=MAX(KFSVX1,KFSVX2,KFSVMN) - KFC=MIN(KFSVX1,KFSVX2,KFSVMN) - KFB=KFSVX1+KFSVX2+KFSVMN-KFA-KFC - K(N+1,2)=SIGN(KSUSY1+90000+1000*KFA+100*KFB+10*KFC+4, - & -KFSAV(1)) - ENDIF - CALL PYNAME(K(N+1,2),CHRHAD) - print*, 'R-hadron KF = ',K(N+1,2),' and name ',CHRHAD - - - K(N+1,3)=K(IGL,3) - N=N+1 - -C... Code and momentum of two new string endpoints. - K(IGL,2)=KFSAV(1) - K(IGL+1,2)=KFSAV(2) - IF(KFSAV(1).NE.21) K(IGL,1)=1 - DO 240 J=1,5 - P(IGL,J)=PSAV(1,J) - P(IGL+1,J)=PSAV(2,J) - 240 CONTINUE - -C... End of loop over two gluinos. - 300 CONTINUE - -C... Cleanup: remove zero-energy gluons. - NNOW=N - N=NOLD - DO 330 I=NOLD+1,NNOW - IF(K(I,2).EQ.21.AND.P(I,4).LT.1D-10) THEN - ELSEIF(I.EQ.N+1) THEN - N=N+1 - ELSE - N=N+1 - DO 320 J=1,5 - K(N,J)=K(I,J) - P(N,J)=P(I,J) - V(N,J)=V(I,J) - 320 CONTINUE - ENDIF - 330 CONTINUE - -C... Finish off with standard hadronization. -C... Note that the R-hadrons are not affected here, since they -C... (deliberately erroneously) have been bookkept as decayed. - IF(IERR.GT.0) THEN - WRITE(*,*) '...skipping pyexec for this event!' - ELSE -c call pylist(2) - CALL PYEXEC - ENDIF - -C... Restore code of gluino-hadrons to non-fragmented numbers. - N6=0 - N7=0 - DO 340 I=1,N - IF(K(I,1).EQ.16.OR.K(I,1).EQ.17) K(I,1)=K(I,1)-10 -C... First R-hadron - IF(K(I,1).EQ.6) then - ihad1=i -c WRITE(*,*) 'R-hadron 1 chg:',PYCHGE(K(I,2))/3D0,K(I,2) - N6=N6+1 - ENDIF -C... Second R-hadron - IF(K(I,1).EQ.7) then - N7=N7+1 - ihad2=i -c WRITE(*,*) 'R-hadron 2 chg:',PYCHGE(K(I,2))/3D0,K(I,2) - ENDIF - - 340 CONTINUE - IF(N6.GT.1.OR.N7.GT.1) MSTU(24)=1 - -C... Extracheck charge. - - chgnew=pyp(0,6) - - IF(ABS(CHGNEW-CHGSAV).GT.0.1D0) MSTU(24)=1 -c WRITE(*,*) 'CHGNEW CHGSAV',CHGNEW,CHGSAV - -C... In case of trouble, make up to five attempts. - IF(MSTU(24).NE.0.AND.LOOP.LT.5) THEN - WRITE(*,*) '...give it new try...' - MSTU(23)=MSTU(23)-1 - GOTO 90 - ELSEIF(MSTU(24).NE.0) THEN - WRITE(*,*) '...but still fail after repeated attempts!' -C*** Set error flag. - IERR=2 - ELSEIF(MSTU(24).EQ.0.AND.LOOP.GT.1) THEN - WRITE(*,*) '...and now it worked!' - ENDIF - -c.... ACH - check for more errors from pyexec - IF(MSTU(24).GT.0) THEN - IERR=MSTU(24) - WRITE(*,*) 'ACH123 IERR being set to ', IERR - ENDIF - -C... Finished. Restore baryon production model. - MSTJ(12)=MSTJ12 -c call pylist(2) - RETURN - END - -cccccccccccc - -C********************************************************************* - -C...PYGLFRIN -C... Gluino fragmentation for Regge model - - SUBROUTINE PYGLFRIN(IERR) - -C... Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) -C INTEGER PYK,PYCHGE,PYCOMP -C... Parameter statement to help give large particle numbers -C... (left- and righthanded SUSY, excited fermions). - PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KEXCIT=4000000) -C... Commonblocks. - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) -C... Note that dimensions below grew from 4000 to 8000 in Pythia 6.2! - COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5) - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) - COMMON/PYINT1/MINT(400),VINT(400) - COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2) - SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYPARS/,/PYINT1/, - & /PYINT2/ -C... Local array. - DIMENSION PSUM(5),KFSAV(2),PMSAV(2),PSAV(2,5) - - INTEGER IKFRH(20),IKCHGRH(20),IKANTRH(20) - integer ihad1,ihad2 - REAL*8 PROBGG - COMMON/RHADB/IKFRH,IKCHGRH,IKANTRH,PROBGG - CHARACTER*16 CHRHAD - -C... Free parameter: relative probability for gluino-gluon-ball. -C... (But occasional low-mass string will never become it anyway.) -c Rasmus: Moved to rhadb common block to make configurable -c PROBGG=0.1D0 - -C... Free parameter: gluon constituent mass. - PMGLU=0.33D0 - -C... Free parameter: max kinetic energy in gluino-hadron. - PMKIN=0.5D0 - -C... Switch off popcorn baryon production. (Not imperative, but more -C... failed events when popcorn is allowed.) - MSTJ12=MSTJ(12) - MSTJ(12)=1 - -C... Convenient shorthand. - KFGL=KSUSY1+21 - -C*** Reset error code. - IERR=0 - - write(*,*) 'In PYGLFRIN' - -C... Loopback point for serious problems, with new try. - LOOP=0 - CALL PYEDIT(21) - CHGSAV=PYP(0,6) - 90 LOOP=LOOP+1 - IF(LOOP.GT.1) CALL PYEDIT(22) - -C*** Begin new code for testing. -C... Find if gluino put first or last in closed loop. - 400 IBEGCL=0 - IENDCL=0 - IF(K(1,2).EQ.KFGL.AND.K(1,1).LE.2) IBEGCL=1 - DO 410 I=2,N - IF(K(I,2).EQ.KFGL) THEN - IF(K(I-1,1).NE.2.AND.K(I,1).LE.2) IBEGCL=I - IF(K(I,1).EQ.1) IENDCL=I - ENDIF - 410 CONTINUE - IF(IBEGCL.GT.0) IENDCL=0 - -C... Range of system beginning or ending with gluino. - IF(IBEGCL.NE.0) THEN - IBEG=IBEGCL - IEND=IBEG - 420 IEND=IEND+1 - IF(IEND.LT.N.AND.K(IEND,1).EQ.2) GOTO 420 - IF(IEND.GT.N) IEND=N - ELSEIF(IENDCL.NE.0) THEN - IEND=IENDCL - IBEG=IEND - 430 IBEG=IBEG-1 -C JK REMOVING COMPILER WARNING - IF(IBEG.GE.2.AND.K(IBEG-1,1).EQ.2) THEN - 431 IEND=IEND+1 - IF(IEND.LT.N.AND.K(IEND,1).EQ.2) GOTO 431 - IF(IEND.GT.N) IEND=N -C JK - ENDIF - ENDIF - -C... Count number of gluinos in system. Error return if only gluinos. - IF(IBEGCL.NE.0.OR.IENDCL.NE.0) THEN - WRITE(*,*) ' Gluino found in closed string; ', - & ' special processing begun ' - NGLSYS=0 - DO 435 I=IBEG,IEND - IF(K(I,2).EQ.KFGL) NGLSYS=NGLSYS+1 - 435 CONTINUE - IF(NGLSYS.EQ.IEND-IBEG+1) THEN - IERR=1 - MSTJ(12)=MSTJ12 - WRITE(*,*) ' Fail to fragment closed string of gluinos only' - RETURN - ENDIF - -C... Decide to split system at random gluon. - 440 ISPLIT=IBEG+INT(PYR(0)*(IEND+1-IBEG)) - IF(ISPLIT.GT.IEND.OR.K(ISPLIT,2).EQ.KFGL) GOTO 440 - -C... Copy system from ISPLIT to end, beginning with a d or u quark. - KFSPL=INT(1.5D0+PYR(0)) - DO 470 I=ISPLIT,IEND - N=N+1 - DO 450 J=1,5 - K(N,J)=K(I,J) - P(N,J)=P(I,J) - V(N,J)=V(I,J) - 450 CONTINUE - K(I,1)=K(I,1)+10 - K(I,4)=N - K(I,5)=N - K(N,1)=2 - K(N,3)=I - IF(I.EQ.ISPLIT) THEN - K(N,2)=KFSPL - DO 460 J=1,5 - P(N,J)=0.5D0*P(N,J) - 460 CONTINUE - ENDIF - 470 CONTINUE - -C... Copy system from beginning to ISPLIT, ending with a dbar or ubar quark. - DO 500 I=IBEG,ISPLIT - N=N+1 - DO 480 J=1,5 - K(N,J)=K(I,J) - P(N,J)=P(I,J) - V(N,J)=V(I,J) - 480 CONTINUE - K(I,1)=K(I,1)+10 - K(I,4)=N - K(I,5)=N - K(N,1)=2 - K(N,3)=I - IF(I.EQ.ISPLIT) THEN - K(N,1)=1 - K(N,2)=-KFSPL - DO 490 J=1,5 - P(N,J)=0.5D0*P(N,J) - 490 CONTINUE - ENDIF - 500 CONTINUE - -C... Loop back in case both gluinos need to be addressed this way. - GOTO 400 - ENDIF -C*** End new code for testing. - -C... Take copy of string system(s), leaving extra free slot after gluino. -C... (Eventually to be overwritten by one q and one qbar string break.) - NOLD=N - NGLUI=0 - DO 120 I=1,NOLD - ICOPY=0 - IF(K(I,1).EQ.2) ICOPY=1 - IF(K(I,1).EQ.1.AND.I.GE.2) THEN - IF(K(I-1,1).EQ.12) ICOPY=1 - ENDIF - IF(ICOPY.EQ.1) THEN - N=N+1 - DO 100 J=1,5 - K(N,J)=K(I,J) - P(N,J)=P(I,J) - V(N,J)=V(I,J) - 100 CONTINUE - K(I,1)=K(I,1)+10 - K(I,4)=N - K(I,5)=N - K(N,3)=I - IF(K(I,2).EQ.KFGL) THEN - NGLUI=NGLUI+1 - N=N+1 - DO 110 J=1,5 - K(N,J)=K(N-1,J) - P(N,J)=0D0 - V(N,J)=V(I,J) - 110 CONTINUE - K(I,5)=N - K(N,2)=21 - ENDIF - ENDIF - 120 CONTINUE - -C... Loop over (up to) two gluinos per event. - DO 300 IGLUI=1,NGLUI - -C... Identify position of gluino (randomize order of treatment). - IGL=0 - NGL=0 - DO 130 I=1,N - IF(K(I,1).EQ.2.AND.K(I,2).EQ.KFGL) THEN - NGL=NGL+1 - IF(IGLUI.EQ.NGLUI) THEN - IGL=I - ELSEIF(NGL.EQ.1) THEN - IF(PYR(0).LT.0.5D0) IGL=I - ELSEIF(IGL.EQ.0) THEN - IGL=I - ENDIF - ENDIF - 130 CONTINUE - -C... Identify range of partons on string the gluino belongs to. - IMIN=IGL - 140 IMIN=IMIN-1 - IF(K(IMIN-1,1).EQ.2) GOTO 140 - IMAX=IGL - 150 IMAX=IMAX+1 - IF(K(IMAX,1).EQ.2) GOTO 150 - -C... Find mass of this gluino-string. - DO 170 J=1,5 - PSUM(J)=0D0 - DO 160 I=IMIN,IMAX - PSUM(J)=PSUM(J)+P(I,J) - 160 CONTINUE - 170 CONTINUE - PSUM(5)=SQRT(MAX(0D0,PSUM(4)**2-PSUM(1)**2-PSUM(2)**2- - & PSUM(3)**2)) - -C... If low-mass, then consider gluino-hadron already formed. - IF(PSUM(5).LE.P(IGL,5)+P(IMIN,5)+P(IMAX,5)+PMKIN) THEN - DO 180 I=IMIN,IMAX - K(I,1)=15+IGLUI - 180 CONTINUE - GOTO 300 - ENDIF - -C... Else break string by production of new gg or two new qqbar pairs. -C... (Also diquarks allowed, but not popcorn, and not two adjacent.) - IF(PYR(0).LT.PROBGG) THEN -C... Let a gluon occupy two slots, to make administration work the same -C... way as for the qqbar case. - KFSAV(1)=21 - KFSAV(2)=21 - PMSAV(1)=0.5D0*PMGLU - PMSAV(2)=0.5D0*PMGLU - ELSE - 185 CALL PYDCYK(K(IMIN,2),0,KFSAV(1),KFDUM) - CALL PYDCYK(K(IMAX,2),0,KFSAV(2),KFDUM) - IF(IABS(KFSAV(1)).GT.10.AND.IABS(KFSAV(2)).GT.10) GOTO 185 - IF(IABS(KFSAV(1)).GT.10.AND.IABS(K(IGL-1,2)).GT.10) GOTO 185 - IF(IABS(KFSAV(2)).GT.10.AND.IABS(K(IGL+2,2)).GT.10) GOTO 185 - KFSAV(1)=ISIGN(MOD(IABS(KFSAV(1)),10000),KFSAV(1)) - KFSAV(2)=ISIGN(MOD(IABS(KFSAV(2)),10000),KFSAV(2)) - MSTJ(93)=1 - PMSAV(1)=PYMASS(KFSAV(1)) - MSTJ(93)=1 - PMSAV(2)=PYMASS(KFSAV(2)) - ENDIF - -C... Mass of gluino-hadron. - PMGSAV=P(IGL,5) -c PMGB=P(IGL,5)+PMSAV(1)+PMSAV(2) - if(IABS(KFSAV(1)).lt.10.and.IABS(KFSAV(2)).lt.10) then - if(IABS(KFSAV(1)).ne.3.and.IABS(KFSAV(2)).ne.3) then - PMGB=P(IGL,5)+0.33 - else - PMGB=P(IGL,5)+0.46 - endif - else - PMGB=P(IGL,5)+PMSAV(1)+PMSAV(2) - endif - -C... Pick at random order in which both sides of gluino string break. - ISIDE=INT(1.5D0+PYR(0)) - DO 220 ISDE=1,2 - IF(ISDE.EQ.1) IS=ISIDE - IF(ISDE.EQ.2) IS=3-ISIDE - -C...Pick momentum sharing according to fragmentation function as if bottom. - M11SAV=MSTJ(11) - PMBSAV=PARF(105) - MSTJ(11)=4 - PARF(105)=PMGSAV - CALL PYZDIS(5,0,PMGB**2,ZGL) - MSTJ(11)=M11SAV - PARF(105)=PMBSAV - ZGL=MAX(0.9D0,MIN(0.9999D0,ZGL)) - DO 190 J=1,5 - PSAV(IS,J)=(1D0-ZGL)*P(IGL,J) - P(IGL,J)=ZGL*P(IGL,J) - 190 CONTINUE - -C... Target gluino-hadron mass for this stage of momentum reshuffling. - PMOLD=P(IGL,5) - IF(ISDE.EQ.1) PMNEW=PMGSAV+PMSAV(IS) - IF(ISDE.EQ.2) PMNEW=PMGB - -C... Recoiling parton from which to shuffle momentum. System momentum. - IF(IS.EQ.1) IREC=IGL-1 - IF(IS.EQ.2) IREC=IGL+2 - 200 DO 210 J=1,4 - PSUM(J)=P(IGL,J)+P(IREC,J) - 210 CONTINUE - -C... Boost to rest frame of system, and align gluino along +z axis. - CALL PYROBO(IGL,IGL,0D0,0D0,-(PSUM(1)/PSUM(4)), - & -(PSUM(2)/PSUM(4)),-(PSUM(3)/PSUM(4))) - CALL PYROBO(IREC,IREC,0D0,0D0,-(PSUM(1)/PSUM(4)), - & -(PSUM(2)/PSUM(4)),-(PSUM(3)/PSUM(4))) - PHI=PYANGL(P(IGL,1),P(IGL,2)) - CALL PYROBO(IGL,IGL,0D0,-PHI,0D0,0D0,0D0) - CALL PYROBO(IREC,IREC,0D0,-PHI,0D0,0D0,0D0) - THETA=PYANGL(P(IGL,3),P(IGL,1)) - CALL PYROBO(IGL,IGL,-THETA,0D0,0D0,0D0,0D0) - CALL PYROBO(IREC,IREC,-THETA,0D0,0D0,0D0,0D0) - -C... Calculate new kinematics in this frame, for desired gluino mass. - ETOT=P(IGL,4)+P(IREC,4) - IF(ETOT.GT.PMNEW+P(IREC,5)) THEN - IFAIL=0 - PZNEW=0.5D0 - & *SQRT(MAX(0D0,(ETOT**2-PMNEW**2-P(IREC,5)**2)**2- - & 4D0*PMNEW**2*P(IREC,5)**2))/ETOT - P(IGL,3)=PZNEW - P(IGL,4)=SQRT(PZNEW**2+PMNEW**2) - P(IGL,5)=PMNEW - P(IREC,3)=-PZNEW - P(IREC,4)=SQRT(PZNEW**2+P(IREC,5)**2) - -C... If not enough momentum, take what can be taken. - ELSE - IFAIL=1 - PMOLD=ETOT-P(IREC,5) - P(IGL,3)=0D0 - P(IGL,4)=PMOLD - P(IGL,5)=PMOLD - P(IREC,3)=0D0 - P(IREC,4)=P(IREC,5) - ENDIF - -C... Bost back to lab frame. - CALL PYROBO(IGL,IGL,THETA,PHI,PSUM(1)/PSUM(4), - & PSUM(2)/PSUM(4),PSUM(3)/PSUM(4)) - CALL PYROBO(IREC,IREC,THETA,PHI,PSUM(1)/PSUM(4), - & PSUM(2)/PSUM(4),PSUM(3)/PSUM(4)) - -C... Loop back when not enough momentum could be shuffled. -C... (As long as there is something left on either side.) - IF(IFAIL.EQ.1) THEN - 215 IF(IS.EQ.1.AND.IREC.GT.IMIN) THEN - IREC=IREC-1 - GOTO 200 - ELSEIF(IS.EQ.2.AND.IREC.LT.IMAX) THEN - IREC=IREC+1 - GOTO 200 - ELSEIF(ISDE.EQ.2.AND.IS.EQ.3-ISIDE) THEN - IS=ISIDE - IREC=IRECSV - GOTO 215 - ENDIF - ENDIF - -C... End loop over fragmentation of two sides around gluino. - IRECSV=IREC - 220 CONTINUE - -C... New slot at end of record for gluino R-hadron. - DO 230 J=1,5 - K(N+1,J)=0 - P(N+1,J)=P(IGL,J) - V(N+1,J)=V(IGL,J) - 230 CONTINUE - -C... Status and code of this slot. - K(N+1,1)=15+IGLUI - KFSVMX=MAX(IABS(KFSAV(1)),IABS(KFSAV(2))) - KFSVMN=MIN(IABS(KFSAV(1)),IABS(KFSAV(2))) -C... Gluino-ball. - IF(KFSVMX.EQ.21) THEN - K(N+1,2)=KSUSY1+991 -C... Gluino-meson. - ELSEIF(KFSVMX.LT.10) THEN - IF(KFSVMX.eq.KFSVMN.and.KFSVMX.gt.1) then - KFSVMN=1 - KFSVMX=1 - endif - K(N+1,2)=KSUSY1+9000+100*KFSVMX+10*KFSVMN+1 - IF(KFSVMX.EQ.KFSVMN) THEN - ELSEIF(MOD(KFSVMX,2).EQ.0) THEN - IF(KFSVMX.EQ.KFSAV(1).OR.KFSVMX.EQ.KFSAV(2)) - & K(N+1,2)=-K(N+1,2) - ELSE - IF(KFSVMX.EQ.-KFSAV(1).OR.KFSVMX.EQ.-KFSAV(2)) - & K(N+1,2)=-K(N+1,2) - ENDIF -C... Gluino-baryon. - ELSE - KFSVX1=KFSVMX/1000 - KFSVX2=MOD(KFSVMX/100,10) - KFA=MAX(KFSVX1,KFSVX2,KFSVMN) - KFC=MIN(KFSVX1,KFSVX2,KFSVMN) - KFSPIN=(MOD(KFSVMX,10)-1)/2 - KFB=KFSVX1+KFSVX2+KFSVMN-KFA-KFC - 235 continue - K(N+1,2)=SIGN(KSUSY1+90000+1000*KFA+100*KFB+10*KFC+2*KFSPIN - & +2, -KFSAV(1)) - if(KFA.eq.KFC.and.KFA.eq.KFB) goto 90 - if(CHRHAD.eq.' '.and.KFA.eq.3) then - KFA=1 - 238 if(KFC.gt.KFA.or.KFB.gt.KFA.or.KFC.gt.KFB) then - if(KFB.gt.KFA) then - KFTMP=KFA - KFA=KFB - KFB=KFTMP - endif - if(KFC.gt.KFB) then - KFTMP=KFB - KFB=KFC - KFC=KFTMP - endif - goto 238 - endif - goto 235 - endif - CALL PYNAME(K(N+1,2),CHRHAD) - if(CHRHAD(1:1).ne.'~') goto 90 - ENDIF - CALL PYNAME(K(N+1,2),CHRHAD) - if(CHRHAD(1:1).ne.'~') goto 90 - print*, 'R-hadron KF = ',K(N+1,2),' and name ',CHRHAD - P(N+1,5)=PYMASS(K(N+1,2)) - P(N+1,4)=SQRT( - & P(N+1,1)**2+P(N+1,2)**2+P(N+1,3)**2+P(N+1,5)**2 - & ) - - - K(N+1,3)=K(IGL,3) - N=N+1 - -C... Code and momentum of two new string endpoints. - K(IGL,2)=KFSAV(1) - K(IGL+1,2)=KFSAV(2) - IF(KFSAV(1).NE.21) K(IGL,1)=1 - DO 240 J=1,5 - P(IGL,J)=PSAV(1,J) - P(IGL+1,J)=PSAV(2,J) - 240 CONTINUE - -C... End of loop over two gluinos. - 300 CONTINUE - -C... Cleanup: remove zero-energy gluons. - NNOW=N - N=NOLD - DO 330 I=NOLD+1,NNOW - IF(K(I,2).EQ.21.AND.P(I,4).LT.1D-10) THEN - ELSEIF(I.EQ.N+1) THEN - N=N+1 - ELSE - N=N+1 - DO 320 J=1,5 - K(N,J)=K(I,J) - P(N,J)=P(I,J) - V(N,J)=V(I,J) - 320 CONTINUE - ENDIF - 330 CONTINUE - -C... Finish off with standard hadronization. -C... Note that the R-hadrons are not affected here, since they -C... (deliberately erroneously) have been bookkept as decayed. - IF(IERR.GT.0) THEN - WRITE(*,*) '...skipping pyexec for this event!' - ELSE -c call pylist(2) - CALL PYEXEC - ENDIF - -C... Restore code of gluino-hadrons to non-fragmented numbers. - N6=0 - N7=0 - DO 340 I=1,N - IF(K(I,1).EQ.16.OR.K(I,1).EQ.17) K(I,1)=K(I,1)-10 -C... First R-hadron - IF(K(I,1).EQ.6) then - ihad1=i -c WRITE(*,*) 'R-hadron 1 chg:',PYCHGE(K(I,2))/3D0,K(I,2) - N6=N6+1 - ENDIF -C... Second R-hadron - IF(K(I,1).EQ.7) then - N7=N7+1 - ihad2=i -c WRITE(*,*) 'R-hadron 2 chg:',PYCHGE(K(I,2))/3D0,K(I,2) - ENDIF - - 340 CONTINUE - IF(N6.GT.1.OR.N7.GT.1) MSTU(24)=1 - -C... Extracheck charge. - - chgnew=pyp(0,6) - - IF(ABS(CHGNEW-CHGSAV).GT.0.1D0) MSTU(24)=1 -c WRITE(*,*) 'CHGNEW CHGSAV',CHGNEW,CHGSAV - -C... In case of trouble, make up to five attempts. - IF(MSTU(24).NE.0.AND.LOOP.LT.5) THEN - WRITE(*,*) '...give it new try...' - MSTU(23)=MSTU(23)-1 - GOTO 90 - ELSEIF(MSTU(24).NE.0) THEN - WRITE(*,*) '...but still fail after repeated attempts!' -C*** Set error flag. - IERR=2 - ELSEIF(MSTU(24).EQ.0.AND.LOOP.GT.1) THEN - WRITE(*,*) '...and now it worked!' - ENDIF - -c.... ACH - check for more errors from pyexec - IF(MSTU(24).GT.0) THEN - IERR=MSTU(24) - WRITE(*,*) 'ACH123 IERR being set to ', IERR - ENDIF - -C... Finished. Restore baryon production model. - MSTJ(12)=MSTJ12 -c call pylist(2) - RETURN - END diff --git a/Generators/PythiaRhad_i/src/PythiaRhadModified/pysthad.F b/Generators/PythiaRhad_i/src/PythiaRhadModified/pysthad.F deleted file mode 100644 index 2219e2fdeef8b7d7ddc40d268aed68ec5ff1ddeb..0000000000000000000000000000000000000000 --- a/Generators/PythiaRhad_i/src/PythiaRhadModified/pysthad.F +++ /dev/null @@ -1,1294 +0,0 @@ -C********************************************************************* - -C...PYSTFR -C...Fragments the string near to a stop, to form a stop-hadron, -C...by producing a new q-qbar pair. - - SUBROUTINE PYSTFR(IERR) - -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) -C INTEGER PYK,PYCHGE,PYCOMP - INTEGER PYCOMP -C...Parameter statement to help give large particle numbers -C...(left- and righthanded SUSY, excited fermions). - PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KEXCIT=4000000) -C...Commonblocks. - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) -C...Note that dimensions below grew from 4000 to 8000 in Pythia 6.2! - COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5) - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) - COMMON/PYINT1/MINT(400),VINT(400) - COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2) - SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYPARS/,/PYINT1/, - &/PYINT2/ -C...Local array. -C DIMENSION PSUM(5),PSAV(5),IJOIN(2),IPOSST(10) - DIMENSION PSUM(5),PSAV(5),IPOSST(10) - -c print*, "PYSTFR called" - -C...Default is no error. - IERR=0 - -C...Free parameter: max kinetic energy in gluino-hadron. - PMKIN=0.5D0 - -C...Free parameter: part of stop mass that does not participate -C...in weak decay. - PMINAC=0.5D0 - -C...Switch off popcorn baryon production. (Not imperative, but more -C...failed events when popcorn is allowed.) - MSTJ12=MSTJ(12) - MSTJ(12)=1 - -C...Convenient shorthand. - KFST=KSUSY1+6 - KCST=PYCOMP(KFST) - KFGL=KSUSY1+21 - -C...Loopback point for serious problems, with new try. - LOOP=0 - CALL PYEDIT(21) - CHGSAV=PYP(0,6) - 90 LOOP=LOOP+1 - IF(LOOP.GT.1) CALL PYEDIT(22) - -C...Give up when too much problems. - IF(LOOP.GT.5) THEN - WRITE(*,*) ' Problematical event skipped' - IERR=1 - RETURN - ENDIF - -C...Take copy of string system(s). - NOLD=N - NSTOP=0 - DO 120 I=1,NOLD - ICOPY=0 - IF(K(I,1).EQ.2) ICOPY=1 - IF(K(I,1).EQ.1.AND.I.GE.2) THEN - IF(K(I-1,1).EQ.12) ICOPY=1 - ENDIF - IF(ICOPY.EQ.1) THEN - N=N+1 - DO 100 J=1,5 - K(N,J)=K(I,J) - P(N,J)=P(I,J) - V(N,J)=V(I,J) - 100 CONTINUE - K(I,1)=K(I,1)+10 - K(I,4)=N - K(I,5)=N - K(N,3)=I - IF(IABS(K(I,2)).EQ.KFST) THEN - NSTOP=NSTOP+1 - IPOSST(NSTOP)=N - ENDIF - ENDIF - 120 CONTINUE - NTMP=N - -C...Loop over (up to) two stops per event. -C...Identify position of stop (randomize order of treatment). - IRNST=INT(1.5D0+PYR(0)) - DO 300 ISTOP=1,NSTOP - IST=IPOSST(1) - IF(NSTOP.EQ.2.AND.ISTOP.NE.IRNST) IST=IPOSST(2) - -C...Identify range of partons on string the stop belongs to. - IMIN=IST+1 - 140 IMIN=IMIN-1 - IF(K(IMIN-1,1).EQ.2) GOTO 140 - IMAX=IST-1 - 150 IMAX=IMAX+1 - IF(K(IMAX,1).EQ.2) GOTO 150 - IOTHER=IMAX - IF(IST.EQ.IMAX) IOTHER=IMIN - -C...Find mass of this stop-string. - DO 170 J=1,5 - PSUM(J)=0D0 - DO 160 I=IMIN,IMAX - PSUM(J)=PSUM(J)+P(I,J) - 160 CONTINUE - 170 CONTINUE - PSUM(5)=SQRT(MAX(0D0,PSUM(4)**2-PSUM(1)**2-PSUM(2)**2- - & PSUM(3)**2)) - -C... If low-mass, then consider stop-hadron already formed. - IF(PSUM(5).LE.P(IST,5)+P(IOTHER,5)+PMKIN) THEN - -C... New slot at end of record for stop-hadron - N=N+1 - DO 175 J=1,5 - K(N,J)=0 - P(N,J)=PSUM(J) - V(N,J)=V(IST,J) - 175 CONTINUE - K(N,1)=5+ISTOP - K(N,3)=IST - -C... Particle code for stop-hadron in low-mass system. - KFSTHD=0 - KFSAV=K(IOTHER,2) - IF(K(IST,2).GT.0) THEN - IF(KFSAV.LE.-1.AND.KFSAV.GE.-5) - & KFSTHD=KSUSY1+600-10*KFSAV+2 - IF(KFSAV.GE.1103.AND.KFSAV.LE.3303) KFSTHD=KSUSY1+6000+ - & (KFSAV/10)+MOD(KFSAV,10) - ELSE - IF(KFSAV.GE.1.AND.KFSAV.LE.5) KFSTHD=KSUSY1+600+10*KFSAV+2 - IF(KFSAV.LE.-1103.AND.KFSAV.GE.-3303) KFSTHD=KSUSY1+6000+ - & (IABS(KFSAV)/10)+MOD(IABS(KFSAV),10) - KFSTHD=-KFSTHD - ENDIF - IF(KFSTHD.EQ.0) THEN - WRITE(*,*) ' Failed to find R-hadron code from ', - & K(IST,2),KFSAV - IERR=1 - RETURN - ENDIF - K(N,2)=KFSTHD - -C... Mark original partons decayed. Done for low-mass system. - DO 180 I=IMIN,IMAX - K(I,1)=K(I,1)+10 - K(I,4)=N - K(I,5)=N - 180 CONTINUE - GOTO 300 - ENDIF - - - -C...Else break string by production of new qqbar pair. -C...(Also diquarks allowed, but not popcorn.) - INFLAV=ISIGN(4,K(IST,2)) - CALL PYDCYK(INFLAV,0,KFSAV,KFDUM) - KFSAV=ISIGN(MOD(IABS(KFSAV),10000),KFSAV) - MSTJ(93)=1 - PMSAV=PYMASS(KFSAV) - -C...Mass of stop-hadron. - PMSSAV=P(IST,5) - PMSHAD=P(IST,5)+PMSAV - -C...Pick momentum sharing according to fragmentation function as if bottom. - PMBSAV=PARF(105) - PARF(105)=PMSSAV - CALL PYZDIS(5,0,PMSHAD**2,ZST) - PARF(105)=PMBSAV - ZST=MAX(0.9D0,MIN(0.9999D0,ZST)) - DO 190 J=1,5 - PSAV(J)=(1D0-ZST)*P(IST,J) - P(IST,J)=ZST*P(IST,J) - 190 CONTINUE - -C...Recoiling parton from which to shuffle momentum. System momentum. - IF(IST.EQ.IMIN) IREC=IST+1 - IF(IST.EQ.IMAX) IREC=IST-1 - 200 DO 210 J=1,4 - PSUM(J)=P(IST,J)+P(IREC,J) - 210 CONTINUE - -C...Boost to rest frame of system, and align stop along +z axis. - CALL PYROBO(IST,IST,0D0,0D0,-(PSUM(1)/PSUM(4)), - & -(PSUM(2)/PSUM(4)),-(PSUM(3)/PSUM(4))) - CALL PYROBO(IREC,IREC,0D0,0D0,-(PSUM(1)/PSUM(4)), - & -(PSUM(2)/PSUM(4)),-(PSUM(3)/PSUM(4))) - PHI=PYANGL(P(IST,1),P(IST,2)) - CALL PYROBO(IST,IST,0D0,-PHI,0D0,0D0,0D0) - CALL PYROBO(IREC,IREC,0D0,-PHI,0D0,0D0,0D0) - THETA=PYANGL(P(IST,3),P(IST,1)) - CALL PYROBO(IST,IST,-THETA,0D0,0D0,0D0,0D0) - CALL PYROBO(IREC,IREC,-THETA,0D0,0D0,0D0,0D0) - -C...Calculate new kinematics in this frame, for desired stop hadron mass. - ETOT=P(IST,4)+P(IREC,4) - PMREC=P(IREC,5) - IF(K(IREC,2).NE.21.AND.IABS(K(IREC,2)).NE.KFST) THEN - MSTJ(93)=1 - PMREC=PYMASS(K(IREC,2)) - ENDIF - IF(ETOT.GT.PMSHAD+PMREC) THEN - IFAIL=0 - PZNEW=0.5D0*SQRT(MAX(0D0,(ETOT**2-PMSHAD**2-PMREC**2)**2- - & 4D0*PMSHAD**2*PMREC**2))/ETOT - P(IST,3)=PZNEW - P(IST,4)=SQRT(PZNEW**2+PMSHAD**2) - P(IST,5)=PMSHAD - P(IREC,3)=-PZNEW - P(IREC,4)=SQRT(PZNEW**2+PMREC**2) - P(IREC,5)=PMREC - -C...If not enough momentum, take what can be taken. - ELSE - IFAIL=1 - P(IST,3)=0D0 - P(IST,4)=ETOT-PMREC - P(IST,5)=P(IST,4) - P(IREC,3)=0D0 - P(IREC,4)=PMREC - P(IREC,5)=PMREC - ENDIF - -C...Bost back to lab frame. - CALL PYROBO(IST,IST,THETA,PHI,PSUM(1)/PSUM(4), - & PSUM(2)/PSUM(4),PSUM(3)/PSUM(4)) - CALL PYROBO(IREC,IREC,THETA,PHI,PSUM(1)/PSUM(4), - & PSUM(2)/PSUM(4),PSUM(3)/PSUM(4)) - -C...Loop back when not enough momentum could be shuffled. -C...(As long as there is something left.) - IF(IFAIL.EQ.1) THEN - IF(IST.EQ.IMIN.AND.IREC.LT.IMAX) THEN - IREC=IREC+1 - GOTO 200 - ELSEIF(IST.EQ.IMAX.AND.IREC.GT.IMIN) THEN - IREC=IREC-1 - GOTO 200 - ENDIF - ENDIF - -C...Particle code for stop-hadron. - KFSTHD=0 - IF(K(IST,2).GT.0) THEN - IF(KFSAV.LE.-1.AND.KFSAV.GE.-5) KFSTHD=KSUSY1+600-10*KFSAV+2 - IF(KFSAV.GE.1103.AND.KFSAV.LE.3303) KFSTHD=KSUSY1+6000+ - & (KFSAV/10)+MOD(KFSAV,10) - ELSE - IF(KFSAV.GE.1.AND.KFSAV.LE.5) KFSTHD=KSUSY1+600+10*KFSAV+2 - IF(KFSAV.LE.-1103.AND.KFSAV.GE.-3303) KFSTHD=KSUSY1+6000+ - & (IABS(KFSAV)/10)+MOD(IABS(KFSAV),10) - KFSTHD=-KFSTHD - ENDIF - IF(KFSTHD.EQ.0) THEN - WRITE(*,*) ' Failed to find R-hadron code from ', - & K(IST,2),KFSAV - IERR=1 - RETURN - ENDIF - -C...New slot at end of record for stop-hadron - DO 230 J=1,5 - K(N+1,J)=0 - P(N+1,J)=P(IST,J) - V(N+1,J)=V(IST,J) - 230 CONTINUE - K(N+1,1)=5+ISTOP - K(N+1,2)=KFSTHD - K(N+1,3)=K(IST,3) - N=N+1 - -C...Code and momentum of new string endpoint. - K(IST,2)=-KFSAV - DO 240 J=1,5 - P(IST,J)=PSAV(J) - 240 CONTINUE - -C...End of loop over two stops. - 300 CONTINUE - -C...Cleanup: remove zero-energy gluons. - NNOW=N - N=NOLD - DO 330 I=NOLD+1,NNOW - IF(K(I,2).EQ.21.AND.P(I,4).LT.1D-10) THEN - ELSEIF(I.EQ.N+1) THEN - N=N+1 - ELSE - N=N+1 - DO 320 J=1,5 - K(N,J)=K(I,J) - P(N,J)=P(I,J) - V(N,J)=V(I,J) - 320 CONTINUE - ENDIF - 330 CONTINUE - NNOW=N - -C...Check that no low-mass system of diquark-antidiquark kind, -C...or very low-mass of any kind. - KFBEG=0 - DO 332 J=1,5 - PSUM(J)=0D0 - 332 CONTINUE - DO 338 I=NOLD+1,NNOW - DO 334 J=1,4 - PSUM(J)=PSUM(J)+P(I,J) - 334 CONTINUE - IF(KFBEG.EQ.0) THEN - KFBEG=IABS(K(I,2)) - MSTJ(93)=1 - PSUM(5)=PSUM(5)+PYMASS(K(I,2)) - ELSEIF(K(I,1).EQ.1) THEN - KFEND=IABS(K(I,2)) - MSTJ(93)=1 - PSUM(5)=PSUM(5)+PYMASS(K(I,2)) - DELTA=SQRT(MAX(0D0,PSUM(4)**2-PSUM(1)**2-PSUM(2)**2- - & PSUM(3)**2))-PSUM(5) - IF(KFBEG.GT.10.AND.KFBEG.LT.10000.AND.KFEND.GT.10.AND. - & KFEND.LT.10000.AND.DELTA.LT.PARJ(32).AND.(KFBEG.NE.21 - & .AND.KFEND.NE.21)) GOTO 90 - IF(DELTA.LT.0D0) GOTO 90 - KFBEG=0 - DO 336 J=1,5 - PSUM(J)=0D0 - 336 CONTINUE - ENDIF - 338 CONTINUE - -C...Finished with stop hadronization. Restore baryon production model. - MSTJ(12)=MSTJ12 - -C...Now hadronize everything else. Some cheating to allow sensible -C...momentum shuffling. - MSTJ16=MSTJ(16) - MSTJ(16)=0 - CALL PYEXEC - MSTJ(16)=MSTJ16 - IF(MSTU(24).NE.0) THEN - WRITE(*,*) ' Event to be skipped' - IERR=1 - ENDIF -c call pylist(2) - RETURN - END - -C********************************************************************* - -C...PYSTFRRE -C...Fragments the string near to a stop, to form a stop-hadron, -C...by producing a new q-qbar pair. -C...Regge scheme applied - SUBROUTINE PYSTFRRE(IERR) - -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) -C INTEGER PYK,PYCHGE,PYCOMP - INTEGER PYCOMP -C...Parameter statement to help give large particle numbers -C...(left- and righthanded SUSY, excited fermions). - PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KEXCIT=4000000) -C...Commonblocks. - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) -C...Note that dimensions below grew from 4000 to 8000 in Pythia 6.2! - COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5) - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) - COMMON/PYINT1/MINT(400),VINT(400) - COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2) - SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYPARS/,/PYINT1/, - &/PYINT2/ -C...Local array. -C DIMENSION PSUM(5),PSAV(5),IJOIN(2),IPOSST(10) - DIMENSION PSUM(5),PSAV(5),IPOSST(10) - -c print*, "PYSTFRRE called" - -C...Default is no error. - IERR=0 - -C...Free parameter: max kinetic energy in gluino-hadron. - PMKIN=0.5D0 - -C...Free parameter: part of stop mass that does not participate -C...in weak decay. - PMINAC=0.5D0 - -C...Switch off popcorn baryon production. (Not imperative, but more -C...failed events when popcorn is allowed.) - MSTJ12=MSTJ(12) - MSTJ(12)=1 - -C...Convenient shorthand. - KFST=KSUSY1+6 - KCST=PYCOMP(KFST) - KFGL=KSUSY1+21 - -C...Loopback point for serious problems, with new try. - LOOP=0 - CALL PYEDIT(21) - CHGSAV=PYP(0,6) - 90 LOOP=LOOP+1 - IF(LOOP.GT.1) CALL PYEDIT(22) - -C...Give up when too much problems. - IF(LOOP.GT.5) THEN - WRITE(*,*) ' Problematical event skipped' - IERR=1 - RETURN - ENDIF - -C...Take copy of string system(s). - NOLD=N - NSTOP=0 - DO 120 I=1,NOLD - ICOPY=0 - IF(K(I,1).EQ.2) ICOPY=1 - IF(K(I,1).EQ.1.AND.I.GE.2) THEN - IF(K(I-1,1).EQ.12) ICOPY=1 - ENDIF - IF(ICOPY.EQ.1) THEN - N=N+1 - DO 100 J=1,5 - K(N,J)=K(I,J) - P(N,J)=P(I,J) - V(N,J)=V(I,J) - 100 CONTINUE - K(I,1)=K(I,1)+10 - K(I,4)=N - K(I,5)=N - K(N,3)=I - IF(IABS(K(I,2)).EQ.KFST) THEN - NSTOP=NSTOP+1 - IPOSST(NSTOP)=N - ENDIF - ENDIF - 120 CONTINUE - NTMP=N - -C...Loop over (up to) two stops per event. -C...Identify position of stop (randomize order of treatment). - IRNST=INT(1.5D0+PYR(0)) - DO 300 ISTOP=1,NSTOP - IST=IPOSST(1) - IF(NSTOP.EQ.2.AND.ISTOP.NE.IRNST) IST=IPOSST(2) - -C...Identify range of partons on string the stop belongs to. - IMIN=IST+1 - 140 IMIN=IMIN-1 - IF(K(IMIN-1,1).EQ.2) GOTO 140 - IMAX=IST-1 - 150 IMAX=IMAX+1 - IF(K(IMAX,1).EQ.2) GOTO 150 - IOTHER=IMAX - IF(IST.EQ.IMAX) IOTHER=IMIN - -C...Find mass of this stop-string. - DO 170 J=1,5 - PSUM(J)=0D0 - DO 160 I=IMIN,IMAX - PSUM(J)=PSUM(J)+P(I,J) - 160 CONTINUE - 170 CONTINUE - PSUM(5)=SQRT(MAX(0D0,PSUM(4)**2-PSUM(1)**2-PSUM(2)**2- - & PSUM(3)**2)) - -C... If low-mass, then consider stop-hadron already formed. - IF(PSUM(5).LE.P(IST,5)+P(IOTHER,5)+PMKIN) THEN - -C... New slot at end of record for stop-hadron - N=N+1 - DO 175 J=1,5 - K(N,J)=0 - P(N,J)=PSUM(J) - V(N,J)=V(IST,J) - 175 CONTINUE - K(N,1)=5+ISTOP - K(N,3)=IST - -C... Particle code for stop-hadron in low-mass system. - KFSTHD=0 - KFSAV=K(IOTHER,2) - if(KFSAV.eq.3.or.KFSAV.eq.5) then - KFSAV=1 - endif - if(KFSAV.eq.4) then - KFSAV=2 - endif - if(KFSAV.eq.-3.or.KFSAV.eq.-5) then - KFSAV=-1 - endif - if(KFSAV.eq.-4) then - KFSAV=-2 - endif - IF(K(IST,2).GT.0) THEN - IF(KFSAV.LE.-1.AND.KFSAV.GE.-5) - & KFSTHD=KSUSY1+600-10*KFSAV+2 - IF(KFSAV.GE.1103.AND.KFSAV.LE.3303) KFSTHD=KSUSY1+6000+ - & (KFSAV/10)+MOD(KFSAV,10) - ELSE - IF(KFSAV.GE.1.AND.KFSAV.LE.5) KFSTHD=KSUSY1+600+10*KFSAV+2 - IF(KFSAV.LE.-1103.AND.KFSAV.GE.-3303) KFSTHD=KSUSY1+6000+ - & (IABS(KFSAV)/10)+MOD(IABS(KFSAV),10) - KFSTHD=-KFSTHD - ENDIF - IF(KFSTHD.EQ.0) THEN - WRITE(*,*) ' Failed to find R-hadron code from ', - & K(IST,2),KFSAV - IERR=1 - RETURN - ENDIF - K(N,2)=KFSTHD - -C... Mark original partons decayed. Done for low-mass system. - DO 180 I=IMIN,IMAX - K(I,1)=K(I,1)+10 - K(I,4)=N - K(I,5)=N - 180 CONTINUE - GOTO 300 - ENDIF - -C...Else break string by production of new qqbar pair. -C...(Also diquarks allowed, but not popcorn.) - INFLAV=ISIGN(4,K(IST,2)) - CALL PYDCYK(INFLAV,0,KFSAV,KFDUM) - KFSAV=ISIGN(MOD(IABS(KFSAV),10000),KFSAV) - - if(KFSAV.eq.3.or.KFSAV.eq.5) then - KFSAV=1 - endif - if(KFSAV.eq.4) then - KFSAV=2 - endif - if(KFSAV.eq.-3.or.KFSAV.eq.-5) then - KFSAV=-1 - endif - if(KFSAV.eq.-4) then - KFSAV=-2 - endif - - MSTJ(93)=1 - PMSAV=PYMASS(KFSAV) - -C...Mass of stop-hadron. - PMSSAV=P(IST,5) - PMSHAD=P(IST,5)+PMSAV - -C...Pick momentum sharing according to fragmentation function as if bottom. - PMBSAV=PARF(105) - PARF(105)=PMSSAV - CALL PYZDIS(5,0,PMSHAD**2,ZST) - PARF(105)=PMBSAV - ZST=MAX(0.9D0,MIN(0.9999D0,ZST)) - DO 190 J=1,5 - PSAV(J)=(1D0-ZST)*P(IST,J) - P(IST,J)=ZST*P(IST,J) - 190 CONTINUE - -C...Recoiling parton from which to shuffle momentum. System momentum. - IF(IST.EQ.IMIN) IREC=IST+1 - IF(IST.EQ.IMAX) IREC=IST-1 - 200 DO 210 J=1,4 - PSUM(J)=P(IST,J)+P(IREC,J) - 210 CONTINUE - -C...Boost to rest frame of system, and align stop along +z axis. - CALL PYROBO(IST,IST,0D0,0D0,-(PSUM(1)/PSUM(4)), - & -(PSUM(2)/PSUM(4)),-(PSUM(3)/PSUM(4))) - CALL PYROBO(IREC,IREC,0D0,0D0,-(PSUM(1)/PSUM(4)), - & -(PSUM(2)/PSUM(4)),-(PSUM(3)/PSUM(4))) - PHI=PYANGL(P(IST,1),P(IST,2)) - CALL PYROBO(IST,IST,0D0,-PHI,0D0,0D0,0D0) - CALL PYROBO(IREC,IREC,0D0,-PHI,0D0,0D0,0D0) - THETA=PYANGL(P(IST,3),P(IST,1)) - CALL PYROBO(IST,IST,-THETA,0D0,0D0,0D0,0D0) - CALL PYROBO(IREC,IREC,-THETA,0D0,0D0,0D0,0D0) - -C...Calculate new kinematics in this frame, for desired stop hadron mass. - ETOT=P(IST,4)+P(IREC,4) - PMREC=P(IREC,5) - IF(K(IREC,2).NE.21.AND.IABS(K(IREC,2)).NE.KFST) THEN - MSTJ(93)=1 - PMREC=PYMASS(K(IREC,2)) - ENDIF - IF(ETOT.GT.PMSHAD+PMREC) THEN - IFAIL=0 - PZNEW=0.5D0*SQRT(MAX(0D0,(ETOT**2-PMSHAD**2-PMREC**2)**2- - & 4D0*PMSHAD**2*PMREC**2))/ETOT - P(IST,3)=PZNEW - P(IST,4)=SQRT(PZNEW**2+PMSHAD**2) - P(IST,5)=PMSHAD - P(IREC,3)=-PZNEW - P(IREC,4)=SQRT(PZNEW**2+PMREC**2) - P(IREC,5)=PMREC - -C...If not enough momentum, take what can be taken. - ELSE - IFAIL=1 - P(IST,3)=0D0 - P(IST,4)=ETOT-PMREC - P(IST,5)=P(IST,4) - P(IREC,3)=0D0 - P(IREC,4)=PMREC - P(IREC,5)=PMREC - ENDIF - -C...Bost back to lab frame. - CALL PYROBO(IST,IST,THETA,PHI,PSUM(1)/PSUM(4), - & PSUM(2)/PSUM(4),PSUM(3)/PSUM(4)) - CALL PYROBO(IREC,IREC,THETA,PHI,PSUM(1)/PSUM(4), - & PSUM(2)/PSUM(4),PSUM(3)/PSUM(4)) - -C...Loop back when not enough momentum could be shuffled. -C...(As long as there is something left.) - IF(IFAIL.EQ.1) THEN - IF(IST.EQ.IMIN.AND.IREC.LT.IMAX) THEN - IREC=IREC+1 - GOTO 200 - ELSEIF(IST.EQ.IMAX.AND.IREC.GT.IMIN) THEN - IREC=IREC-1 - GOTO 200 - ENDIF - ENDIF - -C...Particle code for stop-hadron. - KFSTHD=0 - IF(K(IST,2).GT.0) THEN - IF(KFSAV.LE.-1.AND.KFSAV.GE.-5) KFSTHD=KSUSY1+600-10*KFSAV+2 - IF(KFSAV.GE.1103.AND.KFSAV.LE.3303) then - if (KFSAV/100.ne.21) goto 90 - KFSAV=2101 - KFSTHD=KSUSY1+6000+ - & (KFSAV/10)+MOD(KFSAV,10) - endif - ELSE - IF(KFSAV.GE.1.AND.KFSAV.LE.5) KFSTHD=KSUSY1+600+10*KFSAV+2 - IF(KFSAV.LE.-1103.AND.KFSAV.GE.-3303) then - if (-KFSAV/100.ne.21) goto 90 - KFSAV=-2101 - KFSTHD=KSUSY1+6000+ - & (IABS(KFSAV)/10)+MOD(IABS(KFSAV),10) - endif - KFSTHD=-KFSTHD - ENDIF - IF(KFSTHD.EQ.0) THEN - WRITE(*,*) ' Failed to find R-hadron code from ', - & K(IST,2),KFSAV - IERR=1 - RETURN - ENDIF - -C...New slot at end of record for stop-hadron - DO 230 J=1,5 - K(N+1,J)=0 - P(N+1,J)=P(IST,J) - V(N+1,J)=V(IST,J) - 230 CONTINUE - K(N+1,1)=5+ISTOP - K(N+1,2)=KFSTHD - K(N+1,3)=K(IST,3) - N=N+1 - -C...Code and momentum of new string endpoint. - K(IST,2)=-KFSAV - DO 240 J=1,5 - P(IST,J)=PSAV(J) - 240 CONTINUE - -C...End of loop over two stops. - 300 CONTINUE - -C...Cleanup: remove zero-energy gluons. - NNOW=N - N=NOLD - DO 330 I=NOLD+1,NNOW - IF(K(I,2).EQ.21.AND.P(I,4).LT.1D-10) THEN - ELSEIF(I.EQ.N+1) THEN - N=N+1 - ELSE - N=N+1 - DO 320 J=1,5 - K(N,J)=K(I,J) - P(N,J)=P(I,J) - V(N,J)=V(I,J) - 320 CONTINUE - ENDIF - 330 CONTINUE - NNOW=N - -C...Check that no low-mass system of diquark-antidiquark kind, -C...or very low-mass of any kind. - KFBEG=0 - DO 332 J=1,5 - PSUM(J)=0D0 - 332 CONTINUE - DO 338 I=NOLD+1,NNOW - DO 334 J=1,4 - PSUM(J)=PSUM(J)+P(I,J) - 334 CONTINUE - IF(KFBEG.EQ.0) THEN - KFBEG=IABS(K(I,2)) - MSTJ(93)=1 - PSUM(5)=PSUM(5)+PYMASS(K(I,2)) - ELSEIF(K(I,1).EQ.1) THEN - KFEND=IABS(K(I,2)) - MSTJ(93)=1 - PSUM(5)=PSUM(5)+PYMASS(K(I,2)) - DELTA=SQRT(MAX(0D0,PSUM(4)**2-PSUM(1)**2-PSUM(2)**2- - & PSUM(3)**2))-PSUM(5) - IF(KFBEG.GT.10.AND.KFBEG.LT.10000.AND.KFEND.GT.10.AND. - & KFEND.LT.10000.AND.DELTA.LT.PARJ(32).AND.(KFBEG.NE.21 - & .AND.KFEND.NE.21)) GOTO 90 - IF(DELTA.LT.0D0) GOTO 90 - KFBEG=0 - DO 336 J=1,5 - PSUM(J)=0D0 - 336 CONTINUE - ENDIF - 338 CONTINUE - -C...Finished with stop hadronization. Restore baryon production model. - MSTJ(12)=MSTJ12 - -C...Now hadronize everything else. Some cheating to allow sensible -C...momentum shuffling. - MSTJ16=MSTJ(16) - MSTJ(16)=0 - CALL PYEXEC - MSTJ(16)=MSTJ16 - IF(MSTU(24).NE.0) THEN - WRITE(*,*) ' Event to be skipped' - IERR=1 - ENDIF -c call pylist(2) - RETURN - END -C********************************************************************* - -C...PYSBFRRE -C...Fragments the string near to a sbottom, to form a sbottom-hadron, -C...by producing a new q-qbar pair. -C...Regge scheme applied - SUBROUTINE PYSBFRRE(IERR) - -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) -C INTEGER PYK,PYCHGE,PYCOMP - INTEGER PYCOMP -C...Parameter statement to help give large particle numbers -C...(left- and righthanded SUSY, excited fermions). - PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KEXCIT=4000000) -C...Commonblocks. - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) -C...Note that dimensions below grew from 4000 to 8000 in Pythia 6.2! - COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5) - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) - COMMON/PYINT1/MINT(400),VINT(400) - COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2) - SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYPARS/,/PYINT1/, - &/PYINT2/ -C...Local array. -C DIMENSION PSUM(5),PSAV(5),IJOIN(2),IPOSST(10) - DIMENSION PSUM(5),PSAV(5),IPOSST(10) - -c print*, "PYSBFR called" - -C...Default is no error. - IERR=0 - -C...Free parameter: max kinetic energy in gluino-hadron. - PMKIN=0.5D0 - -C...Free parameter: part of sbottom mass that does not participate -C...in weak decay. - PMINAC=0.5D0 - -C...Switch off popcorn baryon production. (Not imperative, but more -C...failed events when popcorn is allowed.) - MSTJ12=MSTJ(12) - MSTJ(12)=1 - -C...Convenient shorthand. - KFST=KSUSY1+5 - KCST=PYCOMP(KFST) - KFGL=KSUSY1+21 - -C...Loopback point for serious problems, with new try. - LOOP=0 - CALL PYEDIT(21) - CHGSAV=PYP(0,6) - 90 LOOP=LOOP+1 - IF(LOOP.GT.1) CALL PYEDIT(22) - -C...Give up when too much problems. - IF(LOOP.GT.5) THEN - WRITE(*,*) ' Problematical event skipped' - IERR=1 - RETURN - ENDIF - -C...Take copy of string system(s). - NOLD=N - NSTOP=0 - DO 120 I=1,NOLD - ICOPY=0 - IF(K(I,1).EQ.2) ICOPY=1 - IF(K(I,1).EQ.1.AND.I.GE.2) THEN - IF(K(I-1,1).EQ.12) ICOPY=1 - ENDIF - IF(ICOPY.EQ.1) THEN - N=N+1 - DO 100 J=1,5 - K(N,J)=K(I,J) - P(N,J)=P(I,J) - V(N,J)=V(I,J) - 100 CONTINUE - K(I,1)=K(I,1)+10 - K(I,4)=N - K(I,5)=N - K(N,3)=I - IF(IABS(K(I,2)).EQ.KFST) THEN - NSTOP=NSTOP+1 - IPOSST(NSTOP)=N - ENDIF - ENDIF - 120 CONTINUE - NTMP=N - -C...Loop over (up to) two sbottoms per event. -C...Identify position of sbottom (randomize order of treatment). - IRNST=INT(1.5D0+PYR(0)) - DO 300 ISTOP=1,NSTOP - IST=IPOSST(1) - IF(NSTOP.EQ.2.AND.ISTOP.NE.IRNST) IST=IPOSST(2) - -C...Identify range of partons on string the sbottom belongs to. - IMIN=IST+1 - 140 IMIN=IMIN-1 - IF(K(IMIN-1,1).EQ.2) GOTO 140 - IMAX=IST-1 - 150 IMAX=IMAX+1 - IF(K(IMAX,1).EQ.2) GOTO 150 - IOTHER=IMAX - IF(IST.EQ.IMAX) IOTHER=IMIN - -C...Find mass of this sbottom-string. - DO 170 J=1,5 - PSUM(J)=0D0 - DO 160 I=IMIN,IMAX - PSUM(J)=PSUM(J)+P(I,J) - 160 CONTINUE - 170 CONTINUE - PSUM(5)=SQRT(MAX(0D0,PSUM(4)**2-PSUM(1)**2-PSUM(2)**2- - & PSUM(3)**2)) - -C... If low-mass, then consider sbottom-hadron already formed. - IF(PSUM(5).LE.P(IST,5)+P(IOTHER,5)+PMKIN) THEN - -C... New slot at end of record for sbottom-hadron - N=N+1 - DO 175 J=1,5 - K(N,J)=0 - P(N,J)=PSUM(J) - V(N,J)=V(IST,J) - 175 CONTINUE - K(N,1)=5+ISTOP - K(N,3)=IST - -C... Particle code for sbottom-hadron in low-mass system. - KFSTHD=0 - KFSAV=K(IOTHER,2) - if(KFSAV.eq.3.or.KFSAV.eq.5) then - KFSAV=1 - endif - if(KFSAV.eq.4) then - KFSAV=2 - endif - if(KFSAV.eq.-3.or.KFSAV.eq.-5) then - KFSAV=-1 - endif - if(KFSAV.eq.-4) then - KFSAV=-2 - endif - IF(K(IST,2).GT.0) THEN - IF(KFSAV.LE.-1.AND.KFSAV.GE.-5) - & KFSTHD=KSUSY1+500-10*KFSAV+2 - IF(KFSAV.GE.1103.AND.KFSAV.LE.3303) KFSTHD=KSUSY1+5000+ - & (KFSAV/10)+MOD(KFSAV,10) - ELSE - IF(KFSAV.GE.1.AND.KFSAV.LE.5) KFSTHD=KSUSY1+500+10*KFSAV+2 - IF(KFSAV.LE.-1103.AND.KFSAV.GE.-3303) KFSTHD=KSUSY1+5000+ - & (IABS(KFSAV)/10)+MOD(IABS(KFSAV),10) - KFSTHD=-KFSTHD - ENDIF - IF(KFSTHD.EQ.0) THEN - WRITE(*,*) ' Failed to find R-hadron code from ', - & K(IST,2),KFSAV - IERR=1 - RETURN - ENDIF - K(N,2)=KFSTHD - -C... Mark original partons decayed. Done for low-mass system. - DO 180 I=IMIN,IMAX - K(I,1)=K(I,1)+10 - K(I,4)=N - K(I,5)=N - 180 CONTINUE - GOTO 300 - ENDIF - - - -C...Else break string by production of new qqbar pair. -C...(Also diquarks allowed, but not popcorn.) - INFLAV=ISIGN(4,K(IST,2)) - CALL PYDCYK(INFLAV,0,KFSAV,KFDUM) - KFSAV=ISIGN(MOD(IABS(KFSAV),10000),KFSAV) - - if(KFSAV.eq.3.or.KFSAV.eq.5) then - KFSAV=1 - endif - if(KFSAV.eq.4) then - KFSAV=2 - endif - if(KFSAV.eq.-3.or.KFSAV.eq.-5) then - KFSAV=-1 - endif - if(KFSAV.eq.-4) then - KFSAV=-2 - endif - - MSTJ(93)=1 - PMSAV=PYMASS(KFSAV) - -C...Mass of sbottom-hadron. - PMSSAV=P(IST,5) - PMSHAD=P(IST,5)+PMSAV - -C...Pick momentum sharing according to fragmentation function as if bottom. - PMBSAV=PARF(105) - PARF(105)=PMSSAV - CALL PYZDIS(5,0,PMSHAD**2,ZST) - PARF(105)=PMBSAV - ZST=MAX(0.9D0,MIN(0.9999D0,ZST)) - DO 190 J=1,5 - PSAV(J)=(1D0-ZST)*P(IST,J) - P(IST,J)=ZST*P(IST,J) - 190 CONTINUE - -C...Recoiling parton from which to shuffle momentum. System momentum. - IF(IST.EQ.IMIN) IREC=IST+1 - IF(IST.EQ.IMAX) IREC=IST-1 - 200 DO 210 J=1,4 - PSUM(J)=P(IST,J)+P(IREC,J) - 210 CONTINUE - -C...Boost to rest frame of system, and align sbottom along +z axis. - CALL PYROBO(IST,IST,0D0,0D0,-(PSUM(1)/PSUM(4)), - & -(PSUM(2)/PSUM(4)),-(PSUM(3)/PSUM(4))) - CALL PYROBO(IREC,IREC,0D0,0D0,-(PSUM(1)/PSUM(4)), - & -(PSUM(2)/PSUM(4)),-(PSUM(3)/PSUM(4))) - PHI=PYANGL(P(IST,1),P(IST,2)) - CALL PYROBO(IST,IST,0D0,-PHI,0D0,0D0,0D0) - CALL PYROBO(IREC,IREC,0D0,-PHI,0D0,0D0,0D0) - THETA=PYANGL(P(IST,3),P(IST,1)) - CALL PYROBO(IST,IST,-THETA,0D0,0D0,0D0,0D0) - CALL PYROBO(IREC,IREC,-THETA,0D0,0D0,0D0,0D0) - -C...Calculate new kinematics in this frame, for desired sbottom hadron mass. - ETOT=P(IST,4)+P(IREC,4) - PMREC=P(IREC,5) - IF(K(IREC,2).NE.21.AND.IABS(K(IREC,2)).NE.KFST) THEN - MSTJ(93)=1 - PMREC=PYMASS(K(IREC,2)) - ENDIF - IF(ETOT.GT.PMSHAD+PMREC) THEN - IFAIL=0 - PZNEW=0.5D0*SQRT(MAX(0D0,(ETOT**2-PMSHAD**2-PMREC**2)**2- - & 4D0*PMSHAD**2*PMREC**2))/ETOT - P(IST,3)=PZNEW - P(IST,4)=SQRT(PZNEW**2+PMSHAD**2) - P(IST,5)=PMSHAD - P(IREC,3)=-PZNEW - P(IREC,4)=SQRT(PZNEW**2+PMREC**2) - P(IREC,5)=PMREC - -C...If not enough momentum, take what can be taken. - ELSE - IFAIL=1 - P(IST,3)=0D0 - P(IST,4)=ETOT-PMREC - P(IST,5)=P(IST,4) - P(IREC,3)=0D0 - P(IREC,4)=PMREC - P(IREC,5)=PMREC - ENDIF - -C...Bost back to lab frame. - CALL PYROBO(IST,IST,THETA,PHI,PSUM(1)/PSUM(4), - & PSUM(2)/PSUM(4),PSUM(3)/PSUM(4)) - CALL PYROBO(IREC,IREC,THETA,PHI,PSUM(1)/PSUM(4), - & PSUM(2)/PSUM(4),PSUM(3)/PSUM(4)) - -C...Loop back when not enough momentum could be shuffled. -C...(As long as there is something left.) - IF(IFAIL.EQ.1) THEN - IF(IST.EQ.IMIN.AND.IREC.LT.IMAX) THEN - IREC=IREC+1 - GOTO 200 - ELSEIF(IST.EQ.IMAX.AND.IREC.GT.IMIN) THEN - IREC=IREC-1 - GOTO 200 - ENDIF - ENDIF - -C...Particle code for sbottom-hadron. - KFSTHD=0 - IF(K(IST,2).GT.0) THEN - IF(KFSAV.LE.-1.AND.KFSAV.GE.-5) KFSTHD=KSUSY1+500-10*KFSAV+2 - IF(KFSAV.GE.1103.AND.KFSAV.LE.3303) then - if (KFSAV/100.ne.21) goto 90 - KFSAV=2101 - KFSTHD=KSUSY1+5000+ - & (KFSAV/10)+MOD(KFSAV,10) - endif - ELSE - IF(KFSAV.GE.1.AND.KFSAV.LE.5) KFSTHD=KSUSY1+500+10*KFSAV+2 - IF(KFSAV.LE.-1103.AND.KFSAV.GE.-3303) then - if (-KFSAV/100.ne.21) goto 90 - KFSAV=-2101 - KFSTHD=KSUSY1+5000+ - & (IABS(KFSAV)/10)+MOD(IABS(KFSAV),10) - endif - KFSTHD=-KFSTHD - ENDIF - IF(KFSTHD.EQ.0) THEN - WRITE(*,*) ' Failed to find R-hadron code from ', - & K(IST,2),KFSAV - IERR=1 - RETURN - ENDIF - -C...New slot at end of record for sbottom-hadron - DO 230 J=1,5 - K(N+1,J)=0 - P(N+1,J)=P(IST,J) - V(N+1,J)=V(IST,J) - 230 CONTINUE - K(N+1,1)=5+ISBOTTOM - K(N+1,2)=KFSTHD - K(N+1,3)=K(IST,3) - N=N+1 - -C...Code and momentum of new string endpoint. - K(IST,2)=-KFSAV - DO 240 J=1,5 - P(IST,J)=PSAV(J) - 240 CONTINUE - -C...End of loop over two sbottoms. - 300 CONTINUE - -C...Cleanup: remove zero-energy gluons. - NNOW=N - N=NOLD - DO 330 I=NOLD+1,NNOW - IF(K(I,2).EQ.21.AND.P(I,4).LT.1D-10) THEN - ELSEIF(I.EQ.N+1) THEN - N=N+1 - ELSE - N=N+1 - DO 320 J=1,5 - K(N,J)=K(I,J) - P(N,J)=P(I,J) - V(N,J)=V(I,J) - 320 CONTINUE - ENDIF - 330 CONTINUE - NNOW=N - -C...Check that no low-mass system of diquark-antidiquark kind, -C...or very low-mass of any kind. - KFBEG=0 - DO 332 J=1,5 - PSUM(J)=0D0 - 332 CONTINUE - DO 338 I=NOLD+1,NNOW - DO 334 J=1,4 - PSUM(J)=PSUM(J)+P(I,J) - 334 CONTINUE - IF(KFBEG.EQ.0) THEN - KFBEG=IABS(K(I,2)) - MSTJ(93)=1 - PSUM(5)=PSUM(5)+PYMASS(K(I,2)) - ELSEIF(K(I,1).EQ.1) THEN - KFEND=IABS(K(I,2)) - MSTJ(93)=1 - PSUM(5)=PSUM(5)+PYMASS(K(I,2)) - DELTA=SQRT(MAX(0D0,PSUM(4)**2-PSUM(1)**2-PSUM(2)**2- - & PSUM(3)**2))-PSUM(5) - IF(KFBEG.GT.10.AND.KFBEG.LT.10000.AND.KFEND.GT.10.AND. - & KFEND.LT.10000.AND.DELTA.LT.PARJ(32).AND.(KFBEG.NE.21 - & .AND.KFEND.NE.21)) GOTO 90 - IF(DELTA.LT.0D0) GOTO 90 - KFBEG=0 - DO 336 J=1,5 - PSUM(J)=0D0 - 336 CONTINUE - ENDIF - 338 CONTINUE - -C...Finished with sbottom hadronization. Restore baryon production model. - MSTJ(12)=MSTJ12 - -C...Now hadronize everything else. Some cheating to allow sensible -C...momentum shuffling. - MSTJ16=MSTJ(16) - MSTJ(16)=0 - CALL PYEXEC - MSTJ(16)=MSTJ16 - IF(MSTU(24).NE.0) THEN - WRITE(*,*) ' Event to be skipped' - IERR=1 - ENDIF -c call pylist(2) - RETURN - END - - -C********************************************************************* - -C...PYSQDC -C...Decays the squark inside a squark-hadron. - - SUBROUTINE PYSQDC(KSQUARK) - -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - INTEGER PYK,PYCHGE,PYCOMP -C...Parameter statement to help give large particle numbers -C...(left- and righthanded SUSY, excited fermions). - PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KEXCIT=4000000) -C...Commonblocks. - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) -C...Note that dimensions below grew from 4000 to 8000 in Pythia 6.2! - COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5) - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) - COMMON/PYINT1/MINT(400),VINT(400) - COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2) -C...Width properties. - COMMON/PYINT4/MWID(500),WIDS(500,5) - SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYPARS/,/PYINT1/, - &/PYINT2/ - integer indices(2) -C...Optional offset of constituent quark/diquark mass, -C...representing gluon cloud around squark not part of the decay. - PMOFF = 0.2D0 - MWID(PYCOMP(KSQUARK))=2 - -C...The probability that it has spin 1. -C...(Except for identical flavours, where spin 1 is only possibility.) -C...(Recall that all R-baryon codes were given as if spin 1, sloppily.) - PROBS1=0.5D0 - - - print*,'In PYSQDC' - -C...Loop through to find R-hadrons. - DO 150 I=1,N -C...If only one of the R-hadrons should decay inside the detector, -C...you could here pick at random whether to allow the one with -C...K(I,1) = 6 or the one with =7. (Where the random choice of course -C...could depend on the position of an imagined displaced vertex.) -c IF(IABS(K(I,2)).gt.100000) THEN -c print*,"RMA: ",K(I,1),K(I,2) -c endif - IF(K(I,1).EQ.5.or.K(I,1).EQ.6.OR.K(I,1).EQ.7) THEN - -C...Begin resolve R-hadron flavour content to ~q + qbar or ~q + qq. -c print*,'RMA: PDG: ',K(I,2) - KFRH=(IABS(K(I,2))-KSUSY1)/10 - KSGN=K(I,2)/IABS(K(I,2)); -c print*, 'RMA: Stripped PDG: ',KFRH -c print*, 'RMA: Sign: ',KSGN - -C...Squark meson : Strip quark - IF(KFRH.LT.100) THEN - KFQ=MOD(KFRH,10)*(-1)*KSGN -c print*, 'RMA: QUARK: ',KFQ - -C...Squarkbaryon : Strip diquark - ELSEIF(KFRH.LT.1000) THEN - KFQ=100*MOD(KFRH,100)+3 - KFB=MOD(KFRH/10,10) - KFC=MOD(KFRH,10) - if(KFB.NE.KFC.AND.PROBS1.LT.PYR(0)) KFQ=KFQ-2 - KFQ=KSGN*KFQ -c print*, 'RMA: DIQUARK: ',KFQ - endif - - -C...Subdivide R-hadron into squark + 1 light (di)quark in new slots. - DO 120 I1=N+1,N+2 - K(I1,1)=3 - K(I1,3)=I - K(I1,4)=0 - K(I1,5)=0 - DO 110 J=1,5 - V(I1,J)=0D0 - 110 CONTINUE - 120 CONTINUE - -C...Store new flavours. - K(N+1,2)=KSGN*(KSQUARK) -c K(N+1,2)=KSGN*6 - K(N+2,2)=KFQ -c print*, 'RMA: PDG1: ',K(N+1,2) -c print*, 'RMA: PDG2: ',K(N+2,2) - - - -c call pylist(3) -C...Set up colour flow. Konverter til colur singlet. Find dokumentation -C Squark -c K(N+1,4)=MSTU(5)*(N+2) -c K(N+1,5)=MSTU(5)*(N+2) - -C Quark/Di-quark -c K(N+2,4)=MSTU(5)*(N+1) -c K(N+2,5)=MSTU(5)*(N+1) - -c Saving the indices for PYJOIN later - indices(1)=N+1 - indices(2)=N+2 - - -C...Define effective quark/diquark masses. - MSTJ(93)=1 - PM=PYMASS(KFQ)+PMOFF -c print*,'RMA: PM: ',PM -C...Share gluino"hadron" momentum with two light quarks. - FAC=PM/P(I,5) - - DO 130 J=1,5 - P(N+1,J)=(1D0-FAC)*P(I,J) - P(N+2,J)=FAC*P(I,J) - 130 CONTINUE - -C...If you want a displaced vertex, you could also write that info -C...into the V array, but you have to calculate that vertex yourself. - -C...Mark R-hadron decayed and update number counter. - K(I,1)=K(I,1)+10 - K(I,4)=N+1 - K(I,5)=N+2 - N=N+2 - call pyjoin(2,indices) - -cJack call pylist(2) -C...Let squark decay now. -c print*,'RMA: Trying to decay ',N-1 - CALL PYRESD(N-1) -c call pylist(2) -C...End of loop over two R-hadrons. - ENDIF - 150 CONTINUE - -C...And then the decay products can fragment, etc. - CALL PYEXEC - - RETURN - END diff --git a/Generators/PythiaRhad_i/src/components/PythiaRhad_i_entries.cxx b/Generators/PythiaRhad_i/src/components/PythiaRhad_i_entries.cxx deleted file mode 100644 index 52ea905b5d1f35be92ebde7fa49353d52999879a..0000000000000000000000000000000000000000 --- a/Generators/PythiaRhad_i/src/components/PythiaRhad_i_entries.cxx +++ /dev/null @@ -1,4 +0,0 @@ -#include "PythiaRhad_i/PythiaRhad.h" - -DECLARE_COMPONENT( PythiaRhad ) - diff --git a/Generators/PythiaRhad_i/src/setecm.F b/Generators/PythiaRhad_i/src/setecm.F deleted file mode 100644 index 8cfae5f420d65c1aec9b8d1fbfb88c19d73da53c..0000000000000000000000000000000000000000 --- a/Generators/PythiaRhad_i/src/setecm.F +++ /dev/null @@ -1,11 +0,0 @@ - SUBROUTINE SETECM(WINMATCHIG) -c -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) -#include "GeneratorFortranCommon/heprup.inc" - EBMUP(1)=0.5*WINMATCHIG - EBMUP(2)=0.5*WINMATCHIG - - RETURN - END diff --git a/Generators/Pythia_i/CMakeLists.txt b/Generators/Pythia_i/CMakeLists.txt deleted file mode 100644 index cd69fe77a2ac4744999de1a7d806ebe0fcd23231..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/CMakeLists.txt +++ /dev/null @@ -1,82 +0,0 @@ -################################################################################ -# Package: Pythia_i -################################################################################ - -# Declare the package name: -atlas_subdir( Pythia_i ) - -# Declare the package's dependencies: -atlas_depends_on_subdirs( - PUBLIC - GaudiKernel - Generators/AcerMC_i - Generators/GeneratorModules - Generators/Lhef_i - Generators/Tauola_i - Control/CxxUtils - PRIVATE - Control/AthenaKernel - Generators/AlpGen_i - Generators/ExoGraviton_i - Generators/GeneratorFortranCommon - Generators/GeneratorUtils - Generators/MadGraph_i - Generators/TruthUtils - Generators/CompHep_i - Generators/MadCUP_i - Generators/Matchig_i - Generators/HvGen_i - Generators/Protos_i - Tools/PathResolver ) - -# External dependencies: -find_package( Boost COMPONENTS filesystem thread system ) -find_package( CLHEP ) -find_package( HepMC COMPONENTS HepMC HepMCfio ) -find_package( Lhapdf ) -find_package( Pythia6 ) - -# Remove the --as-needed linker flags: -atlas_disable_as_needed() - -# Component(s) in the package: -atlas_add_library( Pythia_iLib - src/setPythiaTune.cxx src/atlasTune.cxx - src/Pythia.cxx src/Lhefinfo.cxx src/Pydat1.cxx - src/Pydatr.cxx src/Pydat2.cxx src/Pydat3_62.cxx - src/Pyssmt.cxx src/Pysubs.cxx src/Pypars.cxx - src/Pymssm.cxx src/Pypued.cxx src/Pypevwt.cxx - src/Pymsrv.cxx src/Pyint1.cxx src/Pyint2.cxx - src/Pyint5.cxx src/Pytcsm.cxx src/getaddr.cxx - src/upinit_py.F src/upevnt_py.F src/upveto_py.F - src/cldcay.F src/glhefinfo.F src/gpydat2.F - src/gpydatr.F src/gpypars.F src/gpysubs.F - src/gpydat1.F src/gpydat3_62.F src/gpymssm.F - src/gpypued.F src/gpypevwt.F src/gpymsrv.F - src/gpyssmt.F src/gpyint1.F src/gpyint2.F - src/gpyint5.F src/gpytcsm.F src/initpyblock.F - src/openrandom.F src/opdcay.F src/pyr.F - src/extproc.F src/gatlastaula_decres_py.F src/atopyt.F - src/opensusyfile.F src/addParticle.F src/parout.F - src/setecm.F src/PythiaDummies/pyevwt.F src/PythiaDummies/pykcut.F - src/PythiaDummies/pytaud.F src/PythiaDummies/pytime.F - src/PythiaDummies/sugra.F src/PythiaDummies/visaje.F - src/PythiaDummies/ssmssm.F src/PythiaDummies/fhhiggscorr.F - src/PythiaDummies/fhsetflags.F src/PythiaDummies/fhsetpara.F - PUBLIC_HEADERS Pythia_i - INCLUDE_DIRS ${PYTHIA6_INCLUDE_DIRS} ${LHAPDF_INCLUDE_DIRS} - PRIVATE_INCLUDE_DIRS ${Boost_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS} - ${HEPMC_INCLUDE_DIRS} - PRIVATE_DEFINITIONS ${CLHEP_DEFINITIONS} -DPY6VERSION="${PYTHIA6_VERSION}" - LINK_LIBRARIES ${PYTHIA6_LIBRARIES} ${PYTHIA6_LIBRARY_DIRS}/pydata.o ${LHAPDF_LIBRARIES} GaudiKernel - AcerMC_i Lhef_i GeneratorModulesLib Tauola_iLib GeneratorFortranCommonLib - PRIVATE_LINK_LIBRARIES ${Boost_LIBRARIES} ${CLHEP_LIBRARIES} - ${HEPMC_LIBRARIES} AthenaKernel AlpGen_i ExoGraviton_i MadGraph_i - TruthUtils PathResolver CompHep_i MadCUP_i Matchig_i HvGen_i Protos_i ) - -atlas_add_component( Pythia_i - src/components/*.cxx - LINK_LIBRARIES GaudiKernel Pythia_iLib ) - -# Install files from the package: -atlas_install_joboptions( share/*.py ) diff --git a/Generators/Pythia_i/Pythia_i/Lhefinfo.h b/Generators/Pythia_i/Pythia_i/Lhefinfo.h deleted file mode 100644 index b31d0f0a698568e780fff19f83e315d24d9cda70..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/Pythia_i/Lhefinfo.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - - -#ifndef LHEFINFO_h -#define LHEFINFO_h - -extern "C" { - void* lhefinfo_address_(); -} - -/** -@class Lhefinfo.hh - -@brief Class definition for Lhefinfo common block. - -@author Sebastian Piec -*/ - -class Lhefinfo { -public: - Lhefinfo(); - ~Lhefinfo(); - - inline void init(); // inlined for speed of access (small function) - - int& id1(); - int& id2(); - double& x1(); - double& x2(); - double& scalePdf(); - double& xPdf1(); - double& xPdf2(); - -private: - struct LHEFINFO; - friend struct LHEFINFO; - - struct LHEFINFO - { - int id1, id2; - double x1, x2; - double scalePdf, xPdf1, xPdf2; - }; - - static LHEFINFO* s_lhefinfo; -}; - -#include "Pythia_i/Lhefinfo.icc" - -#endif - diff --git a/Generators/Pythia_i/Pythia_i/Lhefinfo.icc b/Generators/Pythia_i/Pythia_i/Lhefinfo.icc deleted file mode 100644 index 5ebfb4da4009b44541ed93824e0c11ea216f06fc..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/Pythia_i/Lhefinfo.icc +++ /dev/null @@ -1,14 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// Inline implementations for Lhefinfo - -// initialise pointer -void Lhefinfo::init() -{ - if ( !s_lhefinfo ) { - s_lhefinfo = static_cast< LHEFINFO* >( lhefinfo_address_() ); - } -} - diff --git a/Generators/Pythia_i/Pythia_i/Pydat1.h b/Generators/Pythia_i/Pythia_i/Pydat1.h deleted file mode 100644 index e97ede8e4798258a168ccfad174fcc238430337f..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/Pythia_i/Pydat1.h +++ /dev/null @@ -1,65 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - - -#ifndef Pydat1_h -#define Pydat1_h - -extern "C" { - void* pydat1_address_(void); -} - -/** -@class Pydat1.hh - -@brief Class definition for Pydat1, which is used - to modify the Pythia Pydat1 common. - - Environment: - CDF Run 2 - -@author Chris Green, Purdue University - Stan Thompson, Glasgow University - - Pythia Common access method -*/ -class Pydat1 { -public: - Pydat1(); - ~Pydat1(); - int& mstu(int n); - double& paru(int n); - int& mstj(int n); - double& parj(int n); - inline void init(); // inlined for speed of access (small function) - // return common array lengths - int lenMstu() const {return s_lenMstu;} - int lenParu() const {return s_lenParu;} - int lenMstj() const {return s_lenMstj;} - int lenParj() const {return s_lenParj;} -private: - - // Lengths of MSTU and PARU COMMONS - static const int s_lenMstu = 200; - static const int s_lenParu = 200; - static const int s_lenMstj = 200; - static const int s_lenParj = 200; - - struct PYDAT1; - friend struct PYDAT1; - - struct PYDAT1 { - int mstu[s_lenMstu]; - double paru[s_lenParu]; - int mstj[s_lenMstj]; - double parj[s_lenParj]; - }; - int m_dummy; - double m_realdummy; - static PYDAT1* s_pydat1; -}; - -#include "Pythia_i/Pydat1.icc" - -#endif diff --git a/Generators/Pythia_i/Pythia_i/Pydat1.icc b/Generators/Pythia_i/Pythia_i/Pydat1.icc deleted file mode 100644 index befac7203b5832a25db5bb595a8a0da0f68c5a66..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/Pythia_i/Pydat1.icc +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// Inline implementations for Pydat1 - -// initialise pointer -void Pydat1::init(void) { - if (!s_pydat1) s_pydat1 = static_cast<PYDAT1*>(pydat1_address_()); -} - diff --git a/Generators/Pythia_i/Pythia_i/Pydat2.h b/Generators/Pythia_i/Pythia_i/Pydat2.h deleted file mode 100644 index b0f5ba5e18d9dbcd56ea07202c85b5356d791fc0..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/Pythia_i/Pydat2.h +++ /dev/null @@ -1,66 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef Pydat2_h -#define Pydat2_h - -extern "C" { - void* pydat2_address_(void); -} -/** -@class Pydat2.hh - -@brief Class definition for Pydat2, which is used - to modify the Pythia Pydat2 common. - - Environment: - CDF Run 2 - -@author Chris Green, Purdue University - Stan Thompson, Glasgow University - - Pythia Common access method -*/ - -class Pydat2 { -public: - Pydat2(); - ~Pydat2(); - - int& kchg(int kc, int i); - double& pmas(int kc, int i); - double& parf(int n); - double& vckm(int i, int j); - inline void init(); // inlined for speed of access (small function) - // return common array lengths - int depthKchg() const {return s_depthKchg;} - int lenPmas() const {return s_lenPmas;} - int depthPmas() const {return s_depthPmas;} - int lenParf() const {return s_lenParf;} - int lenVckm() const {return s_lenVckm;} -private: - - // Lengths of array in PYDAT2 common - static const int s_lenPmas = 500; - static const int s_depthPmas = 4; - static const int s_depthKchg = 4; - static const int s_lenParf = 2000; - static const int s_lenVckm = 4; - - struct PYDAT2; - friend struct PYDAT2; - struct PYDAT2 { - int kchg[s_depthKchg][s_lenPmas]; - double pmas[s_depthPmas][s_lenPmas]; - double parf[s_lenParf]; - double vckm[s_lenVckm][s_lenVckm]; - }; - int m_dummy; - double m_realdummy; - static PYDAT2* s_pydat2; -}; - -#include "Pythia_i/Pydat2.icc" - -#endif diff --git a/Generators/Pythia_i/Pythia_i/Pydat2.icc b/Generators/Pythia_i/Pythia_i/Pydat2.icc deleted file mode 100644 index 83bd076d14ab26ea5327ccae1f2c8caacb510964..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/Pythia_i/Pydat2.icc +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// Inline implementations for Pydat2 - -// initialise pointer -void Pydat2::init(void) { - if (!s_pydat2) s_pydat2 = static_cast<PYDAT2*>(pydat2_address_()); -} - diff --git a/Generators/Pythia_i/Pythia_i/Pydat3.h b/Generators/Pythia_i/Pythia_i/Pydat3.h deleted file mode 100644 index 380fdfddcb49e92b0152be2ddff96778fcadf362..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/Pythia_i/Pydat3.h +++ /dev/null @@ -1,70 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef Pydat3_h -#define Pydat3_h - -extern "C" { - void* pydat3_address_(void); -} -/** -@class Pydat3.hh - -@brief Class definition for Pydat3, which is used - to modify the Pythia Pydat3 common. - - Environment: - CDF Run 2 - -@author Chris Green, Purdue University - Stan Thompson, Glasgow University - - Pythia Common access method -*/ - -class Pydat3 { -public: - Pydat3(); - ~Pydat3(); - - int& mdcy(int kc, int i); - int& mdme(int idc, int i); - double& brat(int idc); - int& kfdp(int idc, int kf); - inline void init(); // inlined for speed of access (small function) - // return common array lengths - int lenMdcy() const {return s_lenMdcy;} - int depthMdcy() const {return s_depthMdcy;} - int lenMdme() const {return s_lenMdme;} - int depthMdme() const {return s_depthMdme;} - int lenBrat() const {return s_lenBrat;} - int lenKfdp() const {return s_lenKfdp;} - int depthKfdp() const {return s_depthKfdp;} -private: - - // Lengths of array in PYDAT2 common - static const int s_lenMdcy = 500; - static const int s_depthMdcy = 3; - static const int s_lenMdme = 8000; - static const int s_depthMdme = 2; - static const int s_lenBrat = 8000; - static const int s_lenKfdp = 8000; - static const int s_depthKfdp = 5; - - struct PYDAT3; - friend struct PYDAT3; - struct PYDAT3 { - int mdcy[s_depthMdcy][s_lenMdcy]; - int mdme[s_depthMdme][s_lenMdme]; - double brat[s_lenBrat]; - int kfdp[s_depthKfdp][s_lenKfdp]; - }; - int m_dummy; - double m_realdummy; - static PYDAT3* s_pydat3; -}; - -#include "Pythia_i/Pydat3.icc" - -#endif diff --git a/Generators/Pythia_i/Pythia_i/Pydat3.icc b/Generators/Pythia_i/Pythia_i/Pydat3.icc deleted file mode 100644 index 78bb20f45ba050f6062d39f186fdb8a52d08c98f..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/Pythia_i/Pydat3.icc +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// Inline implementations for Pydat3 - -// initialise pointer -void Pydat3::init(void) { - if (!s_pydat3) s_pydat3 = static_cast<PYDAT3*>(pydat3_address_()); -} - diff --git a/Generators/Pythia_i/Pythia_i/Pydat3_61.h b/Generators/Pythia_i/Pythia_i/Pydat3_61.h deleted file mode 100644 index df6c7e0bf458038bd53650a295d6b0b89a0cc209..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/Pythia_i/Pydat3_61.h +++ /dev/null @@ -1,72 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef Pydat3_h -#define Pydat3_h - -extern "C" { - void* pydat3_address_(void); -} - -/** - -@class Pydat3.hh - -@brief Class definition for Pydat3, which is used - to modify the Pythia Pydat3 common. - - Environment: - CDF Run 2 - -@author Chris Green, Purdue University - Stan Thompson, Glasgow University - - Pythia Common access method -*/ - -class Pydat3 { -public: - Pydat3(); - ~Pydat3(); - - int& mdcy(int kc, int i); - int& mdme(int idc, int i); - double& brat(int idc); - int& kfdp(int idc, int kf); - inline void init(); // inlined for speed of access (small function) - // return common array lengths - int lenMdcy() const {return _lenMdcy;} - int depthMdcy() const {return _depthMdcy;} - int lenMdme() const {return _lenMdme;} - int depthMdme() const {return _depthMdme;} - int lenBrat() const {return _lenBrat;} - int lenKfdp() const {return _lenKfdp;} - int depthKfdp() const {return _depthKfdp;} -private: - - // Lengths of array in PYDAT2 common - static const int _lenMdcy = 500; - static const int _depthMdcy = 3; - static const int _lenMdme = 4000; - static const int _depthMdme = 2; - static const int _lenBrat = 4000; - static const int _lenKfdp = 4000; - static const int _depthKfdp = 5; - - struct PYDAT3; - friend struct PYDAT3; - struct PYDAT3 { - int mdcy[_depthMdcy][_lenMdcy]; - int mdme[_depthMdme][_lenMdme]; - double brat[_lenBrat]; - int kfdp[_depthKfdp][_lenKfdp]; - }; - int _dummy; - double _realdummy; - static PYDAT3* _pydat3; -}; - -#include "Pythia_i/Pydat3.icc" - -#endif diff --git a/Generators/Pythia_i/Pythia_i/Pydat3_61.icc b/Generators/Pythia_i/Pythia_i/Pydat3_61.icc deleted file mode 100644 index b609dd187f48400c5fca60d59f555d22103017cf..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/Pythia_i/Pydat3_61.icc +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// Inline implementations for Pydat3 - -// initialise pointer -void Pydat3::init(void) { - if (!_pydat3) _pydat3 = static_cast<PYDAT3*>(pydat3_address_()); -} - diff --git a/Generators/Pythia_i/Pythia_i/Pydat3_62.h b/Generators/Pythia_i/Pythia_i/Pydat3_62.h deleted file mode 100644 index 9e96629cbb1e74df4de79d1a0ce7d600c955d2eb..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/Pythia_i/Pydat3_62.h +++ /dev/null @@ -1,75 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - - -#ifndef Pydat3_h -#define Pydat3_h - -extern "C" { - void* pydat3_address_(void); -} - -/** -@class Pydat3.hh - -@brief Description: - Class definition for Pydat3, which is used - to modify the Pythia Pydat3 common. - - Environment: - CDF Run 2 - -@author Chris Green, Purdue University - -Stan Thompson, Glasgow University - - - Pythia Common access method -*/ - -class Pydat3 { -public: - Pydat3(); - ~Pydat3(); - - int& mdcy(int kc, int i); - int& mdme(int idc, int i); - double& brat(int idc); - int& kfdp(int idc, int kf); - inline void init(); // inlined for speed of access (small function) - // return common array lengths - int lenMdcy() const {return s_lenMdcy;} - int depthMdcy() const {return s_depthMdcy;} - int lenMdme() const {return s_lenMdme;} - int depthMdme() const {return s_depthMdme;} - int lenBrat() const {return s_lenBrat;} - int lenKfdp() const {return s_lenKfdp;} - int depthKfdp() const {return s_depthKfdp;} -private: - - // Lengths of array in PYDAT2 common - static const int s_lenMdcy = 500; - static const int s_depthMdcy = 3; - static const int s_lenMdme = 8000; - static const int s_depthMdme = 2; - static const int s_lenBrat = 8000; - static const int s_lenKfdp = 8000; - static const int s_depthKfdp = 5; - - struct PYDAT3; - friend struct PYDAT3; - struct PYDAT3 { - int mdcy[s_depthMdcy][s_lenMdcy]; - int mdme[s_depthMdme][s_lenMdme]; - double brat[s_lenBrat]; - int kfdp[s_depthKfdp][s_lenKfdp]; - }; - int m_dummy; - double m_realdummy; - static PYDAT3* s_pydat3; -}; - -#include "Pythia_i/Pydat3.icc" - -#endif diff --git a/Generators/Pythia_i/Pythia_i/Pydat3_62.icc b/Generators/Pythia_i/Pythia_i/Pydat3_62.icc deleted file mode 100644 index b609dd187f48400c5fca60d59f555d22103017cf..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/Pythia_i/Pydat3_62.icc +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// Inline implementations for Pydat3 - -// initialise pointer -void Pydat3::init(void) { - if (!_pydat3) _pydat3 = static_cast<PYDAT3*>(pydat3_address_()); -} - diff --git a/Generators/Pythia_i/Pythia_i/Pydatr.h b/Generators/Pythia_i/Pythia_i/Pydatr.h deleted file mode 100644 index 2377c4101e897c8743f7cb14b1e9f471a3e5e05d..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/Pythia_i/Pydatr.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - - -#ifndef Pydatr_h -#define Pydatr_h - -extern "C" { - void* pydatr_address_(void); -} - -/** -@class Pydatr.hh - -@brief Description: - Class definition for Pydatr, which is used - to modify the Pythia Pydatr common. - - Environment: - CDF Run 2 - -@author - Chris Green, Purdue University - Stan Thompson, Glasgow University - - Pythia Common access method -*/ -class Pydatr { -public: - Pydatr(); - ~Pydatr(); - int& mrpy(int n); - double& rrpy(int n); - inline void init(); // inlined for speed of access (small function) - // return common array lengths - int lenMrpy() const {return s_lenMrpy;} - int lenRrpy() const {return s_lenRrpy;} -private: - - // Lengths of array in PYDATR common - static const int s_lenMrpy = 6; - static const int s_lenRrpy = 100; - struct PYDATR; - friend struct PYDATR; - struct PYDATR { - int mrpy[s_lenMrpy]; - double rrpy[s_lenRrpy]; - }; - int m_dummy; - double m_realdummy; - static PYDATR* s_pydatr; -}; - -#include "Pythia_i/Pydatr.icc" - -#endif diff --git a/Generators/Pythia_i/Pythia_i/Pydatr.icc b/Generators/Pythia_i/Pythia_i/Pydatr.icc deleted file mode 100644 index 273eee3d694b727b589a2290c5bd308403d3ac76..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/Pythia_i/Pydatr.icc +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// Inline implementations for Pydatr - -// initialise pointer -void Pydatr::init(void) { - if (!s_pydatr) s_pydatr = static_cast<PYDATR*>(pydatr_address_()); -} - diff --git a/Generators/Pythia_i/Pythia_i/Pyint1.h b/Generators/Pythia_i/Pythia_i/Pyint1.h deleted file mode 100644 index 5da7c676d0a8e81683f73d3a6aa10bf550eb4cc5..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/Pythia_i/Pyint1.h +++ /dev/null @@ -1,52 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef Pyint1_h -#define Pyint1_h -extern "C" { - void* pyint1_address_(void); -} -/** -@class Pyint1.h - -@brief Class definition for Pyint1, which is used - to modify the Pythia Pyint1 common. - - Environment: - ATLAS/ATHENA - -@author Elzbieta Richter-Was, Cracow INP - - Pythia Common access method -*/ - -class Pyint1 { -public: - Pyint1(); - ~Pyint1(); - int& mint(int n); - double& vint(int n); - inline void init(); // inlined for speed of access (small function) - // return common array lengths - int lenMint() const {return s_lenMint;} - int lenVint() const {return s_lenVint;} -private: - - // Lengths of MINT and VINT COMMONS - static const int s_lenMint = 400; - static const int s_lenVint = 400; - - struct PYINT1; - friend struct PYINT1; - - struct PYINT1 { - int mint[s_lenMint]; - double vint[s_lenVint]; - }; - int m_dummy; - double m_realdummy; - static PYINT1* s_pyint1; -}; -#include "Pythia_i/Pyint1.icc" -#endif diff --git a/Generators/Pythia_i/Pythia_i/Pyint1.icc b/Generators/Pythia_i/Pythia_i/Pyint1.icc deleted file mode 100644 index c8a9d1e3ce36388de606f0ae2c96c9d342120c40..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/Pythia_i/Pyint1.icc +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// Inline implementations for Pyint1 - -// initialise pointer -void Pyint1::init(void) { - if (!s_pyint1) s_pyint1 = static_cast<PYINT1*>(pyint1_address_()); -} - diff --git a/Generators/Pythia_i/Pythia_i/Pyint2.h b/Generators/Pythia_i/Pythia_i/Pyint2.h deleted file mode 100644 index 68694932e59cce6c0768ff2bc7515996fd598f04..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/Pythia_i/Pyint2.h +++ /dev/null @@ -1,73 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - - -#ifndef Pyint2_h -#define Pyint2_h - -extern "C" { - void* pyint2_address_(void); -} -/** - -@class Pyint2.h - -@brief Class definition for Pyint2, which is used - to modify the Pythia Pyint2 common. - - Environment: - ATLAS/ATHENA - -@author Ian Hinchliffe LBNL - - Pythia Common access method -*/ - -class Pyint2 { -public: - Pyint2(); - ~Pyint2(); - int& iset(int n); - int& kfpr(int n, int i); - double& coef(int n, int i); - int& icol(int n,int i,int j); - inline void init(); // inlined for speed of access (small function) - // return common array lengths - int lenIset() const {return s_lenIset;} - int depthKfpr() const {return s_depthKfpr;} - int lenKfpr() const {return s_lenKfpr;} - int lenCoef() const {return s_lenCoef;} - int depthCoef() const {return s_depthCoef;} - int lenIcol() const {return s_lenIcol;} - int depthIcol() const {return s_depthIcol;} - int widthIcol() const {return s_widthIcol;} -private: - - // Lengths of ISET and KFPR COMMONS - static const int s_lenIset = 500; - static const int s_lenKfpr = 500; - static const int s_depthKfpr = 2; - static const int s_lenCoef = 500; - static const int s_depthCoef = 20; - static const int s_lenIcol = 40; - static const int s_depthIcol = 4; - static const int s_widthIcol = 2; - - struct PYINT2; - friend struct PYINT2; - - struct PYINT2 { - int iset[s_lenIset]; - int kfpr[s_depthKfpr][s_lenKfpr]; - double coef[s_depthCoef][s_lenCoef]; - int icol[s_widthIcol][s_depthIcol][s_lenIcol]; - }; - int m_dummy; - double m_realdummy; - static PYINT2* s_pyint2; -}; - -#include "Pythia_i/Pyint2.icc" - -#endif diff --git a/Generators/Pythia_i/Pythia_i/Pyint2.icc b/Generators/Pythia_i/Pythia_i/Pyint2.icc deleted file mode 100644 index 7687be646c47a55e902d941a9fd30a6755feadbe..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/Pythia_i/Pyint2.icc +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// Inline implementations for Pyint2 - -// initialise pointer -void Pyint2::init(void) { - if (!s_pyint2) s_pyint2 = static_cast<PYINT2*>(pyint2_address_()); -} - diff --git a/Generators/Pythia_i/Pythia_i/Pyint5.h b/Generators/Pythia_i/Pythia_i/Pyint5.h deleted file mode 100644 index 5f529f58eda61c4cd028c020d3348a6b51651ea2..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/Pythia_i/Pyint5.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef Pyint5_h -#define Pyint5_h - -extern "C" { - void* pyint5_address_(void); -} -/** -@class Pyint5.h - -@brief Class definition for Pyint5, which is used - to modify the Pythia Pyint5 common. - - Environment: - ATLAS/ATHENA - -@author Ian Hinchliffe LBNL - - Pythia Common access method -*/ - -class Pyint5 { -public: - Pyint5(); - ~Pyint5(); - int& ngenpd(); - int& ngen(int n, int i); - double& xsec(int n, int i); - inline void init(); // inlined for speed of access (small function) - // return common array lengths - int depthNgen() const {return s_depthNgen;} - int lenNgen() const {return s_lenNgen;} - int lenXsec() const {return s_lenXsec;} - int depthXsec() const {return s_depthXsec;} -private: - - // Lengths of NGENPD and NGEN COMMONS - static const int s_lenNgen = 501; - static const int s_depthNgen = 3; - static const int s_lenXsec = 501; - static const int s_depthXsec = 3; - - struct PYINT5; - friend struct PYINT5; - - struct PYINT5 { - int ngenpd; - int ngen[s_depthNgen][s_lenNgen]; - double xsec[s_depthXsec][s_lenXsec]; - }; - int m_dummy; - double m_realdummy; - static PYINT5* s_pyint5; -}; - -#include "Pythia_i/Pyint5.icc" - -#endif diff --git a/Generators/Pythia_i/Pythia_i/Pyint5.icc b/Generators/Pythia_i/Pythia_i/Pyint5.icc deleted file mode 100644 index 73afaa3afe5963410da6e5f4afb1a68012c63772..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/Pythia_i/Pyint5.icc +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// Inline implementations for Pyint5 - -// initialise pointer -void Pyint5::init(void) { - if (!s_pyint5) s_pyint5 = static_cast<PYINT5*>(pyint5_address_()); -} - diff --git a/Generators/Pythia_i/Pythia_i/Pymsrv.h b/Generators/Pythia_i/Pythia_i/Pymsrv.h deleted file mode 100644 index b27d494654a545629561a5d468ce4d7cf67c1d29..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/Pythia_i/Pymsrv.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration -*/ - -//-------------------------------------------------------------------------- -// File and Version Information: -// Pymsrv.hh -// -// Description: -// Class definition for Pymsrv, which is used -// to modify the Pythia Pymsrv common. -// -// -// Author List: -// Claus Horn -// -//------------------------------------------------------------------------ -// Pythia Common access method -#ifndef PYMSRV_H -#define PYMSRV_H - -#include "CxxUtils/unused.h" - -extern "C" { - void* pymsrv_address_(void); -} - -class Pymsrv { -public: - Pymsrv(); - ~Pymsrv(); - - double& rvlam(int n); - double& rvlamp(int n); - double& rvlamb(int n); - - int lenRVlam() const {return 27;} - int lenRVlamp() const {return 27;} - int lenRVlamb() const {return 27;} - - inline void init(); - -private: - - struct PYMSRV; - friend struct PYMSRV; - - struct PYMSRV { - double rvlam[3][3][3]; - double rvlamp[3][3][3]; - double rvlamb[3][3][3]; - }; - - double ATH_UNUSED_MEMBER(m_dummy); - double ATH_UNUSED_MEMBER(m_realdummy); - - static PYMSRV* s_pymsrv; -}; - -#include "Pythia_i/Pymsrv.icc" - -#endif diff --git a/Generators/Pythia_i/Pythia_i/Pymsrv.icc b/Generators/Pythia_i/Pythia_i/Pymsrv.icc deleted file mode 100644 index c12fd8bc7d1dff0706678fe388c6fe613a8da9c6..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/Pythia_i/Pymsrv.icc +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// Inline implementations for Pymsrv - -// initialise pointer -void Pymsrv::init(void) { - if (!s_pymsrv) s_pymsrv = static_cast<PYMSRV*>(pymsrv_address_()); -} - diff --git a/Generators/Pythia_i/Pythia_i/Pymssm.h b/Generators/Pythia_i/Pythia_i/Pymssm.h deleted file mode 100644 index 00fc92718fa166eb4907c6582a0d7a4d50e28040..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/Pythia_i/Pymssm.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - - -#ifndef PYMSSM_H -#define PYMSSM_H - -extern "C" { - void* pymssm_address_(void); -} -/** -@class Pymssm.hh - -@brief Class definition for Pymssm, which is used - to modify the Pythia Pymssm common. - - Environment: - CDF Run 2 - -@author Chris Green, Purdue University - Stan Thompson, Glasgow University - - Pythia Common access method -*/ -class Pymssm { -public: - Pymssm(); - ~Pymssm(); - - int& imss(int n); - double& rmss(int n); - - int lenImss() const {return s_lenImss;} - int lenRmss() const {return s_lenRmss;} - - inline void init(); - -private: - - static const int s_lenImss = 100; - static const int s_lenRmss = 100; - - struct PYMSSM; - friend struct PYMSSM; - - struct PYMSSM { - int imss[s_lenImss]; - double rmss[s_lenRmss]; - }; - - int m_dummy; - double m_realdummy; - - static PYMSSM* s_pymssm; -}; - -#include "Pythia_i/Pymssm.icc" - -#endif diff --git a/Generators/Pythia_i/Pythia_i/Pymssm.icc b/Generators/Pythia_i/Pythia_i/Pymssm.icc deleted file mode 100644 index f7657d2ce9477772def020ed3eb9499394d73824..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/Pythia_i/Pymssm.icc +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// Inline implementations for Pymssm - -// initialise pointer -void Pymssm::init(void) { - if (!s_pymssm) s_pymssm = static_cast<PYMSSM*>(pymssm_address_()); -} - diff --git a/Generators/Pythia_i/Pythia_i/Pypars.h b/Generators/Pythia_i/Pythia_i/Pypars.h deleted file mode 100644 index 0ab44a22ccef3bb89fdc3ec555dd4aec6bf611e4..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/Pythia_i/Pypars.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - - -#ifndef Pypars_h -#define Pypars_h - -extern "C" { - void* pypars_address_(void); -} -/** -@class Pypars.hh - -@brief Class definition for Pypars, which is used - to modify the Pythia Pypars common. - - Environment: - CDF Run 2 - -@author Chris Green, Purdue University - Stan Thompson, Glasgow University - - Pythia Common access method -*/ - -class Pypars { -public: - Pypars(); - ~Pypars(); - int& mstp(int n); - double& parp(int n); - int& msti(int n); - double& pari(int n); - inline void init(); // inlined for speed of access (small function) - // return common array lengths - int lenMstp() const {return s_lenMstp;} - int lenParp() const {return s_lenParp;} - int lenMsti() const {return s_lenMsti;} - int lenPari() const {return s_lenPari;} -private: - - // Lengths of MSTU and PARU COMMONS - static const int s_lenMstp = 200; - static const int s_lenParp = 200; - static const int s_lenMsti = 200; - static const int s_lenPari = 200; - - struct PYPARS; - friend struct PYPARS; - struct PYPARS { - int mstp[s_lenMstp]; - double parp[s_lenParp]; - int msti[s_lenMsti]; - double pari[s_lenPari]; - }; - int m_dummy; - double m_realdummy; - static PYPARS* s_pypars; -}; - -#include "Pythia_i/Pypars.icc" - -#endif diff --git a/Generators/Pythia_i/Pythia_i/Pypars.icc b/Generators/Pythia_i/Pythia_i/Pypars.icc deleted file mode 100644 index fa7d61023695bf45bdd7e29a6903f942e3a95d68..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/Pythia_i/Pypars.icc +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// Inline implementations for Pypars - -// initialise pointer -void Pypars::init(void) { - if (!s_pypars) s_pypars = static_cast<PYPARS*>(pypars_address_()); -} - diff --git a/Generators/Pythia_i/Pythia_i/Pypevwt.h b/Generators/Pythia_i/Pythia_i/Pypevwt.h deleted file mode 100644 index 69c6fd600aa14071ce2e00ae4622911548a1b4be..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/Pythia_i/Pypevwt.h +++ /dev/null @@ -1,66 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef PYPEVWT_H -#define PYPEVWT_H - -extern "C"{ - void* pypevwt_address_(void); -} - -/** -@class Pypevwt.h - -@brief Class definition for Pypevwt, which is used - to modify the Pythia Pypevwt common block that holds variables related - to event weighting. - -@author Eric Feng (Chicago): Eric.Feng@cern.ch, March 2010 - -*/ - -class Pypevwt -{ - //______________________________________________________________________ - //public methods and members - public: - - //constructor and destructor - Pypevwt(); - ~Pypevwt(); - - int& ievwt(int n); - double& revwt(int n); - - int lenIevwt() const {return s_lenIevwt;} - int lenRevwt() const {return s_lenRevwt;} - - //PYPEVWT* _pypevwt initialization - inline void init(); - //______________________________________________________________________ - //private methods and members - private: - - static const int s_lenIevwt = 100; - static const int s_lenRevwt = 100; - - //PYPEVWT common block declaration and members - struct PYPEVWT; - friend struct PYPEVWT; - - struct PYPEVWT - { - int ievwt[s_lenIevwt]; - double revwt[s_lenRevwt]; - }; - - int m_dummy; - double m_realdummy; - - static PYPEVWT* s_pypevwt; -}; - -#include "Pythia_i/Pypevwt.icc" - -#endif diff --git a/Generators/Pythia_i/Pythia_i/Pypevwt.icc b/Generators/Pythia_i/Pythia_i/Pypevwt.icc deleted file mode 100644 index 1dec09ba1e1678ed615a0052fde6ac40aa726215..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/Pythia_i/Pypevwt.icc +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// Inline implementations for Pypevwt - -// initialise pointer -void Pypevwt::init(void) { - if (!s_pypevwt) s_pypevwt = static_cast<PYPEVWT*>(pypevwt_address_()); -} - diff --git a/Generators/Pythia_i/Pythia_i/Pypued.h b/Generators/Pythia_i/Pythia_i/Pypued.h deleted file mode 100644 index 0ea86430c149c077b94024e2a3943c786a586f27..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/Pythia_i/Pypued.h +++ /dev/null @@ -1,67 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef PYPUED_H -#define PYPUED_H - -extern "C"{ - void* pypued_address_(void); -} - -/** -@class Pypued.hh - -@brief Class definition for Pypued, which is used - to modify the Pythia Pypued common block, which holds variables related - to the Universal Extra Dimensions model. -@author - - L. Mijovic (liza.mijovic@cern.ch), Oct. 2008 - -*/ - -class Pypued -{ - //______________________________________________________________________ - //public methods and members - public: - - //constructor and destructor - Pypued(); - ~Pypued(); - - int& iued(int n); - double& rued(int n); - - int lenIued() const {return s_lenIued;} - int lenRued() const {return s_lenRued;} - - //PYPUED* _pypued initialization - inline void init(); - //______________________________________________________________________ - //private methods and members - private: - - static const int s_lenIued = 100; - static const int s_lenRued = 100; - - //PYPUED common block declaration and members - struct PYPUED; - friend struct PYPUED; - - struct PYPUED - { - int iued[s_lenIued]; - double rued[s_lenRued]; - }; - - int m_dummy; - double m_realdummy; - - static PYPUED* s_pypued; -}; - -#include "Pythia_i/Pypued.icc" - -#endif diff --git a/Generators/Pythia_i/Pythia_i/Pypued.icc b/Generators/Pythia_i/Pythia_i/Pypued.icc deleted file mode 100644 index e613b6b81ed2c2d191a720853839d2ad93071ec3..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/Pythia_i/Pypued.icc +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// Inline implementations for Pypued - -// initialise pointer -void Pypued::init(void) { - if (!s_pypued) s_pypued = static_cast<PYPUED*>(pypued_address_()); -} - diff --git a/Generators/Pythia_i/Pythia_i/Pyssmt.h b/Generators/Pythia_i/Pythia_i/Pyssmt.h deleted file mode 100644 index 69181b0419a493577027e7cae2f981d84ad739ef..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/Pythia_i/Pyssmt.h +++ /dev/null @@ -1,72 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - - -#ifndef PYSSMT_H -#define PYSSMT_H - -extern "C" { - void* pyssmt_address_(void); -} -/** - -@class Pyssmt.hh - -@brief Class definition for Pyssmt, which is used - to modify the Pythia Pyssmt common. - - Environment: - CDF Run 2 - - -@author Chris Green, Purdue University - Stan Thompson, Glasgow University - - Pythia Common access method -*/ -class Pyssmt { -public: - Pyssmt(); - ~Pyssmt(); - - const double& zmix(int i, int j) const; - const double& umix(int i, int j) const; - const double& vmix(int i, int j) const; - const double& smz(int i) const; - const double& smw(int i) const; - const double& sfmix(int i, int j) const; - - inline void init(); - -private: - - static const int s_sizeZmix = 4; - static const int s_sizeUmix = 2; - static const int s_sizeVmix = 2; - static const int s_lenSmz = 4; - static const int s_lenSmw = 2; - static const int s_lenSfmix = 4; - static const int s_widthSfmix = 16; - - struct PYSSMT; - friend struct PYSSMT; - - struct PYSSMT { - double zmix[s_sizeZmix][s_sizeZmix]; - double umix[s_sizeUmix][s_sizeUmix]; - double vmix[s_sizeVmix][s_sizeVmix]; - double smz[s_lenSmz]; - double smw[s_lenSmw]; - double sfmix[s_lenSfmix][s_widthSfmix]; - }; - - mutable int m_dummy; - mutable double m_realdummy; - - static PYSSMT const * s_pyssmt; -}; - -#include "Pythia_i/Pyssmt.icc" - -#endif diff --git a/Generators/Pythia_i/Pythia_i/Pyssmt.icc b/Generators/Pythia_i/Pythia_i/Pyssmt.icc deleted file mode 100644 index b29d597c6453df77ae20f913a55fe99906d6cc71..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/Pythia_i/Pyssmt.icc +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// Inline implementations for Pyssmt - -// initialise pointer -void Pyssmt::init(void) { - if (!s_pyssmt) s_pyssmt = static_cast<PYSSMT*>(pyssmt_address_()); -} - diff --git a/Generators/Pythia_i/Pythia_i/Pysubs.h b/Generators/Pythia_i/Pythia_i/Pysubs.h deleted file mode 100644 index 16d2ff9f4ce378456ad3bb13fdfcc412b5600d36..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/Pythia_i/Pysubs.h +++ /dev/null @@ -1,66 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - - -#ifndef Pysubs_h -#define Pysubs_h - -extern "C" { - void* pysubs_address_(void); -} - -/** -@class Pysubs.hh - -@brief Class definition for Pysubs, which is used - to modify the Pythia Pysubs common. - - Environment: - CDF Run 2 - -@author Chris Green, Purdue University - Stan Thompson, Glasgow University - - Pythia Common access method -*/ - -class Pysubs { -public: - Pysubs(); - ~Pysubs(); - int& msel(); - int& msub(int n); - int& kfin(int iside, int jflav); - double& ckin(int n); - inline void init(); // inlined for speed of access (small function) - // return common array lengths - int lenMsub() const {return s_lenMsub;} - int lenCkin() const {return s_lenCkin;} - int lenKfin() const {return s_lenKfin;} - int depthKfin() const {return s_depthKfin;} -private: - - // Lengths of array in PYSUBS common - static const int s_lenMsub = 500; - static const int s_lenCkin = 200; - static const int s_lenKfin = 81; - static const int s_depthKfin = 2; - - struct PYSUBS; - friend struct PYSUBS; - struct PYSUBS { - int msel; - int padding; - int msub[s_lenMsub]; - int kfin[s_lenKfin][s_depthKfin]; - double ckin[s_lenCkin]; - }; - int m_dummy; - double m_realdummy; - static PYSUBS* s_pysubs; -}; - -#include "Pythia_i/Pysubs.icc" - -#endif diff --git a/Generators/Pythia_i/Pythia_i/Pysubs.icc b/Generators/Pythia_i/Pythia_i/Pysubs.icc deleted file mode 100644 index ba48892423c5e63ef4e2ce9a4245c6110146692a..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/Pythia_i/Pysubs.icc +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// Inline implementations for Pysubs - -// initialise pointer -void Pysubs::init(void) { - if (!s_pysubs) s_pysubs = static_cast<PYSUBS*>(pysubs_address_()); -} - diff --git a/Generators/Pythia_i/Pythia_i/Pytcsm.h b/Generators/Pythia_i/Pythia_i/Pytcsm.h deleted file mode 100644 index bdc084da4fb01aede2dc11d04801e73fbaac8178..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/Pythia_i/Pytcsm.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef PYTCSM_H -#define PYTCSM_H - -extern "C" { - void* pytcsm_address_(void); -} -/** -@class Pytcsm.hh - -@brief Description: - Class definition for Pytcsm, which is used - to modify the Pythia Pytcsm common. - -@author Georgios Stavropoulos, U.C. Berkeley - - Pythia Common access method -*/ -class Pytcsm { -public: - Pytcsm(); - ~Pytcsm(); - - int& itcm(int n); - double& rtcm(int n); - - int lenItcm() const {return s_lenItcm;} - int lenRtcm() const {return s_lenRtcm;} - - inline void init(); - -private: - - static const int s_lenItcm = 100; - static const int s_lenRtcm = 100; - - struct PYTCSM; - friend struct PYTCSM; - - struct PYTCSM { - int itcm[s_lenItcm]; - double rtcm[s_lenRtcm]; - }; - - int m_dummy; - double m_realdummy; - - static PYTCSM* s_pytcsm; -}; - -#include "Pythia_i/Pytcsm.icc" - -#endif diff --git a/Generators/Pythia_i/Pythia_i/Pytcsm.icc b/Generators/Pythia_i/Pythia_i/Pytcsm.icc deleted file mode 100644 index d6ab0487e908c2aff171eaef95dd78ebda31a55b..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/Pythia_i/Pytcsm.icc +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// Inline implementations for Pytcsm - -// initialise pointer -void Pytcsm::init(void) { - if (!s_pytcsm) s_pytcsm = static_cast<PYTCSM*>(pytcsm_address_()); -} - diff --git a/Generators/Pythia_i/Pythia_i/Pythia.h b/Generators/Pythia_i/Pythia_i/Pythia.h deleted file mode 100644 index ae998e8f3448aaaf00ce9b8ad143d92e6a7237c0..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/Pythia_i/Pythia.h +++ /dev/null @@ -1,314 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef GENERATORMODULESPYTHIA_H -#define GENERATORMODULESPYTHIA_H - -#include "GeneratorModules/GenModule.h" - -#include "Pythia_i/Pydat1.h" -#include "Pythia_i/Pydat2.h" -#include "Pythia_i/Pydat3.h" -#include "Pythia_i/Pysubs.h" -#include "Pythia_i/Pypars.h" -#include "Pythia_i/Pydatr.h" -#include "Pythia_i/Pymssm.h" -#include "Pythia_i/Pypued.h" -#include "Pythia_i/Pypevwt.h" -#include "Pythia_i/Pymsrv.h" -#include "Pythia_i/Pyint1.h" -#include "Pythia_i/Pyint2.h" -#include "Pythia_i/Pyint5.h" -#include "Pythia_i/Pytcsm.h" - -#include "AcerMC_i/AcerMC_acset.h" -#include "Tauola_i/Atlas_HEPEVT.h" - -/// @todo Not in a header file! -using std::string; - -/// @todo Inside class (these are being declared as global symbols) -typedef std::vector<std::string> CommandVector; -typedef std::vector<std::string> PygiveCommandVector; - -// Forward declaration of RNG service interface -class IAtRndmGenSvc; - - -/** -@brief This code is used to get a PYTHIA Monte Carlo event. - - genInitialize() is used to read parameters - - setPythiaTune() is used to choose Pythia parameter set used - - callGenerator() makes the event - - genFinalize() writes log files etc - - fillEvt(HepMC::GenEvent* evt) passes the event to HepMC - - The output will be stored in the transient event store so it can be - passed to the simulation. - -@author - - Ian Hinchliffe, June 2000 (modelled on the CDF code by Stan Thompson) - - Added access to pyint2 common, Feb 2001 - - Added access to pyint5 common, Feb 2002 - - Added access to lesatlas common not part of pythia but needed for external process, May 2002 - - Added access to pyint1 common, Sept 2002 - - Ewelina Lobodzinska: Doxygen doc added, Jan 2008 - - Added access to UED common block pypued, Oct 2008 - - Liza Mijovic: Changes to move Pythia ATLAS tune from Pythia_i + jO to Pythia_i, May 2009 - - Liza Mijovic: Tune choice schema implementation, Aug 2009 - added event weight common block pypevwt, March 2010, E. Feng (Chicago) <Eric.Feng@cern.ch> -*/ - - -class Pythia : public GenModule { -public: - - /// @name Construction / destruction - //@{ - /// Standard constructor - Pythia(const std::string& name, ISvcLocator* pSvcLocator); - /// Destructor - virtual ~Pythia(); - //@} - - - /// @name Event loop methods - //@{ - virtual StatusCode genInitialize(); - virtual StatusCode callGenerator(); - virtual StatusCode genFinalize(); - virtual StatusCode fillEvt(HepMC::GenEvent* evt); - //@} - - - /// @name Tune switches - /// @brief ATLAS tune and parameters implementation, introduced for MC09/MC08. See atlasTune.cxx - //@{ - - /// Set tune via function call - virtual StatusCode setPythiaTune(); - - /// Use current ATLAS tune - virtual StatusCode atlasTune(); - - //@} - - - /// @ name Accessors to PYTHIA COMMONS - //@{ - Pydat1& pydat1(); - Pydat2& pydat2(); - Pydat3& pydat3(); - Pysubs& pysubs(); - Pypars& pypars(); - Pydatr& pydatr(); - Pymssm& pymssm(); - Pypued& pypued(); - Pypevwt& pypevwt(); - Pymsrv& pymsrv(); - Pyint1& pyint1(); - Pyint2& pyint2(); - Pyint5& pyint5(); - Pytcsm& pytcsm(); - //@} - - /// Accessor for external processes - AcerMC_acset& acermc_acset(); - - // Pointer to AtRndmGenSvc - static IAtRndmGenSvc* p_AtRndmGenSvc; - static std::string pythia_stream; - - -protected: - - // Settable Properties - - /// @name Inputs to @c pyinit - //@{ - std::string m_frame; - std::string m_external; //to specify the specific process when m_frame is set to user - std::string m_beam; - std::string m_target; - double m_win; - //@} - - - /// Tune setting, assumed form is m_Default_Tune_Name=TUNETYPE_TUNEINDEX - std::string m_Tune_Name; - - /// PYGIVE argument as C string - const char* m_pygive_cstr; - const char* m_pygive_init_cstr; - const char* m_pygive_gen_cstr; - - /// @name Various input parameters - //@{ - int m_msel; - int m_firstlistevent; - int m_lastlistevent; - int m_eventlistlevel; - std::vector<int> m_pystatlistlevel; - int m_initlistlevel; - int m_randomseed; - std::string m_envval1; - int m_fortout; - //@} - - /// @name Random file numbers, offsets, etc. - //@{ - std::string m_RndmFileName; - int m_RndmFileNumber; - int m_RndmSwitch; - int m_RndmFirstEvent; - int m_RndmSkipEvents; - int m_RndmMOVE; - int m_RndmFileLength; - //@} - - /// RNG seeds - std::vector<long int> m_seeds; - - /// Event counter - int m_events; - - /// @name Common blocks - //@{ - /// Subprocess switches - Pysubs m_pysubs; - /// Pydat1 data, methods - Pydat1 m_pydat1; - /// Pypars data, methods - Pypars m_pypars; - /// Pydat2 data, methods - Pydat2 m_pydat2; - /// Pydat3 data, methods - Pydat3 m_pydat3; - /// Pydatr access for random numbers (only set the 1st seed just now - Pydatr m_pydatr; - /// Pyint1 access for data - Pyint1 m_pyint1; - /// Pyint2 access for data - Pyint2 m_pyint2; - /// Pyint5 access for data - Pyint5 m_pyint5; - /// SUSY access - Pymssm m_pymssm; - /// UED access - Pypued m_pypued; - // Event weight access - Pypevwt m_pypevwt; - /// RPV - Pymsrv m_pymsrv; - /// PYTCSM access - Pytcsm m_pytcsm; - //@} - - /// External process - int m_ExternalProcess; - AcerMC_acset m_acermc_acset; - -//sgluon - bool m_addParticle; - - // Commands to setup pythia - CommandVector m_pythiaCommandVector; - // Commands to setup pythia / make param. querries - via PYGIVE: - // pass parameters or querry parameter value before PYINIT - PygiveCommandVector m_PygiveCommandVector; - // querry parameter value after PYINIT e.g. to check if initializaton resets the value - PygiveCommandVector m_Param_Query_AfterInit; - // querry parameter value after PYEVNT e.g. to get event-specific param. value - PygiveCommandVector m_Param_Query_AfterGen; - - /// @deprecated ??? - bool m_AtlasDefaults; - - /// @name Tunes implemented as switches - /// @deprecated Kept for backward compatibility -- strongly prefer to use Tune_Name flag - //@{ - /** use ATLAS PYTHIA technical settings [default:true] - eventRecord, errors*/ - bool m_useAtlasPythiaRecomm, m_Default_useAtlasPythiaRecomm; - /**use ATLAS PYTHIA parameters [default:true] - masses, dec. widths, etc. */ - bool m_useAtlasPythiaCommon,m_Default_useAtlasPythiaCommon; - /** complete mc09 tune Pythia parameters set [default:true]*/ - bool m_useAtlasPythiaTune09,m_Default_useAtlasPythiaTune09; - /**complete mc08 tune Pythia parameters set [default:false] - if set to true overrides mc09 tune, - mc09 should be set to false in order to use mc08 only */ - bool m_useAtlasPythiaTune08,m_Default_useAtlasPythiaTune08; - /** use no ATLAS PYTHIA settings, apart from pynit inputs [default:false]*/ - bool m_useNoAtlasPythiaParam,m_Default_useNoAtlasPythiaParam; - - - ///call pytune directly in case any parameters set py the tune are to be overwritten from jO - //@{ - int m_direct_call_to_pytune; - //@} - - /// The susy file name - std::string m_read_Filesusy; - - //----------------------------------------------------------------------------- - - /// @name Other class members (not properties) - //@{ - - // more tune-related vars: - //m_Tune_Index see AtlasTune.cxx for catalogue - //m_Default_Tune_Name=TUNETYPE_TUNEINDEX - //so that (after parsing in Pythia.cxx): m_Tune_Type=TUNETYPE and m_Tune_Index=TUNEINDEX - int m_Tune_Index; - std::string m_Tune_Type; - // needed in tune setting for protection against tune-seting inf. loop - int m_atlasTune_loop_prot; - //tune to be assumed by default and in cases of invalid TUNETYPE or TUNEINDEX when TUNETYPE=="ATLAS" - std::string m_Default_Tune_Name, m_Default_Tune_Type; int m_Default_Tune_Index; - // dummy starting tune string - std::string m_Starting_Tune_Name, m_Starting_Tune_Type; int m_Starting_Tune_Index; - // backward compatibility with early 08/09 jO when tunes were impl. as switches: - // to be updated if MC08 and MC09 tunes Tune_Type or Tune_Index are changed - std::string m_mc0809_Tune_Type; - int m_mc09_Tune_Index; - int m_mc08_Tune_Index; - // - - //@} - - // multiply x-section by a num. factor - // add both in the MetaData print-out - double m_Default_xsscale, m_xsscale; - - // print out manually set x-section from the MetaData - double m_Default_SetCrossSection, m_SetCrossSection; - - /// Method to Manage the random seed IO from/to a file - void RandomNumberIO(); - - /// I/O to HEPEVT - void store_Atlas_HEPEVT(); - - /// TAUOLA HEPEVT - static Atlas_HEPEVT* s_atlas_HEPEVT; - -}; - - -#endif diff --git a/Generators/Pythia_i/Pythia_i/config.h b/Generators/Pythia_i/Pythia_i/config.h deleted file mode 100644 index d4b986a8e4b2cc960f7f03f7f3d9040ed2318b00..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/Pythia_i/config.h +++ /dev/null @@ -1,6 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -/* Pythia_i/config.h. Generated automatically by configure. */ -/* GeneratorModules/config.h.in. Generated automatically from configure.in by autoheader. */ diff --git a/Generators/Pythia_i/Pythia_i/config.h.in b/Generators/Pythia_i/Pythia_i/config.h.in deleted file mode 100644 index b29742ce5dc6c4433dbc5fb48caaa6bf242c5b4c..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/Pythia_i/config.h.in +++ /dev/null @@ -1 +0,0 @@ -/* GeneratorModules/config.h.in. Generated automatically from configure.in by autoheader. */ diff --git a/Generators/Pythia_i/doc/Pythia_i.pdf b/Generators/Pythia_i/doc/Pythia_i.pdf deleted file mode 100644 index f5dfbb0a3d3ff9bdfc1d2358b453654428c66c4e..0000000000000000000000000000000000000000 Binary files a/Generators/Pythia_i/doc/Pythia_i.pdf and /dev/null differ diff --git a/Generators/Pythia_i/doc/Pythia_i.tex b/Generators/Pythia_i/doc/Pythia_i.tex deleted file mode 100644 index 96e6a7d1317d27b195f57c23a65a5cc9bad0f2bd..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/doc/Pythia_i.tex +++ /dev/null @@ -1,281 +0,0 @@ -\documentclass[11pt]{article} -\newdimen\SaveHeight \SaveHeight=\textheight -\textwidth=6.5in -\textheight=8.9in -\hoffset=-.5in -\voffset=-1in -\def\topfraction{1.} -\def\textfraction{0.} - -\begin{document} -\title{Pythia\_i: An interface between Pythia and Athena} -\author{ Ian Hinchliffe (I\_Hinchliffe@lbl.gov), G. Stavropoulos (George.Stavropoulos@cern.ch)} -%\today - -\maketitle - -This package runs Pythia from within Athena, puts the events into the -transient store in HepMC format. See the documentation on GenModule for -general information. The note refers only to Pythia specific -material. The External/Pythia package is used to set up the paths to -the Pythia library which is now pointing to the release maintained by -Genser. The current Pythia version interfaced is 6.410 - -The module is activated from the jobOptions service. \\See the examples -in {\bf Pythia\_i/share/jobOptions.pythia.py } - -The pythia parameters are set from the job options service. -{\bf Note that all parameters passed to Pythia are in the units - specified in the Pythia manual. In particular, energies and - masses are in GeV, not the standard atlas units of MeV.} -The following is needed if you wish to run Pythia -\begin{verbatim} -theAppDLLs += [ "Pythia_i"] -theAppTopAlg = ["Pythia"] -\end{verbatim} -The parameters are passed via the following line in the jobOptions.py -file. - -\begin{verbatim}Pythia.PythiaCommand = ["common_block_name variable index value", -"common_block_name1 variable1 index1 value1"] -\end{verbatim} - -Each quoted string sets one parameter. You can have as many as you like -seperated by commas. -{\bf common\_block\_name} must be one of the following common block names and -must be in lower case.\\ -pydatr\\ -pydat1\\ -pydat2\\ -pydat3\\ -pypars\\ -pymssm\\ -pysubs\\ -pyint2\\ -pyinit\\ -pystat\\ -The pyinit deals with parameters associated with the job setup, while the pystat one deals -with the setting of the print level of the PYSTAT routine (called at the end of the run). -An error message is returned if the common block is not one of -these. The job continues to run but the behaviour may not be what you -expect. -{\bf variable} must be the variable name that you are adjusting. -Valid names are as follows (lower case is required)\\ -for pydatr -- mrpy and rrpy\\ -for pydat1 -- mstu paru mstj and parj. Do not change mstu(11) (see below)\\ -for pydat2 -- kchg pmas parf and vckm\\ -for pydat3 -- mdcy mdme brat and kfdp\\ -for pymssm -- imss and rmss\\ -for pypars -- mstp parp msti and pari\\ -for pysubs -- msel msub kfin and ckin\\ -for pyint2 -- iset kfpr coef and icol\\ -The following do not correspond to a common block but the parsing is -similar\\ -pyinit access variable that are either passed in the call to PYINIT -or to variables that control the listing. The choices are -pyinit -- pbar (changes one of the incoming particles to pbar), user -(changes the process selection to user code for connection to external -processes, a string then specifies the specific procees, see -discussion of external processes below), FIXT which switches to fixed -target operation, win -(changes the center of mass energy, units are GeV) output (controls -redirection of output) pylisti (gives -the number to be passed to pylist on the setup) pylistf (gives -the number to be passed to pylist on the dumped events) dumpr (is two -integers specifying the range of events to be written out). -%rndm\_IO -%(dumps/reads the random seeds used by PYTHIA to/from a file).\\ -{\bf Settings in the pyinit groups should come before others. This - is essential if you are using an external process such as comphep or -AcerMC}\\ -pystat sets the print level of the PYSTAT routine (called at the end of the run). - -Again an error message is returned if the common block is not one of -these. The job continues to run but the behaviour may not be what you -expect. - -The remainder of the values in the " " specify the indices (if any) of -the variable and the value that you are setting it to. The range of -the indices is as described in the Pythia manual (Do not try to be -clever and offset them). You must specify the indices and value -completely. The number of quantities that you must provide depends on -the variable. The order is "(first\_index) (second\_index) value"; if -there is no corresponding index, omit it. - There is currently minimal error checking here so you will get junk or a -core dump if you make a mistake. The variable and common block names are -parsed and checked. A message is sent to the Athena LOG if an error is -detected but the job does not abort. - -Examples should make it clear\\ - -\noindent -"pysubs msel 13" will turn on Z/gamma+jet production\\ -"pysubs ckin 3 18." will set the minimum $p_T$ to 18 GeV\\ -"pypars mstp 43 2" wiil turn off the photon and Z/photon -interference.\\ -"pyinit win 1800." changes the center of mass energy to 1800 GeV\\ -Note that the entries are seperated by a single space and that reals -must have a decimal point.\\ -"pyinit pylisti 12" dumps all the particle and decay data (see pythia -manual) after initialization.\\ -"pyinit output junk.dat" causes all the pythia output to dump into a -file junk.dat (it resets mstu(11))\\ -"pyinit pylistf 1 " dumps the complete event record for the specified -events\\ -"pyinit dumpr 3 12 " causes events 6 through 12 to be written out\\ -``pystat 3 5 7'' sets the PYSTAT print levels. Pystat is called as many times -as integers after pystat. In the example, pystat will be called with prin-level 3 followed by -a call with print-level 5 and then by a call with print-level 7. The default is to call pystat -once with print-level 1.\\ -"pydat2 pmas 4000011 1 1000." will set the mass of particle with {\bf KF code} 4000011 to 1000 GeV. -{\bf WARNING: Someone has to give the KF and NOT the KC code. The KF code is converted (via a call to -PYCOMP) to the KC code internally in Pythia.cxx}\\ - -% The format of the rndm\_IO option of the pyinit ``menu'' is the following\\ -% "pyinit rndm\_IO file\_name Switch FirstEvent SkipEvents MOVE"\\ -% Where\\ -% {\bf file\_name } is the name of the file to/from where PYTHIA dumps/reads the rndm seeds\\ -% {\bf Switch } Control variable : 0 (default)=NO action, -% 1=Write (pyrget is called, paragarph 4.3 of PYTHIA manual), 2=Read (pyrset is called).An Athena -% INFO message is printed for every event generated with rndm seeds read from the file.\\ -% {\bf FirstEvent } For Switch=1 is the first Event to be dumped in the file. For Switch=2 -% is the first record in the file to be read. Default value is 1. Values $<$ 1 are not allowed -% and the Switch flag is set to 0 internally by the program (an Athena error message is printed)\\ -% {\bf SkipEvents } For Switch=1 is the number of events to be skipped before the next -% event to be dumped in the file. For Switch=2 is the number of records to be skipped before -% the next record is read. Default value is 0. Values $<$ 0 are not allowed -% and the Switch flag is set to 0 internally by the program (an Athena error message is printed)\\ -% {\bf MOVE } Sets the MOVE (2nd argument) of the pyrget and pyrset subroutines of PYTHIA -% (Paragarph 4.3 of PYTHIA manual). Default value is 0. Setting this variable to a -% value different than 0 when Switch=2, ignores FirstEvent and SkipEvents. - -The jobOptions.tex file that has this example is contained in {\bf Pythia\_i/share/jobOptions.pythia.py }\\ - - -{\large \bf Default Parameters}\\ - -The ATLAS settings are set inside Pythia.cxx. The default initialization corresponds to $pp$ collsions at 14 TeV, PYLIST is called -as PYLIST(11) after initialization. -The current set of defaults is the ones in the Pythia release 6.410 with the -following exceptions. -\begin{itemize} -\item pmas(6,1)=175.; // top quark mass -\item pmas(24,1)=80.42; // W mass -\item pmas(24,2)=2.124; // W width -\item pmas(23,1)=91.19; // Z0 mass -\item pmas(23,2)=2.495; // Z0 width -\item mstp(128)=1; // fix junk output for documentary particles -\item mstu(21)=1; // error handling switch -\item mstp(81)=21; // ATLAS default for MI and also for the associated -treatment of initial- and final-state showers and beam remnants. MI on; new model for PYEVNW. -\item mstp(70)=2; // (virtuality scale for ISR) -\item mstp(72)=0; -\item mstp(82)=4; // (mutiple interaction model) -\item mstp(84)=1; -\item mstp(85)=1; -\item mstp(86)=2; -\item mstp(87)=4; -\item mstp(88)=0; -\item mstp(89)=1; -\item mstp(90)=1; -\item mstp(95)=1; -\item parp(78)=0.2; -\item parp(80)=0.01; -\item parp(82)=1.9; // (cut off scale) -\item parp(83)=0.3; -\item parp(84)=0.5; // (matter distribution) -\item parp(89)=1800.; -\item parp(90)=0.22; // (cut off scale) -\item mstj(11)=3; // (select peterson for charm fragmentation) -\item mstj(22)=2; // (Make K\_S, Lambda stable) -\item parj(54)=-0.07; // (c hadronization) -\item parj(55)=-0.006; // (b hadronization) -\item parj(81)=0.14; -\item mstp(52)=2; // (needed for CTEQ6L) -\item mstp(54)=2; // (needed for CTEQ6L) -\item mstp(56)=2; // (needed for CTEQ6L) -\item mstp(51)=10042; // (needed for CTEQ6L) -\item mstp(53)=10042; // (needed for CTEQ6L) -\item mstp(55)=10042; // (needed for CTEQ6L) -\end{itemize} - - -{\large \bf Random Numbers}\\ - - Pythia.cxx is using the AtRndmGenSvc Athena Service to provide to Pythia (via the pyr function, - found in Pythia\_i/src/pyr.F) the necessary random numbers. This service is using the RanecuEngine of CLHEP, - and is based on the ``stream'' logic, each stream being able to provide an idependent sequence of random - numbers. Pythia.cxx is using two streams: PYTHIA\_INIT and PYTHIA. The first stream is used to provide - random numbers for the initialization phase of Pythia and the second one for the event generation. The user - can set the initial seeds of each stream via the following option in the jobOption file. - - \begin{verbatim} - AtRndmGenSvc.Seeds = [``PYTHIA_INIT 2345533 9922199'', ``PYTHIA 5498921 659091''] - \end{verbatim} - - The above sets the seeds of the PYTHIA\_INIT stream to 2345533 and 9922199 and of the PYTHIA one to - 5498921 and 659091. If the user will not set the seeds of a stream then the AtRndmGenSvc will use default - values. - - The seeds of the Random number service are saved for each event in the HepMC Event record and they are printed - on screen by DumpMC. In this way an event can be reproduced easily. The user has to rerun the job by simply seting - the seeds of the PYTHIA stream (the seeds of the PYTHIA\_INIT stream should stay the same) to the seeds of that - event. - - Additionaly the AtRndmGenSvc is dumping into a file (AtRndmGenSvc.out) the seeds of all the streams at the end - of the job. This file can be read back by the service if the user set the option - \begin{verbatim} AtRndmGenSvc.ReadFromFile = True \end{verbatim} (default = False). In this case the file - AtRndmGenSvc.out is read and the streams saved in this file are created with seeds as in this file. The name of - the file to be read can be set by the user via the option - \begin{verbatim} AtRndmGenSvc.FileToRead = MyFileName \end{verbatim} - - The above file is also written out when a job crashes. - - The {\bf Pythia\_i/share/jobOptions.pythia.py } contains the above options.\\ - - {\large \bf User modifications}\\ - -Two types of user modifications are common - -\begin{itemize} -\item If you are trying to replace an existing routine that is in the - Pythia library this is straightforward. -Assume that you are trying to replace test.f that exists in Pythia. -Check out Pythia\_i under CMT, (use cmt co -r Pythia\_i-xx-xx-xx Generators/Pythia\_i where -xx-xx-xx is the version in the release that you are running against), put your version of test.f into the /src area of the checked out -code. Then in the /cmt area edit the requirements file and add test.f -into the list of files that get complied. Note that each generator has -its own library. You must therefore put your file in the right -place. For Pythia, here is the example. -\item If you want to access ``External Process''. This is done in - Pythia by setting ``USER''(see section 9.9 of the 6.4 Pythia - manual). External procesess usually read a file containting events. At present several externals are available, - CompHep, AcerMC, Alpgen, Matchig, HvGen, MadCUP, MadGraph, TopRex, GR@PPA, - and the fourth is a dummy that users can adapt to their - needs by following one of the examples above. To find out how to run these external processes - please refer to the documentation of these generators. \\ - To add your own external, create your own inituser.f and useuser.f, - put these filenames into the cmt/requirements so that they are built - into libPythia\_i.so and then rebuild the Pythia\_i package (cmt make) and then - set\\ - "pyinit user user'' - -{\large \bf Note on LHApdf stucture functions} - -In the case you want to run Pythia with the LHAPDF structure functions you need to -set the mstp(52), mstp(54) and mstp(56) variables equal to 2 and the mstp(51), -mstp(53) and mstp(55) ones to the LHAPDF set/member index (see the documentation -of the Generators/Lhapdf\_i package for the LHAPDF set/member index settings). - -\end{itemize} - - - -\end{document} - - - - - - - diff --git a/Generators/Pythia_i/doc/packagedoc.h b/Generators/Pythia_i/doc/packagedoc.h deleted file mode 100644 index 8e0ead5591dec579f7baa80415e19c2ed0c1208c..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/doc/packagedoc.h +++ /dev/null @@ -1,226 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -/** -@page Pythia_i_page Pythia_i - -@author Giorgios.Stavropoulos@cern.ch, Ian.Hinchliffe@cern.ch, Judith.Katzy@cern.ch, Liza Mijovic (at_cern.ch) - -@section Pythia_i_introductionPythia_i The interface between Pythia and Athena - -This package runs Pythia from within Athena, puts the events into the -transient store in HepMC format. See the documentation on Generators/GeneratorModules and <a href="https://twiki.cern.ch/twiki/bin/view/AtlasProtected/McGeneratorsOverview">ATLAS MC group wiki pages</a> -for general information. This note refers only to Pythia specific material. The External/Pythia package is used to set up the paths to the Pythia library which is pointing to the release maintained by -Genser. To see the Pythia version interfaced in a specific release check in the file External/Pythia/requirements the line 'macro pythia_native_version 412.2' . i.e. in release 13.0.30 pythia 6.412 has been used. - -The module is activated from the jobOptions service. The example jobOptions files are available inb Pythia_i/share/ directory. - -Pythia parameters can be set via the job options service. -Note that all parameters passed to Pythia are in the units - specified in the Pythia manual. In particular, energies and - masses are in GeV, not the standard atlas units of MeV. - -The following is needed if you wish to run Pythia: - -from Pythia_i.Pythia_iConf import Pythia -topAlg += Pythia() -Pythia = topAlg.Pythia - -The parameters are passed via the following line in the jobOptions.py -file. - -Pythia.PythiaCommand = ["common_block_name variable index value", -"common_block_name1 variable1 index1 value1"] - -Each quoted string sets one parameter. You can have as many as you like -seperated by commas. -common_block_name must be one of the following common block names and -must be in lower case. - -- pydat1 -- pydat2 -- pydat3 -- pysubs -- pypars -- pydatr -- pymssm -- pypued -- pymsrv -- pyint1 -- pyint2 -- pyint5 -- pytcsm - -The pyinit deals with parameters associated with the job setup, while the pystat one deals -with the setting of the print level of the PYSTAT routine (called at the end of the run).An error message is returned if the common block is not one of -these. The job continues to run but the behaviour may not be what you -expect. variable must be the variable name that you are adjusting. -Valid names are as follows (lower case is required): - -- for pydat1 -- mstu paru mstj and parj. Do not change mstu(11) (see below) -- for pydat2 -- kchg pmas parf and vckm -- for pydat3 -- mdcy mdme brat and kfdp -- for pysubs -- msel msub kfin and ckin -- for pypars -- mstp parp msti and pari -- for pydatr -- mrpy and rrpy -- for pymssm -- imss and rmss -- for pypued -- iued and rued -- for pymsrv -- rvlam rvlamp and rvlamb -- for pyint1 -- mint and vint -- for pyint2 -- iset kfpr coef and icol -- for pyint5 -- ngen and xsec -- for pytcsm -- - -The following do not correspond to a common block but the parsing is -similar: - -pyinit; access variable that are either passed in the call to PYINIT -or to variables that control the listing. The choices are - pyinit -- pbar (changes one of the incoming particles to pbar), user -(changes the process selection to user code for connection to external -processes, a string then specifies the specific procees, see -discussion of external processes below), FIXT which switches to fixed -target operation, win -(changes the center of mass energy, units are GeV) output (controls -redirection of output) pylisti (gives -the number to be passed to pylist on the setup) pylistf (gives -the number to be passed to pylist on the dumped events) dumpr (is two -integers specifying the range of events to be written out). - - -Settings in the pyinit groups should come before others. This - is essential if you are using an external process such as comphep or -AcerMC. -pystat sets the print level of the PYSTAT routine (called at the end of the run). - -Again an error message is returned if the common block is not one of -these. The job continues to run but the behaviour may not be what you -expect. - -The remainder of the values in the " " specify the indices (if any) of -the variable and the value that you are setting it to. The range of -the indices is as described in the Pythia manual (Do not try to be -clever and offset them). You must specify the indices and value -completely. The number of quantities that you must provide depends on -the variable. The order is "(first_index) (second_index) value"; if -there is no corresponding index, omit it. - There is currently minimal error checking here so you will get junk or a -core dump if you make a mistake. The variable and common block names are -parsed and checked. A message is sent to the Athena LOG if an error is -detected but the job does not abort. - -Examples should make it clear - -- "pysubs msel 13" will turn on Z/gamma+jet production -- "pysubs ckin 3 18." will set the minimum $p_T$ to 18 GeV -- "pypars mstp 43 2" will turn off the photon and Z/photon interference. -- "pyinit win 1800." changes the center of mass energy to 1800 GeV -Note that the entries are seperated by a single space and that reals -must have a decimal point. -- "pyinit pylisti 12" dumps all the particle and decay data (see pythia -manual) after initialization. -- "pyinit output junk.dat" causes all the pythia output to dump into a -file junk.dat (it resets mstu(11)) -- "pyinit pylistf 1 " dumps the complete event record for the specified -events -- "pyinit dumpr 3 12 " causes events 6 through 12 to be written out -``pystat 3 5 7'' sets the PYSTAT print levels. Pystat is called as many times -as integers after pystat. In the example, pystat will be called with prin-level 3 followed by -a call with print-level 5 and then by a call with print-level 7. The default is to call pystat -once with print-level 1. -- "pydat2 pmas 4000011 1 1000." will set the mass of particle with KF code 4000011 to 1000 GeV. -- WARNING: Someone has to give the KF and NOT the KC code. The KF code is converted (via a call to PYCOMP) to the KC code internally in Pythia.cxx - -@section Pythia_i_defaultparamsPythia_i Default Parameters - -The ATLAS settings for MC08 production were set in -Generators/EvgenJobOptions/share/MC8_Pythia_Common.py and some are inside Pythia.cxx. PYLIST is called as PYLIST(11) after initialization. Common parameters - for MC08 production are defined and documented on the MC Group Twiki at -https://twiki.cern.ch/twiki/bin/view/AtlasProtected/McProductionCommonParameters . -For MC09 production (15.2.0) the Pythia parameters are set by the interface in Pythia_i/src/atlasTune.cxx. -By default the MC09 tune for MRST2007lomod (LO* for MC) is enabled. The MC08 tune remains available for use with CTEQ6L1. -Both tunes are available as complete sets of Pythia parameters used/considered for tuning. Examples how the tunes are to be -used are available in Pythia_i/share directory. - -From Pythia_i-00-02-18 on PYGIVE (see Pythia Manual) calls are supported and support for seemless running of PYTUNE choice within Athena is added. -see Pythia_i/share/xxxx_tune_test_Zmumu_jO.py for examples. - -More info is available on the Atlas WiKi Pythia pages https://twiki.cern.ch/twiki/bin/view/AtlasProtected/PythiaForAtlas . - - -@section Pythia_i_randomPythia_i Random Numbers - - Pythia.cxx is using the AtRndmGenSvc Athena Service to provide to Pythia (via the pyr function, - found in Pythia_i/src/pyr.F) the necessary random numbers. This service is using the RanecuEngine of CLHEP, - and is based on the ``stream'' logic, each stream being able to provide an idependent sequence of random - numbers. Pythia.cxx is using two streams: PYTHIA_INIT and PYTHIA. The first stream is used to provide - random numbers for the initialization phase of Pythia and the second one for the event generation. The user - can set the initial seeds of each stream via the following option in the jobOption file. - - - AtRndmGenSvc.Seeds = [``PYTHIA_INIT 2345533 9922199'', ``PYTHIA 5498921 659091''] - - - The above sets the seeds of the PYTHIA_INIT stream to 2345533 and 9922199 and of the PYTHIA one to - 5498921 and 659091. If the user will not set the seeds of a stream then the AtRndmGenSvc will use default - values. - - The seeds of the Random number service are saved for each event in the HepMC Event record and they are printed - on screen by DumpMC. In this way an event can be reproduced easily. The user has to rerun the job by simply seting - the seeds of the PYTHIA stream (the seeds of the PYTHIA_INIT stream should stay the same) to the seeds of that - event. - - Additionaly the AtRndmGenSvc is dumping into a file (AtRndmGenSvc.out) the seeds of all the streams at the end - of the job. This file can be read back by the service if the user set the option - -AtRndmGenSvc.ReadFromFile = True - -(default = False). In this case the file - AtRndmGenSvc.out is read and the streams saved in this file are created with seeds as in this file. The name of - the file to be read can be set by the user via the option - - AtRndmGenSvc.FileToRead = MyFileName - - The above file is also written out when a job crashes. - - The Pythia_i/share/jobOptions.pythia.py contains the above options. - -@section Pythia_i_User User modifications - -Two types of user modifications are common - -- If you are trying to replace an existing routine that is in the - Pythia library this is straightforward. -Assume that you are trying to replace test.f that exists in Pythia. -Check out Pythia_i under CMT, (use cmt co -r Pythia_i-xx-xx-xx Generators/Pythia_i where -xx-xx-xx is the version in the release that you are running against), put your version of test.f into the /src area of the checked out -code. Then in the /cmt area edit the requirements file and add test.f -into the list of files that get complied. Note that each generator has -its own library. You must therefore put your file in the right -place. For Pythia, here is the example. - -- If you want to access ``External Process''. This is done in - Pythia by setting ``USER''(see section 9.9 of the 6.4 Pythia - manual). External procesess usually read a file containting events. At present several externals are available, - CompHep, AcerMC, Alpgen, Matchig, HvGen, MadCUP, MadGraph, TopRex, GR\@PPA, - and the fourth is a dummy that users can adapt to their - needs by following one of the examples above. To find out how to run these external processes - please refer to the documentation of these generators. - - To add your own external, create your own inituser.f and useuser.f, - put these filenames into the cmt/requirements so that they are built - into libPythia_i.so and then rebuild the Pythia_i package (cmt make) and then - set - - "pyinit user user'' - -@section Pythia_i_LHApdfPythia_i Note on LHApdf stucture functions - -In the case you want to run Pythia with the LHAPDF structure functions you need to -set the mstp(52), mstp(54) and mstp(56) variables equal to 2 and the mstp(51), -mstp(53) and mstp(55) ones to the LHAPDF set/member index (see the documentation -of the Generators/Lhapdf_i package for the LHAPDF set/member index settings). - - -*/ diff --git a/Generators/Pythia_i/share/ATUNE_pprintout.py b/Generators/Pythia_i/share/ATUNE_pprintout.py deleted file mode 100644 index e0fa29bb2a46c31665bbc67b2abdd6268e56484a..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/share/ATUNE_pprintout.py +++ /dev/null @@ -1,28 +0,0 @@ -#______________________________________________________________________________________________________________________ -# author: liza.mijovic@_nospam_cern.ch -# -# jO effect: dump the values of all PYTUNE parameters ATLAS tune sets - this jopts are meant for runnig with GET_TUNE_params.sh -# warning: particle masses and EW params are not included -# ______________________________________________________________________________________________________________________ - -from AthenaCommon.AlgSequence import AlgSequence -topAlg = AlgSequence("TopAlg") - -from Pythia_i.Pythia_iConf import Pythia -topAlg += Pythia() -Pythia = topAlg.Pythia - -theApp.EvtMax = 0 - -Pythia.Tune_Name="REPNAM_REPIND" - -PYDAT1_PARAMS=[ "MSTU", "PARU", "MSTJ", "PARJ" ] -PYPARS_PARAMS=[ "MSTP", "PARP", "MSTI", "PARI" ] -PYTUNE_PARAMS=PYDAT1_PARAMS+PYPARS_PARAMS - -PQ_LIST=[] -for i in PYTUNE_PARAMS: - PQ_LIST+=[i+"("+repr(x)+")=" for x in range(1,201)] - -Pythia.PygiveCommand += PQ_LIST -Pythia.Param_Query_AfterInit += PQ_LIST diff --git a/Generators/Pythia_i/share/DEF_pprintout.py b/Generators/Pythia_i/share/DEF_pprintout.py deleted file mode 100644 index 0463c6be032037b7be68b745e217bdd619305f83..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/share/DEF_pprintout.py +++ /dev/null @@ -1,29 +0,0 @@ -#______________________________________________________________________________________________________________________ -# author: liza.mijovic@_nospam_cern.ch -# -# jO effect: dump the values of all parameters PYTUNE can set - this jopts are meant for runnig with GET_PYTUNE_params.sh -# -# ______________________________________________________________________________________________________________________ - -from AthenaCommon.AlgSequence import AlgSequence -topAlg = AlgSequence("TopAlg") - -from Pythia_i.Pythia_iConf import Pythia -topAlg += Pythia() -Pythia = topAlg.Pythia - -theApp.EvtMax = 0 - -Pythia.Tune_Name="ATLAS_-1" # turn off ATLAS defaults -Pythia.PygiveCommand += [ "mstj(22)=2" ] # ATLAS stable particles convention - -PYDAT1_PARAMS=[ "MSTU", "PARU", "MSTJ", "PARJ" ] -PYPARS_PARAMS=[ "MSTP", "PARP", "MSTI", "PARI" ] -PYTUNE_PARAMS=PYDAT1_PARAMS+PYPARS_PARAMS - -PQ_LIST=[] -for i in PYTUNE_PARAMS: - PQ_LIST+=[i+"("+repr(x)+")=" for x in range(1,201)] - -Pythia.PygiveCommand += PQ_LIST -Pythia.Param_Query_AfterInit += PQ_LIST diff --git a/Generators/Pythia_i/share/GET_TUNE_params.sh b/Generators/Pythia_i/share/GET_TUNE_params.sh deleted file mode 100755 index a4a482cc956d9a7fb153468e39a2b101f6df3d66..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/share/GET_TUNE_params.sh +++ /dev/null @@ -1,123 +0,0 @@ -#!/bin/bash -#___________________________________________________________________________________________ -# author: liza.mijovic_at_nospam_cern.ch -# dump PYTUNE tune parameter settings to file TNAME_TINDEX_params.txt -# run like: (chmod +x GET_PYTUNE_params.sh) -# ./GET_PYTUNE_params.sh TNAME TINDEX -# TNAME should be replaced with either ATLAS or PYTUNE -# TINDEX should be replaced by tune's index (ATLAS tunes) or MSTP(5) value (PYTUNE tunes) -#___________________________________________________________________________________________ - -if [ "$1" == "-h" -o "$1" == "-help" ]; then - echo "" - echo "Script prints a list of parameters of a tune that differ from the Pythia defaults." - echo "" - echo "Run like: " - echo "./GET_PYTUNE_params.sh TNAME TINDEX [AI]" - echo "" - echo "TNAME = tune name; ATLAS or PYTUNE" - echo "- ATLAS : query params of ATLAS-internal tune implementation." - echo "- PYTUNE : query params of Pythia-internal tune implementation." - echo "" - echo "TINDEX = tune index" - echo "" - echo "AI (opt.) : pass anything to enable debug printout of parameter values after Pythia initialization." - echo "" - echo "Examples:" - echo "./GET_PYTUNE_params.sh ATLAS 20100001" - echo "./GET_PYTUNE_params.sh PYTUNE 327" - echo "./GET_PYTUNE_params.sh PYTUNE 20100001 AI " - echo "" - echo "Parameters are printed to file: TNAME_TINDEX_params.txt." - echo "" - exit 0 -fi - -if [ "$1" != "PYTUNE" -a "$1" != "ATLAS" ] || [ "$2" == "" ]; then - echo "Invalid script call; it should be e.g.:" - echo "" - echo "./GET_TUNE_params.sh ATLAS 20100001" - echo "./GET_TUNE_params.sh PYTUNE 327" - echo "" - echo "Run ./GET_TUNE_params.sh -h or ./GET_TUNE_params.sh -help for furhter help." - exit 0 -fi - -if [ "$1" == "PYTUNE" ]; then - cp PYTUNE_pprintout.py TUNE_pprintout_$2.py -else - cp ATUNE_pprintout.py TUNE_pprintout_$2.py -fi - -perl -e "s/REPNAM/$1/g;" -pi TUNE_pprintout_$2.py -perl -e "s/REPIND/$2/g;" -pi TUNE_pprintout_$2.py - -athena.py TUNE_pprintout_$2.py &> tprint_temp.out -grep -A 1599 MSTU\(1\) tprint_temp.out &> tprint_temp2.out -grep 'has the value' tprint_temp2.out &> before_init.out -mv before_init.out tprint_tune1.out -mv after_init.out tprint_tune2.out -rm tprint_temp2.out - -athena.py DEF_pprintout.py &> tprint_temp.out -grep -A 1599 MSTU\(1\) tprint_temp.out &> tprint_temp2.out -grep 'has the value' tprint_temp2.out &> before_init.out -mv before_init.out tprint_def1.out -mv after_init.out tprint_def2.out -rm tprint_temp2.out - -# tune index should not be set expliciltly [MSTP(5)] -diff tprint_tune1.out tprint_def1.out | grep -v 'MSTP(5)' | grep \< &> tprint_temp1.out -diff tprint_tune2.out tprint_def2.out | grep -v 'MSTP(5)' | grep \< &> tprint_temp2.out - -perl -e "s/<//g;" -pi tprint_temp1.out -perl -e "s/<//g;" -pi tprint_temp2.out -perl -e "s/has the value/=/g;" -pi tprint_temp1.out -perl -e "s/has the value/=/g;" -pi tprint_temp2.out - -# clean old files: -if [[ -s $1_$2_params.txt ]]; then - rm $1_$2_params.txt -fi -if [[ -s $1_$2_params_afterInit.txt ]]; then - rm $1_$2_params_afterInit.txt -fi - - -BAKIFS=$IFS -IFS=$(echo -en "\n\b") -exec 3<&0 -exec 0<tprint_temp1.out -nn=0 -while read line -do - let "nn += 1" - echo $line | tr -d ' ' >> $1_$2_params.txt -done -exec 0<&3 - -IFS=$BAKIFS - -if [ "$3" != "" ]; then -BAKIFS=$IFS -IFS=$(echo -en "\n\b") -exec 3<&0 -exec 0<tprint_temp2.out -nn=0 -while read line -do - let "nn += 1" - echo $line | tr -d ' ' >> $1_$2_params_afterInit.txt -done -exec 0<&3 -fi - -echo "The parameters of the $1 tune" $2 "have been printed to file" $1_$2_params.txt -if [ "$3" != "" ]; then - echo "Parameter diffs after the initialization have been printed to" $1_$2_params_afterInit.txt -fi - -#clean-up: -rm tprint_*.out TUNE_pprintout_$2.py - -exit 0 \ No newline at end of file diff --git a/Generators/Pythia_i/share/HERA_LQ_jO.py b/Generators/Pythia_i/share/HERA_LQ_jO.py deleted file mode 100644 index 051fbde3b77d146bf8c21f236e8e0b5e40742b9d..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/share/HERA_LQ_jO.py +++ /dev/null @@ -1,68 +0,0 @@ -#______________________________________________________________________________________________________________ -# author: liza.mijovic@_nospam_cern.ch -# generate 10 LQ Pythia events at HERA, demonstrating the use of new pyinit block use_PYINIT for 3mom frame -# source (physics contents of the setup): Pythia Examples http://projects.hepforge.org/pythia6/examples/ -#______________________________________________________________________________________________________________ - -from AthenaCommon.AlgSequence import AlgSequence -topAlg = AlgSequence("TopAlg") - -from Pythia_i.Pythia_iConf import Pythia -topAlg += Pythia() -Pythia = topAlg.Pythia - -theApp.EvtMax = 1000 - -from AthenaServices.AthenaServicesConf import AtRndmGenSvc -ServiceMgr += AtRndmGenSvc() -ServiceMgr.AtRndmGenSvc.Seeds = ["PYTHIA 4789899 989240512", - "PYTHIA_INIT 820021 2347532"] -#------------------------------------------------------------------------------------------------------------- -# initialization setup: -#------------------------------------------------------------------------------------------------------------- -# general Athena syntax is : -# Pythia.PythiaCommand +=["pyinit use_PYINIT FRAME BEAM TARGET WIN"] -# which is translated to PYTHIA PYINIT SUBROUTINE CALL as: -# PYINIT(FRAME,BEAM,TARGET,WIN) -# allowed FRAME BEAM TARGET WIN values are same as for Pythia standalone running -# when using pyinit use_PYINIT please make sure that: -# 1) all four FRAME BEAM TARGET WIN values are passed, even if some of them correspond to LHC defaults -# 2) WIN is passed as a double (i.e. not as an integer) -# 3) info on the Athena and PYTHIA setup can be checked is printed-out before event generation is started -#------------------------------------------------------------------------------------------------------------- -# HERA-specific : -# 3mom frame: need to set beam and target's P-vectors explicitly, -# need to set beam and target's P-vectors explicitly, -# PYJETS commonblock not accessible via PythiaCommand += syntax, but only via PYGIVE -Pythia.PygiveCommand += [ "P(1,1)=0.0", - "P(1,2)=0.0", - "P(1,3)=-27.5", - "P(2,1)=0.0", - "P(2,2)=0.0", - "P(2,3)=820.0"] -# e+, p beam and target - can use any PYTHIA-supported syntax to specify these -Pythia.PythiaCommand +=["pyinit use_PYINIT 3mom e+ p 0.0"] - -#------------------------------------------------------------------------------------------------------------- -#using PYGIVE (ATLAS independant syntax for params.) -Pythia.PygiveCommand += [ "msel=0", # Users decay choice. - "msub(145)=1", # LQ process - "pmas(39,1)=200.0", # LQ mass - "kfdp(539,1)=2", # quark species - "kfdp(539,2)=-11", # lepton species - "paru(151)=0.01", # LQ Yukawa coupling value - "mstj(50)=0", # no initial and final state partons interference due to long LQ lifetime - "mstp(67)=0" - ] - -#------------------------------------------------------------------------------------------------------------- -# our pp tuned parameters might as well be worse as defaults ... -# use no ATLAS parameter settings -#Pythia.Tune_Name="ATLAS_0" : you'll get TestHepMC crashes by doing this only -# use only recommended ATLAS parameter settings (i.e. the ones necessary for succsfull && consistent simulation within Athena) -Pythia.Tune_Name="ATLAS_-1" # keep ER structure and new PS/MI ... see .log file for exact parameters settings -# use recommended + common (PDF, mass, MI schema etc., but not parameters commonly used for tuning) ATLAS parameter -#Pythia.Tune_Name="ATLAS_-2" -#______________________________________________________________________________________________________________ - - diff --git a/Generators/Pythia_i/share/JobOptions.pythiaUED.py b/Generators/Pythia_i/share/JobOptions.pythiaUED.py deleted file mode 100644 index cf44ca911fb6fd33b318fe2dc15dc0f559c5eb9e..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/share/JobOptions.pythiaUED.py +++ /dev/null @@ -1,77 +0,0 @@ -######################################### -# r14 example jO -# Pythia 6.4.20 UED swicthes description -######################################### -# -# Integer switches -# -# IUED(1) = The main UED ON(=1)/OFF(=0) switch -# Default value = 0 -# -# IUED(2) = On/Off switch for the extension to (N+4)-dimensional gravity -# (switching it on enables gravity-mediated LKP decay): ON(=1)/OFF(=0) -# Default value = 0 -# -# IUED(3) = The number of KK excitation quark flavors -# Default value = 5 -# -# IUED(4) = N, the number of large extra dimensions where only the graviton propagates. -# Only used when IUED(2)=1. -# Default value = 6 (can be set to 2, 4 or 6) -# -# IUED(5) = Selects whether the code takes Lambda (=0) or Lambda*R (=1) as input. -# See also {RUED(3:4)}. -# Default value = 0 -# -# IUED(6) = Selects whether the KK particle masses include radiative corrections (=1) -# or are nearly degenerate m_KK ~ 1/R (=0). -# Default value = 1 -# -# Real switches -# -# RUED(1) = 1/R, the curvature of the extra dimension -# Default value = 1000 GeV -# -# RUED(2) = M_D, the (4+N)-dimensional Planck scale. Only used when IUED(2)=1. -# Default value = 5000 GeV -# -# RUED(3) = Lambda, the cutoff scale. Used when IUED(5)=0. -# Default value = 20000 GeV -# -# RUED(4) = Lambda*R, the cutoff scale times the radius of the extra dimension. -# Used when IUED(5)=1. -# Default value = 20 - -from AthenaCommon.AlgSequence import AlgSequence -topAlg = AlgSequence("TopAlg") - -include ( "EvgenJobOptions/MC8_Pythia_Common.py" ) - -theApp.EvtMax = 10 - - -from AthenaServices.AthenaServicesConf import AtRndmGenSvc -ServiceMgr += AtRndmGenSvc() -ServiceMgr.AtRndmGenSvc.Seeds = ["PYTHIA 4789899 989240512", - "PYTHIA_INIT 820021 2347532"] - -Pythia.PythiaCommand += ["pysubs msel 0", - "pyinit win 10000", - "pypued iued 1 1", # turn ON UED =1 - "pypued iued 2 1", # turn ON =1 gravity mediated decays - "pypued iued 3 5", # number of KK quark flavors = 5 - "pypued iued 4 6", # number or large extra dimensions = 6 for grav.med.deca. - "pypued iued 5 1", # Lambda*R is fixed to the RUED(4) value - "pypued iued 6 1", # KK masses radiative corrections turned ON - "pysubs msub 311 1", # all - "pysubs msub 312 1", # UED - "pysubs msub 313 1", # production - "pysubs msub 314 1", # processes - "pysubs msub 315 1", # are - "pysubs msub 316 1", # turned - "pysubs msub 317 1", # ON - "pysubs msub 318 1", # - "pysubs msub 319 1", # - "pypued rued 1 1000", # 1/R = 1000 GeV - "pypued rued 2 5000.", # M_D = 5000 GeV for grav.med.dec. - "pypued rued 3 20000."] # Lambda = 20000 GeV if IUED(5)=0 diff --git a/Generators/Pythia_i/share/JobOptions.pythiaUEDmc09.py b/Generators/Pythia_i/share/JobOptions.pythiaUEDmc09.py deleted file mode 100644 index 47be1ee03558412ccb5ae49b5cce277b73782b0a..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/share/JobOptions.pythiaUEDmc09.py +++ /dev/null @@ -1,82 +0,0 @@ -######################################### -# r>15.2.0 example jO -# Pythia 6.4.20 UED swicthes description -######################################### -# -# Integer switches -# -# IUED(1) = The main UED ON(=1)/OFF(=0) switch -# Default value = 0 -# -# IUED(2) = On/Off switch for the extension to (N+4)-dimensional gravity -# (switching it on enables gravity-mediated LKP decay): ON(=1)/OFF(=0) -# Default value = 0 -# -# IUED(3) = The number of KK excitation quark flavors -# Default value = 5 -# -# IUED(4) = N, the number of large extra dimensions where only the graviton propagates. -# Only used when IUED(2)=1. -# Default value = 6 (can be set to 2, 4 or 6) -# -# IUED(5) = Selects whether the code takes Lambda (=0) or Lambda*R (=1) as input. -# See also {RUED(3:4)}. -# Default value = 0 -# -# IUED(6) = Selects whether the KK particle masses include radiative corrections (=1) -# or are nearly degenerate m_KK ~ 1/R (=0). -# Default value = 1 -# -# Real switches -# -# RUED(1) = 1/R, the curvature of the extra dimension -# Default value = 1000 GeV -# -# RUED(2) = M_D, the (4+N)-dimensional Planck scale. Only used when IUED(2)=1. -# Default value = 5000 GeV -# -# RUED(3) = Lambda, the cutoff scale. Used when IUED(5)=0. -# Default value = 20000 GeV -# -# RUED(4) = Lambda*R, the cutoff scale times the radius of the extra dimension. -# Used when IUED(5)=1. -# Default value = 20 - -from AthenaCommon.AlgSequence import AlgSequence -topAlg = AlgSequence("TopAlg") - -from Pythia_i.Pythia_iConf import Pythia -topAlg += Pythia() -Pythia = topAlg.Pythia - -theApp.EvtMax = 10 - -from AthenaServices.AthenaServicesConf import AtRndmGenSvc -ServiceMgr += AtRndmGenSvc() -ServiceMgr.AtRndmGenSvc.Seeds = ["PYTHIA 4789899 989240512", - "PYTHIA_INIT 820021 2347532"] - -Pythia.PythiaCommand += ["pysubs msel 0", - #"pyinit win 10000", default for r>15.2.0 - "pypued iued 1 1", # turn ON UED =1 - "pypued iued 2 1", # turn ON =1 gravity mediated decays - "pypued iued 3 5", # number of KK quark flavors = 5 - "pypued iued 4 6", # number or large extra dimensions = 6 for grav.med.deca. - "pypued iued 5 1", # Lambda*R is fixed to the RUED(4) value - "pypued iued 6 1", # KK masses radiative corrections turned ON - "pysubs msub 311 1", # all - "pysubs msub 312 1", # UED - "pysubs msub 313 1", # production - "pysubs msub 314 1", # processes - "pysubs msub 315 1", # are - "pysubs msub 316 1", # turned - "pysubs msub 317 1", # ON - "pysubs msub 318 1", # - "pysubs msub 319 1", # - "pypued rued 1 1000", # 1/R = 1000 GeV - "pypued rued 2 5000.", # M_D = 5000 GeV for grav.med.dec. - "pypued rued 3 20000."] # Lambda = 20000 GeV if IUED(5)=0 - -#uncomment these for MC08 tune -#Pythia.useAtlasPythiaTune09=False -#Pythia.useAtlasPythiaTune08=True diff --git a/Generators/Pythia_i/share/LEP_Zee_jO.py b/Generators/Pythia_i/share/LEP_Zee_jO.py deleted file mode 100644 index 5cd00a9ad50703c43395cf733271489c8093c725..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/share/LEP_Zee_jO.py +++ /dev/null @@ -1,65 +0,0 @@ -#______________________________________________________________________________________________________________ -# author: liza.mijovic@_nospam_cern.ch -# generate 1000 Zmumu Pythia events at LEP, demonstrating the use of new pyinit block use_PYINIT for e+ e- beams -#______________________________________________________________________________________________________________ - -from AthenaCommon.AlgSequence import AlgSequence -topAlg = AlgSequence("TopAlg") - -from Pythia_i.Pythia_iConf import Pythia -topAlg += Pythia() -Pythia = topAlg.Pythia - -theApp.EvtMax = 1000 - -from AthenaServices.AthenaServicesConf import AtRndmGenSvc -ServiceMgr += AtRndmGenSvc() -ServiceMgr.AtRndmGenSvc.Seeds = ["PYTHIA 4789899 989240512", - "PYTHIA_INIT 820021 2347532"] -#------------------------------------------------------------------------------------------------------------- -# initialization setup: -#------------------------------------------------------------------------------------------------------------- -# general Athena syntax is : -# Pythia.PythiaCommand +=["pyinit use_PYINIT FRAME BEAM TARGET WIN"] -# which is translated to PYTHIA PYINIT SUBROUTINE CALL as: -# PYINIT(FRAME,BEAM,TARGET,WIN) -# allowed FRAME BEAM TARGET WIN values are same as for Pythia standalone running -# when using pyinit use_PYINIT please make sure that: -# 1) all four FRAME BEAM TARGET WIN values are passed, even if some of them correspond to LHC defaults -# 2) WIN is passed as a double (i.e. not as an integer) -# 3) info on the Athena and PYTHIA setup can be checked is printed-out before event generation is started -#------------------------------------------------------------------------------------------------------------- -# LEP-specific initialization: -# also set frame even though it it the same as default (needed for PythiaCommand vector parsing) -# set beam and target to e+ and e- -# set win to 91.2 GeV -Pythia.PythiaCommand +=["pyinit use_PYINIT CMS e+ e- 91.2"] - -#------------------------------------------------------------------------------------------------------------- -#using PYGIVE (ATLAS independant syntax for params.) -Pythia.PygiveCommand += [ "msel=0", # Users decay choice. - "parj(90)=20000", # Turn off FSR. - "mdcy(15,1)=0", # Turn off tau decays. - "msub(1)=1", # Create Z bosons. - "ckin(1)=60.0", # Lower invariant mass. - "mdme(174,1)=0", - "mdme(175,1)=0", - "mdme(176,1)=0", - "mdme(177,1)=0", - "mdme(178,1)=0", - "mdme(179,1)=0", - "mdme(182,1)=0", # Switch for Z->ee. - "mdme(183,1)=0", - "mdme(184,1)=1", # Switch for Z->mumu. - "mdme(185,1)=0", - "mdme(186,1)=0", # Switch for Z->tautau. - "mdme(187,1)=0"] -#------------------------------------------------------------------------------------------------------------- -# our pp tuned parameters might as well be worse as defaults ... -# use no ATLAS parameter settings -#Pythia.Tune_Name="ATLAS_0" : you'll get TestHepMC crashes by doing this only -# use only recommended ATLAS parameter settings (i.e. the ones necessary for succsfull && consistent simulation within Athena) -Pythia.Tune_Name="ATLAS_-1" # keep ER structure and new PS/MI ... see .log file for exact parameters settings -# use recommended + common (PDF, mass, MI schema etc., but not parameters commonly used for tuning) ATLAS parameter -#Pythia.Tune_Name="ATLAS_-2" -#______________________________________________________________________________________________________________ diff --git a/Generators/Pythia_i/share/MC10.109236.PythiaZtautaull_2Leptons_CSSF.py b/Generators/Pythia_i/share/MC10.109236.PythiaZtautaull_2Leptons_CSSF.py deleted file mode 100644 index 9734bf688c1b7691ab8b91fc5510d1856df8340d..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/share/MC10.109236.PythiaZtautaull_2Leptons_CSSF.py +++ /dev/null @@ -1,69 +0,0 @@ -#________________________________________________________________________________________ -# -# Auth.: liza.mijovic_at_nospam.cern.ch -# example how to use CrossSectionScaleFactor property that multiplites x-section -# for the MetaData printout by a num. factor -# -# use-case: Pythia Z->tautau -> lept. decay with 2lepEF (lep=e,mu) -# tau BR determined by Tauola and is not picked by Pythia => wrong AMI value -# => take BR into account at jO level by setting CrossSectionScaleFactor -# -#________________________________________________________________________________________ -from AthenaCommon.AlgSequence import AlgSequence -topAlg = AlgSequence("TopAlg") - -# ... Pythia -include ( "MC10JobOptions/MC10_Pythia_Common.py" ) -#________________________________________________________________________________________ -# Proc. setup -#________________________________________________________________________________________ -Pythia.PythiaCommand += [ "pysubs msel 0", - "pydat1 parj 90 20000", # Turn off FSR. - "pydat3 mdcy 15 1 0", # Turn off tau decays. - "pysubs msub 1 1", # Create Z bosons. - "pysubs ckin 1 60.0", # Lower invariant mass. - "pydat3 mdme 174 1 0", - "pydat3 mdme 175 1 0", - "pydat3 mdme 176 1 0", - "pydat3 mdme 177 1 0", - "pydat3 mdme 178 1 0", - "pydat3 mdme 179 1 0", - "pydat3 mdme 182 1 0", # Switch for Z->ee. - "pydat3 mdme 183 1 0", - "pydat3 mdme 184 1 0", # Switch for Z->mumu. - "pydat3 mdme 185 1 0", - "pydat3 mdme 186 1 1", # Switch for Z->tautau. - "pydat3 mdme 187 1 0", - "pydat3 mdme 188 1 0", - "pydat3 mdme 189 1 0" - ] -#________________________________________________________________________________________ -# Part. Decay done by Gen-s other than Pythia -#________________________________________________________________________________________ -# ... Tauola -include ( "MC10JobOptions/MC10_Tauola_Fragment_LeptonicDecay.py" ) -# multiplicative factor for AMI MetaData -Pythia.CrossSectionScaleFactor=0.1277 - -# ... Photos -include ( "MC10JobOptions/MC10_Photos_Fragment.py" ) -#________________________________________________________________________________________ -# Filter -#________________________________________________________________________________________ - -from GeneratorFilters.GeneratorFiltersConf import MultiLeptonFilter -topAlg += MultiLeptonFilter() - -MultiLeptonFilter = topAlg.MultiLeptonFilter -MultiLeptonFilter.Ptcut = 5000. -MultiLeptonFilter.Etacut = 3.0 -MultiLeptonFilter.NLeptons = 2 - -try: - StreamEVGEN.RequireAlgs += [ "MultiLeptonFilter" ] -except Exception, e: - pass -#________________________________________________________________________________________ -from MC10JobOptions.PythiaEvgenConfig import evgenConfig -evgenConfig.efficiency = 0.34 -#________________________________________________________________________________________ diff --git a/Generators/Pythia_i/share/MC10.117960.MadGraph_TT_250010_SetCS.py b/Generators/Pythia_i/share/MC10.117960.MadGraph_TT_250010_SetCS.py deleted file mode 100644 index f9586d8452b45475777e863dcd78b40e40ceb4e8..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/share/MC10.117960.MadGraph_TT_250010_SetCS.py +++ /dev/null @@ -1,68 +0,0 @@ -# jO version showing how to manually set the crosssection value for the MetaData printout -# using the SetCrossSection property - -from AthenaCommon.AlgSequence import AlgSequence -topAlg = AlgSequence("TopAlg") - -# --> use the following pythia tune if CTEQ6l1 pdf has been used -include ( "MC10JobOptions/MC10_PythiaMC09p_Common.py" ) - -Pythia.PythiaCommand += [ "pyinit user madgraph", - "pyinit pylisti -1","pyinit pylistf 1","pyinit dumpr 1 2", - "pydat1 parj 90 20000", # Turn off FSR. - "pydat3 mdcy 15 1 0" # Turn off tau decays. - ] - -# set x before filtering efficiency in [nb] manually; -#Pythia.SetCrossSection=3190.0 - -## ... Tauola -include ( "MC10JobOptions/MC10_Tauola_Fragment.py" ) - -## ... Photos -include ( "MC10JobOptions/MC10_Photos_Fragment.py" ) - -# MultiLeptonFilter -from GeneratorFilters.GeneratorFiltersConf import MultiLeptonFilter -topAlg += MultiLeptonFilter() - -MultiLeptonFilter = topAlg.MultiLeptonFilter -MultiLeptonFilter.Ptcut = 15.*GeV -MultiLeptonFilter.Etacut = 2.7 -MultiLeptonFilter.NLeptons = 1 - -#--------------------------------------------------------------- -# POOL / Root output -#--------------------------------------------------------------- -try: - StreamEVGEN.RequireAlgs += [ "MultiLeptonFilter" ] -except Exception, e: - pass - -from MC10JobOptions.PythiaEvgenConfig import evgenConfig -#from MC10JobOptions.MadGraphEvgenConfig import evgenConfig - -evgenConfig.generators += ["MadGraph", "Pythia"] -evgenConfig.inputfilebase = 'MadGraph' -try: - if runArgs.ecmEnergy == 7000.0: - evgenConfig.inputfilebase = 'group10.phys-gener.MadGraph.117960.TT_250_010_7TeV.TXT.v3' - if runArgs.ecmEnergy == 8000.0: - evgenConfig.inputfilebase = 'group10.phys-gener.MadGraph.117960.TT_250_010_8TeV.TXT.v1' - if runArgs.ecmEnergy == 10000.0: - evgenConfig.inputfilebase = 'group10.phys-gener.MadGraph.117960.TT_250_010_10TeV.TXT.v1' - if runArgs.ecmEnergy == 14000.0: - evgenConfig.inputfilebase = 'group10.phys-gener.MadGraph.117960.TT_250_010_14TeV.TXT.v1' -except NameError: - pass -evgenConfig.efficiency = 0.08 - -phojf=open('./pythia_card.dat', 'w') -phojinp = """ -! exclusive or inclusive matching - IEXCFILE=0 - showerkt=T - qcut=20 - """ -phojf.write(phojinp) -phojf.close() diff --git a/Generators/Pythia_i/share/MC10_pygive_test_Zmumu_jO.py b/Generators/Pythia_i/share/MC10_pygive_test_Zmumu_jO.py deleted file mode 100644 index 598bb0dfa4a28a2002282efcc89bc4baf1364c77..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/share/MC10_pygive_test_Zmumu_jO.py +++ /dev/null @@ -1,73 +0,0 @@ -#_________________________________________________________________________________ -# Jul. 09 -# LM: parameters setup using PYGIVE example -# generate Zmumu Pythia events using mc09 tune for MRST2007lomod (LO* for MC) -# 1. setup Z production using PYGIVE calls -#_________________________________________________________________________________ - -from AthenaCommon.AlgSequence import AlgSequence -topAlg = AlgSequence("TopAlg") - -from Pythia_i.Pythia_iConf import Pythia -topAlg += Pythia() -Pythia = topAlg.Pythia - -theApp.EvtMax = 10 - -from AthenaServices.AthenaServicesConf import AtRndmGenSvc -ServiceMgr += AtRndmGenSvc() -ServiceMgr.AtRndmGenSvc.Seeds = ["PYTHIA 4789899 989240512", - "PYTHIA_INIT 820021 2347532"] - -# set MC09: -Pythia.Tune_Name="ATLAS_20100001" - -#_________________________________________________________________________________ - -#1. setup Z production using PYGIVE calls -#--------------------------------------------------------------------------------- -#using PythiaCommand -#Pythia.PythiaCommand += [ "pysubs msel 0", # Users decay choice. -# "pydat1 parj 90 20000", # Turn off FSR. -# "pydat3 mdcy 15 1 0", # Turn off tau decays. -# "pysubs msub 1 1", # Create Z bosons. -# "pysubs ckin 1 60.0", # Lower invariant mass. -# "pydat3 mdme 174 1 0", -# "pydat3 mdme 175 1 0", -# "pydat3 mdme 176 1 0", -# "pydat3 mdme 177 1 0", -# "pydat3 mdme 178 1 0", -# "pydat3 mdme 179 1 0", -# "pydat3 mdme 182 1 0", # Switch for Z->ee. -# "pydat3 mdme 183 1 0", -# "pydat3 mdme 184 1 1", # Switch for Z->mumu. -# "pydat3 mdme 185 1 0", -# "pydat3 mdme 186 1 0", # Switch for Z->tautau. -# "pydat3 mdme 187 1 0"] -#--------------------------------------------------------------------------------- -#using PYGIVE -Pythia.PygiveCommand += [ "msel=0", # Users decay choice. - "parj(90)=20000", # Turn off FSR. - "mdcy(15,1)=0", # Turn off tau decays. - "msub(1)=1", # Create Z bosons. - "ckin(1)=60.0", # Lower invariant mass. - "mdme(174,1)=0", - "mdme(175,1)=0", - "mdme(176,1)=0", - "mdme(177,1)=0", - "mdme(178,1)=0", - "mdme(179,1)=0", - "mdme(182,1)=0", # Switch for Z->ee. - "mdme(183,1)=0", - "mdme(184,1)=1", # Switch for Z->mumu. - "mdme(185,1)=0", - "mdme(186,1)=0", # Switch for Z->tautau. - "mdme(187,1)=0"] -#--------------------------------------------------------------------------------- - -# ... Tauola -#include ( "EvgenJobOptions/MC10_Tauola_Fragment.py" ) - -# ... Photos -#include ( "EvgenJobOptions/MC10_Photos_Fragment.py" ) - diff --git a/Generators/Pythia_i/share/MC11.108407.Pythia_directJpsimu4mu4_jPsi_wgt.py b/Generators/Pythia_i/share/MC11.108407.Pythia_directJpsimu4mu4_jPsi_wgt.py deleted file mode 100644 index 0f8ff4df7ac7d2f6bd8688914890f48436134e31..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/share/MC11.108407.Pythia_directJpsimu4mu4_jPsi_wgt.py +++ /dev/null @@ -1,207 +0,0 @@ -############################################################### -# PRODUCTION SYSTEM FRAGMENT -# jobOptions for quarkonium production in the -# NRQCD colour-octet framework -# Author: Darren D Price ( Darren.Price@cern.ch ) -# Date: Jun 2006 -# Modified: Oct 2006, Oct 2009 E. Bouhova -#============================================================== - -#-------------------------------------------------------------- -# Private Application Configuration options -#-------------------------------------------------------------- -from MC11JobOptions.PythiaEvgenConfig import evgenConfig -evgenConfig.efficiency = 0.0003 - -from AthenaCommon.AlgSequence import AlgSequence -topAlg = AlgSequence("TopAlg") - -include ( "MC11JobOptions/MC11_Pythia_Common.py" ) - -from GeneratorFilters.GeneratorFiltersConf import BSignalFilter -topAlg += BSignalFilter() - - -Pythia.PythiaCommand += [ # quarkonium processes - - #"pysubs msel 0", # user chooses decay mode(s) - "pysubs msel 61", # colour octet charmonium production (421-439) - #"pysubs msel 62", # colour octet bottomonium production (461-479) - #"pysubs msel 63", # colour octet onium production (msel 61+62) - - # ----- J/Psi production ----- - # --- 3S1(1) - #"pysubs msub 421 1", # gg->cc~[3S1(1)]+g - # --- 3S1(8) - #"pysubs msub 422 1", # gg->cc~[3S1(8)]+g - #"pysubs msub 425 1", # gq->q+cc~[3S1(8)] - #"pysubs msub 428 1", # qq~->g+cc~[3S1(8)] - # --- 1S0(8) - #"pysubs msub 423 1", # gg->cc~[1S0(8)]+g - #"pysubs msub 426 1", # gq->q+cc~[1S0(8)] - #"pysubs msub 429 1", # qq~->g+cc~[1S0(8)] - # --- 3PJ(8) - #"pysubs msub 424 1", # gg->cc~[3PJ(8)]+g - #"pysubs msub 427 1", # gq->q+cc~[3PJ(8)] - #"pysubs msub 430 1", # qq~->g+cc~[3PJ(8)] - - # ----- Chi's ----- - #"pysubs msub 431 1", # gg->cc~[3P0(1)]+g - #"pysubs msub 432 1", # gg->cc~[3P1(1)]+g - #"pysubs msub 433 1", # gg->cc~[3P2(1)]+g - #"pysubs msub 434 1", # qg->q+cc~[3P0(1)] - #"pysubs msub 435 1", # qg->q+cc~[3P1(1)] - #"pysubs msub 436 1", # qg->q+cc~[3P2(1)] - #"pysubs msub 437 1", # qq~->cc~[3P0(1)]+g - #"pysubs msub 438 1", # qq~->cc~[3P1(1)]+g - #"pysubs msub 439 1", # qq~->cc~[3P2(1)]+g - - # ----- Upsilon production ----- - # --- 3S1(1) - #"pysubs msub 461 1", # gg->bb~[3S1(1)]+g - # --- 3S1(8) - #"pysubs msub 462 1", # gg->bb~[3S1(8)]+g - #"pysubs msub 465 1", # gq->q+bb~[3S1(8)] - #"pysubs msub 468 1", # qq~->g+bb~[3S1(8)] - # --- 1S0(8) - #"pysubs msub 463 1", # gg->bb~[1S0(8)]+g - #"pysubs msub 466 1", # gq->q+bb~[1S0(8)] - #"pysubs msub 469 1", # qq~->g+bb~[1S0(8)] - # --- 3PJ(8) - #"pysubs msub 464 1", # gg->bb~[3PJ(8)]+g - #"pysubs msub 467 1", # gq->q+bb~[3PJ(8)] - #"pysubs msub 470 1", # qq~->g+bb~[3PJ(8)] - - # ----- Chi's ----- - #"pysubs msub 471 1", # gg->bb~[3P0(1)]+g - #"pysubs msub 472 1", # gg->bb~[3P1(1)]+g - #"pysubs msub 473 1", # gg->bb~[3P2(1)]+g - #"pysubs msub 474 1", # qg->q+bb~[3P0(1)] - #"pysubs msub 475 1", # qg->q+bb~[3P1(1)] - #"pysubs msub 476 1", # qg->q+bb~[3P2(1)] - #"pysubs msub 477 1", # qq~->bb~[3P0(1)]+g - #"pysubs msub 478 1", # qq~->bb~[3P1(1)]+g - #"pysubs msub 479 1", # qq~->bb~[3P2(1)]+g - - ] - -Pythia.PythiaCommand += [ # force decays - - "pydat3 mdme 858 1 0", # J/psi->e+e- - "pydat3 mdme 859 1 1", # J/psi->mumu (br 0.06) - "pydat3 mdme 860 1 0", # J/psi->rndmflavpairs - - #"pydat3 mdme 1501 1 1", # chi0c->J/psi gamma (br 0.007) - #"pydat3 mdme 1502 1 0", # chi0c->rfp - - #"pydat3 mdme 1555 1 1", # chi1c->J/psi gamma (br 0.273) - #"pydat3 mdme 1556 1 0", # chi1c->rfp - - #"pydat3 mdme 861 1 1", # chi2c->J/psi gamma (br 0.135) - #"pydat3 mdme 862 1 0", # chi2c->rfp - - #"pydat3 mdme 1034 1 0", # Upsilon->e+e- (br 0.0254) - #"pydat3 mdme 1035 1 1", # Upsilon->mu+mu- (br 0.0248) - #"pydat3 mdme 1036 1 0", # Upsilon->tau+tau- (br 0.0267) - #"pydat3 mdme 1037 1 0", # Upsilon->ddbar - #"pydat3 mdme 1038 1 0", # Upsilon->uubar - #"pydat3 mdme 1039 1 0", # Upsilon->ssbar - #"pydat3 mdme 1040 1 0", # Upsilon->ccbar - #"pydat3 mdme 1041 1 0", # Upsilon->ggg - #"pydat3 mdme 1042 1 0", # Upsilon->gamma gg - - #"pydat3 mdme 1520 1 1", # chi0b->Upsilon gamma (br 0.02) - #"pydat3 mdme 1521 1 0", # chi0b->gg - - #"pydat3 mdme 1565 1 1", # chi1b->Upsilon gamma (br 0.35) - #"pydat3 mdme 1566 1 0", # chi1b->gg - - #"pydat3 mdme 1043 1 1", # chi2b->Upsilon gamma (br 0.22) - #"pydat3 mdme 1044 1 0", # chi2b->gg - - ] - -Pythia.PythiaCommand += [ # NRQCD matrix elements - - "pypars parp 141 1.16", # Jpsi-3S1(1) NRQCD ME - "pypars parp 142 0.0119", # Jpsi-3S1(8) NRQCD ME - "pypars parp 143 0.01", # Jpsi-1S0(8) NRQCD ME - "pypars parp 144 0.01", # Jpsi-3P0(8) NRQCD ME / m_c^2 - "pypars parp 145 0.05", # chi_c0-3P0(1) NRQCD ME / m_c^2 - - "pypars parp 146 9.28", # Upsilon-3S1(1) NRQCD ME - "pypars parp 147 0.15", # Upsilon-3S1(8) NRQCD ME - "pypars parp 148 0.02", # Upsilon-1S0(8) NRQCD ME - "pypars parp 149 0.02", # Upsilon-3P0(8) NRQCD ME / m_b^2 - "pypars parp 150 0.085", # chi_b0-3P0(1) NRQCD ME / m_b^2 - - ] - -#Pythia.PythiaCommand += [ ### Moraes tunings (here for reference only) - -# "pypars mstp 70 2", -# "pypars mstp 72 0", - -# "pypars mstp 81 1", -# "pypars mstp 82 4", - -# "pypars mstp 84 1", -# "pypars mstp 85 1", -# "pypars mstp 86 2", -# "pypars mstp 87 4", -# "pypars mstp 88 0", -# "pypars mstp 89 1", -# "pypars mstp 90 1", - -# "pypars mstp 95 1", - -# "pypars parp 78 0.2", -# "pypars parp 80 0.01", -# "pypars parp 82 1.9", -# "pypars parp 83 0.3", -# "pypars parp 84 0.5", -# "pypars parp 89 1800", -# "pypars parp 90 0.22", - -# "pydat1 parj 81 0.14", - -# ] - - -Pythia.PythiaCommand += [ - - "pysubs ckin 3 1.", # lower pT cut on hard process in GeV - - #"pypars mstp 61 0", # inital state showers off - #"pypars mstp 71 0", # final state showers off - #"pypars mstp 111 0" # fragmentation/hadronisation off - - ] - -Pythia.PythiaCommand += ["pyinit pylistf 1", - "pystat mstat 1", - "pyinit dumpr 0 3",#dump this event range to screen - ] - -Pythia.PythiaCommand += ["pypars mstp 142 1", # Enable event weighting - "pypevwt ievwt 1 5" ] # select bug fix for J/psi + Upsilon - - -#------- Muon Trigger Cuts -------- -BSignalFilter = topAlg.BSignalFilter -#-------------- Level 1 Muon Cuts --------------------- -BSignalFilter.LVL1MuonCutOn = True -BSignalFilter.LVL1MuonCutPT = 4000.0 -BSignalFilter.LVL1MuonCutEta = 2.5 -#-------------- Level 2 lepton cuts ------------------- -# These will only function if LVL1 trigger used. -BSignalFilter.LVL2MuonCutOn = True -BSignalFilter.LVL2MuonCutPT = 4000.0 -BSignalFilter.LVL2MuonCutEta = 2.5 -StreamEVGEN.RequireAlgs += ["BSignalFilter"] - -#============================================================== -# -# End of job options file -# -############################################################### diff --git a/Generators/Pythia_i/share/PYTUNE_pprintout.py b/Generators/Pythia_i/share/PYTUNE_pprintout.py deleted file mode 100644 index 564fee7303a86b2b89df12767930b5600ed7390c..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/share/PYTUNE_pprintout.py +++ /dev/null @@ -1,32 +0,0 @@ -#______________________________________________________________________________________________________________________ -# author: liza.mijovic@_nospam_cern.ch -# -# jO effect: dump the values of all parameters PYTUNE can set - this jopts are meant for runnig with GET_TUNE_params.sh -# -# ______________________________________________________________________________________________________________________ - -from AthenaCommon.AlgSequence import AlgSequence -topAlg = AlgSequence("TopAlg") - -from Pythia_i.Pythia_iConf import Pythia -topAlg += Pythia() -Pythia = topAlg.Pythia - -theApp.EvtMax = 0 - -Pythia.Tune_Name="ATLAS_-1" -Pythia.Direct_call_to_pytune=REPIND -# if one want the call to be equivalen to Pythia.Tune_Name="PYTUNE_XXX" -# the ATLAS stable particles convention should also be added -Pythia.PygiveCommand += [ "mstj(22)=2" ] - -PYDAT1_PARAMS=[ "MSTU", "PARU", "MSTJ", "PARJ" ] -PYPARS_PARAMS=[ "MSTP", "PARP", "MSTI", "PARI" ] -PYTUNE_PARAMS=PYDAT1_PARAMS+PYPARS_PARAMS - -PQ_LIST=[] -for i in PYTUNE_PARAMS: - PQ_LIST+=[i+"("+repr(x)+")=" for x in range(1,201)] - -Pythia.PygiveCommand += PQ_LIST -Pythia.Param_Query_AfterInit += PQ_LIST diff --git a/Generators/Pythia_i/share/direct_pytune_test_Zmumu_jO.py b/Generators/Pythia_i/share/direct_pytune_test_Zmumu_jO.py deleted file mode 100644 index 9705b42c869697815fc36c128e885d562c80b0f6..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/share/direct_pytune_test_Zmumu_jO.py +++ /dev/null @@ -1,69 +0,0 @@ -#______________________________________________________________________________________________________________ -# author: liza.mijovic@_nospam_cern.ch -# demonstrate how one can call a PYTUNE tune and change some parameters set by the tune on top from jO; -#-------------------------------------------------------------------------------------------------------------- -# use-case: one wishes to study an effect of parameter variation for a certain Pythia tune available via PYTUNE -#-------------------------------------------------------------------------------------------------------------- -# problem: -# changing parameters on top of the values set explicitly by PYUTNE cannot be done by using MSTP(5) or Pythia.Tune_Name -# (which also uses MSTP(5) ) as in these cases PYTUNE call is made within PYINIT in Pythia. -# As at this point the parameter setting has already been done by Pythia the value set by PYTUNE will be assumed -# for any parameter that the tune sets explicitly. -#-------------------------------------------------------------------------------------------------------------- -# solution: -# set the tune directly by SUBROUTINE PYTUNE call, than any parameters varied on top will have effect -#-------------------------------------------------------------------------------------------------------------- -# demonstration that the solution works: -# Say one wants to study the effect of increasing PARP(82) in Perugia 10, where it has a value: PARP(82)=2.05 -# So increase the value to say PARP(82)=2.2 on top but keep Perugia 10 for all other parameters -# check the parameter values using parameter queries after initialization -# finally generate a test sample of 10 Zmumu Pythia events using PYGIVE for setup -#______________________________________________________________________________________________________________ - -from AthenaCommon.AlgSequence import AlgSequence -topAlg = AlgSequence("TopAlg") - -from Pythia_i.Pythia_iConf import Pythia -topAlg += Pythia() -Pythia = topAlg.Pythia - -theApp.EvtMax = 10 - -from AthenaServices.AthenaServicesConf import AtRndmGenSvc -ServiceMgr += AtRndmGenSvc() -ServiceMgr.AtRndmGenSvc.Seeds = ["PYTHIA 4789899 989240512", - "PYTHIA_INIT 820021 2347532"] - -#------------------------------------------------------------------------------------------------------------- -#using PYGIVE (ATLAS independant syntax for params.) -Pythia.PygiveCommand += [ "msel=0", # Users decay choice. - "parj(90)=20000", # Turn off FSR. - "mdcy(15,1)=0", # Turn off tau decays. - "msub(1)=1", # Create Z bosons. - "ckin(1)=60.0", # Lower invariant mass. - "mdme(174,1)=0", - "mdme(175,1)=0", - "mdme(176,1)=0", - "mdme(177,1)=0", - "mdme(178,1)=0", - "mdme(179,1)=0", - "mdme(182,1)=0", # Switch for Z->ee. - "mdme(183,1)=0", - "mdme(184,1)=1", # Switch for Z->mumu. - "mdme(185,1)=0", - "mdme(186,1)=0", # Switch for Z->tautau. - "mdme(187,1)=0"] -#------------------------------------------------------------------------------------------------------------- -# use only recommended ATLAS parameter settings (i.e. the ones necessary for succsfull && consistent simulation within Athena) -# all other ATLAS defaults are switched off -Pythia.Tune_Name="ATLAS_-1" -# call Perugia 10 in the mode that will allow parameter overwriting (using MSTP(5) or Pythia.Tune_Name="PYTUNE_325" wouldn't) -Pythia.Direct_call_to_pytune=327 -# keep ATLAS stable particles definition -Pythia.PygiveCommand += [ "mstj(22)=2" ] -# now set PARP(82) to the desired value -Pythia.PygiveCommand += [ "parp(82)=2.2" ] -# check that PARP(82) has the desired value after initialization -Pythia.Param_Query_AfterInit += [ "PARP(82)=" ] -#------------------------------------------------------------------------------------------------------------- -#______________________________________________________________________________________________________________ diff --git a/Generators/Pythia_i/share/jobOptions.pythia.py b/Generators/Pythia_i/share/jobOptions.pythia.py deleted file mode 100644 index 9f2c26c762fb61932b942233611fcc4cbe43462c..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/share/jobOptions.pythia.py +++ /dev/null @@ -1,48 +0,0 @@ -############################################################### -# -# JOB OPTIONS FILE. THIS FILE IS TO DEMONSTRATE HOW THE USER CAN -# CHANGE THE PYTHIA PARAMETERS. IT DOES NOT NECESARILY COMPLY TO -# THE ATLAS DEFAULTS FOR PHYSICS EVENT GENERATION. -#============================================================== -#-------------------------------------------------------------- -# Private Application Configuration option -from AthenaCommon.AppMgr import ServiceMgr -ServiceMgr.MessageSvc.OutputLevel = INFO - -#-------------------------------------------------------------- -# Event related parameters -#-------------------------------------------------------------- -# Number of events to be processed (default is 10) -theApp.EvtMax = 5 -#-------------------------------------------------------------- -# Algorithms Private Options -#-------------------------------------------------------------- -from AthenaServices.AthenaServicesConf import AtRndmGenSvc -ServiceMgr += AtRndmGenSvc() -ServiceMgr.AtRndmGenSvc.Seeds = ["PYTHIA 4789899 989240512", -"PYTHIA_INIT 820021 2347532"] -# ServiceManager.AtRndmGenSvc.ReadFromFile = true; - -from AthenaCommon.AlgSequence import AlgSequence -job=AlgSequence() -from Pythia_i.Pythia_iConf import Pythia -job +=Pythia() -job.Pythia.PythiaCommand = ["pysubs msel 13","pysubs ckin 3 18.","pypars mstp 43 2"] -job.Pythia.PythiaCommand += ["pypars mstp 51 19070", "pypars mstp 52 2", - "pypars mstp 53 19070", "pypars mstp 54 2", - "pypars mstp 55 19070", "pypars mstp 56 2"] - -from TruthExamples.TruthExamplesConf import DumpMC -job += DumpMC() -from TruthExamples.TruthExamplesConf import TestHepMC -job += TestHepMC() -job.TestHepMC.CmEnergy=10000000 -from TruthExamples.TruthExamplesConf import PrintMC -job += PrintMC() - - - -# -# End of job options file -# -############################################################### diff --git a/Generators/Pythia_i/share/jobOptions.pythia_RPV.py b/Generators/Pythia_i/share/jobOptions.pythia_RPV.py deleted file mode 100644 index 2563973a26e3fa9f4928656ecb8379af860ca23c..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/share/jobOptions.pythia_RPV.py +++ /dev/null @@ -1,80 +0,0 @@ -############################################################### -# -# JOB OPTIONS FILE. THIS FILE IS TO DEMONSTRATE HOW THE USER CAN -# CHANGE THE PYTHIA PARAMETERS. IT DOES NOT NECESARILY COMPLY TO -# THE ATLAS DEFAULTS FOR PHYSICS EVENT GENERATION. -#============================================================== -#-------------------------------------------------------------- -# Private Application Configuration option -from AthenaCommon.AppMgr import ServiceMgr -ServiceMgr.MessageSvc.OutputLevel = DEBUG - -#-------------------------------------------------------------- -# Event related parameters -#-------------------------------------------------------------- -# Number of events to be processed (default is 10) -theApp.EvtMax = 5 -#-------------------------------------------------------------- -# Algorithms Private Options -#-------------------------------------------------------------- -from AthenaServices.AthenaServicesConf import AtRndmGenSvc -ServiceMgr += AtRndmGenSvc() -ServiceMgr.AtRndmGenSvc.Seeds = ["PYTHIA 4789899 989240512", -"PYTHIA_INIT 820021 2347532"] -# ServiceManager.AtRndmGenSvc.ReadFromFile = true; - -from AthenaCommon.AlgSequence import AlgSequence -job=AlgSequence() -from Pythia_i.Pythia_iConf import Pythia -job +=Pythia() -#################### -job.Pythia.PythiaCommand = ["pyinit pylisti 12"] #print out particle properties settings -job.Pythia.PythiaCommand += ["pyinit pylistf 1"] -job.Pythia.PythiaCommand += ["pysubs msel 0"] # ! -job.Pythia.PythiaCommand += ["pysubs msub 271 1"] # squark pair production -job.Pythia.PythiaCommand += ["pysubs msub 272 1"] # squark pair production -job.Pythia.PythiaCommand += ["pysubs msub 273 1"] # squark pair production -job.Pythia.PythiaCommand += ["pysubs msub 274 1"] # squark pair production -job.Pythia.PythiaCommand += ["pysubs msub 275 1"] # squark pair production -job.Pythia.PythiaCommand += ["pysubs msub 276 1"] # squark pair production -job.Pythia.PythiaCommand += ["pysubs msub 277 1"] # squark pair production -job.Pythia.PythiaCommand += ["pysubs msub 278 1"] # squark pair production -job.Pythia.PythiaCommand += ["pysubs msub 279 1"] # squark pair production -job.Pythia.PythiaCommand += ["pysubs msub 280 1"] # squark pair production -####### -job.Pythia.PythiaCommand+= ["pymssm imss 1 1"] # general MSSM !! -#Pythia.PythiaCommand+= ["pymssm imss 52 1"] #switch on RPV lambda^prime coupling -#Pythia.PythiaCommand += ["pymssm rmss 52 8."] # setting lambda^prime coupling strength to 10^{-rmss(52)} -job.Pythia.PythiaCommand+= ["pymssm imss 52 3"] #switch on RPV lambda^prime coupling -job.Pythia.PythiaCommand += ["pymsrv rvlam 111 0.000002"] # setting lambda^prime coupling strength -#job.Pythia.PythiaCommand += ["mdcy xxx 1"] -job.Pythia.PythiaCommand += ["pydat1 mstj 22 3"] # allow long decay length -job.Pythia.PythiaCommand += ["pydat1 parj 72 10000."] -## only works for >=0.000009 , ct<=1cm -## with current masses: 0.000002 -> ct=70mm -job.Pythia.PythiaCommand += ["pydat3 mdme 2205 1 0"] # switch explicetly off special RPV decays -job.Pythia.PythiaCommand += ["pydat3 mdme 2206 1 0"] # switch explicetly off special RPV decays -## -job.Pythia.PythiaCommand += ["pymssm rmss 1 500."] #M1 gaugino -job.Pythia.PythiaCommand += ["pymssm rmss 2 5000."] #M2 gaugino -job.Pythia.PythiaCommand += ["pymssm rmss 3 5000."] #M3 gluino -job.Pythia.PythiaCommand += ["pymssm rmss 4 800."] #mu higgsino, default=800 ,important to make chi10 much lighter than other gauginos -job.Pythia.PythiaCommand += ["pymssm rmss 5 2."] #tan beta , default=2 ,important to make chi10 much lighter than other gauginos -job.Pythia.PythiaCommand += ["pymssm rmss 6 5000."] #left slepton, makes sneutrino mass high (also eL), to surpress LQD decay to neutrinos -job.Pythia.PythiaCommand += ["pymssm rmss 7 5000."] #right slepton, irrelevant in LQD -job.Pythia.PythiaCommand += ["pymssm rmss 8 700."] #left squark -job.Pythia.PythiaCommand += ["pymssm rmss 9 700."] #right squark -job.Pythia.PythiaCommand += ["pymssm rmss 10 5000."] #third generation -job.Pythia.PythiaCommand += ["pymssm rmss 11 5000."] #third generation -job.Pythia.PythiaCommand += ["pymssm rmss 12 5000."] #third generation -job.Pythia.PythiaCommand += ["pymssm rmss 13 5000."] #third generation -job.Pythia.PythiaCommand += ["pymssm rmss 14 5000."] #third generation -############## - -from TruthExamples.TruthExamplesConf import DumpMC -job += DumpMC() - -# -# End of job options file -# -############################################################### diff --git a/Generators/Pythia_i/share/param_query_Zmumu_jO.py b/Generators/Pythia_i/share/param_query_Zmumu_jO.py deleted file mode 100644 index 5425c663e9dec4eac32b0a9d87a5f6b39893f2a6..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/share/param_query_Zmumu_jO.py +++ /dev/null @@ -1,75 +0,0 @@ -#______________________________________________________________________________________________________________________ -# author: liza.mijovic@_nospam_cern.ch -# -# jO purpose:show how (and why) to query Pythia parameter values ather generator initialization and event generation -# -# run jO like: athena.py param_query_Zmumu_jO.py -# -# please note: for ATLAS physics studies the event generation follow ATLAS central production standards: -# use the EVGEN jobtransforms and the relevant official include files for the common ATLAS parameters -# (not done in this example) -# -#---------------------------------------------------------------------------------------------------------------------- -# jO description: -# -# - generate 10 Zmumu Pythia events; PYGIVE is used for the Zmumu process setup -# - Z mass and width are set manually, they values are queried before and after the generator initialization in order -# to demonstrate that the Z-width is reset during the initialization -# - info on # of MI in the events is extracted by parameter query after the event generation -#---------------------------------------------------------------------------------------------------------------------- - -from AthenaCommon.AlgSequence import AlgSequence -topAlg = AlgSequence("TopAlg") - -from Pythia_i.Pythia_iConf import Pythia -topAlg += Pythia() -Pythia = topAlg.Pythia - -theApp.EvtMax = 10 - -from AthenaServices.AthenaServicesConf import AtRndmGenSvc -ServiceMgr += AtRndmGenSvc() -ServiceMgr.AtRndmGenSvc.Seeds = ["PYTHIA 4789899 989240512", - "PYTHIA_INIT 820021 2347532"] - -#---------------------------------------------------------------------------------------------------------------------- -#using PYGIVE (ATLAS independant syntax for params.) -Pythia.PygiveCommand += [ "msel=0", # Users decay choice. - "parj(90)=20000", # Turn off FSR. - "mdcy(15,1)=0", # Turn off tau decays. - "msub(1)=1", # Create Z bosons. - "ckin(1)=60.0", # Lower invariant mass. - "mdme(174,1)=0", - "mdme(175,1)=0", - "mdme(176,1)=0", - "mdme(177,1)=0", - "mdme(178,1)=0", - "mdme(179,1)=0", - "mdme(182,1)=0", # Switch for Z->ee. - "mdme(183,1)=0", - "mdme(184,1)=1", # Switch for Z->mumu. - "mdme(185,1)=0", - "mdme(186,1)=0", # Switch for Z->tautau. - "mdme(187,1)=0"] - -#---------------------------------------------------------------------------------------------------------------------- -# not setting the tune - ATLAS default used for the Athena release you are running will be assumed -#---------------------------------------------------------------------------------------------------------------------- -# set Z mass and width (to a too narrow value): -Pythia.PygiveCommand += [ "PMAS(23,1)=91.1876", - "PMAS(23,2)=2.0"] -#---------------------------------------------------------------------------------------------------------------------- -# 1) query the Z mass and width values (same as when using PYGIVE queries before PYINIT in Pythia standalone) : -# values are written to the stand. output && reflect the state before Pythia initialization has been completed -Pythia.PygiveCommand += [ "PMAS(23,1)=", - "PMAS(23,2)="] -#---------------------------------------------------------------------------------------------------------------------- -# 2) query the Z mass and width values after Pythia initialization has been completed: -# values are written to par_after_init.out; since the Z-width is recalculated by (default by) Pythia the Z-width values -# will be different for the queries 1) and 2) -Pythia.Param_Query_AfterInit += [ "PMAS(23,1)=", - "PMAS(23,2)="] -#---------------------------------------------------------------------------------------------------------------------- -# 3) example how to extract event-specific modelling-related info: -# get # of MI after event generation: written to file par_after_gen.out -Pythia.Param_Query_AfterGen += [ "MINT(31)=" ] diff --git a/Generators/Pythia_i/share/set_frame_beam_target_ecm.py b/Generators/Pythia_i/share/set_frame_beam_target_ecm.py deleted file mode 100644 index a7be5af007246867cdc1b981a81a11f8fd641046..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/share/set_frame_beam_target_ecm.py +++ /dev/null @@ -1,92 +0,0 @@ -#______________________________________________________________________________________________________________________________________ -# Feb. 2010 -# LM: use_PYINIT setup example jO -# use_PYINIT is a pyinit block entry, that enables setting frame, beam, target particles and CMS for generated events -# these are than passed to PYINIT(FRAME,BEAM,TARGET,WIN) PYHITA call -# this jO file has some use_PYINIT setting techical examples, explaining rules for omiting parameters, error handling, white-space rules... -# examples for allowed (these have # ok, comment) and what is not allowed (# not ok comment) syntax are available below process setting -# formally the examples generate Zmumu Pythia events in pp or p~p collisions, using the ATLAS default tune for the used release (whatever that is ...) -#______________________________________________________________________________________________________________________________________ - -from AthenaCommon.AlgSequence import AlgSequence -topAlg = AlgSequence("TopAlg") - -from Pythia_i.Pythia_iConf import Pythia -topAlg += Pythia() -Pythia = topAlg.Pythia - -theApp.EvtMax = 10 - -from AthenaServices.AthenaServicesConf import AtRndmGenSvc -ServiceMgr += AtRndmGenSvc() -ServiceMgr.AtRndmGenSvc.Seeds = ["PYTHIA 4789899 989240512", - "PYTHIA_INIT 820021 2347532"] - -#_________________________________________________________________________________ - -#1. setup Z production using PYGIVE calls -#--------------------------------------------------------------------------------- -Pythia.PygiveCommand += [ "msel=0", # Users decay choice. - "parj(90)=20000", # Turn off FSR. - "mdcy(15,1)=0", # Turn off tau decays. - "msub(1)=1", # Create Z bosons. - "ckin(1)=60.0", # Lower invariant mass. - "mdme(174,1)=0", - "mdme(175,1)=0", - "mdme(176,1)=0", - "mdme(177,1)=0", - "mdme(178,1)=0", - "mdme(179,1)=0", - "mdme(182,1)=0", # Switch for Z->ee. - "mdme(183,1)=0", - "mdme(184,1)=1", # Switch for Z->mumu. - "mdme(185,1)=0", - "mdme(186,1)=0", # Switch for Z->tautau. - "mdme(187,1)=0"] -#--------------------------------------------------------------------------------- -#_________________________________________________________________________________ -#------------------------------------------------------------------------------------------------------------- -# initialization setup: -#------------------------------------------------------------------------------------------------------------- -# general Athena syntax is : -# Pythia.PythiaCommand +=["pyinit use_PYINIT FRAME BEAM TARGET WIN"] -# which is translated to PYTHIA PYINIT SUBROUTINE CALL as: -# PYINIT(FRAME,BEAM,TARGET,WIN) -# allowed FRAME BEAM TARGET WIN values are same as for Pythia standalone running -# when using pyinit use_PYINIT please make sure that: -# 1) all four FRAME BEAM TARGET WIN values are passed, even if some of them correspond to LHC defaults -# 2) WIN is passed as a double (i.e. not as an integer) -# 3) info on the Athena and PYTHIA setup can be checked is printed-out before event generation is started -#------------------------------------------------------------------------------------------------------------- -# EXAMPLES should make it clear .... -#Pythia.PythiaCommand +=["pyinit use_PYINIT CMS P P 10000.0"] # ok, set p-p explicitly -#--------------------------------------------------------------------------------- -#Pythia.PythiaCommand +=["pyinit use_PYINIT CMS p+ P+ 10000.0"] # ok, set p-p explicitly -#--------------------------------------------------------------------------------- -#Pythia.PythiaCommand +=["pyinit use_PYINIT CMS p+ p+ 10000.0"] # ok, note extra whitespace, set p-p explicitly -#--------------------------------------------------------------------------------- -#Pythia.PythiaCommand +=["pyinit use_PYINIT CMS p+ p + 10000.0"] # not ok: note extra whitespace, - # PythiaCommand vector splist string into blocks by white-spaces - # error thrown by PYTHIA -#--------------------------------------------------------------------------------- -# just for fun - another not ok example: -# some ~ obscure intentional attempts to trick error-handling can possibli pass, here's one: -#Pythia.PythiaCommand +=["pyinit use_PYINIT CMS p+ p ~ 10000.0"] # not parsed correctly, ECM set to 0 -#Pythia.PythiaCommand +=["pyinit win 10000."] # but if you now override ECM it'll still work ... but p-p will be produced - # note that WARNINGS are printed so used has a chance to cathc such error ... -#--------------------------------------------------------------------------------- -#Pythia.PythiaCommand +=["pyinit use_PYINIT CMS p~ P+ 10000.0"] # ok, set pbar-p, non-standard setup WARNING is printed -#--------------------------------------------------------------------------------- -#Pythia.PythiaCommand +=["pyinit use_PYINIT CMS p~ 10000.0"] # not ok: ommiting beam/target is not parsed correctly, - # please set full string, error thrown by PYTHIA -#--------------------------------------------------------------------------------- -#Pythia.PythiaCommand +=["pyinit use_PYINIT CMS p p 10000.0"] -#Pythia.PythiaCommand +=["pyinit win 7000."] # ok you can override CM energy -#--------------------------------------------------------------------------------- - -# ... Tauola -#include ( "EvgenJobOptions/MC8_Tauola_Fragment.py" ) - -# ... Photos -#include ( "EvgenJobOptions/MC8_Photos_Fragment.py" ) - diff --git a/Generators/Pythia_i/share/xxxx_tune_test_Zmumu_jO.py b/Generators/Pythia_i/share/xxxx_tune_test_Zmumu_jO.py deleted file mode 100644 index 55a7e1b342df1fdd38e78f12dc6ac90d0c3e39f9..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/share/xxxx_tune_test_Zmumu_jO.py +++ /dev/null @@ -1,143 +0,0 @@ -#______________________________________________________________________________________________________________ -# author: liza.mijovic@_nospam_cern.ch -# generate 10 Zmumu Pythia events using PYGIVE for setup + different Pythia (ATLAS/PYTUNE) tunes -#______________________________________________________________________________________________________________ - -from AthenaCommon.AlgSequence import AlgSequence -topAlg = AlgSequence("TopAlg") - -from Pythia_i.Pythia_iConf import Pythia -topAlg += Pythia() -Pythia = topAlg.Pythia - -theApp.EvtMax = 10 - -from AthenaServices.AthenaServicesConf import AtRndmGenSvc -ServiceMgr += AtRndmGenSvc() -ServiceMgr.AtRndmGenSvc.Seeds = ["PYTHIA 4789899 989240512", - "PYTHIA_INIT 820021 2347532"] - -#------------------------------------------------------------------------------------------------------------- -#------------------------------------------------------------------------------------------------------------- -#1. setup Z production : -# old way (remains supported) -#--------------------------------------------------------------------------------- -#using PythiaCommand -#Pythia.PythiaCommand += [ "pysubs msel 0", # Users decay choice. -# "pydat1 parj 90 20000", # Turn off FSR. -# "pydat3 mdcy 15 1 0", # Turn off tau decays. -# "pysubs msub 1 1", # Create Z bosons. -# "pysubs ckin 1 60.0", # Lower invariant mass. -# "pydat3 mdme 174 1 0", -# "pydat3 mdme 175 1 0", -# "pydat3 mdme 176 1 0", -# "pydat3 mdme 177 1 0", -# "pydat3 mdme 178 1 0", -# "pydat3 mdme 179 1 0", -# "pydat3 mdme 182 1 0", # Switch for Z->ee. -# "pydat3 mdme 183 1 0", -# "pydat3 mdme 184 1 1", # Switch for Z->mumu. -# "pydat3 mdme 185 1 0", -# "pydat3 mdme 186 1 0", # Switch for Z->tautau. -# "pydat3 mdme 187 1 0"] -#--------------------------------------------------------------------------------- -#using PYGIVE (ATLAS independant syntax for params.) -Pythia.PygiveCommand += [ "msel=0", # Users decay choice. - "parj(90)=20000", # Turn off FSR. - "mdcy(15,1)=0", # Turn off tau decays. - "msub(1)=1", # Create Z bosons. - "ckin(1)=60.0", # Lower invariant mass. - "mdme(174,1)=0", - "mdme(175,1)=0", - "mdme(176,1)=0", - "mdme(177,1)=0", - "mdme(178,1)=0", - "mdme(179,1)=0", - "mdme(182,1)=0", # Switch for Z->ee. - "mdme(183,1)=0", - "mdme(184,1)=1", # Switch for Z->mumu. - "mdme(185,1)=0", - "mdme(186,1)=0", # Switch for Z->tautau. - "mdme(187,1)=0"] -#------------------------------------------------------------------------------------------------------------- -#------------------------------------------------------------------------------------------------------------- - -#new tunes schema: -#------------------------------------------------------------------------------------------------------------- -#------------------------------------------------------------------------------------------------------------- -#Pythia property Tune_Name of type std::string, syntax: "TUNETYPE_TUNEINDEX" -# see setPythiaTune.cxx for implemented TUNETYPE opts, see atlasTune.cxx for available TUNEINDEX opts -#------------------------------------------------------------------------------------- -# ATLAS tunes examples: -#------------------------------------------------------------------------------------- -#uncomment this for MC08 tune -#Pythia.Tune_Name="ATLAS_20080001" - -#uncomment this for MC09 tune -#Pythia.Tune_Name="ATLAS_20090001" - -#uncomment this for MC09' tune (CTEQ6L1 rune for MC09 round) -#Pythia.Tune_Name="ATLAS_20090002" - -#uncomment this for MC09c tune (simmilar to MC09, but with lowered CR) -#Pythia.Tune_Name="ATLAS_20090003" - -#uncomment this for AMBT1 tune (2010 tune to ATLAS data) -Pythia.Tune_Name="ATLAS_20100001" -#------------------------------------------------------------------------------------- - -# PYTUNE: -# ATLAS defaults are turned off, only necessary parameters for seemless running within Athena are kept - -# call PYTUNE PERUGIA HARD (uses internal Pythia PDF) -#Pythia.Tune_Name="PYTUNE_321" - -# call PYTUNE PERUGIA * (uses ext. PDF) -#Pythia.Tune_Name="PYTUNE_325" - -# call PYTUNE D6T ; Rick Field's CDF Tune D6T (old shower/MI) -#Pythia.Tune_Name="PYTUNE_109" -#------------------------------------------------------------------------------------- - -# some special settings: -# use no ATLAS parameter settings -#Pythia.Tune_Name="ATLAS_0" -# use only recommended ATLAS parameter settings (i.e. the ones necessary for succsfull && consistent simulation within Athena) -#Pythia.Tune_Name="ATLAS_-1" -# use recommended + common (PDF, mass, MI schema etc., but not parameters commonly used for tuning) ATLAS parameter -#Pythia.Tune_Name="ATLAS_-2" - - -#--------------------------------------- -# SETTING THE TUNE USING SWITCHES (AS WAS DONE IN MC09) IS DEPRECATED BUT IN CASE IT IS NEEDED: -# make sure to use new syntax (Pythia.Tune_Name) or old syntax (below) only -# in case the old and new syntax is mixed WARNINGS will be printed and the generation will take place with ATLAS defaults -#--------------------------------------- -# uncomment these and comment-out the Pythia.Tune_Name="ATLAS_20100001" line to set MC08 the old way: -#Pythia.useAtlasPythiaTune09=False -#Pythia.useAtlasPythiaTune08=True -#--------------------------------------- - -#--------------------------------------- -# uncomment these and comment-out the Pythia.Tune_Name="ATLAS_20100001" line to set MC09 the old way: -#Pythia.useAtlasPythiaTune09=True -#Pythia.useAtlasPythiaTune08=False -#--------------------------------------- - -#--------------------------------------- -# uncomment these and comment-out the Pythia.Tune_Name="ATLAS_20100001" line to use no ATLAS parameter settings -#Pythia.useOldTuneSwitches=True -#Pythia.useNoAtlasPythiaParam=True -#Pythia.useAtlasPythiaRecomm=False -#Pythia.useAtlasPythiaCommon=False -#Pythia.useAtlasPythiaTune09=False -#--------------------------------------- -#------------------------------------------------------------------------------------------------------------- -#------------------------------------------------------------------------------------------------------------- - -# ... Tauola -#include ( "EvgenJobOptions/MC10_Tauola_Fragment.py" ) - -# ... Photos -#include ( "EvgenJobOptions/MC10_Photos_Fragment.py" ) -#______________________________________________________________________________________________________________ diff --git a/Generators/Pythia_i/src/Lhefinfo.cxx b/Generators/Pythia_i/src/Lhefinfo.cxx deleted file mode 100644 index 7369bd9b16c9899dcbd558ac8857f1eaa5c22f76..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/src/Lhefinfo.cxx +++ /dev/null @@ -1,60 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// access Lhef_i common block LHEFINFO -#include "Pythia_i/Lhefinfo.h" - -// set pointer to zero at start -Lhefinfo::LHEFINFO* Lhefinfo::s_lhefinfo = 0; - -// Constructor -Lhefinfo::Lhefinfo() -{} - -// Destructor -Lhefinfo::~Lhefinfo() -{} - -int& Lhefinfo::id1() -{ - init(); - return s_lhefinfo->id1; -} - -int& Lhefinfo::id2() -{ - init(); - return s_lhefinfo->id2; -} - -double& Lhefinfo::x1() -{ - init(); - return s_lhefinfo->x1; -} - -double& Lhefinfo::x2() -{ - init(); - return s_lhefinfo->x2; -} - -double& Lhefinfo::scalePdf() -{ - init(); - return s_lhefinfo->scalePdf; -} - -double& Lhefinfo::xPdf1() -{ - init(); - return s_lhefinfo->xPdf1; -} - -double& Lhefinfo::xPdf2() -{ - init(); - return s_lhefinfo->xPdf2; -} - diff --git a/Generators/Pythia_i/src/Pydat1.cxx b/Generators/Pythia_i/src/Pydat1.cxx deleted file mode 100644 index f571297431ba3d9ad4c18a524d94f5e069eb12e1..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/src/Pydat1.cxx +++ /dev/null @@ -1,62 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// access pythia common Pydat1 -#include "Pythia_i/Pydat1.h" - -// set pointer to zero at start -Pydat1::PYDAT1* Pydat1::s_pydat1 =0; - -// Constructor -Pydat1::Pydat1() -{ - m_dummy=-999; - m_realdummy=-999.; -} - -// Destructor -Pydat1::~Pydat1() -{ -} - -// access mstu in common -int& Pydat1::mstu(int n) { - init(); // check COMMON is initialized - if(n < 1 || n > lenMstu()) { - m_dummy = -999; - return m_dummy; - } - return s_pydat1->mstu[n-1]; -} - -// access paru in common -double& Pydat1::paru(int n) { - init(); // check COMMON is initialized - if(n < 1 || n > lenParu()) { - m_realdummy = -999.; - return m_realdummy; - } - return s_pydat1->paru[n-1]; -} - -// access mstj in common -int& Pydat1::mstj(int n) { - init(); // check COMMON is initialized - if(n < 1 || n > lenMstj()) { - m_dummy = -999; - return m_dummy; - } - return s_pydat1->mstj[n-1]; -} - -// access parj in common -double& Pydat1::parj(int n) { - init(); // check COMMON is initialized - if(n < 1 || n > lenParj()) { - m_realdummy = -999.; - return m_realdummy; - } - return s_pydat1->parj[n-1]; -} - diff --git a/Generators/Pythia_i/src/Pydat2.cxx b/Generators/Pythia_i/src/Pydat2.cxx deleted file mode 100644 index 08043c1f4ae4b240435a2f003e0d6abc13a13c15..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/src/Pydat2.cxx +++ /dev/null @@ -1,73 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// access pythia common Pydat2 -#include "Pythia_i/Pydat2.h" - -#ifdef DEFECT_OLD_STDC_HEADERS -extern "C" { -#include <stdlib.h> -} -#else -#include <cstdlib> -#endif - -// set pointer to zero at start -Pydat2::PYDAT2* Pydat2::s_pydat2 =0; - -// Constructor -Pydat2::Pydat2() -{ - m_dummy=-999; - m_realdummy=-999.; -} - -// Destructor -Pydat2::~Pydat2() -{ -} - -// access kchg in common -int& Pydat2::kchg(int kc, int i) { - init(); // check COMMON is initialized - if( kc < 1 || kc > lenPmas() || - i < 1 || i > depthKchg()) - { - m_dummy = -999; - return m_dummy; - } - return s_pydat2->kchg[i-1][kc-1]; -} -// access pmas in common -double& Pydat2::pmas(int kc, int i) { - init(); // check COMMON is initialized - if( kc < 1 || kc > lenPmas() || - i < 1 || i > depthPmas()) - { - m_realdummy = -999.; - return m_realdummy; - } - return s_pydat2->pmas[i-1][kc-1]; -} - -// access parf in common -double& Pydat2::parf(int n) { - init(); // check COMMON is initialized - if(n < 1 || n > lenParf()) { - m_realdummy = -999.; - return m_realdummy; - } - return s_pydat2->parf[n-1]; - -}// access vckm in common -double& Pydat2::vckm(int i,int j) { - init(); // check COMMON is initialized - if(i < 1 || i > lenVckm() || - j < 1 || j > lenVckm()) { - m_realdummy = -999.; - return m_realdummy; - } - return s_pydat2->vckm[j-1][i-1]; -} - diff --git a/Generators/Pythia_i/src/Pydat3.cxx b/Generators/Pythia_i/src/Pydat3.cxx deleted file mode 100644 index 33ef6b4b59c62aaa01c6d158641778ec4637beda..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/src/Pydat3.cxx +++ /dev/null @@ -1,74 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// access pythia common Pydat3 -#include "Pythia_i/Pydat3.h" - -#ifdef DEFECT_OLD_STDC_HEADERS -extern "C" { -#include <stdlib.h> -} -#else -#include <cstdlib> -#endif - -// set pointer to zero at start -Pydat3::PYDAT3* Pydat3::s_pydat3 =0; - -// Constructor -Pydat3::Pydat3() -{ - m_dummy=-999; - m_realdummy=-999.; -} - -// Destructor -Pydat3::~Pydat3() -{ -} - -// access mdcy in common -int& Pydat3::mdcy(int kc, int i) { - init(); // check COMMON is initialized - if( kc < 1 || kc > lenMdcy() || - i < 1 || i > depthMdcy()) - { - m_dummy = -999; - return m_dummy; - } - return s_pydat3->mdcy[i-1][kc-1]; -} -// access mdme in common -int& Pydat3::mdme(int idc, int i) { - init(); // check COMMON is initialized - if( idc < 1 || idc > lenMdme() || - i < 1 || i > depthMdme()) - { - m_dummy = -999; - return m_dummy; - } - return s_pydat3->mdme[i-1][idc-1]; -} -// access brat in common -double& Pydat3::brat(int idc) { - init(); // check COMMON is initialized - if(idc < 1 || idc > lenBrat()) { - m_realdummy = -999.; - return m_realdummy; - } - return s_pydat3->brat[idc-1]; - -} -// access kfdp in common -int& Pydat3::kfdp(int idc, int kf) { - init(); // check COMMON is initialized - if( idc < 1 || idc > lenKfdp() || - kf < 1 || kf > depthKfdp()) - { - m_dummy = -999; - return m_dummy; - } - return s_pydat3->kfdp[kf-1][idc-1]; -} - diff --git a/Generators/Pythia_i/src/Pydat3_61.cxx b/Generators/Pythia_i/src/Pydat3_61.cxx deleted file mode 100644 index fdf84183c50085c5c0f1de91c7949f023bd1c429..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/src/Pydat3_61.cxx +++ /dev/null @@ -1,75 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// access pythia common Pydat3 -#include "Pythia_i/Pydat3.h" - -#ifdef DEFECT_OLD_STDC_HEADERS -extern "C" { -#include <stdlib.h> -} -#else -#include <cstdlib> -#endif - -// set pointer to zero at start -Pydat3::PYDAT3* Pydat3::_pydat3 =0; - -// Constructor -Pydat3::Pydat3() - : - _dummy(-999) - , _realdummy(-999.0) -{ -} - -// Destructor -Pydat3::~Pydat3() -{ -} - -// access mdcy in common -int& Pydat3::mdcy(int kc, int i) { - init(); // check COMMON is initialized - if( kc < 1 || kc > lenMdcy() || - i < 1 || i > depthMdcy()) - { - _dummy = -999; - return _dummy; - } - return _pydat3->mdcy[i-1][kc-1]; -} -// access mdme in common -int& Pydat3::mdme(int idc, int i) { - init(); // check COMMON is initialized - if( idc < 1 || idc > lenMdme() || - i < 1 || i > depthMdme()) - { - _dummy = -999; - return _dummy; - } - return _pydat3->mdme[i-1][idc-1]; -} -// access brat in common -double& Pydat3::brat(int idc) { - init(); // check COMMON is initialized - if(idc < 1 || idc > lenBrat()) { - _realdummy = -999.; - return _realdummy; - } - return _pydat3->brat[idc-1]; - -} -// access kfdp in common -int& Pydat3::kfdp(int idc, int kf) { - init(); // check COMMON is initialized - if( idc < 1 || idc > lenKfdp() || - kf < 1 || kf > depthKfdp()) - { - _dummy = -999; - return _dummy; - } - return _pydat3->kfdp[kf-1][idc-1]; -} - diff --git a/Generators/Pythia_i/src/Pydat3_62.cxx b/Generators/Pythia_i/src/Pydat3_62.cxx deleted file mode 100644 index 5eca48223bfbb2c7721278f795d4db4e65aa2776..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/src/Pydat3_62.cxx +++ /dev/null @@ -1,74 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// access pythia common Pydat3 version for 6.2xxx -#include "Pythia_i/Pydat3_62.h" - -#ifdef DEFECT_OLD_STDC_HEADERS -extern "C" { -#include <stdlib.h> -} -#else -#include <cstdlib> -#endif - -// set pointer to zero at start -Pydat3::PYDAT3* Pydat3::s_pydat3 =0; - -// Constructor -Pydat3::Pydat3() -{ - m_dummy = -999; - m_realdummy = -999; -} - -// Destructor -Pydat3::~Pydat3() -{ -} - -// access mdcy in common -int& Pydat3::mdcy(int kc, int i) { - init(); // check COMMON is initialized - if( kc < 1 || kc > lenMdcy() || - i < 1 || i > depthMdcy()) - { - m_dummy = -999; - return m_dummy; - } - return s_pydat3->mdcy[i-1][kc-1]; -} -// access mdme in common -int& Pydat3::mdme(int idc, int i) { - init(); // check COMMON is initialized - if( idc < 1 || idc > lenMdme() || - i < 1 || i > depthMdme()) - { - m_dummy = -999; - return m_dummy; - } - return s_pydat3->mdme[i-1][idc-1]; -} -// access brat in common -double& Pydat3::brat(int idc) { - init(); // check COMMON is initialized - if(idc < 1 || idc > lenBrat()) { - m_realdummy = -999.; - return m_realdummy; - } - return s_pydat3->brat[idc-1]; - -} -// access kfdp in common -int& Pydat3::kfdp(int idc, int kf) { - init(); // check COMMON is initialized - if( idc < 1 || idc > lenKfdp() || - kf < 1 || kf > depthKfdp()) - { - m_dummy = -999; - return m_dummy; - } - return s_pydat3->kfdp[kf-1][idc-1]; -} - diff --git a/Generators/Pythia_i/src/Pydatr.cxx b/Generators/Pythia_i/src/Pydatr.cxx deleted file mode 100644 index 38de5474c85eaf411439663d5c01b93e4f32280e..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/src/Pydatr.cxx +++ /dev/null @@ -1,42 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// access pythia common Pydatr -#include "Pythia_i/Pydatr.h" - -// set pointer to zero at start -Pydatr::PYDATR* Pydatr::s_pydatr =0; - -// Constructor -Pydatr::Pydatr() -{ - m_dummy=-999; - m_realdummy=-999.; -} - -// Destructor -Pydatr::~Pydatr() -{ -} - -// access mrpy in common -int& Pydatr::mrpy(int n) { - init(); // check COMMON is initialized - if(n < 1 || n > lenMrpy()) { - m_dummy = -999; - return m_dummy; - } - return s_pydatr->mrpy[n-1]; -} - -// access rrpy in common -double& Pydatr::rrpy(int n) { - init(); // check COMMON is initialized - if(n < 1 || n > lenRrpy()) { - m_realdummy = -999.; - return m_realdummy; - } - return s_pydatr->rrpy[n-1]; -} - diff --git a/Generators/Pythia_i/src/Pyint1.cxx b/Generators/Pythia_i/src/Pyint1.cxx deleted file mode 100644 index 48904af6261cd0cb60a95a2f090930eab32de726..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/src/Pyint1.cxx +++ /dev/null @@ -1,41 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// access pythia common Pyint1 -#include "Pythia_i/Pyint1.h" - -// set pointer to zero at start -Pyint1::PYINT1* Pyint1::s_pyint1 =0; - -// Constructor -Pyint1::Pyint1() -{ - m_dummy=-999; - m_realdummy=-999.; -} - -// Destructor -Pyint1::~Pyint1() -{ -} - -// access mint in common -int& Pyint1::mint(int n) { - init(); // check COMMON is initialized - if(n < 1 || n > lenMint()) { - m_dummy = -999; - return m_dummy; - } - return s_pyint1->mint[n-1]; -} - -// access iset in common -double& Pyint1::vint(int n) { - init(); // check COMMON is initialized - if(n < 1 || n > lenVint()) { - m_realdummy = -999; - return m_realdummy; - } - return s_pyint1->vint[n-1]; -} diff --git a/Generators/Pythia_i/src/Pyint2.cxx b/Generators/Pythia_i/src/Pyint2.cxx deleted file mode 100644 index b0df2968eea0596601db163484b63fbffd9eb7f9..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/src/Pyint2.cxx +++ /dev/null @@ -1,66 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// access pythia common Pyint2 -#include "Pythia_i/Pyint2.h" - -// set pointer to zero at start -Pyint2::PYINT2* Pyint2::s_pyint2 =0; - -// Constructor -Pyint2::Pyint2() -{ - m_dummy=-999; - m_realdummy=-999.; -} - -// Destructor -Pyint2::~Pyint2() -{ -} - -// access iset in common -int& Pyint2::iset(int n) { - init(); // check COMMON is initialized - if(n < 1 || n > lenIset()) { - m_dummy = -999; - return m_dummy; - } - return s_pyint2->iset[n-1]; -} - -// access kfpr in common - int& Pyint2::kfpr(int n, int i) { - init(); // check COMMON is initialized - if(n < 1 || n > lenKfpr() || - i <1 || i >depthKfpr()) { - m_dummy = -999; - return m_dummy; - } - return s_pyint2->kfpr[i-1][n-1]; -} - -// access coef in common -double& Pyint2::coef(int n, int i) { - init(); // check COMMON is initialized - if(n < 1 || n > lenCoef() || - i <1 || i > depthCoef()) { - m_realdummy = -999.; - return m_realdummy; - } - return s_pyint2->coef[i-1][n-1]; -} - -// access icol in common -int& Pyint2::icol(int n, int i ,int j) { - init(); // check COMMON is initialized - if(n < 1 || n > lenIcol() || - i <1 || i > depthIcol() || - j < 1 || j > widthIcol() ) { - m_dummy = -999; - return m_dummy; - } - return s_pyint2->icol[j-1][i-1][n-1]; -} - diff --git a/Generators/Pythia_i/src/Pyint5.cxx b/Generators/Pythia_i/src/Pyint5.cxx deleted file mode 100644 index b91fc8c9eb6e931acd08bc644eea4a3fb2538b3d..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/src/Pyint5.cxx +++ /dev/null @@ -1,54 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// access pythia common Pyint5 -#include "Pythia_i/Pyint5.h" - -// set pointer to zero at start -Pyint5::PYINT5* Pyint5::s_pyint5 =0; - -// Constructor -Pyint5::Pyint5() -{ - m_dummy=-999; - m_realdummy=-999.; -} - -// Destructor -Pyint5::~Pyint5() -{ -} - -// access ngenpd in common -int& Pyint5::ngenpd() { - init(); // check COMMON is initialized - return s_pyint5->ngenpd; -} - -// access ngen in common - int& Pyint5::ngen(int n, int i) { - init(); // check COMMON is initialized - if(n < 0 || n > lenNgen() || - i <1 || i >depthNgen()) { - m_dummy = -999; - return m_dummy; - } -// return s_pyint5->ngen[i][n-1]; - return s_pyint5->ngen[i-1][n]; -} - -// access xsec in common -double& Pyint5::xsec(int n, int i) { - init(); // check COMMON is initialized - if(n < 0 || n > lenXsec() || - i <1 || i > depthXsec()) { - m_realdummy = -999.; - return m_realdummy; - } -// return s_pyint5->xsec[i][n-1]; - return s_pyint5->xsec[i-1][n]; -} - - - diff --git a/Generators/Pythia_i/src/Pymsrv.cxx b/Generators/Pythia_i/src/Pymsrv.cxx deleted file mode 100644 index 81b06cdc9e4e370e23082e6ebc8c04f7be7d2336..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/src/Pymsrv.cxx +++ /dev/null @@ -1,65 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#include "Pythia_i/Pymsrv.h" -#include <iostream> - -Pymsrv::PYMSRV* Pymsrv::s_pymsrv = 0; - -Pymsrv::Pymsrv() - : - m_dummy(-999) - , m_realdummy(-999.0) -{ - init(); -} - -Pymsrv::~Pymsrv() -{ -} - -double& Pymsrv::rvlam(int n) { - int i1(n/100); - int i2((n-i1*100)/10); - int i3(n-i1*100-i2*10); - if (i1<1 || i1>3 || i2<1 || i2>3 || i3<1 || i3>3) { - std::cout - << "Pymsrv: attempt to read or write RVLAM out of bounds" << std::endl; - m_dummy=-999; - return m_dummy; - } else { - std::cout << "Pymsrv: lambda indices " << i1 << " " << i2 << " " << i3 << std::endl; - return s_pymsrv->rvlam[i3-1][i2-1][i1-1]; // note ``-1''. CLA, this way the indices work as expected. - } -} - -double& Pymsrv::rvlamp(int n) { - int i1(n/100); - int i2((n-i1*100)/10); - int i3(n-i1*100-i2*10); - if (i1<1 || i1>3 || i2<1 || i2>3 || i3<1 || i3>3) { - std::cout - << "Pymsrv: attempt to read or write RVLAMP out of bounds" << std::endl; - m_dummy=-999; - return m_dummy; - } else { - std::cout << "Pymsrv: lambda^prime indices " << i1 << " " << i2 << " " << i3 << std::endl; - return s_pymsrv->rvlamp[i3-1][i2-1][i1-1]; // note ``-1''. CLA, this way the indices work as expected. - } -} - -double& Pymsrv::rvlamb(int n) { - int i1(n/100); - int i2((n-i1*100)/10); - int i3(n-i1*100-i2*10); - if (i1<1 || i1>3 || i2<1 || i2>3 || i3<1 || i3>3) { - std::cout - << "Pymsrv: attempt to read or write RVLAMB out of bounds" << std::endl; - m_dummy=-999; - return m_dummy; - } else { - std::cout << "Pymsrv: lambda^doubelprime indices " << i1 << " " << i2 << " " << i3 << std::endl; - return s_pymsrv->rvlamb[i3-1][i2-1][i1-1]; // note ``-1''. CLA, this way the indices work as expected. - } -} diff --git a/Generators/Pythia_i/src/Pymssm.cxx b/Generators/Pythia_i/src/Pymssm.cxx deleted file mode 100644 index a686836fb776f17309b65425ab7cd276b1e550ac..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/src/Pymssm.cxx +++ /dev/null @@ -1,42 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#include "Pythia_i/Pymssm.h" -#include <iostream> - -Pymssm::PYMSSM* Pymssm::s_pymssm = 0; - -Pymssm::Pymssm() - : - m_dummy(-999) - , m_realdummy(-999.0) -{ - init(); -} - -Pymssm::~Pymssm() -{ -} - -int& Pymssm::imss(int n) { - if (n<0 || n>=s_lenImss) { - std::cout - << "Pymssm: attempt to read or write IMSS out of bounds" << std::endl; - m_dummy=-999; - return m_dummy; - } else { - return s_pymssm->imss[n]; // note the lack of a ``-1''. This is intentional. - } -} - -double& Pymssm::rmss(int n) { - if (n<0 || n>=s_lenRmss) { - std::cout - << "Pymssm: attempt to read or write RMSS out of bounds" << std::endl; - m_realdummy=-999.0; - return m_realdummy; - } else { - return s_pymssm->rmss[n]; // note the lack of a ``-1''. This is intentional. - } -} diff --git a/Generators/Pythia_i/src/Pypars.cxx b/Generators/Pythia_i/src/Pypars.cxx deleted file mode 100644 index e9ccd70234e5fda3b3ff08b5da5c8710b3e9db7f..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/src/Pypars.cxx +++ /dev/null @@ -1,62 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// access pythia common Pypars -#include "Pythia_i/Pypars.h" - -// set pointer to zero at start -Pypars::PYPARS* Pypars::s_pypars =0; - -// Constructor -Pypars::Pypars() -{ - m_dummy=-999; - m_realdummy=-999.; -} - -// Destructor -Pypars::~Pypars() -{ -} - -// access mstp in common -int& Pypars::mstp(int n) { - init(); // check COMMON is initialized - if(n < 1 || n > lenMstp()) { - m_dummy = -999; - return m_dummy; - } - return s_pypars->mstp[n-1]; -} - -// access parp in common -double& Pypars::parp(int n) { - init(); // check COMMON is initialized - if(n < 1 || n > lenParp()) { - m_realdummy = -999.; - return m_realdummy; - } - return s_pypars->parp[n-1]; -} - -// access msti in common -int& Pypars::msti(int n) { - init(); // check COMMON is initialized - if(n < 1 || n > lenMsti()) { - m_dummy = -999; - return m_dummy; - } - return s_pypars->msti[n-1]; -} - -// access pari in common -double& Pypars::pari(int n) { - init(); // check COMMON is initialized - if(n < 1 || n > lenPari()) { - m_realdummy = -999.; - return m_realdummy; - } - return s_pypars->pari[n-1]; -} - diff --git a/Generators/Pythia_i/src/Pypevwt.cxx b/Generators/Pythia_i/src/Pypevwt.cxx deleted file mode 100644 index 355ab522f6c2d2a7aa458c1b7414a03655b953e5..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/src/Pypevwt.cxx +++ /dev/null @@ -1,42 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#include "Pythia_i/Pypevwt.h" -#include <iostream> - -Pypevwt::PYPEVWT* Pypevwt::s_pypevwt = 0; - -Pypevwt::Pypevwt() - : - m_dummy(-999) - , m_realdummy(-999.0) -{ - init(); -} - -Pypevwt::~Pypevwt() -{ -} - -int& Pypevwt::ievwt(int n) { - if (n<1 || n>=s_lenIevwt+1) { - std::cout - << "Pypevwt: attempt to read or write IEVWT out of bounds" << std::endl; - m_dummy=-999; - return m_dummy; - } else { - return s_pypevwt->ievwt[n-1]; - } -} - -double& Pypevwt::revwt(int n) { - if (n<1 || n>=s_lenRevwt+1) { - std::cout - << "Pypevwt: attempt to read or write REVWT out of bounds" << std::endl; - m_realdummy=-999.0; - return m_realdummy; - } else { - return s_pypevwt->revwt[n-1]; - } -} diff --git a/Generators/Pythia_i/src/Pypued.cxx b/Generators/Pythia_i/src/Pypued.cxx deleted file mode 100644 index 4846fadd8b545117524bb27d11268b7258461bd2..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/src/Pypued.cxx +++ /dev/null @@ -1,42 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#include "Pythia_i/Pypued.h" -#include <iostream> - -Pypued::PYPUED* Pypued::s_pypued = 0; - -Pypued::Pypued() - : - m_dummy(-999) - , m_realdummy(-999.0) -{ - init(); -} - -Pypued::~Pypued() -{ -} - -int& Pypued::iued(int n) { - if (n<0 || n>=s_lenIued) { - std::cout - << "Pypued: attempt to read or write IUED out of bounds" << std::endl; - m_dummy=-999; - return m_dummy; - } else { - return s_pypued->iued[n]; // note the lack of a ``-1''. This is intentional. - } -} - -double& Pypued::rued(int n) { - if (n<0 || n>=s_lenRued) { - std::cout - << "Pypued: attempt to read or write RUED out of bounds" << std::endl; - m_realdummy=-999.0; - return m_realdummy; - } else { - return s_pypued->rued[n]; // note the lack of a ``-1''. This is intentional. - } -} diff --git a/Generators/Pythia_i/src/Pyssmt.cxx b/Generators/Pythia_i/src/Pyssmt.cxx deleted file mode 100644 index 63fe05b50e28acd584baf52725a067ca632ee0b1..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/src/Pyssmt.cxx +++ /dev/null @@ -1,76 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#include "Pythia_i/Pyssmt.h" -#include <iostream> -Pyssmt::PYSSMT const * Pyssmt::s_pyssmt = 0; - -Pyssmt::Pyssmt() - : - m_dummy(-999) - , m_realdummy(-999.0) -{ - init(); -} - -Pyssmt::~Pyssmt() -{ -} - -const double& Pyssmt::zmix(int i, int j) const { - if (i<0 || i>s_sizeZmix || j<0 || j>s_sizeZmix) { - std::cout - << "Pyssmt: attempt to read or write ZMIX out of bounds" << std::endl; - m_realdummy=-999.0; - return m_realdummy; - } else { - return s_pyssmt->zmix[j-1][i-1]; - } -} - -const double& Pyssmt::umix(int i, int j) const { - if (i<0 || i>s_sizeUmix || j<0 || j>s_sizeUmix) { - std::cout - << "Pyssmt: attempt to read or write UMIX out of bounds" << std::endl; - m_realdummy=-999.0; - return m_realdummy; - } else { - return s_pyssmt->umix[j-1][i-1]; - } -} - -const double& Pyssmt::vmix(int i, int j) const { - if (i<0 || i>s_sizeVmix || j<0 || j>s_sizeVmix) { - std::cout - << "Pyssmt: attempt to read or write VMIX out of bounds" << std::endl; - m_realdummy=-999.0; - return m_realdummy; - } else { - return s_pyssmt->vmix[j-1][i-1]; - } -} - -const double& Pyssmt::smz(int i) const { - if (i<0 || i>s_lenSmz) { - std::cout - << "Pyssmt: attempt to read or write SMZ out of bounds" << std::endl; - m_realdummy=-999.0; - return m_realdummy; - } else { - return s_pyssmt->smz[i-1]; - } -} - -const double& Pyssmt::smw(int i) const { - if (i<0 || i>s_lenSmw) { - std::cout - << "Pyssmt: attempt to read or write SMW out of bounds" << std::endl; - m_realdummy=-999.0; - return m_realdummy; - } else { - return s_pyssmt->smw[i-1]; - } -} - - diff --git a/Generators/Pythia_i/src/Pysubs.cxx b/Generators/Pythia_i/src/Pysubs.cxx deleted file mode 100644 index 6ce0a3ff2354b5216edbfb0de7bc2f28cb54913b..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/src/Pysubs.cxx +++ /dev/null @@ -1,69 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// access Pythia common Pysubs -#include "Pythia_i/Pysubs.h" - -//#ifdef DEFECT_OLD_STDC_HEADERS -//extern "C" { -//#include <stdlib.h> -//} -//#else -#include <cstdlib> -//#endif - -// set pointer to zero at start -Pysubs::PYSUBS* Pysubs::s_pysubs =0; - -// Constructor -Pysubs::Pysubs() -{ - m_dummy=-999; - m_realdummy=-999.; -} - -// Destructor -Pysubs::~Pysubs() -{ -} - -// access msel in common -int& Pysubs::msel() { - init(); // check COMMON is initialized - return s_pysubs->msel; -} - -// access msub in common -int& Pysubs::msub(int n) { - init(); // check COMMON is initialized - if(n < 1 || n > lenMsub()) { - m_dummy = -999; - return m_dummy; - } - return s_pysubs->msub[n-1]; -} - -// access kfin in common -int& Pysubs::kfin(int iside, int jflav) { - init(); // check COMMON is initialized - int half_lenKfin = lenKfin()/2; - if(std::abs(jflav) > half_lenKfin || - iside < 1 || iside > depthKfin()) - { - m_dummy = -999; - return m_dummy; - } - return s_pysubs->kfin[jflav+half_lenKfin][iside-1]; -} - -// access ckin in common -double& Pysubs::ckin(int n) { - init(); // check COMMON is initialized - if(n < 1 || n > lenCkin()) { - m_realdummy = -999.; - return m_realdummy; - } - return s_pysubs->ckin[n-1]; -} - diff --git a/Generators/Pythia_i/src/Pytcsm.cxx b/Generators/Pythia_i/src/Pytcsm.cxx deleted file mode 100644 index fb7db6e9650d648e398502b761276885403df24e..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/src/Pytcsm.cxx +++ /dev/null @@ -1,42 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#include "Pythia_i/Pytcsm.h" -#include <iostream> - -Pytcsm::PYTCSM* Pytcsm::s_pytcsm = 0; - -Pytcsm::Pytcsm() - : - m_dummy(-999) - , m_realdummy(-999.0) -{ - init(); -} - -Pytcsm::~Pytcsm() -{ -} - -int& Pytcsm::itcm(int n) { - if (n<0 || n>=s_lenItcm) { - std::cout - << "Pytcsm: attempt to read or write ITCM out of bounds" << std::endl; - m_dummy=-999; - return m_dummy; - } else { - return s_pytcsm->itcm[n]; // note the lack of a ``-1''. This is intentional. - } -} - -double& Pytcsm::rtcm(int n) { - if (n<0 || n>=s_lenRtcm) { - std::cout - << "Pytcsm: attempt to read or write RTCM out of bounds" << std::endl; - m_realdummy=-999.0; - return m_realdummy; - } else { - return s_pytcsm->rtcm[n]; // note the lack of a ``-1''. This is intentional. - } -} diff --git a/Generators/Pythia_i/src/Pythia.cxx b/Generators/Pythia_i/src/Pythia.cxx deleted file mode 100644 index 6f4100a5c385464a1e92ab4f37c622d41ce278c6..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/src/Pythia.cxx +++ /dev/null @@ -1,1088 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// File: GeneratorModules/Pythia.cxx -// Description: Generate pythia events and store the result in the Transient Store. -// -// AuthorList: -// Ian Hinchliffe: Initial Code June: 2000 -// Modeled after the CDF code by Stan Thompson -// Parsing added August 2000 -// More switches added Feb 2001 -// Les Houches external process interface added May 2002 -// Added access to pyint1 common Sept 2002 -// Added access to pypued common Oct. 2008 (L. Mijovic, liza.mijovic@cern.ch) -// Direct use of generator codes - replaced with gen. names (E.M.Lobodzinska, Dec 2008) -// Remove obsolete code and pseudo atlas default pythia settings (Cano Ay, April 2009) -// Move Pythia ATLAS tune from Pythia_i + jO to Pythia_i, LM -// Added PYGIVE functionality, LM, Jul. 09 -// Tunes schema, LM, Aug. 09 -// Conversion to AthAlgorithm methods (via GenModule) and clean-up, Andy Buckley, Dec 2009 -// added access to pypevwt common, March 2010: Eric Feng (Chicago) <Eric.Feng@cern.ch> - -#include "Pythia_i/Pythia.h" -#include "TruthUtils/GeneratorName.h" -#include "GeneratorUtils/StringParse.h" -#include <cstdlib> - -#include "CLHEP/Random/RandFlat.h" -#include "AthenaKernel/IAtRndmGenSvc.h" - -#include "HepMC/IO_HEPEVT.h" -#include "HepMC/HEPEVT_Wrapper.h" - -#include "ExoGraviton_i/ExoGraviton.h" -#include "PathResolver/PathResolver.h" - -#include "Pythia_i/Lhefinfo.h" - -#include "boost/algorithm/string/trim.hpp" - - -// Pointer to AtRndmGenSvc -IAtRndmGenSvc* Pythia::p_AtRndmGenSvc = 0; -std::string Pythia::pythia_stream = "PYTHIA_INIT"; -extern "C" double atl_pyr_( int* /*idummy*/ ) -{ - CLHEP::HepRandomEngine* engine = Pythia::p_AtRndmGenSvc->GetEngine(Pythia::pythia_stream); - return CLHEP::RandFlat::shoot(engine); -} - -extern "C" { - void initpyblock_(int*, const char*); - int openrandom_(int*, int*, const char*); - void pyinit_(const char*, - const char*, - const char*, - double* , - int, // lengths of character strings - int,// (should be value, not reference) - int - ); - void pyevnt_(); - void pyevnw_(); - void pystat_(int*); - void pylist_(int*); - void pyupda_(int*, int*); - void pyrget_(int*, int*); - void pyrset_(int*, int*); - void addparticle_(const char*, int slen); - //pygive implementation: calls Pythia SUBROUTINE PYGIVE(CHIN) - void pygive_(const char*,int); // character string to pygive && its length - //pytune : calls Pythia SUBROUTINE PYTUNE(ITUNE) - //this call should be used in case one wants to override some of the values PYTUNE sets from the jO - //in contrary to using MSTP(5) value the PYTUNE will in this case act before PYINIT - void pytune_(int*); // value of int corresponds to the respective ITUNE value - int pycomp_(int*); - // void lunhep_(int*); // STDHEP routine for PYJETS->HEPEVT - void pyhepc_(int*); - int opdcay_(const char*, int*, char*, int, int); - void cldcay_(int*); - void rinpar_(); // comphep - void subnum_(); // comphep file - void rheader_(); // comphep initialization - void extproc_(int*); - void opensusyfile_(const char* ,int * , int); - void setecm_(double*); - void parout_(int*); - - -} - - -Atlas_HEPEVT* Pythia::s_atlas_HEPEVT = new Atlas_HEPEVT(); - - -//-------------------------------------------------------------------------- - - -Pythia::Pythia(const std::string& name, ISvcLocator* pSvcLocator) - : GenModule(name, pSvcLocator) -{ - pythia_stream="PYTHIA_INIT"; - // ATLAS default tune - m_Default_Tune_Name="ATLAS_20100001"; - m_Default_Tune_Type="ATLAS"; - m_Default_Tune_Index=20100001; - m_Starting_Tune_Name="ATLAS_99999999"; - m_Starting_Tune_Type="ATLAS"; - m_Starting_Tune_Index=99999999; - //set dummy values at start - m_Tune_Index=0; - m_Tune_Type=""; - //for non-0 value call PYTUNE directly - m_direct_call_to_pytune=0; - // some defaults - m_firstlistevent = -1; - m_lastlistevent = -1; - // old schema, backw. compatibility - m_mc0809_Tune_Type="ATLAS"; - m_mc09_Tune_Index=20090001; - m_mc08_Tune_Index=20080001; - m_Default_useAtlasPythiaRecomm=true; - m_Default_useAtlasPythiaCommon=true; - m_Default_useAtlasPythiaTune09=false; - m_Default_useAtlasPythiaTune08=false; - m_Default_useNoAtlasPythiaParam=false; - // printing-out manually set x-section for the MetaData - m_Default_SetCrossSection=-1.0; - m_Default_xsscale=-99999; - // properties - declareProperty("SusyInputFile", m_read_Filesusy = " "); - declareProperty("PythiaCommand", m_pythiaCommandVector); - declareProperty("PygiveCommand", m_PygiveCommandVector); - declareProperty("Direct_call_to_pytune", m_direct_call_to_pytune); - declareProperty("Param_Query_AfterInit",m_Param_Query_AfterInit); - declareProperty("Param_Query_AfterGen", m_Param_Query_AfterGen); - declareProperty("CrossSectionScaleFactor", m_xsscale=m_Default_xsscale); - declareProperty("SetAtlasDefaults", m_AtlasDefaults = false ); - declareProperty("Tune_Name", m_Tune_Name = m_Starting_Tune_Name ); - declareProperty("SetCrossSection",m_SetCrossSection=m_Default_SetCrossSection); - declareProperty("addParticle", m_addParticle = false ); - // old schema, backw. compatibility - declareProperty("useAtlasPythiaRecomm", m_useAtlasPythiaRecomm = m_Default_useAtlasPythiaRecomm); - declareProperty("useAtlasPythiaCommon", m_useAtlasPythiaCommon = m_Default_useAtlasPythiaCommon); - declareProperty("useAtlasPythiaTune09", m_useAtlasPythiaTune09 = m_Default_useAtlasPythiaTune09); - declareProperty("useAtlasPythiaTune08", m_useAtlasPythiaTune08 = m_Default_useAtlasPythiaTune08); - declareProperty("useNoAtlasPythiaParam", m_useNoAtlasPythiaParam = m_Default_useNoAtlasPythiaParam); - - m_pygive_cstr = 0; - m_pygive_gen_cstr = 0; - m_pygive_init_cstr = 0; - - m_win = 0.; - m_msel = 0; - m_eventlistlevel = 0; - m_initlistlevel = 0; - m_randomseed = 0; - m_fortout = 0; - m_RndmFileNumber = 0; - m_RndmSwitch = 0; - m_RndmFirstEvent = 0; - m_RndmSkipEvents = 0; - m_RndmMOVE = 0; - m_RndmFileLength = 0; - m_events = 0; - m_ExternalProcess = 0; - m_atlasTune_loop_prot = 0; - -} -//-------------------------------------------------------------------------- -Pythia::~Pythia(){ -//-------------------------------------------------------------------------- -} -//------------------------------------------------------------- -//-------------- -// Operations -- -//-------------- -Pydat1& Pythia::pydat1() { - return m_pydat1; -} -Pydat2& Pythia::pydat2() { - return m_pydat2; -} -Pydat3& Pythia::pydat3() { - return m_pydat3; -} -Pysubs& Pythia::pysubs() { - return m_pysubs; -} -Pypars& Pythia::pypars() { - return m_pypars; -} -Pydatr& Pythia::pydatr() { - return m_pydatr; -} -Pymssm& Pythia::pymssm() { - return m_pymssm; -} -Pypued& Pythia::pypued() { - return m_pypued; -} -Pypevwt& Pythia::pypevwt() { - return m_pypevwt; -} -Pymsrv& Pythia::pymsrv() { - return m_pymsrv; -} -Pyint1& Pythia::pyint1() { - return m_pyint1; -} -Pyint2& Pythia::pyint2() { - return m_pyint2; -} -Pyint5& Pythia::pyint5() { - return m_pyint5; -} -Pytcsm& Pythia::pytcsm() { - return m_pytcsm; -} -AcerMC_acset& Pythia::acermc_acset() { - return m_acermc_acset; -} - - -//--------------------------------------------------------------------------- - - -StatusCode Pythia::genInitialize() { - // Initialise the listing output, parameter and decay data input streams - ATH_MSG_INFO(" PYTHIA INITIALISING."); - - /// @todo Use ServiceHandle - static const bool CREATEIFNOTTHERE(true); - StatusCode RndmStatus = service("AtRndmGenSvc", - Pythia::p_AtRndmGenSvc, - CREATEIFNOTTHERE); - if (!RndmStatus.isSuccess() || 0 == Pythia::p_AtRndmGenSvc) - { - ATH_MSG_ERROR(" Could not initialize Random Number Service"); - return RndmStatus; - } - Pythia::pythia_stream = "PYTHIA_INIT"; - - m_atlasTune_loop_prot=0; - - // set up the input parameters to pyinit: these can be changed by the user - m_frame = "CMS "; - m_beam = "P "; - m_target = "P "; - m_win=10000.; - m_initlistlevel=11; - m_pystatlistlevel.push_back(1); - m_fortout=0; - - m_RndmFileName=" "; - m_RndmFileNumber=0; - m_RndmSwitch=0; - m_RndmFirstEvent=1; - m_RndmSkipEvents=0; - m_RndmMOVE=0; - m_RndmFileLength=0; - m_ExternalProcess = 0; - - // end of setup to pyinit -// special initialisation for Pythiasgluon - if(m_addParticle==true) - { -//adding a new particle to Pythia for PythiaSgluon - std::string s_newParticleCARD_path = - PathResolver::find_file("sgluons.dat", "DATAPATH"); - const char* c_newParticleCARD_path = s_newParticleCARD_path.c_str(); - addparticle_(c_newParticleCARD_path,strlen(c_newParticleCARD_path)); - } - //now set defaults - m_randomseed=19780503; - this->pydatr().mrpy(1) = m_randomseed; // can be overwritten by user - // default process is ttbar - // these can be overwritten by user. - m_msel=6; - this->pysubs().msel() = m_msel; - - // Set the ATLAS defaults - if (m_AtlasDefaults) - { - ATH_MSG_WARNING("********** You have chosen the default Atlas Settings. **********"); - ATH_MSG_WARNING("********** This switch is not valid any more. **********"); - } - - //m_Tune_Name parsing to find m_Tune_Type and m_Tune_Index for setPythiaTune() and atlasTune() calls - std::string::size_type sep_index = m_Tune_Name.find_first_of('_'); - if (sep_index != std::string::npos) - { - m_Tune_Type=m_Tune_Name.substr(0,sep_index); - // atoi : returns 0 if conversion not possible - no additional protection needed - m_Tune_Index=atoi((m_Tune_Name.substr(sep_index+1,m_Tune_Name.length()-1)).c_str()); - } - else - { - // invalid Tune_Name, m_Tune_Type and m_Tune_Index kept at the dummy vals from constructor, - // let setPythiaTune() handle the error - ATH_MSG_WARNING("Invalid Tune_Name: "<< m_Tune_Name <<" specified ."); - } - // set any Pythia parameters different from Pythia defaults - // allow only one reset - if (m_atlasTune_loop_prot<2) - { - // m_atlasTune_loop_prot counts setPythiaTune() calls in setPythiaTune.cxx - StatusCode sc=setPythiaTune(); - if ( sc.isFailure() ) - { - ATH_MSG_FATAL("ERROR returned from setPythiaTune, exit."); - return StatusCode::FAILURE; - } - } - else - { - ATH_MSG_FATAL("More than one reset attempt of tune using setPythiaTune."); - ATH_MSG_FATAL("Please correct your jobOptions."); - return StatusCode::FAILURE; - } - - //call pytune directly in case any parameters set py the tune are to be overwritten from jO - if (m_direct_call_to_pytune!=0) pytune_(&m_direct_call_to_pytune); - - //PYGIVE command parsing && call - for (unsigned int i = 0; i < m_PygiveCommandVector.size(); i++) - { - m_pygive_cstr = (m_PygiveCommandVector[i]).c_str(); - pygive_(m_pygive_cstr,strlen(m_pygive_cstr)); - } - - // Parse Commands and Set Values from Properties Service... - for (unsigned int i = 0; i < m_pythiaCommandVector.size(); i++) { - ATH_MSG_INFO(" Command is: " << m_pythiaCommandVector[i]); - StringParse mystring(m_pythiaCommandVector[i]); - string myblock = mystring.piece(1); - string myentry = mystring.piece(2); - string mystr = mystring.piece(3); - string mystr2 = mystring.piece(4); - string mystr3 = mystring.piece(5); - int myint1 = mystring.intpiece(3); - int myint2 = mystring.intpiece(4); - int myint3 = mystring.intpiece(5); - int myint4 = mystring.intpiece(6); - int myint5 = mystring.intpiece(7); - double myfl0 = mystring.numpiece(3); - double myfl1 = mystring.numpiece(4); - double myfl2 = mystring.numpiece(5); - double myfl3 = mystring.numpiece(6); - // For ExoGraviton_i and PythiaBc_i user param. input - int myint6 = mystring.intpiece(2); - - // Print a warning when attempt is made to choose PYTUNE tune via MSTP(5) ; - // more than MSTP(5) setting is needed for consistent PYTUNE run within Athena - if (myblock == "pypars" && myentry == "mstp" && myint1==5) - { - ATH_MSG_WARNING("--------------------------------------------------------------------------------\n" - << " MSTP(5) set to "<< myint2 <<", Pythia recieves a command to run PYTUNE # " << myint2 << "\n" - << " Please note: " << "\n" - << " 1. it is up to you to switch off any ATLAS defaults you do not want to use; " << "\n" - << " - the interface takes care of this if PYTUNE tune is called via Pythia.Tune_Name=\"PYTUNE_" << myint2 << "\" in the jO." << "\n" - << " 2. in the jO overrides of the parameters set by PYTUNE # " << myint2 << " will have no effect " << "\n" - << " - this correspods to (standalone) Pythia behavior " << "\n" - << " 3. handling of non-existing PYTUNE tune is same as for (default) Pythia standalone." << "\n" - << "--------------------------------------------------------------------------------"); - } - - // Note that Pythia needs doubles hence the convert here - if (myentry!="use_PYINIT") - { - ATH_MSG_INFO(myblock << " block " << myentry << " item " << myint1 << " value " << myfl1); - } - else ATH_MSG_INFO(myblock << " block " << myentry << " set to " << mystr << " " <<mystr2<<" " <<mystr3<<" "<<myfl3); - - if (myblock=="pyinit") { - if (myentry=="user"){ - m_frame = "USER "; - m_external=mystr; - m_ExternalProcess = generator_int(mystr); - extproc_(&m_ExternalProcess); - } - else if(myentry=="use_PYINIT") - { - m_frame=mystr; - m_beam=mystr2; - m_target=mystr3; - m_win=myfl3; - } - else if(myentry=="FIXT"){ - m_frame="FIXT"; - } - else if(myentry=="pbar"){ - m_beam="P~- "; - } - else if(myentry=="win"){ - m_win=myfl0; - } - else if(myentry=="pylisti"){ - m_initlistlevel=myint1; - } - else if(myentry=="pylistf"){ - m_eventlistlevel=myint1; - } - else if(myentry=="dumpr"){ - m_firstlistevent=myint1; - m_lastlistevent=myint2; - } - else if(myentry=="output"){ - m_envval1=mystr; - m_fortout=49; - this->pydat1().mstu(11)=m_fortout; - } - else if(myentry=="rndm_IO"){ - m_RndmFileName=mystr; - m_RndmFileNumber=36; - m_RndmSwitch=myint2; - m_RndmFirstEvent=myint3; - m_RndmSkipEvents=myint4; - m_RndmMOVE=myint5; - if (m_RndmSwitch == 1) ++m_RndmSkipEvents; - - if (m_RndmSwitch > 0) - { - if (m_RndmFirstEvent < 1 || m_RndmSkipEvents < 0) - { - ATH_MSG_ERROR(" INCONSISTENT SET OF rndm_IO PARAMETERS : FirstEvent < 1 || SkipEvents < 0. DUMPING RNDM SEEDS SWITCHED OFF" << myentry); - m_RndmSwitch = 0; - } - } - - ATH_MSG_INFO(" !!!!!!!!!! WARNING ON PYTHIA RANDOM NUMBERS !!!!!!!! "); - ATH_MSG_INFO(" THE ATHENA/PYTHIA DOES NOT USE ANY MORE THE STANDARD "); - ATH_MSG_INFO(" PYTHIA RANDOM NUMBER SERVICES. SINCE RELEASE 5.2.0 THE"); - ATH_MSG_INFO(" ATHENA SERVICE AtRndmGenSvc IS USED. PLEASE FOR MORE "); - ATH_MSG_INFO(" DETAILS LOOK IN "); - ATH_MSG_INFO(" http://atlassw1.phy.bnl.gov/lxrsource/current/atlas/Generators/GeneratorModules/doc/Pythia.pdf "); - ATH_MSG_INFO(" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! "); - - m_RndmSwitch = 0; - } - else { - ATH_MSG_ERROR("PYTHIA ERROR, entry PYINIT has USER PBAR PYLISTI PYLISTF PYSTAT OUTPUT DUMPR WIN use_PYINIT AND RNDM_IO: YOU HAVE SPECIFIED " << myentry); - } - - - } - else if (myblock == "pysubs") { - if(myentry == "msel"){ - this->pysubs().msel()=myint1; - } - else if (myentry == "msub"){ - this->pysubs().msub(myint1)=myint2; - } - else if (myentry == "ckin"){ - this->pysubs().ckin(myint1)=myfl1; - } - else if (myentry == "kfin"){ - this->pysubs().kfin(myint1,myint2)=myint3; - } - else { - ATH_MSG_ERROR("PYTHIA ERROR, block PYSUBS has MSEL, MSUB, KFIN AND CKIN: YOU HAVE SPECIFIED " << myentry); - } - } - else if (myblock == "pypars"){ - if(myentry == "mstp"){ - this->pypars().mstp(myint1)=myint2; - } - else if(myentry == "msti"){ - this->pypars().msti(myint1)=myint2; - } - else if(myentry == "parp"){ - this->pypars().parp(myint1)=myfl1; - } - else if(myentry == "pari"){ - this->pypars().pari(myint1)=myfl1; - } - else { - ATH_MSG_ERROR("PYTHIA ERROR, block PYPARS has MSTP,PARP, MSTI AND PARI: YOU HAVE SPECIFIED " << myentry); - } - } - else if (myblock == "pydat1"){ - if(myentry == "mstu"){ - this->pydat1().mstu(myint1)=myint2; - } - else if(myentry == "mstj"){ - this->pydat1().mstj(myint1)=myint2; - } - else if(myentry == "paru"){ - this->pydat1().paru(myint1)=myfl1; - } - else if(myentry == "parj"){ - this->pydat1().parj(myint1)=myfl1; - } - else { - ATH_MSG_ERROR("PYTHIA ERROR, block PYDAT1 HAS MSTU, MSTJ, PARU AND PARJ: YOU HAVE SPECIFIED " << myentry); - } - } - else if (myblock == "pydat2"){ - if(myentry == "kchg"){ - this->pydat2().kchg(myint1,myint2)=myint3; - } - else if(myentry == "pmas"){ - this->pydat2().pmas(pycomp_(&myint1),myint2)=myfl2; - } - else if(myentry == "parf"){ - this->pydat2().parf(myint1)=myfl1; - } - else if(myentry == "vckm"){ - this->pydat2().vckm(myint1,myint2)=myfl2; - } - else { - ATH_MSG_ERROR("PYTHIA ERROR, block PYDAT2 HAS KCHG, PMAS, PARF AND VCKM: YOU HAVE SPECIFIED " << myentry); - } - } - else if (myblock == "pydat3"){ - if(myentry == "mdcy"){ - this->pydat3().mdcy(myint1,myint2)=myint3; - } - else if(myentry == "mdme"){ - this->pydat3().mdme(myint1,myint2)=myint3; - } - else if(myentry == "brat"){ - this->pydat3().brat(myint1)=myfl1; - } - else if(myentry == "kfdp"){ - this->pydat3().kfdp(myint1,myint2)=myint3; - } - else { - ATH_MSG_ERROR("PYTHIA ERROR, block PYDAT3 HAS KFDP, MDCY, BRAT AND MDME : YOU HAVE SPECIFIED " << myentry); - } - } - else if (myblock == "pydatr"){ - if(myentry == "mrpy"){ - ATH_MSG_INFO(" !!!!!!!!!! WARNING ON PYTHIA RANDOM NUMBERS !!!!!!!! "); - ATH_MSG_INFO(" THE ATHENA/PYTHIA DOES NOT USE ANY MORE THE STANDARD "); - ATH_MSG_INFO(" PYTHIA RANDOM NUMBER SERVICES. SINCE RELEASE 5.2.0 THE"); - ATH_MSG_INFO(" ATHENA SERVICE AtRndmGenSvc IS USED. PLEASE FOR MORE "); - ATH_MSG_INFO(" DETAILS LOOK IN "); - ATH_MSG_INFO(" http://atlassw1.phy.bnl.gov/lxrsource/current/atlas/Generators/GeneratorModules/doc/Pythia.pdf "); - ATH_MSG_INFO(" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! "); - - this->pydatr().mrpy(myint1)=myint2; - } - else if(myentry == "rrpy"){ - this->pydatr().rrpy(myint1)=myfl1; - } - else { - ATH_MSG_ERROR("PYTHIA ERROR, block PYDATR HAS MRPY AND RRPY: YOU HAVE SPECIFIED " << myentry); - } - } - else if (myblock == "pymssm"){ - if (myentry=="imss"){ - if (myint1 == 21 || myint1 == 22) { - ATH_MSG_WARNING("The setting of imss(21) and imss(22) is not allowed. When imss(1)=11 is chosen imss(21) and imss(22) are set to 66 by default"); - } else { - this->pymssm().imss(myint1)=myint2; - } - } - else if (myentry=="rmss"){ - this->pymssm().rmss(myint1)=myfl1; - } - else { - ATH_MSG_ERROR("PYTHIA ERROR, block PYMSSM has IMSS AND RMSS: YOU HAVE SPECIFIED "<< myentry); - } - } - else if (myblock == "pypued"){ - if (myentry=="iued") - { - this->pypued().iued(myint1)=myint2; - } - else if (myentry=="rued"){ - this->pypued().rued(myint1)=myfl1; - } - else { - ATH_MSG_ERROR("PYTHIA ERROR, block PYPUED has IUED AND RUED: YOU HAVE SPECIFIED "<< myentry); - } - } - else if (myblock == "pypevwt"){ - if (myentry=="ievwt") - { - this->pypevwt().ievwt(myint1)=myint2; - } - else if (myentry=="revwt"){ - this->pypevwt().revwt(myint1)=myfl1; - } - else { - ATH_MSG_ERROR("PYTHIA ERROR, block PYPEVWT has IEVWT AND REVWT: YOU HAVE SPECIFIED "<< myentry) ; - } - } - //CLA: RPV couplings - else if (myblock == "pymsrv") { - //LLE - if (myentry=="rvlam"){ - this->pymsrv().rvlam(myint1)=myfl1; - ATH_MSG_INFO("setting Yukawa coupling lambda to "<< myfl1); - } - //LQD - else if (myentry=="rvlamp"){ - this->pymsrv().rvlamp(myint1)=myfl1; - ATH_MSG_INFO("setting Yukawa coupling lambda^prime to "<< myfl1); - } - //UDD - else if (myentry=="rvlamb"){ - this->pymsrv().rvlamb(myint1)=myfl1; - ATH_MSG_INFO("setting Yukawa coupling lambda^doubelprime to "<< myfl1); - } - else { - ATH_MSG_ERROR("PYTHIA ERROR, block PYMSRV has RVLAM, RVLAMP AND RVLAMB: YOU HAVE SPECIFIED "<< myentry); - } - } - else if (myblock == "pyint2"){ - if (myentry == "iset"){ - this->pyint2().iset(myint1)=myint2; - } - else if (myentry == "kfpr"){ - this->pyint2().kfpr(myint1,myint2)=myint3; - } - else if (myentry == "coef"){ - this->pyint2().coef(myint1,myint2)=myfl2; - } - else if (myentry == "icol"){ - this->pyint2().icol(myint1,myint2,myint3)=myint4; - } - else { - ATH_MSG_ERROR("PYTHIA ERROR, block PYINT2 has ISET KFPR COEF AND ICOL: YOU HAVE SPECIFIED "<< myentry); - } - } - else if (myblock == "pystat"){ - m_pystatlistlevel.clear(); - for (unsigned i = 2; i <= mystring.string_size(); ++i) - m_pystatlistlevel.push_back(mystring.intpiece(i)); - } - else if (myblock == "pytcsm"){ - if (myentry == "itcm"){ - this->pytcsm().itcm(myint1)=myint2; - } - else if (myentry=="rtcm"){ - this->pytcsm().rtcm(myint1)=myfl1; - } - else { - ATH_MSG_ERROR("PYTHIA ERROR, block PYTCM has ITCM AND RTCM: YOU HAVE SPECIFIED "<< myentry); - } - - } - - // AcerMC tt~ decay mode switching - else if (myblock == "acermc" && myentry=="acset12") { - if (m_ExternalProcess == ACERMC) { - this->acermc_acset().acset12()=myint1; - } - } - // for ExoGraviton user parameter setup - else if (myblock == "grav") - { - ::WriteGravParam(myint6, myint1, (double)myfl0); - } - // for PythiaBc_i user parameters setup - /* - else if (myblock == "pythiabc") - { - ::WritePythiaBcParam(myint6, myint1, (double)myfl0); - } - */ - else { - ATH_MSG_ERROR(" ERROR in PYTHIA PARAMETERS " << myblock << " is and invalid common block name !"); - } - } - // End of param parsing - - // Set the logical Unit Number for the immss(1)=11 option and open the file - if (this->pymssm().imss(1) == 11) { - int syunit = 66; - this->pymssm().imss(21) = syunit; - this->pymssm().imss(22) = syunit; - const std::string& fileName = m_read_Filesusy; - opensusyfile_(fileName.c_str(),&syunit,fileName.size()); - } - - // !!!!! PROTECT AGAINST mstp(81)/mstp(82) Pythia looping - if (this->pypars().mstp(81) == 0 && this->pypars().mstp(82) > 2) - { - this->pypars().mstp(82) = 1; - ATH_MSG_INFO(" !!!!!!!!!! WARNING ON PYTHIA LOOPING !!!!!!!!"); - ATH_MSG_INFO(" YOU HAVE SWITCHED OFF MULTIPLE INTERACTIONS, mstp(81) = 0"); - ATH_MSG_INFO(" THE DEFAULT ATLAS MULTIPLE INTERACTIONS SCENARIO, mstp(82) = 4"); - ATH_MSG_INFO(" CHANGED TO mstp(82) = 1, BECAUSE PYTHIA IS LOOPING WHEN"); - ATH_MSG_INFO(" mstp(81) = 0 and mstp(82) > 2"); - ATH_MSG_INFO(" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); - } - - // Now call pyinit and set listing - // Note the `extra' arguments to pyinit on the end of the argument - // list which do *not* explicitly occur in the FORTRAN - // implementation of the function -- one for each character - // variable, in the same order (reference Randy Herber, - // herber@fnal.gov). Note also that the `extern "C"' function - // declaration matches the C usage rather than the FORTRAN - // definition of the PYINIT function and therefore includes the 3 - // extra arguments. - // activate the block data - const char* envval = m_envval1.c_str(); - initpyblock_(&m_fortout,envval); - - if (m_RndmSwitch > 0) - { - const char* RndmFileName = m_RndmFileName.c_str(); - m_RndmFileLength = openrandom_(&m_RndmSwitch, &m_RndmFileNumber, RndmFileName); - if (m_RndmSwitch ==2 ) { - ATH_MSG_INFO(" THERE ARE " << m_RndmFileLength << " EVENTS STORED IN THE PYTHIA RANDOM NUMBER FILE"); - } - } - - const char* frame = m_frame.c_str(); - const char* beam = m_beam.c_str(); - double winval = m_win; - const char* target = m_target.c_str(); - int minlist = m_initlistlevel; - // special initialization for comphep - if(m_external=="comphep"){ - rinpar_(); - subnum_(); - rheader_(); - } - // special initialization for matchig - if(m_external=="matchig") - { - ATH_MSG_DEBUG("Calling setecm with argument winval=" << winval); - setecm_(&winval); - } - - // end of comphep initialization - - ATH_MSG_DEBUG(" ****** BEFORE PYINIT ********"); - ATH_MSG_DEBUG(" MSTU(11) " << this->pydat1().mstu(11) << - " MSTU(20) " << this->pydat1().mstu(20) << - " MSTU(118) " << this->pydat1().mstu(118)); - ATH_MSG_DEBUG(" PARU(108) " << this->pydat1().paru(108) << - " PARU(117) " << this->pydat1().paru(117) << - " PARU(118) " << this->pydat1().paru(118)); - for (int ii = 210; ii < 353; ++ii) - { - ATH_MSG_DEBUG(" BRAT(" << ii << ") " - << this->pydat3().brat(ii)); - } - ATH_MSG_DEBUG(" MDCY(310) " - << this->pydat3().mdcy(310,1) << ", " - << this->pydat3().mdcy(310,2) << ", " - << this->pydat3().mdcy(310,3)); - - // Save the PYTHIA_INIT stream seeds.... - CLHEP::HepRandomEngine* engine = Pythia::p_AtRndmGenSvc->GetEngine(Pythia::pythia_stream); - const long* sip = engine->getSeeds(); - long int si1 = sip[0]; - long int si2 = sip[1]; - - - // write warning for non p-p collistion, strip white-spaces off beam and target strings - std::string beam_strp(beam); boost::trim(beam_strp); - std::string target_strp(target); boost::trim(target_strp); - if ((beam_strp!="P" && beam_strp!="P+" && beam_strp!="p" && beam_strp!="p+") || (target_strp!="P" && target_strp!="P+" && target_strp!="p" && target_strp!="p+")) - { - ATH_MSG_WARNING("PYINIT(FRAME,BEAM,TARGET,WIN) called from within ATHENA using parameters: "); - ATH_MSG_WARNING("FRAME : "<< frame << ", BEAM : "<< beam <<", TARGET: "<< target<< ", WIN: "<< winval); - ATH_MSG_WARNING("Initialization with non-standard BEAM-TARGET combination: "); - ATH_MSG_WARNING("making sure sensible PYTHIA parameters setup is used is up to you."); - } - - - pyinit_(frame, beam, target, &winval, - strlen(frame), strlen(beam), strlen(target)); - - // ... and set them back to the stream for proper save - Pythia::p_AtRndmGenSvc->CreateStream(si1, si2, Pythia::pythia_stream); - - Pythia::pythia_stream = "PYTHIA"; - - ATH_MSG_DEBUG(" ****** AFTER PYINIT ********"); - ATH_MSG_DEBUG(" MSTU(11) " << this->pydat1().mstu(11) << - " MSTU(20) " << this->pydat1().mstu(20) << - " MSTU(118) " << this->pydat1().mstu(118)); - ATH_MSG_DEBUG(" PARU(108) " << this->pydat1().paru(108) << - " PARU(117) " << this->pydat1().paru(117) << - " PARU(118) " << this->pydat1().paru(118)); - for (int ii = 210; ii < 353; ++ii) - { - ATH_MSG_DEBUG(" BRAT(" << ii << ") " - << this->pydat3().brat(ii)); - } - ATH_MSG_DEBUG(" MDCY(310) " - << this->pydat3().mdcy(310,1) << ", " - << this->pydat3().mdcy(310,2) << ", " - << this->pydat3().mdcy(310,3)); - - ATH_MSG_DEBUG(std::resetiosflags(std::ios::fixed)); - - pylist_(&minlist); - m_events = 0; - ATH_MSG_DEBUG(" kfpr (186,2)============ " << this->pyint2().kfpr(186,2)); - ATH_MSG_DEBUG(" kfpr (187,2)============ " << this->pyint2().kfpr(187,2)); - - //decay table - const char *p_envar1="PYDAT"; - // char *p_envval1=0; - // p_envval1 = - getenv(p_envar1); - - // do parameter querries after PYINIT : - //PYGIVE command parsing && call - - if (m_Param_Query_AfterInit.size()!=0) - { - //save MSTU(11) value before the parout_ call which starts a new stream: - int tmp_m11=this->pydat1().mstu(11); - // set output to a dedicated file for params after the initialization - int tmp_mode=1; - parout_(&tmp_mode); - // query the requested parameter values: - for (unsigned int i = 0; i < m_Param_Query_AfterInit.size(); i++) - { - m_pygive_init_cstr = (m_Param_Query_AfterInit[i]).c_str(); - pygive_(m_pygive_init_cstr,strlen(m_pygive_init_cstr)); - } - //set MSTU(11) back to the default value - this->pydat1().mstu(11)=tmp_m11; - } - - // get rid of an residual old event generation parameters data: - if (m_Param_Query_AfterGen.size()!=0) - { - //save MSTU(11) value before the parout_ call which starts a new stream: - int tmp_m11=this->pydat1().mstu(11); - // set output to a dedicated file for params after the initialization - int tmp_mode=2; - parout_(&tmp_mode); - //set MSTU(11) back to the default value - this->pydat1().mstu(11)=tmp_m11; - } - - // Set size of common blocks in HEPEVT: note these correspond to stdhep - HepMC::HEPEVT_Wrapper::set_sizeof_int(sizeof(int)); - HepMC::HEPEVT_Wrapper::set_sizeof_real(8); - HepMC::HEPEVT_Wrapper::set_max_number_entries(10000); - - return StatusCode::SUCCESS; -} - - -//--------------------------------------------------------------------------- - - -StatusCode Pythia::callGenerator() { - ATH_MSG_DEBUG(" PYTHIA generating."); - - // Write/Read the random numbers to/from file if requested - if (m_RndmSwitch > 0) RandomNumberIO(); - - // Save the random number seeds in the event - CLHEP::HepRandomEngine* engine = Pythia::p_AtRndmGenSvc->GetEngine(Pythia::pythia_stream); - const long* s = engine->getSeeds(); - m_seeds.clear(); - m_seeds.push_back(s[0]); - m_seeds.push_back(s[1]); - - // Generate event - pyevnt_(); - - // update event counter - ++m_events; - int mevlist=m_eventlistlevel; - // Is the event to be listed - if ( m_events >= m_firstlistevent && - m_events <= m_lastlistevent) { - ATH_MSG_INFO("PYEVNT event no. " << m_events << " will be listed"); - if (m_frame == "USER ") - { - int uspr = 7; - pylist_(&uspr); // Special listing when external generator was selected - } - pylist_(&mevlist); // List this event if required - } - - // make parameter querry after event generation: - for (unsigned int i = 0; i < m_Param_Query_AfterGen.size(); i++) - { - int tmp_m11=this->pydat1().mstu(11); - int tmp_mode=3; - parout_(&tmp_mode); - m_pygive_gen_cstr = (m_Param_Query_AfterGen[i]).c_str(); - pygive_(m_pygive_gen_cstr,strlen(m_pygive_gen_cstr)); - //set MSTU(11) back to the default value - this->pydat1().mstu(11)=tmp_m11; - } - - // Tell lunhep to convert from PYJETS to HEPEVT - int mconv=1; - // Do the conversion - pyhepc_(&mconv); // Use STDHEP translation routine 1999/01/27 CG - if ( HepMC::HEPEVT_Wrapper::number_entries() <= 0 ) { - std::cout << "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" << std::endl; - std::cout << "!!! " << generator_name(m_ExternalProcess) << " TERMINATES NORMALLY: NO MORE EVENTS IN FILE !!!" << std::endl; - std::cout << "!!! PLEASE IGNORE ANY ATHENA ERROR MESSAGES LIKE !!!" << std::endl; - std::cout << "!!! AthenaEventLoopMgr ERROR Terminating event processing loop due to errors !!!" << std::endl; - std::cout << "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" << std::endl; - return StatusCode::FAILURE; - } - HepMC::HEPEVT_Wrapper::set_event_number(m_events); - return StatusCode::SUCCESS; -} - -//--------------------------------------------------------------------------- - -StatusCode Pythia::genFinalize() { - ATH_MSG_INFO(" PYTHIA Ending." ); - for (std::vector<int>::iterator i = m_pystatlistlevel.begin(); i != m_pystatlistlevel.end(); ++i) - { - ATH_MSG_INFO("Call PYSTAT at endRun with level " << *i); - pystat_(&(*i)); - } - if (m_SetCrossSection==m_Default_SetCrossSection) - { - //always print out the non-scaled x-section - std::cout << "MetaData: cross-section (nb)= " << 1000000. * (this->pyint5().xsec(0,3))<< std::endl; - //print out additional MetaData fields if cross-section scaling is requested - if (m_xsscale != m_Default_xsscale) - { - std::cout << "MetaData: cross-section*CrossSectionScaleFactor (nb)= " << 1000000. * (this->pyint5().xsec(0,3)) * m_xsscale << std::endl; - std::cout << "MetaData: CrossSectionScaleFactor = " << m_xsscale << std::endl; - } - } - else - { - // cross section is a fixed number: - std::cout << " Printing cross-section passed by SetCrossSection in jO: "<< std::endl; - std::cout << " MetaData: cross-section (nb)= " << m_SetCrossSection << std::endl; - } - - // version specified in External/Pythia - std::cout << "MetaData: generator = Pythia " << PY6VERSION << std::endl; - - return StatusCode::SUCCESS; -} - -//--------------------------------------------------------------------------- - -StatusCode Pythia::fillEvt(HepMC::GenEvent* evt) { - ATH_MSG_DEBUG(" PYTHIA Atlas_HEPEVT Filling."); - store_Atlas_HEPEVT(); - - ATH_MSG_DEBUG(" PYTHIA Filling." ); - HepMC::IO_HEPEVT hepio; - hepio.set_print_inconsistency_errors(0); - - hepio.fill_next_event(evt); - int pr_id = PYTHIA + m_ExternalProcess + this->pyint1().mint(1); - if (m_ExternalProcess > 0) pr_id = PYTHIA + m_ExternalProcess; - evt->set_signal_process_id(pr_id); - evt->set_random_states(m_seeds); - evt->weights().push_back(this->pypars().pari(7)); - evt->weights().push_back(this->pypars().pari(9)); - evt->weights().push_back(this->pypars().pari(10)); - - // Set beam particle status = 4 - if (evt->valid_beam_particles()) { - evt->beam_particles().first->set_status(4); - evt->beam_particles().second->set_status(4); - } - - // PDF weights, using Pdf Info object: pdf_id, x_1, x_1, Q2, f_1, f_2 - const int id1=this->pypars().msti(15); - const int id2=this->pypars().msti(16); - const double x1=this->pypars().pari(33); - const double x2=this->pypars().pari(34); - const double q=this->pypars().pari(23); - const double pdf1=(double)this->pypars().pari(29); // x*pdf1 - const double pdf2=(double)this->pypars().pari(30); // x*pdf2 - const int pdfId1 = (int)this->pypars().mstp( 51 ); // LHAPDF set id of first parton - const int pdfId2 = (int)this->pypars().mstp( 51 ); // LHAPDF set id of second -- - - if ( m_external == "lhef" ) { - Lhefinfo linfo; - - ATH_MSG_DEBUG("lhefinfo, id1: " << linfo.id1()); - ATH_MSG_DEBUG("lhefinfo, id2: " << linfo.id2()); - ATH_MSG_DEBUG("lhefinfo, x1: " << linfo.x1()); - ATH_MSG_DEBUG("lhefinfo, x2: " << linfo.x2()); - ATH_MSG_DEBUG("lhefinfo, scale: " << linfo.scalePdf()); - ATH_MSG_DEBUG("lhefinfo, xpdf1: " << linfo.xPdf1()); - ATH_MSG_DEBUG("lhefinfo, xpdf2: " << linfo.xPdf2()); - - HepMC::PdfInfo tmp_pdi(linfo.id1(), linfo.id2(), linfo.x1(), linfo.x2(), - linfo.scalePdf(), linfo.xPdf1(), linfo.xPdf2()); - evt->set_pdf_info(tmp_pdi); - - } else { - HepMC::PdfInfo tmp_pdi(id1, id2, x1, x2, q, pdf1, pdf2, pdfId1, pdfId2); - evt->set_pdf_info(tmp_pdi); - } - - ATH_MSG_DEBUG("pdfinfo: "<< evt->pdf_info()->id1()); - ATH_MSG_DEBUG("pdfinfo: "<< evt->pdf_info()->id2()); - ATH_MSG_DEBUG("pdfinfo: "<< evt->pdf_info()->x1()); - ATH_MSG_DEBUG("pdfinfo: "<< evt->pdf_info()->x2()); - ATH_MSG_DEBUG("pdfinfo: "<< evt->pdf_info()->scalePDF()); - ATH_MSG_DEBUG("pdfinfo: "<< evt->pdf_info()->pdf1()); - ATH_MSG_DEBUG("pdfinfo: "<< evt->pdf_info()->pdf2()); - ATH_MSG_DEBUG("pdfinfo: "<< evt->pdf_info()->pdf_id1()); - ATH_MSG_DEBUG("pdfinfo: "<< evt->pdf_info()->pdf_id2()); - - // Convert cm->mm and GeV->MeV - // cmTomm(evt); - GeVToMeV(evt); - - return StatusCode::SUCCESS; -} - - -void -Pythia::RandomNumberIO() -{ - // m_RndmSwitch == 1 : Write the random numbers of the selected events into - // the file m_RndmFileNumber - if (m_RndmSwitch == 1) - { - int WriteEvent = m_events - m_RndmFirstEvent + 1; - if (WriteEvent >= 0) - { - WriteEvent = WriteEvent%m_RndmSkipEvents; - if (WriteEvent == 0) pyrget_(&m_RndmFileNumber, &m_RndmMOVE); - } - } - // m_RndmSwitch == 2 : Read the random numbers from the selected records from - // the file m_RndmFileNumber - else if (m_RndmSwitch == 2) - { - int MOVE = m_RndmMOVE; - if (MOVE == 0) - { - if (m_RndmFirstEvent > 0) - { - if (m_events == 0) - { - MOVE = m_RndmFirstEvent - 1; - } - else - { - MOVE = m_RndmSkipEvents; - } - } - int c_pos = this->pydatr().mrpy(6) + MOVE; - if (c_pos < m_RndmFileLength) - { - ATH_MSG_INFO("EVENT " << m_events+1 - << " will be generated with the random seeds read from record " - << c_pos+1 << " in file " << m_RndmFileName); - pyrset_(&m_RndmFileNumber, &MOVE); - } - } - else - { - pyrset_(&m_RndmFileNumber, &MOVE); - } - } -} - - - -void -Pythia::store_Atlas_HEPEVT() -{ - - ATH_MSG_DEBUG("s_atlas_HEPEVT------" << s_atlas_HEPEVT->nhep() ); - ATH_MSG_DEBUG("s_atlas_HEPEVT------" << s_atlas_HEPEVT->isthep(10) ); - ATH_MSG_DEBUG("s_atlas_HEPEVT------" << s_atlas_HEPEVT->idhep(10) ); - ATH_MSG_DEBUG("s_atlas_HEPEVT------" << s_atlas_HEPEVT->jmohep(1,10) ); - ATH_MSG_DEBUG("s_atlas_HEPEVT------" << s_atlas_HEPEVT->jdahep(2,10) ); - - s_atlas_HEPEVT->fill(); - - Atlas_HEPEVT* ahep = new Atlas_HEPEVT(); - *(ahep) = *(s_atlas_HEPEVT); - static const std::string keyid = "Pythia"; - StatusCode sc = evtStore()->record(ahep, keyid); - if (!sc.isSuccess()) { - ATH_MSG_WARNING("Could not record Atlas_HEPEVT"); - } - -} diff --git a/Generators/Pythia_i/src/PythiaDummies/fhhiggscorr.F b/Generators/Pythia_i/src/PythiaDummies/fhhiggscorr.F deleted file mode 100644 index c564bfb0ca3ca2fe6b192e81ee8b792d20881849..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/src/PythiaDummies/fhhiggscorr.F +++ /dev/null @@ -1,26 +0,0 @@ - -C********************************************************************* - -C...FHHIGGSCORR -C...Dummy function, to be removed when FEYNHIGGS is to be linked. - - SUBROUTINE FHHIGGSCORR(IERR, RMHIGG, SAEFF, UHIGGS) - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - -C...FeynHiggs variables - DOUBLE PRECISION RMHIGG(4), SAEFF, UHIGGS(3,3) -C...Commonblocks. - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - SAVE /PYDAT1/ - -C...Stop program if this routine is ever called. - WRITE(MSTU(11),5000) - IF(PYR(0).LT.10D0) STOP - -C...Format for error printout. - 5000 FORMAT(1X,'Error: you did not link FEYNHIGGS correctly.'/ - &1X,'Dummy routine FHSETPARA in PYTHIA file called instead.'/ - &1X,'Execution stopped!') - RETURN - END diff --git a/Generators/Pythia_i/src/PythiaDummies/fhsetflags.F b/Generators/Pythia_i/src/PythiaDummies/fhsetflags.F deleted file mode 100644 index cf2a6dd35214abbdfd4b014842251cc7f85b22c5..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/src/PythiaDummies/fhsetflags.F +++ /dev/null @@ -1,32 +0,0 @@ - -C********************************************************************* - -C...FHSETFLAGS -C...Dummy function, to be removed when FEYNHIGGS is to be linked. - - SUBROUTINE FHSETFLAGS(IERR,IMSP,IFR,ITBR,IHMX,IP2A,ILP,ITR,IBR) - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) -Cmssmpart = 4 # full MSSM [recommended] -Cfieldren = 0 # MSbar field ren. [strongly recommended] -Ctanbren = 0 # MSbar TB-ren. [strongly recommended] -Chiggsmix = 2 # 2x2 (h0-HH) mixing in the neutral Higgs sector -Cp2approx = 0 # no approximation [recommended] -Clooplevel= 2 # include 2-loop corrections -Ctl_running_mt= 1 # running top mass in 2-loop corrections [recommended] -Ctl_bot_resum = 1 # resummed MB in 2-loop corrections [recommended] - -C...Commonblocks. - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - SAVE /PYDAT1/ - -C...Stop program if this routine is ever called. - WRITE(MSTU(11),5000) - IF(PYR(0).LT.10D0) STOP - -C...Format for error printout. - 5000 FORMAT(1X,'Error: you did not link FEYNHIGGS correctly.'/ - &1X,'Dummy routine FHSETFLAGS in PYTHIA file called instead.'/ - &1X,'Execution stopped!') - RETURN - END diff --git a/Generators/Pythia_i/src/PythiaDummies/fhsetpara.F b/Generators/Pythia_i/src/PythiaDummies/fhsetpara.F deleted file mode 100644 index 6a4cbde5b8e051bca9be1c7b21ccf6fa1f45d373..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/src/PythiaDummies/fhsetpara.F +++ /dev/null @@ -1,27 +0,0 @@ - -C********************************************************************* - -C...FHSETPARA -C...Dummy function, to be removed when FEYNHIGGS is to be linked. - - SUBROUTINE FHSETPARA(IER,SCF,DMT,DMB,DMW,DMZ,DTANB,DMA,DMH,DM3L, - & DM3E,DM3Q,DM3U,DM3D,DM2L,DM2E,DM2Q,DM2U, DM2D,DM1L,DM1E,DM1Q, - & DM1U,DM1D,DMU,ATAU,AT,AB,AMU,AC,AS,AE,AU,AD, - & DM1,DM2,DM3,RLT,RLB,QTAU,QT,QB) - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - -C...Commonblocks. - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - SAVE /PYDAT1/ - -C...Stop program if this routine is ever called. - WRITE(MSTU(11),5000) - IF(PYR(0).LT.10D0) STOP - -C...Format for error printout. - 5000 FORMAT(1X,'Error: you did not link FEYNHIGGS correctly.'/ - &1X,'Dummy routine FHSETPARA in PYTHIA file called instead.'/ - &1X,'Execution stopped!') - RETURN - END diff --git a/Generators/Pythia_i/src/PythiaDummies/pyevwt.F b/Generators/Pythia_i/src/PythiaDummies/pyevwt.F deleted file mode 100644 index 58c437be19482e4b8fe4072dc1ae3a7b16c0121e..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/src/PythiaDummies/pyevwt.F +++ /dev/null @@ -1,203 +0,0 @@ -C... Date: March 2010 -C... Description: Routine to weight events based on cross-section -C... parameterization and/or binning function. -C... -C... Authors: -C... - JX dijets weighting functions by S.L. Cheung, P.O. Deviveiros, and E. Feng -C... - Compositeness weighting functions by P.O. Deviveiros and L. Pribyl - -C... Usage instructions: -C choose a not-yet-used PYPEVWT/IEVWT(1) number -C implement the weighting function in this subroutine, wraped in the relevant IEVWT(1) loop -C please make sure you fully separate your implementation from any other parts of the code; -C since different weighting function impementations must coexist in this subrout. -C in your jO use (replace XX with the selected IEVWT(1) value) -C "pypars mstp 142 1", # Enable event weighting -C "pypevwt ievwt 1 XX", # Use the weighting function XX - - - SUBROUTINE PYEVWT(WTXS) - -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - -C... PYTHIA params common blocks - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) - COMMON/PYINT1/MINT(400),VINT(400) - COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2) - -C... ATLAS-SPECIFIC COMMON: -C SET IEVWT(1) for weighting fuction [IEVWT(1)=0 : no weighting func. ] -C SET IEVWT(2) for binning [IEVWT(2)=0 : no binning modul. ] - COMMON/PYPEVWT/IEVWT(100),REVWT(100) - - SAVE /PYDAT1/,/PYPARS/,/PYINT1/,/PYINT2/,/PYDAT1/,/PYPEVWT/ - -C set defaults for the ATLAS commons: - DATA IEVWT/100*0/ - DATA REVWT/100*0.0D0/ - - -C_______________________________________________________________________________________ -C...Read out subprocess number. - ISUB=MINT(1) - ISTSB=ISET(ISUB) - -C...Read out tau, y*, cos(theta), tau' (where defined, else =0). - TAU=VINT(21) - YST=VINT(22) - CTH=0D0 - IF(ISTSB.EQ.2.OR.ISTSB.EQ.4) CTH=VINT(23) - TAUP=0D0 - IF(ISTSB.GE.3.AND.ISTSB.LE.5) TAUP=VINT(26) - -C...Read out x_1, x_2, x_F, shat, that, uhat, p_T^2. - X1=VINT(41) - X2=VINT(42) - XF=X1-X2 - SHAT=VINT(44) - THAT=VINT(45) - UHAT=VINT(46) - PT=VINT(47) - PT2=VINT(48) - - -C_______________________________________________________________________________________ -C ATLAS-specific body: - -C set defaults: - -C... Default: Unweighted (weight=1) - WTVAL=1D0 - -C... Default: Fixed bin width - BNVAL = 1D0 - -C_______________________________________________________________________________________ -C--------------------------------------------------------------------------------------- -C binning specific part that only has effect if IEVWT(2) is set in jO -C--------------------------------------------------------------------------------------- -C... Switch for weighting function - WTFCN=IEVWT(1) - -C... WTFCN=0: Unweighted - IF(WTFCN.EQ.0) WTVAL=1D0 - -C... WTFCN=1: JX Dijets - IF(WTFCN.EQ.1)THEN - VARA = 1.24360E+16 - VARB = 8.91406E+00 - VARC = 4.83110E+00 - VARD = 1.83636E-01 - WTVAL = VARA*(1.0D0-(PT/3500.0D0))**(VARB) - WTVAL = WTVAL/(PT**(VARC+VARD*LOG(PT/3500.0D0))) - IF(PT.LT.150) WTVAL = WTVAL * (1 + (1-PT/150.) ) - ENDIF - -C... WTFCN=2: L3 Compositeness - IF(WTFCN.EQ.2)THEN - WTVAL=1.94896E+06*EXP(-(PT-392.)/500.) - WTVAL2=EXP((PT-1100.)*(PT-1100.)/1.3E5) - WTVAL3=EXP((PT-350.)*(PT-350.)/0.1E5) - - IF(PT.LT.1100)THEN - WTVAL = WTVAL*WTVAL2 - ENDIF - IF(PT.LT.350)THEN - WTVAL = WTVAL*WTVAL3 - ENDIF - ENDIF - -C... WTFCN=3: L4 Compositeness - IF(WTFCN.EQ.3)THEN - WTVAL=1.94896E+06*EXP(-(PT-392.)/420.) - WTVAL2=EXP((PT-1200.)*(PT-1200.)/1.2E5) - WTVAL3=EXP((PT-350.)*(PT-350.)/0.1E5) - - IF(PT.LT.1200)THEN - WTVAL = WTVAL*WTVAL2 - ENDIF - IF(PT.LT.350)THEN - WTVAL = WTVAL*WTVAL3 - ENDIF - ENDIF - -C... WTFCN=4: L5 Compositeness - IF(WTFCN.EQ.4)THEN - WTVAL=1.94896E+06*EXP(-(PT-392.)/220.) - WTVAL2=EXP((PT-1200.)*(PT-1200.)/1.5E5) - WTVAL3=EXP((PT-350.)*(PT-350.)/0.1E5) - - IF(PT.LT.1200)THEN - WTVAL = WTVAL*WTVAL2 - ENDIF - IF(PT.LT.350)THEN - WTVAL = WTVAL*WTVAL3 - ENDIF - ENDIF - - -C... WTFCN=5: bug fix for J/psi + Upsilon recommended by T. Sjostrand - IF(WTFCN.EQ.5)THEN -C... Copy form for pT0 as used in multiple interactions. -C... You are not forced to use this pT0 expression, .e.g. the studies -C... of Marianne Bargiotti indicates that a value larger than the -C... normal PARP(82) is required. Rather than then changing PARP(82) -C... itself, which would mess up the multiple interactions, you may -C... use another value, hardcoded or as a tunable parameter. - PT0=PARP(82)*(VINT(1)/PARP(89))**PARP(90) - PT20=PT0**2 - -C... Introduce dampening factor. - WTXS=(PT2/(PT20+PT2))**2 - -C... Also dampen alpha_strong by using larger Q2 scale. - Q2=VINT(52) - WTXS=WTXS*(PYALPS(PT20+Q2)/PYALPS(Q2))**3 - -C ignore subseq. code parts: - RETURN - - ENDIF - -C--------------------------------------------------------------------------------------- -C end of weighting functions imple. that only have effect if IEVWT(1) is set in jO -C--------------------------------------------------------------------------------------- -C--------------------------------------------------------------------------------------- - - -C_______________________________________________________________________________________ -C--------------------------------------------------------------------------------------- -C binning specific part that only has effect if IEVWT(2) is set in jO -C--------------------------------------------------------------------------------------- -C... Switch for binning function - BNFCN=IEVWT(2) - -C... BNFCN=0: Fixed bin width - IF(BNFCN.EQ.0) BNVAL = 1D0 - -C... BNFCN=1: Linearly increasing bin width, yields flat distribution per log(pT): -C... dN/d(log pT) = dN/( 1/pT * d(pT) ) = pT * (dN/dpT) -C... Thus dN/d(log pT) = 1 --> dN/dpT = pT --> dpT = pT - IF(BNFCN.EQ.1)THEN - BNVAL = PT - ENDIF - -C... BNFCN=2: Jet energy resolution ~ sqrt(E) - IF(BNFCN.EQ.2)THEN - BNVAL = SQRT(PT) - ENDIF - -C--------------------------------------------------------------------------------------- -C end of binning specific part that only has effect if IEVWT(2) is set in jO -C--------------------------------------------------------------------------------------- -C--------------------------------------------------------------------------------------- - -C NB: BNVAL is set to 1 by default and is only changed if binn.-specific fuction is called using IEVWT(2) in jO -C... Finally compute efficiency (inverse of effective event weight) from weighting and binning functions - WTXS = 1./ (WTVAL * BNVAL) - - RETURN - END diff --git a/Generators/Pythia_i/src/PythiaDummies/pykcut.F b/Generators/Pythia_i/src/PythiaDummies/pykcut.F deleted file mode 100644 index 669834ad26e0e7017d883ff607a48ccccd088998..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/src/PythiaDummies/pykcut.F +++ /dev/null @@ -1,78 +0,0 @@ - -C********************************************************************* - -C...PYKCUT -C...Dummy routine, which the user can replace in order to make cuts on -C...the kinematics on the parton level before the matrix elements are -C...evaluated and the event is generated. The cross-section estimates -C...will automatically take these cuts into account, so the given -C...values are for the allowed phase space region only. MCUT=0 means -C...that the event has passed the cuts, MCUT=1 that it has failed. - - SUBROUTINE PYKCUT(MCUT) - -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) -C INTEGER PYK,PYCHGE,PYCOMP -C...Commonblocks. - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - COMMON/PYINT1/MINT(400),VINT(400) - COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2) - SAVE /PYDAT1/,/PYINT1/,/PYINT2/ - -C...Set default value (accepting event) for MCUT. - MCUT=0 - -C...Read out subprocess number. - ISUB=MINT(1) - ISTSB=ISET(ISUB) - -C...Read out tau, y*, cos(theta), tau' (where defined, else =0). - TAU=VINT(21) - YST=VINT(22) - CTH=0D0 - IF(ISTSB.EQ.2.OR.ISTSB.EQ.4) CTH=VINT(23) - TAUP=0D0 - IF(ISTSB.GE.3.AND.ISTSB.LE.5) TAUP=VINT(26) - -C...Calculate x_1, x_2, x_F. - IF(ISTSB.LE.2.OR.ISTSB.GE.5) THEN - X1=SQRT(TAU)*EXP(YST) - X2=SQRT(TAU)*EXP(-YST) - ELSE - X1=SQRT(TAUP)*EXP(YST) - X2=SQRT(TAUP)*EXP(-YST) - ENDIF - XF=X1-X2 - -C...Calculate shat, that, uhat, p_T^2. - SHAT=TAU*VINT(2) - SQM3=VINT(63) - SQM4=VINT(64) - RM3=SQM3/SHAT - RM4=SQM4/SHAT - BE34=SQRT(MAX(0D0,(1D0-RM3-RM4)**2-4D0*RM3*RM4)) - RPTS=4D0*VINT(71)**2/SHAT - BE34L=SQRT(MAX(0D0,(1D0-RM3-RM4)**2-4D0*RM3*RM4-RPTS)) - RM34=2D0*RM3*RM4 - RSQM=1D0+RM34 - RTHM=(4D0*RM3*RM4+RPTS)/(1D0-RM3-RM4+BE34L) - THAT=-(0.5D0*SHAT*MAX(RTHM,1D0-RM3-RM4-BE34*CTH)) - UHAT=-(0.5D0*SHAT*MAX(RTHM,1D0-RM3-RM4+BE34*CTH)) - PT2=MAX(VINT(71)**2,0.25D0*SHAT*BE34**2*(1D0-CTH**2)) - -C...Decisions by user to be put here. - -C...Stop program if this routine is ever called. -C...You should not copy these lines to your own routine. - WRITE(MSTU(11),5000) - IF(PYR(0).LT.10D0) STOP - -C...Format for error printout. - 5000 FORMAT(1X,'Error: you did not link your PYKCUT routine ', - &'correctly.'/1X,'Dummy routine in PYTHIA file called instead.'/ - &1X,'Execution stopped!') - - RETURN - END diff --git a/Generators/Pythia_i/src/PythiaDummies/pytaud.F b/Generators/Pythia_i/src/PythiaDummies/pytaud.F deleted file mode 100644 index 6d4af33b27805f158f5c2a9417819617ce7d5165..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/src/PythiaDummies/pytaud.F +++ /dev/null @@ -1,46 +0,0 @@ - -C********************************************************************* - -C...PYTAUD -C...Dummy routine, to be replaced by user, to handle the decay of a -C...polarized tau lepton. -C...Input: -C...ITAU is the position where the decaying tau is stored in /PYJETS/. -C...IORIG is the position where the mother of the tau is stored; -C... is 0 when the mother is not stored. -C...KFORIG is the flavour of the mother of the tau; -C... is 0 when the mother is not known. -C...Note that IORIG=0 does not necessarily imply KFORIG=0; -C... e.g. in B hadron semileptonic decays the W propagator -C... is not explicitly stored but the W code is still unambiguous. -C...Output: -C...NDECAY is the number of decay products in the current tau decay. -C...These decay products should be added to the /PYJETS/ common block, -C...in positions N+1 through N+NDECAY. For each product I you must -C...give the flavour codes K(I,2) and the five-momenta P(I,1), P(I,2), -C...P(I,3), P(I,4) and P(I,5). The rest will be stored automatically. - - SUBROUTINE PYTAUD(ITAU,IORIG,KFORIG,NDECAY) - -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) -C INTEGER PYK,PYCHGE,PYCOMP -C...Commonblocks. - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - SAVE /PYJETS/,/PYDAT1/ - -C...Stop program if this routine is ever called. -C...You should not copy these lines to your own routine. - NDECAY=ITAU+IORIG+KFORIG - WRITE(MSTU(11),5000) - IF(PYR(0).LT.10D0) STOP - -C...Format for error printout. - 5000 FORMAT(1X,'Error: you did not link your PYTAUD routine ', - &'correctly.'/1X,'Dummy routine in PYTHIA file called instead.'/ - &1X,'Execution stopped!') - - RETURN - END diff --git a/Generators/Pythia_i/src/PythiaDummies/pytime.F b/Generators/Pythia_i/src/PythiaDummies/pytime.F deleted file mode 100644 index 098103092ad6412950602bcab9084da30feea5b1..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/src/PythiaDummies/pytime.F +++ /dev/null @@ -1,76 +0,0 @@ - -C********************************************************************* - -C...PYTIME -C...Finds current date and time. -C...Since this task is not standardized in Fortran 77, the routine -C...is dummy, to be replaced by the user. Examples are given for -C...the Fortran 90 routine and DEC Fortran 77, and what to do if -C...you do not have access to suitable routines. - - SUBROUTINE PYTIME(IDATI) - -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) -C INTEGER PYK,PYCHGE,PYCOMP -C CHARACTER*8 ATIME -C...Local array. - INTEGER IDATI(6),IDTEMP(3) - -C...Example 0: if you do not have suitable routines. - DO 100 J=1,6 - IDATI(J)=0 - 100 CONTINUE - -C...Example 1: Fortran 90 routine. -C INTEGER IVAL(8) -C CALL DATE_AND_TIME(VALUES=IVAL) -C IDATI(1)=IVAL(1) -C IDATI(2)=IVAL(2) -C IDATI(3)=IVAL(3) -C IDATI(4)=IVAL(5) -C IDATI(5)=IVAL(6) -C IDATI(6)=IVAL(7) - -C...Example 2: DEC Fortran 77. AIX. -C CALL IDATE(IMON,IDAY,IYEAR) -C IDATI(1)=IYEAR -C IDATI(2)=IMON -C IDATI(3)=IDAY -C CALL ITIME(IHOUR,IMIN,ISEC) -C IDATI(4)=IHOUR -C IDATI(5)=IMIN -C IDATI(6)=ISEC - -C...Example 3: DEC Fortran, IRIX, IRIX64. -C CALL IDATE(IMON,IDAY,IYEAR) -C IDATI(1)=IYEAR -C IDATI(2)=IMON -C IDATI(3)=IDAY -C CALL TIME(ATIME) -C IHOUR=0 -C IMIN=0 -C ISEC=0 -C READ(ATIME(1:2),'(I2)') IHOUR -C READ(ATIME(4:5),'(I2)') IMIN -C READ(ATIME(7:8),'(I2)') ISEC -C IDATI(4)=IHOUR -C IDATI(5)=IMIN -C IDATI(6)=ISEC - -C...Example 4: GNU LINUX libU77, SunOS. - CALL IDATE(IDTEMP) - IDATI(1)=IDTEMP(3) - IDATI(2)=IDTEMP(2) - IDATI(3)=IDTEMP(1) - CALL ITIME(IDTEMP) - IDATI(4)=IDTEMP(1) - IDATI(5)=IDTEMP(2) - IDATI(6)=IDTEMP(3) - -C...Common code to ensure right century. - IDATI(1)=2000+MOD(IDATI(1),100) - - RETURN - END diff --git a/Generators/Pythia_i/src/PythiaDummies/ssmssm.F b/Generators/Pythia_i/src/PythiaDummies/ssmssm.F deleted file mode 100644 index 9c04878feb7f8fc821f218dd0f736a1ca4462166..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/src/PythiaDummies/ssmssm.F +++ /dev/null @@ -1,29 +0,0 @@ - -C********************************************************************* - -C...SSMSSM -C...Dummy function, to be removed when ISAJET (ISASUSY) is to be linked. - - SUBROUTINE SSMSSM(RDUM1,RDUM2,RDUM3,RDUM4,RDUM5,RDUM6,RDUM7, - &RDUM8,RDUM9,RDUM10,RDUM11,RDUM12,RDUM13,RDUM14,RDUM15,RDUM16, - &RDUM17,RDUM18,RDUM19,RDUM20,RDUM21,RDUM22,RDUM23,RDUM24,RDUM25, - &IDUM1,IDUM2) - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - REAL RDUM1,RDUM2,RDUM3,RDUM4,RDUM5,RDUM6,RDUM7,RDUM8,RDUM9, - &RDUM10,RDUM11,RDUM12,RDUM13,RDUM14,RDUM15,RDUM16,RDUM17,RDUM18, - &RDUM19,RDUM20,RDUM21,RDUM22,RDUM23,RDUM24,RDUM25 -C...Commonblocks. - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - SAVE /PYDAT1/ - -C...Stop program if this routine is ever called. - WRITE(MSTU(11),5000) - IF(PYR(0).LT.10D0) STOP - -C...Format for error printout. - 5000 FORMAT(1X,'Error: you did not link ISAJET correctly.'/ - &1X,'Dummy routine SSMSSM in PYTHIA file called instead.'/ - &1X,'Execution stopped!') - RETURN - END diff --git a/Generators/Pythia_i/src/PythiaDummies/sugra.F b/Generators/Pythia_i/src/PythiaDummies/sugra.F deleted file mode 100644 index b32a4414a8669b2bfeaac7e949c0bc25db0d9127..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/src/PythiaDummies/sugra.F +++ /dev/null @@ -1,26 +0,0 @@ - -C********************************************************************* - -C...SUGRA -C...Dummy routine, to be removed when ISAJET (ISASUSY) is to be linked. - - SUBROUTINE SUGRA(MZERO,MHLF,AZERO,TANB,SGNMU,MTOP,IMODL) - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - REAL MZERO,MHLF,AZERO,TANB,SGNMU,MTOP - INTEGER IMODL -C...Commonblocks. - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - SAVE /PYDAT1/ - -C...Stop program if this routine is ever called. - WRITE(MSTU(11),5000) - IF(PYR(0).LT.10D0) STOP - -C...Format for error printout. - 5000 FORMAT(1X,'Error: you did not link ISAJET correctly.'/ - &1X,'Dummy routine SUGRA in PYTHIA file called instead.'/ - &1X,'Execution stopped!') - - RETURN - END diff --git a/Generators/Pythia_i/src/PythiaDummies/upveto.F b/Generators/Pythia_i/src/PythiaDummies/upveto.F deleted file mode 100644 index 22563542f03ada356185845332ea16c4b744a395..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/src/PythiaDummies/upveto.F +++ /dev/null @@ -1,46 +0,0 @@ - -C********************************************************************* - -C...UPVETO -C...Dummy routine, to be replaced by user, to veto event generation -C...on the parton level, after parton showers but before multiple -C...interactions, beam remnants and hadronization is added. -C...If resonances like W, Z, top, Higgs and SUSY particles are handed -C...undecayed from UPEVNT, or are generated by PYTHIA, they will also -C...be undecayed at this stage; if decayed their decay products will -C...have been allowed to shower. - -C...All partons at the end of the shower phase are stored in the -C...HEPEVT commonblock. The interesting information is -C...NHEP = the number of such partons, in entries 1 <= i <= NHEP, -C...IDHEP(I) = the particle ID code according to PDG conventions, -C...PHEP(J,I) = the (p_x, p_y, p_z, E, m) of the particle. -C...All ISTHEP entries are 1, while the rest is zeroed. - -C...The user decision is to be conveyed by the IVETO value. -C...IVETO = 0 : retain current event and generate in full; -C... = 1 : abort generation of current event and move to next. - - SUBROUTINE UPVETO(IVETO) - -C...HEPEVT -C INCLUDE 'hepevt.inc' - -C...Next few lines allow you to see what info PYVETO extracted from -C...the full event record for the first two events. -C...Delete if you don't want it. - INTEGER NLIST/0/ - SAVE NLIST - IF(NLIST.LE.2) THEN - WRITE(*,*) ' Full event record at time of UPVETO call:' - CALL PYLIST(1) - WRITE(*,*) ' Part of event record made available to UPVETO:' - CALL PYLIST(5) - NLIST=NLIST+1 - ENDIF - -C...Make decision here. - IVETO = 0 - - RETURN - END diff --git a/Generators/Pythia_i/src/PythiaDummies/visaje.F b/Generators/Pythia_i/src/PythiaDummies/visaje.F deleted file mode 100644 index 0bc7a3e4049262111072c4729a845b17631b8407..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/src/PythiaDummies/visaje.F +++ /dev/null @@ -1,29 +0,0 @@ - -C********************************************************************* - -C...VISAJE -C...Dummy function, to be removed when ISAJET (ISASUSY) is to be linked. - - FUNCTION VISAJE() - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - CHARACTER*40 VISAJE - -C...Commonblocks. - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - SAVE /PYDAT1/ - -C...Assign default value. - VISAJE='Undefined' - -C...Stop program if this routine is ever called. - WRITE(MSTU(11),5000) - IF(PYR(0).LT.10D0) STOP - -C...Format for error printout. - 5000 FORMAT(1X,'Error: you did not link ISAJET correctly.'/ - &1X,'Dummy function VISAJE in PYTHIA file called instead.'/ - &1X,'Execution stopped!') - - RETURN - END diff --git a/Generators/Pythia_i/src/PythiaModified/pyrhad.F b/Generators/Pythia_i/src/PythiaModified/pyrhad.F deleted file mode 100644 index e322ddfef95f922c123cfc07f9c497cf6f8260cd..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/src/PythiaModified/pyrhad.F +++ /dev/null @@ -1,1699 +0,0 @@ -C********************************************************************* - -C...PYGGPRO -C Sets the PROBGG parameter in the fragmentation - -C... Double precision and integer declarations. - SUBROUTINE PYGGPRO(PROB) - - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - INTEGER IKFRH(20),IKCHGRH(20),IKANTRH(20) - REAL*8 PROBGG - COMMON/RHADB/IKFRH,IKCHGRH,IKANTRH,PROBGG - - - PROBGG=PROB - - write(*,*) 'Gluino ball formation probability has been set to ' - & ,PROBGG - - RETURN - END - - - -C********************************************************************* - -C...PYGLFR -C...Fragments the string near to a gluino, to form a gluino-hadron, -C...either by producing a new g-g pair or two new q-qbar ones. - - SUBROUTINE PYGLFRRE(IERR) - -C... Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) -C INTEGER PYK,PYCHGE,PYCOMP -C... Parameter statement to help give large particle numbers -C... (left- and righthanded SUSY, excited fermions). - PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KEXCIT=4000000) -C... Commonblocks. - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) -C... Note that dimensions below grew from 4000 to 8000 in Pythia 6.2! - COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5) - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) - COMMON/PYINT1/MINT(400),VINT(400) - COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2) - COMMON/PYDAT4/CHAF(500,2) - CHARACTER CHAF*16 - SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYPARS/,/PYINT1/, - & /PYINT2/ - CHARACTER*16 CHRHAD - - -C... Local array. - DIMENSION PSUM(5),KFSAV(2),PMSAV(2),PSAV(2,5) - - INTEGER IKFRH(20),IKCHGRH(20),IKANTRH(20) - integer ihad1,ihad2 - REAL*8 PROBGG - COMMON/RHADB/IKFRH,IKCHGRH,IKANTRH,PROBGG - -C... Free parameter: relative probability for gluino-gluon-ball. -C... (But occasional low-mass string will never become it anyway.) -c Rasmus: Moved to rhadb common block to make configurable -c PROBGG=0.1D0 - -C... Free parameter: gluon constituent mass. - PMGLU=0.7D0 - -C... Free parameter: max kinetic energy in gluino-hadron. - PMKIN=0.5D0 - -C... Switch off popcorn baryon production. (Not imperative, but more -C... failed events when popcorn is allowed.) - MSTJ12=MSTJ(12) - MSTJ(12)=1 - -C... Convenient shorthand. - KFGL=KSUSY1+21 - -C*** Reset error code. - IERR=0 - -c write(*,*) 'In PYGLFRRE' - -C... Loopback point for serious problems, with new try. - LOOP=0 - CALL PYEDIT(21) - CHGSAV=PYP(0,6) - 90 LOOP=LOOP+1 - IF(LOOP.GT.1) CALL PYEDIT(22) - -C*** Begin new code for testing. -C... Find if gluino put first or last in closed loop. - 400 IBEGCL=0 - IENDCL=0 - IF(K(1,2).EQ.KFGL.AND.K(1,1).LE.2) IBEGCL=1 - DO 410 I=2,N - IF(K(I,2).EQ.KFGL) THEN - IF(K(I-1,1).NE.2.AND.K(I,1).LE.2) IBEGCL=I - IF(K(I,1).EQ.1) IENDCL=I - ENDIF - 410 CONTINUE - IF(IBEGCL.GT.0) IENDCL=0 - -C... Range of system beginning or ending with gluino. - IF(IBEGCL.NE.0) THEN - IBEG=IBEGCL - IEND=IBEG - 420 IEND=IEND+1 - IF(IEND.LT.N.AND.K(IEND,1).EQ.2) GOTO 420 - IF(IEND.GT.N) IEND=N - ELSEIF(IENDCL.NE.0) THEN - IEND=IENDCL - IBEG=IEND - 430 IBEG=IBEG-1 -C JK REMOVING COMPILER WARNING - IF(IBEG.GE.2.AND.K(IBEG-1,1).EQ.2) THEN - 431 IEND=IEND+1 - IF(IEND.LT.N.AND.K(IEND,1).EQ.2) GOTO 431 - IF(IEND.GT.N) IEND=N - ENDIF -C JK - ENDIF - -C... Count number of gluinos in system. Error return if only gluinos. - IF(IBEGCL.NE.0.OR.IENDCL.NE.0) THEN - WRITE(*,*) ' Gluino found in closed string; ', - & ' special processing begun ' - NGLSYS=0 - DO 435 I=IBEG,IEND - IF(K(I,2).EQ.KFGL) NGLSYS=NGLSYS+1 - 435 CONTINUE - IF(NGLSYS.EQ.IEND-IBEG+1) THEN - IERR=1 - MSTJ(12)=MSTJ12 - WRITE(*,*) ' Fail to fragment closed string of gluinos only' - RETURN - ENDIF - -C... Decide to split system at random gluon. - 440 ISPLIT=IBEG+INT(PYR(0)*(IEND+1-IBEG)) - IF(ISPLIT.GT.IEND.OR.K(ISPLIT,2).EQ.KFGL) GOTO 440 - -C... Copy system from ISPLIT to end, beginning with a d or u quark. - KFSPL=INT(1.5D0+PYR(0)) - DO 470 I=ISPLIT,IEND - N=N+1 - DO 450 J=1,5 - K(N,J)=K(I,J) - P(N,J)=P(I,J) - V(N,J)=V(I,J) - 450 CONTINUE - K(I,1)=K(I,1)+10 - K(I,4)=N - K(I,5)=N - K(N,1)=2 - K(N,3)=I - IF(I.EQ.ISPLIT) THEN - K(N,2)=KFSPL - DO 460 J=1,5 - P(N,J)=0.5D0*P(N,J) - 460 CONTINUE - ENDIF - 470 CONTINUE - -C... Copy system from beginning to ISPLIT, ending with a dbar or ubar quark. - DO 500 I=IBEG,ISPLIT - N=N+1 - DO 480 J=1,5 - K(N,J)=K(I,J) - P(N,J)=P(I,J) - V(N,J)=V(I,J) - 480 CONTINUE - K(I,1)=K(I,1)+10 - K(I,4)=N - K(I,5)=N - K(N,1)=2 - K(N,3)=I - IF(I.EQ.ISPLIT) THEN - K(N,1)=1 - K(N,2)=-KFSPL - DO 490 J=1,5 - P(N,J)=0.5D0*P(N,J) - 490 CONTINUE - ENDIF - 500 CONTINUE - -C... Loop back in case both gluinos need to be addressed this way. - GOTO 400 - ENDIF -C*** End new code for testing. - -C... Take copy of string system(s), leaving extra free slot after gluino. -C... (Eventually to be overwritten by one q and one qbar string break.) - NOLD=N - NGLUI=0 - DO 120 I=1,NOLD - ICOPY=0 - IF(K(I,1).EQ.2) ICOPY=1 - IF(K(I,1).EQ.1.AND.I.GE.2) THEN - IF(K(I-1,1).EQ.12) ICOPY=1 - ENDIF - IF(ICOPY.EQ.1) THEN - N=N+1 - DO 100 J=1,5 - K(N,J)=K(I,J) - P(N,J)=P(I,J) - V(N,J)=V(I,J) - 100 CONTINUE - K(I,1)=K(I,1)+10 - K(I,4)=N - K(I,5)=N - K(N,3)=I - IF(K(I,2).EQ.KFGL) THEN - NGLUI=NGLUI+1 - N=N+1 - DO 110 J=1,5 - K(N,J)=K(N-1,J) - P(N,J)=0D0 - V(N,J)=V(I,J) - 110 CONTINUE - K(I,5)=N - K(N,2)=21 - ENDIF - ENDIF - 120 CONTINUE - -C... Loop over (up to) two gluinos per event. - DO 300 IGLUI=1,NGLUI - -C... Identify position of gluino (randomize order of treatment). - IGL=0 - NGL=0 - DO 130 I=1,N - IF(K(I,1).EQ.2.AND.K(I,2).EQ.KFGL) THEN - NGL=NGL+1 - IF(IGLUI.EQ.NGLUI) THEN - IGL=I - ELSEIF(NGL.EQ.1) THEN - IF(PYR(0).LT.0.5D0) IGL=I - ELSEIF(IGL.EQ.0) THEN - IGL=I - ENDIF - ENDIF - 130 CONTINUE - -C... Identify range of partons on string the gluino belongs to. - IMIN=IGL - 140 IMIN=IMIN-1 - IF(K(IMIN-1,1).EQ.2) GOTO 140 - IMAX=IGL - 150 IMAX=IMAX+1 - IF(K(IMAX,1).EQ.2) GOTO 150 - -C... Find mass of this gluino-string. - DO 170 J=1,5 - PSUM(J)=0D0 - DO 160 I=IMIN,IMAX - PSUM(J)=PSUM(J)+P(I,J) - 160 CONTINUE - 170 CONTINUE - PSUM(5)=SQRT(MAX(0D0,PSUM(4)**2-PSUM(1)**2-PSUM(2)**2- - & PSUM(3)**2)) - -C... If low-mass, then consider gluino-hadron already formed. - IF(PSUM(5).LE.P(IGL,5)+P(IMIN,5)+P(IMAX,5)+PMKIN) THEN - DO 180 I=IMIN,IMAX - K(I,1)=15+IGLUI - 180 CONTINUE - GOTO 300 - ENDIF - -C... Else break string by production of new gg or two new qqbar pairs. -C... (Also diquarks allowed, but not popcorn, and not two adjacent.) - IF(PYR(0).LT.PROBGG) THEN -C... Let a gluon occupy two slots, to make administration work the same -C... way as for the qqbar case. - KFSAV(1)=21 - KFSAV(2)=21 - PMSAV(1)=0.5D0*PMGLU - PMSAV(2)=0.5D0*PMGLU - ELSE - 185 CALL PYDCYK(K(IMIN,2),0,KFSAV(1),KFDUM) - CALL PYDCYK(K(IMAX,2),0,KFSAV(2),KFDUM) - IF(IABS(KFSAV(1)).GT.10.AND.IABS(KFSAV(2)).GT.10) GOTO 185 - IF(IABS(KFSAV(1)).GT.10.AND.IABS(K(IGL-1,2)).GT.10) GOTO 185 - IF(IABS(KFSAV(2)).GT.10.AND.IABS(K(IGL+2,2)).GT.10) GOTO 185 - KFSAV(1)=ISIGN(MOD(IABS(KFSAV(1)),10000),KFSAV(1)) - KFSAV(2)=ISIGN(MOD(IABS(KFSAV(2)),10000),KFSAV(2)) - MSTJ(93)=1 - PMSAV(1)=PYMASS(KFSAV(1)) - MSTJ(93)=1 - PMSAV(2)=PYMASS(KFSAV(2)) - ENDIF - - KFSVMX=MAX(IABS(KFSAV(1)),IABS(KFSAV(2))) - KFSVMN=MIN(IABS(KFSAV(1)),IABS(KFSAV(2))) - -C... Mass of gluino-hadron. - PMGSAV=P(IGL,5) - PMGB=P(IGL,5)+0.7 - -C... Pick at random order in which both sides of gluino string break. - ISIDE=INT(1.5D0+PYR(0)) - DO 220 ISDE=1,2 - IF(ISDE.EQ.1) IS=ISIDE - IF(ISDE.EQ.2) IS=3-ISIDE - -C...Pick momentum sharing according to fragmentation function as if bottom. - M11SAV=MSTJ(11) - PMBSAV=PARF(105) - MSTJ(11)=4 - PARF(105)=PMGSAV - CALL PYZDIS(5,0,PMGB**2,ZGL) - MSTJ(11)=M11SAV - PARF(105)=PMBSAV - ZGL=MAX(0.9D0,MIN(0.9999D0,ZGL)) - DO 190 J=1,5 - PSAV(IS,J)=(1D0-ZGL)*P(IGL,J) - P(IGL,J)=ZGL*P(IGL,J) - 190 CONTINUE - -C... Target gluino-hadron mass for this stage of momentum reshuffling. - PMOLD=P(IGL,5) - IF(ISDE.EQ.1) PMNEW=PMGSAV+PMSAV(IS) - IF(ISDE.EQ.2) PMNEW=PMGB - -C... Recoiling parton from which to shuffle momentum. System momentum. - IF(IS.EQ.1) IREC=IGL-1 - IF(IS.EQ.2) IREC=IGL+2 - 200 DO 210 J=1,4 - PSUM(J)=P(IGL,J)+P(IREC,J) - 210 CONTINUE - -C... Boost to rest frame of system, and align gluino along +z axis. - CALL PYROBO(IGL,IGL,0D0,0D0,-(PSUM(1)/PSUM(4)), - & -(PSUM(2)/PSUM(4)),-(PSUM(3)/PSUM(4))) - CALL PYROBO(IREC,IREC,0D0,0D0,-(PSUM(1)/PSUM(4)), - & -(PSUM(2)/PSUM(4)),-(PSUM(3)/PSUM(4))) - PHI=PYANGL(P(IGL,1),P(IGL,2)) - CALL PYROBO(IGL,IGL,0D0,-PHI,0D0,0D0,0D0) - CALL PYROBO(IREC,IREC,0D0,-PHI,0D0,0D0,0D0) - THETA=PYANGL(P(IGL,3),P(IGL,1)) - CALL PYROBO(IGL,IGL,-THETA,0D0,0D0,0D0,0D0) - CALL PYROBO(IREC,IREC,-THETA,0D0,0D0,0D0,0D0) - -C... Calculate new kinematics in this frame, for desired gluino mass. - ETOT=P(IGL,4)+P(IREC,4) - IF(ETOT.GT.PMNEW+P(IREC,5)) THEN - IFAIL=0 - PZNEW=0.5D0 - & *SQRT(MAX(0D0,(ETOT**2-PMNEW**2-P(IREC,5)**2)**2- - & 4D0*PMNEW**2*P(IREC,5)**2))/ETOT - P(IGL,3)=PZNEW - P(IGL,4)=SQRT(PZNEW**2+PMNEW**2) - P(IGL,5)=PMNEW - P(IREC,3)=-PZNEW - P(IREC,4)=SQRT(PZNEW**2+P(IREC,5)**2) - -C... If not enough momentum, take what can be taken. - ELSE - IFAIL=1 - PMOLD=ETOT-P(IREC,5) - P(IGL,3)=0D0 - P(IGL,4)=PMOLD - P(IGL,5)=PMOLD - P(IREC,3)=0D0 - P(IREC,4)=P(IREC,5) - ENDIF - -C... Bost back to lab frame. - CALL PYROBO(IGL,IGL,THETA,PHI,PSUM(1)/PSUM(4), - & PSUM(2)/PSUM(4),PSUM(3)/PSUM(4)) - CALL PYROBO(IREC,IREC,THETA,PHI,PSUM(1)/PSUM(4), - & PSUM(2)/PSUM(4),PSUM(3)/PSUM(4)) - -C... Loop back when not enough momentum could be shuffled. -C... (As long as there is something left on either side.) - IF(IFAIL.EQ.1) THEN - 215 IF(IS.EQ.1.AND.IREC.GT.IMIN) THEN - IREC=IREC-1 - GOTO 200 - ELSEIF(IS.EQ.2.AND.IREC.LT.IMAX) THEN - IREC=IREC+1 - GOTO 200 - ELSEIF(ISDE.EQ.2.AND.IS.EQ.3-ISIDE) THEN - IS=ISIDE - IREC=IRECSV - GOTO 215 - ENDIF - ENDIF - -C... End loop over fragmentation of two sides around gluino. - IRECSV=IREC - 220 CONTINUE - -C... New slot at end of record for gluino R-hadron. - DO 230 J=1,5 - K(N+1,J)=0 - P(N+1,J)=P(IGL,J) - V(N+1,J)=V(IGL,J) - 230 CONTINUE - -C... Status and code of this slot. - K(N+1,1)=15+IGLUI - -C... Gluino-ball. - IF(KFSVMX.EQ.21) THEN - K(N+1,2)=KSUSY1+993 -C... Gluino-meson. - ELSEIF(KFSVMX.LT.10) THEN - IF(KFSVMX.eq.KFSVMN.and.KFSVMX.gt.1) then - KFSVMN=1 - KFSVMX=1 - endif - K(N+1,2)=KSUSY1+9000+100*KFSVMX+10*KFSVMN+3 - IF(KFSVMX.EQ.KFSVMN) THEN - ELSEIF(MOD(KFSVMX,2).EQ.0) THEN - IF(KFSVMX.EQ.KFSAV(1).OR.KFSVMX.EQ.KFSAV(2)) - & K(N+1,2)=-K(N+1,2) - ELSE - IF(KFSVMX.EQ.-KFSAV(1).OR.KFSVMX.EQ.-KFSAV(2)) - & K(N+1,2)=-K(N+1,2) - ENDIF -C... Gluino-baryon. - ELSE - KFSVX1=KFSVMX/1000 - KFSVX2=MOD(KFSVMX/100,10) - KFA=MAX(KFSVX1,KFSVX2,KFSVMN) - KFC=MIN(KFSVX1,KFSVX2,KFSVMN) - KFB=KFSVX1+KFSVX2+KFSVMN-KFA-KFC - K(N+1,2)=SIGN(KSUSY1+90000+1000*KFA+100*KFB+10*KFC+2, - & -KFSAV(1)) - if(iabs(K(N+1,2)).ne.1093212) goto 90 - ENDIF - - CALL PYNAME(K(N+1,2),CHRHAD) - print*, 'R-hadron KF = ',K(N+1,2),' and name ',CHRHAD -c print*, 'RMA KC = ',PYCOMP(K(N+1,2)) -c print*, 'RMA CHAF = ',CHAF(PYCOMP(K(N+1,2)),1),', ' -c & ,CHAF(PYCOMP(K(N+1,2)),1) - K(N+1,3)=K(IGL,3) - N=N+1 - -C... Code and momentum of two new string endpoints. - K(IGL,2)=KFSAV(1) - K(IGL+1,2)=KFSAV(2) - IF(KFSAV(1).NE.21) K(IGL,1)=1 - DO 240 J=1,5 - P(IGL,J)=PSAV(1,J) - P(IGL+1,J)=PSAV(2,J) - 240 CONTINUE - -C... End of loop over two gluinos. - 300 CONTINUE - -C... Cleanup: remove zero-energy gluons. - NNOW=N - N=NOLD - DO 330 I=NOLD+1,NNOW - IF(K(I,2).EQ.21.AND.P(I,4).LT.1D-10) THEN - ELSEIF(I.EQ.N+1) THEN - N=N+1 - ELSE - N=N+1 - DO 320 J=1,5 - K(N,J)=K(I,J) - P(N,J)=P(I,J) - V(N,J)=V(I,J) - 320 CONTINUE - ENDIF - 330 CONTINUE - -C... Finish off with standard hadronization. -C... Note that the R-hadrons are not affected here, since they -C... (deliberately erroneously) have been bookkept as decayed. - - CALL PYEXEC - -C... Restore code of gluino-hadrons to non-fragmented numbers. - N6=0 - N7=0 - DO 340 I=1,N - IF(K(I,1).EQ.16.OR.K(I,1).EQ.17) K(I,1)=K(I,1)-10 -C... First R-hadron - IF(K(I,1).EQ.6) then - ihad1=i -c WRITE(*,*) 'R-hadron 1 chg:',PYCHGE(K(I,2))/3D0,K(I,2) - N6=N6+1 - ENDIF -C... Second R-hadron - IF(K(I,1).EQ.7) then - N7=N7+1 - ihad2=i -c WRITE(*,*) 'R-hadron 2 chg:',PYCHGE(K(I,2))/3D0,K(I,2) - ENDIF - - 340 CONTINUE - IF(N6.GT.1.OR.N7.GT.1) MSTU(24)=1 - -C... Extracheck charge. - - chgnew=pyp(0,6) - - IF(ABS(CHGNEW-CHGSAV).GT.0.1D0) MSTU(24)=1 -c WRITE(*,*) 'CHGNEW CHGSAV',CHGNEW,CHGSAV - -C... In case of trouble, make up to five attempts. - IF(MSTU(24).NE.0.AND.LOOP.LT.5) THEN - WRITE(*,*) '...give it new try...' - MSTU(23)=MSTU(23)-1 - GOTO 90 - ELSEIF(MSTU(24).NE.0) THEN - WRITE(*,*) '...but still fail after repeated attempts!' -C*** Set error flag. - IERR=2 - ELSEIF(MSTU(24).EQ.0.AND.LOOP.GT.1) THEN - WRITE(*,*) '...and now it worked!' - ENDIF - -C... Finished. Restore baryon production model. - MSTJ(12)=MSTJ12 -c call pylist(2) - RETURN - END - -C********************************************************************* - - - -C...PYGLDC -C...Decays the gluino inside a gluino-hadron. - - SUBROUTINE PYGLDC - -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) -C INTEGER PYK,PYCHGE,PYCOMP -C...Parameter statement to help give large particle numbers -C...(left- and righthanded SUSY, excited fermions). - PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KEXCIT=4000000) -C...Commonblocks. - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) -C...Note that dimensions below grew from 4000 to 8000 in Pythia 6.2! - COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5) - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) - COMMON/PYINT1/MINT(400),VINT(400) - COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2) - SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYPARS/,/PYINT1/, - &/PYINT2/ - -C...Optional offset of constituent quark/diquark mass, -C...representing gluon cloud around gluino not part of the decay. - PMOFF = 0.2D0 - -C...The probability that it has spin 1. -C...(Except for identical flavours, where spin 1 is only possibility.) -C...(Recall that all R-baryon codes were given as if spin 1, sloppily.) - PROBS1=0.5D0 - -C...Loop through to find R-hadrons. - DO 150 I=1,N -C...If only one of the R-hadrons should decay inside the detector, -C...you could here pick at random whether to allow the one with -C...K(I,1) = 6 or the one with =7. (Where the random choice of course -C...could depend on the position of an imagined displaced vertex.) - IF(K(I,1).EQ.6.OR.K(I,1).EQ.7) THEN - -C...Begin resolve R-hadron flavour content to q + qbar or q + qq. - KFRH=(IABS(K(I,2))-KSUSY1)/10 -C...Gluino - g : split g to u ubar or d dbar. - IF(KFRH.LT.100) THEN - KF1=1+INT(0.5D0+PYR(0)) - KF2=-KF1 - ELSEIF(KFRH.LT.1000) THEN -C...Gluino-meson: split to q + qbar. - KFRH=KFRH-900 - KF1=KFRH/10 - KF2=-MOD(KFRH,10) - IF(MOD(KF1,2).EQ.1) THEN - KF1=MOD(KFRH,10) - KF2=-(KFRH/10) - ENDIF -c...Gluino-baryon: split to q + qq (diquark). Pick diquark at random. - ELSE - KFRH=KFRH-9000 - KFA=KFRH/100 - KFB=MOD(KFRH/10,10) - KFC=MOD(KFRH,10) - RDIQ=3D0*PYR(0) - IF(RDIQ.LT.1D0) THEN - KF1=KFA - KF2=1000*KFB+100*KFC+3 - IF(KFB.NE.KFC.AND.PROBS1.LT.PYR(0)) KF2=KF2-2 - ELSEIF(RDIQ.LT.2D0) THEN - KF1=KFB - KF2=1000*KFA+100*KFC+3 - IF(KFA.NE.KFC.AND.PROBS1.LT.PYR(0)) KF2=KF2-2 - ELSE - KF1=KFC - KF2=1000*KFA+100*KFB+3 - IF(KFA.NE.KFB.AND.PROBS1.LT.PYR(0)) KF2=KF2-2 - ENDIF - ENDIF -C...Flip for anti-R-hadron. - IF(K(I,2).LT.0) THEN - KFSV=KF1 - KF1=-KF2 - KF2=-KFSV - ENDIF - -C...Subdivide R-hadron into gluino + 2 light (di)quarks in new slots. - DO 120 I1=N+1,N+3 - K(I1,1)=3 - K(I1,3)=I - K(I1,4)=0 - K(I1,5)=0 - DO 110 J=1,5 - V(I1,J)=0D0 - 110 CONTINUE - 120 CONTINUE - -C...Store new flavours. - K(N+1,2)=KSUSY1+21 - K(N+2,2)=KF1 - K(N+3,2)=KF2 - -C...Set up colour flow. - K(N+1,4)=MSTU(5)*(N+3) - K(N+1,5)=MSTU(5)*(N+2) - K(N+2,4)=MSTU(5)*(N+1) - K(N+3,5)=MSTU(5)*(N+1) - -C...Define effective quark/diquark masses. - MSTJ(93)=1 - PM1=PYMASS(KF1)+PMOFF - MSTJ(93)=1 - PM2=PYMASS(KF2)+PMOFF - -C...Share gluino"hadron" momentum with two light quarks. - FAC1=PM1/P(I,5) - FAC2=PM2/P(I,5) - DO 130 J=1,5 - P(N+1,J)=(1D0-FAC1-FAC2)*P(I,J) - P(N+2,J)=FAC1*P(I,J) - P(N+3,J)=FAC2*P(I,J) - 130 CONTINUE - -C...If you want a displaced vertex, you could also write that info -C...into the V array, but you have to calculate that vertex yourself. - -C...Mark R-hadron decayed and update number counter. - K(I,1)=K(I,1)+10 - K(I,4)=N+1 - K(I,5)=N+3 - N=N+3 - -C...Let gluino decay now. - CALL PYRESD(N-2) - -C...End of loop over two R-hadrons. - ENDIF - 150 CONTINUE - -C...And then the decay products can fragment, etc. - CALL PYEXEC - - - RETURN - END - - -CCCCCCCCCCCC - -C********************************************************************* - -C...PYGLFR -C... Gluino fragmentation for Regge model - - SUBROUTINE PYGLFR(IERR) - -C... Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) -C INTEGER PYK,PYCHGE,PYCOMP -C... Parameter statement to help give large particle numbers -C... (left- and righthanded SUSY, excited fermions). - PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KEXCIT=4000000) -C... Commonblocks. - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) -C... Note that dimensions below grew from 4000 to 8000 in Pythia 6.2! - COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5) - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) - COMMON/PYINT1/MINT(400),VINT(400) - COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2) - SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYPARS/,/PYINT1/, - & /PYINT2/ -C... Local array. - DIMENSION PSUM(5),KFSAV(2),PMSAV(2),PSAV(2,5) - - INTEGER IKFRH(20),IKCHGRH(20),IKANTRH(20) - integer ihad1,ihad2 - REAL*8 PROBGG - COMMON/RHADB/IKFRH,IKCHGRH,IKANTRH,PROBGG - CHARACTER*16 CHRHAD - -C... Free parameter: relative probability for gluino-gluon-ball. -C... (But occasional low-mass string will never become it anyway.) -c Rasmus: Moved to rhadb common block to make configurable -c PROBGG=0.1D0 - -C... Free parameter: gluon constituent mass. - PMGLU=0.7D0 - -C... Free parameter: max kinetic energy in gluino-hadron. - PMKIN=0.5D0 - -C... Switch off popcorn baryon production. (Not imperative, but more -C... failed events when popcorn is allowed.) - MSTJ12=MSTJ(12) - MSTJ(12)=1 - -C... Convenient shorthand. - KFGL=KSUSY1+21 - -C*** Reset error code. - IERR=0 - - write(*,*) 'In PYGLFR' - -C... Loopback point for serious problems, with new try. - LOOP=0 - CALL PYEDIT(21) - CHGSAV=PYP(0,6) - 90 LOOP=LOOP+1 - IF(LOOP.GT.1) CALL PYEDIT(22) - -C*** Begin new code for testing. -C... Find if gluino put first or last in closed loop. - 400 IBEGCL=0 - IENDCL=0 - IF(K(1,2).EQ.KFGL.AND.K(1,1).LE.2) IBEGCL=1 - DO 410 I=2,N - IF(K(I,2).EQ.KFGL) THEN - IF(K(I-1,1).NE.2.AND.K(I,1).LE.2) IBEGCL=I - IF(K(I,1).EQ.1) IENDCL=I - ENDIF - 410 CONTINUE - IF(IBEGCL.GT.0) IENDCL=0 - -C... Range of system beginning or ending with gluino. - IF(IBEGCL.NE.0) THEN - IBEG=IBEGCL - IEND=IBEG - 420 IEND=IEND+1 - IF(IEND.LT.N.AND.K(IEND,1).EQ.2) GOTO 420 - IF(IEND.GT.N) IEND=N - ELSEIF(IENDCL.NE.0) THEN - IEND=IENDCL - IBEG=IEND - 430 IBEG=IBEG-1 -C JK REMOVING COMPILER WARNING - IF(IBEG.GE.2.AND.K(IBEG-1,1).EQ.2) THEN - 431 IEND=IEND+1 - IF(IEND.LT.N.AND.K(IEND,1).EQ.2) GOTO 431 - IF(IEND.GT.N) IEND=N - ENDIF -C JK - ENDIF - -C... Count number of gluinos in system. Error return if only gluinos. - IF(IBEGCL.NE.0.OR.IENDCL.NE.0) THEN - WRITE(*,*) ' Gluino found in closed string; ', - & ' special processing begun ' - NGLSYS=0 - DO 435 I=IBEG,IEND - IF(K(I,2).EQ.KFGL) NGLSYS=NGLSYS+1 - 435 CONTINUE - IF(NGLSYS.EQ.IEND-IBEG+1) THEN - IERR=1 - MSTJ(12)=MSTJ12 - WRITE(*,*) ' Fail to fragment closed string of gluinos only' - RETURN - ENDIF - -C... Decide to split system at random gluon. - 440 ISPLIT=IBEG+INT(PYR(0)*(IEND+1-IBEG)) - IF(ISPLIT.GT.IEND.OR.K(ISPLIT,2).EQ.KFGL) GOTO 440 - -C... Copy system from ISPLIT to end, beginning with a d or u quark. - KFSPL=INT(1.5D0+PYR(0)) - DO 470 I=ISPLIT,IEND - N=N+1 - DO 450 J=1,5 - K(N,J)=K(I,J) - P(N,J)=P(I,J) - V(N,J)=V(I,J) - 450 CONTINUE - K(I,1)=K(I,1)+10 - K(I,4)=N - K(I,5)=N - K(N,1)=2 - K(N,3)=I - IF(I.EQ.ISPLIT) THEN - K(N,2)=KFSPL - DO 460 J=1,5 - P(N,J)=0.5D0*P(N,J) - 460 CONTINUE - ENDIF - 470 CONTINUE - -C... Copy system from beginning to ISPLIT, ending with a dbar or ubar quark. - DO 500 I=IBEG,ISPLIT - N=N+1 - DO 480 J=1,5 - K(N,J)=K(I,J) - P(N,J)=P(I,J) - V(N,J)=V(I,J) - 480 CONTINUE - K(I,1)=K(I,1)+10 - K(I,4)=N - K(I,5)=N - K(N,1)=2 - K(N,3)=I - IF(I.EQ.ISPLIT) THEN - K(N,1)=1 - K(N,2)=-KFSPL - DO 490 J=1,5 - P(N,J)=0.5D0*P(N,J) - 490 CONTINUE - ENDIF - 500 CONTINUE - -C... Loop back in case both gluinos need to be addressed this way. - GOTO 400 - ENDIF -C*** End new code for testing. - -C... Take copy of string system(s), leaving extra free slot after gluino. -C... (Eventually to be overwritten by one q and one qbar string break.) - NOLD=N - NGLUI=0 - DO 120 I=1,NOLD - ICOPY=0 - IF(K(I,1).EQ.2) ICOPY=1 - IF(K(I,1).EQ.1.AND.I.GE.2) THEN - IF(K(I-1,1).EQ.12) ICOPY=1 - ENDIF - IF(ICOPY.EQ.1) THEN - N=N+1 - DO 100 J=1,5 - K(N,J)=K(I,J) - P(N,J)=P(I,J) - V(N,J)=V(I,J) - 100 CONTINUE - K(I,1)=K(I,1)+10 - K(I,4)=N - K(I,5)=N - K(N,3)=I - IF(K(I,2).EQ.KFGL) THEN - NGLUI=NGLUI+1 - N=N+1 - DO 110 J=1,5 - K(N,J)=K(N-1,J) - P(N,J)=0D0 - V(N,J)=V(I,J) - 110 CONTINUE - K(I,5)=N - K(N,2)=21 - ENDIF - ENDIF - 120 CONTINUE - -C... Loop over (up to) two gluinos per event. - DO 300 IGLUI=1,NGLUI - -C... Identify position of gluino (randomize order of treatment). - IGL=0 - NGL=0 - DO 130 I=1,N - IF(K(I,1).EQ.2.AND.K(I,2).EQ.KFGL) THEN - NGL=NGL+1 - IF(IGLUI.EQ.NGLUI) THEN - IGL=I - ELSEIF(NGL.EQ.1) THEN - IF(PYR(0).LT.0.5D0) IGL=I - ELSEIF(IGL.EQ.0) THEN - IGL=I - ENDIF - ENDIF - 130 CONTINUE - -C... Identify range of partons on string the gluino belongs to. - IMIN=IGL - 140 IMIN=IMIN-1 - IF(K(IMIN-1,1).EQ.2) GOTO 140 - IMAX=IGL - 150 IMAX=IMAX+1 - IF(K(IMAX,1).EQ.2) GOTO 150 - -C... Find mass of this gluino-string. - DO 170 J=1,5 - PSUM(J)=0D0 - DO 160 I=IMIN,IMAX - PSUM(J)=PSUM(J)+P(I,J) - 160 CONTINUE - 170 CONTINUE - PSUM(5)=SQRT(MAX(0D0,PSUM(4)**2-PSUM(1)**2-PSUM(2)**2- - & PSUM(3)**2)) - -C... If low-mass, then consider gluino-hadron already formed. - IF(PSUM(5).LE.P(IGL,5)+P(IMIN,5)+P(IMAX,5)+PMKIN) THEN - DO 180 I=IMIN,IMAX - K(I,1)=15+IGLUI - 180 CONTINUE - GOTO 300 - ENDIF - -C... Else break string by production of new gg or two new qqbar pairs. -C... (Also diquarks allowed, but not popcorn, and not two adjacent.) - IF(PYR(0).LT.PROBGG) THEN -C... Let a gluon occupy two slots, to make administration work the same -C... way as for the qqbar case. - KFSAV(1)=21 - KFSAV(2)=21 - PMSAV(1)=0.5D0*PMGLU - PMSAV(2)=0.5D0*PMGLU - ELSE - 185 CALL PYDCYK(K(IMIN,2),0,KFSAV(1),KFDUM) - CALL PYDCYK(K(IMAX,2),0,KFSAV(2),KFDUM) - IF(IABS(KFSAV(1)).GT.10.AND.IABS(KFSAV(2)).GT.10) GOTO 185 - IF(IABS(KFSAV(1)).GT.10.AND.IABS(K(IGL-1,2)).GT.10) GOTO 185 - IF(IABS(KFSAV(2)).GT.10.AND.IABS(K(IGL+2,2)).GT.10) GOTO 185 - KFSAV(1)=ISIGN(MOD(IABS(KFSAV(1)),10000),KFSAV(1)) - KFSAV(2)=ISIGN(MOD(IABS(KFSAV(2)),10000),KFSAV(2)) - MSTJ(93)=1 - PMSAV(1)=PYMASS(KFSAV(1)) - MSTJ(93)=1 - PMSAV(2)=PYMASS(KFSAV(2)) - ENDIF - -C... Mass of gluino-hadron. - PMGSAV=P(IGL,5) - PMGB=P(IGL,5)+PMSAV(1)+PMSAV(2) - -C... Pick at random order in which both sides of gluino string break. - ISIDE=INT(1.5D0+PYR(0)) - DO 220 ISDE=1,2 - IF(ISDE.EQ.1) IS=ISIDE - IF(ISDE.EQ.2) IS=3-ISIDE - -C...Pick momentum sharing according to fragmentation function as if bottom. - M11SAV=MSTJ(11) - PMBSAV=PARF(105) - MSTJ(11)=4 - PARF(105)=PMGSAV - CALL PYZDIS(5,0,PMGB**2,ZGL) - MSTJ(11)=M11SAV - PARF(105)=PMBSAV - ZGL=MAX(0.9D0,MIN(0.9999D0,ZGL)) - DO 190 J=1,5 - PSAV(IS,J)=(1D0-ZGL)*P(IGL,J) - P(IGL,J)=ZGL*P(IGL,J) - 190 CONTINUE - -C... Target gluino-hadron mass for this stage of momentum reshuffling. - PMOLD=P(IGL,5) - IF(ISDE.EQ.1) PMNEW=PMGSAV+PMSAV(IS) - IF(ISDE.EQ.2) PMNEW=PMGB - -C... Recoiling parton from which to shuffle momentum. System momentum. - IF(IS.EQ.1) IREC=IGL-1 - IF(IS.EQ.2) IREC=IGL+2 - 200 DO 210 J=1,4 - PSUM(J)=P(IGL,J)+P(IREC,J) - 210 CONTINUE - -C... Boost to rest frame of system, and align gluino along +z axis. - CALL PYROBO(IGL,IGL,0D0,0D0,-(PSUM(1)/PSUM(4)), - & -(PSUM(2)/PSUM(4)),-(PSUM(3)/PSUM(4))) - CALL PYROBO(IREC,IREC,0D0,0D0,-(PSUM(1)/PSUM(4)), - & -(PSUM(2)/PSUM(4)),-(PSUM(3)/PSUM(4))) - PHI=PYANGL(P(IGL,1),P(IGL,2)) - CALL PYROBO(IGL,IGL,0D0,-PHI,0D0,0D0,0D0) - CALL PYROBO(IREC,IREC,0D0,-PHI,0D0,0D0,0D0) - THETA=PYANGL(P(IGL,3),P(IGL,1)) - CALL PYROBO(IGL,IGL,-THETA,0D0,0D0,0D0,0D0) - CALL PYROBO(IREC,IREC,-THETA,0D0,0D0,0D0,0D0) - -C... Calculate new kinematics in this frame, for desired gluino mass. - ETOT=P(IGL,4)+P(IREC,4) - IF(ETOT.GT.PMNEW+P(IREC,5)) THEN - IFAIL=0 - PZNEW=0.5D0 - & *SQRT(MAX(0D0,(ETOT**2-PMNEW**2-P(IREC,5)**2)**2- - & 4D0*PMNEW**2*P(IREC,5)**2))/ETOT - P(IGL,3)=PZNEW - P(IGL,4)=SQRT(PZNEW**2+PMNEW**2) - P(IGL,5)=PMNEW - P(IREC,3)=-PZNEW - P(IREC,4)=SQRT(PZNEW**2+P(IREC,5)**2) - -C... If not enough momentum, take what can be taken. - ELSE - IFAIL=1 - PMOLD=ETOT-P(IREC,5) - P(IGL,3)=0D0 - P(IGL,4)=PMOLD - P(IGL,5)=PMOLD - P(IREC,3)=0D0 - P(IREC,4)=P(IREC,5) - ENDIF - -C... Bost back to lab frame. - CALL PYROBO(IGL,IGL,THETA,PHI,PSUM(1)/PSUM(4), - & PSUM(2)/PSUM(4),PSUM(3)/PSUM(4)) - CALL PYROBO(IREC,IREC,THETA,PHI,PSUM(1)/PSUM(4), - & PSUM(2)/PSUM(4),PSUM(3)/PSUM(4)) - -C... Loop back when not enough momentum could be shuffled. -C... (As long as there is something left on either side.) - IF(IFAIL.EQ.1) THEN - 215 IF(IS.EQ.1.AND.IREC.GT.IMIN) THEN - IREC=IREC-1 - GOTO 200 - ELSEIF(IS.EQ.2.AND.IREC.LT.IMAX) THEN - IREC=IREC+1 - GOTO 200 - ELSEIF(ISDE.EQ.2.AND.IS.EQ.3-ISIDE) THEN - IS=ISIDE - IREC=IRECSV - GOTO 215 - ENDIF - ENDIF - -C... End loop over fragmentation of two sides around gluino. - IRECSV=IREC - 220 CONTINUE - -C... New slot at end of record for gluino R-hadron. - DO 230 J=1,5 - K(N+1,J)=0 - P(N+1,J)=P(IGL,J) - V(N+1,J)=V(IGL,J) - 230 CONTINUE - -C... Status and code of this slot. - K(N+1,1)=15+IGLUI - KFSVMX=MAX(IABS(KFSAV(1)),IABS(KFSAV(2))) - KFSVMN=MIN(IABS(KFSAV(1)),IABS(KFSAV(2))) -C... Gluino-ball. - IF(KFSVMX.EQ.21) THEN - K(N+1,2)=KSUSY1+993 -C... Gluino-meson. - ELSEIF(KFSVMX.LT.10) THEN - K(N+1,2)=KSUSY1+9000+100*KFSVMX+10*KFSVMN+3 - IF(KFSVMX.EQ.KFSVMN) THEN - ELSEIF(MOD(KFSVMX,2).EQ.0) THEN - IF(KFSVMX.EQ.KFSAV(1).OR.KFSVMX.EQ.KFSAV(2)) - & K(N+1,2)=-K(N+1,2) - ELSE - IF(KFSVMX.EQ.-KFSAV(1).OR.KFSVMX.EQ.-KFSAV(2)) - & K(N+1,2)=-K(N+1,2) - ENDIF -C... Gluino-baryon. - ELSE - KFSVX1=KFSVMX/1000 - KFSVX2=MOD(KFSVMX/100,10) - KFA=MAX(KFSVX1,KFSVX2,KFSVMN) - KFC=MIN(KFSVX1,KFSVX2,KFSVMN) - KFB=KFSVX1+KFSVX2+KFSVMN-KFA-KFC - K(N+1,2)=SIGN(KSUSY1+90000+1000*KFA+100*KFB+10*KFC+4, - & -KFSAV(1)) - ENDIF - CALL PYNAME(K(N+1,2),CHRHAD) - print*, 'R-hadron KF = ',K(N+1,2),' and name ',CHRHAD - - - K(N+1,3)=K(IGL,3) - N=N+1 - -C... Code and momentum of two new string endpoints. - K(IGL,2)=KFSAV(1) - K(IGL+1,2)=KFSAV(2) - IF(KFSAV(1).NE.21) K(IGL,1)=1 - DO 240 J=1,5 - P(IGL,J)=PSAV(1,J) - P(IGL+1,J)=PSAV(2,J) - 240 CONTINUE - -C... End of loop over two gluinos. - 300 CONTINUE - -C... Cleanup: remove zero-energy gluons. - NNOW=N - N=NOLD - DO 330 I=NOLD+1,NNOW - IF(K(I,2).EQ.21.AND.P(I,4).LT.1D-10) THEN - ELSEIF(I.EQ.N+1) THEN - N=N+1 - ELSE - N=N+1 - DO 320 J=1,5 - K(N,J)=K(I,J) - P(N,J)=P(I,J) - V(N,J)=V(I,J) - 320 CONTINUE - ENDIF - 330 CONTINUE - -C... Finish off with standard hadronization. -C... Note that the R-hadrons are not affected here, since they -C... (deliberately erroneously) have been bookkept as decayed. - - CALL PYEXEC - -C... Restore code of gluino-hadrons to non-fragmented numbers. - N6=0 - N7=0 - DO 340 I=1,N - IF(K(I,1).EQ.16.OR.K(I,1).EQ.17) K(I,1)=K(I,1)-10 -C... First R-hadron - IF(K(I,1).EQ.6) then - ihad1=i -c WRITE(*,*) 'R-hadron 1 chg:',PYCHGE(K(I,2))/3D0,K(I,2) - N6=N6+1 - ENDIF -C... Second R-hadron - IF(K(I,1).EQ.7) then - N7=N7+1 - ihad2=i -c WRITE(*,*) 'R-hadron 2 chg:',PYCHGE(K(I,2))/3D0,K(I,2) - ENDIF - - 340 CONTINUE - IF(N6.GT.1.OR.N7.GT.1) MSTU(24)=1 - -C... Extracheck charge. - - chgnew=pyp(0,6) - - IF(ABS(CHGNEW-CHGSAV).GT.0.1D0) MSTU(24)=1 -c WRITE(*,*) 'CHGNEW CHGSAV',CHGNEW,CHGSAV - -C... In case of trouble, make up to five attempts. - IF(MSTU(24).NE.0.AND.LOOP.LT.5) THEN - WRITE(*,*) '...give it new try...' - MSTU(23)=MSTU(23)-1 - GOTO 90 - ELSEIF(MSTU(24).NE.0) THEN - WRITE(*,*) '...but still fail after repeated attempts!' -C*** Set error flag. - IERR=2 - ELSEIF(MSTU(24).EQ.0.AND.LOOP.GT.1) THEN - WRITE(*,*) '...and now it worked!' - ENDIF - -C... Finished. Restore baryon production model. - MSTJ(12)=MSTJ12 -c call pylist(2) - RETURN - END - -cccccccccccc - -C********************************************************************* - -C...PYGLFRIN -C... Gluino fragmentation for Regge model - - SUBROUTINE PYGLFRIN(IERR) - -C... Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) -C INTEGER PYK,PYCHGE,PYCOMP -C... Parameter statement to help give large particle numbers -C... (left- and righthanded SUSY, excited fermions). - PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KEXCIT=4000000) -C... Commonblocks. - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) -C... Note that dimensions below grew from 4000 to 8000 in Pythia 6.2! - COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5) - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) - COMMON/PYINT1/MINT(400),VINT(400) - COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2) - SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYPARS/,/PYINT1/, - & /PYINT2/ -C... Local array. - DIMENSION PSUM(5),KFSAV(2),PMSAV(2),PSAV(2,5) - - INTEGER IKFRH(20),IKCHGRH(20),IKANTRH(20) - integer ihad1,ihad2 - REAL*8 PROBGG - COMMON/RHADB/IKFRH,IKCHGRH,IKANTRH,PROBGG - CHARACTER*16 CHRHAD - -C... Free parameter: relative probability for gluino-gluon-ball. -C... (But occasional low-mass string will never become it anyway.) -c Rasmus: Moved to rhadb common block to make configurable -c PROBGG=0.1D0 - -C... Free parameter: gluon constituent mass. - PMGLU=0.33D0 - -C... Free parameter: max kinetic energy in gluino-hadron. - PMKIN=0.5D0 - -C... Switch off popcorn baryon production. (Not imperative, but more -C... failed events when popcorn is allowed.) - MSTJ12=MSTJ(12) - MSTJ(12)=1 - -C... Convenient shorthand. - KFGL=KSUSY1+21 - -C*** Reset error code. - IERR=0 - - write(*,*) 'In PYGLFRIN' - -C... Loopback point for serious problems, with new try. - LOOP=0 - CALL PYEDIT(21) - CHGSAV=PYP(0,6) - 90 LOOP=LOOP+1 - IF(LOOP.GT.1) CALL PYEDIT(22) - -C*** Begin new code for testing. -C... Find if gluino put first or last in closed loop. - 400 IBEGCL=0 - IENDCL=0 - IF(K(1,2).EQ.KFGL.AND.K(1,1).LE.2) IBEGCL=1 - DO 410 I=2,N - IF(K(I,2).EQ.KFGL) THEN - IF(K(I-1,1).NE.2.AND.K(I,1).LE.2) IBEGCL=I - IF(K(I,1).EQ.1) IENDCL=I - ENDIF - 410 CONTINUE - IF(IBEGCL.GT.0) IENDCL=0 - -C... Range of system beginning or ending with gluino. - IF(IBEGCL.NE.0) THEN - IBEG=IBEGCL - IEND=IBEG - 420 IEND=IEND+1 - IF(IEND.LT.N.AND.K(IEND,1).EQ.2) GOTO 420 - IF(IEND.GT.N) IEND=N - ELSEIF(IENDCL.NE.0) THEN - IEND=IENDCL - IBEG=IEND - 430 IBEG=IBEG-1 -C JK REMOVING COMPILER WARNING - IF(IBEG.GE.2.AND.K(IBEG-1,1).EQ.2) THEN - 431 IEND=IEND+1 - IF(IEND.LT.N.AND.K(IEND,1).EQ.2) GOTO 431 - IF(IEND.GT.N) IEND=N -C JK - ENDIF - ENDIF - -C... Count number of gluinos in system. Error return if only gluinos. - IF(IBEGCL.NE.0.OR.IENDCL.NE.0) THEN - WRITE(*,*) ' Gluino found in closed string; ', - & ' special processing begun ' - NGLSYS=0 - DO 435 I=IBEG,IEND - IF(K(I,2).EQ.KFGL) NGLSYS=NGLSYS+1 - 435 CONTINUE - IF(NGLSYS.EQ.IEND-IBEG+1) THEN - IERR=1 - MSTJ(12)=MSTJ12 - WRITE(*,*) ' Fail to fragment closed string of gluinos only' - RETURN - ENDIF - -C... Decide to split system at random gluon. - 440 ISPLIT=IBEG+INT(PYR(0)*(IEND+1-IBEG)) - IF(ISPLIT.GT.IEND.OR.K(ISPLIT,2).EQ.KFGL) GOTO 440 - -C... Copy system from ISPLIT to end, beginning with a d or u quark. - KFSPL=INT(1.5D0+PYR(0)) - DO 470 I=ISPLIT,IEND - N=N+1 - DO 450 J=1,5 - K(N,J)=K(I,J) - P(N,J)=P(I,J) - V(N,J)=V(I,J) - 450 CONTINUE - K(I,1)=K(I,1)+10 - K(I,4)=N - K(I,5)=N - K(N,1)=2 - K(N,3)=I - IF(I.EQ.ISPLIT) THEN - K(N,2)=KFSPL - DO 460 J=1,5 - P(N,J)=0.5D0*P(N,J) - 460 CONTINUE - ENDIF - 470 CONTINUE - -C... Copy system from beginning to ISPLIT, ending with a dbar or ubar quark. - DO 500 I=IBEG,ISPLIT - N=N+1 - DO 480 J=1,5 - K(N,J)=K(I,J) - P(N,J)=P(I,J) - V(N,J)=V(I,J) - 480 CONTINUE - K(I,1)=K(I,1)+10 - K(I,4)=N - K(I,5)=N - K(N,1)=2 - K(N,3)=I - IF(I.EQ.ISPLIT) THEN - K(N,1)=1 - K(N,2)=-KFSPL - DO 490 J=1,5 - P(N,J)=0.5D0*P(N,J) - 490 CONTINUE - ENDIF - 500 CONTINUE - -C... Loop back in case both gluinos need to be addressed this way. - GOTO 400 - ENDIF -C*** End new code for testing. - -C... Take copy of string system(s), leaving extra free slot after gluino. -C... (Eventually to be overwritten by one q and one qbar string break.) - NOLD=N - NGLUI=0 - DO 120 I=1,NOLD - ICOPY=0 - IF(K(I,1).EQ.2) ICOPY=1 - IF(K(I,1).EQ.1.AND.I.GE.2) THEN - IF(K(I-1,1).EQ.12) ICOPY=1 - ENDIF - IF(ICOPY.EQ.1) THEN - N=N+1 - DO 100 J=1,5 - K(N,J)=K(I,J) - P(N,J)=P(I,J) - V(N,J)=V(I,J) - 100 CONTINUE - K(I,1)=K(I,1)+10 - K(I,4)=N - K(I,5)=N - K(N,3)=I - IF(K(I,2).EQ.KFGL) THEN - NGLUI=NGLUI+1 - N=N+1 - DO 110 J=1,5 - K(N,J)=K(N-1,J) - P(N,J)=0D0 - V(N,J)=V(I,J) - 110 CONTINUE - K(I,5)=N - K(N,2)=21 - ENDIF - ENDIF - 120 CONTINUE - -C... Loop over (up to) two gluinos per event. - DO 300 IGLUI=1,NGLUI - -C... Identify position of gluino (randomize order of treatment). - IGL=0 - NGL=0 - DO 130 I=1,N - IF(K(I,1).EQ.2.AND.K(I,2).EQ.KFGL) THEN - NGL=NGL+1 - IF(IGLUI.EQ.NGLUI) THEN - IGL=I - ELSEIF(NGL.EQ.1) THEN - IF(PYR(0).LT.0.5D0) IGL=I - ELSEIF(IGL.EQ.0) THEN - IGL=I - ENDIF - ENDIF - 130 CONTINUE - -C... Identify range of partons on string the gluino belongs to. - IMIN=IGL - 140 IMIN=IMIN-1 - IF(K(IMIN-1,1).EQ.2) GOTO 140 - IMAX=IGL - 150 IMAX=IMAX+1 - IF(K(IMAX,1).EQ.2) GOTO 150 - -C... Find mass of this gluino-string. - DO 170 J=1,5 - PSUM(J)=0D0 - DO 160 I=IMIN,IMAX - PSUM(J)=PSUM(J)+P(I,J) - 160 CONTINUE - 170 CONTINUE - PSUM(5)=SQRT(MAX(0D0,PSUM(4)**2-PSUM(1)**2-PSUM(2)**2- - & PSUM(3)**2)) - -C... If low-mass, then consider gluino-hadron already formed. - IF(PSUM(5).LE.P(IGL,5)+P(IMIN,5)+P(IMAX,5)+PMKIN) THEN - DO 180 I=IMIN,IMAX - K(I,1)=15+IGLUI - 180 CONTINUE - GOTO 300 - ENDIF - -C... Else break string by production of new gg or two new qqbar pairs. -C... (Also diquarks allowed, but not popcorn, and not two adjacent.) - IF(PYR(0).LT.PROBGG) THEN -C... Let a gluon occupy two slots, to make administration work the same -C... way as for the qqbar case. - KFSAV(1)=21 - KFSAV(2)=21 - PMSAV(1)=0.5D0*PMGLU - PMSAV(2)=0.5D0*PMGLU - ELSE - 185 CALL PYDCYK(K(IMIN,2),0,KFSAV(1),KFDUM) - CALL PYDCYK(K(IMAX,2),0,KFSAV(2),KFDUM) - IF(IABS(KFSAV(1)).GT.10.AND.IABS(KFSAV(2)).GT.10) GOTO 185 - IF(IABS(KFSAV(1)).GT.10.AND.IABS(K(IGL-1,2)).GT.10) GOTO 185 - IF(IABS(KFSAV(2)).GT.10.AND.IABS(K(IGL+2,2)).GT.10) GOTO 185 - KFSAV(1)=ISIGN(MOD(IABS(KFSAV(1)),10000),KFSAV(1)) - KFSAV(2)=ISIGN(MOD(IABS(KFSAV(2)),10000),KFSAV(2)) - MSTJ(93)=1 - PMSAV(1)=PYMASS(KFSAV(1)) - MSTJ(93)=1 - PMSAV(2)=PYMASS(KFSAV(2)) - ENDIF - -C... Mass of gluino-hadron. - PMGSAV=P(IGL,5) -c PMGB=P(IGL,5)+PMSAV(1)+PMSAV(2) - if(IABS(KFSAV(1)).lt.10.and.IABS(KFSAV(2)).lt.10) then - if(IABS(KFSAV(1)).ne.3.and.IABS(KFSAV(2)).ne.3) then - PMGB=P(IGL,5)+0.33 - else - PMGB=P(IGL,5)+0.46 - endif - else - PMGB=P(IGL,5)+PMSAV(1)+PMSAV(2) - endif - -C... Pick at random order in which both sides of gluino string break. - ISIDE=INT(1.5D0+PYR(0)) - DO 220 ISDE=1,2 - IF(ISDE.EQ.1) IS=ISIDE - IF(ISDE.EQ.2) IS=3-ISIDE - -C...Pick momentum sharing according to fragmentation function as if bottom. - M11SAV=MSTJ(11) - PMBSAV=PARF(105) - MSTJ(11)=4 - PARF(105)=PMGSAV - CALL PYZDIS(5,0,PMGB**2,ZGL) - MSTJ(11)=M11SAV - PARF(105)=PMBSAV - ZGL=MAX(0.9D0,MIN(0.9999D0,ZGL)) - DO 190 J=1,5 - PSAV(IS,J)=(1D0-ZGL)*P(IGL,J) - P(IGL,J)=ZGL*P(IGL,J) - 190 CONTINUE - -C... Target gluino-hadron mass for this stage of momentum reshuffling. - PMOLD=P(IGL,5) - IF(ISDE.EQ.1) PMNEW=PMGSAV+PMSAV(IS) - IF(ISDE.EQ.2) PMNEW=PMGB - -C... Recoiling parton from which to shuffle momentum. System momentum. - IF(IS.EQ.1) IREC=IGL-1 - IF(IS.EQ.2) IREC=IGL+2 - 200 DO 210 J=1,4 - PSUM(J)=P(IGL,J)+P(IREC,J) - 210 CONTINUE - -C... Boost to rest frame of system, and align gluino along +z axis. - CALL PYROBO(IGL,IGL,0D0,0D0,-(PSUM(1)/PSUM(4)), - & -(PSUM(2)/PSUM(4)),-(PSUM(3)/PSUM(4))) - CALL PYROBO(IREC,IREC,0D0,0D0,-(PSUM(1)/PSUM(4)), - & -(PSUM(2)/PSUM(4)),-(PSUM(3)/PSUM(4))) - PHI=PYANGL(P(IGL,1),P(IGL,2)) - CALL PYROBO(IGL,IGL,0D0,-PHI,0D0,0D0,0D0) - CALL PYROBO(IREC,IREC,0D0,-PHI,0D0,0D0,0D0) - THETA=PYANGL(P(IGL,3),P(IGL,1)) - CALL PYROBO(IGL,IGL,-THETA,0D0,0D0,0D0,0D0) - CALL PYROBO(IREC,IREC,-THETA,0D0,0D0,0D0,0D0) - -C... Calculate new kinematics in this frame, for desired gluino mass. - ETOT=P(IGL,4)+P(IREC,4) - IF(ETOT.GT.PMNEW+P(IREC,5)) THEN - IFAIL=0 - PZNEW=0.5D0 - & *SQRT(MAX(0D0,(ETOT**2-PMNEW**2-P(IREC,5)**2)**2- - & 4D0*PMNEW**2*P(IREC,5)**2))/ETOT - P(IGL,3)=PZNEW - P(IGL,4)=SQRT(PZNEW**2+PMNEW**2) - P(IGL,5)=PMNEW - P(IREC,3)=-PZNEW - P(IREC,4)=SQRT(PZNEW**2+P(IREC,5)**2) - -C... If not enough momentum, take what can be taken. - ELSE - IFAIL=1 - PMOLD=ETOT-P(IREC,5) - P(IGL,3)=0D0 - P(IGL,4)=PMOLD - P(IGL,5)=PMOLD - P(IREC,3)=0D0 - P(IREC,4)=P(IREC,5) - ENDIF - -C... Bost back to lab frame. - CALL PYROBO(IGL,IGL,THETA,PHI,PSUM(1)/PSUM(4), - & PSUM(2)/PSUM(4),PSUM(3)/PSUM(4)) - CALL PYROBO(IREC,IREC,THETA,PHI,PSUM(1)/PSUM(4), - & PSUM(2)/PSUM(4),PSUM(3)/PSUM(4)) - -C... Loop back when not enough momentum could be shuffled. -C... (As long as there is something left on either side.) - IF(IFAIL.EQ.1) THEN - 215 IF(IS.EQ.1.AND.IREC.GT.IMIN) THEN - IREC=IREC-1 - GOTO 200 - ELSEIF(IS.EQ.2.AND.IREC.LT.IMAX) THEN - IREC=IREC+1 - GOTO 200 - ELSEIF(ISDE.EQ.2.AND.IS.EQ.3-ISIDE) THEN - IS=ISIDE - IREC=IRECSV - GOTO 215 - ENDIF - ENDIF - -C... End loop over fragmentation of two sides around gluino. - IRECSV=IREC - 220 CONTINUE - -C... New slot at end of record for gluino R-hadron. - DO 230 J=1,5 - K(N+1,J)=0 - P(N+1,J)=P(IGL,J) - V(N+1,J)=V(IGL,J) - 230 CONTINUE - -C... Status and code of this slot. - K(N+1,1)=15+IGLUI - KFSVMX=MAX(IABS(KFSAV(1)),IABS(KFSAV(2))) - KFSVMN=MIN(IABS(KFSAV(1)),IABS(KFSAV(2))) -C... Gluino-ball. - IF(KFSVMX.EQ.21) THEN - K(N+1,2)=KSUSY1+991 -C... Gluino-meson. - ELSEIF(KFSVMX.LT.10) THEN - IF(KFSVMX.eq.KFSVMN.and.KFSVMX.gt.1) then - KFSVMN=1 - KFSVMX=1 - endif - K(N+1,2)=KSUSY1+9000+100*KFSVMX+10*KFSVMN+1 - IF(KFSVMX.EQ.KFSVMN) THEN - ELSEIF(MOD(KFSVMX,2).EQ.0) THEN - IF(KFSVMX.EQ.KFSAV(1).OR.KFSVMX.EQ.KFSAV(2)) - & K(N+1,2)=-K(N+1,2) - ELSE - IF(KFSVMX.EQ.-KFSAV(1).OR.KFSVMX.EQ.-KFSAV(2)) - & K(N+1,2)=-K(N+1,2) - ENDIF -C... Gluino-baryon. - ELSE - KFSVX1=KFSVMX/1000 - KFSVX2=MOD(KFSVMX/100,10) - KFA=MAX(KFSVX1,KFSVX2,KFSVMN) - KFC=MIN(KFSVX1,KFSVX2,KFSVMN) - KFSPIN=(MOD(KFSVMX,10)-1)/2 - KFB=KFSVX1+KFSVX2+KFSVMN-KFA-KFC - 235 continue - K(N+1,2)=SIGN(KSUSY1+90000+1000*KFA+100*KFB+10*KFC+2*KFSPIN - & +2, -KFSAV(1)) - if(KFA.eq.KFC.and.KFA.eq.KFB) goto 90 - if(CHRHAD.eq.' '.and.KFA.eq.3) then - KFA=1 - 238 if(KFC.gt.KFA.or.KFB.gt.KFA.or.KFC.gt.KFB) then - if(KFB.gt.KFA) then - KFTMP=KFA - KFA=KFB - KFB=KFTMP - endif - if(KFC.gt.KFB) then - KFTMP=KFB - KFB=KFC - KFC=KFTMP - endif - goto 238 - endif - goto 235 - endif - CALL PYNAME(K(N+1,2),CHRHAD) - if(CHRHAD(1:1).ne.'~') goto 90 - ENDIF - CALL PYNAME(K(N+1,2),CHRHAD) - if(CHRHAD(1:1).ne.'~') goto 90 - print*, 'R-hadron KF = ',K(N+1,2),' and name ',CHRHAD - P(N+1,5)=PYMASS(K(N+1,2)) - P(N+1,4)=SQRT( - & P(N+1,1)**2+P(N+1,2)**2+P(N+1,3)**2+P(N+1,5)**2 - & ) - - - K(N+1,3)=K(IGL,3) - N=N+1 - -C... Code and momentum of two new string endpoints. - K(IGL,2)=KFSAV(1) - K(IGL+1,2)=KFSAV(2) - IF(KFSAV(1).NE.21) K(IGL,1)=1 - DO 240 J=1,5 - P(IGL,J)=PSAV(1,J) - P(IGL+1,J)=PSAV(2,J) - 240 CONTINUE - -C... End of loop over two gluinos. - 300 CONTINUE - -C... Cleanup: remove zero-energy gluons. - NNOW=N - N=NOLD - DO 330 I=NOLD+1,NNOW - IF(K(I,2).EQ.21.AND.P(I,4).LT.1D-10) THEN - ELSEIF(I.EQ.N+1) THEN - N=N+1 - ELSE - N=N+1 - DO 320 J=1,5 - K(N,J)=K(I,J) - P(N,J)=P(I,J) - V(N,J)=V(I,J) - 320 CONTINUE - ENDIF - 330 CONTINUE - -C... Finish off with standard hadronization. -C... Note that the R-hadrons are not affected here, since they -C... (deliberately erroneously) have been bookkept as decayed. - - CALL PYEXEC - -C... Restore code of gluino-hadrons to non-fragmented numbers. - N6=0 - N7=0 - DO 340 I=1,N - IF(K(I,1).EQ.16.OR.K(I,1).EQ.17) K(I,1)=K(I,1)-10 -C... First R-hadron - IF(K(I,1).EQ.6) then - ihad1=i -c WRITE(*,*) 'R-hadron 1 chg:',PYCHGE(K(I,2))/3D0,K(I,2) - N6=N6+1 - ENDIF -C... Second R-hadron - IF(K(I,1).EQ.7) then - N7=N7+1 - ihad2=i -c WRITE(*,*) 'R-hadron 2 chg:',PYCHGE(K(I,2))/3D0,K(I,2) - ENDIF - - 340 CONTINUE - IF(N6.GT.1.OR.N7.GT.1) MSTU(24)=1 - -C... Extracheck charge. - - chgnew=pyp(0,6) - - IF(ABS(CHGNEW-CHGSAV).GT.0.1D0) MSTU(24)=1 -c WRITE(*,*) 'CHGNEW CHGSAV',CHGNEW,CHGSAV - -C... In case of trouble, make up to five attempts. - IF(MSTU(24).NE.0.AND.LOOP.LT.5) THEN - WRITE(*,*) '...give it new try...' - MSTU(23)=MSTU(23)-1 - GOTO 90 - ELSEIF(MSTU(24).NE.0) THEN - WRITE(*,*) '...but still fail after repeated attempts!' -C*** Set error flag. - IERR=2 - ELSEIF(MSTU(24).EQ.0.AND.LOOP.GT.1) THEN - WRITE(*,*) '...and now it worked!' - ENDIF - -C... Finished. Restore baryon production model. - MSTJ(12)=MSTJ12 -c call pylist(2) - RETURN - END diff --git a/Generators/Pythia_i/src/PythiaModified/pysthad.F b/Generators/Pythia_i/src/PythiaModified/pysthad.F deleted file mode 100644 index b32299a237ebaa4d2580db351b9bb824fe5953c1..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/src/PythiaModified/pysthad.F +++ /dev/null @@ -1,1294 +0,0 @@ -C********************************************************************* - -C...PYSTFR -C...Fragments the string near to a stop, to form a stop-hadron, -C...by producing a new q-qbar pair. - - SUBROUTINE PYSTFR(IERR) - -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) -C INTEGER PYK,PYCHGE,PYCOMP - INTEGER PYCOMP -C...Parameter statement to help give large particle numbers -C...(left- and righthanded SUSY, excited fermions). - PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KEXCIT=4000000) -C...Commonblocks. - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) -C...Note that dimensions below grew from 4000 to 8000 in Pythia 6.2! - COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5) - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) - COMMON/PYINT1/MINT(400),VINT(400) - COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2) - SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYPARS/,/PYINT1/, - &/PYINT2/ -C...Local array. -C DIMENSION PSUM(5),PSAV(5),IJOIN(2),IPOSST(10) - DIMENSION PSUM(5),PSAV(5),IPOSST(10) - -c print*, "PYSTFR called" - -C...Default is no error. - IERR=0 - -C...Free parameter: max kinetic energy in gluino-hadron. - PMKIN=0.5D0 - -C...Free parameter: part of stop mass that does not participate -C...in weak decay. - PMINAC=0.5D0 - -C...Switch off popcorn baryon production. (Not imperative, but more -C...failed events when popcorn is allowed.) - MSTJ12=MSTJ(12) - MSTJ(12)=1 - -C...Convenient shorthand. - KFST=KSUSY1+6 - KCST=PYCOMP(KFST) - KFGL=KSUSY1+21 - -C...Loopback point for serious problems, with new try. - LOOP=0 - CALL PYEDIT(21) - CHGSAV=PYP(0,6) - 90 LOOP=LOOP+1 - IF(LOOP.GT.1) CALL PYEDIT(22) - -C...Give up when too much problems. - IF(LOOP.GT.5) THEN - WRITE(*,*) ' Problematical event skipped' - IERR=1 - RETURN - ENDIF - -C...Take copy of string system(s). - NOLD=N - NSTOP=0 - DO 120 I=1,NOLD - ICOPY=0 - IF(K(I,1).EQ.2) ICOPY=1 - IF(K(I,1).EQ.1.AND.I.GE.2) THEN - IF(K(I-1,1).EQ.12) ICOPY=1 - ENDIF - IF(ICOPY.EQ.1) THEN - N=N+1 - DO 100 J=1,5 - K(N,J)=K(I,J) - P(N,J)=P(I,J) - V(N,J)=V(I,J) - 100 CONTINUE - K(I,1)=K(I,1)+10 - K(I,4)=N - K(I,5)=N - K(N,3)=I - IF(IABS(K(I,2)).EQ.KFST) THEN - NSTOP=NSTOP+1 - IPOSST(NSTOP)=N - ENDIF - ENDIF - 120 CONTINUE - NTMP=N - -C...Loop over (up to) two stops per event. -C...Identify position of stop (randomize order of treatment). - IRNST=INT(1.5D0+PYR(0)) - DO 300 ISTOP=1,NSTOP - IST=IPOSST(1) - IF(NSTOP.EQ.2.AND.ISTOP.NE.IRNST) IST=IPOSST(2) - -C...Identify range of partons on string the stop belongs to. - IMIN=IST+1 - 140 IMIN=IMIN-1 - IF(K(IMIN-1,1).EQ.2) GOTO 140 - IMAX=IST-1 - 150 IMAX=IMAX+1 - IF(K(IMAX,1).EQ.2) GOTO 150 - IOTHER=IMAX - IF(IST.EQ.IMAX) IOTHER=IMIN - -C...Find mass of this stop-string. - DO 170 J=1,5 - PSUM(J)=0D0 - DO 160 I=IMIN,IMAX - PSUM(J)=PSUM(J)+P(I,J) - 160 CONTINUE - 170 CONTINUE - PSUM(5)=SQRT(MAX(0D0,PSUM(4)**2-PSUM(1)**2-PSUM(2)**2- - & PSUM(3)**2)) - -C... If low-mass, then consider stop-hadron already formed. - IF(PSUM(5).LE.P(IST,5)+P(IOTHER,5)+PMKIN) THEN - -C... New slot at end of record for stop-hadron - N=N+1 - DO 175 J=1,5 - K(N,J)=0 - P(N,J)=PSUM(J) - V(N,J)=V(IST,J) - 175 CONTINUE - K(N,1)=5+ISTOP - K(N,3)=IST - -C... Particle code for stop-hadron in low-mass system. - KFSTHD=0 - KFSAV=K(IOTHER,2) - IF(K(IST,2).GT.0) THEN - IF(KFSAV.LE.-1.AND.KFSAV.GE.-5) - & KFSTHD=KSUSY1+600-10*KFSAV+2 - IF(KFSAV.GE.1103.AND.KFSAV.LE.3303) KFSTHD=KSUSY1+6000+ - & (KFSAV/10)+MOD(KFSAV,10) - ELSE - IF(KFSAV.GE.1.AND.KFSAV.LE.5) KFSTHD=KSUSY1+600+10*KFSAV+2 - IF(KFSAV.LE.-1103.AND.KFSAV.GE.-3303) KFSTHD=KSUSY1+6000+ - & (IABS(KFSAV)/10)+MOD(IABS(KFSAV),10) - KFSTHD=-KFSTHD - ENDIF - IF(KFSTHD.EQ.0) THEN - WRITE(*,*) ' Failed to find R-hadron code from ', - & K(IST,2),KFSAV - IERR=1 - RETURN - ENDIF - K(N,2)=KFSTHD - -C... Mark original partons decayed. Done for low-mass system. - DO 180 I=IMIN,IMAX - K(I,1)=K(I,1)+10 - K(I,4)=N - K(I,5)=N - 180 CONTINUE - GOTO 300 - ENDIF - - - -C...Else break string by production of new qqbar pair. -C...(Also diquarks allowed, but not popcorn.) - INFLAV=ISIGN(4,K(IST,2)) - CALL PYDCYK(INFLAV,0,KFSAV,KFDUM) - KFSAV=ISIGN(MOD(IABS(KFSAV),10000),KFSAV) - MSTJ(93)=1 - PMSAV=PYMASS(KFSAV) - -C...Mass of stop-hadron. - PMSSAV=P(IST,5) - PMSHAD=P(IST,5)+PMSAV - -C...Pick momentum sharing according to fragmentation function as if bottom. - PMBSAV=PARF(105) - PARF(105)=PMSSAV - CALL PYZDIS(5,0,PMSHAD**2,ZST) - PARF(105)=PMBSAV - ZST=MAX(0.9D0,MIN(0.9999D0,ZST)) - DO 190 J=1,5 - PSAV(J)=(1D0-ZST)*P(IST,J) - P(IST,J)=ZST*P(IST,J) - 190 CONTINUE - -C...Recoiling parton from which to shuffle momentum. System momentum. - IF(IST.EQ.IMIN) IREC=IST+1 - IF(IST.EQ.IMAX) IREC=IST-1 - 200 DO 210 J=1,4 - PSUM(J)=P(IST,J)+P(IREC,J) - 210 CONTINUE - -C...Boost to rest frame of system, and align stop along +z axis. - CALL PYROBO(IST,IST,0D0,0D0,-(PSUM(1)/PSUM(4)), - & -(PSUM(2)/PSUM(4)),-(PSUM(3)/PSUM(4))) - CALL PYROBO(IREC,IREC,0D0,0D0,-(PSUM(1)/PSUM(4)), - & -(PSUM(2)/PSUM(4)),-(PSUM(3)/PSUM(4))) - PHI=PYANGL(P(IST,1),P(IST,2)) - CALL PYROBO(IST,IST,0D0,-PHI,0D0,0D0,0D0) - CALL PYROBO(IREC,IREC,0D0,-PHI,0D0,0D0,0D0) - THETA=PYANGL(P(IST,3),P(IST,1)) - CALL PYROBO(IST,IST,-THETA,0D0,0D0,0D0,0D0) - CALL PYROBO(IREC,IREC,-THETA,0D0,0D0,0D0,0D0) - -C...Calculate new kinematics in this frame, for desired stop hadron mass. - ETOT=P(IST,4)+P(IREC,4) - PMREC=P(IREC,5) - IF(K(IREC,2).NE.21.AND.IABS(K(IREC,2)).NE.KFST) THEN - MSTJ(93)=1 - PMREC=PYMASS(K(IREC,2)) - ENDIF - IF(ETOT.GT.PMSHAD+PMREC) THEN - IFAIL=0 - PZNEW=0.5D0*SQRT(MAX(0D0,(ETOT**2-PMSHAD**2-PMREC**2)**2- - & 4D0*PMSHAD**2*PMREC**2))/ETOT - P(IST,3)=PZNEW - P(IST,4)=SQRT(PZNEW**2+PMSHAD**2) - P(IST,5)=PMSHAD - P(IREC,3)=-PZNEW - P(IREC,4)=SQRT(PZNEW**2+PMREC**2) - P(IREC,5)=PMREC - -C...If not enough momentum, take what can be taken. - ELSE - IFAIL=1 - P(IST,3)=0D0 - P(IST,4)=ETOT-PMREC - P(IST,5)=P(IST,4) - P(IREC,3)=0D0 - P(IREC,4)=PMREC - P(IREC,5)=PMREC - ENDIF - -C...Bost back to lab frame. - CALL PYROBO(IST,IST,THETA,PHI,PSUM(1)/PSUM(4), - & PSUM(2)/PSUM(4),PSUM(3)/PSUM(4)) - CALL PYROBO(IREC,IREC,THETA,PHI,PSUM(1)/PSUM(4), - & PSUM(2)/PSUM(4),PSUM(3)/PSUM(4)) - -C...Loop back when not enough momentum could be shuffled. -C...(As long as there is something left.) - IF(IFAIL.EQ.1) THEN - IF(IST.EQ.IMIN.AND.IREC.LT.IMAX) THEN - IREC=IREC+1 - GOTO 200 - ELSEIF(IST.EQ.IMAX.AND.IREC.GT.IMIN) THEN - IREC=IREC-1 - GOTO 200 - ENDIF - ENDIF - -C...Particle code for stop-hadron. - KFSTHD=0 - IF(K(IST,2).GT.0) THEN - IF(KFSAV.LE.-1.AND.KFSAV.GE.-5) KFSTHD=KSUSY1+600-10*KFSAV+2 - IF(KFSAV.GE.1103.AND.KFSAV.LE.3303) KFSTHD=KSUSY1+6000+ - & (KFSAV/10)+MOD(KFSAV,10) - ELSE - IF(KFSAV.GE.1.AND.KFSAV.LE.5) KFSTHD=KSUSY1+600+10*KFSAV+2 - IF(KFSAV.LE.-1103.AND.KFSAV.GE.-3303) KFSTHD=KSUSY1+6000+ - & (IABS(KFSAV)/10)+MOD(IABS(KFSAV),10) - KFSTHD=-KFSTHD - ENDIF - IF(KFSTHD.EQ.0) THEN - WRITE(*,*) ' Failed to find R-hadron code from ', - & K(IST,2),KFSAV - IERR=1 - RETURN - ENDIF - -C...New slot at end of record for stop-hadron - DO 230 J=1,5 - K(N+1,J)=0 - P(N+1,J)=P(IST,J) - V(N+1,J)=V(IST,J) - 230 CONTINUE - K(N+1,1)=5+ISTOP - K(N+1,2)=KFSTHD - K(N+1,3)=K(IST,3) - N=N+1 - -C...Code and momentum of new string endpoint. - K(IST,2)=-KFSAV - DO 240 J=1,5 - P(IST,J)=PSAV(J) - 240 CONTINUE - -C...End of loop over two stops. - 300 CONTINUE - -C...Cleanup: remove zero-energy gluons. - NNOW=N - N=NOLD - DO 330 I=NOLD+1,NNOW - IF(K(I,2).EQ.21.AND.P(I,4).LT.1D-10) THEN - ELSEIF(I.EQ.N+1) THEN - N=N+1 - ELSE - N=N+1 - DO 320 J=1,5 - K(N,J)=K(I,J) - P(N,J)=P(I,J) - V(N,J)=V(I,J) - 320 CONTINUE - ENDIF - 330 CONTINUE - NNOW=N - -C...Check that no low-mass system of diquark-antidiquark kind, -C...or very low-mass of any kind. - KFBEG=0 - DO 332 J=1,5 - PSUM(J)=0D0 - 332 CONTINUE - DO 338 I=NOLD+1,NNOW - DO 334 J=1,4 - PSUM(J)=PSUM(J)+P(I,J) - 334 CONTINUE - IF(KFBEG.EQ.0) THEN - KFBEG=IABS(K(I,2)) - MSTJ(93)=1 - PSUM(5)=PSUM(5)+PYMASS(K(I,2)) - ELSEIF(K(I,1).EQ.1) THEN - KFEND=IABS(K(I,2)) - MSTJ(93)=1 - PSUM(5)=PSUM(5)+PYMASS(K(I,2)) - DELTA=SQRT(MAX(0D0,PSUM(4)**2-PSUM(1)**2-PSUM(2)**2- - & PSUM(3)**2))-PSUM(5) - IF(KFBEG.GT.10.AND.KFBEG.LT.10000.AND.KFEND.GT.10.AND. - & KFEND.LT.10000.AND.DELTA.LT.PARJ(32).AND.(KFBEG.NE.21 - & .AND.KFEND.NE.21)) GOTO 90 - IF(DELTA.LT.0D0) GOTO 90 - KFBEG=0 - DO 336 J=1,5 - PSUM(J)=0D0 - 336 CONTINUE - ENDIF - 338 CONTINUE - -C...Finished with stop hadronization. Restore baryon production model. - MSTJ(12)=MSTJ12 - -C...Now hadronize everything else. Some cheating to allow sensible -C...momentum shuffling. - MSTJ16=MSTJ(16) - MSTJ(16)=0 - CALL PYEXEC - MSTJ(16)=MSTJ16 - IF(MSTU(24).NE.0) THEN - WRITE(*,*) ' Event to be skipped' - IERR=1 - ENDIF -c call pylist(2) - RETURN - END - -C********************************************************************* - -C...PYSTFRRE -C...Fragments the string near to a stop, to form a stop-hadron, -C...by producing a new q-qbar pair. -C...Regge scheme applied - SUBROUTINE PYSTFRRE(IERR) - -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) -C INTEGER PYK,PYCHGE,PYCOMP - INTEGER PYCOMP -C...Parameter statement to help give large particle numbers -C...(left- and righthanded SUSY, excited fermions). - PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KEXCIT=4000000) -C...Commonblocks. - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) -C...Note that dimensions below grew from 4000 to 8000 in Pythia 6.2! - COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5) - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) - COMMON/PYINT1/MINT(400),VINT(400) - COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2) - SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYPARS/,/PYINT1/, - &/PYINT2/ -C...Local array. -C DIMENSION PSUM(5),PSAV(5),IJOIN(2),IPOSST(10) - DIMENSION PSUM(5),PSAV(5),IPOSST(10) - -c print*, "PYSTFRRE called" - -C...Default is no error. - IERR=0 - -C...Free parameter: max kinetic energy in gluino-hadron. - PMKIN=0.5D0 - -C...Free parameter: part of stop mass that does not participate -C...in weak decay. - PMINAC=0.5D0 - -C...Switch off popcorn baryon production. (Not imperative, but more -C...failed events when popcorn is allowed.) - MSTJ12=MSTJ(12) - MSTJ(12)=1 - -C...Convenient shorthand. - KFST=KSUSY1+6 - KCST=PYCOMP(KFST) - KFGL=KSUSY1+21 - -C...Loopback point for serious problems, with new try. - LOOP=0 - CALL PYEDIT(21) - CHGSAV=PYP(0,6) - 90 LOOP=LOOP+1 - IF(LOOP.GT.1) CALL PYEDIT(22) - -C...Give up when too much problems. - IF(LOOP.GT.5) THEN - WRITE(*,*) ' Problematical event skipped' - IERR=1 - RETURN - ENDIF - -C...Take copy of string system(s). - NOLD=N - NSTOP=0 - DO 120 I=1,NOLD - ICOPY=0 - IF(K(I,1).EQ.2) ICOPY=1 - IF(K(I,1).EQ.1.AND.I.GE.2) THEN - IF(K(I-1,1).EQ.12) ICOPY=1 - ENDIF - IF(ICOPY.EQ.1) THEN - N=N+1 - DO 100 J=1,5 - K(N,J)=K(I,J) - P(N,J)=P(I,J) - V(N,J)=V(I,J) - 100 CONTINUE - K(I,1)=K(I,1)+10 - K(I,4)=N - K(I,5)=N - K(N,3)=I - IF(IABS(K(I,2)).EQ.KFST) THEN - NSTOP=NSTOP+1 - IPOSST(NSTOP)=N - ENDIF - ENDIF - 120 CONTINUE - NTMP=N - -C...Loop over (up to) two stops per event. -C...Identify position of stop (randomize order of treatment). - IRNST=INT(1.5D0+PYR(0)) - DO 300 ISTOP=1,NSTOP - IST=IPOSST(1) - IF(NSTOP.EQ.2.AND.ISTOP.NE.IRNST) IST=IPOSST(2) - -C...Identify range of partons on string the stop belongs to. - IMIN=IST+1 - 140 IMIN=IMIN-1 - IF(K(IMIN-1,1).EQ.2) GOTO 140 - IMAX=IST-1 - 150 IMAX=IMAX+1 - IF(K(IMAX,1).EQ.2) GOTO 150 - IOTHER=IMAX - IF(IST.EQ.IMAX) IOTHER=IMIN - -C...Find mass of this stop-string. - DO 170 J=1,5 - PSUM(J)=0D0 - DO 160 I=IMIN,IMAX - PSUM(J)=PSUM(J)+P(I,J) - 160 CONTINUE - 170 CONTINUE - PSUM(5)=SQRT(MAX(0D0,PSUM(4)**2-PSUM(1)**2-PSUM(2)**2- - & PSUM(3)**2)) - -C... If low-mass, then consider stop-hadron already formed. - IF(PSUM(5).LE.P(IST,5)+P(IOTHER,5)+PMKIN) THEN - -C... New slot at end of record for stop-hadron - N=N+1 - DO 175 J=1,5 - K(N,J)=0 - P(N,J)=PSUM(J) - V(N,J)=V(IST,J) - 175 CONTINUE - K(N,1)=5+ISTOP - K(N,3)=IST - -C... Particle code for stop-hadron in low-mass system. - KFSTHD=0 - KFSAV=K(IOTHER,2) - if(KFSAV.eq.3.or.KFSAV.eq.5) then - KFSAV=1 - endif - if(KFSAV.eq.4) then - KFSAV=2 - endif - if(KFSAV.eq.-3.or.KFSAV.eq.-5) then - KFSAV=-1 - endif - if(KFSAV.eq.-4) then - KFSAV=-2 - endif - IF(K(IST,2).GT.0) THEN - IF(KFSAV.LE.-1.AND.KFSAV.GE.-5) - & KFSTHD=KSUSY1+600-10*KFSAV+2 - IF(KFSAV.GE.1103.AND.KFSAV.LE.3303) KFSTHD=KSUSY1+6000+ - & (KFSAV/10)+MOD(KFSAV,10) - ELSE - IF(KFSAV.GE.1.AND.KFSAV.LE.5) KFSTHD=KSUSY1+600+10*KFSAV+2 - IF(KFSAV.LE.-1103.AND.KFSAV.GE.-3303) KFSTHD=KSUSY1+6000+ - & (IABS(KFSAV)/10)+MOD(IABS(KFSAV),10) - KFSTHD=-KFSTHD - ENDIF - IF(KFSTHD.EQ.0) THEN - WRITE(*,*) ' Failed to find R-hadron code from ', - & K(IST,2),KFSAV - IERR=1 - RETURN - ENDIF - K(N,2)=KFSTHD - -C... Mark original partons decayed. Done for low-mass system. - DO 180 I=IMIN,IMAX - K(I,1)=K(I,1)+10 - K(I,4)=N - K(I,5)=N - 180 CONTINUE - GOTO 300 - ENDIF - -C...Else break string by production of new qqbar pair. -C...(Also diquarks allowed, but not popcorn.) - INFLAV=ISIGN(4,K(IST,2)) - CALL PYDCYK(INFLAV,0,KFSAV,KFDUM) - KFSAV=ISIGN(MOD(IABS(KFSAV),10000),KFSAV) - - if(KFSAV.eq.3.or.KFSAV.eq.5) then - KFSAV=1 - endif - if(KFSAV.eq.4) then - KFSAV=2 - endif - if(KFSAV.eq.-3.or.KFSAV.eq.-5) then - KFSAV=-1 - endif - if(KFSAV.eq.-4) then - KFSAV=-2 - endif - - MSTJ(93)=1 - PMSAV=PYMASS(KFSAV) - -C...Mass of stop-hadron. - PMSSAV=P(IST,5) - PMSHAD=P(IST,5)+PMSAV - -C...Pick momentum sharing according to fragmentation function as if bottom. - PMBSAV=PARF(105) - PARF(105)=PMSSAV - CALL PYZDIS(5,0,PMSHAD**2,ZST) - PARF(105)=PMBSAV - ZST=MAX(0.9D0,MIN(0.9999D0,ZST)) - DO 190 J=1,5 - PSAV(J)=(1D0-ZST)*P(IST,J) - P(IST,J)=ZST*P(IST,J) - 190 CONTINUE - -C...Recoiling parton from which to shuffle momentum. System momentum. - IF(IST.EQ.IMIN) IREC=IST+1 - IF(IST.EQ.IMAX) IREC=IST-1 - 200 DO 210 J=1,4 - PSUM(J)=P(IST,J)+P(IREC,J) - 210 CONTINUE - -C...Boost to rest frame of system, and align stop along +z axis. - CALL PYROBO(IST,IST,0D0,0D0,-(PSUM(1)/PSUM(4)), - & -(PSUM(2)/PSUM(4)),-(PSUM(3)/PSUM(4))) - CALL PYROBO(IREC,IREC,0D0,0D0,-(PSUM(1)/PSUM(4)), - & -(PSUM(2)/PSUM(4)),-(PSUM(3)/PSUM(4))) - PHI=PYANGL(P(IST,1),P(IST,2)) - CALL PYROBO(IST,IST,0D0,-PHI,0D0,0D0,0D0) - CALL PYROBO(IREC,IREC,0D0,-PHI,0D0,0D0,0D0) - THETA=PYANGL(P(IST,3),P(IST,1)) - CALL PYROBO(IST,IST,-THETA,0D0,0D0,0D0,0D0) - CALL PYROBO(IREC,IREC,-THETA,0D0,0D0,0D0,0D0) - -C...Calculate new kinematics in this frame, for desired stop hadron mass. - ETOT=P(IST,4)+P(IREC,4) - PMREC=P(IREC,5) - IF(K(IREC,2).NE.21.AND.IABS(K(IREC,2)).NE.KFST) THEN - MSTJ(93)=1 - PMREC=PYMASS(K(IREC,2)) - ENDIF - IF(ETOT.GT.PMSHAD+PMREC) THEN - IFAIL=0 - PZNEW=0.5D0*SQRT(MAX(0D0,(ETOT**2-PMSHAD**2-PMREC**2)**2- - & 4D0*PMSHAD**2*PMREC**2))/ETOT - P(IST,3)=PZNEW - P(IST,4)=SQRT(PZNEW**2+PMSHAD**2) - P(IST,5)=PMSHAD - P(IREC,3)=-PZNEW - P(IREC,4)=SQRT(PZNEW**2+PMREC**2) - P(IREC,5)=PMREC - -C...If not enough momentum, take what can be taken. - ELSE - IFAIL=1 - P(IST,3)=0D0 - P(IST,4)=ETOT-PMREC - P(IST,5)=P(IST,4) - P(IREC,3)=0D0 - P(IREC,4)=PMREC - P(IREC,5)=PMREC - ENDIF - -C...Bost back to lab frame. - CALL PYROBO(IST,IST,THETA,PHI,PSUM(1)/PSUM(4), - & PSUM(2)/PSUM(4),PSUM(3)/PSUM(4)) - CALL PYROBO(IREC,IREC,THETA,PHI,PSUM(1)/PSUM(4), - & PSUM(2)/PSUM(4),PSUM(3)/PSUM(4)) - -C...Loop back when not enough momentum could be shuffled. -C...(As long as there is something left.) - IF(IFAIL.EQ.1) THEN - IF(IST.EQ.IMIN.AND.IREC.LT.IMAX) THEN - IREC=IREC+1 - GOTO 200 - ELSEIF(IST.EQ.IMAX.AND.IREC.GT.IMIN) THEN - IREC=IREC-1 - GOTO 200 - ENDIF - ENDIF - -C...Particle code for stop-hadron. - KFSTHD=0 - IF(K(IST,2).GT.0) THEN - IF(KFSAV.LE.-1.AND.KFSAV.GE.-5) KFSTHD=KSUSY1+600-10*KFSAV+2 - IF(KFSAV.GE.1103.AND.KFSAV.LE.3303) then - if (KFSAV/100.ne.21) goto 90 - KFSAV=2101 - KFSTHD=KSUSY1+6000+ - & (KFSAV/10)+MOD(KFSAV,10) - endif - ELSE - IF(KFSAV.GE.1.AND.KFSAV.LE.5) KFSTHD=KSUSY1+600+10*KFSAV+2 - IF(KFSAV.LE.-1103.AND.KFSAV.GE.-3303) then - if (-KFSAV/100.ne.21) goto 90 - KFSAV=-2101 - KFSTHD=KSUSY1+6000+ - & (IABS(KFSAV)/10)+MOD(IABS(KFSAV),10) - endif - KFSTHD=-KFSTHD - ENDIF - IF(KFSTHD.EQ.0) THEN - WRITE(*,*) ' Failed to find R-hadron code from ', - & K(IST,2),KFSAV - IERR=1 - RETURN - ENDIF - -C...New slot at end of record for stop-hadron - DO 230 J=1,5 - K(N+1,J)=0 - P(N+1,J)=P(IST,J) - V(N+1,J)=V(IST,J) - 230 CONTINUE - K(N+1,1)=5+ISTOP - K(N+1,2)=KFSTHD - K(N+1,3)=K(IST,3) - N=N+1 - -C...Code and momentum of new string endpoint. - K(IST,2)=-KFSAV - DO 240 J=1,5 - P(IST,J)=PSAV(J) - 240 CONTINUE - -C...End of loop over two stops. - 300 CONTINUE - -C...Cleanup: remove zero-energy gluons. - NNOW=N - N=NOLD - DO 330 I=NOLD+1,NNOW - IF(K(I,2).EQ.21.AND.P(I,4).LT.1D-10) THEN - ELSEIF(I.EQ.N+1) THEN - N=N+1 - ELSE - N=N+1 - DO 320 J=1,5 - K(N,J)=K(I,J) - P(N,J)=P(I,J) - V(N,J)=V(I,J) - 320 CONTINUE - ENDIF - 330 CONTINUE - NNOW=N - -C...Check that no low-mass system of diquark-antidiquark kind, -C...or very low-mass of any kind. - KFBEG=0 - DO 332 J=1,5 - PSUM(J)=0D0 - 332 CONTINUE - DO 338 I=NOLD+1,NNOW - DO 334 J=1,4 - PSUM(J)=PSUM(J)+P(I,J) - 334 CONTINUE - IF(KFBEG.EQ.0) THEN - KFBEG=IABS(K(I,2)) - MSTJ(93)=1 - PSUM(5)=PSUM(5)+PYMASS(K(I,2)) - ELSEIF(K(I,1).EQ.1) THEN - KFEND=IABS(K(I,2)) - MSTJ(93)=1 - PSUM(5)=PSUM(5)+PYMASS(K(I,2)) - DELTA=SQRT(MAX(0D0,PSUM(4)**2-PSUM(1)**2-PSUM(2)**2- - & PSUM(3)**2))-PSUM(5) - IF(KFBEG.GT.10.AND.KFBEG.LT.10000.AND.KFEND.GT.10.AND. - & KFEND.LT.10000.AND.DELTA.LT.PARJ(32).AND.(KFBEG.NE.21 - & .AND.KFEND.NE.21)) GOTO 90 - IF(DELTA.LT.0D0) GOTO 90 - KFBEG=0 - DO 336 J=1,5 - PSUM(J)=0D0 - 336 CONTINUE - ENDIF - 338 CONTINUE - -C...Finished with stop hadronization. Restore baryon production model. - MSTJ(12)=MSTJ12 - -C...Now hadronize everything else. Some cheating to allow sensible -C...momentum shuffling. - MSTJ16=MSTJ(16) - MSTJ(16)=0 - CALL PYEXEC - MSTJ(16)=MSTJ16 - IF(MSTU(24).NE.0) THEN - WRITE(*,*) ' Event to be skipped' - IERR=1 - ENDIF -c call pylist(2) - RETURN - END -C********************************************************************* - -C...PYSBFRRE -C...Fragments the string near to a sbottom, to form a sbottom-hadron, -C...by producing a new q-qbar pair. -C...Regge scheme applied - SUBROUTINE PYSBFRRE(IERR) - -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) -C INTEGER PYK,PYCHGE,PYCOMP - INTEGER PYCOMP -C...Parameter statement to help give large particle numbers -C...(left- and righthanded SUSY, excited fermions). - PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KEXCIT=4000000) -C...Commonblocks. - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) -C...Note that dimensions below grew from 4000 to 8000 in Pythia 6.2! - COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5) - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) - COMMON/PYINT1/MINT(400),VINT(400) - COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2) - SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYPARS/,/PYINT1/, - &/PYINT2/ -C...Local array. -C DIMENSION PSUM(5),PSAV(5),IJOIN(2),IPOSST(10) - DIMENSION PSUM(5),PSAV(5),IPOSST(10) - -c print*, "PYSBFR called" - -C...Default is no error. - IERR=0 - -C...Free parameter: max kinetic energy in gluino-hadron. - PMKIN=0.5D0 - -C...Free parameter: part of sbottom mass that does not participate -C...in weak decay. - PMINAC=0.5D0 - -C...Switch off popcorn baryon production. (Not imperative, but more -C...failed events when popcorn is allowed.) - MSTJ12=MSTJ(12) - MSTJ(12)=1 - -C...Convenient shorthand. - KFST=KSUSY1+6 - KCST=PYCOMP(KFST) - KFGL=KSUSY1+21 - -C...Loopback point for serious problems, with new try. - LOOP=0 - CALL PYEDIT(21) - CHGSAV=PYP(0,6) - 90 LOOP=LOOP+1 - IF(LOOP.GT.1) CALL PYEDIT(22) - -C...Give up when too much problems. - IF(LOOP.GT.5) THEN - WRITE(*,*) ' Problematical event skipped' - IERR=1 - RETURN - ENDIF - -C...Take copy of string system(s). - NOLD=N - NSTOP=0 - DO 120 I=1,NOLD - ICOPY=0 - IF(K(I,1).EQ.2) ICOPY=1 - IF(K(I,1).EQ.1.AND.I.GE.2) THEN - IF(K(I-1,1).EQ.12) ICOPY=1 - ENDIF - IF(ICOPY.EQ.1) THEN - N=N+1 - DO 100 J=1,5 - K(N,J)=K(I,J) - P(N,J)=P(I,J) - V(N,J)=V(I,J) - 100 CONTINUE - K(I,1)=K(I,1)+10 - K(I,4)=N - K(I,5)=N - K(N,3)=I - IF(IABS(K(I,2)).EQ.KFST) THEN - NSTOP=NSTOP+1 - IPOSST(NSTOP)=N - ENDIF - ENDIF - 120 CONTINUE - NTMP=N - -C...Loop over (up to) two sbottoms per event. -C...Identify position of sbottom (randomize order of treatment). - IRNST=INT(1.5D0+PYR(0)) - DO 300 ISTOP=1,NSTOP - IST=IPOSST(1) - IF(NSTOP.EQ.2.AND.ISTOP.NE.IRNST) IST=IPOSST(2) - -C...Identify range of partons on string the sbottom belongs to. - IMIN=IST+1 - 140 IMIN=IMIN-1 - IF(K(IMIN-1,1).EQ.2) GOTO 140 - IMAX=IST-1 - 150 IMAX=IMAX+1 - IF(K(IMAX,1).EQ.2) GOTO 150 - IOTHER=IMAX - IF(IST.EQ.IMAX) IOTHER=IMIN - -C...Find mass of this sbottom-string. - DO 170 J=1,5 - PSUM(J)=0D0 - DO 160 I=IMIN,IMAX - PSUM(J)=PSUM(J)+P(I,J) - 160 CONTINUE - 170 CONTINUE - PSUM(5)=SQRT(MAX(0D0,PSUM(4)**2-PSUM(1)**2-PSUM(2)**2- - & PSUM(3)**2)) - -C... If low-mass, then consider sbottom-hadron already formed. - IF(PSUM(5).LE.P(IST,5)+P(IOTHER,5)+PMKIN) THEN - -C... New slot at end of record for sbottom-hadron - N=N+1 - DO 175 J=1,5 - K(N,J)=0 - P(N,J)=PSUM(J) - V(N,J)=V(IST,J) - 175 CONTINUE - K(N,1)=5+ISTOP - K(N,3)=IST - -C... Particle code for sbottom-hadron in low-mass system. - KFSTHD=0 - KFSAV=K(IOTHER,2) - if(KFSAV.eq.3.or.KFSAV.eq.5) then - KFSAV=1 - endif - if(KFSAV.eq.4) then - KFSAV=2 - endif - if(KFSAV.eq.-3.or.KFSAV.eq.-5) then - KFSAV=-1 - endif - if(KFSAV.eq.-4) then - KFSAV=-2 - endif - IF(K(IST,2).GT.0) THEN - IF(KFSAV.LE.-1.AND.KFSAV.GE.-5) - & KFSTHD=KSUSY1+500-10*KFSAV+2 - IF(KFSAV.GE.1103.AND.KFSAV.LE.3303) KFSTHD=KSUSY1+5000+ - & (KFSAV/10)+MOD(KFSAV,10) - ELSE - IF(KFSAV.GE.1.AND.KFSAV.LE.5) KFSTHD=KSUSY1+500+10*KFSAV+2 - IF(KFSAV.LE.-1103.AND.KFSAV.GE.-3303) KFSTHD=KSUSY1+5000+ - & (IABS(KFSAV)/10)+MOD(IABS(KFSAV),10) - KFSTHD=-KFSTHD - ENDIF - IF(KFSTHD.EQ.0) THEN - WRITE(*,*) ' Failed to find R-hadron code from ', - & K(IST,2),KFSAV - IERR=1 - RETURN - ENDIF - K(N,2)=KFSTHD - -C... Mark original partons decayed. Done for low-mass system. - DO 180 I=IMIN,IMAX - K(I,1)=K(I,1)+10 - K(I,4)=N - K(I,5)=N - 180 CONTINUE - GOTO 300 - ENDIF - - - -C...Else break string by production of new qqbar pair. -C...(Also diquarks allowed, but not popcorn.) - INFLAV=ISIGN(4,K(IST,2)) - CALL PYDCYK(INFLAV,0,KFSAV,KFDUM) - KFSAV=ISIGN(MOD(IABS(KFSAV),10000),KFSAV) - - if(KFSAV.eq.3.or.KFSAV.eq.5) then - KFSAV=1 - endif - if(KFSAV.eq.4) then - KFSAV=2 - endif - if(KFSAV.eq.-3.or.KFSAV.eq.-5) then - KFSAV=-1 - endif - if(KFSAV.eq.-4) then - KFSAV=-2 - endif - - MSTJ(93)=1 - PMSAV=PYMASS(KFSAV) - -C...Mass of sbottom-hadron. - PMSSAV=P(IST,5) - PMSHAD=P(IST,5)+PMSAV - -C...Pick momentum sharing according to fragmentation function as if bottom. - PMBSAV=PARF(105) - PARF(105)=PMSSAV - CALL PYZDIS(5,0,PMSHAD**2,ZST) - PARF(105)=PMBSAV - ZST=MAX(0.9D0,MIN(0.9999D0,ZST)) - DO 190 J=1,5 - PSAV(J)=(1D0-ZST)*P(IST,J) - P(IST,J)=ZST*P(IST,J) - 190 CONTINUE - -C...Recoiling parton from which to shuffle momentum. System momentum. - IF(IST.EQ.IMIN) IREC=IST+1 - IF(IST.EQ.IMAX) IREC=IST-1 - 200 DO 210 J=1,4 - PSUM(J)=P(IST,J)+P(IREC,J) - 210 CONTINUE - -C...Boost to rest frame of system, and align sbottom along +z axis. - CALL PYROBO(IST,IST,0D0,0D0,-(PSUM(1)/PSUM(4)), - & -(PSUM(2)/PSUM(4)),-(PSUM(3)/PSUM(4))) - CALL PYROBO(IREC,IREC,0D0,0D0,-(PSUM(1)/PSUM(4)), - & -(PSUM(2)/PSUM(4)),-(PSUM(3)/PSUM(4))) - PHI=PYANGL(P(IST,1),P(IST,2)) - CALL PYROBO(IST,IST,0D0,-PHI,0D0,0D0,0D0) - CALL PYROBO(IREC,IREC,0D0,-PHI,0D0,0D0,0D0) - THETA=PYANGL(P(IST,3),P(IST,1)) - CALL PYROBO(IST,IST,-THETA,0D0,0D0,0D0,0D0) - CALL PYROBO(IREC,IREC,-THETA,0D0,0D0,0D0,0D0) - -C...Calculate new kinematics in this frame, for desired sbottom hadron mass. - ETOT=P(IST,4)+P(IREC,4) - PMREC=P(IREC,5) - IF(K(IREC,2).NE.21.AND.IABS(K(IREC,2)).NE.KFST) THEN - MSTJ(93)=1 - PMREC=PYMASS(K(IREC,2)) - ENDIF - IF(ETOT.GT.PMSHAD+PMREC) THEN - IFAIL=0 - PZNEW=0.5D0*SQRT(MAX(0D0,(ETOT**2-PMSHAD**2-PMREC**2)**2- - & 4D0*PMSHAD**2*PMREC**2))/ETOT - P(IST,3)=PZNEW - P(IST,4)=SQRT(PZNEW**2+PMSHAD**2) - P(IST,5)=PMSHAD - P(IREC,3)=-PZNEW - P(IREC,4)=SQRT(PZNEW**2+PMREC**2) - P(IREC,5)=PMREC - -C...If not enough momentum, take what can be taken. - ELSE - IFAIL=1 - P(IST,3)=0D0 - P(IST,4)=ETOT-PMREC - P(IST,5)=P(IST,4) - P(IREC,3)=0D0 - P(IREC,4)=PMREC - P(IREC,5)=PMREC - ENDIF - -C...Bost back to lab frame. - CALL PYROBO(IST,IST,THETA,PHI,PSUM(1)/PSUM(4), - & PSUM(2)/PSUM(4),PSUM(3)/PSUM(4)) - CALL PYROBO(IREC,IREC,THETA,PHI,PSUM(1)/PSUM(4), - & PSUM(2)/PSUM(4),PSUM(3)/PSUM(4)) - -C...Loop back when not enough momentum could be shuffled. -C...(As long as there is something left.) - IF(IFAIL.EQ.1) THEN - IF(IST.EQ.IMIN.AND.IREC.LT.IMAX) THEN - IREC=IREC+1 - GOTO 200 - ELSEIF(IST.EQ.IMAX.AND.IREC.GT.IMIN) THEN - IREC=IREC-1 - GOTO 200 - ENDIF - ENDIF - -C...Particle code for sbottom-hadron. - KFSTHD=0 - IF(K(IST,2).GT.0) THEN - IF(KFSAV.LE.-1.AND.KFSAV.GE.-5) KFSTHD=KSUSY1+500-10*KFSAV+2 - IF(KFSAV.GE.1103.AND.KFSAV.LE.3303) then - if (KFSAV/100.ne.21) goto 90 - KFSAV=2101 - KFSTHD=KSUSY1+5000+ - & (KFSAV/10)+MOD(KFSAV,10) - endif - ELSE - IF(KFSAV.GE.1.AND.KFSAV.LE.5) KFSTHD=KSUSY1+500+10*KFSAV+2 - IF(KFSAV.LE.-1103.AND.KFSAV.GE.-3303) then - if (-KFSAV/100.ne.21) goto 90 - KFSAV=-2101 - KFSTHD=KSUSY1+5000+ - & (IABS(KFSAV)/10)+MOD(IABS(KFSAV),10) - endif - KFSTHD=-KFSTHD - ENDIF - IF(KFSTHD.EQ.0) THEN - WRITE(*,*) ' Failed to find R-hadron code from ', - & K(IST,2),KFSAV - IERR=1 - RETURN - ENDIF - -C...New slot at end of record for sbottom-hadron - DO 230 J=1,5 - K(N+1,J)=0 - P(N+1,J)=P(IST,J) - V(N+1,J)=V(IST,J) - 230 CONTINUE - K(N+1,1)=5+ISBOTTOM - K(N+1,2)=KFSTHD - K(N+1,3)=K(IST,3) - N=N+1 - -C...Code and momentum of new string endpoint. - K(IST,2)=-KFSAV - DO 240 J=1,5 - P(IST,J)=PSAV(J) - 240 CONTINUE - -C...End of loop over two sbottoms. - 300 CONTINUE - -C...Cleanup: remove zero-energy gluons. - NNOW=N - N=NOLD - DO 330 I=NOLD+1,NNOW - IF(K(I,2).EQ.21.AND.P(I,4).LT.1D-10) THEN - ELSEIF(I.EQ.N+1) THEN - N=N+1 - ELSE - N=N+1 - DO 320 J=1,5 - K(N,J)=K(I,J) - P(N,J)=P(I,J) - V(N,J)=V(I,J) - 320 CONTINUE - ENDIF - 330 CONTINUE - NNOW=N - -C...Check that no low-mass system of diquark-antidiquark kind, -C...or very low-mass of any kind. - KFBEG=0 - DO 332 J=1,5 - PSUM(J)=0D0 - 332 CONTINUE - DO 338 I=NOLD+1,NNOW - DO 334 J=1,4 - PSUM(J)=PSUM(J)+P(I,J) - 334 CONTINUE - IF(KFBEG.EQ.0) THEN - KFBEG=IABS(K(I,2)) - MSTJ(93)=1 - PSUM(5)=PSUM(5)+PYMASS(K(I,2)) - ELSEIF(K(I,1).EQ.1) THEN - KFEND=IABS(K(I,2)) - MSTJ(93)=1 - PSUM(5)=PSUM(5)+PYMASS(K(I,2)) - DELTA=SQRT(MAX(0D0,PSUM(4)**2-PSUM(1)**2-PSUM(2)**2- - & PSUM(3)**2))-PSUM(5) - IF(KFBEG.GT.10.AND.KFBEG.LT.10000.AND.KFEND.GT.10.AND. - & KFEND.LT.10000.AND.DELTA.LT.PARJ(32).AND.(KFBEG.NE.21 - & .AND.KFEND.NE.21)) GOTO 90 - IF(DELTA.LT.0D0) GOTO 90 - KFBEG=0 - DO 336 J=1,5 - PSUM(J)=0D0 - 336 CONTINUE - ENDIF - 338 CONTINUE - -C...Finished with sbottom hadronization. Restore baryon production model. - MSTJ(12)=MSTJ12 - -C...Now hadronize everything else. Some cheating to allow sensible -C...momentum shuffling. - MSTJ16=MSTJ(16) - MSTJ(16)=0 - CALL PYEXEC - MSTJ(16)=MSTJ16 - IF(MSTU(24).NE.0) THEN - WRITE(*,*) ' Event to be skipped' - IERR=1 - ENDIF -c call pylist(2) - RETURN - END - - -C********************************************************************* - -C...PYSQDC -C...Decays the squark inside a squark-hadron. - - SUBROUTINE PYSQDC(KSQUARK) - -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - INTEGER PYK,PYCHGE,PYCOMP -C...Parameter statement to help give large particle numbers -C...(left- and righthanded SUSY, excited fermions). - PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KEXCIT=4000000) -C...Commonblocks. - COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) -C...Note that dimensions below grew from 4000 to 8000 in Pythia 6.2! - COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5) - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) - COMMON/PYINT1/MINT(400),VINT(400) - COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2) -C...Width properties. - COMMON/PYINT4/MWID(500),WIDS(500,5) - SAVE /PYJETS/,/PYDAT1/,/PYDAT2/,/PYDAT3/,/PYPARS/,/PYINT1/, - &/PYINT2/ - integer indices(2) -C...Optional offset of constituent quark/diquark mass, -C...representing gluon cloud around squark not part of the decay. - PMOFF = 0.2D0 - MWID(PYCOMP(KSQUARK))=2 - -C...The probability that it has spin 1. -C...(Except for identical flavours, where spin 1 is only possibility.) -C...(Recall that all R-baryon codes were given as if spin 1, sloppily.) - PROBS1=0.5D0 - - - print*,'In PYSQDC' - -C...Loop through to find R-hadrons. - DO 150 I=1,N -C...If only one of the R-hadrons should decay inside the detector, -C...you could here pick at random whether to allow the one with -C...K(I,1) = 6 or the one with =7. (Where the random choice of course -C...could depend on the position of an imagined displaced vertex.) -c IF(IABS(K(I,2)).gt.100000) THEN -c print*,"RMA: ",K(I,1),K(I,2) -c endif - IF(K(I,1).EQ.5.or.K(I,1).EQ.6.OR.K(I,1).EQ.7) THEN - -C...Begin resolve R-hadron flavour content to ~q + qbar or ~q + qq. -c print*,'RMA: PDG: ',K(I,2) - KFRH=(IABS(K(I,2))-KSUSY1)/10 - KSGN=K(I,2)/IABS(K(I,2)); -c print*, 'RMA: Stripped PDG: ',KFRH -c print*, 'RMA: Sign: ',KSGN - -C...Squark meson : Strip quark - IF(KFRH.LT.100) THEN - KFQ=MOD(KFRH,10)*(-1)*KSGN -c print*, 'RMA: QUARK: ',KFQ - -C...Squarkbaryon : Strip diquark - ELSEIF(KFRH.LT.1000) THEN - KFQ=100*MOD(KFRH,100)+3 - KFB=MOD(KFRH/10,10) - KFC=MOD(KFRH,10) - if(KFB.NE.KFC.AND.PROBS1.LT.PYR(0)) KFQ=KFQ-2 - KFQ=KSGN*KFQ -c print*, 'RMA: DIQUARK: ',KFQ - endif - - -C...Subdivide R-hadron into squark + 1 light (di)quark in new slots. - DO 120 I1=N+1,N+2 - K(I1,1)=3 - K(I1,3)=I - K(I1,4)=0 - K(I1,5)=0 - DO 110 J=1,5 - V(I1,J)=0D0 - 110 CONTINUE - 120 CONTINUE - -C...Store new flavours. - K(N+1,2)=KSGN*(KSQUARK) -c K(N+1,2)=KSGN*6 - K(N+2,2)=KFQ -c print*, 'RMA: PDG1: ',K(N+1,2) -c print*, 'RMA: PDG2: ',K(N+2,2) - - - -c call pylist(3) -C...Set up colour flow. Konverter til colur singlet. Find dokumentation -C Squark -c K(N+1,4)=MSTU(5)*(N+2) -c K(N+1,5)=MSTU(5)*(N+2) - -C Quark/Di-quark -c K(N+2,4)=MSTU(5)*(N+1) -c K(N+2,5)=MSTU(5)*(N+1) - -c Saving the indices for PYJOIN later - indices(1)=N+1 - indices(2)=N+2 - - -C...Define effective quark/diquark masses. - MSTJ(93)=1 - PM=PYMASS(KFQ)+PMOFF -c print*,'RMA: PM: ',PM -C...Share gluino"hadron" momentum with two light quarks. - FAC=PM/P(I,5) - - DO 130 J=1,5 - P(N+1,J)=(1D0-FAC)*P(I,J) - P(N+2,J)=FAC*P(I,J) - 130 CONTINUE - -C...If you want a displaced vertex, you could also write that info -C...into the V array, but you have to calculate that vertex yourself. - -C...Mark R-hadron decayed and update number counter. - K(I,1)=K(I,1)+10 - K(I,4)=N+1 - K(I,5)=N+2 - N=N+2 - call pyjoin(2,indices) - -cJack call pylist(2) -C...Let squark decay now. -c print*,'RMA: Trying to decay ',N-1 - CALL PYRESD(N-1) -c call pylist(2) -C...End of loop over two R-hadrons. - ENDIF - 150 CONTINUE - -C...And then the decay products can fragment, etc. - CALL PYEXEC - - RETURN - END diff --git a/Generators/Pythia_i/src/addParticle.F b/Generators/Pythia_i/src/addParticle.F deleted file mode 100644 index f7e1ae4fbd5a0577051fe0aa789bcd6df685fd84..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/src/addParticle.F +++ /dev/null @@ -1,12 +0,0 @@ - SUBROUTINE ADDPARTICLE(FCHAR) - - CHARACTER*(*) FCHAR - - OPEN(20, - & FILE=FCHAR) - - CALL PYUPDA(3,20) - CLOSE(20) - - RETURN - END diff --git a/Generators/Pythia_i/src/atlasTune.cxx b/Generators/Pythia_i/src/atlasTune.cxx deleted file mode 100644 index faf8f45a053f1bdae45d3e6a17d4b908a46fc3ad..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/src/atlasTune.cxx +++ /dev/null @@ -1,1858 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#include "Pythia_i/Pythia.h" - -/* - ________________________________________________________________________________________________________________________ - - L.M., - Pythia parameter settings / TUNE - - Aug. 09 - - called by Pythia.cxx - set ATLAS tune/parameters set determined by m_Tune_Index - m_Tune_Index 0,-1 and -2 are technical settings to run with 0, recommended or common set of ATLAS Pythia parameters - in case m_Tune_Index does not correspond to ATLAS tune index use default ATLAS tune (set by m_Default_Tune_Name) - ------------------------------------------------------------------------------------------------------------------------- - Backw. compat: old tune setting syntax remains supported. - Mixing of the old and new tune settings is not supported and in this case Atlas default tune settings are used and - - May 09 - - In case only the old syntax is used, the switches have the following effect: - 1. useAtlasPythiaRecomm : false sets m_Tune_Index=0 [default:true ] - Event record, error handlig, new PS/MI model, MI structure - 2. useAtlasPythiaCommon : false sets m_Tune_Index=-1; [default:true ] - (ATLAS specific) print-out, particle properties, MI structure, pdf - 3. useAtlasPythiaTune09 : sets m_Tune_Index=m_mc09_Tune_Index [default:false ] - 4. useAtlasPythiaTune08 : sets m_Tune_Index=m_mc08_Tune_Index [default:false ] - 5. useNoAtlasPythiaParam : sets bool m_useNoAtlasPythiaParam [default:false ] - Using Pythia defaults + parameters set by the jO only. - Please note that the use of ATLAS defaults is recommended. - Please consider keeping the settings of switch 1. - - ________________________________________________________________________________________________________________________ - */ - -StatusCode Pythia::atlasTune() - -{ - // if tune is left to the dummy starting value, use the default tune: - if (m_Tune_Index==m_Starting_Tune_Index) m_Tune_Index=m_Default_Tune_Index; - - ATH_MSG_INFO( "\n________________________________________________________________________________\n" - << "atlasTune: [Pythia_i/src/atlasTune.cxx] \n" - << "atlasTune: setting Pythia parameter values: \n" - << "--------------------------------------------------------------------------------" ); - - // note: m_Tune_Name == "ATLAS_blah" will end here since atoi() returns 0 if it can't ocnvert arg. to int - if (m_Tune_Index==0) - { - ATH_MSG_WARNING( "setPythiaTune: m_Tune_Index=0 requested, \n" - << "setPythiaTune: skipping par. setting by Pythia_i, running with Pythia defaults. \n" - << "setPythiaTune: Using Pythia defaults + parameters set by the USER. \n" - << "setPythiaTune: Please note that the use of ATLAS defaults is recommended. \n" - << "setPythiaTune: Please consider keeping the settings of Tune_Name=-1,-2. \n" - << "--------------------------------------------------------------------------------" ); - return StatusCode::SUCCESS; - }//end of {m_Tune_Index==0} condition - //--------------------------------------------------------------------------- - //____________________________________________________________________________________________________________________________ - // when not using an ATLAS tune but want to keep recommended / common settings: - else if (m_Tune_Index<0) - { - if (m_Tune_Index==-1) - { - //________________________________________________________________________________________________________________________ - // printout details + - this->pypars().mstp(128) =1; // fix junk output for documentary particles - this->pydat1().mstu(21) =1; // error handling switch - this->pypars().mstp(81) =21; // run PYEVNW with PYEVNT - this->pydat1().mstj(22)=2; // stable particles convention - //________________________________________________________________________________________________________________________ - ATH_MSG_INFO( "mstp(128) = "<< this->pypars().mstp(128) << "\n" - << "mstu(21) = "<< this->pydat1().mstu(21) << "\n" - << "mstp(81) = "<< this->pypars().mstp(81) << "\n" - << "mstj(22) = "<< this->pydat1().mstj(22) ); - - //________________________________________________________________________________________________________________________ - } - if (m_Tune_Index==-2) - { - //________________________________________________________________________________________________________________________ - // printout details - this->pypars().mstp(128) =1; // fix junk output for documentary particles - this->pydat1().mstu(21) =1; // error handling switch - this->pypars().mstp(81) =21; // run PYEVNW with PYEVNT - this->pydat1().mstj(22)=2; // stable particles convention - //________________________________________________________________________________________________________________________ - //physics-related - this->pypars().mstp(82)=4; // MI structure - this->pypars().mstp(52)=2; // (needed for MRST2007lomod (LO* for MC)) - this->pypars().mstp(54)=2; // (needed for MRST2007lomod (LO* for MC)) - this->pypars().mstp(56)=2; // (needed for MRST2007lomod (LO* for MC)) - this->pypars().mstp(51)=20651; // LO** - this->pypars().mstp(53)=20651; // LO** - this->pypars().mstp(55)=20651; // LO** - this->pydat2().pmas(6,1)=172.5; // PDG2007 TOP mass - this->pydat2().pmas(24,1)=80.399; // PDG2007 W mass - //this->pydat2().pmas(24,2)=2.141; W-width is calculated dynamically - this->pydat2().pmas(23,1)=91.1876; // PDG2007 Z0 mass - //this->pydat2().pmas(23,2)=2.4952; // PDG2007 Z0 width - //________________________________________________________________________________________________________________________ - //printout details ... + - ATH_MSG_INFO( "mstp(128) = "<< this->pypars().mstp(128) << "\n" - << "mstu(21) = "<< this->pydat1().mstu(21) << "\n" - << "mstp(81) = "<< this->pypars().mstp(81) << "\n" - //physics-related - << "mstp(82) = "<< this->pypars().mstp(82) << "\n" - << "mstp(52) = "<< this->pypars().mstp(52) << "\n" - << "mstp(54) = "<< this->pypars().mstp(54) << "\n" - << "mstp(56) = "<< this->pypars().mstp(56) << "\n" - << "mstp(51) = "<< this->pypars().mstp(51) << "\n" - << "mstp(53) = "<< this->pypars().mstp(53) << "\n" - << "mstp(55) = "<< this->pypars().mstp(55) << "\n" - << "pmas(6,1) = "<< this->pydat2().pmas(6,1) << "\n" - << "pmas(24,1)= "<< this->pydat2().pmas(24,1) << "\n" - //<< "pmas(24,2)= "<< this->pydat2().pmas(24,2) << "\n" - << "pmas(23,1)= "<< this->pydat2().pmas(23,1) << "\n" ); - //<< "pmas(23,2)= "<< this->pydat2().pmas(23,2) << "\n" - //________________________________________________________________________________________________________________________ - } - } - else if (m_Tune_Index==20090001) - { - // ATLAS jargon : MC09 - // author : Markus Warsinsky - // Pythia : 6.4.20 - // date: May 2009 - // short description: MC09 production round tune for LO* PDFs - //________________________________________________________________________________________________________________________ - this->pypars().mstp(128) =1; // fix junk output for documentary particles - this->pydat1().mstu(21) =1; // error handling switch - //physics - related - this->pypars().mstp(81)=21; // run PYEVNW with PYEVNT - this->pypars().mstp(82)=4; // MI structure - this->pypars().mstp(52)=2; // (needed for MRST2007lomod (LO* for MC)) - this->pypars().mstp(54)=2; // (needed for MRST2007lomod (LO* for MC)) - this->pypars().mstp(56)=2; // (needed for MRST2007lomod (LO* for MC)) - this->pypars().mstp(51)=20650; // (needed for MRST2007lomod (LO* for MC)) - this->pypars().mstp(53)=20650; // (needed for MRST2007lomod (LO* for MC)) - this->pypars().mstp(55)=20650; // (needed for MRST2007lomod (LO* for MC)) - this->pydat2().pmas(6,1)=172.5; // PDG2007 TOP mass - this->pydat2().pmas(24,1)=80.399; // PDG2007 W mass - //this->pydat2().pmas(24,2)=2.141; W-width is calculated dynamically - this->pydat2().pmas(23,1)=91.1876; // PDG2007 Z0 mass - //this->pydat2().pmas(23,2)=2.4952; // Z-width is calculated dynamically - this->pypars().mstp(70)=0; // (virtuality scale for ISR) - this->pypars().mstp(72)=1; - this->pypars().mstp(88)=1; - this->pypars().mstp(90)=0; - this->pypars().parp(78)=0.3; - this->pypars().parp(80)=0.1; - this->pypars().parp(82)=2.3; // (cut off scale) - this->pypars().parp(83)=0.8; - this->pypars().parp(84)=0.7; // (matter distribution) - this->pypars().parp(90)=0.25; // (cut off scale) - this->pydat1().parj(81)=0.29; - this->pypars().mstp(95)=6; - this->pydat1().mstj(11)=4; // select Lund-Bowler for c && b fragmentation - this->pydat1().mstj(22)=2; // (Make K_S, Lambda stable) - this->pydat1().parj(41)=0.3; // Lund-Bowler a - this->pydat1().parj(42)=0.58; // Lund-Bowler b - this->pydat1().parj(46)=0.75; // Lund-Bowler rQ - this->pypars().mstp(84)=1; - this->pypars().mstp(85)=1; - this->pypars().mstp(86)=2; - this->pypars().mstp(87)=4; - this->pypars().mstp(89)=1; - this->pypars().parp(89)=1800.; - //________________________________________________________________________________________________________________________ - ATH_MSG_INFO( "--------------------------------------------------------------------------------\n" - << "atlasTune: parameter setting to Tune_Index "<<m_Tune_Index<<" tune values : \n" - << "mstp(128) = "<< this->pypars().mstp(128) << "\n" - << "mstu(21) = "<< this->pydat1().mstu(21) << "\n" - << "mstp(81) = "<< this->pypars().mstp(81) << "\n" - << "mstp(82) = "<< this->pypars().mstp(82) << "\n" - << "mstp(52) = "<< this->pypars().mstp(52) << "\n" - << "mstp(54) = "<< this->pypars().mstp(54) << "\n" - << "mstp(56) = "<< this->pypars().mstp(56) << "\n" - << "mstp(51) = "<< this->pypars().mstp(51) << "\n" - << "mstp(53) = "<< this->pypars().mstp(53) << "\n" - << "mstp(55) = "<< this->pypars().mstp(55) << "\n" - << "pmas(6,1) = "<< this->pydat2().pmas(6,1) << "\n" - << "pmas(24,1) = "<< this->pydat2().pmas(24,1) << "\n" - //<< "pmas(24,2) = "<< this->pydat2().pmas(24,2) << "\n" - << "pmas(23,1) = "<< this->pydat2().pmas(23,1) << "\n" - //<< "pmas(23,2) = "<< this->pydat2().pmas(23,2) << "\n" - << "mstp(70) = "<< this->pypars().mstp(70) << "\n" - << "mstp(72) = "<< this->pypars().mstp(72) << "\n" - << "mstp(88) = "<< this->pypars().mstp(88) << "\n" - << "mstp(90) = "<< this->pypars().mstp(90) << "\n" - << "parp(78) = "<< this->pypars().parp(78) << "\n" - << "parp(80) = "<< this->pypars().parp(80) << "\n" - << "parp(82) = "<< this->pypars().parp(82) << "\n" - << "parp(83) = "<< this->pypars().parp(83) << "\n" - << "parp(84) = "<< this->pypars().parp(84) << "\n" - << "parp(90) = "<< this->pypars().parp(90) << "\n" - << "parj(81) = "<< this->pydat1().parj(81) << "\n" - << "mstp(95) = "<< this->pypars().mstp(95) << "\n" - << "mstj(11) = "<< this->pydat1().mstj(11) << "\n" - << "mstj(22) = "<< this->pydat1().mstj(22) << "\n" - << "parj(41) = "<< this->pydat1().parj(41) << "\n" - << "parj(42) = "<< this->pydat1().parj(42) << "\n" - << "parj(46) = "<< this->pydat1().parj(46) << "\n" - << "mstp(84) = "<< this->pypars().mstp(84) << "\n" - << "mstp(85) = "<< this->pypars().mstp(85) << "\n" - << "mstp(86) = "<< this->pypars().mstp(86) << "\n" - << "mstp(87) = "<< this->pypars().mstp(87) << "\n" - << "mstp(89) = "<< this->pypars().mstp(89) << "\n" - << "parp(89) = "<< this->pypars().parp(89) << "\n" - << "----------------------------------------------- \n" - << "atlasTune: end of the list of Tune_Index "<<m_Tune_Index<<" tune values : \n" - << "--------------------------------------------------------------------------------\n" ); - //________________________________________________________________________________________________________________________ - }// end of if (m_Tune_Index==20090001) condition - else if (m_Tune_Index==20080001) - { - // ATLAS jargon : MC08 - // author : Arthur Moraes - // Pythia : ~ 6.4.18 - // date: ~ 2008 - // short description: MC08 production round tune - //________________________________________________________________________________________________________________________ - this->pypars().mstp(128) =1; // fix junk output for documentary particles - this->pydat1().mstu(21) =1; // error handling switch - //physics - related - this->pypars().mstp(81)=21; // run PYEVNW with PYEVNT - this->pypars().mstp(82)=4; // MI structure - this->pypars().mstp(52)=2; // (needed for CTEQ6L) - this->pypars().mstp(54)=2; // (needed for CTEQ6L) - this->pypars().mstp(56)=2; // (needed for CTEQ6L) - this->pypars().mstp(51)=10042; // (needed for CTEQ6L) - this->pypars().mstp(53)=10042; // (needed for CTEQ6L) - this->pypars().mstp(55)=10042; // (needed for CTEQ6L) - this->pydat2().pmas(6,1)=172.5; // PDG2007 TOP mass - this->pydat2().pmas(24,1)=80.399; // PDG2007 W mass - //this->pydat2().pmas(24,2)=2.141; W-width is calculated dynamically - this->pydat2().pmas(23,1)=91.1876; // PDG2007 Z0 mass - //this->pydat2().pmas(23,2)=2.4952; // Z-width is calculated dynamically - this->pypars().mstp(70)=0; // (virtuality scale for ISR) - this->pypars().mstp(72)=1; - this->pypars().mstp(88)=1; - this->pypars().mstp(90)=0; - this->pypars().parp(78)=0.3; - this->pypars().parp(80)=0.1; - this->pypars().parp(82)=2.1; // (cut off scale) - this->pypars().parp(83)=0.8; - this->pypars().parp(84)=0.7; // (matter distribution) - this->pypars().parp(90)=0.16; // (cut off scale) - this->pydat1().parj(81)=0.29; - this->pypars().mstp(95)=1; - this->pydat1().mstj(11)=3; // (select peterson for charm fragmentation) - this->pydat1().mstj(22)=2; // (Make K_S, Lambda stable) - this->pydat1().parj(54)=-0.07; // (c hadronization) - this->pydat1().parj(55)=-0.006; // (b hadronization) - this->pypars().mstp(84)=1; - this->pypars().mstp(85)=1; - this->pypars().mstp(86)=2; - this->pypars().mstp(87)=4; - this->pypars().mstp(89)=1; - this->pypars().parp(89)=1800.; - //________________________________________________________________________________________________________________________ - ATH_MSG_INFO( "--------------------------------------------------------------------------------\n" - << "atlasTune: parameter setting to Tune_Index "<<m_Tune_Index<<" tune values : \n" - << "mstp(128) = "<< this->pypars().mstp(128) << "\n" - << "mstu(21) = "<< this->pydat1().mstu(21) << "\n" - << "mstp(81) = "<< this->pypars().mstp(81) << "\n" - << "mstp(82) = "<< this->pypars().mstp(82) << "\n" - << "mstp(52) = "<< this->pypars().mstp(52) << "\n" - << "mstp(54) = "<< this->pypars().mstp(54) << "\n" - << "mstp(56) = "<< this->pypars().mstp(56) << "\n" - << "mstp(51) = "<< this->pypars().mstp(51) << "\n" - << "mstp(53) = "<< this->pypars().mstp(53) << "\n" - << "mstp(55) = "<< this->pypars().mstp(55) << "\n" - << "pmas(6,1) = "<< this->pydat2().pmas(6,1) << "\n" - << "pmas(24,1) = "<< this->pydat2().pmas(24,1)<< "\n" - //<< "pmas(24,2) = "<< this->pydat2().pmas(24,2) << "\n" - << "pmas(23,1) = "<< this->pydat2().pmas(23,1)<< "\n" - //<< "pmas(23,2) = "<< this->pydat2().pmas(23,2)<< "\n" - << "mstp(70) = "<< this->pypars().mstp(70) << "\n" - << "mstp(72) = "<< this->pypars().mstp(72) << "\n" - << "mstp(88) = "<< this->pypars().mstp(88) << "\n" - << "mstp(90) = "<< this->pypars().mstp(90) << "\n" - << "parp(78) = "<< this->pypars().parp(78) << "\n" - << "parp(80) = "<< this->pypars().parp(80) << "\n" - << "parp(82) = "<< this->pypars().parp(82) << "\n" - << "parp(83) = "<< this->pypars().parp(83) << "\n" - << "parp(84) = "<< this->pypars().parp(84) << "\n" - << "parp(90) = "<< this->pypars().parp(90)<< "\n" - << "parj(81) = "<< this->pydat1().parj(81)<< "\n" - << "mstp(95) = "<< this->pypars().mstp(95) << "\n" - << "mstj(11) = "<< this->pydat1().mstj(11) << "\n" - << "mstj(22) = "<< this->pydat1().mstj(22) << "\n" - << "parj(54) = "<< this->pydat1().parj(54) << "\n" - << "parj(55) = "<< this->pydat1().parj(55) << "\n" - << "mstp(84) = "<< this->pypars().mstp(84) << "\n" - << "mstp(85) = "<< this->pypars().mstp(85) << "\n" - << "mstp(86) = "<< this->pypars().mstp(86) << "\n" - << "mstp(87) = "<< this->pypars().mstp(87) << "\n" - << "mstp(89) = "<< this->pypars().mstp(89) << "\n" - << "parp(89) = "<< this->pypars().parp(89)<< "\n" - << "----------------------------------------------- \n" - << "atlasTune: end of the list of Tune_Index "<<m_Tune_Index<<" tune values : \n" - << "--------------------------------------------------------------------------------\n" ); - //________________________________________________________________________________________________________________________ - } // end of if (m_Tune_Index==20080001) condition - else if (m_Tune_Index==20090002) - { - // ATLAS jargon : MC09' - // author : Markus Warsinsky - // Pythia : 6.4.20 - // date: Jun. 2009 - // short description: MC08 tune update for the MC09 production - //________________________________________________________________________________________________________________________ - this->pypars().mstp(128) =1; // fix junk output for documentary particles - this->pydat1().mstu(21) =1; // error handling switch - //physics - related - this->pypars().mstp(81)=21; // run PYEVNW with PYEVNT - this->pypars().mstp(82)=4; // MI structure - this->pypars().mstp(52)=2; // (needed for ext. PDF) - this->pypars().mstp(54)=2; // (needed for ext. PDF) - this->pypars().mstp(56)=2; // (needed for ext. PDF) - this->pypars().mstp(51)=10042; // (needed for CTEQ6L) this is changed for MC08'' (20090002) wrt MC09 20090001 - this->pypars().mstp(53)=10042; // (needed for CTEQ6L) this is changed for MC08'' (20090002) wrt MC09 20090001 - this->pypars().mstp(55)=10042; // (needed for CTEQ6L) this is changed for MC08'' (20090002) wrt MC09 20090001 - this->pydat2().pmas(6,1)=172.5; // PDG2007 TOP mass - this->pydat2().pmas(24,1)=80.399; // PDG2007 W mass - //this->pydat2().pmas(24,2)=2.141; W-width is calculated dynamically - this->pydat2().pmas(23,1)=91.1876; // PDG2007 Z0 mass - //this->pydat2().pmas(23,2)=2.4952; // Z-width is calculated dynamically - this->pypars().mstp(70)=0; // (virtuality scale for ISR) - this->pypars().mstp(72)=1; - this->pypars().mstp(88)=1; - this->pypars().mstp(90)=0; - this->pypars().parp(78)=0.3; - this->pypars().parp(80)=0.1; - this->pypars().parp(82)=2.1; // this is changed for MC08'' (20090002) wrt MC09 20090001 - this->pypars().parp(83)=0.8; - this->pypars().parp(84)=0.7; // (matter distribution) - this->pypars().parp(90)=0.25; // (cut off scale) - this->pydat1().parj(81)=0.29; - this->pypars().mstp(95)=6; - this->pydat1().mstj(11)=4; // select Lund-Bowler for c && b fragmentation - this->pydat1().mstj(22)=2; // (Make K_S, Lambda stable) - this->pydat1().parj(41)=0.3; // Lund-Bowler a - this->pydat1().parj(42)=0.58; // Lund-Bowler b - this->pydat1().parj(46)=0.75; // Lund-Bowler rQ - this->pypars().mstp(84)=1; - this->pypars().mstp(85)=1; - this->pypars().mstp(86)=2; - this->pypars().mstp(87)=4; - this->pypars().mstp(89)=1; - this->pypars().parp(89)=1800.; - //________________________________________________________________________________________________________________________ - ATH_MSG_INFO( "--------------------------------------------------------------------------------\n" - << "atlasTune: parameter setting to Tune_Index "<<m_Tune_Index<<" tune values : \n" - << "mstp(128) = "<< this->pypars().mstp(128) << "\n" - << "mstu(21) = "<< this->pydat1().mstu(21) << "\n" - << "mstp(81) = "<< this->pypars().mstp(81) << "\n" - << "mstp(82) = "<< this->pypars().mstp(82) << "\n" - << "mstp(52) = "<< this->pypars().mstp(52) << "\n" - << "mstp(54) = "<< this->pypars().mstp(54) << "\n" - << "mstp(56) = "<< this->pypars().mstp(56) << "\n" - << "mstp(51) = "<< this->pypars().mstp(51) << "\n" - << "mstp(53) = "<< this->pypars().mstp(53) << "\n" - << "mstp(55) = "<< this->pypars().mstp(55) << "\n" - << "pmas(6,1) = "<< this->pydat2().pmas(6,1) << "\n" - << "pmas(24,1) = "<< this->pydat2().pmas(24,1) << "\n" - //<< "pmas(24,2) = "<< this->pydat2().pmas(24,2) << "\n" - << "pmas(23,1) = "<< this->pydat2().pmas(23,1) << "\n" - //<< "pmas(23,2) = "<< this->pydat2().pmas(23,2) << "\n" - << "mstp(70) = "<< this->pypars().mstp(70) << "\n" - << "mstp(72) = "<< this->pypars().mstp(72) << "\n" - << "mstp(88) = "<< this->pypars().mstp(88) << "\n" - << "mstp(90) = "<< this->pypars().mstp(90) << "\n" - << "parp(78) = "<< this->pypars().parp(78) << "\n" - << "parp(80) = "<< this->pypars().parp(80) << "\n" - << "parp(82) = "<< this->pypars().parp(82) << "\n" - << "parp(83) = "<< this->pypars().parp(83) << "\n" - << "parp(84) = "<< this->pypars().parp(84) << "\n" - << "parp(90) = "<< this->pypars().parp(90) << "\n" - << "parj(81) = "<< this->pydat1().parj(81) << "\n" - << "mstp(95) = "<< this->pypars().mstp(95) << "\n" - << "mstj(11) = "<< this->pydat1().mstj(11) << "\n" - << "mstj(22) = "<< this->pydat1().mstj(22) << "\n" - << "parj(41) = "<< this->pydat1().parj(41) << "\n" - << "parj(42) = "<< this->pydat1().parj(42) << "\n" - << "parj(46) = "<< this->pydat1().parj(46) << "\n" - << "mstp(84) = "<< this->pypars().mstp(84) << "\n" - << "mstp(85) = "<< this->pypars().mstp(85) << "\n" - << "mstp(86) = "<< this->pypars().mstp(86) << "\n" - << "mstp(87) = "<< this->pypars().mstp(87) << "\n" - << "mstp(89) = "<< this->pypars().mstp(89) << "\n" - << "parp(89) = "<< this->pypars().parp(89) << "\n" - << "----------------------------------------------- \n" - << "atlasTune: end of the list of Tune_Index "<<m_Tune_Index<<" tune values : \n" - << "--------------------------------------------------------------------------------\n" ); - //________________________________________________________________________________________________________________________ - } - else if (m_Tune_Index==20090003) - { - // ATLAS jargon : MC09c - // references : ATL-COM-PHYS-2010-040, ATL-PHYS-PUB-2010-002 - // author : Markus Warsinsky et. al - // Pythia : 6.4.21 - // impl. date : June 2010 - // tune produced in : 2009 - // short description: simmilar to MC09, but with lowered CR - // changes wrt. MC09: - // MC09c has: parp(78)=0.224, parp(82)=2.315, parp(90)=0.2487 - // MC09 has: parp(78)=0.3, parp(82)=2.3, parp(90)=0.25 - //________________________________________________________________________________________________________________________ - this->pypars().mstp(128) =1; // fix junk output for documentary particles - this->pydat1().mstu(21) =1; // error handling switch - //physics - related - this->pypars().mstp(81)=21; // run PYEVNW with PYEVNT - this->pypars().mstp(82)=4; // MI structure - this->pypars().mstp(52)=2; // (needed for MRST2007lomod (LO* for MC)) - this->pypars().mstp(54)=2; // (needed for MRST2007lomod (LO* for MC)) - this->pypars().mstp(56)=2; // (needed for MRST2007lomod (LO* for MC)) - this->pypars().mstp(51)=20650; // (needed for MRST2007lomod (LO* for MC)) - this->pypars().mstp(53)=20650; // (needed for MRST2007lomod (LO* for MC)) - this->pypars().mstp(55)=20650; // (needed for MRST2007lomod (LO* for MC)) - this->pydat2().pmas(6,1)=172.5; // PDG2007 TOP mass - this->pydat2().pmas(24,1)=80.399; // PDG2007 W mass - this->pydat2().pmas(23,1)=91.1876; // PDG2007 Z0 mass - this->pypars().mstp(70)=0; // (virtuality scale for ISR) - this->pypars().mstp(72)=1; - this->pypars().mstp(88)=1; - this->pypars().mstp(90)=0; - this->pypars().parp(78)=0.224; - this->pypars().parp(80)=0.1; - this->pypars().parp(82)=2.315; // (cut off scale) - this->pypars().parp(83)=0.8; - this->pypars().parp(84)=0.7; // (matter distribution) - this->pypars().parp(90)=0.2487; // (cut off scale) - this->pydat1().parj(81)=0.29; - this->pypars().mstp(95)=6; - this->pydat1().mstj(11)=4; // select Lund-Bowler for c && b fragmentation - this->pydat1().mstj(22)=2; // (Make K_S, Lambda stable) - this->pydat1().parj(41)=0.3; // Lund-Bowler a - this->pydat1().parj(42)=0.58; // Lund-Bowler b - this->pydat1().parj(46)=0.75; // Lund-Bowler rQ - this->pypars().mstp(84)=1; - this->pypars().mstp(85)=1; - this->pypars().mstp(86)=2; - this->pypars().mstp(87)=4; - this->pypars().mstp(89)=1; - this->pypars().parp(89)=1800.; - //________________________________________________________________________________________________________________________ - ATH_MSG_INFO( "--------------------------------------------------------------------------------\n" - << "atlasTune: parameter setting to Tune_Index "<<m_Tune_Index<<" tune values : \n" - << "mstp(128) = "<< this->pypars().mstp(128) << "\n" - << "mstu(21) = "<< this->pydat1().mstu(21) << "\n" - << "mstp(81) = "<< this->pypars().mstp(81) << "\n" - << "mstp(82) = "<< this->pypars().mstp(82) << "\n" - << "mstp(52) = "<< this->pypars().mstp(52) << "\n" - << "mstp(54) = "<< this->pypars().mstp(54) << "\n" - << "mstp(56) = "<< this->pypars().mstp(56) << "\n" - << "mstp(51) = "<< this->pypars().mstp(51) << "\n" - << "mstp(53) = "<< this->pypars().mstp(53) << "\n" - << "mstp(55) = "<< this->pypars().mstp(55) << "\n" - << "pmas(6,1) = "<< this->pydat2().pmas(6,1) << "\n" - << "pmas(24,1) = "<< this->pydat2().pmas(24,1) << "\n" - << "pmas(23,1) = "<< this->pydat2().pmas(23,1) << "\n" - << "mstp(70) = "<< this->pypars().mstp(70) << "\n" - << "mstp(72) = "<< this->pypars().mstp(72) << "\n" - << "mstp(88) = "<< this->pypars().mstp(88) << "\n" - << "mstp(90) = "<< this->pypars().mstp(90) << "\n" - << "parp(78) = "<< this->pypars().parp(78) << "\n" - << "parp(80) = "<< this->pypars().parp(80) << "\n" - << "parp(82) = "<< this->pypars().parp(82) << "\n" - << "parp(83) = "<< this->pypars().parp(83) << "\n" - << "parp(84) = "<< this->pypars().parp(84) << "\n" - << "parp(90) = "<< this->pypars().parp(90) << "\n" - << "parj(81) = "<< this->pydat1().parj(81) << "\n" - << "mstp(95) = "<< this->pypars().mstp(95) << "\n" - << "mstj(11) = "<< this->pydat1().mstj(11) << "\n" - << "mstj(22) = "<< this->pydat1().mstj(22) << "\n" - << "parj(41) = "<< this->pydat1().parj(41) << "\n" - << "parj(42) = "<< this->pydat1().parj(42) << "\n" - << "parj(46) = "<< this->pydat1().parj(46) << "\n" - << "mstp(84) = "<< this->pypars().mstp(84) << "\n" - << "mstp(85) = "<< this->pypars().mstp(85) << "\n" - << "mstp(86) = "<< this->pypars().mstp(86) << "\n" - << "mstp(87) = "<< this->pypars().mstp(87) << "\n" - << "mstp(89) = "<< this->pypars().mstp(89) << "\n" - << "parp(89) = "<< this->pypars().parp(89) << "\n" - << "----------------------------------------------- \n" - << "atlasTune: end of the list of Tune_Index "<<m_Tune_Index<<" tune values : \n" - << "--------------------------------------------------------------------------------\n" ); - //________________________________________________________________________________________________________________________ - }// end of if (m_Tune_Index==20090003) condition - else if (m_Tune_Index==20100001) - { - // ATLAS jargon : AMBT1 - // references : ATLAS-CONF-2010-031, ATL-COM-PHYS-2010-267, ATL-COM-PHYS-2010-268 - // author : Markus Warsinsky et. al - // Pythia : 6.4.21 - // impl. date : June 2010 - // tune produced in : 2010 - // short description: the first tune including the ATLAS (MinBias, UE, 0.9TeV and 7TeV) data - //________________________________________________________________________________________________________________________ - this->pypars().mstp(128) =1; // fix junk output for documentary particles - this->pydat1().mstu(21) =1; // error handling switch - //physics - related - this->pypars().mstp(81)=21; // run PYEVNW with PYEVNT - this->pypars().mstp(82)=4; // MI structure - this->pypars().mstp(52)=2; // (needed for MRST2007lomod (LO* for MC)) - this->pypars().mstp(54)=2; // (needed for MRST2007lomod (LO* for MC)) - this->pypars().mstp(56)=2; // (needed for MRST2007lomod (LO* for MC)) - this->pypars().mstp(51)=20650; // (needed for MRST2007lomod (LO* for MC)) - this->pypars().mstp(53)=20650; // (needed for MRST2007lomod (LO* for MC)) - this->pypars().mstp(55)=20650; // (needed for MRST2007lomod (LO* for MC)) - this->pydat2().pmas(6,1)=172.5; // PDG2007 TOP mass - this->pydat2().pmas(24,1)=80.399; // PDG2007 W mass - this->pydat2().pmas(23,1)=91.1876; // PDG2007 Z0 mass - this->pypars().parp(62)=1.025; - this->pypars().mstp(70)=0; // (virtuality scale for ISR) - this->pypars().mstp(72)=1; - this->pypars().mstp(88)=1; - this->pypars().mstp(90)=0; - this->pypars().parp(77)=1.016; - this->pypars().parp(78)=0.538; - this->pypars().parp(80)=0.1; - this->pypars().parp(82)=2.292; // (cut off scale) - this->pypars().parp(83)=0.356; - this->pypars().parp(84)=0.651; // (matter distribution) - this->pypars().parp(90)=0.250; // (cut off scale) - this->pypars().parp(93)=10.0; - this->pydat1().parj(81)=0.29; - this->pypars().mstp(95)=6; - this->pydat1().mstj(11)=4; // select Lund-Bowler for c && b fragmentation - this->pydat1().mstj(22)=2; // (Make K_S, Lambda stable) - this->pydat1().parj(41)=0.3; // Lund-Bowler a - this->pydat1().parj(42)=0.58; // Lund-Bowler b - this->pydat1().parj(46)=0.75; // Lund-Bowler rQ - this->pypars().mstp(84)=1; - this->pypars().mstp(85)=1; - this->pypars().mstp(86)=2; - this->pypars().mstp(87)=4; - this->pypars().mstp(89)=1; - this->pypars().parp(89)=1800.; - //________________________________________________________________________________________________________________________ - ATH_MSG_INFO( "--------------------------------------------------------------------------------\n" - << "atlasTune: parameter setting to Tune_Index "<<m_Tune_Index<<" tune values : \n" - << "mstp(128) = "<< this->pypars().mstp(128) << "\n" - << "mstu(21) = "<< this->pydat1().mstu(21) << "\n" - << "mstp(81) = "<< this->pypars().mstp(81) << "\n" - << "mstp(82) = "<< this->pypars().mstp(82) << "\n" - << "mstp(52) = "<< this->pypars().mstp(52) << "\n" - << "mstp(54) = "<< this->pypars().mstp(54) << "\n" - << "mstp(56) = "<< this->pypars().mstp(56) << "\n" - << "mstp(51) = "<< this->pypars().mstp(51) << "\n" - << "mstp(53) = "<< this->pypars().mstp(53) << "\n" - << "mstp(55) = "<< this->pypars().mstp(55) << "\n" - << "pmas(6,1) = "<< this->pydat2().pmas(6,1) << "\n" - << "pmas(24,1) = "<< this->pydat2().pmas(24,1) << "\n" - << "pmas(23,1) = "<< this->pydat2().pmas(23,1) << "\n" - << "parp(62) = "<< this->pypars().parp(62) << "\n" - << "mstp(70) = "<< this->pypars().mstp(70) << "\n" - << "mstp(72) = "<< this->pypars().mstp(72) << "\n" - << "mstp(88) = "<< this->pypars().mstp(88) << "\n" - << "mstp(90) = "<< this->pypars().mstp(90) << "\n" - << "parp(77) = "<< this->pypars().parp(77) << "\n" - << "parp(78) = "<< this->pypars().parp(78) << "\n" - << "parp(80) = "<< this->pypars().parp(80) << "\n" - << "parp(82) = "<< this->pypars().parp(82) << "\n" - << "parp(83) = "<< this->pypars().parp(83) << "\n" - << "parp(84) = "<< this->pypars().parp(84) << "\n" - << "parp(90) = "<< this->pypars().parp(90) << "\n" - << "parp(93) = "<< this->pypars().parp(93) << "\n" - << "parj(81) = "<< this->pydat1().parj(81) << "\n" - << "mstp(95) = "<< this->pypars().mstp(95) << "\n" - << "mstj(11) = "<< this->pydat1().mstj(11) << "\n" - << "mstj(22) = "<< this->pydat1().mstj(22) << "\n" - << "parj(41) = "<< this->pydat1().parj(41) << "\n" - << "parj(42) = "<< this->pydat1().parj(42) << "\n" - << "parj(46) = "<< this->pydat1().parj(46) << "\n" - << "mstp(84) = "<< this->pypars().mstp(84) << "\n" - << "mstp(85) = "<< this->pypars().mstp(85) << "\n" - << "mstp(86) = "<< this->pypars().mstp(86) << "\n" - << "mstp(87) = "<< this->pypars().mstp(87) << "\n" - << "mstp(89) = "<< this->pypars().mstp(89) << "\n" - << "parp(89) = "<< this->pypars().parp(89) << "\n" - << "----------------------------------------------- \n" - << "atlasTune: end of the list of Tune_Index "<<m_Tune_Index<<" tune values : \n" - << "--------------------------------------------------------------------------------\n" ); - //________________________________________________________________________________________________________________________ - }// end of if (m_Tune_Index==20100001) condition - else if (m_Tune_Index==20110001) - { - // ATLAS jargon : AUET2 - // references : todo : add - // author : A. Buckley, J. Katzy (et. al) - // Pythia : 6.4.23 - // impl. date : Mar 2011 - // tune produced in : 2011 - // short description: LO** tune incl. ISR/FSR parameters, optimized for UE - //________________________________________________________________________________________________________________________ - this->pypars().mstp(128)=1; - this->pydat1().mstu(21)=1; - this->pypars().mstp(81)=21; - this->pypars().mstp(82)=4; - this->pypars().mstp(88)=1; - this->pypars().mstp(90)=0; - this->pypars().parp(80)=0.1; - this->pypars().parp(83)=0.356; - this->pypars().parp(93)=10.0; - this->pypars().mstp(95)=6; - this->pydat1().mstj(22)=2; - this->pydat1().parj(46)=0.75; - this->pypars().mstp(84)=1; - this->pypars().mstp(85)=1; - this->pypars().mstp(86)=2; - this->pypars().mstp(87)=4; - this->pypars().mstp(89)=1; - this->pypars().parp(89)=1800.; - this->pydat2().pmas(6,1)=172.5; - this->pydat2().pmas(24,1)=80.399; - this->pydat2().pmas(23,1)=91.1876; - this->pypars().mstp(51)=20651; - this->pypars().mstp(53)=20651; - this->pypars().mstp(55)=20651; - this->pypars().mstp(52)=2; - this->pypars().mstp(54)=2; - this->pypars().mstp(56)=2; - this->pydat1().mstj(11)=5; - this->pydat1().parj(1)=7.272809e-02; - this->pydat1().parj(2)=2.018845e-01; - this->pydat1().parj(3)=9.498471e-01; - this->pydat1().parj(4)=3.316182e-02; - this->pydat1().parj(11)=3.089764e-01; - this->pydat1().parj(12)=4.015396e-01; - this->pydat1().parj(13)=5.442874e-01; - this->pydat1().parj(25)=6.276964e-01; - this->pydat1().parj(26)=1.292377e-01; - this->pydat1().parj(21)=3.001463e-01; - this->pydat1().parj(41)=3.683123e-01; - this->pydat1().parj(42)=1.003531e+00; - this->pydat1().parj(47)=8.727703e-01; - this->pydat1().parj(81)=2.564716e-01; - this->pydat1().parj(82)=8.296215e-01; - this->pypars().mstp(3)=1; - this->pydat1().paru(112)=0.265; - this->pypars().parp(1)=0.265; - this->pypars().parp(61)=0.265; - this->pydat1().mstu(112)=4; - this->pypars().mstp(70)=0; - this->pypars().mstp(64)=3; - this->pypars().mstp(72)=2; - this->pypars().parp(62)=2.803673e+00; - this->pypars().parp(64)=2.213751e+00; - this->pypars().parp(67)=6.635356e-01; - this->pypars().parp(72)=2.496789e-01; - this->pypars().parp(91)=1.918441e+00; - this->pypars().parp(77)=1.127437e+00; - this->pypars().parp(78)=3.320624e-01; - this->pypars().parp(82)=2.451288e+00; - this->pypars().parp(84)=5.296569e-01; - this->pypars().parp(90)=2.290732e-01; - ATH_MSG_INFO( "---------------------------------------------------------------------------------\n" - << "atlasTune: parameter setting to Tune_Index "<<m_Tune_Index<<" tune values : \n" - << "----------------------------------------------- \n" - << "mstp(128)=" << this->pypars().mstp(128) << "\n" - << "mstu(21)=" << this->pydat1().mstu(21) << "\n" - << "mstp(81)=" << this->pypars().mstp(81) << "\n" - << "mstp(82)=" << this->pypars().mstp(82) << "\n" - << "mstp(88)=" << this->pypars().mstp(88) << "\n" - << "mstp(90)=" << this->pypars().mstp(90) << "\n" - << "parp(80)=" << this->pypars().parp(80) << "\n" - << "parp(83)=" << this->pypars().parp(83) << "\n" - << "parp(93)=" << this->pypars().parp(93) << "\n" - << "mstp(95)=" << this->pypars().mstp(95) << "\n" - << "mstj(22)=" << this->pydat1().mstj(22) << "\n" - << "parj(46)=" << this->pydat1().parj(46) << "\n" - << "mstp(84)=" << this->pypars().mstp(84) << "\n" - << "mstp(85)=" << this->pypars().mstp(85) << "\n" - << "mstp(86)=" << this->pypars().mstp(86) << "\n" - << "mstp(87)=" << this->pypars().mstp(87) << "\n" - << "mstp(89)=" << this->pypars().mstp(89) << "\n" - << "parp(89)=" << this->pypars().parp(89) << "\n" - << "pmas(6,1)=" << this->pydat2().pmas(6,1) << "\n" - << "pmas(24,1)=" << this->pydat2().pmas(24,1) << "\n" - << "pmas(23,1)=" << this->pydat2().pmas(23,1) << "\n" - << "mstp(51)=" << this->pypars().mstp(51) << "\n" - << "mstp(53)=" << this->pypars().mstp(53) << "\n" - << "mstp(55)=" << this->pypars().mstp(55) << "\n" - << "mstp(52)=" << this->pypars().mstp(52) << "\n" - << "mstp(54)=" << this->pypars().mstp(54) << "\n" - << "mstp(56)=" << this->pypars().mstp(56) << "\n" - << "mstj(11)=" << this->pydat1().mstj(11) << "\n" - << "parj(1)=" << this->pydat1().parj(1) << "\n" - << "parj(2)=" << this->pydat1().parj(2) << "\n" - << "parj(3)=" << this->pydat1().parj(3) << "\n" - << "parj(4)=" << this->pydat1().parj(4) << "\n" - << "parj(11)=" << this->pydat1().parj(11) << "\n" - << "parj(12)=" << this->pydat1().parj(12) << "\n" - << "parj(13)=" << this->pydat1().parj(13) << "\n" - << "parj(25)=" << this->pydat1().parj(25) << "\n" - << "parj(26)=" << this->pydat1().parj(26) << "\n" - << "parj(21)=" << this->pydat1().parj(21) << "\n" - << "parj(41)=" << this->pydat1().parj(41) << "\n" - << "parj(42)=" << this->pydat1().parj(42) << "\n" - << "parj(47)=" << this->pydat1().parj(47) << "\n" - << "parj(81)=" << this->pydat1().parj(81) << "\n" - << "parj(82)=" << this->pydat1().parj(82) << "\n" - << "mstp(3)=" << this->pypars().mstp(3) << "\n" - << "paru(112)=" << this->pydat1().paru(112) << "\n" - << "parp(1)=" << this->pypars().parp(1) << "\n" - << "parp(61)=" << this->pypars().parp(61) << "\n" - << "mstu(112)=" << this->pydat1().mstu(112) << "\n" - << "mstp(70)=" << this->pypars().mstp(70) << "\n" - << "mstp(64)=" << this->pypars().mstp(64) << "\n" - << "mstp(72)=" << this->pypars().mstp(72) << "\n" - << "parp(62)=" << this->pypars().parp(62) << "\n" - << "parp(64)=" << this->pypars().parp(64) << "\n" - << "parp(67)=" << this->pypars().parp(67) << "\n" - << "parp(72)=" << this->pypars().parp(72) << "\n" - << "parp(91)=" << this->pypars().parp(91) << "\n" - << "parp(77)=" << this->pypars().parp(77) << "\n" - << "parp(78)=" << this->pypars().parp(78) << "\n" - << "parp(82)=" << this->pypars().parp(82) << "\n" - << "parp(84)=" << this->pypars().parp(84) << "\n" - << "parp(90)=" << this->pypars().parp(90) << "\n" - << "----------------------------------------------- \n" - << "atlasTune: end of the list of Tune_Index "<<m_Tune_Index<<" tune values : \n" - << "--------------------------------------------------------------------------------\n" ); - } // end of 20110001 (AUET2) condition - else if (m_Tune_Index==20110101) - { - // ATLAS jargon : AMBT2 - // references : todo : add - // author : A. Buckley, J. Katzy (et. al) - // Pythia : 6.4.23 - // impl. date : Mar 2011 - // tune produced in : 2011 - // short description: LO** tune incl. ISR/FSR parameters, optimized for MinBias - //________________________________________________________________________________________________________________________ - this->pypars().mstp(128)=1; - this->pydat1().mstu(21)=1; - this->pypars().mstp(81)=21; - this->pypars().mstp(82)=4; - this->pypars().mstp(88)=1; - this->pypars().mstp(90)=0; - this->pypars().parp(80)=0.1; - this->pypars().parp(83)=0.356; - this->pypars().parp(93)=10.0; - this->pypars().mstp(95)=6; - this->pydat1().mstj(22)=2; - this->pydat1().parj(46)=0.75; - this->pypars().mstp(84)=1; - this->pypars().mstp(85)=1; - this->pypars().mstp(86)=2; - this->pypars().mstp(87)=4; - this->pypars().mstp(89)=1; - this->pypars().parp(89)=1800.; - this->pydat2().pmas(6,1)=172.5; - this->pydat2().pmas(24,1)=80.399; - this->pydat2().pmas(23,1)=91.1876; - this->pypars().mstp(51)=20651; - this->pypars().mstp(53)=20651; - this->pypars().mstp(55)=20651; - this->pypars().mstp(52)=2; - this->pypars().mstp(54)=2; - this->pypars().mstp(56)=2; - this->pydat1().mstj(11)=5; - this->pydat1().parj(1)=7.272809e-02; - this->pydat1().parj(2)=2.018845e-01; - this->pydat1().parj(3)=9.498471e-01; - this->pydat1().parj(4)=3.316182e-02; - this->pydat1().parj(11)=3.089764e-01; - this->pydat1().parj(12)=4.015396e-01; - this->pydat1().parj(13)=5.442874e-01; - this->pydat1().parj(25)=6.276964e-01; - this->pydat1().parj(26)=1.292377e-01; - this->pydat1().parj(21)=3.001463e-01; - this->pydat1().parj(41)=3.683123e-01; - this->pydat1().parj(42)=1.003531e+00; - this->pydat1().parj(47)=8.727703e-01; - this->pydat1().parj(81)=2.564716e-01; - this->pydat1().parj(82)=8.296215e-01; - this->pypars().mstp(3)=1; - this->pydat1().paru(112)=0.265; - this->pypars().parp(1)=0.265; - this->pypars().parp(61)=0.265; - this->pydat1().mstu(112)=4; - this->pypars().mstp(70)=0; - this->pypars().mstp(64)=3; - this->pypars().mstp(72)=2; - this->pypars().parp(62)=2.803673e+00; - this->pypars().parp(64)=2.213751e+00; - this->pypars().parp(67)=6.635356e-01; - this->pypars().parp(72)=2.496789e-01; - this->pypars().parp(91)=1.918441e+00; - this->pypars().parp(77)=0.88; - this->pypars().parp(78)=0.18; - this->pypars().parp(82)=2.49; - this->pypars().parp(84)=0.61; - this->pypars().parp(90)=0.244; - ATH_MSG_INFO( "---------------------------------------------------------------------------------\n" - << "atlasTune: parameter setting to Tune_Index "<<m_Tune_Index<<" tune values : \n" - << "----------------------------------------------- \n" - << "mstp(128)=" << this->pypars().mstp(128) << "\n" - << "mstu(21)=" << this->pydat1().mstu(21) << "\n" - << "mstp(81)=" << this->pypars().mstp(81) << "\n" - << "mstp(82)=" << this->pypars().mstp(82) << "\n" - << "mstp(88)=" << this->pypars().mstp(88) << "\n" - << "mstp(90)=" << this->pypars().mstp(90) << "\n" - << "parp(80)=" << this->pypars().parp(80) << "\n" - << "parp(83)=" << this->pypars().parp(83) << "\n" - << "parp(93)=" << this->pypars().parp(93) << "\n" - << "mstp(95)=" << this->pypars().mstp(95) << "\n" - << "mstj(22)=" << this->pydat1().mstj(22) << "\n" - << "parj(46)=" << this->pydat1().parj(46) << "\n" - << "mstp(84)=" << this->pypars().mstp(84) << "\n" - << "mstp(85)=" << this->pypars().mstp(85) << "\n" - << "mstp(86)=" << this->pypars().mstp(86) << "\n" - << "mstp(87)=" << this->pypars().mstp(87) << "\n" - << "mstp(89)=" << this->pypars().mstp(89) << "\n" - << "parp(89)=" << this->pypars().parp(89) << "\n" - << "pmas(6,1)=" << this->pydat2().pmas(6,1) << "\n" - << "pmas(24,1)=" << this->pydat2().pmas(24,1) << "\n" - << "pmas(23,1)=" << this->pydat2().pmas(23,1) << "\n" - << "mstp(51)=" << this->pypars().mstp(51) << "\n" - << "mstp(53)=" << this->pypars().mstp(53) << "\n" - << "mstp(55)=" << this->pypars().mstp(55) << "\n" - << "mstp(52)=" << this->pypars().mstp(52) << "\n" - << "mstp(54)=" << this->pypars().mstp(54) << "\n" - << "mstp(56)=" << this->pypars().mstp(56) << "\n" - << "mstj(11)=" << this->pydat1().mstj(11) << "\n" - << "parj(1)=" << this->pydat1().parj(1) << "\n" - << "parj(2)=" << this->pydat1().parj(2) << "\n" - << "parj(3)=" << this->pydat1().parj(3) << "\n" - << "parj(4)=" << this->pydat1().parj(4) << "\n" - << "parj(11)=" << this->pydat1().parj(11) << "\n" - << "parj(12)=" << this->pydat1().parj(12) << "\n" - << "parj(13)=" << this->pydat1().parj(13) << "\n" - << "parj(25)=" << this->pydat1().parj(25) << "\n" - << "parj(26)=" << this->pydat1().parj(26) << "\n" - << "parj(21)=" << this->pydat1().parj(21) << "\n" - << "parj(41)=" << this->pydat1().parj(41) << "\n" - << "parj(42)=" << this->pydat1().parj(42) << "\n" - << "parj(47)=" << this->pydat1().parj(47) << "\n" - << "parj(81)=" << this->pydat1().parj(81) << "\n" - << "parj(82)=" << this->pydat1().parj(82) << "\n" - << "mstp(3)=" << this->pypars().mstp(3) << "\n" - << "paru(112)=" << this->pydat1().paru(112) << "\n" - << "parp(1)=" << this->pypars().parp(1) << "\n" - << "parp(61)=" << this->pypars().parp(61) << "\n" - << "mstu(112)=" << this->pydat1().mstu(112) << "\n" - << "mstp(70)=" << this->pypars().mstp(70) << "\n" - << "mstp(64)=" << this->pypars().mstp(64) << "\n" - << "mstp(72)=" << this->pypars().mstp(72) << "\n" - << "parp(62)=" << this->pypars().parp(62) << "\n" - << "parp(64)=" << this->pypars().parp(64) << "\n" - << "parp(67)=" << this->pypars().parp(67) << "\n" - << "parp(72)=" << this->pypars().parp(72) << "\n" - << "parp(91)=" << this->pypars().parp(91) << "\n" - << "parp(77)=" << this->pypars().parp(77) << "\n" - << "parp(78)=" << this->pypars().parp(78) << "\n" - << "parp(82)=" << this->pypars().parp(82) << "\n" - << "parp(84)=" << this->pypars().parp(84) << "\n" - << "parp(90)=" << this->pypars().parp(90) << "\n" - << "----------------------------------------------- \n" - << "atlasTune: end of the list of Tune_Index "<<m_Tune_Index<<" tune values : \n" - << "--------------------------------------------------------------------------------\n" ); - } // end of 20110101 (AMBT2) condition - else if (m_Tune_Index==20110002) - { - // ATLAS jargon : AMBT1FF / AUET2b - // references : todo : add - // author : A. Buckley, J. Katzy (et. al) - // Pythia : 6.4.23 - // impl. date : Apr 2011 - // tune produced in : 2011 - // short description: LO** tune incl. ISR/FSR parameters, optimized for UE - //_______________________________________________________________________________________________________________________ - this->pypars().mstp(128)=1; - this->pydat1().mstu(21)=1; - this->pypars().mstp(81)=21; - this->pypars().mstp(82)=4; - this->pypars().mstp(72)=1; - this->pypars().mstp(88)=1; - this->pypars().mstp(90)=0; - this->pypars().parp(80)=0.1; - this->pypars().parp(83)=0.356; - this->pypars().parp(93)=10.0; - this->pypars().mstp(95)=6; - this->pydat1().mstj(22)=2; - this->pydat1().parj(46)=0.75; - this->pypars().mstp(84)=1; - this->pypars().mstp(85)=1; - this->pypars().mstp(86)=2; - this->pypars().mstp(87)=4; - this->pypars().mstp(89)=1; - this->pypars().parp(89)=1800.; - this->pydat2().pmas(6,1)=172.5; - this->pydat2().pmas(24,1)=80.399; - this->pydat2().pmas(23,1)=91.1876; - this->pypars().mstp(51)=20651; - this->pypars().mstp(53)=20651; - this->pypars().mstp(55)=20651; - this->pypars().mstp(52)=2; - this->pypars().mstp(54)=2; - this->pypars().mstp(56)=2; - this->pydat1().mstj(11)=5; - this->pydat1().parj(1)=7.272809e-02; - this->pydat1().parj(2)=2.018845e-01; - this->pydat1().parj(3)=9.498471e-01; - this->pydat1().parj(4)=3.316182e-02; - this->pydat1().parj(11)=3.089764e-01; - this->pydat1().parj(12)=4.015396e-01; - this->pydat1().parj(13)=5.442874e-01; - this->pydat1().parj(25)=6.276964e-01; - this->pydat1().parj(26)=1.292377e-01; - this->pydat1().parj(21)=3.001463e-01; - this->pydat1().parj(41)=3.683123e-01; - this->pydat1().parj(42)=1.003531e+00; - this->pydat1().parj(47)=8.727703e-01; - this->pydat1().parj(81)=2.564716e-01; - this->pydat1().parj(82)=8.296215e-01; - this->pypars().mstp(3)=1; - this->pydat1().paru(112)=0.192; - this->pypars().parp(1)=0.192; - this->pypars().parp(61)=0.192; - this->pypars().mstp(70)=0; - this->pypars().parp(67)=1.00; - this->pypars().parp(91)=2.00; - this->pypars().parp(62)=2.17; - this->pypars().parp(64)=0.60; - this->pypars().parp(72)=0.43; - this->pypars().parp(77)=9.006820e-01; - this->pypars().parp(78)=3.092771e-01; - this->pypars().parp(82)=2.437442e+00; - this->pypars().parp(84)=5.598934e-01; - this->pypars().parp(90)=2.414007e-01; - ATH_MSG_INFO( "---------------------------------------------------------------------------------\n" - << "atlasTune: parameter setting to Tune_Index "<<m_Tune_Index<<" tune values : \n" - << "----------------------------------------------- \n" - << "mstp(128)=" << this->pypars().mstp(128) << "\n" - << "mstu(21)=" << this->pydat1().mstu(21) << "\n" - << "mstp(81)=" << this->pypars().mstp(81) << "\n" - << "mstp(82)=" << this->pypars().mstp(82) << "\n" - << "mstp(72)=" << this->pypars().mstp(72) << "\n" - << "mstp(88)=" << this->pypars().mstp(88) << "\n" - << "mstp(90)=" << this->pypars().mstp(90) << "\n" - << "parp(80)=" << this->pypars().parp(80) << "\n" - << "parp(83)=" << this->pypars().parp(83) << "\n" - << "parp(93)=" << this->pypars().parp(93) << "\n" - << "mstp(95)=" << this->pypars().mstp(95) << "\n" - << "mstj(22)=" << this->pydat1().mstj(22) << "\n" - << "parj(46)=" << this->pydat1().parj(46) << "\n" - << "mstp(84)=" << this->pypars().mstp(84) << "\n" - << "mstp(85)=" << this->pypars().mstp(85) << "\n" - << "mstp(86)=" << this->pypars().mstp(86) << "\n" - << "mstp(87)=" << this->pypars().mstp(87) << "\n" - << "mstp(89)=" << this->pypars().mstp(89) << "\n" - << "parp(89)=" << this->pypars().parp(89) << "\n" - << "pmas(6,1)=" << this->pydat2().pmas(6,1) << "\n" - << "pmas(24,1)=" << this->pydat2().pmas(24,1) << "\n" - << "pmas(23,1)=" << this->pydat2().pmas(23,1) << "\n" - << "pmas(23,1)=" << this->pydat2().pmas(23,1) << "\n" - << "pmas(23,1)=" << this->pydat2().pmas(23,1) << "\n" - << "mstp(51)=" << this->pypars().mstp(51) << "\n" - << "mstp(53)=" << this->pypars().mstp(53) << "\n" - << "mstp(55)=" << this->pypars().mstp(55) << "\n" - << "mstp(52)=" << this->pypars().mstp(52) << "\n" - << "mstp(54)=" << this->pypars().mstp(54) << "\n" - << "mstp(56)=" << this->pypars().mstp(56) << "\n" - << "mstj(11)=" << this->pydat1().mstj(11) << "\n" - << "parj(1)=" << this->pydat1().parj(1) << "\n" - << "parj(2)=" << this->pydat1().parj(2) << "\n" - << "parj(3)=" << this->pydat1().parj(3) << "\n" - << "parj(4)=" << this->pydat1().parj(4) << "\n" - << "parj(11)=" << this->pydat1().parj(11) << "\n" - << "parj(12)=" << this->pydat1().parj(12) << "\n" - << "parj(13)=" << this->pydat1().parj(13) << "\n" - << "parj(25)=" << this->pydat1().parj(25) << "\n" - << "parj(26)=" << this->pydat1().parj(26) << "\n" - << "parj(21)=" << this->pydat1().parj(21) << "\n" - << "parj(41)=" << this->pydat1().parj(41) << "\n" - << "parj(42)=" << this->pydat1().parj(42) << "\n" - << "parj(47)=" << this->pydat1().parj(47) << "\n" - << "parj(81)=" << this->pydat1().parj(81) << "\n" - << "parj(82)=" << this->pydat1().parj(82) << "\n" - << "mstp(3)=" << this->pypars().mstp(3) << "\n" - << "paru(112)=" << this->pydat1().paru(112) << "\n" - << "parp(1)=" << this->pypars().parp(1) << "\n" - << "parp(61)=" << this->pypars().parp(61) << "\n" - << "parp(61)=" << this->pypars().parp(61) << "\n" - << "mstp(70)=" << this->pypars().mstp(70) << "\n" - << "parp(67)=" << this->pypars().parp(67) << "\n" - << "parp(91)=" << this->pypars().parp(91) << "\n" - << "parp(62)=" << this->pypars().parp(62) << "\n" - << "parp(64)=" << this->pypars().parp(64) << "\n" - << "parp(72)=" << this->pypars().parp(72) << "\n" - << "parp(77)=" << this->pypars().parp(77) << "\n" - << "parp(78)=" << this->pypars().parp(78) << "\n" - << "parp(82)=" << this->pypars().parp(82) << "\n" - << "parp(84)=" << this->pypars().parp(84) << "\n" - << "parp(90)=" << this->pypars().parp(90) << "\n" - << "----------------------------------------------- \n" - << "atlasTune: end of the list of Tune_Index "<<m_Tune_Index<<" tune values : \n" - << "--------------------------------------------------------------------------------\n" ); - } // end of 20110002 (AMBT1FF/AUET2b) condition - else if (m_Tune_Index==20110102) - { - // ATLAS jargon : AMBT2b - // references : todo : add - // author : A. Buckley, J. Katzy (et. al) - // Pythia : 6.4.23 - // impl. date : Apr 2011 - // tune produced in : 2011 - // short description: LO** tune incl. ISR/FSR parameters, optimized for MinBias - //_______________________________________________________________________________________________________________________ - this->pypars().mstp(128)=1; - this->pydat1().mstu(21)=1; - this->pypars().mstp(81)=21; - this->pypars().mstp(82)=4; - this->pypars().mstp(72)=1; - this->pypars().mstp(88)=1; - this->pypars().mstp(90)=0; - this->pypars().parp(80)=0.1; - this->pypars().parp(83)=0.356; - this->pypars().parp(93)=10.0; - this->pypars().mstp(95)=6; - this->pydat1().mstj(22)=2; - this->pydat1().parj(46)=0.75; - this->pypars().mstp(84)=1; - this->pypars().mstp(85)=1; - this->pypars().mstp(86)=2; - this->pypars().mstp(87)=4; - this->pypars().mstp(89)=1; - this->pypars().parp(89)=1800.; - this->pydat2().pmas(6,1)=172.5; - this->pydat2().pmas(24,1)=80.399; - this->pydat2().pmas(23,1)=91.1876; - this->pypars().mstp(51)=20651; - this->pypars().mstp(53)=20651; - this->pypars().mstp(55)=20651; - this->pypars().mstp(52)=2; - this->pypars().mstp(54)=2; - this->pypars().mstp(56)=2; - this->pydat1().mstj(11)=5; - this->pydat1().parj(1)=7.272809e-02; - this->pydat1().parj(2)=2.018845e-01; - this->pydat1().parj(3)=9.498471e-01; - this->pydat1().parj(4)=3.316182e-02; - this->pydat1().parj(11)=3.089764e-01; - this->pydat1().parj(12)=4.015396e-01; - this->pydat1().parj(13)=5.442874e-01; - this->pydat1().parj(25)=6.276964e-01; - this->pydat1().parj(26)=1.292377e-01; - this->pydat1().parj(21)=3.001463e-01; - this->pydat1().parj(41)=3.683123e-01; - this->pydat1().parj(42)=1.003531e+00; - this->pydat1().parj(47)=8.727703e-01; - this->pydat1().parj(81)=2.564716e-01; - this->pydat1().parj(82)=8.296215e-01; - this->pypars().mstp(3)=1; - this->pydat1().paru(112)=0.192; - this->pypars().parp(1)=0.192; - this->pypars().parp(61)=0.192; - this->pypars().mstp(70)=0; - this->pypars().parp(67)=1.00; - this->pypars().parp(91)=2.00; - this->pypars().parp(62)=2.17; - this->pypars().parp(64)=0.60; - this->pypars().parp(72)=0.43; - this->pypars().parp(77)=1.100584e+00; - this->pypars().parp(78)=2.478809e-01; - this->pypars().parp(82)=2.592214e+00; - this->pypars().parp(84)=6.669917e-01; - this->pypars().parp(90)=2.552765e-01; - ATH_MSG_INFO( "---------------------------------------------------------------------------------\n" - << "atlasTune: parameter setting to Tune_Index "<<m_Tune_Index<<" tune values : \n" - << "----------------------------------------------- \n" - << "mstp(128)=" << this->pypars().mstp(128) << "\n" - << "mstu(21)=" << this->pydat1().mstu(21) << "\n" - << "mstp(81)=" << this->pypars().mstp(81) << "\n" - << "mstp(82)=" << this->pypars().mstp(82) << "\n" - << "mstp(72)=" << this->pypars().mstp(72) << "\n" - << "mstp(88)=" << this->pypars().mstp(88) << "\n" - << "mstp(90)=" << this->pypars().mstp(90) << "\n" - << "parp(80)=" << this->pypars().parp(80) << "\n" - << "parp(83)=" << this->pypars().parp(83) << "\n" - << "parp(93)=" << this->pypars().parp(93) << "\n" - << "mstp(95)=" << this->pypars().mstp(95) << "\n" - << "mstj(22)=" << this->pydat1().mstj(22) << "\n" - << "parj(46)=" << this->pydat1().parj(46) << "\n" - << "mstp(84)=" << this->pypars().mstp(84) << "\n" - << "mstp(85)=" << this->pypars().mstp(85) << "\n" - << "mstp(86)=" << this->pypars().mstp(86) << "\n" - << "mstp(87)=" << this->pypars().mstp(87) << "\n" - << "mstp(89)=" << this->pypars().mstp(89) << "\n" - << "parp(89)=" << this->pypars().parp(89) << "\n" - << "pmas(6,1)=" << this->pydat2().pmas(6,1) << "\n" - << "pmas(24,1)=" << this->pydat2().pmas(24,1) << "\n" - << "pmas(23,1)=" << this->pydat2().pmas(23,1) << "\n" - << "pmas(23,1)=" << this->pydat2().pmas(23,1) << "\n" - << "pmas(23,1)=" << this->pydat2().pmas(23,1) << "\n" - << "mstp(51)=" << this->pypars().mstp(51) << "\n" - << "mstp(53)=" << this->pypars().mstp(53) << "\n" - << "mstp(55)=" << this->pypars().mstp(55) << "\n" - << "mstp(52)=" << this->pypars().mstp(52) << "\n" - << "mstp(54)=" << this->pypars().mstp(54) << "\n" - << "mstp(56)=" << this->pypars().mstp(56) << "\n" - << "mstj(11)=" << this->pydat1().mstj(11) << "\n" - << "parj(1)=" << this->pydat1().parj(1) << "\n" - << "parj(2)=" << this->pydat1().parj(2) << "\n" - << "parj(3)=" << this->pydat1().parj(3) << "\n" - << "parj(4)=" << this->pydat1().parj(4) << "\n" - << "parj(11)=" << this->pydat1().parj(11) << "\n" - << "parj(12)=" << this->pydat1().parj(12) << "\n" - << "parj(13)=" << this->pydat1().parj(13) << "\n" - << "parj(25)=" << this->pydat1().parj(25) << "\n" - << "parj(26)=" << this->pydat1().parj(26) << "\n" - << "parj(21)=" << this->pydat1().parj(21) << "\n" - << "parj(41)=" << this->pydat1().parj(41) << "\n" - << "parj(42)=" << this->pydat1().parj(42) << "\n" - << "parj(47)=" << this->pydat1().parj(47) << "\n" - << "parj(81)=" << this->pydat1().parj(81) << "\n" - << "parj(82)=" << this->pydat1().parj(82) << "\n" - << "mstp(3)=" << this->pypars().mstp(3) << "\n" - << "paru(112)=" << this->pydat1().paru(112) << "\n" - << "parp(1)=" << this->pypars().parp(1) << "\n" - << "parp(61)=" << this->pypars().parp(61) << "\n" - << "parp(61)=" << this->pypars().parp(61) << "\n" - << "mstp(70)=" << this->pypars().mstp(70) << "\n" - << "parp(67)=" << this->pypars().parp(67) << "\n" - << "parp(91)=" << this->pypars().parp(91) << "\n" - << "parp(62)=" << this->pypars().parp(62) << "\n" - << "parp(64)=" << this->pypars().parp(64) << "\n" - << "parp(72)=" << this->pypars().parp(72) << "\n" - << "parp(77)=" << this->pypars().parp(77) << "\n" - << "parp(78)=" << this->pypars().parp(78) << "\n" - << "parp(82)=" << this->pypars().parp(82) << "\n" - << "parp(84)=" << this->pypars().parp(84) << "\n" - << "parp(90)=" << this->pypars().parp(90) << "\n" - << "----------------------------------------------- \n" - << "atlasTune: end of the list of Tune_Index "<<m_Tune_Index<<" tune values : \n" - << "--------------------------------------------------------------------------------\n" ); - } // end of 20110102 (AMBT2b) condition - else if (m_Tune_Index==20110003) - { - // ATLAS jargon : AUET2b - // references : todo : add - // author : A. Buckley, J. Katzy (et. al) - // Pythia : 6.4.23 - // impl. date : Apr 2011 - // tune produced in : 2011 - // short description: CTEQ6L1 tune incl. ISR/FSR parameters, optimized for UE - //_______________________________________________________________________________________________________________________ - this->pypars().mstp(128)=1; - this->pydat1().mstu(21)=1; - this->pypars().mstp(81)=21; - this->pypars().mstp(82)=4; - this->pypars().mstp(72)=1; - this->pypars().mstp(88)=1; - this->pypars().mstp(90)=0; - this->pypars().parp(80)=0.1; - this->pypars().parp(83)=0.356; - this->pypars().parp(93)=10.0; - this->pypars().mstp(95)=6; - this->pydat1().mstj(22)=2; - this->pydat1().parj(46)=0.75; - this->pypars().mstp(84)=1; - this->pypars().mstp(85)=1; - this->pypars().mstp(86)=2; - this->pypars().mstp(87)=4; - this->pypars().mstp(89)=1; - this->pypars().parp(89)=1800.; - this->pydat2().pmas(6,1)=172.5; - this->pydat2().pmas(24,1)=80.399; - this->pydat2().pmas(23,1)=91.1876; - this->pypars().mstp(51)=10042; - this->pypars().mstp(53)=10042; - this->pypars().mstp(55)=10042; - this->pypars().mstp(52)=2; - this->pypars().mstp(54)=2; - this->pypars().mstp(56)=2; - this->pydat1().mstj(11)=5; - this->pydat1().parj(1)=7.272809e-02; - this->pydat1().parj(2)=2.018845e-01; - this->pydat1().parj(3)=9.498471e-01; - this->pydat1().parj(4)=3.316182e-02; - this->pydat1().parj(11)=3.089764e-01; - this->pydat1().parj(12)=4.015396e-01; - this->pydat1().parj(13)=5.442874e-01; - this->pydat1().parj(25)=6.276964e-01; - this->pydat1().parj(26)=1.292377e-01; - this->pydat1().parj(21)=3.001463e-01; - this->pydat1().parj(41)=3.683123e-01; - this->pydat1().parj(42)=1.003531e+00; - this->pydat1().parj(47)=8.727703e-01; - this->pydat1().parj(81)=2.564716e-01; - this->pydat1().parj(82)=8.296215e-01; - this->pypars().mstp(3)=1; - this->pydat1().paru(112)=0.192; - this->pypars().parp(1)=0.192; - this->pypars().parp(61)=0.192; - this->pypars().mstp(70)=0; - this->pypars().parp(67)=1.00; - this->pypars().parp(91)=2.00; - this->pypars().parp(62)=1.13; - this->pypars().parp(64)=0.68; - this->pypars().parp(72)=0.527; - this->pypars().parp(77)=4.905171e-01; - this->pypars().parp(78)=3.105197e-01; - this->pypars().parp(82)=2.259809e+00; - this->pypars().parp(84)=4.430423e-01; - this->pypars().parp(90)=2.490763e-01; - ATH_MSG_INFO( "---------------------------------------------------------------------------------\n" - << "atlasTune: parameter setting to Tune_Index "<<m_Tune_Index<<" tune values : \n" - << "----------------------------------------------- \n" - << "mstp(128)=" << this->pypars().mstp(128) << "\n" - << "mstu(21)=" << this->pydat1().mstu(21) << "\n" - << "mstp(81)=" << this->pypars().mstp(81) << "\n" - << "mstp(82)=" << this->pypars().mstp(82) << "\n" - << "mstp(72)=" << this->pypars().mstp(72) << "\n" - << "mstp(88)=" << this->pypars().mstp(88) << "\n" - << "mstp(90)=" << this->pypars().mstp(90) << "\n" - << "parp(80)=" << this->pypars().parp(80) << "\n" - << "parp(83)=" << this->pypars().parp(83) << "\n" - << "parp(93)=" << this->pypars().parp(93) << "\n" - << "mstp(95)=" << this->pypars().mstp(95) << "\n" - << "mstj(22)=" << this->pydat1().mstj(22) << "\n" - << "parj(46)=" << this->pydat1().parj(46) << "\n" - << "mstp(84)=" << this->pypars().mstp(84) << "\n" - << "mstp(85)=" << this->pypars().mstp(85) << "\n" - << "mstp(86)=" << this->pypars().mstp(86) << "\n" - << "mstp(87)=" << this->pypars().mstp(87) << "\n" - << "mstp(89)=" << this->pypars().mstp(89) << "\n" - << "parp(89)=" << this->pypars().parp(89) << "\n" - << "pmas(6,1)=" << this->pydat2().pmas(6,1) << "\n" - << "pmas(24,1)=" << this->pydat2().pmas(24,1) << "\n" - << "pmas(23,1)=" << this->pydat2().pmas(23,1) << "\n" - << "pmas(23,1)=" << this->pydat2().pmas(23,1) << "\n" - << "pmas(23,1)=" << this->pydat2().pmas(23,1) << "\n" - << "mstp(51)=" << this->pypars().mstp(51) << "\n" - << "mstp(53)=" << this->pypars().mstp(53) << "\n" - << "mstp(55)=" << this->pypars().mstp(55) << "\n" - << "mstp(52)=" << this->pypars().mstp(52) << "\n" - << "mstp(54)=" << this->pypars().mstp(54) << "\n" - << "mstp(56)=" << this->pypars().mstp(56) << "\n" - << "mstj(11)=" << this->pydat1().mstj(11) << "\n" - << "parj(1)=" << this->pydat1().parj(1) << "\n" - << "parj(2)=" << this->pydat1().parj(2) << "\n" - << "parj(3)=" << this->pydat1().parj(3) << "\n" - << "parj(4)=" << this->pydat1().parj(4) << "\n" - << "parj(11)=" << this->pydat1().parj(11) << "\n" - << "parj(12)=" << this->pydat1().parj(12) << "\n" - << "parj(13)=" << this->pydat1().parj(13) << "\n" - << "parj(25)=" << this->pydat1().parj(25) << "\n" - << "parj(26)=" << this->pydat1().parj(26) << "\n" - << "parj(21)=" << this->pydat1().parj(21) << "\n" - << "parj(41)=" << this->pydat1().parj(41) << "\n" - << "parj(42)=" << this->pydat1().parj(42) << "\n" - << "parj(47)=" << this->pydat1().parj(47) << "\n" - << "parj(81)=" << this->pydat1().parj(81) << "\n" - << "parj(82)=" << this->pydat1().parj(82) << "\n" - << "mstp(3)=" << this->pypars().mstp(3) << "\n" - << "paru(112)=" << this->pydat1().paru(112) << "\n" - << "parp(1)=" << this->pypars().parp(1) << "\n" - << "parp(61)=" << this->pypars().parp(61) << "\n" - << "parp(61)=" << this->pypars().parp(61) << "\n" - << "mstp(70)=" << this->pypars().mstp(70) << "\n" - << "parp(67)=" << this->pypars().parp(67) << "\n" - << "parp(91)=" << this->pypars().parp(91) << "\n" - << "parp(62)=" << this->pypars().parp(62) << "\n" - << "parp(64)=" << this->pypars().parp(64) << "\n" - << "parp(72)=" << this->pypars().parp(72) << "\n" - << "parp(77)=" << this->pypars().parp(77) << "\n" - << "parp(78)=" << this->pypars().parp(78) << "\n" - << "parp(82)=" << this->pypars().parp(82) << "\n" - << "parp(84)=" << this->pypars().parp(84) << "\n" - << "parp(90)=" << this->pypars().parp(90) << "\n" - << "----------------------------------------------- \n" - << "atlasTune: end of the list of Tune_Index "<<m_Tune_Index<<" tune values : \n" - << "--------------------------------------------------------------------------------\n" ); - } // end of 20110003 (AUET2b) condition - //========================================================== - else if (m_Tune_Index==20110004) - { - // ATLAS jargon : AUET2B-MSTW2008LO - // references : todo : add - // author : A. Buckley (et. al) - // Pythia : 6.4.25 - // impl. date : Mar 2012 - // tune produced in : 2011 - // short description: AUET2B variant for MSTW2008LO PDF - //_______________________________________________________________________________________________________________________ - this->pypars().mstp(128)=1; - this->pydat1().mstu(21)=1; - this->pypars().mstp(81)=21; - this->pypars().mstp(82)=4; - this->pypars().mstp(72)=1; - this->pypars().mstp(88)=1; - this->pypars().mstp(90)=0; - this->pypars().parp(80)=0.1; - this->pypars().parp(83)=0.356; - this->pypars().parp(93)=10.0; - this->pypars().mstp(95)=6; - this->pydat1().mstj(22)=2; - this->pydat1().parj(46)=0.75; - this->pypars().mstp(84)=1; - this->pypars().mstp(85)=1; - this->pypars().mstp(86)=2; - this->pypars().mstp(87)=4; - this->pypars().mstp(89)=1; - this->pypars().parp(89)=1800.; - this->pydat2().pmas(6,1)=172.5; - this->pydat2().pmas(24,1)=80.399; - this->pydat2().pmas(23,1)=91.1876; - this->pypars().mstp(51)=21000; - this->pypars().mstp(53)=21000; - this->pypars().mstp(55)=21000; - this->pypars().mstp(52)=2; - this->pypars().mstp(54)=2; - this->pypars().mstp(56)=2; - this->pydat1().mstj(11)=5; - this->pydat1().parj(1)=7.272809e-02; - this->pydat1().parj(2)=2.018845e-01; - this->pydat1().parj(3)=9.498471e-01; - this->pydat1().parj(4)=3.316182e-02; - this->pydat1().parj(11)=3.089764e-01; - this->pydat1().parj(12)=4.015396e-01; - this->pydat1().parj(13)=5.442874e-01; - this->pydat1().parj(25)=6.276964e-01; - this->pydat1().parj(26)=1.292377e-01; - this->pydat1().parj(21)=3.001463e-01; - this->pydat1().parj(41)=3.683123e-01; - this->pydat1().parj(42)=1.003531e+00; - this->pydat1().parj(47)=8.727703e-01; - this->pydat1().parj(81)=2.564716e-01; - this->pydat1().parj(82)=8.296215e-01; - this->pypars().mstp(3)=1; - this->pydat1().paru(112)=0.192; - this->pypars().parp(1)=0.192; - this->pypars().parp(61)=0.192; - this->pypars().mstp(70)=0; - this->pypars().parp(67)=1.00; - this->pypars().parp(91)=2.00; - this->pypars().parp(62)=1.26; - this->pypars().parp(64)=1.11; - this->pypars().parp(72)=0.49; - this->pypars().parp(77)=0.597; - this->pypars().parp(78)=0.371; - this->pypars().parp(82)=1.99; - this->pypars().parp(84)=0.499; - this->pypars().parp(90)=0.266; - ATH_MSG_INFO( "---------------------------------------------------------------------------------\n" - << "atlasTune: parameter setting to Tune_Index "<<m_Tune_Index<<" tune values : \n" - << "----------------------------------------------- \n" - << "mstp(128)=" << this->pypars().mstp(128) << "\n" - << "mstu(21)=" << this->pydat1().mstu(21) << "\n" - << "mstp(81)=" << this->pypars().mstp(81) << "\n" - << "mstp(82)=" << this->pypars().mstp(82) << "\n" - << "mstp(72)=" << this->pypars().mstp(72) << "\n" - << "mstp(88)=" << this->pypars().mstp(88) << "\n" - << "mstp(90)=" << this->pypars().mstp(90) << "\n" - << "parp(80)=" << this->pypars().parp(80) << "\n" - << "parp(83)=" << this->pypars().parp(83) << "\n" - << "parp(93)=" << this->pypars().parp(93) << "\n" - << "mstp(95)=" << this->pypars().mstp(95) << "\n" - << "mstj(22)=" << this->pydat1().mstj(22) << "\n" - << "parj(46)=" << this->pydat1().parj(46) << "\n" - << "mstp(84)=" << this->pypars().mstp(84) << "\n" - << "mstp(85)=" << this->pypars().mstp(85) << "\n" - << "mstp(86)=" << this->pypars().mstp(86) << "\n" - << "mstp(87)=" << this->pypars().mstp(87) << "\n" - << "mstp(89)=" << this->pypars().mstp(89) << "\n" - << "parp(89)=" << this->pypars().parp(89) << "\n" - << "pmas(6,1)=" << this->pydat2().pmas(6,1) << "\n" - << "pmas(24,1)=" << this->pydat2().pmas(24,1) << "\n" - << "pmas(23,1)=" << this->pydat2().pmas(23,1) << "\n" - << "pmas(23,1)=" << this->pydat2().pmas(23,1) << "\n" - << "pmas(23,1)=" << this->pydat2().pmas(23,1) << "\n" - << "mstp(51)=" << this->pypars().mstp(51) << "\n" - << "mstp(53)=" << this->pypars().mstp(53) << "\n" - << "mstp(55)=" << this->pypars().mstp(55) << "\n" - << "mstp(52)=" << this->pypars().mstp(52) << "\n" - << "mstp(54)=" << this->pypars().mstp(54) << "\n" - << "mstp(56)=" << this->pypars().mstp(56) << "\n" - << "mstj(11)=" << this->pydat1().mstj(11) << "\n" - << "parj(1)=" << this->pydat1().parj(1) << "\n" - << "parj(2)=" << this->pydat1().parj(2) << "\n" - << "parj(3)=" << this->pydat1().parj(3) << "\n" - << "parj(4)=" << this->pydat1().parj(4) << "\n" - << "parj(11)=" << this->pydat1().parj(11) << "\n" - << "parj(12)=" << this->pydat1().parj(12) << "\n" - << "parj(13)=" << this->pydat1().parj(13) << "\n" - << "parj(25)=" << this->pydat1().parj(25) << "\n" - << "parj(26)=" << this->pydat1().parj(26) << "\n" - << "parj(21)=" << this->pydat1().parj(21) << "\n" - << "parj(41)=" << this->pydat1().parj(41) << "\n" - << "parj(42)=" << this->pydat1().parj(42) << "\n" - << "parj(47)=" << this->pydat1().parj(47) << "\n" - << "parj(81)=" << this->pydat1().parj(81) << "\n" - << "parj(82)=" << this->pydat1().parj(82) << "\n" - << "mstp(3)=" << this->pypars().mstp(3) << "\n" - << "paru(112)=" << this->pydat1().paru(112) << "\n" - << "parp(1)=" << this->pypars().parp(1) << "\n" - << "parp(61)=" << this->pypars().parp(61) << "\n" - << "parp(61)=" << this->pypars().parp(61) << "\n" - << "mstp(70)=" << this->pypars().mstp(70) << "\n" - << "parp(67)=" << this->pypars().parp(67) << "\n" - << "parp(91)=" << this->pypars().parp(91) << "\n" - << "parp(62)=" << this->pypars().parp(62) << "\n" - << "parp(64)=" << this->pypars().parp(64) << "\n" - << "parp(72)=" << this->pypars().parp(72) << "\n" - << "parp(77)=" << this->pypars().parp(77) << "\n" - << "parp(78)=" << this->pypars().parp(78) << "\n" - << "parp(82)=" << this->pypars().parp(82) << "\n" - << "parp(84)=" << this->pypars().parp(84) << "\n" - << "parp(90)=" << this->pypars().parp(90) << "\n" - << "----------------------------------------------- \n" - << "atlasTune: end of the list of Tune_Index "<<m_Tune_Index<<" tune values : \n" - << "--------------------------------------------------------------------------------\n" ); - } // end of 20110003 (AUET2b) condition - //========================================================== - else if (m_Tune_Index==20110005) - { - // ATLAS jargon : AUET2B-CTEQ66 - // references : todo : add - // author : A. Buckley (et. al) - // Pythia : 6.4.25 - // impl. date : Mar 2012 - // tune produced in : 2011 - // short description: Underlying Event Tune (CTEQ66 PDF) - //_______________________________________________________________________________________________________________________ - this->pypars().mstp(128)=1; - this->pydat1().mstu(21)=1; - this->pypars().mstp(81)=21; - this->pypars().mstp(82)=4; - this->pypars().mstp(72)=1; - this->pypars().mstp(88)=1; - this->pypars().mstp(90)=0; - this->pypars().parp(80)=0.1; - this->pypars().parp(83)=0.356; - this->pypars().parp(93)=10.0; - this->pypars().mstp(95)=6; - this->pydat1().mstj(22)=2; - this->pydat1().parj(46)=0.75; - this->pypars().mstp(84)=1; - this->pypars().mstp(85)=1; - this->pypars().mstp(86)=2; - this->pypars().mstp(87)=4; - this->pypars().mstp(89)=1; - this->pypars().parp(89)=1800.; - this->pydat2().pmas(6,1)=172.5; - this->pydat2().pmas(24,1)=80.399; - this->pydat2().pmas(23,1)=91.1876; - this->pypars().mstp(51)=10550; - this->pypars().mstp(53)=10550; - this->pypars().mstp(55)=10550; - this->pypars().mstp(52)=2; - this->pypars().mstp(54)=2; - this->pypars().mstp(56)=2; - this->pydat1().mstj(11)=5; - this->pydat1().parj(1)=7.272809e-02; - this->pydat1().parj(2)=2.018845e-01; - this->pydat1().parj(3)=9.498471e-01; - this->pydat1().parj(4)=3.316182e-02; - this->pydat1().parj(11)=3.089764e-01; - this->pydat1().parj(12)=4.015396e-01; - this->pydat1().parj(13)=5.442874e-01; - this->pydat1().parj(25)=6.276964e-01; - this->pydat1().parj(26)=1.292377e-01; - this->pydat1().parj(21)=3.001463e-01; - this->pydat1().parj(41)=3.683123e-01; - this->pydat1().parj(42)=1.003531e+00; - this->pydat1().parj(47)=8.727703e-01; - this->pydat1().parj(81)=2.564716e-01; - this->pydat1().parj(82)=8.296215e-01; - this->pypars().mstp(3)=1; - this->pydat1().paru(112)=0.192; - this->pypars().parp(1)=0.192; - this->pypars().parp(61)=0.192; - this->pypars().mstp(70)=0; - this->pypars().parp(67)=1.00; - this->pypars().parp(91)=2.00; - this->pypars().parp(62)=0.95; - this->pypars().parp(64)=1.03; - this->pypars().parp(72)=0.40; - this->pypars().parp(77)=0.428; - this->pypars().parp(78)=0.281; - this->pypars().parp(82)=1.892; - this->pypars().parp(84)=0.388; - this->pypars().parp(90)=0.211; - ATH_MSG_INFO( "---------------------------------------------------------------------------------\n" - << "atlasTune: parameter setting to Tune_Index "<<m_Tune_Index<<" tune values : \n" - << "----------------------------------------------- \n" - << "mstp(128)=" << this->pypars().mstp(128) << "\n" - << "mstu(21)=" << this->pydat1().mstu(21) << "\n" - << "mstp(81)=" << this->pypars().mstp(81) << "\n" - << "mstp(82)=" << this->pypars().mstp(82) << "\n" - << "mstp(72)=" << this->pypars().mstp(72) << "\n" - << "mstp(88)=" << this->pypars().mstp(88) << "\n" - << "mstp(90)=" << this->pypars().mstp(90) << "\n" - << "parp(80)=" << this->pypars().parp(80) << "\n" - << "parp(83)=" << this->pypars().parp(83) << "\n" - << "parp(93)=" << this->pypars().parp(93) << "\n" - << "mstp(95)=" << this->pypars().mstp(95) << "\n" - << "mstj(22)=" << this->pydat1().mstj(22) << "\n" - << "parj(46)=" << this->pydat1().parj(46) << "\n" - << "mstp(84)=" << this->pypars().mstp(84) << "\n" - << "mstp(85)=" << this->pypars().mstp(85) << "\n" - << "mstp(86)=" << this->pypars().mstp(86) << "\n" - << "mstp(87)=" << this->pypars().mstp(87) << "\n" - << "mstp(89)=" << this->pypars().mstp(89) << "\n" - << "parp(89)=" << this->pypars().parp(89) << "\n" - << "pmas(6,1)=" << this->pydat2().pmas(6,1) << "\n" - << "pmas(24,1)=" << this->pydat2().pmas(24,1) << "\n" - << "pmas(23,1)=" << this->pydat2().pmas(23,1) << "\n" - << "pmas(23,1)=" << this->pydat2().pmas(23,1) << "\n" - << "pmas(23,1)=" << this->pydat2().pmas(23,1) << "\n" - << "mstp(51)=" << this->pypars().mstp(51) << "\n" - << "mstp(53)=" << this->pypars().mstp(53) << "\n" - << "mstp(55)=" << this->pypars().mstp(55) << "\n" - << "mstp(52)=" << this->pypars().mstp(52) << "\n" - << "mstp(54)=" << this->pypars().mstp(54) << "\n" - << "mstp(56)=" << this->pypars().mstp(56) << "\n" - << "mstj(11)=" << this->pydat1().mstj(11) << "\n" - << "parj(1)=" << this->pydat1().parj(1) << "\n" - << "parj(2)=" << this->pydat1().parj(2) << "\n" - << "parj(3)=" << this->pydat1().parj(3) << "\n" - << "parj(4)=" << this->pydat1().parj(4) << "\n" - << "parj(11)=" << this->pydat1().parj(11) << "\n" - << "parj(12)=" << this->pydat1().parj(12) << "\n" - << "parj(13)=" << this->pydat1().parj(13) << "\n" - << "parj(25)=" << this->pydat1().parj(25) << "\n" - << "parj(26)=" << this->pydat1().parj(26) << "\n" - << "parj(21)=" << this->pydat1().parj(21) << "\n" - << "parj(41)=" << this->pydat1().parj(41) << "\n" - << "parj(42)=" << this->pydat1().parj(42) << "\n" - << "parj(47)=" << this->pydat1().parj(47) << "\n" - << "parj(81)=" << this->pydat1().parj(81) << "\n" - << "parj(82)=" << this->pydat1().parj(82) << "\n" - << "mstp(3)=" << this->pypars().mstp(3) << "\n" - << "paru(112)=" << this->pydat1().paru(112) << "\n" - << "parp(1)=" << this->pypars().parp(1) << "\n" - << "parp(61)=" << this->pypars().parp(61) << "\n" - << "parp(61)=" << this->pypars().parp(61) << "\n" - << "mstp(70)=" << this->pypars().mstp(70) << "\n" - << "parp(67)=" << this->pypars().parp(67) << "\n" - << "parp(91)=" << this->pypars().parp(91) << "\n" - << "parp(62)=" << this->pypars().parp(62) << "\n" - << "parp(64)=" << this->pypars().parp(64) << "\n" - << "parp(72)=" << this->pypars().parp(72) << "\n" - << "parp(77)=" << this->pypars().parp(77) << "\n" - << "parp(78)=" << this->pypars().parp(78) << "\n" - << "parp(82)=" << this->pypars().parp(82) << "\n" - << "parp(84)=" << this->pypars().parp(84) << "\n" - << "parp(90)=" << this->pypars().parp(90) << "\n" - << "----------------------------------------------- \n" - << "atlasTune: end of the list of Tune_Index "<<m_Tune_Index<<" tune values : \n" - << "--------------------------------------------------------------------------------\n" ); - } // end of 20110005 (AUET2B-CTEQ66) condition - else if (m_Tune_Index==20110006) - { - // ATLAS jargon : AUET2B-CT10 - // references : todo : add - // author : A. Buckley (et. al) - // Pythia : 6.4.25 - // impl. date : Mar 2012 - // tune produced in : 2011 - // short description: Underlying Event Tune (CT10 PDF) - //_______________________________________________________________________________________________________________________ - this->pypars().mstp(128)=1; - this->pydat1().mstu(21)=1; - this->pypars().mstp(81)=21; - this->pypars().mstp(82)=4; - this->pypars().mstp(72)=1; - this->pypars().mstp(88)=1; - this->pypars().mstp(90)=0; - this->pypars().parp(80)=0.1; - this->pypars().parp(83)=0.356; - this->pypars().parp(93)=10.0; - this->pypars().mstp(95)=6; - this->pydat1().mstj(22)=2; - this->pydat1().parj(46)=0.75; - this->pypars().mstp(84)=1; - this->pypars().mstp(85)=1; - this->pypars().mstp(86)=2; - this->pypars().mstp(87)=4; - this->pypars().mstp(89)=1; - this->pypars().parp(89)=1800.; - this->pydat2().pmas(6,1)=172.5; - this->pydat2().pmas(24,1)=80.399; - this->pydat2().pmas(23,1)=91.1876; - this->pypars().mstp(51)=10800; - this->pypars().mstp(53)=10800; - this->pypars().mstp(55)=10800; - this->pypars().mstp(52)=2; - this->pypars().mstp(54)=2; - this->pypars().mstp(56)=2; - this->pydat1().mstj(11)=5; - this->pydat1().parj(1)=7.272809e-02; - this->pydat1().parj(2)=2.018845e-01; - this->pydat1().parj(3)=9.498471e-01; - this->pydat1().parj(4)=3.316182e-02; - this->pydat1().parj(11)=3.089764e-01; - this->pydat1().parj(12)=4.015396e-01; - this->pydat1().parj(13)=5.442874e-01; - this->pydat1().parj(25)=6.276964e-01; - this->pydat1().parj(26)=1.292377e-01; - this->pydat1().parj(21)=3.001463e-01; - this->pydat1().parj(41)=3.683123e-01; - this->pydat1().parj(42)=1.003531e+00; - this->pydat1().parj(47)=8.727703e-01; - this->pydat1().parj(81)=2.564716e-01; - this->pydat1().parj(82)=8.296215e-01; - this->pypars().mstp(3)=1; - this->pydat1().paru(112)=0.192; - this->pypars().parp(1)=0.192; - this->pypars().parp(61)=0.192; - this->pypars().mstp(70)=0; - this->pypars().parp(67)=1.00; - this->pypars().parp(91)=2.00; - this->pypars().parp(62)=0.312; - this->pypars().parp(64)=0.939; - this->pypars().parp(72)=0.537; - this->pypars().parp(77)=0.125; - this->pypars().parp(78)=0.309; - this->pypars().parp(82)=1.89; - this->pypars().parp(84)=0.415; - this->pypars().parp(90)=0.182; - ATH_MSG_INFO( "---------------------------------------------------------------------------------\n" - << "atlasTune: parameter setting to Tune_Index "<<m_Tune_Index<<" tune values : \n" - << "----------------------------------------------- \n" - << "mstp(128)=" << this->pypars().mstp(128) << "\n" - << "mstu(21)=" << this->pydat1().mstu(21) << "\n" - << "mstp(81)=" << this->pypars().mstp(81) << "\n" - << "mstp(82)=" << this->pypars().mstp(82) << "\n" - << "mstp(72)=" << this->pypars().mstp(72) << "\n" - << "mstp(88)=" << this->pypars().mstp(88) << "\n" - << "mstp(90)=" << this->pypars().mstp(90) << "\n" - << "parp(80)=" << this->pypars().parp(80) << "\n" - << "parp(83)=" << this->pypars().parp(83) << "\n" - << "parp(93)=" << this->pypars().parp(93) << "\n" - << "mstp(95)=" << this->pypars().mstp(95) << "\n" - << "mstj(22)=" << this->pydat1().mstj(22) << "\n" - << "parj(46)=" << this->pydat1().parj(46) << "\n" - << "mstp(84)=" << this->pypars().mstp(84) << "\n" - << "mstp(85)=" << this->pypars().mstp(85) << "\n" - << "mstp(86)=" << this->pypars().mstp(86) << "\n" - << "mstp(87)=" << this->pypars().mstp(87) << "\n" - << "mstp(89)=" << this->pypars().mstp(89) << "\n" - << "parp(89)=" << this->pypars().parp(89) << "\n" - << "pmas(6,1)=" << this->pydat2().pmas(6,1) << "\n" - << "pmas(24,1)=" << this->pydat2().pmas(24,1) << "\n" - << "pmas(23,1)=" << this->pydat2().pmas(23,1) << "\n" - << "pmas(23,1)=" << this->pydat2().pmas(23,1) << "\n" - << "pmas(23,1)=" << this->pydat2().pmas(23,1) << "\n" - << "mstp(51)=" << this->pypars().mstp(51) << "\n" - << "mstp(53)=" << this->pypars().mstp(53) << "\n" - << "mstp(55)=" << this->pypars().mstp(55) << "\n" - << "mstp(52)=" << this->pypars().mstp(52) << "\n" - << "mstp(54)=" << this->pypars().mstp(54) << "\n" - << "mstp(56)=" << this->pypars().mstp(56) << "\n" - << "mstj(11)=" << this->pydat1().mstj(11) << "\n" - << "parj(1)=" << this->pydat1().parj(1) << "\n" - << "parj(2)=" << this->pydat1().parj(2) << "\n" - << "parj(3)=" << this->pydat1().parj(3) << "\n" - << "parj(4)=" << this->pydat1().parj(4) << "\n" - << "parj(11)=" << this->pydat1().parj(11) << "\n" - << "parj(12)=" << this->pydat1().parj(12) << "\n" - << "parj(13)=" << this->pydat1().parj(13) << "\n" - << "parj(25)=" << this->pydat1().parj(25) << "\n" - << "parj(26)=" << this->pydat1().parj(26) << "\n" - << "parj(21)=" << this->pydat1().parj(21) << "\n" - << "parj(41)=" << this->pydat1().parj(41) << "\n" - << "parj(42)=" << this->pydat1().parj(42) << "\n" - << "parj(47)=" << this->pydat1().parj(47) << "\n" - << "parj(81)=" << this->pydat1().parj(81) << "\n" - << "parj(82)=" << this->pydat1().parj(82) << "\n" - << "mstp(3)=" << this->pypars().mstp(3) << "\n" - << "paru(112)=" << this->pydat1().paru(112) << "\n" - << "parp(1)=" << this->pypars().parp(1) << "\n" - << "parp(61)=" << this->pypars().parp(61) << "\n" - << "parp(61)=" << this->pypars().parp(61) << "\n" - << "mstp(70)=" << this->pypars().mstp(70) << "\n" - << "parp(67)=" << this->pypars().parp(67) << "\n" - << "parp(91)=" << this->pypars().parp(91) << "\n" - << "parp(62)=" << this->pypars().parp(62) << "\n" - << "parp(64)=" << this->pypars().parp(64) << "\n" - << "parp(72)=" << this->pypars().parp(72) << "\n" - << "parp(77)=" << this->pypars().parp(77) << "\n" - << "parp(78)=" << this->pypars().parp(78) << "\n" - << "parp(82)=" << this->pypars().parp(82) << "\n" - << "parp(84)=" << this->pypars().parp(84) << "\n" - << "parp(90)=" << this->pypars().parp(90) << "\n" - << "----------------------------------------------- \n" - << "atlasTune: end of the list of Tune_Index "<<m_Tune_Index<<" tune values : \n" - << "--------------------------------------------------------------------------------\n" ); - } // end of 20110006 (AUET2B-CT10) condition - else if (m_Tune_Index==20110103) - { - // ATLAS jargon : AMBT2b - // references : todo : add - // author : A. Buckley, J. Katzy (et. al) - // Pythia : 6.4.23 - // impl. date : Apr 2011 - // tune produced in : 2011 - // short description: CTEQ6L1 tune incl. ISR/FSR parameters, optimized for MinBias - //_______________________________________________________________________________________________________________________ - this->pypars().mstp(128)=1; - this->pydat1().mstu(21)=1; - this->pypars().mstp(81)=21; - this->pypars().mstp(82)=4; - this->pypars().mstp(72)=1; - this->pypars().mstp(88)=1; - this->pypars().mstp(90)=0; - this->pypars().parp(80)=0.1; - this->pypars().parp(83)=0.356; - this->pypars().parp(93)=10.0; - this->pypars().mstp(95)=6; - this->pydat1().mstj(22)=2; - this->pydat1().parj(46)=0.75; - this->pypars().mstp(84)=1; - this->pypars().mstp(85)=1; - this->pypars().mstp(86)=2; - this->pypars().mstp(87)=4; - this->pypars().mstp(89)=1; - this->pypars().parp(89)=1800.; - this->pydat2().pmas(6,1)=172.5; - this->pydat2().pmas(24,1)=80.399; - this->pydat2().pmas(23,1)=91.1876; - this->pypars().mstp(51)=10042; - this->pypars().mstp(53)=10042; - this->pypars().mstp(55)=10042; - this->pypars().mstp(52)=2; - this->pypars().mstp(54)=2; - this->pypars().mstp(56)=2; - this->pydat1().mstj(11)=5; - this->pydat1().parj(1)=7.272809e-02; - this->pydat1().parj(2)=2.018845e-01; - this->pydat1().parj(3)=9.498471e-01; - this->pydat1().parj(4)=3.316182e-02; - this->pydat1().parj(11)=3.089764e-01; - this->pydat1().parj(12)=4.015396e-01; - this->pydat1().parj(13)=5.442874e-01; - this->pydat1().parj(25)=6.276964e-01; - this->pydat1().parj(26)=1.292377e-01; - this->pydat1().parj(21)=3.001463e-01; - this->pydat1().parj(41)=3.683123e-01; - this->pydat1().parj(42)=1.003531e+00; - this->pydat1().parj(47)=8.727703e-01; - this->pydat1().parj(81)=2.564716e-01; - this->pydat1().parj(82)=8.296215e-01; - this->pypars().mstp(3)=1; - this->pydat1().paru(112)=0.192; - this->pypars().parp(1)=0.192; - this->pypars().parp(61)=0.192; - this->pypars().mstp(70)=0; - this->pypars().parp(67)=1.00; - this->pypars().parp(91)=2.00; - this->pypars().parp(62)=1.13; - this->pypars().parp(64)=0.68; - this->pypars().parp(72)=0.527; - this->pypars().parp(77)=3.566023e-01; - this->pypars().parp(78)=2.350777e-01; - this->pypars().parp(82)=2.342685e+00; - this->pypars().parp(84)=6.053474e-01; - this->pypars().parp(90)=2.456730e-01; - ATH_MSG_INFO( "---------------------------------------------------------------------------------\n" - << "atlasTune: parameter setting to Tune_Index "<<m_Tune_Index<<" tune values : \n" - << "----------------------------------------------- \n" - << "mstp(128)=" << this->pypars().mstp(128) << "\n" - << "mstu(21)=" << this->pydat1().mstu(21) << "\n" - << "mstp(81)=" << this->pypars().mstp(81) << "\n" - << "mstp(82)=" << this->pypars().mstp(82) << "\n" - << "mstp(72)=" << this->pypars().mstp(72) << "\n" - << "mstp(88)=" << this->pypars().mstp(88) << "\n" - << "mstp(90)=" << this->pypars().mstp(90) << "\n" - << "parp(80)=" << this->pypars().parp(80) << "\n" - << "parp(83)=" << this->pypars().parp(83) << "\n" - << "parp(93)=" << this->pypars().parp(93) << "\n" - << "mstp(95)=" << this->pypars().mstp(95) << "\n" - << "mstj(22)=" << this->pydat1().mstj(22) << "\n" - << "parj(46)=" << this->pydat1().parj(46) << "\n" - << "mstp(84)=" << this->pypars().mstp(84) << "\n" - << "mstp(85)=" << this->pypars().mstp(85) << "\n" - << "mstp(86)=" << this->pypars().mstp(86) << "\n" - << "mstp(87)=" << this->pypars().mstp(87) << "\n" - << "mstp(89)=" << this->pypars().mstp(89) << "\n" - << "parp(89)=" << this->pypars().parp(89) << "\n" - << "pmas(6,1)=" << this->pydat2().pmas(6,1) << "\n" - << "pmas(24,1)=" << this->pydat2().pmas(24,1) << "\n" - << "pmas(23,1)=" << this->pydat2().pmas(23,1) << "\n" - << "pmas(23,1)=" << this->pydat2().pmas(23,1) << "\n" - << "pmas(23,1)=" << this->pydat2().pmas(23,1) << "\n" - << "mstp(51)=" << this->pypars().mstp(51) << "\n" - << "mstp(53)=" << this->pypars().mstp(53) << "\n" - << "mstp(55)=" << this->pypars().mstp(55) << "\n" - << "mstp(52)=" << this->pypars().mstp(52) << "\n" - << "mstp(54)=" << this->pypars().mstp(54) << "\n" - << "mstp(56)=" << this->pypars().mstp(56) << "\n" - << "mstj(11)=" << this->pydat1().mstj(11) << "\n" - << "parj(1)=" << this->pydat1().parj(1) << "\n" - << "parj(2)=" << this->pydat1().parj(2) << "\n" - << "parj(3)=" << this->pydat1().parj(3) << "\n" - << "parj(4)=" << this->pydat1().parj(4) << "\n" - << "parj(11)=" << this->pydat1().parj(11) << "\n" - << "parj(12)=" << this->pydat1().parj(12) << "\n" - << "parj(13)=" << this->pydat1().parj(13) << "\n" - << "parj(25)=" << this->pydat1().parj(25) << "\n" - << "parj(26)=" << this->pydat1().parj(26) << "\n" - << "parj(21)=" << this->pydat1().parj(21) << "\n" - << "parj(41)=" << this->pydat1().parj(41) << "\n" - << "parj(42)=" << this->pydat1().parj(42) << "\n" - << "parj(47)=" << this->pydat1().parj(47) << "\n" - << "parj(81)=" << this->pydat1().parj(81) << "\n" - << "parj(82)=" << this->pydat1().parj(82) << "\n" - << "mstp(3)=" << this->pypars().mstp(3) << "\n" - << "paru(112)=" << this->pydat1().paru(112) << "\n" - << "parp(1)=" << this->pypars().parp(1) << "\n" - << "parp(61)=" << this->pypars().parp(61) << "\n" - << "parp(61)=" << this->pypars().parp(61) << "\n" - << "mstp(70)=" << this->pypars().mstp(70) << "\n" - << "parp(67)=" << this->pypars().parp(67) << "\n" - << "parp(91)=" << this->pypars().parp(91) << "\n" - << "parp(62)=" << this->pypars().parp(62) << "\n" - << "parp(64)=" << this->pypars().parp(64) << "\n" - << "parp(72)=" << this->pypars().parp(72) << "\n" - << "parp(77)=" << this->pypars().parp(77) << "\n" - << "parp(78)=" << this->pypars().parp(78) << "\n" - << "parp(82)=" << this->pypars().parp(82) << "\n" - << "parp(84)=" << this->pypars().parp(84) << "\n" - << "parp(90)=" << this->pypars().parp(90) << "\n" - << "----------------------------------------------- \n" - << "atlasTune: end of the list of Tune_Index "<<m_Tune_Index<<" tune values : \n" - << "--------------------------------------------------------------------------------\n" ); - } // end of 20110103 (AMBT2b) condition - else - { - ATH_MSG_WARNING( "atlasTune: no tune with Tune_Index : "<<m_Tune_Index << "\n" - << "run with current default ATLAS tune : "<<m_Default_Tune_Name << "\n" ); - //set Tune_Type to empty to get common undefined tune behavior - m_Tune_Type=" "; - StatusCode sc = Pythia::setPythiaTune(); - if ( !sc.isSuccess() ) { - ATH_MSG_WARNING( "StatusCode in setPythiaTune: Failed \n"); - } - } - - ATH_MSG_INFO( "atlasTune: all done \n" - << "________________________________________________________________________________\n" ); - return StatusCode::SUCCESS; - - //end of atlasTune def. -} - diff --git a/Generators/Pythia_i/src/atopyt.F b/Generators/Pythia_i/src/atopyt.F deleted file mode 100644 index cb9255589874b5406299f53c0b99f9ee5632c8b0..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/src/atopyt.F +++ /dev/null @@ -1,155 +0,0 @@ - SUBROUTINE ALSHCD(CSHO) - CHARACTER*3 CSHO - CSHO='PYT' - END - - SUBROUTINE ALSHEN - END - - SUBROUTINE ALSHER(I) - INTEGER I - I=0 - RETURN - END -C---------------------------------------------------------------------- - SUBROUTINE ALSHIN(I) -C---------------------------------------------------------------------- -C subroutine to initialise the events -C---------------------------------------------------------------------- - IMPLICIT NONE -#include "AlpGen_i/alpsho.inc" - INTEGER I -C--LOCAL VARIABLES -C EASY-TEXT - CHARACTER*10 CGIVE - CHARACTER*12 CGIV2 - CHARACTER*32 CPASS -C LOCAL VARIABLES - DOUBLE PRECISION MQ - INTEGER IQ -C COMMUNICATION CODE - I=661 -C FILL IN PYTHIA SPECIFIC INPUTS - IF(MC.NE.0.) THEN - IQ=4 - MQ=MC - WRITE(CGIVE,'(I5)') IQ - WRITE(CGIV2,'(D12.5)') MQ - CPASS='PMAS('//CGIVE//',1)='//CGIV2 - CALL PYGIVE(CPASS) -C PMAS(IQ,1)=MQ - ENDIF - IF(MB.NE.0.) THEN - IQ=5 - MQ=MB - WRITE(CGIVE,'(I5)') IQ - WRITE(CGIV2,'(D12.5)') MQ - CPASS='PMAS('//CGIVE//',1)='//CGIV2 - CALL PYGIVE(CPASS) -C PMAS(IQ,1)=MQ - ENDIF - IF(MT.NE.0.) THEN - IQ=6 - MQ=MT - WRITE(CGIVE,'(I5)') IQ - WRITE(CGIV2,'(D12.5)') MQ - CPASS='PMAS('//CGIVE//',1)='//CGIV2 - CALL PYGIVE(CPASS) -C PMAS(IQ,1)=MQ - ENDIF - IF(MW.NE.0.) THEN - WRITE(CGIV2,'(D12.5)') MW - CPASS='PMAS(24,1)='//CGIV2 - CALL PYGIVE(CPASS) -C PMAS(24,1)=MW - ENDIF - IF(MZ.NE.0.) THEN - WRITE(CGIV2,'(D12.5)') MZ - CPASS='PMAS(23,1)='//CGIV2 - CALL PYGIVE(CPASS) -C PMAS(23,1)=MZ - ENDIF - IF(MH.NE.0.) THEN - WRITE(CGIV2,'(D12.5)') MH - CPASS='PMAS(25,1)='//CGIV2 - CALL PYGIVE(CPASS) -C PMAS(25,1)=MH - ENDIF - END - -C----------------------------------------------------------------------- - SUBROUTINE ALSFIN -C----------------------------------------------------------------------- -C PYTHIA END OF FILE TREATMENT -C----------------------------------------------------------------------- -C-- GUP Event common block -#include "GeneratorFortranCommon/hepeup.inc" - NUP=0 - END - -C---------------------------------------------------------------------- - SUBROUTINE MGSHIN(I) -C---------------------------------------------------------------------- -C subroutine to initialise the events FOR MADGRAPH ONLY -C---------------------------------------------------------------------- - IMPLICIT NONE -#include "MadGraph_i/madsho.inc" - INTEGER I -C--LOCAL VARIABLES -C EASY-TEXT - CHARACTER*10 CGIVE - CHARACTER*12 CGIV2 - CHARACTER*32 CPASS -C LOCAL VARIABLES - DOUBLE PRECISION MQ - INTEGER IQ -C COMMUNICATION CODE - I=661 -C FILL IN PYTHIA SPECIFIC INPUTS for SM - IF(MC.NE.0.) THEN - IQ=4 - MQ=MC - WRITE(CGIVE,'(I5)') IQ - WRITE(CGIV2,'(D12.5)') MQ - CPASS='PMAS('//CGIVE//',1)='//CGIV2 - CALL PYGIVE(CPASS) -C PMAS(IQ,1)=MQ - ENDIF - IF(MB.NE.0.) THEN - IQ=5 - MQ=MB - WRITE(CGIVE,'(I5)') IQ - WRITE(CGIV2,'(D12.5)') MQ - CPASS='PMAS('//CGIVE//',1)='//CGIV2 - CALL PYGIVE(CPASS) -C PMAS(IQ,1)=MQ - ENDIF - IF(MT.NE.0.) THEN - IQ=6 - MQ=MT - WRITE(CGIVE,'(I5)') IQ - WRITE(CGIV2,'(D12.5)') MQ - CPASS='PMAS('//CGIVE//',1)='//CGIV2 - CALL PYGIVE(CPASS) -C PMAS(IQ,1)=MQ - ENDIF - IF(MW.NE.0.) THEN - WRITE(CGIV2,'(D12.5)') MW - CPASS='PMAS(24,1)='//CGIV2 - CALL PYGIVE(CPASS) -C PMAS(24,1)=MW - ENDIF - IF(MZ.NE.0.) THEN - WRITE(CGIV2,'(D12.5)') MZ - CPASS='PMAS(23,1)='//CGIV2 - CALL PYGIVE(CPASS) -C PMAS(23,1)=MZ - ENDIF - IF(MH.NE.0.) THEN - WRITE(CGIV2,'(D12.5)') MH - CPASS='PMAS(25,1)='//CGIV2 - CALL PYGIVE(CPASS) -C PMAS(25,1)=MH - ENDIF - END - diff --git a/Generators/Pythia_i/src/cldcay.F b/Generators/Pythia_i/src/cldcay.F deleted file mode 100644 index 5d4b5824f2143a6ec536389685aec31d67242a8d..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/src/cldcay.F +++ /dev/null @@ -1,8 +0,0 @@ - SUBROUTINE CLDCAY(LUN) - IMPLICIT NONE - INTEGER LUN - - CLOSE(LUN) - - RETURN - END diff --git a/Generators/Pythia_i/src/components/Pythia_i_entries.cxx b/Generators/Pythia_i/src/components/Pythia_i_entries.cxx deleted file mode 100644 index b2204be8a0facf00b444cefe7a471488c12a7d98..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/src/components/Pythia_i_entries.cxx +++ /dev/null @@ -1,4 +0,0 @@ -#include "Pythia_i/Pythia.h" - -DECLARE_COMPONENT( Pythia ) - diff --git a/Generators/Pythia_i/src/extproc.F b/Generators/Pythia_i/src/extproc.F deleted file mode 100644 index fcdb62b4dbbdc2c2d7164499d054f494342abd74..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/src/extproc.F +++ /dev/null @@ -1,10 +0,0 @@ - SUBROUTINE EXTPROC(IPROC) -c -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) -#include "GeneratorFortranCommon/lesatlas.inc" - ATLASCHOICE = IPROC - - RETURN - END diff --git a/Generators/Pythia_i/src/gatlastaula_decres_py.F b/Generators/Pythia_i/src/gatlastaula_decres_py.F deleted file mode 100644 index d1232a04495e05b3efd17a7fcd95542aa21bd4e3..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/src/gatlastaula_decres_py.F +++ /dev/null @@ -1,22 +0,0 @@ -C FORKING ROUTINE TO DECAY LEFTOVER RESONANCES IN PYTHIA - SUBROUTINE TAUOLA_DECRES_PY(ISTART) - - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - INTEGER ISTART - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - - PARAMETER (NMXHEP=10000) - COMMON/HEPEVT/NEVHEP,NHEP,ISTHEP(NMXHEP),IDHEP(NMXHEP), - &JMOHEP(2,NMXHEP),JDAHEP(2,NMXHEP),PHEP(5,NMXHEP),VHEP(4,NMXHEP) - DOUBLE PRECISION PHEP,VHEP - SAVE /HEPEVT/ - - MSTU(12)=12345 ! PREVENT TOO MANY LOGOS - - CALL PYHEPC(2) -C---DO UNSTABLE PARTICLE DECAYS - CALL PYEXEC ! DECAY AN ODD PION... - CALL PYHEPC(1) -c CALL PYLIST(2) - RETURN - END diff --git a/Generators/Pythia_i/src/glhefinfo.F b/Generators/Pythia_i/src/glhefinfo.F deleted file mode 100644 index b31849e8a74053616a19b18c806b23972327089f..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/src/glhefinfo.F +++ /dev/null @@ -1,12 +0,0 @@ - FVOIDP FUNCTION LHEFINFO_ADDRESS() - IMPLICIT NONE - INTEGER PARTID1,PARTID2 - DOUBLE PRECISION PARTX1,PARTX2,SCALEPDF,XPDF1,XPDF2 - - COMMON/LHEFINFO/PARTID1,PARTID2,PARTX1,PARTX2,SCALEPDF,XPDF1,XPDF2 -c EXTERNAL PYDATA ! All that is required to force loading of BLOCK DATA - FVOIDP GETADDR - - LHEFINFO_ADDRESS = GETADDR(PARTID1) - RETURN - END diff --git a/Generators/Pythia_i/src/gpydat1.F b/Generators/Pythia_i/src/gpydat1.F deleted file mode 100644 index 35cb472d5928e33031d982920982da7985c7df59..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/src/gpydat1.F +++ /dev/null @@ -1,11 +0,0 @@ - FVOIDP FUNCTION PYDAT1_ADDRESS() - IMPLICIT NONE - INTEGER MSTU,MSTJ - DOUBLE PRECISION PARU,PARJ - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - EXTERNAL PYDATA ! All that is required to force loading of BLOCK DATA - FVOIDP GETADDR - - PYDAT1_ADDRESS = GETADDR(MSTU(1)) - RETURN - END diff --git a/Generators/Pythia_i/src/gpydat2.F b/Generators/Pythia_i/src/gpydat2.F deleted file mode 100644 index c4f6fb28bc3a9505493f93f177ba6e852122acc1..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/src/gpydat2.F +++ /dev/null @@ -1,13 +0,0 @@ - FVOIDP FUNCTION PYDAT2_ADDRESS() - IMPLICIT NONE - INTEGER NSUB,NPAR,NKDP,NPDP,NVDM - PARAMETER (NSUB=500,NPAR=2000,NKDP=4,NPDP=4,NVDM=4) - INTEGER KCHG - DOUBLE PRECISION PMAS,PARF,VCKM - COMMON/PYDAT2/KCHG(NSUB,NKDP),PMAS(NSUB,NPDP),PARF(NPAR), - & VCKM(NVDM,NVDM) - FVOIDP GETADDR - - PYDAT2_ADDRESS = GETADDR(KCHG) - RETURN - END diff --git a/Generators/Pythia_i/src/gpydat3.F b/Generators/Pythia_i/src/gpydat3.F deleted file mode 100644 index 13d7ab1f32068b95ad9b2a6b73da1efbc62b718d..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/src/gpydat3.F +++ /dev/null @@ -1,14 +0,0 @@ - FVOIDP FUNCTION PYDAT3_ADDRESS() - IMPLICIT NONE - INTEGER NSUB,NPAR,NMDCY,NMDME,NKFDP - PARAMETER (NSUB=500,NPAR=8000,NMDCY=3,NMDME=2,NKFDP=5) - INTEGER MDCY,MDME,KFDP - DOUBLE PRECISION BRAT - COMMON/PYDAT3/MDCY(NSUB,NMDCY),MDME(NPAR,NMDME),BRAT(NPAR), - & KFDP(NPAR,NKFDP) - - FVOIDP GETADDR - - PYDAT3_ADDRESS = GETADDR(MDCY(1,1)) - RETURN - END diff --git a/Generators/Pythia_i/src/gpydat3_61.F b/Generators/Pythia_i/src/gpydat3_61.F deleted file mode 100644 index e722eeff8ea28b6fd50d232d656371e3b5666768..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/src/gpydat3_61.F +++ /dev/null @@ -1,14 +0,0 @@ - FVOIDP FUNCTION PYDAT3_ADDRESS() - IMPLICIT NONE - INTEGER NSUB,NPAR,NMDCY,NMDME,NKFDP - PARAMETER (NSUB=500,NPAR=4000,NMDCY=3,NMDME=2,NKFDP=5) - INTEGER MDCY,MDME,KFDP - DOUBLE PRECISION BRAT - COMMON/PYDAT3/MDCY(NSUB,NMDCY),MDME(NPAR,NMDME),BRAT(NPAR), - & KFDP(NPAR,NKFDP) - - FVOIDP GETADDR - - PYDAT3_ADDRESS = GETADDR(MDCY(1,1)) - RETURN - END diff --git a/Generators/Pythia_i/src/gpydat3_62.F b/Generators/Pythia_i/src/gpydat3_62.F deleted file mode 100644 index 13d7ab1f32068b95ad9b2a6b73da1efbc62b718d..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/src/gpydat3_62.F +++ /dev/null @@ -1,14 +0,0 @@ - FVOIDP FUNCTION PYDAT3_ADDRESS() - IMPLICIT NONE - INTEGER NSUB,NPAR,NMDCY,NMDME,NKFDP - PARAMETER (NSUB=500,NPAR=8000,NMDCY=3,NMDME=2,NKFDP=5) - INTEGER MDCY,MDME,KFDP - DOUBLE PRECISION BRAT - COMMON/PYDAT3/MDCY(NSUB,NMDCY),MDME(NPAR,NMDME),BRAT(NPAR), - & KFDP(NPAR,NKFDP) - - FVOIDP GETADDR - - PYDAT3_ADDRESS = GETADDR(MDCY(1,1)) - RETURN - END diff --git a/Generators/Pythia_i/src/gpydatr.F b/Generators/Pythia_i/src/gpydatr.F deleted file mode 100644 index 40f670a1a71571145fed1855b2c691e777713f0b..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/src/gpydatr.F +++ /dev/null @@ -1,11 +0,0 @@ - FVOIDP FUNCTION PYDATR_ADDRESS() - IMPLICIT NONE - INTEGER MRPY - DOUBLE PRECISION RRPY - COMMON/PYDATR/MRPY(6),RRPY(100) - EXTERNAL PYDATA ! All that is required to force loading of BLOCK DATA - FVOIDP GETADDR - - PYDATR_ADDRESS = GETADDR(MRPY(1)) - RETURN - END diff --git a/Generators/Pythia_i/src/gpyint1.F b/Generators/Pythia_i/src/gpyint1.F deleted file mode 100644 index a00baeb6aac9fc7434dfddf1b24813abb0200ace..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/src/gpyint1.F +++ /dev/null @@ -1,11 +0,0 @@ - FVOIDP FUNCTION PYINT1_ADDRESS() - IMPLICIT NONE - INTEGER MINT - DOUBLE PRECISION VINT - COMMON/PYINT1/MINT(400),VINT(400) - EXTERNAL PYDATA ! All that is required to force loading of BLOCK DATA - FVOIDP GETADDR - - PYINT1_ADDRESS = GETADDR(MINT(1)) - RETURN - END diff --git a/Generators/Pythia_i/src/gpyint2.F b/Generators/Pythia_i/src/gpyint2.F deleted file mode 100644 index 7bc1a12adfc960abde9b02c41e84ea80838b9083..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/src/gpyint2.F +++ /dev/null @@ -1,11 +0,0 @@ - FVOIDP FUNCTION PYINT2_ADDRESS() - IMPLICIT NONE - INTEGER ISET,KFPR,ICOL - DOUBLE PRECISION COEF - COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2) - EXTERNAL PYDATA ! All that is required to force loading of BLOCK DATA - FVOIDP GETADDR - - PYINT2_ADDRESS = GETADDR(ISET(1)) - RETURN - END diff --git a/Generators/Pythia_i/src/gpyint5.F b/Generators/Pythia_i/src/gpyint5.F deleted file mode 100644 index 8e81c3fff6b2ee9324f2cbf8e5bdad071301a555..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/src/gpyint5.F +++ /dev/null @@ -1,10 +0,0 @@ - FVOIDP FUNCTION PYINT5_ADDRESS() - IMPLICIT NONE - INTEGER NGENPD,NGEN - DOUBLE PRECISION XSEC - COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3) - EXTERNAL PYDATA ! All that is required to force loading of BLOCK DATA - FVOIDP GETADDR - PYINT5_ADDRESS = GETADDR(NGENPD) - RETURN - END diff --git a/Generators/Pythia_i/src/gpymsrv.F b/Generators/Pythia_i/src/gpymsrv.F deleted file mode 100644 index b502381e49772168e10ce2579954a69b94c3fa0a..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/src/gpymsrv.F +++ /dev/null @@ -1,14 +0,0 @@ - FVOIDP FUNCTION PYMSRV_ADDRESS() - IMPLICIT NONE - DOUBLE PRECISION RVLAM - DOUBLE PRECISION RVLAMP - DOUBLE PRECISION RVLAMB -C DATA RVLAM/27*0D0/ -C DATA RVLAMP/27*0D0/ -C DATA RVLAMB/27*0D0/ - COMMON/PYMSRV/RVLAM(3,3,3), RVLAMP(3,3,3), RVLAMB(3,3,3) - EXTERNAL PYDATA ! All that is required to force loading of BLOCK DATA - FVOIDP GETADDR - PYMSRV_ADDRESS = GETADDR(RVLAM) - RETURN - END diff --git a/Generators/Pythia_i/src/gpymssm.F b/Generators/Pythia_i/src/gpymssm.F deleted file mode 100644 index 45efaadf57c2b5479c4697b95b11aee874a55bb3..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/src/gpymssm.F +++ /dev/null @@ -1,10 +0,0 @@ - FVOIDP FUNCTION PYMSSM_ADDRESS() - IMPLICIT NONE - INTEGER ISSM - DOUBLE PRECISION RSSM - COMMON /PYMSSM/ ISSM(0:99),RSSM(0:99) - EXTERNAL PYDATA ! All that is required to force loading of BLOCK DATA - FVOIDP GETADDR - PYMSSM_ADDRESS = GETADDR(ISSM) - RETURN - END diff --git a/Generators/Pythia_i/src/gpypars.F b/Generators/Pythia_i/src/gpypars.F deleted file mode 100644 index ccd83153ee3e03a096c7d6cc72766e5cd15a559f..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/src/gpypars.F +++ /dev/null @@ -1,11 +0,0 @@ - FVOIDP FUNCTION PYPARS_ADDRESS() - IMPLICIT NONE - INTEGER MSTP,MSTI - DOUBLE PRECISION PARP,PARI - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) - EXTERNAL PYDATA ! All that is required to force loading of BLOCK DATA - FVOIDP GETADDR - - PYPARS_ADDRESS = GETADDR(MSTP(1)) - RETURN - END diff --git a/Generators/Pythia_i/src/gpypevwt.F b/Generators/Pythia_i/src/gpypevwt.F deleted file mode 100644 index 6dfecba3623f32e6882372ea37e6bdd8ed5c1dba..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/src/gpypevwt.F +++ /dev/null @@ -1,9 +0,0 @@ - FVOIDP FUNCTION PYPEVWT_ADDRESS() - IMPLICIT NONE - INTEGER IEVWT - DOUBLE PRECISION REVWT - COMMON /PYPEVWT/ IEVWT(0:99),REVWT(0:99) - FVOIDP GETADDR - PYPEVWT_ADDRESS = GETADDR(IEVWT) - RETURN - END diff --git a/Generators/Pythia_i/src/gpypued.F b/Generators/Pythia_i/src/gpypued.F deleted file mode 100644 index bd3ccd28ab1816f32a3ca54ed395a568fe00fc57..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/src/gpypued.F +++ /dev/null @@ -1,10 +0,0 @@ - FVOIDP FUNCTION PYPUED_ADDRESS() - IMPLICIT NONE - INTEGER IUED - DOUBLE PRECISION RUED - COMMON /PYPUED/ IUED(0:99),RUED(0:99) - EXTERNAL PYDATA ! All that is required to force loading of BLOCK DATA - FVOIDP GETADDR - PYPUED_ADDRESS = GETADDR(IUED) - RETURN - END diff --git a/Generators/Pythia_i/src/gpyssmt.F b/Generators/Pythia_i/src/gpyssmt.F deleted file mode 100644 index 1e0a5eda76ed12c62282a900099f0353a517b745..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/src/gpyssmt.F +++ /dev/null @@ -1,10 +0,0 @@ - FVOIDP FUNCTION PYSSMT_ADDRESS() - IMPLICIT NONE - DOUBLE PRECISION ZMIX, UMIX, VMIX, SMZ, SMW, SFMIX - COMMON /PYSSMT/ ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2), - & SFMIX(16,4) - EXTERNAL PYDATA ! All that is required to force loading of BLOCK DATA - FVOIDP GETADDR - PYSSMT_ADDRESS = GETADDR(ZMIX) - RETURN - END diff --git a/Generators/Pythia_i/src/gpysubs.F b/Generators/Pythia_i/src/gpysubs.F deleted file mode 100644 index 137d825e28e6d37a517aff28dec6f565180492e1..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/src/gpysubs.F +++ /dev/null @@ -1,13 +0,0 @@ - FVOIDP FUNCTION PYSUBS_ADDRESS() - IMPLICIT NONE - INTEGER NSUB,NKIN,NFLAV - PARAMETER (NSUB=500,NKIN=200,NFLAV=40) - INTEGER MSEL,MSELPD,MSUB,KFIN - DOUBLE PRECISION CKIN - COMMON/PYSUBS/MSEL,MSELPD,MSUB(NSUB),KFIN(2,-NFLAV:NFLAV), - & CKIN(NKIN) - FVOIDP GETADDR - - PYSUBS_ADDRESS = GETADDR(MSEL) - RETURN - END diff --git a/Generators/Pythia_i/src/gpytcsm.F b/Generators/Pythia_i/src/gpytcsm.F deleted file mode 100644 index d8c6913842cf6733b30a8638c21468d42cf3ad47..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/src/gpytcsm.F +++ /dev/null @@ -1,10 +0,0 @@ - FVOIDP FUNCTION PYTCSM_ADDRESS() - IMPLICIT NONE - INTEGER ITCM - DOUBLE PRECISION RTCM - COMMON/PYTCSM/ITCM(0:99),RTCM(0:99) - EXTERNAL PYDATA ! All that is required to force loading of BLOCK DATA - FVOIDP GETADDR - PYTCSM_ADDRESS = GETADDR(ITCM) - RETURN - END diff --git a/Generators/Pythia_i/src/initpyblock.F b/Generators/Pythia_i/src/initpyblock.F deleted file mode 100644 index 881870dda46d818bb2c6ab8e17fce7733dc864a8..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/src/initpyblock.F +++ /dev/null @@ -1,33 +0,0 @@ - SUBROUTINE INITPYBLOCK(LULIS,FILLIS) - IMPLICIT NONE - - EXTERNAL PYDATA ! All that is required to force loading of BLOCK DATA - - COMMON/PYDAT4/CHAF(500,2) - CHARACTER CHAF*16 - integer LULIS,IERR -c CHARACTER* FILLIS - character(len=*) FILLIS -c This is the listing filefile - -c write(6,*) '<<<<<<<<< Hello from initpyblock >>>>>>> ' -c write(6,*) CHAF(1,1), CHAF(1,2) -c write(6,*) CHAF(100,1), CHAF(100,2) - -C Open for write the pythia listing file File -C ==================================== -C - IF(LULIS.GT.0)THEN - OPEN ( UNIT=LULIS, FORM='FORMATTED', - & FILE=FILLIS,STATUS='NEW',IOSTAT=IERR) - IF(IERR.NE.0) THEN - WRITE(6,*) - & 'Error ', IERR,' failing to open PYTHIA Listing file' - RETURN - ELSE - WRITE(6,*) - & 'Open PYTHIA Listing file' - ENDIF - ENDIF - RETURN - END diff --git a/Generators/Pythia_i/src/opdcay.F b/Generators/Pythia_i/src/opdcay.F deleted file mode 100644 index 98cf65a9edc212c12adf00e8a7b05fcb74ea440f..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/src/opdcay.F +++ /dev/null @@ -1,21 +0,0 @@ - INTEGER FUNCTION OPDCAY(FNAME,LUN,MODE) - IMPLICIT NONE - CHARACTER*(*) FNAME - CHARACTER*1 MODE - INTEGER LUN - - IF (MODE.eq.'W') THEN -ccc OPEN(UNIT=LUN,NAME=FNAME,ERR=99) ! gfortran incompatible - OPEN(UNIT=LUN,FILE=FNAME,ERR=99) - ELSE -ccc OPEN(UNIT=LUN,NAME=FNAME,STATUS='OLD',ERR=99)! gfortran incompatible - OPEN(UNIT=LUN,FILE=FNAME,STATUS='OLD',ERR=99) - ENDIF - - OPDCAY=0 - RETURN - -C ERROR OPENING FILE - 99 OPDCAY=1 - RETURN - END diff --git a/Generators/Pythia_i/src/openrandom.F b/Generators/Pythia_i/src/openrandom.F deleted file mode 100644 index 060edf42056c70606947ba95470ec46cdbc0db06..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/src/openrandom.F +++ /dev/null @@ -1,39 +0,0 @@ - INTEGER FUNCTION OPENRANDOM(OPTION,LULIS,FILLIS) - IMPLICIT NONE - - integer LULIS,IERR,OPTION - CHARACTER*60 FILLIS - -C Open for write the pythia random number File -C ==================================== -C - OPENRANDOM = 0 - IF(LULIS.GT.0 .and. OPTION .gt.0)THEN - IF(OPTION .eq. 1) THEN - OPEN ( UNIT=LULIS, FORM='UNFORMATTED', - & FILE=FILLIS,STATUS='UNKNOWN',IOSTAT=IERR) - ELSEIF (OPTION .eq. 2) THEN - OPEN ( UNIT=LULIS, FORM='UNFORMATTED', - & FILE=FILLIS,STATUS='OLD',IOSTAT=IERR) - ENDIF - IF(IERR.NE.0) THEN - WRITE(6,*) 'Error ', IERR, - & ' failing to open PYTHIA Random Number file' - RETURN - ELSE - WRITE(6,*) 'Open PYTHIA Random Number file' - ENDIF - ENDIF - -C When in reading mode count the number of records in the file - IF (OPTION .eq. 2) THEN - DO - READ(LULIS,END=120,IOSTAT=IERR) - OPENRANDOM = OPENRANDOM + 1 - ENDDO - 120 REWIND(LULIS) - ENDIF - - RETURN - - END diff --git a/Generators/Pythia_i/src/opensusyfile.F b/Generators/Pythia_i/src/opensusyfile.F deleted file mode 100644 index 28c5eabd094d2a7bdf59203c09d91d84e53e28fd..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/src/opensusyfile.F +++ /dev/null @@ -1,31 +0,0 @@ - Subroutine opensusyfile(filnam,iunit) - character*(*) filnam - integer iunit -c----------------------------------------------------------------------- -c open the SUSY file -c----------------------------------------------------------------------- - write(*,*) ' ' - write (*,6660) - 6660 format (' SUSY filename is ') - write (*,*) filnam - write (*,6664) iunit - 6664 format (' and unit number is ',i6) -C - open(unit=iunit,file=filnam,status='old',err=101) - goto 102 -c----------------------------------------------------------------------- -c error: can't open SUSY file -c----------------------------------------------------------------------- - 101 continue - write(*,*) ' ' - write(*,*) ' ********************************************* ' - write(*,*) ' ' - write(*,*) - $ ' Error in opening SUSY file for READING' - write(*,*) - $ ' Program will abort.' - write(*,*) ' ' - write(*,*) ' ********************************************* ' - write(*,*) ' ' - 102 continue - end diff --git a/Generators/Pythia_i/src/parout.F b/Generators/Pythia_i/src/parout.F deleted file mode 100644 index 9bf294bbf0f21677788b518f30ad763155d5f405..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/src/parout.F +++ /dev/null @@ -1,37 +0,0 @@ - SUBROUTINE PAROUT(IMODE) - -C______________________________________________________________________________ -C AUTHOR LMijovic -C helper subroutine for redirecting part of Pythia output to a separate file -C______________________________________________________________________________ - - LOGICAL ISFILE - INTEGER IFOUT1, IFOUT2 - -C if the values are changed also change the MSTU(11) setting below -C file for pythia parameter values after initialization - IFOUT1=7 -C file for pythia parameter values after event generation - IFOUT2=8 - - IF (IMODE .EQ. 1) THEN - CALL PYGIVE("MSTU(11)=7") - INQUIRE(FILE='par_after_init.out',EXIST=ISFILE) - IF (ISFILE .EQV. .TRUE.) THEN - OPEN(IFOUT1,FILE='after_init.out',STATUS='OLD',ERR=3001) - ELSE - OPEN(IFOUT1,FILE='after_init.out',STATUS='NEW',ERR=3001) - ENDIF - ELSE IF (IMODE .EQ. 2) THEN - CALL PYGIVE("MSTU(11)=8") - OPEN(IFOUT2,FILE='after_gen.out',STATUS='NEW',ERR=3001) - ELSE IF (IMODE .EQ. 3) THEN - CALL PYGIVE("MSTU(11)=8") - OPEN(IFOUT2,FILE='after_gen.out',STATUS='OLD',ERR=3001) - ENDIF - - RETURN - - 3001 WRITE (*,*) 'could not open file for writing' - - END diff --git a/Generators/Pythia_i/src/pyr.F b/Generators/Pythia_i/src/pyr.F deleted file mode 100644 index 382e63207c6ace0ecbc4e14d05e23c14de46c598..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/src/pyr.F +++ /dev/null @@ -1,7 +0,0 @@ - FUNCTION PYR(IDUMMY) - DOUBLE PRECISION PYR, ATL_PYR - INTEGER IDUMMY - 100 PYR=ATL_PYR(IDUMMY) - IF(PYR.LE.0D0.OR.PYR.GE.1D0) GOTO 100 - RETURN - END diff --git a/Generators/Pythia_i/src/pysghg_ChL.f b/Generators/Pythia_i/src/pysghg_ChL.f deleted file mode 100644 index 623e67ca01c3b43ad89eadd2dc623b7918b8893a..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/src/pysghg_ChL.f +++ /dev/null @@ -1,1384 +0,0 @@ -C...PYSGHG -C...Subprocess cross sections for Higgs processes, -C...except Higgs pairs in PYSGSU, but including WW scattering. -C...Auxiliary to PYSIGH. -c -c modified according to: -c >> Proc. of the Workshop on Standard Model (and more) at the LHC, -c >> CERN 2000-004, chapt. on Electroweak Physics, Haywood et al., eq. (72) -c >> AL1 = a4, as defined in figures of hep-ph/9912224 -c >> AL2 = a5, as defined in figures of hep-ph/9912224 -c -c - - - SUBROUTINE PYSGHG(NCHN,SIGS) - -C...Double precision and integer declarations - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) -C INTEGER PYK,PYCHGE,PYCOMP -C...Parameter statement to help give large particle numbers. - PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000, - &KEXCIT=4000000,KDIMEN=5000000) -C...Commonblocks - COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) - COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) - COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5) - COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) - COMMON/PYINT1/MINT(400),VINT(400) - COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2) - COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000) - COMMON/PYINT4/MWID(500),WIDS(500,5) - COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200) - COMMON/PYMSSM/IMSS(0:99),RMSS(0:99) - COMMON/PYSGCM/ISUB,ISUBSV,MMIN1,MMAX1,MMIN2,MMAX2,MMINA,MMAXA, - &KFAC(2,-40:40),COMFAC,FACK,FACA,SH,TH,UH,SH2,TH2,UH2,SQM3,SQM4, - &SHR,SQPTH,TAUP,BE34,CTH,X(2),SQMZ,SQMW,GMMZ,GMMW, - &AEM,AS,XW,XW1,XWC,XWV,POLL,POLR,POLLL,POLRR - SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYPARS/,/PYINT1/,/PYINT2/, - &/PYINT3/,/PYINT4/,/PYSUBS/,/PYMSSM/,/PYSGCM/ -C...Local arrays and complex variables - DIMENSION WDTP(0:400),WDTE(0:400,0:5) - COMPLEX*16 A004,A204,A114,A00U,A20U,A11U - COMPLEX*16 CIGTOT,CIZTOT,F0ALP,F1ALP,F2ALP,F0BET,F1BET,F2BET,FIF - -C...Convert H or A process into equivalent h one - IHIGG=1 - KFHIGG=25 - IF(ISUB.EQ.401.OR.ISUB.EQ.402) THEN - KFHIGG=KFPR(ISUB,1) - END IF - IF((ISUB.GE.151.AND.ISUB.LE.160).OR.(ISUB.GE.171.AND. - &ISUB.LE.190)) THEN - IHIGG=2 - IF(MOD(ISUB-1,10).GE.5) IHIGG=3 - KFHIGG=33+IHIGG - IF(ISUB.EQ.151.OR.ISUB.EQ.156) ISUB=3 - IF(ISUB.EQ.152.OR.ISUB.EQ.157) ISUB=102 - IF(ISUB.EQ.153.OR.ISUB.EQ.158) ISUB=103 - IF(ISUB.EQ.171.OR.ISUB.EQ.176) ISUB=24 - IF(ISUB.EQ.172.OR.ISUB.EQ.177) ISUB=26 - IF(ISUB.EQ.173.OR.ISUB.EQ.178) ISUB=123 - IF(ISUB.EQ.174.OR.ISUB.EQ.179) ISUB=124 - IF(ISUB.EQ.181.OR.ISUB.EQ.186) ISUB=121 - IF(ISUB.EQ.182.OR.ISUB.EQ.187) ISUB=122 - IF(ISUB.EQ.183.OR.ISUB.EQ.188) ISUB=111 - IF(ISUB.EQ.184.OR.ISUB.EQ.189) ISUB=112 - IF(ISUB.EQ.185.OR.ISUB.EQ.190) ISUB=113 - ENDIF - SQMH=PMAS(KFHIGG,1)**2 - GMMH=PMAS(KFHIGG,1)*PMAS(KFHIGG,2) - -C...Strongly interacting Z_L/W_L model of Dobado, Herrero, Terron - IF((MSTP(46).GE.3.AND.MSTP(46).LE.6).AND.(ISUB.EQ.71.OR.ISUB.EQ. - &72.OR.ISUB.EQ.73.OR.ISUB.EQ.76.OR.ISUB.EQ.77)) THEN -C...Calculate M_R and N_R functions for Higgs-like and QCD-like models - IF(MSTP(46).LE.4) THEN - HDTLH=LOG(PMAS(25,1)/PARP(44)) - HDTMR=(4.5D0*PARU(1)/SQRT(3D0)-74D0/9D0)/8D0+HDTLH/12D0 - HDTNR=-(1D0/18D0)+HDTLH/6D0 - ELSE - HDTNM=0.125D0*(1D0/(288D0*PARU(1)**2)+(PARP(47)/PARP(45))**2) - HDTLQ=LOG(PARP(45)/PARP(44)) - HDTMR=-((4D0*PARU(1))**2*0.5D0*HDTNM)+HDTLQ/12D0 - HDTNR=(4D0*PARU(1))**2*HDTNM+HDTLQ/6D0 - ENDIF - -C...Calculate lowest and next-to-lowest order partial wave amplitudes - HDTV=1D0/(16D0*PARU(1)*PARP(47)**2) - A00L=DBLE(HDTV*SH) - A20L=-(0.5D0*A00L) - A11L=A00L/6D0 -c >> ga -c >> following lines removed and replaced to apply the amplitudes given in -c >> Proc. of the Workshop on Standard Model (and more) at the LHC, -c >> CERN 2000-004, chapt. on Electroweak Physics, Haywood et al., eq. (72) -c >> AL1 = a4, as defined in figures of hep-ph/9912224 -c >> AL2 = a5, as defined in figures of hep-ph/9912224 -c -c HDTLS=LOG(SH/PARP(44)**2) -c A004=DBLE((HDTV*SH)**2/(4D0*PARU(1)))* -c & CMPLX(DBLE((176D0*HDTMR+112D0*HDTNR)/3D0+11D0/27D0- -c & (50D0/9D0)*HDTLS),DBLE(4D0*PARU(1))) -c A204=DBLE((HDTV*SH)**2/(4D0*PARU(1)))* -c & CMPLX(DBLE(32D0*(HDTMR+2D0*HDTNR)/3D0+25D0/54D0- -c & (20D0/9D0)*HDTLS),DBLE(PARU(1))) -c A114=DBLE((HDTV*SH)**2/(6D0*PARU(1)))* -c & CMPLX(DBLE(4D0*(-2D0*HDTMR+HDTNR)-1D0/18D0),DBLE(PARU(1)/6D0)) - AL1=PARP(199) - AL2=PARP(200) - pi=paru(1) - VV=PARP(47) - HDTLS=LOG(SH/PARP(45)**2) - A004=A00L*SH/(4D0*VV**2)* ( - & 16D0*(11*AL2+7*AL1)/3D0+ - & CMPLX(SNGL((101D0/9D0-50D0*HDTLS/9D0)/(16D0*PI**2)), - & SNGL(1./(4D0*PI))) - & ) - A114=A11L*SH/VV**2* ( - & 4D0*(AL1-2*AL2)+ - & (1./(16D0*PI**2))*CMPLX(SNGL(1.D0/9.D0),SNGL(PI/6D0)) - & ) - A204=-((A20L*SH)/(2D0*VV**2)* ( - & 32D0*(AL2+2*AL1)/3D0+ - & CMPLX(SNGL((273D0/54D0-20D0*HDTLS/9D0)/(16D0*PI**2)), - & SNGL(1./(16D0*PI))) - & )) -C ga << - write(*,*) "!" -C...Unitarize partial wave amplitudes with Pade or K-matrix method - IF(MSTP(46).EQ.3.OR.MSTP(46).EQ.5) THEN - A00U=A00L/(1D0-A004/A00L) - A20U=A20L/(1D0-A204/A20L) - A11U=A11L/(1D0-A114/A11L) - ELSE - A00U=(A00L+DBLE(A004))/(1D0-DCMPLX(0.D0,A00L+DBLE(A004))) - A20U=(A20L+DBLE(A204))/(1D0-DCMPLX(0.D0,A20L+DBLE(A204))) - A11U=(A11L+DBLE(A114))/(1D0-DCMPLX(0.D0,A11L+DBLE(A114))) - ENDIF - ENDIF - -C...Differential cross section expressions. - - IF(ISUB.LE.60) THEN - IF(ISUB.EQ.3) THEN -C...f + fbar -> h0 (or H0, or A0) - CALL PYWIDT(KFHIGG,SH,WDTP,WDTE) - HS=SHR*WDTP(0) - FACBW=4D0*COMFAC/((SH-SQMH)**2+HS**2) - IF(ABS(SHR-PMAS(KFHIGG,1)).GT.PARP(48)*PMAS(KFHIGG,2)) - & FACBW=0D0 - HP=AEM/(8D0*XW)*SH/SQMW*SH - HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4)) - DO 100 I=MMINA,MMAXA - IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 100 - IA=IABS(I) - RMQ=PYMRUN(IA,SH)**2/SH - HI=HP*RMQ - IF(IA.LE.10) HI=HP*RMQ*FACA/3D0 - IF(MSTP(4).GE.1.OR.IHIGG.GE.2) THEN - IKFI=1 - IF(IA.LE.10.AND.MOD(IA,2).EQ.0) IKFI=2 - IF(IA.GT.10) IKFI=3 - HI=HI*PARU(150+10*IHIGG+IKFI)**2 - IF(IMSS(1).NE.0.AND.IA.EQ.5) THEN - HI=HI/(1D0+RMSS(41))**2 - IF(IHIGG.NE.3) THEN - HI=HI*(1D0+RMSS(41)*PARU(152+10*IHIGG)/ - & PARU(151+10*IHIGG))**2 - ENDIF - ENDIF - ENDIF - NCHN=NCHN+1 - ISIG(NCHN,1)=I - ISIG(NCHN,2)=-I - ISIG(NCHN,3)=1 - SIGH(NCHN)=HI*FACBW*HF - 100 CONTINUE - - ELSEIF(ISUB.EQ.5) THEN -C...Z0 + Z0 -> h0 - CALL PYWIDT(25,SH,WDTP,WDTE) - HS=SHR*WDTP(0) - FACBW=4D0*COMFAC/((SH-SQMH)**2+HS**2) - IF(ABS(SHR-PMAS(25,1)).GT.PARP(48)*PMAS(25,2)) FACBW=0D0 - HP=AEM/(8D0*XW)*SH/SQMW*SH - HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4)) - HI=HP/4D0 - FACI=8D0/(PARU(1)**2*XW1)*(AEM*XWC)**2 - DO 120 I=MMIN1,MMAX1 - IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 120 - DO 110 J=MMIN2,MMAX2 - IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 110 - EI=KCHG(IABS(I),1)/3D0 - AI=SIGN(1D0,EI) - VI=AI-4D0*EI*XWV - EJ=KCHG(IABS(J),1)/3D0 - AJ=SIGN(1D0,EJ) - VJ=AJ-4D0*EJ*XWV - NCHN=NCHN+1 - ISIG(NCHN,1)=I - ISIG(NCHN,2)=J - ISIG(NCHN,3)=1 - SIGH(NCHN)=FACI*(VI**2+AI**2)*(VJ**2+AJ**2)*HI*FACBW*HF - 110 CONTINUE - 120 CONTINUE - - ELSEIF(ISUB.EQ.8) THEN -C...W+ + W- -> h0 - CALL PYWIDT(25,SH,WDTP,WDTE) - HS=SHR*WDTP(0) - FACBW=4D0*COMFAC/((SH-SQMH)**2+HS**2) - IF(ABS(SHR-PMAS(25,1)).GT.PARP(48)*PMAS(25,2)) FACBW=0D0 - HP=AEM/(8D0*XW)*SH/SQMW*SH - HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4)) - HI=HP/2D0 - FACI=1D0/(4D0*PARU(1)**2)*(AEM/XW)**2 - DO 140 I=MMIN1,MMAX1 - IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 140 - EI=SIGN(1D0,DBLE(I))*KCHG(IABS(I),1) - DO 130 J=MMIN2,MMAX2 - IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 130 - EJ=SIGN(1D0,DBLE(J))*KCHG(IABS(J),1) - IF(EI*EJ.GT.0D0) GOTO 130 - NCHN=NCHN+1 - ISIG(NCHN,1)=I - ISIG(NCHN,2)=J - ISIG(NCHN,3)=1 - SIGH(NCHN)=FACI*VINT(180+I)*VINT(180+J)*HI*FACBW*HF - 130 CONTINUE - 140 CONTINUE - - ELSEIF(ISUB.EQ.24) THEN -C...f + fbar -> Z0 + h0 (or H0, or A0) -C...Propagators: Z0, h0 as simulated in PYOFSH and as desired - HBW3=GMMZ/((SQM3-SQMZ)**2+GMMZ**2) - CALL PYWIDT(23,SQM3,WDTP,WDTE) - GMMZ3=SQRT(SQM3)*WDTP(0) - HBW3C=GMMZ3/((SQM3-SQMZ)**2+GMMZ3**2) - HBW4=GMMH/((SQM4-SQMH)**2+GMMH**2) - CALL PYWIDT(KFHIGG,SQM4,WDTP,WDTE) - GMMH4=SQRT(SQM4)*WDTP(0) - HBW4C=GMMH4/((SQM4-SQMH)**2+GMMH4**2) - THUH=MAX(TH*UH-SQM3*SQM4,SH*CKIN(3)**2) - FACHZ=COMFAC*(HBW3C/HBW3)*(HBW4C/HBW4)*8D0*(AEM*XWC)**2* - & (THUH+2D0*SH*SQM3)/((SH-SQMZ)**2+GMMZ**2) - FACHZ=FACHZ*WIDS(23,2)*WIDS(KFHIGG,2) - IF(MSTP(4).GE.1.OR.IHIGG.GE.2) FACHZ=FACHZ* - & PARU(154+10*IHIGG)**2 - DO 150 I=MMINA,MMAXA - IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 150 - EI=KCHG(IABS(I),1)/3D0 - AI=SIGN(1D0,EI) - VI=AI-4D0*EI*XWV - FCOI=1D0 - IF(IABS(I).LE.10) FCOI=FACA/3D0 - NCHN=NCHN+1 - ISIG(NCHN,1)=I - ISIG(NCHN,2)=-I - ISIG(NCHN,3)=1 - SIGH(NCHN)=FACHZ*FCOI*(VI**2+AI**2) - 150 CONTINUE - - ELSEIF(ISUB.EQ.26) THEN -C...f + fbar' -> W+/- + h0 (or H0, or A0) -C...Propagators: W+-, h0 as simulated in PYOFSH and as desired - HBW3=GMMW/((SQM3-SQMW)**2+GMMW**2) - CALL PYWIDT(24,SQM3,WDTP,WDTE) - GMMW3=SQRT(SQM3)*WDTP(0) - HBW3C=GMMW3/((SQM3-SQMW)**2+GMMW3**2) - HBW4=GMMH/((SQM4-SQMH)**2+GMMH**2) - CALL PYWIDT(KFHIGG,SQM4,WDTP,WDTE) - GMMH4=SQRT(SQM4)*WDTP(0) - HBW4C=GMMH4/((SQM4-SQMH)**2+GMMH4**2) - THUH=MAX(TH*UH-SQM3*SQM4,SH*CKIN(3)**2) - FACHW=COMFAC*0.125D0*(AEM/XW)**2*(THUH+2D0*SH*SQM3)/ - & ((SH-SQMW)**2+GMMW**2)*(HBW3C/HBW3)*(HBW4C/HBW4) - FACHW=FACHW*WIDS(KFHIGG,2) - IF(MSTP(4).GE.1.OR.IHIGG.GE.2) FACHW=FACHW* - & PARU(155+10*IHIGG)**2 - DO 170 I=MMIN1,MMAX1 - IA=IABS(I) - IF(I.EQ.0.OR.IA.GT.20.OR.KFAC(1,I).EQ.0) GOTO 170 - DO 160 J=MMIN2,MMAX2 - JA=IABS(J) - IF(J.EQ.0.OR.JA.GT.20.OR.KFAC(1,J).EQ.0) GOTO 160 - IF(I*J.GT.0.OR.MOD(IA+JA,2).EQ.0) GOTO 160 - IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10)) - & GOTO 160 - KCHW=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3 - FCKM=1D0 - IF(IA.LE.10) FCKM=VCKM((IA+1)/2,(JA+1)/2) - FCOI=1D0 - IF(IA.LE.10) FCOI=FACA/3D0 - NCHN=NCHN+1 - ISIG(NCHN,1)=I - ISIG(NCHN,2)=J - ISIG(NCHN,3)=1 - SIGH(NCHN)=FACHW*FCOI*FCKM*WIDS(24,(5-KCHW)/2) - 160 CONTINUE - 170 CONTINUE - - ELSEIF(ISUB.EQ.32) THEN -C...f + g -> f + h0 (q + g -> q + h0 only) - FHCQ=COMFAC*FACA*AS*AEM/XW*1D0/24D0 -C...H propagator: as simulated in PYOFSH and as desired - SQMHC=PMAS(25,1)**2 - GMMHC=PMAS(25,1)*PMAS(25,2) - HBW4=GMMHC/((SQM4-SQMHC)**2+GMMHC**2) - CALL PYWIDT(25,SQM4,WDTP,WDTE) - GMMHCC=SQRT(SQM4)*WDTP(0) - HBW4C=GMMHCC/((SQM4-SQMHC)**2+GMMHCC**2) - FHCQ=FHCQ*HBW4C/HBW4 - DO 190 I=MMINA,MMAXA - IA=IABS(I) - IF(IA.NE.5) GOTO 190 - SQML=PYMRUN(IA,SH)**2 - SQMQ=PMAS(IA,1)**2 - FACHCQ=FHCQ*SQML/SQMW* - & (SH/(SQMQ-UH)+2D0*SQMQ*(SQM4-UH)/(SQMQ-UH)**2+(SQMQ-UH)/SH- - & 2D0*SQMQ/(SQMQ-UH)+2D0*(SQM4-UH)/(SQMQ-UH)* - & (SQM4-SQMQ-SH)/SH) - DO 180 ISDE=1,2 - IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 180 - IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 180 - NCHN=NCHN+1 - ISIG(NCHN,ISDE)=I - ISIG(NCHN,3-ISDE)=21 - ISIG(NCHN,3)=1 - SIGH(NCHN)=FACHCQ*WIDS(25,2) - 180 CONTINUE - 190 CONTINUE - ENDIF - - ELSEIF(ISUB.LE.80) THEN - IF(ISUB.EQ.71) THEN -C...Z0 + Z0 -> Z0 + Z0 - IF(SH.LE.4.01D0*SQMZ) GOTO 220 - - IF(MSTP(46).LE.2) THEN -C...Exact scattering ME:s for on-mass-shell gauge bosons - BE2=1D0-4D0*SQMZ/SH - TH=-(0.5D0*SH*BE2*(1D0-CTH)) - UH=-(0.5D0*SH*BE2*(1D0+CTH)) - IF(MAX(TH,UH).GT.-1D0) GOTO 220 - SHANG=1D0/XW1*SQMW/SQMZ*(1D0+BE2)**2 - ASHRE=(SH-SQMH)/((SH-SQMH)**2+GMMH**2)*SHANG - ASHIM=-(GMMH/((SH-SQMH)**2+GMMH**2)*SHANG) - THANG=1D0/XW1*SQMW/SQMZ*(BE2-CTH)**2 - ATHRE=(TH-SQMH)/((TH-SQMH)**2+GMMH**2)*THANG - ATHIM=-(GMMH/((TH-SQMH)**2+GMMH**2)*THANG) - UHANG=1D0/XW1*SQMW/SQMZ*(BE2+CTH)**2 - AUHRE=(UH-SQMH)/((UH-SQMH)**2+GMMH**2)*UHANG - AUHIM=-(GMMH/((UH-SQMH)**2+GMMH**2)*UHANG) - FACZZ=COMFAC*1D0/(4096D0*PARU(1)**2*16D0*XW1**2)* - & (AEM/XW)**4*(SH/SQMW)**2*(SQMZ/SQMW)*SH2 - IF(MSTP(46).LE.0) FACZZ=FACZZ*(ASHRE**2+ASHIM**2) - IF(MSTP(46).EQ.1) FACZZ=FACZZ*((ASHRE+ATHRE+AUHRE)**2+ - & (ASHIM+ATHIM+AUHIM)**2) - IF(MSTP(46).EQ.2) FACZZ=0D0 - - ELSE -C...Strongly interacting Z_L/W_L model of Dobado, Herrero, Terron - FACZZ=COMFAC*(AEM/(16D0*PARU(1)*XW*XW1))**2*(64D0/9D0)* - & ABS(A00U+2D0*A20U)**2 - ENDIF - FACZZ=FACZZ*WIDS(23,1) - - DO 210 I=MMIN1,MMAX1 - IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 210 - EI=KCHG(IABS(I),1)/3D0 - AI=SIGN(1D0,EI) - VI=AI-4D0*EI*XWV - AVI=AI**2+VI**2 - DO 200 J=MMIN2,MMAX2 - IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 200 - EJ=KCHG(IABS(J),1)/3D0 - AJ=SIGN(1D0,EJ) - VJ=AJ-4D0*EJ*XWV - AVJ=AJ**2+VJ**2 - NCHN=NCHN+1 - ISIG(NCHN,1)=I - ISIG(NCHN,2)=J - ISIG(NCHN,3)=1 - SIGH(NCHN)=0.5D0*FACZZ*AVI*AVJ - 200 CONTINUE - 210 CONTINUE - 220 CONTINUE - - ELSEIF(ISUB.EQ.72) THEN -C...Z0 + Z0 -> W+ + W- - IF(SH.LE.4.01D0*SQMZ) GOTO 250 - - IF(MSTP(46).LE.2) THEN -C...Exact scattering ME:s for on-mass-shell gauge bosons - BE2=SQRT((1D0-4D0*SQMW/SH)*(1D0-4D0*SQMZ/SH)) - CTH2=CTH**2 - TH=-(0.5D0*SH*(1D0-2D0*(SQMW+SQMZ)/SH-BE2*CTH)) - UH=-(0.5D0*SH*(1D0-2D0*(SQMW+SQMZ)/SH+BE2*CTH)) - IF(MAX(TH,UH).GT.-1D0) GOTO 250 - SHANG=4D0*SQRT(SQMW/(SQMZ*XW1))*(1D0-2D0*SQMW/SH)* - & (1D0-2D0*SQMZ/SH) - ASHRE=(SH-SQMH)/((SH-SQMH)**2+GMMH**2)*SHANG - ASHIM=-(GMMH/((SH-SQMH)**2+GMMH**2)*SHANG) - ATWRE=XW1/SQMZ*SH/(TH-SQMW)*((CTH-BE2)**2*(3D0/2D0+BE2/2D0* - & CTH-(SQMW+SQMZ)/SH+(SQMW-SQMZ)**2/(SH*SQMW))+4D0* - & ((SQMW+SQMZ)/SH*(1D0-3D0*CTH2)+8D0*SQMW*SQMZ/SH2* - & (2D0*CTH2-1D0)+4D0*(SQMW**2+SQMZ**2)/SH2*CTH2+ - & 2D0*(SQMW+SQMZ)/SH*BE2*CTH)) - ATWIM=0D0 - AUWRE=XW1/SQMZ*SH/(UH-SQMW)*((CTH+BE2)**2*(3D0/2D0-BE2/2D0* - & CTH-(SQMW+SQMZ)/SH+(SQMW-SQMZ)**2/(SH*SQMW))+4D0* - & ((SQMW+SQMZ)/SH*(1D0-3D0*CTH2)+8D0*SQMW*SQMZ/SH2* - & (2D0*CTH2-1D0)+4D0*(SQMW**2+SQMZ**2)/SH2*CTH2- - & 2D0*(SQMW+SQMZ)/SH*BE2*CTH)) - AUWIM=0D0 - A4RE=2D0*XW1/SQMZ*(3D0-CTH2-4D0*(SQMW+SQMZ)/SH) - A4IM=0D0 - FACWW=COMFAC*1D0/(4096D0*PARU(1)**2*16D0*XW1**2)* - & (AEM/XW)**4*(SH/SQMW)**2*(SQMZ/SQMW)*SH2 - IF(MSTP(46).LE.0) FACWW=FACWW*(ASHRE**2+ASHIM**2) - IF(MSTP(46).EQ.1) FACWW=FACWW*((ASHRE+ATWRE+AUWRE+A4RE)**2+ - & (ASHIM+ATWIM+AUWIM+A4IM)**2) - IF(MSTP(46).EQ.2) FACWW=FACWW*((ATWRE+AUWRE+A4RE)**2+ - & (ATWIM+AUWIM+A4IM)**2) - - ELSE -C...Strongly interacting Z_L/W_L model of Dobado, Herrero, Terron - FACWW=COMFAC*(AEM/(16D0*PARU(1)*XW*XW1))**2*(64D0/9D0)* - & ABS(A00U-A20U)**2 - ENDIF - FACWW=FACWW*WIDS(24,1) - - DO 240 I=MMIN1,MMAX1 - IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 240 - EI=KCHG(IABS(I),1)/3D0 - AI=SIGN(1D0,EI) - VI=AI-4D0*EI*XWV - AVI=AI**2+VI**2 - DO 230 J=MMIN2,MMAX2 - IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 230 - EJ=KCHG(IABS(J),1)/3D0 - AJ=SIGN(1D0,EJ) - VJ=AJ-4D0*EJ*XWV - AVJ=AJ**2+VJ**2 - NCHN=NCHN+1 - ISIG(NCHN,1)=I - ISIG(NCHN,2)=J - ISIG(NCHN,3)=1 - SIGH(NCHN)=FACWW*AVI*AVJ - 230 CONTINUE - 240 CONTINUE - 250 CONTINUE - - ELSEIF(ISUB.EQ.73) THEN -C...Z0 + W+/- -> Z0 + W+/- - IF(SH.LE.2D0*SQMZ+2D0*SQMW) GOTO 280 - - IF(MSTP(46).LE.2) THEN -C...Exact scattering ME:s for on-mass-shell gauge bosons - BE2=1D0-2D0*(SQMZ+SQMW)/SH+((SQMZ-SQMW)/SH)**2 - EP1=1D0-(SQMZ-SQMW)/SH - EP2=1D0+(SQMZ-SQMW)/SH - TH=-(0.5D0*SH*BE2*(1D0-CTH)) - UH=(SQMZ-SQMW)**2/SH-0.5D0*SH*BE2*(1D0+CTH) - IF(MAX(TH,UH).GT.-1D0) GOTO 280 - THANG=(BE2-EP1*CTH)*(BE2-EP2*CTH) - ATHRE=(TH-SQMH)/((TH-SQMH)**2+GMMH**2)*THANG - ATHIM=-(GMMH/((TH-SQMH)**2+GMMH**2)*THANG) - ASWRE=-(XW1/SQMZ*SH/(SH-SQMW)*(-(BE2*(EP1+EP2)**4*CTH)+ - & 1D0/4D0*(BE2+EP1*EP2)**2*((EP1-EP2)**2-4D0*BE2*CTH)+ - & 2D0*BE2*(BE2+EP1*EP2)*(EP1+EP2)**2*CTH- - & 1D0/16D0*SH/SQMW*(EP1**2-EP2**2)**2*(BE2+EP1*EP2)**2)) - ASWIM=0D0 - AUWRE=XW1/SQMZ*SH/(UH-SQMW)*(-(BE2*(EP2+EP1*CTH)* - & (EP1+EP2*CTH)*(BE2+EP1*EP2))+BE2*(EP2+EP1*CTH)* - & (BE2+EP1*EP2*CTH)*(2D0*EP2-EP2*CTH+EP1)- - & BE2*(EP2+EP1*CTH)**2*(BE2-EP2**2*CTH)-1D0/8D0* - & (BE2+EP1*EP2*CTH)**2*((EP1+EP2)**2+2D0*BE2*(1D0-CTH))+ - & 1D0/32D0*SH/SQMW*(BE2+EP1*EP2*CTH)**2* - & (EP1**2-EP2**2)**2-BE2*(EP1+EP2*CTH)*(EP2+EP1*CTH)* - & (BE2+EP1*EP2)+BE2*(EP1+EP2*CTH)*(BE2+EP1*EP2*CTH)* - & (2D0*EP1-EP1*CTH+EP2)-BE2*(EP1+EP2*CTH)**2* - & (BE2-EP1**2*CTH)-1D0/8D0*(BE2+EP1*EP2*CTH)**2* - & ((EP1+EP2)**2+2D0*BE2*(1D0-CTH))+1D0/32D0*SH/SQMW* - & (BE2+EP1*EP2*CTH)**2*(EP1**2-EP2**2)**2) - AUWIM=0D0 - A4RE=XW1/SQMZ*(EP1**2*EP2**2*(CTH**2-1D0)- - & 2D0*BE2*(EP1**2+EP2**2+EP1*EP2)*CTH-2D0*BE2*EP1*EP2) - A4IM=0D0 - FACZW=COMFAC*1D0/(4096D0*PARU(1)**2*4D0*XW1)*(AEM/XW)**4* - & (SH/SQMW)**2*SQRT(SQMZ/SQMW)*SH2 - IF(MSTP(46).LE.0) FACZW=0D0 - IF(MSTP(46).EQ.1) FACZW=FACZW*((ATHRE+ASWRE+AUWRE+A4RE)**2+ - & (ATHIM+ASWIM+AUWIM+A4IM)**2) - IF(MSTP(46).EQ.2) FACZW=FACZW*((ASWRE+AUWRE+A4RE)**2+ - & (ASWIM+AUWIM+A4IM)**2) - - ELSE -C...Strongly interacting Z_L/W_L model of Dobado, Herrero, Terron - FACZW=COMFAC*AEM**2/(64D0*PARU(1)**2*XW**2*XW1)*16D0* - & ABS(A20U+3D0*A11U*DBLE(CTH))**2 - ENDIF - FACZW=FACZW*WIDS(23,2) - - DO 270 I=MMIN1,MMAX1 - IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 270 - EI=KCHG(IABS(I),1)/3D0 - AI=SIGN(1D0,EI) - VI=AI-4D0*EI*XWV - AVI=AI**2+VI**2 - KCHWI=ISIGN(1,KCHG(IABS(I),1)*ISIGN(1,I)) - DO 260 J=MMIN2,MMAX2 - IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 260 - EJ=KCHG(IABS(J),1)/3D0 - AJ=SIGN(1D0,EJ) - VJ=AI-4D0*EJ*XWV - AVJ=AJ**2+VJ**2 - KCHWJ=ISIGN(1,KCHG(IABS(J),1)*ISIGN(1,J)) - NCHN=NCHN+1 - ISIG(NCHN,1)=I - ISIG(NCHN,2)=J - ISIG(NCHN,3)=1 - SIGH(NCHN)=FACZW*AVI*VINT(180+J)*WIDS(24,(5-KCHWJ)/2) - NCHN=NCHN+1 - ISIG(NCHN,1)=I - ISIG(NCHN,2)=J - ISIG(NCHN,3)=2 - SIGH(NCHN)=FACZW*VINT(180+I)*WIDS(24,(5-KCHWI)/2)*AVJ - 260 CONTINUE - 270 CONTINUE - 280 CONTINUE - - ELSEIF(ISUB.EQ.75) THEN -C...W+ + W- -> gamma + gamma - - ELSEIF(ISUB.EQ.76) THEN -C...W+ + W- -> Z0 + Z0 - IF(SH.LE.4.01D0*SQMZ) GOTO 310 - - IF(MSTP(46).LE.2) THEN -C...Exact scattering ME:s for on-mass-shell gauge bosons - BE2=SQRT((1D0-4D0*SQMW/SH)*(1D0-4D0*SQMZ/SH)) - CTH2=CTH**2 - TH=-(0.5D0*SH*(1D0-2D0*(SQMW+SQMZ)/SH-BE2*CTH)) - UH=-(0.5D0*SH*(1D0-2D0*(SQMW+SQMZ)/SH+BE2*CTH)) - IF(MAX(TH,UH).GT.-1D0) GOTO 310 - SHANG=4D0*SQRT(SQMW/(SQMZ*XW1))*(1D0-2D0*SQMW/SH)* - & (1D0-2D0*SQMZ/SH) - ASHRE=(SH-SQMH)/((SH-SQMH)**2+GMMH**2)*SHANG - ASHIM=-(GMMH/((SH-SQMH)**2+GMMH**2)*SHANG) - ATWRE=XW1/SQMZ*SH/(TH-SQMW)*((CTH-BE2)**2*(3D0/2D0+BE2/2D0* - & CTH-(SQMW+SQMZ)/SH+(SQMW-SQMZ)**2/(SH*SQMW))+4D0* - & ((SQMW+SQMZ)/SH*(1D0-3D0*CTH2)+8D0*SQMW*SQMZ/SH2* - & (2D0*CTH2-1D0)+4D0*(SQMW**2+SQMZ**2)/SH2*CTH2+ - & 2D0*(SQMW+SQMZ)/SH*BE2*CTH)) - ATWIM=0D0 - AUWRE=XW1/SQMZ*SH/(UH-SQMW)*((CTH+BE2)**2*(3D0/2D0-BE2/2D0* - & CTH-(SQMW+SQMZ)/SH+(SQMW-SQMZ)**2/(SH*SQMW))+4D0* - & ((SQMW+SQMZ)/SH*(1D0-3D0*CTH2)+8D0*SQMW*SQMZ/SH2* - & (2D0*CTH2-1D0)+4D0*(SQMW**2+SQMZ**2)/SH2*CTH2- - & 2D0*(SQMW+SQMZ)/SH*BE2*CTH)) - AUWIM=0D0 - A4RE=2D0*XW1/SQMZ*(3D0-CTH2-4D0*(SQMW+SQMZ)/SH) - A4IM=0D0 - FACZZ=COMFAC*1D0/(4096D0*PARU(1)**2)*(AEM/XW)**4* - & (SH/SQMW)**2*SH2 - IF(MSTP(46).LE.0) FACZZ=FACZZ*(ASHRE**2+ASHIM**2) - IF(MSTP(46).EQ.1) FACZZ=FACZZ*((ASHRE+ATWRE+AUWRE+A4RE)**2+ - & (ASHIM+ATWIM+AUWIM+A4IM)**2) - IF(MSTP(46).EQ.2) FACZZ=FACZZ*((ATWRE+AUWRE+A4RE)**2+ - & (ATWIM+AUWIM+A4IM)**2) - - ELSE -C...Strongly interacting Z_L/W_L model of Dobado, Herrero, Terron - FACZZ=COMFAC*(AEM/(4D0*PARU(1)*XW))**2*(64D0/9D0)* - & ABS(A00U-A20U)**2 - ENDIF - FACZZ=FACZZ*WIDS(23,1) - - DO 300 I=MMIN1,MMAX1 - IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 300 - EI=SIGN(1D0,DBLE(I))*KCHG(IABS(I),1) - DO 290 J=MMIN2,MMAX2 - IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 290 - EJ=SIGN(1D0,DBLE(J))*KCHG(IABS(J),1) - IF(EI*EJ.GT.0D0) GOTO 290 - NCHN=NCHN+1 - ISIG(NCHN,1)=I - ISIG(NCHN,2)=J - ISIG(NCHN,3)=1 - SIGH(NCHN)=0.5D0*FACZZ*VINT(180+I)*VINT(180+J) - 290 CONTINUE - 300 CONTINUE - 310 CONTINUE - - ELSEIF(ISUB.EQ.77) THEN -C...W+/- + W+/- -> W+/- + W+/- - IF(SH.LE.4.01D0*SQMW) GOTO 340 - - IF(MSTP(46).LE.2) THEN -C...Exact scattering ME:s for on-mass-shell gauge bosons - BE2=1D0-4D0*SQMW/SH - BE4=BE2**2 - CTH2=CTH**2 - CTH3=CTH**3 - TH=-(0.5D0*SH*BE2*(1D0-CTH)) - UH=-(0.5D0*SH*BE2*(1D0+CTH)) - IF(MAX(TH,UH).GT.-1D0) GOTO 340 - SHANG=(1D0+BE2)**2 - ASHRE=(SH-SQMH)/((SH-SQMH)**2+GMMH**2)*SHANG - ASHIM=-(GMMH/((SH-SQMH)**2+GMMH**2)*SHANG) - THANG=(BE2-CTH)**2 - ATHRE=(TH-SQMH)/((TH-SQMH)**2+GMMH**2)*THANG - ATHIM=-(GMMH/((TH-SQMH)**2+GMMH**2)*THANG) - UHANG=(BE2+CTH)**2 - AUHRE=(UH-SQMH)/((UH-SQMH)**2+GMMH**2)*UHANG - AUHIM=-(GMMH/((UH-SQMH)**2+GMMH**2)*UHANG) - SGZANG=1D0/SQMW*BE2*(3D0-BE2)**2*CTH - ASGRE=XW*SGZANG - ASGIM=0D0 - ASZRE=XW1*SH/(SH-SQMZ)*SGZANG - ASZIM=0D0 - TGZANG=1D0/SQMW*(BE2*(4D0-2D0*BE2+BE4)+BE2*(4D0-10D0*BE2+ - & BE4)*CTH+(2D0-11D0*BE2+10D0*BE4)*CTH2+BE2*CTH3) - ATGRE=0.5D0*XW*SH/TH*TGZANG - ATGIM=0D0 - ATZRE=0.5D0*XW1*SH/(TH-SQMZ)*TGZANG - ATZIM=0D0 - UGZANG=1D0/SQMW*(BE2*(4D0-2D0*BE2+BE4)-BE2*(4D0-10D0*BE2+ - & BE4)*CTH+(2D0-11D0*BE2+10D0*BE4)*CTH2-BE2*CTH3) - AUGRE=0.5D0*XW*SH/UH*UGZANG - AUGIM=0D0 - AUZRE=0.5D0*XW1*SH/(UH-SQMZ)*UGZANG - AUZIM=0D0 - A4ARE=1D0/SQMW*(1D0+2D0*BE2-6D0*BE2*CTH-CTH2) - A4AIM=0D0 - A4SRE=2D0/SQMW*(1D0+2D0*BE2-CTH2) - A4SIM=0D0 - FWW=COMFAC*1D0/(4096D0*PARU(1)**2)*(AEM/XW)**4* - & (SH/SQMW)**2*SH2 - IF(MSTP(46).LE.0) THEN - AWWARE=ASHRE - AWWAIM=ASHIM - AWWSRE=0D0 - AWWSIM=0D0 - ELSEIF(MSTP(46).EQ.1) THEN - AWWARE=ASHRE+ATHRE+ASGRE+ASZRE+ATGRE+ATZRE+A4ARE - AWWAIM=ASHIM+ATHIM+ASGIM+ASZIM+ATGIM+ATZIM+A4AIM - AWWSRE=-ATHRE-AUHRE+ATGRE+ATZRE+AUGRE+AUZRE+A4SRE - AWWSIM=-ATHIM-AUHIM+ATGIM+ATZIM+AUGIM+AUZIM+A4SIM - ELSE - AWWARE=ASGRE+ASZRE+ATGRE+ATZRE+A4ARE - AWWAIM=ASGIM+ASZIM+ATGIM+ATZIM+A4AIM - AWWSRE=ATGRE+ATZRE+AUGRE+AUZRE+A4SRE - AWWSIM=ATGIM+ATZIM+AUGIM+AUZIM+A4SIM - ENDIF - AWWA2=AWWARE**2+AWWAIM**2 - AWWS2=AWWSRE**2+AWWSIM**2 - - ELSE -C...Strongly interacting Z_L/W_L model of Dobado, Herrero, Terron - FWWA=COMFAC*(AEM/(4D0*PARU(1)*XW))**2*(64D0/9D0)* - & ABS(A00U+0.5D0*A20U+4.5D0*A11U*DBLE(CTH))**2 - FWWS=COMFAC*(AEM/(4D0*PARU(1)*XW))**2*64D0*ABS(A20U)**2 - ENDIF - - DO 330 I=MMIN1,MMAX1 - IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 330 - EI=SIGN(1D0,DBLE(I))*KCHG(IABS(I),1) - DO 320 J=MMIN2,MMAX2 - IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 320 - EJ=SIGN(1D0,DBLE(J))*KCHG(IABS(J),1) - IF(EI*EJ.LT.0D0) THEN -C...W+W- - IF(MSTP(45).EQ.1) GOTO 320 - IF(MSTP(46).LE.2) FACWW=FWW*AWWA2*WIDS(24,1) - IF(MSTP(46).GE.3) FACWW=FWWA*WIDS(24,1) - ELSE -C...W+W+/W-W- - IF(MSTP(45).EQ.2) GOTO 320 - IF(MSTP(46).LE.2) FACWW=FWW*AWWS2 - IF(MSTP(46).GE.3) FACWW=FWWS - IF(EI.GT.0D0) FACWW=FACWW*WIDS(24,4) - IF(EI.LT.0D0) FACWW=FACWW*WIDS(24,5) - ENDIF - NCHN=NCHN+1 - ISIG(NCHN,1)=I - ISIG(NCHN,2)=J - ISIG(NCHN,3)=1 - SIGH(NCHN)=FACWW*VINT(180+I)*VINT(180+J) - IF(EI*EJ.GT.0D0) SIGH(NCHN)=0.5D0*SIGH(NCHN) - 320 CONTINUE - 330 CONTINUE - 340 CONTINUE - ENDIF - - ELSEIF(ISUB.LE.120) THEN - IF(ISUB.EQ.102) THEN -C...g + g -> h0 (or H0, or A0) - CALL PYWIDT(KFHIGG,SH,WDTP,WDTE) - WDTP13=0D0 - DO 345 IDC=MDCY(KFHIGG,2),MDCY(KFHIGG,2)+MDCY(KFHIGG,3)-1 - IF(KFDP(IDC,1).EQ.21.AND.KFDP(IDC,2).EQ.21.AND. - & KFDP(IDC,3).EQ.0) WDTP13=PMAS(KFHIGG,2)*BRAT(IDC) - 345 CONTINUE - IF(WDTP13.EQ.0D0) CALL PYERRM(26, - & '(PYSGHG:) did not find Higgs -> g g channel') - HS=SHR*WDTP(0) - HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4)) - FACBW=4D0*COMFAC/((SH-SQMH)**2+HS**2) - IF(ABS(SHR-PMAS(KFHIGG,1)).GT.PARP(48)*PMAS(KFHIGG,2)) - & FACBW=0D0 - HI=SHR*WDTP13/32D0 - IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 350 - NCHN=NCHN+1 - ISIG(NCHN,1)=21 - ISIG(NCHN,2)=21 - ISIG(NCHN,3)=1 - SIGH(NCHN)=HI*FACBW*HF - 350 CONTINUE - - ELSEIF(ISUB.EQ.103) THEN -C...gamma + gamma -> h0 (or H0, or A0) - CALL PYWIDT(KFHIGG,SH,WDTP,WDTE) - WDTP14=0D0 - DO 355 IDC=MDCY(KFHIGG,2),MDCY(KFHIGG,2)+MDCY(KFHIGG,3)-1 - IF(KFDP(IDC,1).EQ.22.AND.KFDP(IDC,2).EQ.22.AND. - & KFDP(IDC,3).EQ.0) WDTP14=PMAS(KFHIGG,2)*BRAT(IDC) - 355 CONTINUE - IF(WDTP14.EQ.0D0) CALL PYERRM(26, - & '(PYSGHG:) did not find Higgs -> gamma gamma channel') - HS=SHR*WDTP(0) - HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4)) - FACBW=4D0*COMFAC/((SH-SQMH)**2+HS**2) - IF(ABS(SHR-PMAS(KFHIGG,1)).GT.PARP(48)*PMAS(KFHIGG,2)) - & FACBW=0D0 - HI=SHR*WDTP14*2D0 - IF(KFAC(1,22)*KFAC(2,22).EQ.0) GOTO 360 - NCHN=NCHN+1 - ISIG(NCHN,1)=22 - ISIG(NCHN,2)=22 - ISIG(NCHN,3)=1 - SIGH(NCHN)=HI*FACBW*HF - 360 CONTINUE - - ELSEIF(ISUB.EQ.110) THEN -C...f + fbar -> gamma + h0 - THUH=MAX(TH*UH,SH*CKIN(3)**2) - FACHG=COMFAC*(3D0*AEM**4)/(2D0*PARU(1)**2*XW*SQMW)*SH*THUH - FACHG=FACHG*WIDS(KFHIGG,2) -C...Calculate loop contributions for intermediate gamma* and Z0 - CIGTOT=DCMPLX(0D0,0D0) - CIZTOT=DCMPLX(0D0,0D0) - JMAX=3*MSTP(1)+1 - DO 370 J=1,JMAX - IF(J.LE.2*MSTP(1)) THEN - FNC=1D0 - EJ=KCHG(J,1)/3D0 - AJ=SIGN(1D0,EJ+0.1D0) - VJ=AJ-4D0*EJ*XWV - BALP=SQM4/(2D0*PMAS(J,1))**2 - BBET=SH/(2D0*PMAS(J,1))**2 - ELSEIF(J.LE.3*MSTP(1)) THEN - FNC=3D0 - JL=2*(J-2*MSTP(1))-1 - EJ=KCHG(10+JL,1)/3D0 - AJ=SIGN(1D0,EJ+0.1D0) - VJ=AJ-4D0*EJ*XWV - BALP=SQM4/(2D0*PMAS(10+JL,1))**2 - BBET=SH/(2D0*PMAS(10+JL,1))**2 - ELSE - BALP=SQM4/(2D0*PMAS(24,1))**2 - BBET=SH/(2D0*PMAS(24,1))**2 - ENDIF - BABI=1D0/(BALP-BBET) - IF(BALP.LT.1D0) THEN - F0ALP=DCMPLX(DBLE(ASIN(SQRT(BALP))),0D0) - F1ALP=F0ALP**2 - ELSE - F0ALP=DCMPLX(DBLE(LOG(SQRT(BALP)+SQRT(BALP-1D0))), - & -DBLE(0.5D0*PARU(1))) - F1ALP=-(F0ALP**2) - ENDIF - F2ALP=DBLE(SQRT(ABS(BALP-1D0)/BALP))*F0ALP - IF(BBET.LT.1D0) THEN - F0BET=DCMPLX(DBLE(ASIN(SQRT(BBET))),0D0) - F1BET=F0BET**2 - ELSE - F0BET=DCMPLX(DBLE(LOG(SQRT(BBET)+SQRT(BBET-1D0))), - & -DBLE(0.5D0*PARU(1))) - F1BET=-(F0BET**2) - ENDIF - F2BET=DBLE(SQRT(ABS(BBET-1D0)/BBET))*F0BET - IF(J.LE.3*MSTP(1)) THEN - FIF=DBLE(0.5D0*BABI)+DBLE(BABI**2)*(DBLE(0.5D0*(1D0-BALP+ - & BBET))*(F1BET-F1ALP)+DBLE(BBET)*(F2BET-F2ALP)) - CIGTOT=CIGTOT+DBLE(FNC*EJ**2)*FIF - CIZTOT=CIZTOT+DBLE(FNC*EJ*VJ)*FIF - ELSE - TXW=XW/XW1 - CIGTOT=CIGTOT-0.5*(DBLE(BABI*(1.5D0+BALP))+DBLE(BABI**2)* - & (DBLE(1.5D0-3D0*BALP+4D0*BBET)*(F1BET-F1ALP)+ - & DBLE(BBET*(2D0*BALP+3D0))*(F2BET-F2ALP))) - CIZTOT=CIZTOT-DBLE(0.5D0*BABI*XW1)*(DBLE(5D0-TXW+2D0*BALP* - & (1D0-TXW))*(1D0+DBLE(2D0*BABI*BBET)*(F2BET-F2ALP))+ - & DBLE(BABI*(4D0*BBET*(3D0-TXW)-(2D0*BALP-1D0)*(5D0-TXW)))* - & (F1BET-F1ALP)) - ENDIF - 370 CONTINUE - CIGTOT=CIGTOT/DBLE(SH) - CIZTOT=CIZTOT*DBLE(XWC)/DCMPLX(DBLE(SH-SQMZ),DBLE(GMMZ)) -C...Loop over initial flavours - DO 380 I=MMINA,MMAXA - IF(I.EQ.0.OR.KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 380 - EI=KCHG(IABS(I),1)/3D0 - AI=SIGN(1D0,EI) - VI=AI-4D0*EI*XWV - FCOI=1D0 - IF(IABS(I).LE.10) FCOI=FACA/3D0 - NCHN=NCHN+1 - ISIG(NCHN,1)=I - ISIG(NCHN,2)=-I - ISIG(NCHN,3)=1 - SIGH(NCHN)=FACHG*FCOI*(ABS(DBLE(EI)*CIGTOT+DBLE(VI)* - & CIZTOT)**2+AI**2*ABS(CIZTOT)**2) - 380 CONTINUE - - ELSEIF(ISUB.EQ.111) THEN -C...f + fbar -> g + h0 (q + qbar -> g + h0 only) - IF(MSTP(38).NE.0) THEN -C...Simple case: only do gg <-> h exactly. - CALL PYWIDT(KFHIGG,SQM4,WDTP,WDTE) - WDTP13=0D0 - DO 385 IDC=MDCY(KFHIGG,2),MDCY(KFHIGG,2)+MDCY(KFHIGG,3)-1 - IF(KFDP(IDC,1).EQ.21.AND.KFDP(IDC,2).EQ.21.AND. - & KFDP(IDC,3).EQ.0) WDTP13=PMAS(KFHIGG,2)*BRAT(IDC) - 385 CONTINUE - IF(WDTP13.EQ.0D0) CALL PYERRM(26, - & '(PYSGHG:) did not find Higgs -> g g channel') - FACGH=COMFAC*FACA*(2D0/9D0)*AS*(WDTP13/SQRT(SQM4))* - & (TH**2+UH**2)/(SH*SQM4) -C...Propagators: as simulated in PYOFSH and as desired - HBW4=GMMH/((SQM4-SQMH)**2+GMMH**2) - GMMHC=SQRT(SQM4)*WDTP(0) - HBW4C=SQRT(SQM4)*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))/ - & ((SQM4-SQMH)**2+GMMHC**2) - FACGH=FACGH*HBW4C/HBW4 - ELSE -C...Messy case: do full loop integrals - A5STUR=0D0 - A5STUI=0D0 - DO 390 I=1,2*MSTP(1) - SQMQ=PMAS(I,1)**2 - EPSS=4D0*SQMQ/SH - EPSH=4D0*SQMQ/SQMH - CALL PYWAUX(1,EPSS,W1SR,W1SI) - CALL PYWAUX(1,EPSH,W1HR,W1HI) - CALL PYWAUX(2,EPSS,W2SR,W2SI) - CALL PYWAUX(2,EPSH,W2HR,W2HI) - A5STUR=A5STUR+EPSH*(1D0+SH/(TH+UH)*(W1SR-W1HR)+ - & (0.25D0-SQMQ/(TH+UH))*(W2SR-W2HR)) - A5STUI=A5STUI+EPSH*(SH/(TH+UH)*(W1SI-W1HI)+ - & (0.25D0-SQMQ/(TH+UH))*(W2SI-W2HI)) - 390 CONTINUE - FACGH=COMFAC*FACA/(144D0*PARU(1)**2)*AEM/XW*AS**3*SQMH/SQMW* - & SQMH/SH*(UH**2+TH**2)/(UH+TH)**2*(A5STUR**2+A5STUI**2) - FACGH=FACGH*WIDS(25,2) - ENDIF - DO 400 I=MMINA,MMAXA - IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR. - & KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 400 - NCHN=NCHN+1 - ISIG(NCHN,1)=I - ISIG(NCHN,2)=-I - ISIG(NCHN,3)=1 - SIGH(NCHN)=FACGH - 400 CONTINUE - - ELSEIF(ISUB.EQ.112) THEN -C...f + g -> f + h0 (q + g -> q + h0 only) - IF(MSTP(38).NE.0) THEN -C...Simple case: only do gg <-> h exactly. - CALL PYWIDT(KFHIGG,SQM4,WDTP,WDTE) - WDTP13=0D0 - DO 405 IDC=MDCY(KFHIGG,2),MDCY(KFHIGG,2)+MDCY(KFHIGG,3)-1 - IF(KFDP(IDC,1).EQ.21.AND.KFDP(IDC,2).EQ.21.AND. - & KFDP(IDC,3).EQ.0) WDTP13=PMAS(KFHIGG,2)*BRAT(IDC) - 405 CONTINUE - IF(WDTP13.EQ.0D0) CALL PYERRM(26, - & '(PYSGHG:) did not find Higgs -> g g channel') - FACQH=COMFAC*FACA*(1D0/12D0)*AS*(WDTP13/SQRT(SQM4))* - & (SH**2+UH**2)/(-(TH*SQM4)) -C...Propagators: as simulated in PYOFSH and as desired - HBW4=GMMH/((SQM4-SQMH)**2+GMMH**2) - GMMHC=SQRT(SQM4)*WDTP(0) - HBW4C=SQRT(SQM4)*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))/ - & ((SQM4-SQMH)**2+GMMHC**2) - FACQH=FACQH*HBW4C/HBW4 - ELSE -C...Messy case: do full loop integrals - A5TSUR=0D0 - A5TSUI=0D0 - DO 410 I=1,2*MSTP(1) - SQMQ=PMAS(I,1)**2 - EPST=4D0*SQMQ/TH - EPSH=4D0*SQMQ/SQMH - CALL PYWAUX(1,EPST,W1TR,W1TI) - CALL PYWAUX(1,EPSH,W1HR,W1HI) - CALL PYWAUX(2,EPST,W2TR,W2TI) - CALL PYWAUX(2,EPSH,W2HR,W2HI) - A5TSUR=A5TSUR+EPSH*(1D0+TH/(SH+UH)*(W1TR-W1HR)+ - & (0.25D0-SQMQ/(SH+UH))*(W2TR-W2HR)) - A5TSUI=A5TSUI+EPSH*(TH/(SH+UH)*(W1TI-W1HI)+ - & (0.25D0-SQMQ/(SH+UH))*(W2TI-W2HI)) - 410 CONTINUE - FACQH=COMFAC*FACA/(384D0*PARU(1)**2)*AEM/XW*AS**3*SQMH/SQMW* - & SQMH/(-TH)*(UH**2+SH**2)/(UH+SH)**2*(A5TSUR**2+A5TSUI**2) - FACQH=FACQH*WIDS(25,2) - ENDIF - DO 430 I=MMINA,MMAXA - IF(I.EQ.0.OR.IABS(I).GT.MSTP(58)) GOTO 430 - DO 420 ISDE=1,2 - IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 420 - IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 420 - NCHN=NCHN+1 - ISIG(NCHN,ISDE)=I - ISIG(NCHN,3-ISDE)=21 - ISIG(NCHN,3)=1 - SIGH(NCHN)=FACQH - 420 CONTINUE - 430 CONTINUE - - ELSEIF(ISUB.EQ.113) THEN -C...g + g -> g + h0 - IF(MSTP(38).NE.0) THEN -C...Simple case: only do gg <-> h exactly. - CALL PYWIDT(KFHIGG,SQM4,WDTP,WDTE) - WDTP13=0D0 - DO 435 IDC=MDCY(KFHIGG,2),MDCY(KFHIGG,2)+MDCY(KFHIGG,3)-1 - IF(KFDP(IDC,1).EQ.21.AND.KFDP(IDC,2).EQ.21.AND. - & KFDP(IDC,3).EQ.0) WDTP13=PMAS(KFHIGG,2)*BRAT(IDC) - 435 CONTINUE - IF(WDTP13.EQ.0D0) CALL PYERRM(26, - & '(PYSGHG:) did not find Higgs -> g g channel') - FACGH=COMFAC*FACA*(3D0/16D0)*AS*(WDTP13/SQRT(SQM4))* - & (SH**4+TH**4+UH**4+SQM4**4)/(SH*TH*UH*SQM4) -C...Propagators: as simulated in PYOFSH and as desired - HBW4=GMMH/((SQM4-SQMH)**2+GMMH**2) - GMMHC=SQRT(SQM4)*WDTP(0) - HBW4C=SQRT(SQM4)*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4))/ - & ((SQM4-SQMH)**2+GMMHC**2) - FACGH=FACGH*HBW4C/HBW4 - ELSE -C...Messy case: do full loop integrals - A2STUR=0D0 - A2STUI=0D0 - A2USTR=0D0 - A2USTI=0D0 - A2TUSR=0D0 - A2TUSI=0D0 - A4STUR=0D0 - A4STUI=0D0 - DO 440 I=1,2*MSTP(1) - SQMQ=PMAS(I,1)**2 - EPSS=4D0*SQMQ/SH - EPST=4D0*SQMQ/TH - EPSU=4D0*SQMQ/UH - EPSH=4D0*SQMQ/SQMH - IF(EPSH.LT.1D-6) GOTO 440 - CALL PYWAUX(1,EPSS,W1SR,W1SI) - CALL PYWAUX(1,EPST,W1TR,W1TI) - CALL PYWAUX(1,EPSU,W1UR,W1UI) - CALL PYWAUX(1,EPSH,W1HR,W1HI) - CALL PYWAUX(2,EPSS,W2SR,W2SI) - CALL PYWAUX(2,EPST,W2TR,W2TI) - CALL PYWAUX(2,EPSU,W2UR,W2UI) - CALL PYWAUX(2,EPSH,W2HR,W2HI) - CALL PYI3AU(EPSS,TH/UH,Y3STUR,Y3STUI) - CALL PYI3AU(EPSS,UH/TH,Y3SUTR,Y3SUTI) - CALL PYI3AU(EPST,SH/UH,Y3TSUR,Y3TSUI) - CALL PYI3AU(EPST,UH/SH,Y3TUSR,Y3TUSI) - CALL PYI3AU(EPSU,SH/TH,Y3USTR,Y3USTI) - CALL PYI3AU(EPSU,TH/SH,Y3UTSR,Y3UTSI) - CALL PYI3AU(EPSH,SQMH/SH*TH/UH,YHSTUR,YHSTUI) - CALL PYI3AU(EPSH,SQMH/SH*UH/TH,YHSUTR,YHSUTI) - CALL PYI3AU(EPSH,SQMH/TH*SH/UH,YHTSUR,YHTSUI) - CALL PYI3AU(EPSH,SQMH/TH*UH/SH,YHTUSR,YHTUSI) - CALL PYI3AU(EPSH,SQMH/UH*SH/TH,YHUSTR,YHUSTI) - CALL PYI3AU(EPSH,SQMH/UH*TH/SH,YHUTSR,YHUTSI) - W3STUR=YHSTUR-Y3STUR-Y3UTSR - W3STUI=YHSTUI-Y3STUI-Y3UTSI - W3SUTR=YHSUTR-Y3SUTR-Y3TUSR - W3SUTI=YHSUTI-Y3SUTI-Y3TUSI - W3TSUR=YHTSUR-Y3TSUR-Y3USTR - W3TSUI=YHTSUI-Y3TSUI-Y3USTI - W3TUSR=YHTUSR-Y3TUSR-Y3SUTR - W3TUSI=YHTUSI-Y3TUSI-Y3SUTI - W3USTR=YHUSTR-Y3USTR-Y3TSUR - W3USTI=YHUSTI-Y3USTI-Y3TSUI - W3UTSR=YHUTSR-Y3UTSR-Y3STUR - W3UTSI=YHUTSI-Y3UTSI-Y3STUI - B2STUR=SQMQ/SQMH**2*(SH*(UH-SH)/(SH+UH)+2D0*TH*UH* - & (UH+2D0*SH)/(SH+UH)**2*(W1TR-W1HR)+(SQMQ-SH/4D0)* - & (0.5D0*W2SR+0.5D0*W2HR-W2TR+W3STUR)+SH2*(2D0*SQMQ/ - & (SH+UH)**2-0.5D0/(SH+UH))*(W2TR-W2HR)+0.5D0*TH*UH/SH* - & (W2HR-2D0*W2TR)+0.125D0*(SH-12D0*SQMQ-4D0*TH*UH/SH)*W3TSUR) - B2STUI=SQMQ/SQMH**2*(2D0*TH*UH*(UH+2D0*SH)/(SH+UH)**2* - & (W1TI-W1HI)+(SQMQ-SH/4D0)*(0.5D0*W2SI+0.5D0*W2HI-W2TI+ - & W3STUI)+SH2*(2D0*SQMQ/(SH+UH)**2-0.5D0/(SH+UH))* - & (W2TI-W2HI)+0.5D0*TH*UH/SH*(W2HI-2D0*W2TI)+0.125D0* - & (SH-12D0*SQMQ-4D0*TH*UH/SH)*W3TSUI) - B2SUTR=SQMQ/SQMH**2*(SH*(TH-SH)/(SH+TH)+2D0*UH*TH* - & (TH+2D0*SH)/(SH+TH)**2*(W1UR-W1HR)+(SQMQ-SH/4D0)* - & (0.5D0*W2SR+0.5D0*W2HR-W2UR+W3SUTR)+SH2*(2D0*SQMQ/ - & (SH+TH)**2-0.5D0/(SH+TH))*(W2UR-W2HR)+0.5D0*UH*TH/SH* - & (W2HR-2D0*W2UR)+0.125D0*(SH-12D0*SQMQ-4D0*UH*TH/SH)*W3USTR) - B2SUTI=SQMQ/SQMH**2*(2D0*UH*TH*(TH+2D0*SH)/(SH+TH)**2* - & (W1UI-W1HI)+(SQMQ-SH/4D0)*(0.5D0*W2SI+0.5D0*W2HI-W2UI+ - & W3SUTI)+SH2*(2D0*SQMQ/(SH+TH)**2-0.5D0/(SH+TH))* - & (W2UI-W2HI)+0.5D0*UH*TH/SH*(W2HI-2D0*W2UI)+0.125D0* - & (SH-12D0*SQMQ-4D0*UH*TH/SH)*W3USTI) - B2TSUR=SQMQ/SQMH**2*(TH*(UH-TH)/(TH+UH)+2D0*SH*UH* - & (UH+2D0*TH)/(TH+UH)**2*(W1SR-W1HR)+(SQMQ-TH/4D0)* - & (0.5D0*W2TR+0.5D0*W2HR-W2SR+W3TSUR)+TH2*(2D0*SQMQ/ - & (TH+UH)**2-0.5D0/(TH+UH))*(W2SR-W2HR)+0.5D0*SH*UH/TH* - & (W2HR-2D0*W2SR)+0.125D0*(TH-12D0*SQMQ-4D0*SH*UH/TH)*W3STUR) - B2TSUI=SQMQ/SQMH**2*(2D0*SH*UH*(UH+2D0*TH)/(TH+UH)**2* - & (W1SI-W1HI)+(SQMQ-TH/4D0)*(0.5D0*W2TI+0.5D0*W2HI-W2SI+ - & W3TSUI)+TH2*(2D0*SQMQ/(TH+UH)**2-0.5D0/(TH+UH))* - & (W2SI-W2HI)+0.5D0*SH*UH/TH*(W2HI-2D0*W2SI)+0.125D0* - & (TH-12D0*SQMQ-4D0*SH*UH/TH)*W3STUI) - B2TUSR=SQMQ/SQMH**2*(TH*(SH-TH)/(TH+SH)+2D0*UH*SH* - & (SH+2D0*TH)/(TH+SH)**2*(W1UR-W1HR)+(SQMQ-TH/4D0)* - & (0.5D0*W2TR+0.5D0*W2HR-W2UR+W3TUSR)+TH2*(2D0*SQMQ/ - & (TH+SH)**2-0.5D0/(TH+SH))*(W2UR-W2HR)+0.5D0*UH*SH/TH* - & (W2HR-2D0*W2UR)+0.125D0*(TH-12D0*SQMQ-4D0*UH*SH/TH)*W3UTSR) - B2TUSI=SQMQ/SQMH**2*(2D0*UH*SH*(SH+2D0*TH)/(TH+SH)**2* - & (W1UI-W1HI)+(SQMQ-TH/4D0)*(0.5D0*W2TI+0.5D0*W2HI-W2UI+ - & W3TUSI)+TH2*(2D0*SQMQ/(TH+SH)**2-0.5D0/(TH+SH))* - & (W2UI-W2HI)+0.5D0*UH*SH/TH*(W2HI-2D0*W2UI)+0.125D0* - & (TH-12D0*SQMQ-4D0*UH*SH/TH)*W3UTSI) - B2USTR=SQMQ/SQMH**2*(UH*(TH-UH)/(UH+TH)+2D0*SH*TH* - & (TH+2D0*UH)/(UH+TH)**2*(W1SR-W1HR)+(SQMQ-UH/4D0)* - & (0.5D0*W2UR+0.5D0*W2HR-W2SR+W3USTR)+UH2*(2D0*SQMQ/ - & (UH+TH)**2-0.5D0/(UH+TH))*(W2SR-W2HR)+0.5D0*SH*TH/UH* - & (W2HR-2D0*W2SR)+0.125D0*(UH-12D0*SQMQ-4D0*SH*TH/UH)*W3SUTR) - B2USTI=SQMQ/SQMH**2*(2D0*SH*TH*(TH+2D0*UH)/(UH+TH)**2* - & (W1SI-W1HI)+(SQMQ-UH/4D0)*(0.5D0*W2UI+0.5D0*W2HI-W2SI+ - & W3USTI)+UH2*(2D0*SQMQ/(UH+TH)**2-0.5D0/(UH+TH))* - & (W2SI-W2HI)+0.5D0*SH*TH/UH*(W2HI-2D0*W2SI)+0.125D0* - & (UH-12D0*SQMQ-4D0*SH*TH/UH)*W3SUTI) - B2UTSR=SQMQ/SQMH**2*(UH*(SH-UH)/(UH+SH)+2D0*TH*SH* - & (SH+2D0*UH)/(UH+SH)**2*(W1TR-W1HR)+(SQMQ-UH/4D0)* - & (0.5D0*W2UR+0.5D0*W2HR-W2TR+W3UTSR)+UH2*(2D0*SQMQ/ - & (UH+SH)**2-0.5D0/(UH+SH))*(W2TR-W2HR)+0.5D0*TH*SH/UH* - & (W2HR-2D0*W2TR)+0.125D0*(UH-12D0*SQMQ-4D0*TH*SH/UH)*W3TUSR) - B2UTSI=SQMQ/SQMH**2*(2D0*TH*SH*(SH+2D0*UH)/(UH+SH)**2* - & (W1TI-W1HI)+(SQMQ-UH/4D0)*(0.5D0*W2UI+0.5D0*W2HI-W2TI+ - & W3UTSI)+UH2*(2D0*SQMQ/(UH+SH)**2-0.5D0/(UH+SH))* - & (W2TI-W2HI)+0.5D0*TH*SH/UH*(W2HI-2D0*W2TI)+0.125D0* - & (UH-12D0*SQMQ-4D0*TH*SH/UH)*W3TUSI) - B4STUR=0.25D0*EPSH*(-(2D0/3D0)+0.25D0*(EPSH-1D0)* - & (W2SR-W2HR+W3STUR)) - B4STUI=0.25D0*EPSH*0.25D0*(EPSH-1D0)*(W2SI-W2HI+W3STUI) - B4TUSR=0.25D0*EPSH*(-(2D0/3D0)+0.25D0*(EPSH-1D0)* - & (W2TR-W2HR+W3TUSR)) - B4TUSI=0.25D0*EPSH*0.25D0*(EPSH-1D0)*(W2TI-W2HI+W3TUSI) - B4USTR=0.25D0*EPSH*(-(2D0/3D0)+0.25D0*(EPSH-1D0)* - & (W2UR-W2HR+W3USTR)) - B4USTI=0.25D0*EPSH*0.25D0*(EPSH-1D0)*(W2UI-W2HI+W3USTI) - A2STUR=A2STUR+B2STUR+B2SUTR - A2STUI=A2STUI+B2STUI+B2SUTI - A2USTR=A2USTR+B2USTR+B2UTSR - A2USTI=A2USTI+B2USTI+B2UTSI - A2TUSR=A2TUSR+B2TUSR+B2TSUR - A2TUSI=A2TUSI+B2TUSI+B2TSUI - A4STUR=A4STUR+B4STUR+B4USTR+B4TUSR - A4STUI=A4STUI+B4STUI+B4USTI+B4TUSI - 440 CONTINUE - FACGH=COMFAC*FACA*3D0/(128D0*PARU(1)**2)*AEM/XW*AS**3* - & SQMH/SQMW*SQMH**3/(SH*TH*UH)*(A2STUR**2+A2STUI**2+A2USTR**2+ - & A2USTI**2+A2TUSR**2+A2TUSI**2+A4STUR**2+A4STUI**2) - FACGH=FACGH*WIDS(25,2) - ENDIF - IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 450 - NCHN=NCHN+1 - ISIG(NCHN,1)=21 - ISIG(NCHN,2)=21 - ISIG(NCHN,3)=1 - SIGH(NCHN)=FACGH - 450 CONTINUE - ENDIF - - ELSEIF(ISUB.LE.170) THEN - IF(ISUB.EQ.121) THEN -C...g + g -> Q + Qbar + h0 - IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 460 - IA=KFPR(ISUBSV,2) - PMF=PYMRUN(IA,SH) - FACQQH=COMFAC*(4D0*PARU(1)*AEM/XW)*(4D0*PARU(1)*AS)**2* - & (0.5D0*PMF/PMAS(24,1))**2 - WID2=1D0 - IF(IA.EQ.6.OR.IA.EQ.7.OR.IA.EQ.8) WID2=WIDS(IA,1) - FACQQH=FACQQH*WID2 - IF(MSTP(4).GE.1.OR.IHIGG.GE.2) THEN - IKFI=1 - IF(IA.LE.10.AND.MOD(IA,2).EQ.0) IKFI=2 - IF(IA.GT.10) IKFI=3 - FACQQH=FACQQH*PARU(150+10*IHIGG+IKFI)**2 - IF(IMSS(1).NE.0.AND.IA.EQ.5) THEN - FACQQH=FACQQH/(1D0+RMSS(41))**2 - IF(IHIGG.NE.3) THEN - FACQQH=FACQQH*(1D0+RMSS(41)*PARU(152+10*IHIGG)/ - & PARU(151+10*IHIGG))**2 - ENDIF - ENDIF - ENDIF - CALL PYQQBH(WTQQBH) - CALL PYWIDT(KFHIGG,SH,WDTP,WDTE) - HS=SHR*WDTP(0) - HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4)) - FACBW=(1D0/PARU(1))*VINT(2)*HF/((SH-SQMH)**2+HS**2) - IF(ABS(SHR-PMAS(KFHIGG,1)).GT.PARP(48)*PMAS(KFHIGG,2)) - & FACBW=0D0 - NCHN=NCHN+1 - ISIG(NCHN,1)=21 - ISIG(NCHN,2)=21 - ISIG(NCHN,3)=1 - SIGH(NCHN)=FACQQH*WTQQBH*FACBW - 460 CONTINUE - - ELSEIF(ISUB.EQ.122) THEN -C...q + qbar -> Q + Qbar + h0 - IA=KFPR(ISUBSV,2) - PMF=PYMRUN(IA,SH) - FACQQH=COMFAC*(4D0*PARU(1)*AEM/XW)*(4D0*PARU(1)*AS)**2* - & (0.5D0*PMF/PMAS(24,1))**2 - WID2=1D0 - IF(IA.EQ.6.OR.IA.EQ.7.OR.IA.EQ.8) WID2=WIDS(IA,1) - FACQQH=FACQQH*WID2 - IF(MSTP(4).GE.1.OR.IHIGG.GE.2) THEN - IKFI=1 - IF(IA.LE.10.AND.MOD(IA,2).EQ.0) IKFI=2 - IF(IA.GT.10) IKFI=3 - FACQQH=FACQQH*PARU(150+10*IHIGG+IKFI)**2 - IF(IMSS(1).NE.0.AND.IA.EQ.5) THEN - FACQQH=FACQQH/(1D0+RMSS(41))**2 - IF(IHIGG.NE.3) THEN - FACQQH=FACQQH*(1D0+RMSS(41)*PARU(152+10*IHIGG)/ - & PARU(151+10*IHIGG))**2 - ENDIF - ENDIF - ENDIF - CALL PYQQBH(WTQQBH) - CALL PYWIDT(KFHIGG,SH,WDTP,WDTE) - HS=SHR*WDTP(0) - HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4)) - FACBW=(1D0/PARU(1))*VINT(2)*HF/((SH-SQMH)**2+HS**2) - IF(ABS(SHR-PMAS(KFHIGG,1)).GT.PARP(48)*PMAS(KFHIGG,2)) - & FACBW=0D0 - DO 470 I=MMINA,MMAXA - IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR. - & KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 470 - NCHN=NCHN+1 - ISIG(NCHN,1)=I - ISIG(NCHN,2)=-I - ISIG(NCHN,3)=1 - SIGH(NCHN)=FACQQH*WTQQBH*FACBW - 470 CONTINUE - - ELSEIF(ISUB.EQ.123) THEN -C...f + f' -> f + f' + h0 (or H0, or A0) (Z0 + Z0 -> h0 as -C...inner process) - FACNOR=COMFAC*(4D0*PARU(1)*AEM/(XW*XW1))**3*SQMZ/32D0 - IF(MSTP(4).GE.1.OR.IHIGG.GE.2) FACNOR=FACNOR* - & PARU(154+10*IHIGG)**2 - FACPRP=1D0/((VINT(215)-VINT(204)**2)* - & (VINT(216)-VINT(209)**2))**2 - FACZZ1=FACNOR*FACPRP*(0.5D0*TAUP*VINT(2))*VINT(219) - FACZZ2=FACNOR*FACPRP*VINT(217)*VINT(218) - CALL PYWIDT(KFHIGG,SH,WDTP,WDTE) - HS=SHR*WDTP(0) - HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4)) - FACBW=(1D0/PARU(1))*VINT(2)*HF/((SH-SQMH)**2+HS**2) - IF(ABS(SHR-PMAS(KFHIGG,1)).GT.PARP(48)*PMAS(KFHIGG,2)) - & FACBW=0D0 - DO 490 I=MMIN1,MMAX1 - IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 490 - IA=IABS(I) - DO 480 J=MMIN2,MMAX2 - IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 480 - JA=IABS(J) - EI=KCHG(IA,1)*ISIGN(1,I)/3D0 - AI=SIGN(1D0,KCHG(IA,1)+0.5D0)*ISIGN(1,I) - VI=AI-4D0*EI*XWV - EJ=KCHG(JA,1)*ISIGN(1,J)/3D0 - AJ=SIGN(1D0,KCHG(JA,1)+0.5D0)*ISIGN(1,J) - VJ=AJ-4D0*EJ*XWV - FACLR1=(VI**2+AI**2)*(VJ**2+AJ**2)+4D0*VI*AI*VJ*AJ - FACLR2=(VI**2+AI**2)*(VJ**2+AJ**2)-4D0*VI*AI*VJ*AJ - NCHN=NCHN+1 - ISIG(NCHN,1)=I - ISIG(NCHN,2)=J - ISIG(NCHN,3)=1 - SIGH(NCHN)=(FACLR1*FACZZ1+FACLR2*FACZZ2)*FACBW - 480 CONTINUE - 490 CONTINUE - - ELSEIF(ISUB.EQ.124) THEN -C...f + f' -> f" + f"' + h0 (or H0, or A0) (W+ + W- -> h0 as -C...inner process) - FACNOR=COMFAC*(4D0*PARU(1)*AEM/XW)**3*SQMW - IF(MSTP(4).GE.1.OR.IHIGG.GE.2) FACNOR=FACNOR* - & PARU(155+10*IHIGG)**2 - FACPRP=1D0/((VINT(215)-VINT(204)**2)* - & (VINT(216)-VINT(209)**2))**2 - FACWW=FACNOR*FACPRP*(0.5D0*TAUP*VINT(2))*VINT(219) - CALL PYWIDT(KFHIGG,SH,WDTP,WDTE) - HS=SHR*WDTP(0) - HF=SHR*(WDTE(0,1)+WDTE(0,2)+WDTE(0,4)) - FACBW=(1D0/PARU(1))*VINT(2)*HF/((SH-SQMH)**2+HS**2) - IF(ABS(SHR-PMAS(KFHIGG,1)).GT.PARP(48)*PMAS(KFHIGG,2)) - & FACBW=0D0 - DO 510 I=MMIN1,MMAX1 - IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 510 - EI=SIGN(1D0,DBLE(I))*KCHG(IABS(I),1) - DO 500 J=MMIN2,MMAX2 - IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 500 - EJ=SIGN(1D0,DBLE(J))*KCHG(IABS(J),1) - IF(EI*EJ.GT.0D0) GOTO 500 - FACLR=VINT(180+I)*VINT(180+J) - NCHN=NCHN+1 - ISIG(NCHN,1)=I - ISIG(NCHN,2)=J - ISIG(NCHN,3)=1 - SIGH(NCHN)=FACLR*FACWW*FACBW - 500 CONTINUE - 510 CONTINUE - - ELSEIF(ISUB.EQ.143) THEN -C...f + fbar' -> H+/- - SQMHC=PMAS(37,1)**2 - CALL PYWIDT(37,SH,WDTP,WDTE) - HS=SHR*WDTP(0) - FACBW=4D0*COMFAC/((SH-SQMHC)**2+HS**2) - HP=AEM/(8D0*XW)*SH/SQMW*SH - DO 530 I=MMIN1,MMAX1 - IF(I.EQ.0.OR.KFAC(1,I).EQ.0) GOTO 530 - IA=IABS(I) - IM=(MOD(IA,10)+1)/2 - DO 520 J=MMIN2,MMAX2 - IF(J.EQ.0.OR.KFAC(2,J).EQ.0) GOTO 520 - JA=IABS(J) - JM=(MOD(JA,10)+1)/2 - IF(I*J.GT.0.OR.IA.EQ.JA.OR.IM.NE.JM) GOTO 520 - IF((IA.LE.10.AND.JA.GT.10).OR.(IA.GT.10.AND.JA.LE.10)) - & GOTO 520 - IF(MOD(IA,2).EQ.0) THEN - IU=IA - IL=JA - ELSE - IU=JA - IL=IA - ENDIF - RML=PYMRUN(IL,SH)**2/SH - RMU=PYMRUN(IU,SH)**2/SH - HI=HP*(RML*PARU(141)**2+RMU/PARU(141)**2) - IF(IA.LE.10) HI=HI*FACA/3D0 - KCHHC=(KCHG(IA,1)*ISIGN(1,I)+KCHG(JA,1)*ISIGN(1,J))/3 - HF=SHR*(WDTE(0,1)+WDTE(0,(5-KCHHC)/2)+WDTE(0,4)) - NCHN=NCHN+1 - ISIG(NCHN,1)=I - ISIG(NCHN,2)=J - ISIG(NCHN,3)=1 - SIGH(NCHN)=HI*FACBW*HF - 520 CONTINUE - 530 CONTINUE - - ELSEIF(ISUB.EQ.161) THEN -C...f + g -> f' + H+/- (b + g -> t + H+/- only) -C...(choice of only b and t to avoid kinematics problems) - FHCQ=COMFAC*FACA*AS*AEM/XW*1D0/24 -C...H propagator: as simulated in PYOFSH and as desired - SQMHC=PMAS(37,1)**2 - GMMHC=PMAS(37,1)*PMAS(37,2) - HBW4=GMMHC/((SQM4-SQMHC)**2+GMMHC**2) - CALL PYWIDT(37,SQM4,WDTP,WDTE) - GMMHCC=SQRT(SQM4)*WDTP(0) - HBW4C=GMMHCC/((SQM4-SQMHC)**2+GMMHCC**2) - FHCQ=FHCQ*HBW4C/HBW4 - Q2RM=SH - IF(MSTP(32).EQ.12) Q2RM=PARP(194) - DO 550 I=MMINA,MMAXA - IA=IABS(I) - IF(IA.NE.5) GOTO 550 - SQML=PYMRUN(IA,Q2RM)**2 - IUA=IA+MOD(IA,2) - SQMQ=PYMRUN(IUA,Q2RM)**2 - FACHCQ=FHCQ*(SQML*PARU(141)**2+SQMQ/PARU(141)**2)/SQMW* - & (SH/(SQMQ-UH)+2D0*SQMQ*(SQMHC-UH)/(SQMQ-UH)**2+(SQMQ-UH)/SH- - & 2D0*SQMQ/(SQMQ-UH)+2D0*(SQMHC-UH)/(SQMQ-UH)* - & (SQMHC-SQMQ-SH)/SH) - KCHHC=ISIGN(1,KCHG(IA,1)*ISIGN(1,I)) - DO 540 ISDE=1,2 - IF(ISDE.EQ.1.AND.KFAC(1,I)*KFAC(2,21).EQ.0) GOTO 540 - IF(ISDE.EQ.2.AND.KFAC(1,21)*KFAC(2,I).EQ.0) GOTO 540 - NCHN=NCHN+1 - ISIG(NCHN,ISDE)=I - ISIG(NCHN,3-ISDE)=21 - ISIG(NCHN,3)=1 - SIGH(NCHN)=FACHCQ*WIDS(37,(5-KCHHC)/2) - IF(IUA.EQ.6) SIGH(NCHN)=SIGH(NCHN)*WIDS(6,(5+KCHHC)/2) - 540 CONTINUE - 550 CONTINUE - ENDIF - - ELSEIF(ISUB.LE.402) THEN - IF(ISUB.EQ.401) THEN -C... g + g -> t + bbar + H- - IF(KFAC(1,21)*KFAC(2,21).EQ.0) GOTO 560 - IA=KFPR(ISUBSV,2) - CALL PYSTBH(WTTBH) - CALL PYWIDT(KFHIGG,SH,WDTP,WDTE) - HS=SHR*WDTP(0) - FACBW=(1D0/PARU(1))*VINT(2)*HS/((SH-SQMH)**2+HS**2) - IF(ABS(SHR-PMAS(KFHIGG,1)).GT.PARP(48)*PMAS(KFHIGG,2)) - & FACBW=0D0 - NCHN=NCHN+1 - ISIG(NCHN,1)=21 - ISIG(NCHN,2)=21 - ISIG(NCHN,3)=1 - SIGH(NCHN)=2d0*COMFAC*WTTBH*FACBW -c Since we don't know yet if H+ or H-, assume H+ -c when calculating suppression due to closed channels. - SIGH(NCHN)=SIGH(NCHN)*WIDS(37,2)*WIDS(6,3) - IF(ABS(WIDS(37,2)-WIDS(37,3)) - & .GE.1D-6*(WIDS(37,2)+WIDS(37,3)).OR. - & ABS(WIDS(6,2)-WIDS(6,3)) - & .GE.1D-6*(WIDS(6,2)+WIDS(6,3))) THEN - WRITE(*,*)'Error: Process 401 cannot handle different' - WRITE(*,*)'decays for H+ and H- or t and tbar.' - WRITE(*,*)'Execution stopped.' - STOP - END IF - 560 CONTINUE - - ELSEIF(ISUB.EQ.402) THEN -C... q + qbar -> t + bbar + H- - IA=KFPR(ISUBSV,2) - CALL PYSTBH(WTTBH) - CALL PYWIDT(KFHIGG,SH,WDTP,WDTE) - HS=SHR*WDTP(0) - FACBW=(1D0/PARU(1))*VINT(2)*HS/((SH-SQMH)**2+HS**2) - IF(ABS(SHR-PMAS(KFHIGG,1)).GT.PARP(48)*PMAS(KFHIGG,2)) - & FACBW=0D0 - DO 570 I=MMINA,MMAXA - IF(I.EQ.0.OR.IABS(I).GT.MSTP(58).OR. - & KFAC(1,I)*KFAC(2,-I).EQ.0) GOTO 570 - NCHN=NCHN+1 - ISIG(NCHN,1)=I - ISIG(NCHN,2)=-I - ISIG(NCHN,3)=1 - SIGH(NCHN)=2d0*COMFAC*WTTBH*FACBW -c Since we don't know yet if H+ or H-, assume H+ -c when calculating suppression due to closed channels. - SIGH(NCHN)=SIGH(NCHN)*WIDS(37,2)*WIDS(6,3) - IF(ABS(WIDS(37,2)-WIDS(37,3))/(WIDS(37,2)+WIDS(37,3)) - & .GE.1D-6.OR. - & ABS(WIDS(6,2)-WIDS(6,3))/(WIDS(6,2)+WIDS(6,3)) - & .GE.1D-6) THEN - WRITE(*,*)'Error: Process 402 cannot handle different' - WRITE(*,*)'decays for H+ and H- or t and tbar.' - WRITE(*,*)'Execution stopped.' - STOP - END IF - 570 CONTINUE - ENDIF - ENDIF - - RETURN - END - - diff --git a/Generators/Pythia_i/src/setPythiaTune.cxx b/Generators/Pythia_i/src/setPythiaTune.cxx deleted file mode 100644 index 71fa81c2d6e6021fd52b0bb4156be99cad04aaca..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/src/setPythiaTune.cxx +++ /dev/null @@ -1,182 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#include "Pythia_i/Pythia.h" - -//LM remove these -/*#include <cstdlib> -#include <string> -#include <vector> -#include <iostream> -#include <math.h> -#include <sstream>*/ - -/* - ________________________________________________________________________________________________________________________ - - L.M., Aug 09 - - Pythia TUNE choice - - tune is unambigously determined by jO property m_Tune_Name=TUNETYPE_TUNEINDEX - that is parsed (via separator '_')so that m_Tune_Type=TUNETYPE and m_Tune_Index=TUNEINDEX - - m_Tune_Type options: - * m_Tune_Type="ATLAS" : ATLAS tunes (implemented in atlasTune.cxx ) - * m_Tune_Type="PYTUNE" : PYTUNE tunes (apart from MSTP(5) ATLAS defaults are turned off and necessary Pythia params for running - within Athena are set (event record etc.) are set. Handling a non-defined tune in this - case is up to Pythia.) - * else: run with the default tune m_Default_Tune_Name - - Apart from tune setting: - - common printout (for each Pythia run within Athena) is set - ________________________________________________________________________________________________________________________ - */ - -StatusCode Pythia::setPythiaTune() -{ - // count # of function calls for one initialization step (inf. loop protection) - m_atlasTune_loop_prot++; - - //protect against looping; setPythiaTune calls atlasTune so in principle an infinite loop can occur (in case of core code blunder) - if (m_atlasTune_loop_prot>100) - { - ATH_MSG_FATAL( "Got more than 100 calls of setPythiaTune() -> code errors, exit."); - return StatusCode::FAILURE; - } - - // MsgStream log(messageService(), name()); - - //always set printout details - this->m_initlistlevel=12; - this->m_eventlistlevel=1; - this->m_pystatlistlevel.clear(); - this->m_pystatlistlevel.push_back(1); - this->m_pystatlistlevel.push_back(3); - this->m_pystatlistlevel.push_back(4); - this->m_pystatlistlevel.push_back(5); - this->m_firstlistevent=1; - this->m_lastlistevent=5; - - // in case of consistent old syntax : handle it, else pring warnings and use ATLAS defaults - if (m_useAtlasPythiaRecomm != m_Default_useAtlasPythiaRecomm || m_useAtlasPythiaCommon != m_Default_useAtlasPythiaCommon || m_useAtlasPythiaTune09 != m_Default_useAtlasPythiaTune09 || m_useAtlasPythiaTune08 != m_Default_useAtlasPythiaTune08 || m_useNoAtlasPythiaParam != m_Default_useNoAtlasPythiaParam) - { - //be backward compatible if the tune has not been set using the new syntax: - if (m_Tune_Name==m_Starting_Tune_Name) - { - { - if (m_useNoAtlasPythiaParam) - { - // using no ATLAS defaults - m_Tune_Index=0; - } - // set m_Tune_Index acc. to the switch, overrides taken into acc. - if (m_useAtlasPythiaCommon==false) m_Tune_Index=-1; - if (m_useAtlasPythiaRecomm==false) m_Tune_Index=0; - if (m_useAtlasPythiaTune08) m_Tune_Index=m_mc08_Tune_Index; - if (m_useAtlasPythiaTune09) m_Tune_Index=m_mc09_Tune_Index; - } - // atlasTune is Pythia cmember, so knows about m_Tune_Index - StatusCode sc=atlasTune(); - if ( sc.isFailure() ) - { - ATH_MSG_FATAL( "ERROR returned from atlasTune, exit." ); - return StatusCode::FAILURE; - } - else - { - //setPythiaTune done, return - return StatusCode::SUCCESS; - } - } - //print warnings for the mix of the old and new syntax: - else - { - //mix of the old and new syntax - ATH_MSG_WARNING( "Joboptions contain both new-style tune setting Pythia.Tune_Name=\"TUNETYPE_TUNEINDEX\" as well as setting of the old-style switches:" ); - ATH_MSG_WARNING( "useAtlasPythiaRecomm,useAtlasPythiaCommon,useAtlasPythiaTune09,useAtlasPythiaTune08 or useNoAtlasPythiaParam" ); - ATH_MSG_WARNING( "Please fix the jo so that only one tune-setting style is used." ); - ATH_MSG_WARNING( "The old switches are deprecated, the new tune-setting style is preffered." ); - ATH_MSG_WARNING( "For this run the tune settings are ignored and ATLAS default tune settings will be used:"); - m_Tune_Type=m_Default_Tune_Type; m_Tune_Index=m_Default_Tune_Index; - ATH_MSG_WARNING( m_Tune_Type <<" , "<< m_Tune_Index ); - } - }// end of old switches backward compatibility support - - if (m_Tune_Type=="ATLAS") - { - StatusCode sc=atlasTune(); - if ( sc.isFailure() ) - { - ATH_MSG_FATAL( "ERROR returned from atlasTune, exit." ); - return StatusCode::FAILURE; - } - else - { - //setPythiaTune done, return - return StatusCode::SUCCESS; - } - } - // call PYTUNE in the original PYTUNE(MSTP(5)) form; - // as for Pythia 6.4.21 numbers 1xx - 4xx are in use - // error checking is as handeled by Pythia in particular too large tune nbr. returns - // (PYTUNE:) Tune number > max. Using defaults. - else if (m_Tune_Type=="PYTUNE") - { - //setPythiaTune done, return - this->pypars().mstp(5)=m_Tune_Index; - //set what is necessary for correct use of Pythia within Athena: - //----------------------------------------------------------------------------- - this->pypars().mstp(128) =1; // fix junk output for documentary particles - this->pydat1().mstu(21) =1; // error handling switch - this->pydat1().mstj(22)=2; // (Make K_S, Lambda stable) - //----------------------------------------------------------------------------- - ATH_MSG_INFO( "setPythiaTune: using Pythia internal tune via PYTUNE(" << m_Tune_Index <<") call."); - ATH_MSG_INFO( "setting parameters needed for desired functioning of Pythia within Athena "); - ATH_MSG_INFO( " mstp(128) =1; fix junk output for documentary particles "); - ATH_MSG_INFO( " mstu(21) =1; error handling switch "); - ATH_MSG_INFO( " mstj(22) =2; (Make K_S, Lambda stable) "); - ATH_MSG_INFO( " Please note: "); - ATH_MSG_INFO( " 1. in the jO overrides of the parameters set by PYTUNE # "<< m_Tune_Index <<" will have no effect " ); - ATH_MSG_INFO( " - this correspods to (standalone) Pythia behavior " ); - ATH_MSG_INFO( " 2. handling of non-existing PYTUNE tune is same as for (default) Pythia standalone." ); - //setPythiaTune done, return - return StatusCode::SUCCESS; - } - //----------------------------------------------------------------------------------------- - else - { - //undefined tune Type (setPythiaTune()) or Index (atlasTune() points here) for Type != PYTUNE - //Pythia_i reaction : run with current ATLAS default tune && print WARNINGs: - ATH_MSG_WARNING("setPythiaTune: got invalid Tune_Name : "<< m_Tune_Name ); - ATH_MSG_WARNING("Pythia will run with current ATLAS default tune : "<<m_Default_Tune_Name ); - //string parsing for m_Default_Tune_Name - std::string::size_type sep_index_def = m_Default_Tune_Name.find_first_of('_'); - if (sep_index_def != std::string::npos) - { - m_Tune_Type=m_Default_Tune_Name.substr(0,sep_index_def); - m_Tune_Index=atoi((m_Default_Tune_Name.substr(sep_index_def+1,m_Default_Tune_Name.length()-1)).c_str()); - } - else - { - // this should never happen - ATH_MSG_FATAL ( "setPythiaTune : got invalid m_Default_Tune_Name, Pythia_i code needs to be updated." ); - return StatusCode::FAILURE; - } - //call ATLAS tune - StatusCode sc=atlasTune(); - if ( sc.isFailure() ) - { - ATH_MSG_FATAL ("ERROR returned from atlasTune, exit." ); - return StatusCode::FAILURE; - } - else - { - //setPythiaTune done, return - return StatusCode::SUCCESS; - } - } - //----------------------------------------------------------------------------------------- - -}//end of setPythiaTune definition diff --git a/Generators/Pythia_i/src/setecm.F b/Generators/Pythia_i/src/setecm.F deleted file mode 100644 index 8cfae5f420d65c1aec9b8d1fbfb88c19d73da53c..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/src/setecm.F +++ /dev/null @@ -1,11 +0,0 @@ - SUBROUTINE SETECM(WINMATCHIG) -c -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) -#include "GeneratorFortranCommon/heprup.inc" - EBMUP(1)=0.5*WINMATCHIG - EBMUP(2)=0.5*WINMATCHIG - - RETURN - END diff --git a/Generators/Pythia_i/src/upevnt_py.F b/Generators/Pythia_i/src/upevnt_py.F deleted file mode 100644 index ba1175d0c147febf5465e0a798f5b60d518feb6c..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/src/upevnt_py.F +++ /dev/null @@ -1,33 +0,0 @@ - SUBROUTINE UPEVNT -c routine for Les Houches interface to external pythia routines -c adapted from base pythia code. -c Ian Hinchliffe (May 2002) -c -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - -#include "GeneratorFortranCommon/hepeup.inc" -#include "GeneratorFortranCommon/lesatlas.inc" -#include "GeneratorFortranCommon/genames.inc" - - IF(ATLASCHOICE.EQ.COMPHEP) CALL USECOMPHEP - IF(ATLASCHOICE.EQ.USER) CALL USEUSER - IF(ATLASCHOICE.EQ.ACERMC) THEN - CALL USEACERMC - CALL ACERMC_ACSET12_PY(0) - ENDIF - IF(ATLASCHOICE.EQ.ALPGEN) CALL USEALPGEN - IF(ATLASCHOICE.EQ.MADGRAPH) CALL USEMADGRAPH - IF(ATLASCHOICE.EQ.MADCUP) CALL USEMADCUP -c IF(ATLASCHOICE.EQ.LHAEXT) CALL USELHAEXT - IF(ATLASCHOICE.EQ.MATCHIG) CALL USEMATCHIG - IF(ATLASCHOICE.EQ.HVGEN) CALL USEHVGEN - IF(ATLASCHOICE.EQ.LHEF) CALL USELHEF - IF(ATLASCHOICE.EQ.EXOGRAVITON) CALL USEGRAV -C IF(ATLASCHOICE.EQ.PYTHIABC) CALL USEBC - IF(ATLASCHOICE.EQ.PROTOS) CALL USEPROTOS -C IF(ATLASCHOICE.EQ.HELAC) CALL USEHELAC -C IF(ATLASCHOICE.EQ.PYTHIASGLUON) CALL USESGLUON - RETURN - END diff --git a/Generators/Pythia_i/src/upinit_py.F b/Generators/Pythia_i/src/upinit_py.F deleted file mode 100644 index 6e38b55ecdfabdcea785063926cdd63b5d5c62f1..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/src/upinit_py.F +++ /dev/null @@ -1,36 +0,0 @@ - SUBROUTINE UPINIT -c interface to external pythia processes using Les Houches accord -c Adapted for pythia 6.203 -c Ian Hinchliffe (may 2002) -c -c #include "GeneratorFortranCommon/GeneratorName.h" - -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - -#include "GeneratorFortranCommon/heprup.inc" -#include "GeneratorFortranCommon/lesatlas.inc" -#include "GeneratorFortranCommon/genames.inc" - - - IF(ATLASCHOICE.EQ.COMPHEP) CALL INITCOMPHEP - IF(ATLASCHOICE.EQ.USER) CALL INITUSER - IF(ATLASCHOICE.EQ.ACERMC) THEN - CALL INITACERMC - CALL ACERMC_ACSET12_PY(-1) - ENDIF - IF(ATLASCHOICE.EQ.ALPGEN) CALL INITALPGEN - IF(ATLASCHOICE.EQ.MADGRAPH) CALL INITMADGRAPH - IF(ATLASCHOICE.EQ.MADCUP) CALL INITMADCUP -c IF(ATLASCHOICE.EQ.LHAEXT) CALL INITLHAEXT - IF(ATLASCHOICE.EQ.MATCHIG) CALL INITMATCHIG - IF(ATLASCHOICE.EQ.HVGEN) CALL INITHVGEN - IF(ATLASCHOICE.EQ.LHEF) CALL INITLHEF - IF(ATLASCHOICE.EQ.EXOGRAVITON) CALL INITGRAV -C IF(ATLASCHOICE.EQ.PYTHIABC) CALL INITBC - IF(ATLASCHOICE.EQ.PROTOS) CALL INITPROTOS -C IF(ATLASCHOICE.EQ.HELAC) CALL INITHELAC -C IF(ATLASCHOICE.EQ.PYTHIASGLUON) CALL INITSGLUON - RETURN - END diff --git a/Generators/Pythia_i/src/upveto_py.F b/Generators/Pythia_i/src/upveto_py.F deleted file mode 100644 index c3f3ca06b393ceb421d43bf093c48566d5cfd3e9..0000000000000000000000000000000000000000 --- a/Generators/Pythia_i/src/upveto_py.F +++ /dev/null @@ -1,16 +0,0 @@ - SUBROUTINE UPVETO(IPVETO) -c interface to external pythia processes using Les Houches accord -c -C...Double precision and integer declarations. - IMPLICIT DOUBLE PRECISION(A-H, O-Z) - IMPLICIT INTEGER(I-N) - -#include "GeneratorFortranCommon/lesatlas.inc" -#include "GeneratorFortranCommon/genames.inc" - - IF(ATLASCHOICE.EQ.ALPGEN) CALL VETOALPGEN(IPVETO) - IF(ATLASCHOICE.EQ.MADGRAPH) CALL VETOMADGRAPH(IPVETO) - IF(ATLASCHOICE.EQ.PROTOS) CALL VETOPROTOS(IPVETO) -C IF(ATLASCHOICE.EQ.HELAC) CALL VETOHELAC(IPVETO) - RETURN - END diff --git a/Generators/Reldis_i/CMakeLists.txt b/Generators/Reldis_i/CMakeLists.txt deleted file mode 100644 index 15b7dbd5ae76d7c53e826cb43950398abf609b45..0000000000000000000000000000000000000000 --- a/Generators/Reldis_i/CMakeLists.txt +++ /dev/null @@ -1,29 +0,0 @@ -################################################################################ -# Package: Reldis_i -################################################################################ - -# Declare the package name: -atlas_subdir( Reldis_i ) - -# Declare the package's dependencies: -atlas_depends_on_subdirs( PUBLIC - Generators/GeneratorModules - PRIVATE - GaudiKernel ) - -# External dependencies: -find_package( HepMC ) -find_package( HepPDT ) -find_package( ROOT COMPONENTS Core Tree MathCore Hist RIO pthread ) - -# Component(s) in the package: -atlas_add_component( Reldis_i - src/*.cxx - src/components/*.cxx - INCLUDE_DIRS ${HEPPDT_INCLUDE_DIRS} ${ROOT_INCLUDE_DIRS} ${HEPMC_INCLUDE_DIRS} - LINK_LIBRARIES ${HEPPDT_LIBRARIES} ${ROOT_LIBRARIES} ${HEPMC_LIBRARIES} GeneratorModulesLib GaudiKernel ) - -# Install files from the package: -atlas_install_headers( Reldis_i ) -atlas_install_joboptions( share/*.py ) - diff --git a/Generators/Reldis_i/Reldis_i/HepMCInterface.h b/Generators/Reldis_i/Reldis_i/HepMCInterface.h deleted file mode 100644 index 9d267cb8b70962d252ecabb97638d3e7704b59e5..0000000000000000000000000000000000000000 --- a/Generators/Reldis_i/Reldis_i/HepMCInterface.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef Reldis_HepMCInterface_H -#define Reldis_HepMCInterface_H - -#include "HepMC/IO_BaseClass.h" -#include "HepPDT/ParticleDataTable.hh" - -#include "Reldis_i/ReldisTree.h" - -#include <iostream> - -class IPartPropSvc; - -namespace HepMC { - - class I_Reldis: public IO_BaseClass { - - public: - - I_Reldis() { m_particleTable = 0; }; - virtual ~I_Reldis() {}; - - void fill_next_event(ReldisTree&, GenEvent*, int ievtnum); - - private: - - // Following are not (yet?) implemented for this class. - virtual bool fill_next_event( GenEvent*) { return 0; } - virtual void write_event (const GenEvent*) {} - - double getParticleMass(int pdgID); - void addParticles (GenVertex*, Int_t nParticles, Int_t* pdg, Float_t* px, Float_t* py, Float_t* pz, Int_t statusCode); - - HepPDT::ParticleDataTable* m_particleTable; - - // Use of copy constructor is not allowed - I_Reldis(const I_Reldis&): IO_BaseClass() {} - }; -} - -#endif diff --git a/Generators/Reldis_i/Reldis_i/ReldisTree.h b/Generators/Reldis_i/Reldis_i/ReldisTree.h deleted file mode 100644 index 9096363c733fc7b4c1ef6c564478d9b6ee9cce1b..0000000000000000000000000000000000000000 --- a/Generators/Reldis_i/Reldis_i/ReldisTree.h +++ /dev/null @@ -1,229 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef ReldisTree_h -#define ReldisTree_h - -#include <TROOT.h> -#include <TChain.h> -#include <TFile.h> -#include <iostream> -#include <iomanip> - -class ReldisTree { - - public : - - static const int MAX_NUM_PART = 1000; - - TTree *fChain; //!pointer to the analyzed TTree or TChain - Int_t fCurrent; //!current Tree number in a TChain - - // Declaration of leaf types - Int_t Nleft; // "left side" NEUTRON multiplicity - Float_t Eleft; // "left side" NEUTRON energy total in GeV (ZDC energy) - Int_t Ipdg_l_n [MAX_NUM_PART]; - Float_t Pxl [MAX_NUM_PART]; - Float_t Pyl [MAX_NUM_PART]; - Float_t Pzl [MAX_NUM_PART]; - - Int_t Nright; // "right side" NEUTRON multiplicity - Float_t Eright; // "right side" NEUTRON energy total in GeV (ZDC energy) - Int_t Ipdg_r_n [MAX_NUM_PART]; - Float_t Pxr [MAX_NUM_PART]; - Float_t Pyr [MAX_NUM_PART]; - Float_t Pzr [MAX_NUM_PART]; - - Int_t Nleft_p; // "left side" PROTON multiplicity - Float_t Etaleft_p [MAX_NUM_PART]; // "left side" PROTON pseudorapidity - Int_t Ipdg_l_p [MAX_NUM_PART]; - Float_t Pxl_p [MAX_NUM_PART]; - Float_t Pyl_p [MAX_NUM_PART]; - Float_t Pzl_p [MAX_NUM_PART]; - - Int_t Nright_p; // "right side" PROTON multiplicity - Float_t Etaright_p [MAX_NUM_PART]; // "right side" PROTON pseudorapidity - Int_t Ipdg_r_p [MAX_NUM_PART]; - Float_t Pxr_p [MAX_NUM_PART]; - Float_t Pyr_p [MAX_NUM_PART]; - Float_t Pzr_p [MAX_NUM_PART]; - - Int_t Nleft_pp; // "left side" PI PLUS multiplicity - Float_t Etaleft_pp [MAX_NUM_PART]; // "left side" PI PLUS pseudorapidity - Int_t Ipdg_l_pp [MAX_NUM_PART]; - Float_t Pxl_pp [MAX_NUM_PART]; - Float_t Pyl_pp [MAX_NUM_PART]; - Float_t Pzl_pp [MAX_NUM_PART]; - - Int_t Nright_pp; // "right side" PI PLUS multiplicity - Float_t Etaright_pp[MAX_NUM_PART]; // "right side" PI PLUS pseudorapidity - Int_t Ipdg_r_pp [MAX_NUM_PART]; - Float_t Pxr_pp [MAX_NUM_PART]; - Float_t Pyr_pp [MAX_NUM_PART]; - Float_t Pzr_pp [MAX_NUM_PART]; - - Int_t Nleft_pm; // "left side" PI MINUS multiplicity - Float_t Etaleft_pm [MAX_NUM_PART]; // "left side" PI MINUS pseudorapidity - Int_t Ipdg_l_pm [MAX_NUM_PART]; - Float_t Pxl_pm [MAX_NUM_PART]; - Float_t Pyl_pm [MAX_NUM_PART]; - Float_t Pzl_pm [MAX_NUM_PART]; - - Int_t Nright_pm; // "right side" PI MINUS multiplicity - Float_t Etaright_pm[MAX_NUM_PART]; // "right side" PI MINUS pseudorapidity - Int_t Ipdg_r_pm [MAX_NUM_PART]; - Float_t Pxr_pm [MAX_NUM_PART]; - Float_t Pyr_pm [MAX_NUM_PART]; - Float_t Pzr_pm [MAX_NUM_PART]; - - Int_t Nleft_p0; // "left side" PI ZERO multiplicity - Float_t Etaleft_p0 [MAX_NUM_PART]; // "left side" PI ZERO pseudorapidity - Int_t Ipdg_l_p0 [MAX_NUM_PART]; - Float_t Pxl_p0 [MAX_NUM_PART]; - Float_t Pyl_p0 [MAX_NUM_PART]; - Float_t Pzl_p0 [MAX_NUM_PART]; - - Int_t Nright_p0; // "right side" PI ZERO multiplicity - Float_t Etaright_p0[MAX_NUM_PART]; // "right side" PI ZERO pseudorapidity - Int_t Ipdg_r_p0 [MAX_NUM_PART]; - Float_t Pxr_p0 [MAX_NUM_PART]; - Float_t Pyr_p0 [MAX_NUM_PART]; - Float_t Pzr_p0 [MAX_NUM_PART]; - - Int_t Nleft_et; // "left side" ETA multiplicity - Float_t Etaleft_et [MAX_NUM_PART]; // "left side" ETA pseudorapidity - Int_t Ipdg_l_et [MAX_NUM_PART]; - Float_t Pxl_et [MAX_NUM_PART]; - Float_t Pyl_et [MAX_NUM_PART]; - Float_t Pzl_et [MAX_NUM_PART]; - - Int_t Nright_et; // "right side" ETA multiplicity - Float_t Etaright_et[MAX_NUM_PART]; // "right side" ETA pseudorapidity - Int_t Ipdg_r_et [MAX_NUM_PART]; - Float_t Pxr_et [MAX_NUM_PART]; - Float_t Pyr_et [MAX_NUM_PART]; - Float_t Pzr_et [MAX_NUM_PART]; - - Int_t Nleft_om; // "left side" OMEGA multiplicity - Float_t Etaleft_om [MAX_NUM_PART]; // "left side" OMEGA pseudorapidity - Int_t Ipdg_l_om [MAX_NUM_PART]; - Float_t Pxl_om [MAX_NUM_PART]; - Float_t Pyl_om [MAX_NUM_PART]; - Float_t Pzl_om [MAX_NUM_PART]; - - Int_t Nright_om; // "right side" OMEGA multiplicity - Float_t Etaright_om[MAX_NUM_PART]; // "right side" OMEGA pseudorapidity - Int_t Ipdg_r_om [MAX_NUM_PART]; - Float_t Pxr_om [MAX_NUM_PART]; - Float_t Pyr_om [MAX_NUM_PART]; - Float_t Pzr_om [MAX_NUM_PART]; - - // List of branches - TBranch *b_Nleft; - TBranch *b_Eleft; - TBranch *b_Ipdg_l_n; - TBranch *b_Pxl; - TBranch *b_Pyl; - TBranch *b_Pzl; - - TBranch *b_Nright; - TBranch *b_Eright; - TBranch *b_Ipdg_r_n; - TBranch *b_Pxr; - TBranch *b_Pyr; - TBranch *b_Pzr; - - TBranch *b_Nleft_p; - TBranch *b_Etaleft_p; - TBranch *b_Ipdg_l_p; - TBranch *b_Pxl_p; - TBranch *b_Pyl_p; - TBranch *b_Pzl_p; - - TBranch *b_Nright_p; - TBranch *b_Etaright_p; - TBranch *b_Ipdg_r_p; - TBranch *b_Pxr_p; - TBranch *b_Pyr_p; - TBranch *b_Pzr_p; - - TBranch *b_Nleft_pp; - TBranch *b_Etaleft_pp; - TBranch *b_Ipdg_l_pp; - TBranch *b_Pxl_pp; - TBranch *b_Pyl_pp; - TBranch *b_Pzl_pp; - - TBranch *b_Nright_pp; - TBranch *b_Etaright_pp; - TBranch *b_Ipdg_r_pp; - TBranch *b_Pxr_pp; - TBranch *b_Pyr_pp; - TBranch *b_Pzr_pp; - - TBranch *b_Nleft_pm; - TBranch *b_Etaleft_pm; - TBranch *b_Ipdg_l_pm; - TBranch *b_Pxl_pm; - TBranch *b_Pyl_pm; - TBranch *b_Pzl_pm; - - TBranch *b_Nright_pm; - TBranch *b_Etaright_pm; - TBranch *b_Ipdg_r_pm; - TBranch *b_Pxr_pm; - TBranch *b_Pyr_pm; - TBranch *b_Pzr_pm; - - TBranch *b_Nleft_p0; - TBranch *b_Etaleft_p0; - TBranch *b_Ipdg_l_p0; - TBranch *b_Pxl_p0; - TBranch *b_Pyl_p0; - TBranch *b_Pzl_p0; - - TBranch *b_Nright_p0; - TBranch *b_Etaright_p0; - TBranch *b_Ipdg_r_p0; - TBranch *b_Pxr_p0; - TBranch *b_Pyr_p0; - TBranch *b_Pzr_p0; - - TBranch *b_Nleft_et; - TBranch *b_Etaleft_et; - TBranch *b_Ipdg_l_et; - TBranch *b_Pxl_et; - TBranch *b_Pyl_et; - TBranch *b_Pzl_et; - - TBranch *b_Nright_et; - TBranch *b_Etaright_et; - TBranch *b_Ipdg_r_et; - TBranch *b_Pxr_et; - TBranch *b_Pyr_et; - TBranch *b_Pzr_et; - - TBranch *b_Nleft_om; - TBranch *b_Etaleft_om; - TBranch *b_Ipdg_l_om; - TBranch *b_Pxl_om; - TBranch *b_Pyl_om; - TBranch *b_Pzl_om; - - TBranch *b_Nright_om; - TBranch *b_Etaright_om; - TBranch *b_Ipdg_r_om; - TBranch *b_Pxr_om; - TBranch *b_Pyr_om; - TBranch *b_Pzr_om; - - ReldisTree(); - virtual ~ReldisTree(); - - virtual Int_t GetEntry(Long64_t entry); - virtual Long64_t LoadTree(Long64_t entry); - virtual Bool_t Init(TString rootFileName, TString treeName); -}; - -#endif diff --git a/Generators/Reldis_i/Reldis_i/Reldis_i.h b/Generators/Reldis_i/Reldis_i/Reldis_i.h deleted file mode 100644 index 19318812d5e339d4e354d232115a494ae8f8140d..0000000000000000000000000000000000000000 --- a/Generators/Reldis_i/Reldis_i/Reldis_i.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef GENERATOR_RELDIS_I_H -#define GENERATOR_RELDIS_I_H - -#include "GeneratorModules/GenModule.h" -#include "Reldis_i/HepMCInterface.h" -#include "Reldis_i/ReldisTree.h" - -using namespace HepMC; - -class Reldis_i: public GenModule { - - public: - - Reldis_i(const std::string& name, ISvcLocator* pSvcLocator); - ~Reldis_i(); - - virtual StatusCode genInitialize(); - virtual StatusCode callGenerator(); - virtual StatusCode fillEvt(GenEvent*); - virtual StatusCode genFinalize(); - - private: - - std::string m_reldisRootFileName; - std::string m_reldisTreeName; - ReldisTree m_reldisTree; - I_Reldis m_reldisToHepMC; - - int m_eventCounter; -}; - -#endif diff --git a/Generators/Reldis_i/share/MC12.Reldis.py b/Generators/Reldis_i/share/MC12.Reldis.py deleted file mode 100644 index 7886f4a7cf74832ed3cdcdd44a46c620d8e752d5..0000000000000000000000000000000000000000 --- a/Generators/Reldis_i/share/MC12.Reldis.py +++ /dev/null @@ -1,22 +0,0 @@ -evgenConfig.description = "Heavy ion electromagnetic dissociation (EDM) with neutrons in the final state" -evgenConfig.keywords = ["heavy ion", "EDM"] -evgenConfig.contact = ["Antonello Sbrizzi"] -evgenConfig.generators = ["Reldis"] - -from Reldis_i.Reldis_iConf import Reldis_i -topAlg += Reldis_i() -topAlg.Reldis_i.ReldisRootFileName = "/afs/cern.ch/atlas/offline/external/reldis/v0.0/test/inter/root/_cwn.root" -topAlg.Reldis_i.ReldisTreeName = "h2032" - -evgenConfig.generators += ["EvtGen"] -evgenConfig.auxfiles += ['inclusiveP8.dec', 'inclusiveP8.pdt'] - -from EvtGen_i.EvtGen_iConf import EvtInclusiveDecay -topAlg += EvtInclusiveDecay() -topAlg.EvtInclusiveDecay.OutputLevel = INFO -topAlg.EvtInclusiveDecay.decayFile = "inclusiveP8.dec" -topAlg.EvtInclusiveDecay.pdtFile = "inclusiveP8.pdt" - -from TruthExamples.TruthExamplesConf import TestHepMC -topAlg += TestHepMC() -topAlg.TestHepMC.EnergyDifference = 1e10 diff --git a/Generators/Reldis_i/share/jobOptions.reldis.py b/Generators/Reldis_i/share/jobOptions.reldis.py deleted file mode 100644 index fd3ced3cd2c47b86fd65a623909cccefcdf72054..0000000000000000000000000000000000000000 --- a/Generators/Reldis_i/share/jobOptions.reldis.py +++ /dev/null @@ -1,18 +0,0 @@ -from AthenaCommon.AppMgr import ServiceMgr as svcMgr -svcMgr.MessageSvc.OutputLevel = DEBUG - -theApp.EvtMax = 10 - -from AthenaCommon.AlgSequence import AlgSequence -topSequence = AlgSequence() - -from Reldis_i.Reldis_iConf import Reldis_i -topSequence += Reldis_i() -topSequence.Reldis_i.ReldisRootFileName = "/afs/cern.ch/atlas/offline/external/reldis/v0.0/test/inter/root/_cwn.root" -topSequence.Reldis_i.ReldisTreeName = "h2032" - -from AthenaPoolCnvSvc.WriteAthenaPool import AthenaPoolOutputStream -Stream1 = AthenaPoolOutputStream("StreamEVGEN") -Stream1.OutputFile = "evgen.reldis.pool.root" -Stream1.ItemList += ["2101#*", "133273#*"] - diff --git a/Generators/Reldis_i/share/test_reldis.Generate b/Generators/Reldis_i/share/test_reldis.Generate deleted file mode 100755 index bc2c3cd57fe0f7cc6853f2e9da616e2b4554a1a7..0000000000000000000000000000000000000000 --- a/Generators/Reldis_i/share/test_reldis.Generate +++ /dev/null @@ -1,2 +0,0 @@ -Generate_trf.py ecmEnergy=0 runNumber=105200 firstEvent=1 maxEvents=10 randomSeed=54298752 jobConfig=Reldis_i/MC12.Reldis.py outputEVNTFile=MC12.Reldis.evgen.pool.root inputGeneratorFile=NONE inputGenConfFile=NONE - diff --git a/Generators/Reldis_i/src/HepMCInterface.cxx b/Generators/Reldis_i/src/HepMCInterface.cxx deleted file mode 100644 index b04783b7fb09a7c4962acc262b825898c2c9d995..0000000000000000000000000000000000000000 --- a/Generators/Reldis_i/src/HepMCInterface.cxx +++ /dev/null @@ -1,86 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#include "Reldis_i/HepMCInterface.h" - -#include "GaudiKernel/IPartPropSvc.h" -#include "GaudiKernel/ISvcLocator.h" -#include "GaudiKernel/Bootstrap.h" - -namespace HepMC { - - void I_Reldis::fill_next_event(ReldisTree& tree, GenEvent* evt, int ievtnum) { - - if (!evt) { std::cerr << "I_Reldis::fill_next_event, ERROR - passed null event." << std::endl; return; } - - evt->set_event_number(ievtnum); - - evt->weights().push_back(1.); // Set event weight to 1 (events are physically distributed) - - GenVertex* prod_vtx = new GenVertex(); - - prod_vtx->set_position(FourVector()); // Create a HepMC vertex at (0, 0, 0) with all particles - - // See suggestion of Andy on how to set the statusCode: - // https://savannah.cern.ch/task/?func=detailitem&item_id=25015#comment29 - addParticles(prod_vtx, tree.Nleft, tree.Ipdg_l_n, tree.Pxl, tree.Pyl, tree.Pzl, 1); // Add neutrons left - addParticles(prod_vtx, tree.Nright, tree.Ipdg_r_n, tree.Pxr, tree.Pyr, tree.Pzr, 1); // Add neutrons right - addParticles(prod_vtx, tree.Nleft_p, tree.Ipdg_l_p, tree.Pxl_p, tree.Pyl_p, tree.Pzl_p, 1); // Add protons left - addParticles(prod_vtx, tree.Nright_p, tree.Ipdg_r_p, tree.Pxr_p, tree.Pyr_p, tree.Pzr_p, 1); // Add protons right - addParticles(prod_vtx, tree.Nleft_pp, tree.Ipdg_l_pp, tree.Pxl_pp, tree.Pyl_pp, tree.Pzl_pp, 2); // Add pi plus left - addParticles(prod_vtx, tree.Nright_pp, tree.Ipdg_r_pp, tree.Pxr_pp, tree.Pyr_pp, tree.Pzr_pp, 2); // Add pi plus right - addParticles(prod_vtx, tree.Nleft_pm, tree.Ipdg_l_pm, tree.Pxl_pm, tree.Pyl_pm, tree.Pzl_pm, 2); // Add pi minus left - addParticles(prod_vtx, tree.Nright_pm, tree.Ipdg_r_pm, tree.Pxr_pm, tree.Pyr_pm, tree.Pzr_pm, 2); // Add pi minus right - addParticles(prod_vtx, tree.Nleft_p0, tree.Ipdg_l_p0, tree.Pxl_p0, tree.Pyl_p0, tree.Pzl_p0, 2); // Add pi zero left - addParticles(prod_vtx, tree.Nright_p0, tree.Ipdg_r_p0, tree.Pxr_p0, tree.Pyr_p0, tree.Pzr_p0, 2); // Add pi zero right - addParticles(prod_vtx, tree.Nleft_et, tree.Ipdg_l_et, tree.Pxl_et, tree.Pyl_et, tree.Pzl_et, 2); // Add eta left - addParticles(prod_vtx, tree.Nright_et, tree.Ipdg_r_et, tree.Pxr_et, tree.Pyr_et, tree.Pzr_et, 2); // Add eta right - addParticles(prod_vtx, tree.Nleft_om, tree.Ipdg_l_om, tree.Pxl_om, tree.Pyl_om, tree.Pzl_om, 2); // Add omega left - addParticles(prod_vtx, tree.Nright_om, tree.Ipdg_r_om, tree.Pxr_om, tree.Pyr_om, tree.Pzr_om, 2); // Add omega right - - evt->add_vertex(prod_vtx); - } - - void I_Reldis::addParticles(GenVertex* prod_vtx, - Int_t nParticles, - Int_t pdg[ReldisTree::MAX_NUM_PART], - Float_t px [ReldisTree::MAX_NUM_PART], - Float_t py [ReldisTree::MAX_NUM_PART], - Float_t pz [ReldisTree::MAX_NUM_PART], - Int_t statusCode) { - - for (int i=0; i<nParticles; i++) { - - ThreeVector mom(px[i]*1000, py[i]*1000, pz[i]*1000); - - int pid = pdg[i]; - double mass = getParticleMass(pid); - - GenParticle* aParticle = new GenParticle(FourVector(mom.x(), mom.y(), mom.z(), sqrt(mom.r()*mom.r() + mass*mass)), - pid, statusCode, Flow(), Polarization(0, 0)); - - prod_vtx->add_particle_out(aParticle); - } - } - - double I_Reldis::getParticleMass(int pid) { - - if (m_particleTable == 0) { - - std::cout << " Inizializing m_particleTable " << std::endl; - - IPartPropSvc* partPropSvc = 0; - StatusCode PartPropStatus = Gaudi::svcLocator()->service("PartPropSvc", partPropSvc); - - if (!PartPropStatus.isSuccess() || 0 == partPropSvc) - throw GaudiException("PartPropSvc error", "I_Reldis", StatusCode::FAILURE); - - m_particleTable = partPropSvc->PDT(); - } - - const HepPDT::ParticleData* particle = m_particleTable->particle(HepPDT::ParticleID(abs(pid))); - - return particle->mass().value(); - } -} diff --git a/Generators/Reldis_i/src/ReldisTree.cxx b/Generators/Reldis_i/src/ReldisTree.cxx deleted file mode 100644 index ea26ca0ec56784f786831bd6469fd4f010c15cae..0000000000000000000000000000000000000000 --- a/Generators/Reldis_i/src/ReldisTree.cxx +++ /dev/null @@ -1,363 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#include "Reldis_i/ReldisTree.h" - -ReldisTree::ReldisTree() { - - fChain = 0; - fCurrent = 0; - - Nleft = 0; - Eleft = 0; - Nright = 0; - Eright = 0; - Nleft_p = 0; - Nright_p = 0; - Nleft_pp = 0; - Nright_pp = 0; - Nleft_pm = 0; - Nright_pm = 0; - Nleft_p0 = 0; - Nright_p0 = 0; - Nleft_et = 0; - Nright_et = 0; - Nleft_om = 0; - Nright_om = 0; - - for (int i=0; i<MAX_NUM_PART; i++) { - - Ipdg_l_n [i] = 0; - Pxl [i] = 0; - Pyl [i] = 0; - Pzl [i] = 0; - - Ipdg_r_n [i] = 0; - Pxr [i] = 0; - Pyr [i] = 0; - Pzr [i] = 0; - - Etaleft_p [i] = 0; - Ipdg_l_p [i] = 0; - Pxl_p [i] = 0; - Pyl_p [i] = 0; - Pzl_p [i] = 0; - - Etaright_p [i] = 0; - Ipdg_r_p [i] = 0; - Pxr_p [i] = 0; - Pyr_p [i] = 0; - Pzr_p [i] = 0; - - Etaleft_pp [i] = 0; - Ipdg_l_pp [i] = 0; - Pxl_pp [i] = 0; - Pyl_pp [i] = 0; - Pzl_pp [i] = 0; - - Etaright_pp[i] = 0; - Ipdg_r_pp [i] = 0; - Pxr_pp [i] = 0; - Pyr_pp [i] = 0; - Pzr_pp [i] = 0; - - Etaleft_pm [i] = 0; - Ipdg_l_pm [i] = 0; - Pxl_pm [i] = 0; - Pyl_pm [i] = 0; - Pzl_pm [i] = 0; - - Etaright_pm[i] = 0; - Ipdg_r_pm [i] = 0; - Pxr_pm [i] = 0; - Pyr_pm [i] = 0; - Pzr_pm [i] = 0; - - Etaleft_p0 [i] = 0; - Ipdg_l_p0 [i] = 0; - Pxl_p0 [i] = 0; - Pyl_p0 [i] = 0; - Pzl_p0 [i] = 0; - - Etaright_p0[i] = 0; - Ipdg_r_p0 [i] = 0; - Pxr_p0 [i] = 0; - Pyr_p0 [i] = 0; - Pzr_p0 [i] = 0; - - Etaleft_et [i] = 0; - Ipdg_l_et [i] = 0; - Pxl_et [i] = 0; - Pyl_et [i] = 0; - Pzl_et [i] = 0; - - Etaright_et[i] = 0; - Ipdg_r_et [i] = 0; - Pxr_et [i] = 0; - Pyr_et [i] = 0; - Pzr_et [i] = 0; - - Etaleft_om [i] = 0; - Ipdg_l_om [i] = 0; - Pxl_om [i] = 0; - Pyl_om [i] = 0; - Pzl_om [i] = 0; - - Etaright_om[i] = 0; - Ipdg_r_om [i] = 0; - Pxr_om [i] = 0; - Pyr_om [i] = 0; - Pzr_om [i] = 0; - } - - b_Nleft = 0; - b_Eleft = 0; - b_Ipdg_l_n = 0; - b_Pxl = 0; - b_Pyl = 0; - b_Pzl = 0; - - b_Nright = 0; - b_Eright = 0; - b_Ipdg_r_n = 0; - b_Pxr = 0; - b_Pyr = 0; - b_Pzr = 0; - - b_Nleft_p = 0; - b_Etaleft_p = 0; - b_Ipdg_l_p = 0; - b_Pxl_p = 0; - b_Pyl_p = 0; - b_Pzl_p = 0; - - b_Nright_p = 0; - b_Etaright_p = 0; - b_Ipdg_r_p = 0; - b_Pxr_p = 0; - b_Pyr_p = 0; - b_Pzr_p = 0; - - b_Nleft_pp = 0; - b_Etaleft_pp = 0; - b_Ipdg_l_pp = 0; - b_Pxl_pp = 0; - b_Pyl_pp = 0; - b_Pzl_pp = 0; - - b_Nright_pp = 0; - b_Etaright_pp = 0; - b_Ipdg_r_pp = 0; - b_Pxr_pp = 0; - b_Pyr_pp = 0; - b_Pzr_pp = 0; - - b_Nleft_pm = 0; - b_Etaleft_pm = 0; - b_Ipdg_l_pm = 0; - b_Pxl_pm = 0; - b_Pyl_pm = 0; - b_Pzl_pm = 0; - - b_Nright_pm = 0; - b_Etaright_pm = 0; - b_Ipdg_r_pm = 0; - b_Pxr_pm = 0; - b_Pyr_pm = 0; - b_Pzr_pm = 0; - - b_Nleft_p0 = 0; - b_Etaleft_p0 = 0; - b_Ipdg_l_p0 = 0; - b_Pxl_p0 = 0; - b_Pyl_p0 = 0; - b_Pzl_p0 = 0; - - b_Nright_p0 = 0; - b_Etaright_p0 = 0; - b_Ipdg_r_p0 = 0; - b_Pxr_p0 = 0; - b_Pyr_p0 = 0; - b_Pzr_p0 = 0; - - b_Nleft_et = 0; - b_Etaleft_et = 0; - b_Ipdg_l_et = 0; - b_Pxl_et = 0; - b_Pyl_et = 0; - b_Pzl_et = 0; - - b_Nright_et = 0; - b_Etaright_et = 0; - b_Ipdg_r_et = 0; - b_Pxr_et = 0; - b_Pyr_et = 0; - b_Pzr_et = 0; - - b_Nleft_om = 0; - b_Etaleft_om = 0; - b_Ipdg_l_om = 0; - b_Pxl_om = 0; - b_Pyl_om = 0; - b_Pzl_om = 0; - - b_Nright_om = 0; - b_Etaright_om = 0; - b_Ipdg_r_om = 0; - b_Pxr_om = 0; - b_Pyr_om = 0; - b_Pzr_om = 0; -} - -ReldisTree::~ReldisTree() { - - if (!fChain) return; - - delete fChain->GetCurrentFile(); -} - -Int_t ReldisTree::GetEntry(Long64_t entry) { - - if (!fChain) return 0; - - return fChain->GetEntry(entry); -} - -Long64_t ReldisTree::LoadTree(Long64_t entry) { - - if (!fChain) return -5; - - Long64_t centry = fChain->LoadTree(entry); - - if (centry < 0) return centry; - - if (!fChain->InheritsFrom(TChain::Class())) return centry; - - TChain* chain = (TChain*)fChain; - - if (chain->GetTreeNumber() != fCurrent) - fCurrent = chain->GetTreeNumber(); - - return centry; -} - -Bool_t ReldisTree::Init(TString rootFileName, TString treeName) { - - TFile* file = new TFile(rootFileName); - - if (!file) return kFALSE; - - TTree* tree = (TTree*)gDirectory->Get(treeName); - - if (!tree) { - - std::cout << treeName << " tree not found! " << std::endl; - return kFALSE; - } - - // Set branch addresses and branch pointers - fChain = tree; - fCurrent = -1; - fChain->SetMakeClass(1); - - fChain->SetBranchAddress("Nleft", &Nleft, &b_Nleft); - fChain->SetBranchAddress("Eleft", &Eleft, &b_Eleft); - fChain->SetBranchAddress("Ipdg_l_n", Ipdg_l_n, &b_Ipdg_l_n); - fChain->SetBranchAddress("Pxl", Pxl, &b_Pxl); - fChain->SetBranchAddress("Pyl", Pyl, &b_Pyl); - fChain->SetBranchAddress("Pzl", Pzl, &b_Pzl); - - fChain->SetBranchAddress("Nright", &Nright, &b_Nright); - fChain->SetBranchAddress("Eright", &Eright, &b_Eright); - fChain->SetBranchAddress("Ipdg_r_n", Ipdg_r_n, &b_Ipdg_r_n); - fChain->SetBranchAddress("Pxr", Pxr, &b_Pxr); - fChain->SetBranchAddress("Pyr", Pyr, &b_Pyr); - fChain->SetBranchAddress("Pzr", Pzr, &b_Pzr); - - fChain->SetBranchAddress("Nleft_p", &Nleft_p, &b_Nleft_p); - fChain->SetBranchAddress("Etaleft_p", Etaleft_p, &b_Etaleft_p); - fChain->SetBranchAddress("Ipdg_l_p", Ipdg_l_p, &b_Ipdg_l_p); - fChain->SetBranchAddress("Pxl_p", Pxl_p, &b_Pxl_p); - fChain->SetBranchAddress("Pyl_p", Pyl_p, &b_Pyl_p); - fChain->SetBranchAddress("Pzl_p", Pzl_p, &b_Pzl_p); - - fChain->SetBranchAddress("Nright_p", &Nright_p, &b_Nright_p); - fChain->SetBranchAddress("Etaright_p", Etaright_p, &b_Etaright_p); - fChain->SetBranchAddress("Ipdg_r_p", Ipdg_r_p, &b_Ipdg_r_p); - fChain->SetBranchAddress("Pxr_p", Pxr_p, &b_Pxr_p); - fChain->SetBranchAddress("Pyr_p", Pyr_p, &b_Pyr_p); - fChain->SetBranchAddress("Pzr_p", Pzr_p, &b_Pzr_p); - - fChain->SetBranchAddress("Nleft_pp", &Nleft_pp, &b_Nleft_pp); - fChain->SetBranchAddress("Etaleft_pp", Etaleft_pp, &b_Etaleft_pp); - fChain->SetBranchAddress("Ipdg_l_pp", Ipdg_l_pp, &b_Ipdg_l_pp); - fChain->SetBranchAddress("Pxl_pp", Pxl_pp, &b_Pxl_pp); - fChain->SetBranchAddress("Pyl_pp", Pyl_pp, &b_Pyl_pp); - fChain->SetBranchAddress("Pzl_pp", Pzl_pp, &b_Pzl_pp); - - fChain->SetBranchAddress("Nright_pp", &Nright_pp, &b_Nright_pp); - fChain->SetBranchAddress("Etaright_pp", Etaright_pp, &b_Etaright_pp); - fChain->SetBranchAddress("Ipdg_r_pp", Ipdg_r_pp, &b_Ipdg_r_pp); - fChain->SetBranchAddress("Pxr_pp", Pxr_pp, &b_Pxr_pp); - fChain->SetBranchAddress("Pyr_pp", Pyr_pp, &b_Pyr_pp); - fChain->SetBranchAddress("Pzr_pp", Pzr_pp, &b_Pzr_pp); - - fChain->SetBranchAddress("Nleft_pm", &Nleft_pm, &b_Nleft_pm); - fChain->SetBranchAddress("Etaleft_pm", Etaleft_pm, &b_Etaleft_pm); - fChain->SetBranchAddress("Ipdg_l_pm", Ipdg_l_pm, &b_Ipdg_l_pm); - fChain->SetBranchAddress("Pxl_pm", Pxl_pm, &b_Pxl_pm); - fChain->SetBranchAddress("Pyl_pm", Pyl_pm, &b_Pyl_pm); - fChain->SetBranchAddress("Pzl_pm", Pzl_pm, &b_Pzl_pm); - - fChain->SetBranchAddress("Nright_pm", &Nright_pm, &b_Nright_pm); - fChain->SetBranchAddress("Etaright_pm", Etaright_pm, &b_Etaright_pm); - fChain->SetBranchAddress("Ipdg_r_pm", Ipdg_r_pm, &b_Ipdg_r_pm); - fChain->SetBranchAddress("Pxr_pm", Pxr_pm, &b_Pxr_pm); - fChain->SetBranchAddress("Pyr_pm", Pyr_pm, &b_Pyr_pm); - fChain->SetBranchAddress("Pzr_pm", Pzr_pm, &b_Pzr_pm); - - fChain->SetBranchAddress("Nleft_p0", &Nleft_p0, &b_Nleft_p0); - fChain->SetBranchAddress("Etaleft_p0", Etaleft_p0, &b_Etaleft_p0); - fChain->SetBranchAddress("Ipdg_l_p0", Ipdg_l_p0, &b_Ipdg_l_p0); - fChain->SetBranchAddress("Pxl_p0", Pxl_p0, &b_Pxl_p0); - fChain->SetBranchAddress("Pyl_p0", Pyl_p0, &b_Pyl_p0); - fChain->SetBranchAddress("Pzl_p0", Pzl_p0, &b_Pzl_p0); - - fChain->SetBranchAddress("Nright_p0", &Nright_p0, &b_Nright_p0); - fChain->SetBranchAddress("Etaright_p0", Etaright_p0, &b_Etaright_p0); - fChain->SetBranchAddress("Ipdg_r_p0", Ipdg_r_p0, &b_Ipdg_r_p0); - fChain->SetBranchAddress("Pxr_p0", Pxr_p0, &b_Pxr_p0); - fChain->SetBranchAddress("Pyr_p0", Pyr_p0, &b_Pyr_p0); - fChain->SetBranchAddress("Pzr_p0", Pzr_p0, &b_Pzr_p0); - - fChain->SetBranchAddress("Nleft_et", &Nleft_et, &b_Nleft_et); - fChain->SetBranchAddress("Etaleft_et", Etaleft_et, &b_Etaleft_et); - fChain->SetBranchAddress("Ipdg_l_et", Ipdg_l_et, &b_Ipdg_l_et); - fChain->SetBranchAddress("Pxl_et", Pxl_et, &b_Pxl_et); - fChain->SetBranchAddress("Pyl_et", Pyl_et, &b_Pyl_et); - fChain->SetBranchAddress("Pzl_et", Pzl_et, &b_Pzl_et); - - fChain->SetBranchAddress("Nright_et", &Nright_et, &b_Nright_et); - fChain->SetBranchAddress("Etaright_et", Etaright_et, &b_Etaright_et); - fChain->SetBranchAddress("Ipdg_r_et", Ipdg_r_et, &b_Ipdg_r_et); - fChain->SetBranchAddress("Pxr_et", Pxr_et, &b_Pxr_et); - fChain->SetBranchAddress("Pyr_et", Pyr_et, &b_Pyr_et); - fChain->SetBranchAddress("Pzr_et", Pzr_et, &b_Pzr_et); - - fChain->SetBranchAddress("Nleft_om", &Nleft_om, &b_Nleft_om); - fChain->SetBranchAddress("Etaleft_om", Etaleft_om, &b_Etaleft_om); - fChain->SetBranchAddress("Ipdg_l_om", Ipdg_l_om, &b_Ipdg_l_om); - fChain->SetBranchAddress("Pxl_om", Pxl_om, &b_Pxl_om); - fChain->SetBranchAddress("Pyl_om", Pyl_om, &b_Pyl_om); - fChain->SetBranchAddress("Pzl_om", Pzl_om, &b_Pzl_om); - - fChain->SetBranchAddress("Nright_om", &Nright_om, &b_Nright_om); - fChain->SetBranchAddress("Etaright_om", Etaright_om, &b_Etaright_om); - fChain->SetBranchAddress("Ipdg_r_om", Ipdg_r_om, &b_Ipdg_r_om); - fChain->SetBranchAddress("Pxr_om", Pxr_om, &b_Pxr_om); - fChain->SetBranchAddress("Pyr_om", Pyr_om, &b_Pyr_om); - fChain->SetBranchAddress("Pzr_om", Pzr_om, &b_Pzr_om); - - return kTRUE; -} diff --git a/Generators/Reldis_i/src/Reldis_i.cxx b/Generators/Reldis_i/src/Reldis_i.cxx deleted file mode 100644 index 908ef7164f41624664f459074be1f8aed1d93a39..0000000000000000000000000000000000000000 --- a/Generators/Reldis_i/src/Reldis_i.cxx +++ /dev/null @@ -1,65 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#include "Reldis_i/Reldis_i.h" - -Reldis_i::Reldis_i(const std::string& name, ISvcLocator* pSvcLocator) : - GenModule(name, pSvcLocator), - m_reldisRootFileName("_cwn.root"), - m_reldisTreeName("h2032") -{ - declareProperty("ReldisRootFileName", m_reldisRootFileName); - declareProperty("ReldisTreeName", m_reldisTreeName); - - m_eventCounter = 0; -} - -Reldis_i::~Reldis_i() {} - -StatusCode Reldis_i::genInitialize() { - - ATH_MSG_INFO("Reldis_i::genInitialize"); - - m_reldisTree.Init(m_reldisRootFileName, m_reldisTreeName); - - ATH_MSG_INFO("RELDIS events: " << m_reldisTree.fChain->GetEntriesFast()); - - return StatusCode::SUCCESS; -} - -StatusCode Reldis_i::callGenerator() { - - ATH_MSG_DEBUG("Reldis_i::callGenerator"); - - int retCode = m_reldisTree.LoadTree(m_eventCounter); - - if (retCode<0) { - - ATH_MSG_INFO("Problem with TChain.LoadTree, return code: " << retCode << ", m_eventCounter: " << m_eventCounter); - - return StatusCode::FAILURE; - } - - m_reldisTree.GetEntry(m_eventCounter); - - return StatusCode::SUCCESS; -} - -StatusCode Reldis_i::fillEvt(GenEvent* evt) { - - ATH_MSG_DEBUG("Reldis_i::fillEvt. EventCounter: " << m_eventCounter); - - m_reldisToHepMC.fill_next_event(m_reldisTree, evt, m_eventCounter); - - m_eventCounter++; - - return StatusCode::SUCCESS; -} - -StatusCode Reldis_i::genFinalize() { - - ATH_MSG_INFO("Reldis_i::genFinalize"); - - return StatusCode::SUCCESS; -} diff --git a/Generators/Reldis_i/src/components/Reldis_i_entries.cxx b/Generators/Reldis_i/src/components/Reldis_i_entries.cxx deleted file mode 100644 index 9de051638375015bdb637b9c6989989f525fad11..0000000000000000000000000000000000000000 --- a/Generators/Reldis_i/src/components/Reldis_i_entries.cxx +++ /dev/null @@ -1,4 +0,0 @@ -#include "Reldis_i/Reldis_i.h" - -DECLARE_COMPONENT( Reldis_i ) - diff --git a/Generators/TrackRecordGenerator/CMakeLists.txt b/Generators/TrackRecordGenerator/CMakeLists.txt deleted file mode 100644 index 80c29cd59b8162aa6b09cd820f886d5806625220..0000000000000000000000000000000000000000 --- a/Generators/TrackRecordGenerator/CMakeLists.txt +++ /dev/null @@ -1,35 +0,0 @@ -################################################################################ -# Package: TrackRecordGenerator -################################################################################ - -# Declare the package name: -atlas_subdir( TrackRecordGenerator ) - -# Declare the package's dependencies: -atlas_depends_on_subdirs( PUBLIC - Generators/GeneratorModules - PRIVATE - GaudiKernel - Simulation/G4Sim/TrackRecord ) - -# External dependencies: -find_package( CLHEP ) -find_package( HepMC ) - -# Component(s) in the package: -atlas_add_library( TrackRecordGeneratorLib - src/TrackRecordGenerator.cxx - PUBLIC_HEADERS TrackRecordGenerator - INCLUDE_DIRS ${CLHEP_INCLUDE_DIRS} ${HEPMC_INCLUDE_DIRS} - DEFINITIONS ${CLHEP_DEFINITIONS} - LINK_LIBRARIES ${CLHEP_LIBRARIES} ${HEPMC_LIBRARIES} GeneratorModulesLib - PRIVATE_LINK_LIBRARIES GaudiKernel ) - -atlas_add_component( TrackRecordGenerator - src/components/*.cxx - INCLUDE_DIRS ${CLHEP_INCLUDE_DIRS} ${HEPMC_INCLUDE_DIRS} - LINK_LIBRARIES ${CLHEP_LIBRARIES} ${HEPMC_LIBRARIES} GeneratorModulesLib GaudiKernel TrackRecordGeneratorLib ) - -# Install files from the package: -atlas_install_python_modules( python/*.py ) - diff --git a/Generators/TrackRecordGenerator/TrackRecordGenerator/TrackRecordGenerator.h b/Generators/TrackRecordGenerator/TrackRecordGenerator/TrackRecordGenerator.h deleted file mode 100644 index 7fd48ad08f157dc03ed99ee64914c2bb7dc28429..0000000000000000000000000000000000000000 --- a/Generators/TrackRecordGenerator/TrackRecordGenerator/TrackRecordGenerator.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -/** -@class TrackRecordGenerator - -@brief Track Record Generator. The class takes input simulation track records and uses them as generator records. - -@author - Zach Marshall <ZLMarshall@lbl.gov> - -*/ - -#ifndef TRACKRECORDGENERATOR_H -#define TRACKRECORDGENERATOR_H - -#include "GeneratorModules/GenModule.h" - -// Members -#include "CLHEP/Vector/LorentzVector.h" -#include "HepMC/Polarization.h" - -#include <vector> -#include <string> - -class TrackRecordGenerator : public GenModule { - public: - TrackRecordGenerator(const std::string& name, ISvcLocator* pSvcLocator); - virtual ~TrackRecordGenerator(); - virtual StatusCode callGenerator(); - virtual StatusCode fillEvt(HepMC::GenEvent* evt); - - private: - - // Event record holders - int m_events; - std::vector<int> m_pdgCode; - std::vector<CLHEP::HepLorentzVector> m_fourPos; - std::vector<CLHEP::HepLorentzVector> m_fourMom; - CLHEP::Hep3Vector m_center; - std::vector<HepMC::Polarization> m_polarization; - - // Options for track records - double m_smearTR; //!< Amount by which to smear TR position - double m_smearTRp; //!< Amount by which to smear TR momentum - std::string m_recordName; //!< TrackRecord collection name - bool m_stopParticles; //!< Stop particles before simulation - float m_stopped_tminus, m_stopped_tplus; //!< Bounds for random time - bool m_add_cL; //!< For stopped particles, add c*L to the time -}; - -#endif diff --git a/Generators/TrackRecordGenerator/python/TrackRecordGeneratorConfig.py b/Generators/TrackRecordGenerator/python/TrackRecordGeneratorConfig.py deleted file mode 100644 index b1e222ea17c28e8d31936b0c2be44d6b7c7de5d2..0000000000000000000000000000000000000000 --- a/Generators/TrackRecordGenerator/python/TrackRecordGeneratorConfig.py +++ /dev/null @@ -1,26 +0,0 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration - -############## Input: Reading Particles from TrackRecord Input File ############### -def getInput_TrackRecordGenerator(name="TrackRecordGenerator", **kwargs): - ## Configuring the Athena application for a 'track record' job - import G4AtlasApps.AtlasCosmicTrackRecordJob - kwargs.setdefault('TRCollection','CosmicRecord') # Collection name - kwargs.setdefault('TRSmearing', -1) #in millimeters, e.g. 10 - kwargs.setdefault('TRPSmearing', -1) #in radians, e.g. 0.01 - kwargs.setdefault('StopParticles', False) # Stop the particles or not - kwargs.setdefault('stopped_tminus', -25.) # in ns, lower bound - kwargs.setdefault('stopped_tplus', 25.) # in ns, upper bound - #kwargs.setdefault('OutputLevel', DEBUG) # for turning up output during testing - - ## Adding the TrackRecordGenerator to the list of algs - from TrackRecordGenerator.TrackRecordGeneratorConf import TrackRecordGenerator - algorithm = TrackRecordGenerator(**kwargs) - from AthenaCommon.AlgSequence import AlgSequence - topSequence = AlgSequence() - if not hasattr(topSequence, 'TrackRecordGenerator'): - topSequence += algorithm - - return algorithm - -def getTrackRecordCosmicGenerator(name="TrackRecordCosmicGenerator", **kwargs): - return getInput_TrackRecordGenerator(name, **kwargs) diff --git a/Generators/TrackRecordGenerator/python/TrackRecordGeneratorConfigDb.py b/Generators/TrackRecordGenerator/python/TrackRecordGeneratorConfigDb.py deleted file mode 100644 index a7e3cfafcdcd3f7f71aadb017c7f1e2069764072..0000000000000000000000000000000000000000 --- a/Generators/TrackRecordGenerator/python/TrackRecordGeneratorConfigDb.py +++ /dev/null @@ -1,6 +0,0 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration - -from AthenaCommon.CfgGetter import addAlgorithm - -addAlgorithm("TrackRecordGenerator.TrackRecordGeneratorConfig.getInput_TrackRecordGenerator", "TrackRecordGenerator") -addAlgorithm("TrackRecordGenerator.TrackRecordGeneratorConfig.getTrackRecordCosmicGenerator", "TrackRecordCosmicGenerator") diff --git a/Generators/TrackRecordGenerator/src/TrackRecordGenerator.cxx b/Generators/TrackRecordGenerator/src/TrackRecordGenerator.cxx deleted file mode 100644 index 1bff952ed34bf1538d1a58176efd9264bdb06770..0000000000000000000000000000000000000000 --- a/Generators/TrackRecordGenerator/src/TrackRecordGenerator.cxx +++ /dev/null @@ -1,208 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -// ------------------------------------------------------------- -// File: TrackRecordGenerator/TrackRecordGenerator.cxx -// Mostly adopted from the cosmic generator - -#include "TrackRecordGenerator/TrackRecordGenerator.h" - -#include "CLHEP/Vector/ThreeVector.h" -#include "CLHEP/Geometry/Normal3D.h" -#include "CLHEP/Units/PhysicalConstants.h" -#include "CLHEP/Random/RandFlat.h" - -#include "TrackRecord/TrackRecordCollection.h" - -#include <limits> -#include <cmath> -#include <vector> -#include <string> -#include <fstream> - -//-------------------------------------------------------------------------- -TrackRecordGenerator::TrackRecordGenerator(const std::string& name, ISvcLocator* pSvcLocator) - : GenModule(name,pSvcLocator) - , m_events(0) -{ - // Input collection name - declareProperty("TRCollection" , m_recordName = "CosmicRecord" ); - - // Smearing of the initial position for tracks - declareProperty("TRSmearing", m_smearTR=-1, "Smear the initial position of the track by up to this amount"); - declareProperty("TRPSmearing", m_smearTRp=-1, "Smear the momentum of the track by up to this amount"); - declareProperty("StopParticles", m_stopParticles=false, "Stop the particles and make them decay within 25 ns"); - declareProperty("stopped_tminus", m_stopped_tminus =-25. ); - declareProperty("stopped_tplus", m_stopped_tplus =25. ); - declareProperty("Add_cL", m_add_cL=true, "For stopped particles, shift the time by c times the decay rho"); -} - -//-------------------------------------------------------------------------- - TrackRecordGenerator::~TrackRecordGenerator() -{} - -//--------------------------------------------------------------------------- -StatusCode TrackRecordGenerator::callGenerator() { - - ++m_events; - ATH_MSG_DEBUG( "Event #" << m_events); - - // clear up the vectors - m_fourPos.clear(); - m_fourMom.clear(); - m_polarization.clear(); - m_pdgCode.clear(); - - //const DataHandle <TimedTrackRecordCollection> coll; - const DataHandle <TrackRecordCollection> coll; - CHECK( evtStore()->retrieve(coll,m_recordName) ); - - ATH_MSG_INFO("retrieved "<<coll->size()<<" TTR hits; will smear position by "<< (m_smearTR>0?m_smearTR:0.) <<" mm and momentum by "<< (m_smearTRp>0?m_smearTRp:0.) <<" radians"); - - for (auto iterTTR : *coll) { - - const HepPDT::ParticleData* particle = particleData(abs(iterTTR.GetPDGCode())); - double mass = particle->mass().value(); - double en = std::sqrt(mass*mass+iterTTR.GetMomentum().mag2()); - - ATH_MSG_VERBOSE("Reading back TTR:\n pos is "<<iterTTR.GetPosition() - <<"\n mom is "<<iterTTR.GetMomentum() - <<"\n pdg is "<<iterTTR.GetPDGCode() ); - - CLHEP::HepLorentzVector particle4Position( iterTTR.GetPosition(), iterTTR.GetTime()); - - ATH_MSG_DEBUG( "Smearing position by up to " << m_smearTR << " mm and momentum by up to " << m_smearTRp << " radians" ); - if (m_smearTR>0){ - ATH_MSG_DEBUG( "Track record started at " << particle4Position ); - - // if Z is maximal, move in X and Y; otherwise move in Z and "phi" - if ( particle4Position.z() == 22031 || particle4Position.z() == -22031 ){ //FIXME Hardcoded limits! - particle4Position.setX( particle4Position.x() + CLHEP::RandFlat::shoot(&randomEngine(), -m_smearTR, m_smearTR) ); - particle4Position.setY( particle4Position.y() + CLHEP::RandFlat::shoot(&randomEngine(), -m_smearTR, m_smearTR) ); - } else { - particle4Position.setZ( particle4Position.z() + CLHEP::RandFlat::shoot(&randomEngine(), -m_smearTR, m_smearTR) ); - double R = sqrt( pow( particle4Position.x(),2 ) + pow(particle4Position.y(),2 ) ); - double dPhi = atan2( m_smearTR, R ); - dPhi = CLHEP::RandFlat::shoot( &randomEngine(), -dPhi, dPhi ); - double theta = atan2( particle4Position.x() , particle4Position.y() ); - particle4Position.setX( R*sin( theta + dPhi ) ); - particle4Position.setY( R*cos( theta + dPhi ) ); - } - ATH_MSG_DEBUG( "Shifted track record to " << particle4Position ); - } - CLHEP::HepLorentzVector particle4Momentum( iterTTR.GetMomentum(), en ); - if (m_smearTRp>0){ - ATH_MSG_DEBUG( "Track record momentum was " << particle4Momentum ); - - // Keep p - smear an angle, and then randomly spin that change in (0,2PI) - double dTheta = CLHEP::RandFlat::shoot(&randomEngine(), 0, m_smearTRp); - double dPhi = CLHEP::RandFlat::shoot(&randomEngine(), 0, 2*M_PI); - - // Need a perpendicular vector... - CLHEP::HepLorentzVector perpendicularMomentum( 1 , 0 , 0 , 0); - if ( particle4Momentum.x() != 0 ){ - if (particle4Momentum.y() == 0){ - perpendicularMomentum.setX( 0 ); - perpendicularMomentum.setY( 1 ); - } else { - perpendicularMomentum.setX( particle4Momentum.y() ); - perpendicularMomentum.setY( particle4Momentum.x() ); - } - } - - // Now scale it based on dTheta - double tempP = pow(particle4Momentum.x(),2)+pow(particle4Momentum.y(),2)+pow(particle4Momentum.z(),2); - if ( tempP==0 ) { - ATH_MSG_DEBUG("Our initial momentum had zero magnitude!!"); - perpendicularMomentum.setX(0); - perpendicularMomentum.setY(0); - } else if ( tan(dTheta) == 0 ){ - ATH_MSG_DEBUG("Randomly deciding to keep the vector's direction..."); - perpendicularMomentum.setX(0); - perpendicularMomentum.setY(0); - } else { - double scale = ( tempP ) * sin(dTheta) / ( pow(perpendicularMomentum.x(),2)+pow(perpendicularMomentum.y(),2) ); - perpendicularMomentum.setX( perpendicularMomentum.x() * scale ); - perpendicularMomentum.setY( perpendicularMomentum.y() * scale ); - - // Rotate perpendicularMomentum by dPhi around particle4Momentum - perpendicularMomentum.rotate( dPhi , particle4Momentum.vect() ); - } - particle4Momentum.setX( particle4Momentum.x() + perpendicularMomentum.x() ); - particle4Momentum.setY( particle4Momentum.y() + perpendicularMomentum.y() ); - particle4Momentum.setZ( particle4Momentum.z() + perpendicularMomentum.z() ); - - // Rescale (very small effect, but want to include it) - double scale2 = tempP==0? 1 : (pow(particle4Momentum.x(),2)+pow(particle4Momentum.y(),2)+pow(particle4Momentum.z(),2)) / tempP; - particle4Momentum.setX( particle4Momentum.x() * scale2 ); - particle4Momentum.setY( particle4Momentum.y() * scale2 ); - particle4Momentum.setZ( particle4Momentum.z() * scale2 ); - ATH_MSG_DEBUG( "Rotated the vector by " << perpendicularMomentum ); - ATH_MSG_DEBUG( "And resulting momentum is " << particle4Momentum ); - } - if (m_stopParticles){ - ATH_MSG_DEBUG( "Will stop the track record where it is and give it mass " << mass ); - particle4Momentum.setX(0); - particle4Momentum.setY(0); - particle4Momentum.setZ(0); - particle4Momentum.setT(mass); - - double settime=CLHEP::RandFlat::shoot(&randomEngine(),m_stopped_tminus, m_stopped_tplus); - ATH_MSG_DEBUG( "Setting particle time to something uniform between "<<m_stopped_tminus<<" and "<<m_stopped_tplus<<" ns : " << settime ); - if (m_add_cL){ - settime += particle4Position.rho()/CLHEP::c_light; - } - particle4Position.setT(settime*CLHEP::c_light); // ct in mm - } - - m_fourPos.push_back( particle4Position ); - m_fourMom.push_back( particle4Momentum ); - - m_pdgCode.push_back(iterTTR.GetPDGCode()); - HepMC::Polarization thePolarization; - thePolarization.set_normal3d(HepGeom::Normal3D<double>(0,0,0)); - m_polarization.push_back(thePolarization); - - if (m_stopParticles){ - ATH_MSG_DEBUG( "Only one per event!!" ); - break; - } - } // Loop through the track record collection - - return StatusCode::SUCCESS; -} - -//--------------------------------------------------------------------------- -StatusCode TrackRecordGenerator::fillEvt(HepMC::GenEvent* event) { - - if(m_fourMom.size()==m_fourPos.size()&&m_fourMom.size()==m_polarization.size()){ - - for(std::size_t v=0;v<m_fourMom.size();++v){ - // Note: The vertex and particle are owned by the event, so the - // event is responsible for those pointers. - - // Create the particle, and specify its polarization. - HepMC::GenParticle* particle = new HepMC::GenParticle( m_fourMom[v], m_pdgCode[v], 1); - particle->set_polarization( m_polarization[v] ); - - // Create the vertex, and add the particle to the vertex. - HepMC::GenVertex* vertex = new HepMC::GenVertex(m_fourPos[v]); - vertex->add_particle_out( particle ); - - // Add the vertex to the event. - event->add_vertex( vertex ); - } // Loop over the particles - - event->set_event_number(m_events); // Set the event number - if (event->weights().empty()){ - event->weights().push_back(1.0); - } - return StatusCode::SUCCESS; - } else { - ATH_MSG_ERROR("Wrong different number of vertexes/momenta/polaritazions!"); - return StatusCode::FAILURE; - } - -} - diff --git a/Generators/TrackRecordGenerator/src/components/TrackRecordGenerator_entries.cxx b/Generators/TrackRecordGenerator/src/components/TrackRecordGenerator_entries.cxx deleted file mode 100644 index e6f43793a01dfb3b0419f5cf413053dba62b8171..0000000000000000000000000000000000000000 --- a/Generators/TrackRecordGenerator/src/components/TrackRecordGenerator_entries.cxx +++ /dev/null @@ -1,4 +0,0 @@ -#include "TrackRecordGenerator/TrackRecordGenerator.h" - -DECLARE_COMPONENT( TrackRecordGenerator ) - diff --git a/Generators/VBFNLOControl/CMakeLists.txt b/Generators/VBFNLOControl/CMakeLists.txt deleted file mode 100644 index bd543096b5e97bfbe0704dbb2c5f405cb2e7fa48..0000000000000000000000000000000000000000 --- a/Generators/VBFNLOControl/CMakeLists.txt +++ /dev/null @@ -1,11 +0,0 @@ -################################################################################ -# Package: VBFNLOControl -################################################################################ - -# Declare the package name: -atlas_subdir( VBFNLOControl ) - -# Install files from the package: -atlas_install_python_modules( python/*.py ) -atlas_install_joboptions( share/*.py ) - diff --git a/Generators/VBFNLOControl/python/VbfnloUtils.py b/Generators/VBFNLOControl/python/VbfnloUtils.py deleted file mode 100644 index 0fca036b083c9cfe07d3108a02149876a03c4377..0000000000000000000000000000000000000000 --- a/Generators/VBFNLOControl/python/VbfnloUtils.py +++ /dev/null @@ -1,409 +0,0 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration - -######################################################################################################################### -# -# Script to configure Vbfnlo subprocesses -# -# Authors: Florian Kiss <florian.kiss@cern.ch> -# -# -# -######################################################################################################################### - -#! /usr/bin/env python -import os,sys,time,subprocess,shutil -from AthenaCommon import Logging -log = Logging.logging.getLogger('VbfnloUtils') - - -class VbfnloConfig(): - error = 0 - - outputEventsName = 'VbfnloOutput._1.events' - VbfnloPath = os.environ['VBFNLOPATH'] - executablePath = VbfnloPath - executablePath += '/bin/vbfnlo' - - if VbfnloPath=='': - log.error('VBFNLO Setup Failed! Please set VbfnloPath correctly!') - error = 1 - - TestArea = os.environ['TestArea'] - - - nEvents = 1000 - energy = 8000 - muF = "125d0" - muR = "125d0" - pdf = 0 - randomSeed = 42 - runNumber = 777777 - - process = 100 - lo_iterations = 4 - lo_points = 21 - hmass = "125d0" - - #spin2 parameters - spin2 = "false" - f1 = "1d0" - f2 = "1d0" - f3 = "0d0" - f4 = "0d0" - f5 = "1d0" - lambd = "1.5d3" - nff = "0d0" - lambdaff = "4d2" - - #spin0 anomalous couplings - anom_cpl = "false" - formfactor_spin0 = ".false." - mass_scale = "200d0" - ffac_param = "2" - parametr1 = ".true." - lambda5 = "480d0" - g5e_hww = "1d0" - g5e_hzz = "1d0" - g5e_hgg = "1d0" - g5e_hgz = "1d0" - g5o_hww = "0d0" - g5o_hzz = "0d0" - g5o_hgg = "0d0" - g5o_hgz = "0d0" - #parametr2 = ".false." - #parametr3 = ".false." - treefacw = "0d0" - treefacz = "0d0" - loopfac = "0d0" - - - def __init__(self,runArgs=None): - - self.runArgs = runArgs - if runArgs == None : - log.warning('No run arguments found! Using defaults.') - #print 'No run arguments found! Using defaults.' - else : - if hasattr(self.runArgs,'ecmEnergy'): - self.energy = self.runArgs.ecmEnergy - - if hasattr(self.runArgs,'maxEvents'): - if self.runArgs.maxEvents > 0 : - self.nEvents = self.runArgs.maxEvents - - if hasattr(self.runArgs,'randomSeed'): - self.randomSeed = self.runArgs.randomSeed - - if not hasattr(runArgs,'inputGeneratorFile'): - runArgs.inputGeneratorFile = self.outputEventsName+'.tar.gz' - - if hasattr(runArgs,'runNumber'): - self.runNumber = runArgs.runNumber - - - def launchOnTheFly(self): - self.selectProcess() - self.generateRunCard() - self.generateEvents() - return 0 - - - def selectProcess(self): - if self.runNumber == 169883: - self.process = 101 - - elif self.runNumber == 169884: - self.process = 101 - self.anom_cpl = "true" - self.generateAnomCouplDat() - - elif self.runNumber == 169885: - self.process = 101 - self.anom_cpl = "true" - self.g5e_hww = "0d0" - self.g5e_hzz = "0d0" - self.g5e_hgg = "0d0" - self.g5e_hgz = "0d0" - self.g5o_hww = "1d0" - self.g5o_hzz = "1d0" - self.g5o_hgg = "1d0" - self.g5o_hgz = "1d0" - self.generateAnomCouplDat() - - elif self.runNumber == 169886: - self.process = 191 - self.spin2 = "true" - self.generateSpin2Dat() - self.lo_points = 23 - - elif self.runNumber == 777777: - log.info('No default settings for couplings and processes used. The user is responsible for a correct setup!') - - else: - log.error('RunNumber is not yet connected to any VBFNLO process. Please retry with different a RunNumber.') - self.error = 1 - return 0 - - - def generateRunCard(self): - log.info("Writing vbfnlo.dat to "+str(self.TestArea)+"/vbfnlo.dat") - #print "Writing vbfnlo.dat to "+str(self.TestArea)+"/vbfnlo.dat" - - with open( str(self.TestArea)+'/vbfnlo.dat','w') as f: - #with open( 'vbfnlo.dat','w') as f: - f.write( "! General parameters of the calculation !-------------------------------------------\n") - f.write( "PROCESS = "+ str(self.process) +" ! Identifier for process\n") - f.write( "LOPROCESS_PLUS_JET = false ! switch: LO process with 1 additional jet\n") - f.write( "LEPTONS = 11 -11 13 -13 15 -15 ! final state leptons\n") - f.write( "LO_ITERATIONS = "+ str(self.lo_iterations) +" ! number of iterations for LO calculation\n") - f.write( "NLO_ITERATIONS = 4 ! number of iterations for LO real-emissions calc.\n") - f.write( "LO_POINTS = "+ str(self.lo_points) +" ! number of points for LO calculation (= 2^..)\n") - f.write( "NLO_POINTS = 25 ! number of points for real-emissions calc. \n") - f.write( 'LO_GRID = "grid2_1" "grid2_2" "grid2_3" "grid2_4" ! names of gridfiles for LO calculation\n') - f.write( 'NLO_GRID = "grid3_1" "grid3_2" "grid3_3" "grid3_4" ! names of gridfiles for real emissions calculation\n') - f.write( 'PHTN_GRID = "grid4_1" "grid4_2" "grid4_3" "grid4_4" ! names of gridfiles for photon emission calculation\n') - f.write( 'FLOOP_GRID = "grid5_1" "grid5_2" "grid5_3" "grid5_4" ! names of gridfiles for fermion loop calculation\n') - f.write( "NLO_SWITCH = false ! switch: nlo/lo calculation\n") - f.write( "EWCOR_SWITCH = false ! Whether electroweak corrections are included\n") - f.write( "FERMIONLOOP = 3 ! Contribution of gluon-induced fermionic loops for diboson processes\n\n") - - f.write( "ECM = "+ str(self.energy) +" ! collider center-of-mass energy\n") - f.write( "BEAM1 = 1 ! type of beam 1 (1=proton, -1 = antiproton)\n") - f.write( "BEAM2 = 1 ! type of beam 2 (1=proton, -1 = antiproton)\n\n") - - f.write( "ID_MUF = 0 ! ID for factorization scale\n") - f.write( "ID_MUR = 0 ! ID for renormalization scale\n") - f.write( "MUF_USER = "+ str(self.muF) + " ! user defined factorization scale, if MUF is set to 0\n") - f.write( "MUR_USER = "+ str(self.muR) + " ! user defined renormalization scale, if MUR is set to 0\n") - f.write( "XIF = 1d0 ! scale factor xi for mu_F (not mu^2!!)\n") - f.write( "XIR = 1d0 ! scale factor xi for mu_R\n\n") - - f.write( "! Physics parameters\n") - f.write( "!------------------------\n") - f.write( "HMASS = "+ str(self.hmass) +" ! Higgs mass\n") - f.write( "HTYPE = 0 ! Type of Higgs produced\n") - f.write( "MODEL = 1 ! model: 1 for SM, 2 for MSSM\n") - f.write( "HWIDTH = -999d0 ! Higgs width (set to -999d0 for internal calculation)\n") - f.write( "TOPMASS = 172.4d0 ! Top mass\n") - f.write( "BOTTOMMASS = 4.855d0 ! Bottom Pole mass\n") - f.write( "CHARMMASS = 1.65d0 ! Charm Pole mass\n") - f.write( "TAU_MASS = 1.77684D0 ! Tau mass\n") - f.write( "EWSCHEME = 3 ! Choose scheme for electroweak parameters (1,2,3,4,5,6)\n") - f.write( "DEL_ALFA = 0.059047686d0 ! Delta alfa\n") - f.write( "ANOM_CPL = "+ str(self.anom_cpl) +" ! Anomalous couplings\n") - f.write( "KK_MOD = false ! Warped Higgsless Model\n") - f.write( "SPIN2 = "+ str(self.spin2) + " ! Spin-2 model\n") - f.write( "EW_APPROX = 5 ! Approximation used when calculating electroweak \n\n") - - f.write( "FERMI_CONST = 1.16637d-5 ! Fermi Constant\n") - f.write( "INVALFA = 137.035999679D0 ! 1/fine-structure constant\n") - f.write( "SIN2W = 0.23116d0 ! Weak mixing angle\n") - f.write( "WMASS = 80.398d0 ! W mass\n") - f.write( "ZMASS = 91.1876d0 ! Z mass\n\n") - - f.write( "! Parameters for the LHA event output\n") - f.write( "!-----------------------------------------\n") - f.write( "LHA_SWITCH = true ! Les Houches interface only for LO calculation\n") - f.write( "LHA_FILE = event.lhe ! Name of Les Houches output file\n") - f.write( "HEPMC_SWITCH = false ! HepMC interface only for LO calculation\n") - f.write( "HEPMC_FILE = event.hepmc ! Name of HepMC output file\n") - f.write( "PREMAXW_FRAC = 0.005 ! fraction of phase space points to calculate pre-maximal weight\n") - f.write( "UNWEIGHTING_SWITCH = true ! unweighted/weighted (T/F) events event files\n") - f.write( "PREMAXW_FRAC = 0.005 ! fraction of phase space points to calculate pre-maximal weight\n") -# f.write( "PRENEVUNW = 1000 ! number of events to calculate pre-maximal weight\n") - f.write( "TAUMASS = false ! Include mass of the tau lepton(s) in the event file for VBF processes\n\n") - - - f.write( "! PDF set parameters\n") - f.write( "!------------------------\n") - f.write( "PDF_SWITCH = "+ str(self.pdf) +" ! which pdfs to use:\n") - f.write( "! 0 = hard-wired cteq6 (LO) and CT10 (NLO)\n") - f.write( "! 1 = lhapdf (use LO_PDFNAME etc to specify)\n") - f.write( "! 2 = hard-wired mrst2004qed\n") - f.write( "! 3 = hard-wired MSTW2008\n") - f.write( "! choose pdfset and pdfmember here. Look at the LHAPDF manual for details.\n") - f.write( "LO_PDFNAME = cteq6ll.LHpdf\n") - f.write( "NLO_PDFNAME = CT10.LHgrid\n") - f.write( "LO_PDFMEMBER = 0\n") - f.write( "NLO_PDFMEMBER = 0\n\n") - - f.write( "! Parameters for histogram creation\n") - f.write( "!---------------------------------------\n") - f.write( "XSECFILE = xsection ! name of output-file (+ .out)\n") - f.write( "ROOT = false ! create root-file?\n") - f.write( "TOP = false ! create top-drawer file?\n") - f.write( "GNU = false ! create gnu-plot script file?\n") - f.write( "DATA = false ! create data file?\n") - f.write( "REPLACE = true ! replace output files?\n") - f.write( "ROOTFILE = histograms ! name of root-file ( + '.root')\n") - f.write( "TOPFILE = histograms ! name of top-drawer file ( + '.top')\n") - f.write( "GNUFILE = histograms ! name of gnuplot file ( + '.gp')\n") - f.write( "DATAFILE = histograms ! name of data directory ( + '.dir')\n\n") - - with open( str(self.TestArea)+ '/random.dat','w') as f: - f.write( "SEED = " + str(self.randomSeed)) - - #copy/generate cuts.dat -# log.info("For now copying cuts.dat to "+str(self.TestArea)+"/vbfnlo.dat") -# shutil.copy(self.VbfnloPath+'/share/VBFNLO/cuts.dat', self.TestArea) - - log.info("Writing cuts.dat to "+str(self.TestArea)+"/cuts.dat") - with open( str(self.TestArea)+'/cuts.dat','w') as f: - f.write( " ! input file for the cut parameters \n") - f.write( " \n") - f.write( " ! Jet cuts \n") - f.write( " !------------- \n") - f.write( " RJJ_MIN = 0.4d0 ! min jet-jet R separation \n") - f.write( " Y_P_MAX = 5.0d0 ! max pseudorapidity for partons \n") - f.write( " PGENKTJET = -1.0d0 ! exponent of generalised k_T algorithm \n") - f.write( " PT_JET_MIN = 10.0d0 ! min jet pT \n") - f.write( " Y_JET_MAX = 5.0d0 ! max jet rapidity \n") - f.write( " \n") - f.write( " ! Lepton cuts (only applied to charged leptons) \n") - f.write( " !-------------------------------------------------- \n") - f.write( " Y_L_MAX = 20d0 ! max lepton rapidity \n") - f.write( " PT_L_MIN = -10.0d0 ! min lepton pT \n") - f.write( " MLL_MIN = 15.0d0 ! min. m_l+l- for any comb. of opposite charged leptons \n") - f.write( " MLL_MAX = 1d20 ! max. m_l+l- for any comb. of opposite charged leptons \n") - f.write( " RLL_MIN = 0.4d0 ! min lepton-lepton R separation \n") - f.write( " RLL_MAX = 50.0d0 ! max lepton-lepton R separation \n") - f.write( " \n") - f.write( " ! Photon cuts \n") - f.write( " !---------------- \n") - f.write( " Y_G_MAX = 5d0 ! max pseudorapidity for photons \n") - f.write( " PT_G_MIN = 0d0 ! min transverse momentum for photons \n") - f.write( " RGG_MIN = 0.4d0 ! min photon-photon R separation \n") - f.write( " RGG_MAX = 50.0d0 ! max photon-photon R separation \n") - f.write( " PHISOLCUT = 0.4d0 ! photon isolation cut \n") - f.write( " EFISOLCUT = 1d0 ! efficiency of photon isolation cut \n") - f.write( " \n") - f.write( " ! Additional cuts \n") - f.write( " !--------------------------------- \n") - f.write( " RJL_MIN = 0.6d0 ! min jet-lepton R separation \n") - f.write( " RJG_MIN = 0.4d0 ! min jet-photon R separation \n") - f.write( " RLG_MIN = 0.6d0 ! min lepton-photon R separation \n") - f.write( " MLG_MIN = 0.0d0 ! min. m_lg for any comb. of charged leptons and photons \n") - f.write( " MLG_MAX = 1.d20 ! max. m_lg for any comb. of charged leptons and photons \n") - f.write( " \n") - f.write( " ! Vector boson fusion cuts (only applied to tagging jets in VBF processes) \n") - f.write( " !---------------------------------------------------------------------------- \n") - f.write( " ETAJJ_MIN = 0d0 ! jet-jet rapidity separation \n") - f.write( " YSIGN = false ! jets #1 and #2 must have opposite sign rapidity \n") - f.write( " LRAPIDGAP = false ! leptons fall inside rapidity gap \n") - f.write( " DELY_JL = 0.0d0 ! min y-dist of leptons from tagging jets \n") - f.write( " GRAPIDGAP = false ! photons fall inside rapidity gap \n") - f.write( " DELY_JG = 0.0d0 ! min y-dist of photons from tagging jets \n") - f.write( " \n") - f.write( " MDIJ_MIN = 0.0d0 ! dijet min mass cut on tag jet \n") - f.write( " MDIJ_MAX = 1d20 ! dijet max mass cut on tag jet \n") - f.write( " \n") - f.write( " ! Jet Veto \n") - f.write( " !--------------------------------- \n") - f.write( " JVETO = false ! veto jet cuts \n") - f.write( " DELY_JVETO = 0.0d0 ! min veto-tag y-dist \n") - f.write( " YMAX_VETO = 4.5d0 ! max |y| for veto jet \n") - f.write( " PTMIN_VETO = 50.0d0 ! min pT for veto jet \n") - - return 0 - - - def generateSpin2Dat(self): - log.info("Writing spin2coupl.dat to "+str(self.TestArea)+"/spin2coupl.dat") - - with open( str(self.TestArea)+'/spin2coupl.dat','w') as f: - f.write( "!! Parameters for spin-2 model\n\n") - f.write( "f1 = " + str(self.f1) + "\n") - f.write( "f2 = " + str(self.f2) + "\n") - f.write( "f3 = " + str(self.f3) + "\n") - f.write( "f4 = " + str(self.f4) + "\n") - f.write( "f5 = " + str(self.f5) + "\n\n") - f.write( "! Triplet couplings\n\n") - f.write( "f6 = 0d0\n") - f.write( "f7 = 0d0\n\n") - f.write( "! energy scale of couplings (singlet and triplet) in GeV\n\n") - f.write( "lambda = " + str(self.lambd) + "\n\n") - - f.write( "sp2mass = " + str(self.hmass) + "! mass of a spin-2 singlet particle\n") - f.write( "msp2trippm = " + str(self.hmass) + "! mass of a (pos. or neg.) charged spin-2 triplet particle\n") - f.write( "msp2tripn = " + str(self.hmass) + "! mass of a neutral spin-2 triplet particle\n\n") - - f.write( "! branching ratio parameters for the widths (0.2 <= brrat(tripn/pm) <= 1.0)\n") - f.write( "!(Spin-2 particles could decay into particles which are not considered here)\n\n") - - f.write( "brrat = 1.0d0 ! branching ratio for sp2width (singlet width)\n") - f.write( "brrattrippm = 1.0d0 ! branching ratio for sp2trippmwidth (charged triplet width)\n") - f.write( "brrattripn = 1.0d0 ! branching ratio for sp2tripnwidth (neutral triplet width)\n\n") - - f.write( "! parameters of the formfactor\n\n") - - f.write( "nff = " + str(self.nff) + " ! exponent of the formfactor\n") - f.write( "lambdaff = " + str(self.lambdaff) + " ! energy scale of the formfactor (in GeV)\n") - return 0 - - - def generateAnomCouplDat(self): - log.info("Writing anom_HVV.dat to "+str(self.TestArea)+"/vbfnlo.dat") - - with open( str(self.TestArea)+'anom_HVV.dat','w') as f: - f.write( '------------------------------set anomalous HVV couplings\n') - f.write( '------------------------------set form factor\n') - f.write( 'FORMFACTOR = ' + str(self.formfactor_spin0) + ' ! form factor on(=.true.) or off(=.false.)\n') - f.write( 'MASS_SCALE = ' + str(self.mass_scale) + ' ! mass scale for new physics\n') - f.write( 'FFAC = ' + str(self.ffac_param) + ' ! ffac=1: m^2/(q1^2-m^2)*m^2/(q2^2-m^2), ffac=2: C0(m,q1^2,q2^2,mH^2)\n') - f.write( '------------------------------Parametrisation: Phys. Lett. B591, 297\n') - f.write( 'PARAMETR1 = .true. ! switch for this parametrisation; on(=.true.) or off(=.false.)\n') - f.write( 'LAMBDA5 = ' + str(self.lambda5) + ' !lambda5\n') - f.write( 'G5E_HWW = ' + str(self.g5e_hww) + ' ! g5e_hww, CP-even\n') - f.write( 'G5E_HZZ = ' + str(self.g5e_hzz) + ' ! g5e_hzz\n') - f.write( 'G5E_HGG = ' + str(self.g5e_hgg) + ' ! g5e_hgg\n') - f.write( 'G5E_HGZ = ' + str(self.g5e_hgz) + ' ! g5e_hgz\n') - f.write( 'G5O_HWW = ' + str(self.g5o_hww) + ' ! g5o_hww, CP-odd\n') - f.write( 'G5O_HZZ = ' + str(self.g5o_hzz) + ' ! g5o_hzz\n') - f.write( 'G5O_HGG = ' + str(self.g5o_hgg) + ' ! g5o_hgg\n') - f.write( 'G5O_HGZ = ' + str(self.g5o_hgz) + ' ! g5o_hgz\n') - f.write( ' ------------------------------Parametrisation of the L3-Collaboration \n') - f.write( ' PARAMETR2 = .false. ! switch for this parametrisation; on(=.true.) or off=(.false.) \n') - f.write( ' D_EVEN = 0.0d0 ! d, CP-even \n') - f.write( ' DB_EVEN = 0.0d0 ! d_B \n') - f.write( ' DG1Z_EVEN = -0.060D0 ! Delta_g1_Z \n') - f.write( ' DKGAM_EVEN = 0.077D0 ! Delta_kappa_gamma \n') - f.write( ' D_ODD = 0.0d0 ! d, CP-odd \n') - f.write( ' DB_ODD = 0.0d0 ! d_B \n') - f.write( ' KGAM_ODD = 0.0d0 ! kappa_gamma \n') - f.write( ' HVV1 = 4 ! choice for anomalous couplings used: hzg = 0, hgg = 1, hzz = 2, hww = 3, all = 4\n') - f.write( ' -----------------------------Parametrisation: Phys. Lett. B318, 155 \n') - f.write( ' -----------------------------(f_BW=0) in (GeV^-2) \n') - f.write( ' PARAMETR3 = .false. ! switch for this parametrisation; on(=.true.) or off(=.false.) \n') - f.write( ' FWW_EVEN = 0.0d0 ! f_WW/Lambda^2, CP-even \n') - f.write( ' FBB_EVEN = 0.0d0 ! f_BB/Lambda^2 \n') - f.write( ' FW_EVEN = -1.44d-5 ! f_W/Lambda^2 \n') - f.write( ' FB_EVEN = 3.82D-5 ! f_B/Lambda^2 \n') - f.write( ' FWW_ODD = 0.0d0 ! f_WW/Lambda^2, CP-odd \n') - f.write( ' FBB_ODD = 0.0d0 ! f_BB/Lambda^2 \n') - f.write( ' FB_ODD = 0.0d0 ! f_B/Lambda^2 \n') - f.write( ' HVV2 = 4 ! choice for anomalous couplings used: hzg = 0, hgg = 1, hzz = 2, hww = 3, all = 4\n') - f.write( ' -----------------------------for all Parametrisations \n') - f.write( ' TREEFACW = ' + str(self.treefacw) + ' ! factor for SM hWW tensor (sin(alpha-beta) in MSSM) \n') - f.write( ' TREEFACZ = ' + str(self.treefacz) + ' ! factor for SM hZZ tensor (sin(alpha-beta) in MSSM) \n') - f.write( ' LOOPFAC = ' + str(self.loopfac) + ' ! factor multiplying hZgamma and hgammagamma sm loops \n') - return 0 - - - def generateEvents(self): - if self.error == 1: - log.error('An error occured! No event generation!') - return 0 - - #print 'Generating events' - log.info('Start Generating VBFNLO LHEF events at '+str(time.asctime())) - log.info('Running ' + str(self.executablePath)) - - generate = subprocess.Popen( [self.executablePath,'']) - generate.wait() - os.rename('event.lhe',self.outputEventsName) - - rezip = subprocess.Popen(['tar','cvzf',str(self.outputEventsName) + '.tar.gz',self.outputEventsName]) - rezip.wait() - - log.info('Finished at '+str(time.asctime())) - return 0 diff --git a/Generators/VBFNLOControl/python/__init__.py b/Generators/VBFNLOControl/python/__init__.py deleted file mode 100644 index 74583d364ec2ca794156596c7254d9b234a940c6..0000000000000000000000000000000000000000 --- a/Generators/VBFNLOControl/python/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration - diff --git a/Generators/VBFNLOControl/share/MC12.Hgg_test.py b/Generators/VBFNLOControl/share/MC12.Hgg_test.py deleted file mode 100644 index 0252a03fae486181e1ea081c5ab84c69b86c736b..0000000000000000000000000000000000000000 --- a/Generators/VBFNLOControl/share/MC12.Hgg_test.py +++ /dev/null @@ -1,28 +0,0 @@ -#Test job options to see how things work. -include("VBFNLOControl/MC12_VBFNLO.py") - -VbfnloConfig.lo_points = 21 -VbfnloConfig.launchOnTheFly() - -#-------------------------------------------------------------- -# General MC12 configuration -#-------------------------------------------------------------- -#to be changed - -from AthenaCommon.AlgSequence import AlgSequence -topAlg = AlgSequence("TopAlg") - -evgenConfig.description = "VBFNLO VBF X->gamma gamma with UEEE3,CTEQ6L1 SpinCP 0p SM" -evgenConfig.keywords = ["vbf", "higgs", "gamma", "SpinCP"] - -include("MC12JobOptions/Herwigpp_UEEE3_CTEQ6L1_LHEF_Common.py") -evgenConfig.generators += ["Lhef"] - -cmds = """ -create ThePEG::ParticleData graviton -setup graviton 39 G 125.0 0.0 0.0 0.0 3 0 1 0 - -decaymode graviton->gamma,gamma; 1.0 1 /Herwig/Decays/Mambo -""" - -topAlg.Herwigpp.Commands += cmds.splitlines() diff --git a/Generators/VBFNLOControl/share/MC12_VBFNLO.py b/Generators/VBFNLOControl/share/MC12_VBFNLO.py deleted file mode 100644 index d519ac97c3ac4fa58a44aad3b6cad7bee4d974db..0000000000000000000000000000000000000000 --- a/Generators/VBFNLOControl/share/MC12_VBFNLO.py +++ /dev/null @@ -1,7 +0,0 @@ -from VBFNLOControl.VbfnloUtils import VbfnloConfig - -# Use the Vbfnlo_SMHiggs configuration -if 'runArgs' in dir() : - VbfnloConfig = VbfnloConfig(runArgs) -else : - VbfnloConfig = VbfnloConfig() diff --git a/Projects/AthGeneration/package_filters.txt b/Projects/AthGeneration/package_filters.txt index 576ff199df6036ed393051f4912fb912fe1b8de3..b340bb9a2c063d07c11ebdcf893dd4559fe43a93 100644 --- a/Projects/AthGeneration/package_filters.txt +++ b/Projects/AthGeneration/package_filters.txt @@ -138,30 +138,7 @@ + Event/xAOD/xAODTruthCnv + External/AtlasDataArea + External/Pythia8 -- Generators/AcerMC_i -- Generators/AlpGen_i + Generators/Charybdis_i -- Generators/CompHep_i -- Generators/EmbeddedTrackGenerator -- Generators/ExoGraviton_i -- Generators/GravADD_i -- Generators/Herwig_i -- Generators/Horace_i -- Generators/HvGen_i -- Generators/MadCUP_i -- Generators/MadGraph_i -- Generators/Matchig_i -- Generators/McAtNlo_i -- Generators/Protos_i -- Generators/Pyquench_i -- Generators/Pythia_i -- Generators/PythiaB -- Generators/PythiaChL_i -- Generators/PythiaExo_i -- Generators/PythiaRhad_i -- Generators/Reldis_i -- Generators/VBFNLOControl -- Generators/TrackRecordGenerator + Generators/.* + InnerDetector/InDetExample/InDetRecExample #+ InnerDetector/InDetRecTools/InDetTrackSelectionTool diff --git a/Projects/Athena/package_filters.txt b/Projects/Athena/package_filters.txt index 515f66b6c0ba927a183c7dd9f5af6508a7619f5d..2bc7cb2e226fbd909075b13159b0ad39e7712c36 100644 --- a/Projects/Athena/package_filters.txt +++ b/Projects/Athena/package_filters.txt @@ -24,29 +24,7 @@ - graphics/VP1/VP1Systems/VP1TriggerDecisionSystems + graphics/VP1/.* -# Some generators that are no longer needed in the release -- Generators/AcerMC_i -- Generators/AlpGen_i -- Generators/CompHep_i -- Generators/EmbeddedTrackGenerator -- Generators/ExoGraviton_i -- Generators/GravADD_i -- Generators/Herwig_i -- Generators/Horace_i -- Generators/HvGen_i -- Generators/MadCUP_i -- Generators/MadGraph_i -- Generators/Matchig_i -- Generators/McAtNlo_i -- Generators/Protos_i -- Generators/Pyquench_i -- Generators/Pythia_i -- Generators/PythiaB -- Generators/PythiaChL_i -- Generators/PythiaExo_i -- Generators/PythiaRhad_i -- Generators/Reldis_i -- Generators/VBFNLOControl + # Some analysis packages that are not part of Athena - Control/AthLinksSA