From a04011121a575f9cc5deab2441a34c0171438d4d Mon Sep 17 00:00:00 2001 From: SciPost Editorial Administration <edadmin@scipost.org> Date: Mon, 12 Aug 2024 15:05:44 +0200 Subject: [PATCH] Include GAPS-1.1 --- gaps-1.1/LICENSE | 674 ++++++++++++++++++ gaps-1.1/README.md | 63 ++ gaps-1.1/cpp-shower/.vscode/settings.json | 3 + gaps-1.1/cpp-shower/CMakeLists.txt | 27 + gaps-1.1/cpp-shower/base/CMakeLists.txt | 5 + gaps-1.1/cpp-shower/base/include/base.h | 34 + gaps-1.1/cpp-shower/base/include/event.h | 219 ++++++ gaps-1.1/cpp-shower/base/include/histogram.h | 331 +++++++++ gaps-1.1/cpp-shower/base/include/parton.h | 36 + gaps-1.1/cpp-shower/base/include/qcd.h | 87 +++ gaps-1.1/cpp-shower/base/include/vec4.h | 131 ++++ gaps-1.1/cpp-shower/main.cpp | 174 +++++ gaps-1.1/cpp-shower/matrix/CMakeLists.txt | 9 + gaps-1.1/cpp-shower/matrix/include/matrix.h | 23 + gaps-1.1/cpp-shower/matrix/src/matrix.cpp | 80 +++ .../cpp-shower/observables/CMakeLists.txt | 9 + .../cpp-shower/observables/include/dalitz.h | 9 + .../observables/include/eventshapes.h | 11 + .../cpp-shower/observables/include/jetrates.h | 10 + .../observables/include/observables.h | 47 ++ .../cpp-shower/observables/src/dalitz.cpp | 23 + .../observables/src/eventshapes.cpp | 156 ++++ .../cpp-shower/observables/src/jetrates.cpp | 95 +++ .../observables/src/observables.cpp | 69 ++ gaps-1.1/cpp-shower/shower/CMakeLists.txt | 9 + gaps-1.1/cpp-shower/shower/include/shower.h | 51 ++ gaps-1.1/cpp-shower/shower/src/colours.cpp | 55 ++ gaps-1.1/cpp-shower/shower/src/kinematics.cpp | 31 + gaps-1.1/cpp-shower/shower/src/shower.cpp | 187 +++++ gaps-1.1/cpp-shower/shower/src/splittings.cpp | 240 +++++++ gaps-1.1/doc/README.md | 15 + gaps-1.1/doc/extra/acceptveto.csv | 116 +++ gaps-1.1/doc/extra/acceptveto.py | 35 + gaps-1.1/doc/extra/gaps.sh | 123 ++++ gaps-1.1/doc/extra/results-in-paper.tar.gz | Bin 0 -> 104425 bytes gaps-1.1/doc/extra/splittings-test.cuh | 100 +++ gaps-1.1/doc/extra/versioncontrol.py | 36 + gaps-1.1/doc/sections/code-structure.md | 24 + gaps-1.1/doc/sections/getting-started.md | 65 ++ gaps-1.1/doc/sections/matrix-element.md | 13 + gaps-1.1/doc/sections/observables.md | 15 + gaps-1.1/doc/sections/paraveto.png | Bin 0 -> 142633 bytes gaps-1.1/doc/sections/parton-shower.md | 21 + gaps-1.1/doc/sections/structure.png | Bin 0 -> 168743 bytes gaps-1.1/doc/sections/veto.png | Bin 0 -> 166556 bytes gaps-1.1/doc/tutorials/basicExample.cu | 32 + gaps-1.1/doc/tutorials/parallelFor.cu | 106 +++ gaps-1.1/doc/tutorials/saxpy.cu | 45 ++ gaps-1.1/gaps/.vscode/settings.json | 3 + gaps-1.1/gaps/CMakeLists.txt | 43 ++ gaps-1.1/gaps/base/CMakeLists.txt | 18 + gaps-1.1/gaps/base/include/base.cuh | 69 ++ gaps-1.1/gaps/base/include/event.cuh | 242 +++++++ gaps-1.1/gaps/base/include/histogram.cuh | 259 +++++++ gaps-1.1/gaps/base/include/parton.cuh | 45 ++ gaps-1.1/gaps/base/include/qcd.cuh | 55 ++ gaps-1.1/gaps/base/include/vec4.cuh | 160 +++++ gaps-1.1/gaps/base/src/base.cu | 25 + gaps-1.1/gaps/base/src/histogram.cu | 83 +++ gaps-1.1/gaps/base/src/qcd.cu | 110 +++ gaps-1.1/gaps/main.cu | 166 +++++ gaps-1.1/gaps/matrix/CMakeLists.txt | 21 + gaps-1.1/gaps/matrix/include/matrix.cuh | 43 ++ gaps-1.1/gaps/matrix/src/matrix.cu | 131 ++++ gaps-1.1/gaps/observables/CMakeLists.txt | 21 + gaps-1.1/gaps/observables/include/dalitz.cuh | 9 + .../gaps/observables/include/eventshapes.cuh | 11 + .../gaps/observables/include/jetrates.cuh | 10 + .../gaps/observables/include/observables.cuh | 60 ++ gaps-1.1/gaps/observables/src/dalitz.cu | 31 + gaps-1.1/gaps/observables/src/eventshapes.cu | 175 +++++ gaps-1.1/gaps/observables/src/jetrates.cu | 110 +++ gaps-1.1/gaps/observables/src/observables.cu | 160 +++++ gaps-1.1/gaps/shower/CMakeLists.txt | 21 + gaps-1.1/gaps/shower/include/colours.cuh | 66 ++ gaps-1.1/gaps/shower/include/kinematics.cuh | 42 ++ gaps-1.1/gaps/shower/include/shower.cuh | 56 ++ gaps-1.1/gaps/shower/include/splittings.cuh | 266 +++++++ gaps-1.1/gaps/shower/src/shower.cu | 462 ++++++++++++ gaps-1.1/rungaps | 104 +++ gaps-1.1/test/SH-Tutorial.yoda | 464 ++++++++++++ gaps-1.1/test/completedevents.sh | 25 + gaps-1.1/test/mplstyleerc | 21 + gaps-1.1/test/plot-completedevents.py | 62 ++ gaps-1.1/test/plot-executiontime.py | 147 ++++ gaps-1.1/test/plots.conf | 88 +++ gaps-1.1/test/rivet-command.sh | 6 + 87 files changed, 7534 insertions(+) create mode 100644 gaps-1.1/LICENSE create mode 100644 gaps-1.1/README.md create mode 100644 gaps-1.1/cpp-shower/.vscode/settings.json create mode 100644 gaps-1.1/cpp-shower/CMakeLists.txt create mode 100644 gaps-1.1/cpp-shower/base/CMakeLists.txt create mode 100644 gaps-1.1/cpp-shower/base/include/base.h create mode 100644 gaps-1.1/cpp-shower/base/include/event.h create mode 100644 gaps-1.1/cpp-shower/base/include/histogram.h create mode 100644 gaps-1.1/cpp-shower/base/include/parton.h create mode 100644 gaps-1.1/cpp-shower/base/include/qcd.h create mode 100644 gaps-1.1/cpp-shower/base/include/vec4.h create mode 100644 gaps-1.1/cpp-shower/main.cpp create mode 100644 gaps-1.1/cpp-shower/matrix/CMakeLists.txt create mode 100644 gaps-1.1/cpp-shower/matrix/include/matrix.h create mode 100644 gaps-1.1/cpp-shower/matrix/src/matrix.cpp create mode 100644 gaps-1.1/cpp-shower/observables/CMakeLists.txt create mode 100644 gaps-1.1/cpp-shower/observables/include/dalitz.h create mode 100644 gaps-1.1/cpp-shower/observables/include/eventshapes.h create mode 100644 gaps-1.1/cpp-shower/observables/include/jetrates.h create mode 100644 gaps-1.1/cpp-shower/observables/include/observables.h create mode 100644 gaps-1.1/cpp-shower/observables/src/dalitz.cpp create mode 100644 gaps-1.1/cpp-shower/observables/src/eventshapes.cpp create mode 100644 gaps-1.1/cpp-shower/observables/src/jetrates.cpp create mode 100644 gaps-1.1/cpp-shower/observables/src/observables.cpp create mode 100644 gaps-1.1/cpp-shower/shower/CMakeLists.txt create mode 100644 gaps-1.1/cpp-shower/shower/include/shower.h create mode 100644 gaps-1.1/cpp-shower/shower/src/colours.cpp create mode 100644 gaps-1.1/cpp-shower/shower/src/kinematics.cpp create mode 100644 gaps-1.1/cpp-shower/shower/src/shower.cpp create mode 100644 gaps-1.1/cpp-shower/shower/src/splittings.cpp create mode 100644 gaps-1.1/doc/README.md create mode 100644 gaps-1.1/doc/extra/acceptveto.csv create mode 100644 gaps-1.1/doc/extra/acceptveto.py create mode 100755 gaps-1.1/doc/extra/gaps.sh create mode 100644 gaps-1.1/doc/extra/results-in-paper.tar.gz create mode 100644 gaps-1.1/doc/extra/splittings-test.cuh create mode 100644 gaps-1.1/doc/extra/versioncontrol.py create mode 100644 gaps-1.1/doc/sections/code-structure.md create mode 100644 gaps-1.1/doc/sections/getting-started.md create mode 100644 gaps-1.1/doc/sections/matrix-element.md create mode 100644 gaps-1.1/doc/sections/observables.md create mode 100644 gaps-1.1/doc/sections/paraveto.png create mode 100644 gaps-1.1/doc/sections/parton-shower.md create mode 100644 gaps-1.1/doc/sections/structure.png create mode 100644 gaps-1.1/doc/sections/veto.png create mode 100644 gaps-1.1/doc/tutorials/basicExample.cu create mode 100644 gaps-1.1/doc/tutorials/parallelFor.cu create mode 100644 gaps-1.1/doc/tutorials/saxpy.cu create mode 100644 gaps-1.1/gaps/.vscode/settings.json create mode 100644 gaps-1.1/gaps/CMakeLists.txt create mode 100644 gaps-1.1/gaps/base/CMakeLists.txt create mode 100644 gaps-1.1/gaps/base/include/base.cuh create mode 100644 gaps-1.1/gaps/base/include/event.cuh create mode 100644 gaps-1.1/gaps/base/include/histogram.cuh create mode 100644 gaps-1.1/gaps/base/include/parton.cuh create mode 100644 gaps-1.1/gaps/base/include/qcd.cuh create mode 100644 gaps-1.1/gaps/base/include/vec4.cuh create mode 100644 gaps-1.1/gaps/base/src/base.cu create mode 100644 gaps-1.1/gaps/base/src/histogram.cu create mode 100644 gaps-1.1/gaps/base/src/qcd.cu create mode 100644 gaps-1.1/gaps/main.cu create mode 100644 gaps-1.1/gaps/matrix/CMakeLists.txt create mode 100644 gaps-1.1/gaps/matrix/include/matrix.cuh create mode 100644 gaps-1.1/gaps/matrix/src/matrix.cu create mode 100644 gaps-1.1/gaps/observables/CMakeLists.txt create mode 100644 gaps-1.1/gaps/observables/include/dalitz.cuh create mode 100644 gaps-1.1/gaps/observables/include/eventshapes.cuh create mode 100644 gaps-1.1/gaps/observables/include/jetrates.cuh create mode 100644 gaps-1.1/gaps/observables/include/observables.cuh create mode 100644 gaps-1.1/gaps/observables/src/dalitz.cu create mode 100644 gaps-1.1/gaps/observables/src/eventshapes.cu create mode 100644 gaps-1.1/gaps/observables/src/jetrates.cu create mode 100644 gaps-1.1/gaps/observables/src/observables.cu create mode 100644 gaps-1.1/gaps/shower/CMakeLists.txt create mode 100644 gaps-1.1/gaps/shower/include/colours.cuh create mode 100644 gaps-1.1/gaps/shower/include/kinematics.cuh create mode 100644 gaps-1.1/gaps/shower/include/shower.cuh create mode 100644 gaps-1.1/gaps/shower/include/splittings.cuh create mode 100644 gaps-1.1/gaps/shower/src/shower.cu create mode 100755 gaps-1.1/rungaps create mode 100644 gaps-1.1/test/SH-Tutorial.yoda create mode 100644 gaps-1.1/test/completedevents.sh create mode 100644 gaps-1.1/test/mplstyleerc create mode 100644 gaps-1.1/test/plot-completedevents.py create mode 100644 gaps-1.1/test/plot-executiontime.py create mode 100644 gaps-1.1/test/plots.conf create mode 100644 gaps-1.1/test/rivet-command.sh diff --git a/gaps-1.1/LICENSE b/gaps-1.1/LICENSE new file mode 100644 index 0000000..f288702 --- /dev/null +++ b/gaps-1.1/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/> + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <https://www.gnu.org/licenses/>. + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + <program> Copyright (C) <year> <name of author> + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +<https://www.gnu.org/licenses/>. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +<https://www.gnu.org/licenses/why-not-lgpl.html>. diff --git a/gaps-1.1/README.md b/gaps-1.1/README.md new file mode 100644 index 0000000..b404d37 --- /dev/null +++ b/gaps-1.1/README.md @@ -0,0 +1,63 @@ +# GAPS: a GPU-Amplified Parton Shower + +> **Version 1.1.0**: Some extra features added on demand, folders restructured. + +Code for "An Algorithm to Parallelise Parton Showers on a GPU" [[arxiv:2403.08692](https://arxiv.org/abs/2403.08692)] + +The aim of this project is to demonstrate how a Parton Shower Veto Algorithm can be written to run in parallel on a GPU. The code runs a simple LEP Event Generator on NVIDIA GPUs using CUDA. It is based on S. Höche's Tutorial on Parton Showers [[arxiv:1411.4085](https://arxiv.org/abs/1411.4085)]. + +## What can the code do on the GPU? + +- Calculate the Matrix Element for $e^+ e^- \to q \bar{q}$ at 91.2 GeV +- Simulate a Final State Dipole Shower +- Calculate Jet Rates and Event Shapes + +## Requirements + +You will need an NVIDIA GPU, desgined for data centres (this code is verified to run on the NVIDIA Tesla V100 and A100 Devices). To build the code, you will need CMake, G++, Python and the NVIDIA Development Toolkit, which contains the NVCC compiler. + +## Running the Code + +The executable ```rungaps``` is written to simplify the use of the code. One can simply execute the command: + +```bash +./rungaps +``` + +NB: If you get a permission denied error, please run ```chmod +x rungaps```. + +This should build the program and generate 10000 events on the GPU. More customisation options are available, and are listed below: + +```bash +# Simulate different numbers of events and build the code using multiple CPU cores +./rungaps -n nevents -c ncores + +# Run C++ Simulation +./rungaps -n nevents -c ncores -r cpp + +# Run the same number of events on C++ and CUDA and compare times +./rungaps -n nevents -c ncores -r compare + +# Run a multitude of number of events 100 times, as seen in the paper +./rungaps -c ncores -r full +``` + +The histograms are saved as yoda files [[arxiv:2312.15070](https://arxiv.org/abs/2312.15070)]. To generate the plots, use Rivet [[arxiv:1912.05451](https://arxiv.org/abs/1912.05451)] as follows: + +```shell +rivet-mkhtml my-output.yoda:"Results" -s --mc-errs -c plots.conf +``` + +## Modifying Parameters and Going Further + +**New**: You can now adjust the Centre of Mass Energy using the ```-e``` flag + +To focus on the computational aspects and make it simple to replicate the results in the paper, we don't allow direct access to the physics parameters (yet!). For now, please use the ```base.cuh``` file to adjust parameters like $\alpha_s(m_Z)$, $t_{C}$ and $n_{Bins}$. + +To learn more about the code and how it all works, see the [documentation](doc/README.md). + +*** + +### Sid Sule + Mike Seymour, March 2024 + +For issues and queries, email: [siddharth.sule@manchester.ac.uk](mailto:siddharth.sule@manchester.ac.uk) diff --git a/gaps-1.1/cpp-shower/.vscode/settings.json b/gaps-1.1/cpp-shower/.vscode/settings.json new file mode 100644 index 0000000..23fd35f --- /dev/null +++ b/gaps-1.1/cpp-shower/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "editor.formatOnSave": true +} \ No newline at end of file diff --git a/gaps-1.1/cpp-shower/CMakeLists.txt b/gaps-1.1/cpp-shower/CMakeLists.txt new file mode 100644 index 0000000..7722eb2 --- /dev/null +++ b/gaps-1.1/cpp-shower/CMakeLists.txt @@ -0,0 +1,27 @@ +# Minimum required version of CMake +cmake_minimum_required(VERSION 3.10) + +# Project name and languages used +project(cpp-shower LANGUAGES CXX) + +# Set C++ standard +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +# List of subdirectories +set(SUBDIRS base matrix shower observables) + +# Include the directories for the headers +foreach(subdir ${SUBDIRS}) + include_directories(${subdir}/include) + add_subdirectory(${subdir}) +endforeach() + +# Set the directory for the executable +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin) + +# Add main.cpp to the executable +add_executable(cpp-shower main.cpp) + +# Link the libraries from the subdirectories +target_link_libraries(cpp-shower matrix shower observables) \ No newline at end of file diff --git a/gaps-1.1/cpp-shower/base/CMakeLists.txt b/gaps-1.1/cpp-shower/base/CMakeLists.txt new file mode 100644 index 0000000..47434ff --- /dev/null +++ b/gaps-1.1/cpp-shower/base/CMakeLists.txt @@ -0,0 +1,5 @@ +cmake_minimum_required(VERSION 3.10) + +set(CMAKE_CXX_STANDARD 17) + +include_directories(include) \ No newline at end of file diff --git a/gaps-1.1/cpp-shower/base/include/base.h b/gaps-1.1/cpp-shower/base/include/base.h new file mode 100644 index 0000000..81a34b0 --- /dev/null +++ b/gaps-1.1/cpp-shower/base/include/base.h @@ -0,0 +1,34 @@ +#ifndef BASE_H_ +#define BASE_H_ + +// ----------------------------------------------------------------------------- +// Import Libraries + +#include <cmath> // Math Functions +#include <fstream> // File I/O +#include <iostream> // Standard I/O +#include <random> // Random Number Generation +#include <vector> // Vector + +// ----------------------------------------------------------------------------- +// Program Settings - CAREFUL WITH CHANGES + +// Max Number of Partons, set to save memory +const int maxPartons = 30; + +// LEP 91.2 settings +const double mz = 91.1876; +const double asmz = 0.118; + +// Cutoff and its value of alpha_s (pre-calculated) +const double tC = 1.; +const double asmax = 0.440886; + +// Number of Histogram Bins: Common for all Plots (for now...) +const int nBins = 100; +const int nBins2D = 100; // 10x10 Grid + +// Maximum Number of Events, beyond which program will be done in batches +const int maxEvents = 1000000; + +#endif // BASE_H_ \ No newline at end of file diff --git a/gaps-1.1/cpp-shower/base/include/event.h b/gaps-1.1/cpp-shower/base/include/event.h new file mode 100644 index 0000000..26d5580 --- /dev/null +++ b/gaps-1.1/cpp-shower/base/include/event.h @@ -0,0 +1,219 @@ +#ifndef EVENT_H_ +#define EVENT_H_ + +#include "parton.h" + +// Event Class +// Built to contain the partons and the dxs as one accesible object +// In future, can use to store thrust, log10y23 to parallelise those +class Event { + private: + // Temporary Solution - Allows a limited number of partons + // Better Solution would be to use a dynamic array, but not GPU friendly + Parton partons[maxPartons]; + + // ME Params ----------------------------------------------------------------- + + double dxs = 0.; // Differential Cross Section + int nHard = 0; // Number of Hard Partons + // int nInitial = 0; // Number of Initial Partons (Prep for ISR) + // int nNonParton = 0; // Number of Non-Parton Partons (Prep for ISR) + + // Shower Params ------------------------------------------------------------- + + int nEmission = 0; // Number of Emissions + double showerT = 0.; // Evolution and Splitting Variables + double showerZ = 0.; + double showerY = 0.; + int showerC = 0; // Colour Counter + + // Selecting Winner Emission - Defaults Values which represent no winner + int winSF = 16; + int winDipole[2] = {-1, -1}; + double winParams[2] = {0., 0.}; + + bool endShower = false; // Shower End Flag - used if T < 1 GeV + + // Analysis Variables -------------------------------------------------------- + + // Event Validity - Momentum and Colour Conservation + bool validity = true; + + // Jet Rates using the Durham Algorithm + double y23 = -50., y34 = -50., y45 = -50., y56 = -50.; + + // Event Shape Variables - Thrust, Jet Masses and Broadenings + double thr = -50., hjm = -50., ljm = -50., wjb = -50., njb = -50.; + Vec4 t_axis = Vec4(); + + // Dalitz Plot + double dalitz[2] = {-50., -50.}; + + public: + // Constructor --------------------------------------------------------------- + + // Empty, so that we can build our ME, PS onto it + Event() {} + + // Getters ------------------------------------------------------------------- + + // Access Partons in the Event + Parton GetParton(int i) const { return partons[i]; } + int GetSize() const { return nHard + nEmission; } + int GetHard() const { return nHard; } + int GetEmissions() const { return nEmission; } + int GetPartonSize() const { return (nHard + nEmission) - 2; } // -2: e+, e- + + // Get Differential Cross Section + double GetDxs() const { return dxs; } + + // Get Shower Params + double GetShowerT() const { return showerT; } + double GetShowerY() const { return showerY; } + double GetShowerZ() const { return showerZ; } + int GetShowerC() const { return showerC; } + + // Get Winner Emission + int GetWinSF() const { return winSF; } + int GetWinDipole(int i) const { return winDipole[i]; } + double GetWinParam(int i) const { return winParams[i]; } + + // Get Analysis Variables + bool GetValidity() const { return validity; } + + double GetY23() const { return y23; } + double GetY34() const { return y34; } + double GetY45() const { return y45; } + double GetY56() const { return y56; } + double GetThr() const { return thr; } + double GetHJM() const { return hjm; } + double GetLJM() const { return ljm; } + double GetWJB() const { return wjb; } + double GetNJB() const { return njb; } + + Vec4 GetTAxis() const { return t_axis; } + + double GetDalitz(int i) const { return dalitz[i]; } + + // Setters ------------------------------------------------------------------- + + // Add / Replace Parton + void SetParton(int i, Parton parton) { partons[i] = parton; } + + // Not used in ME [HOST] + void SetPartonPid(int i, int pid) { partons[i].SetPid(pid); } + void SetPartonMom(int i, Vec4 mom) { partons[i].SetMom(mom); } + void SetPartonCol(int i, int col) { partons[i].SetCol(col); } + void SetPartonAntiCol(int i, int anticol) { partons[i].SetAntiCol(anticol); } + + // Set Differential Cross Section and nHard + void SetDxs(double dxs) { this->dxs = dxs; } + void SetHard(int nHard) { this->nHard = nHard; } + + // Adjust and Increment Number of Emissions + void SetEmissions(int nEmission) { this->nEmission = nEmission; } + void IncrementEmissions() { nEmission++; } + + // Set Shower Params + void SetShowerT(double showerT) { this->showerT = showerT; } + void SetShowerY(double showerY) { this->showerY = showerY; } + void SetShowerZ(double showerZ) { this->showerZ = showerZ; } + + void SetShowerC(int showerC) { this->showerC = showerC; } + void IncrementShowerC() { showerC++; } + + // Set Winner Emission + void SetWinSF(int winSF) { this->winSF = winSF; } + void SetWinDipole(int i, int winDipole) { this->winDipole[i] = winDipole; } + void SetWinParam(int i, double winParams) { this->winParams[i] = winParams; } + + // Set Analysis Variables + void SetValidity(bool validity) { this->validity = validity; } + + void SetY23(double y23) { this->y23 = y23; } + void SetY34(double y34) { this->y34 = y34; } + void SetY45(double y45) { this->y45 = y45; } + void SetY56(double y56) { this->y56 = y56; } + void SetThr(double thr) { this->thr = thr; } + void SetHJM(double hjm) { this->hjm = hjm; } + void SetLJM(double ljm) { this->ljm = ljm; } + void SetWJB(double wjb) { this->wjb = wjb; } + void SetNJB(double njb) { this->njb = njb; } + + void SetTAxis(Vec4 t_axis) { this->t_axis = t_axis; } + + void SetDalitz(double x1, double x2) { + dalitz[0] = x1; + dalitz[1] = x2; + } + + // Member Functions ---------------------------------------------------------- + + // Validation of Result Data + bool Validate() { + Vec4 psum = Vec4(); + + std::vector<int> csum(100, 0); + + for (int i = 0; i < GetSize(); i++) { + Parton p = GetParton(i); + + Vec4 pmom = p.GetMom(); + int pcol = p.GetCol(); + int pAntiCol = p.GetAntiCol(); + + psum = psum + pmom; + + if (pcol > 0) { + csum[pcol] += 1; + } + + if (pAntiCol > 0) { + csum[pAntiCol] -= 1; + } + } + + bool pcheck = (psum[0] < 1e-12 && psum[1] < 1e-12 && psum[2] < 1e-12 && + psum[3] < 1e-12); + if (!pcheck) { + std::cout << psum << std::endl; + } + + bool ccheck = true; + for (int i = 0; i < 100; i++) { + if (csum[i] != 0) { + std::cout << "Colour " << i << " is not conserved." << std::endl; + ccheck = false; + break; + } + } + + return pcheck && ccheck; + } + + void print_info() const { + std::cout << "Event Information:\n"; + std::cout << "Dxs: " << GetDxs() << "\n"; + std::cout << "Number of Emissions: " << GetEmissions() << "\n"; + std::cout << "Shower T: " << GetShowerT() << "\n"; + std::cout << "Shower Y: " << GetShowerY() << "\n"; + std::cout << "Shower Z: " << GetShowerZ() << "\n"; + std::cout << "Shower C: " << GetShowerC() << "\n"; + std::cout << "Winner SF: " << GetWinSF() << "\n"; + std::cout << "Winner Dipole 1: " << GetWinDipole(0) << "\n"; + std::cout << "Winner Dipole 2: " << GetWinDipole(1) << "\n"; + std::cout << "Winner Params 1: " << GetWinParam(0) << "\n"; + std::cout << "Winner Params 2: " << GetWinParam(1) << "\n"; + std::cout << "Partons:\n"; + for (int i = 0; i < GetSize(); i++) { + Parton parton = GetParton(i); + std::cout << " Parton " << i << ":\n"; + std::cout << " Pid: " << parton.GetPid() << "\n"; + std::cout << " Mom: " << parton.GetMom() << "\n"; + std::cout << " Col: " << parton.GetCol() << "\n"; + std::cout << " AntiCol: " << parton.GetAntiCol() << "\n"; + } + } +}; + +#endif // EVENT_H_ \ No newline at end of file diff --git a/gaps-1.1/cpp-shower/base/include/histogram.h b/gaps-1.1/cpp-shower/base/include/histogram.h new file mode 100644 index 0000000..82163b6 --- /dev/null +++ b/gaps-1.1/cpp-shower/base/include/histogram.h @@ -0,0 +1,331 @@ +#ifndef HISTOGRAM_H_ +#define HISTOGRAM_H_ + +#include <fstream> +#include <iomanip> +#include <sstream> +#include <string> + +#include "base.h" + +// Bin1D class +class Bin1D { + public: + double xmin, xmax, w, w2, wx, wx2, n; + + public: + Bin1D(double xmin, double xmax) + : xmin(xmin), xmax(xmax), w(0.), w2(0.), wx(0.), wx2(0.), n(0.) {} + + std::string Format(const std::string& tag) const { + std::stringstream ss; + ss << std::scientific << std::setprecision(6); + ss << tag << "\t" << tag << "\t" << w << "\t" << w2 << "\t" << wx << "\t" + << wx2 << "\t" << static_cast<int>(n); + return ss.str(); + } + + std::string ToString() const { + std::stringstream ss; + ss << std::scientific << std::setprecision(6); + ss << xmin << "\t" << xmax << "\t" << w << "\t" << w2 << "\t" << wx << "\t" + << wx2 << "\t" << static_cast<int>(n); + return ss.str(); + } + + double Width() const { return xmax - xmin; } + + void Fill(double x, double weight) { + this->w += weight; + w2 += weight * weight; + wx += weight * x; + wx2 += weight * weight * x; + n += 1.; + } + + void ScaleW(double scale) { + w *= scale; + w2 *= scale * scale; + wx *= scale; + wx2 *= scale * scale; + } +}; + +class Bin2D { + public: + double xmin, xmax, ymin, ymax, w, w2, wx, wx2, wy, wy2, wxy, n; + + public: + Bin2D(double xmin, double xmax, double ymin, double ymax) + : xmin(xmin), + xmax(xmax), + ymin(ymin), + ymax(ymax), + w(0.), + w2(0.), + wx(0.), + wx2(0.), + wy(0.), + wy2(0.), + wxy(0.), + n(0.) {} + + std::string Format(const std::string& tag) const { + std::stringstream ss; + ss << std::scientific << std::setprecision(6); + ss << tag << "\t" << tag << "\t" << w << "\t" << w2 << "\t" << wx << "\t" + << wx2 << "\t" << wy << "\t" << wy2 << "\t" << static_cast<int>(n); + return ss.str(); + } + + std::string ToString() const { + std::stringstream ss; + ss << std::scientific << std::setprecision(6); + ss << xmin << "\t" << xmax << "\t" << ymin << "\t" << ymax << "\t" << w + << "\t" << w2 << "\t" << wx << "\t" << wx2 << "\t" << wy << "\t" << wy2 + << "\t" << wxy << "\t" << static_cast<int>(n); + return ss.str(); + } + + double WidthX() const { return xmax - xmin; } + double WidthY() const { return ymax - ymin; } + + void Fill(double x, double y, double weight) { + this->w += weight; + w2 += weight * weight; + wx += weight * x; + wx2 += weight * weight * x; + wy += weight * y; + wy2 += weight * weight * y; + wxy += weight * x * y; + n += 1.; + } + + void ScaleW(double scale) { + w *= scale; + w2 *= scale * scale; + wx *= scale; + wx2 *= scale * scale; + wy *= scale; + wy2 *= scale * scale; + wxy *= scale * scale; + } +}; + +// Histo1D class +class Histo1D { + public: + std::string name; + std::vector<Bin1D> bins; + Bin1D uflow; + Bin1D oflow; + Bin1D total; + double scale; + + public: + // Constructor for Histo1D + Histo1D(double xmin = 0., double xmax = 1., const std::string& name = "hst") + : name(name), + uflow(xmin - 100., xmin), + oflow(xmax, xmax + 100.), + total(xmin - 100., xmax + 100.), + scale(1.) { + double width = (xmax - xmin) / nBins; + for (int i = 0; i < nBins; ++i) { + double xlow = xmin + i * width; + double xhigh = xlow + width; + bins.push_back(Bin1D(xlow, xhigh)); + } + } + + std::string ToString() const { + std::stringstream ss; + ss << "BEGIN YODA_HISTO1D " << name << "\n\n"; + ss << "Path=" << name << "\n\n"; + ss << "ScaledBy=" << scale << "\n"; + ss << "Title=\nType=Histo1D\n"; + ss << "# ID\tID\tsumw\tsumw2\tsumwx\tsumwx2\tnumEntries\n"; + ss << total.Format("Total") << "\n"; + ss << uflow.Format("Underflow") << "\n"; + ss << oflow.Format("Overflow") << "\n"; + ss << "# xlow\txhigh\tsumw\tsumw2\tsumwx\tsumwx2\tnumEntries\n"; + for (const auto& bin : bins) { + ss << bin.ToString() << "\n"; + } + ss << "END YODA_HISTO1D\n\n"; + return ss.str(); + } + + void Fill(double x, double w) { + int l = 0; + int r = bins.size() - 1; + int c = (l + r) / 2; + double a = bins[c].xmin; + + while (r - l > 1) { + if (x < a) { + r = c; + } else { + l = c; + } + c = (l + r) / 2; + a = bins[c].xmin; + } + + if (x > bins[r].xmin) { + if (x > bins[r].xmax) { + oflow.Fill(x, w); + } else { + bins[r].Fill(x, w); + } + } else if (x < bins[l].xmin) { + uflow.Fill(x, w); + } else { + bins[l].Fill(x, w); + } + + total.Fill(x, w); + } + + void ScaleW(double scale) { + for (auto& bin : bins) { + bin.ScaleW(scale); + } + uflow.ScaleW(scale); + oflow.ScaleW(scale); + total.ScaleW(scale); + this->scale *= scale; + } + + void Write(const std::string& filename) const { + std::ofstream file; + file.open(filename, std::ios::out | std::ios::app); + file << ToString(); + file.close(); + } +}; + +// Histo2D class +class Histo2D { + public: + std::string name; + std::vector<std::vector<Bin2D>> bins; + Bin2D uflow; + Bin2D oflow; + Bin2D total; + double scale; + + public: + // Constructor for Histo2D + Histo2D(double xmin = 0., double xmax = 1., double ymin = 0., + double ymax = 1., const std::string& name = "hst") + : name(name), + uflow(xmin - 100., xmin, ymin - 100., ymin), + oflow(xmax, xmax + 100., ymax, ymax + 100.), + total(xmin - 100., xmax + 100., ymin - 100., ymax + 100.), + scale(1.) { + double xwidth = (xmax - xmin) / nBins2D; + double ywidth = (ymax - ymin) / nBins2D; + for (int i = 0; i < nBins2D; ++i) { + double xlow = xmin + i * xwidth; + double xhigh = xlow + xwidth; + std::vector<Bin2D> binRow; + for (int j = 0; j < nBins2D; ++j) { + double ylow = ymin + j * ywidth; + double yhigh = ylow + ywidth; + binRow.push_back(Bin2D(xlow, xhigh, ylow, yhigh)); + } + bins.push_back(binRow); + } + } + + std::string ToString() const { + std::stringstream ss; + ss << "BEGIN YODA_HISTO2D " << name << "\n\n"; + ss << "Path=" << name << "\n\n"; + ss << "ScaledBy=" << scale << "\n"; + ss << "Title=\nType=Histo2D\n"; + ss << "# ID\tID\tsumw\tsumw2\tsumwx\tsumwx2\tsumwy\tsumwy2\tnumEntries\n"; + ss << total.Format("Total") << "\n"; + ss << "# " + "xlow\txhigh\tylow\tyhigh\tsumw\tsumw2\tsumwx\tsumwx2\tsumwy\tsumwy2" + "\tnumEntries\n"; + for (const auto& binRow : bins) { + for (const auto& bin : binRow) { + ss << bin.ToString() << "\n"; + } + } + ss << "END YODA_HISTO2D\n\n"; + return ss.str(); + } + + void Fill(double x, double y, double w) { + // Find the bin for the x-coordinate + int lx = 0; + int rx = bins.size() - 1; + int cx = (lx + rx) / 2; + double ax = bins[cx][0].xmin; + + while (rx - lx > 1) { + if (x < ax) { + rx = cx; + } else { + lx = cx; + } + cx = (lx + rx) / 2; + ax = bins[cx][0].xmin; + } + + // Find the bin for the y-coordinate + int ly = 0; + int ry = bins[0].size() - 1; + int cy = (ly + ry) / 2; + double ay = bins[0][cy].ymin; + + while (ry - ly > 1) { + if (y < ay) { + ry = cy; + } else { + ly = cy; + } + cy = (ly + ry) / 2; + ay = bins[0][cy].ymin; + } + + // Fill the appropriate bin + if (x > bins[rx][0].xmin && y > bins[0][ry].ymin) { + if (x > bins[rx][0].xmax || y > bins[0][ry].ymax) { + oflow.Fill(x, y, w); + } else { + bins[rx][ry].Fill(x, y, w); + } + } else if (x < bins[lx][0].xmin || y < bins[0][ly].ymin) { + uflow.Fill(x, y, w); + } else { + bins[lx][ly].Fill(x, y, w); + } + + total.Fill(x, y, w); + } + + void ScaleW(double scale) { + for (auto& binRow : bins) { + for (auto& bin : binRow) { + bin.ScaleW(scale); + } + } + uflow.ScaleW(scale); + oflow.ScaleW(scale); + total.ScaleW(scale); + this->scale *= scale; + } + + void Write(const std::string& filename) const { + std::ofstream file; + file.open(filename, std::ios::out | std::ios::app); + file << ToString(); + file.close(); + } +}; + +#endif // HISTOGRAM_H_ \ No newline at end of file diff --git a/gaps-1.1/cpp-shower/base/include/parton.h b/gaps-1.1/cpp-shower/base/include/parton.h new file mode 100644 index 0000000..35f292d --- /dev/null +++ b/gaps-1.1/cpp-shower/base/include/parton.h @@ -0,0 +1,36 @@ +#ifndef PARTON_H_ +#define PARTON_H_ + +// Partons have Vec4 Momentum, Vec4 #includes Base +#include "vec4.h" + +class Parton { + public: + // Constructor + Parton(int pid = 0, Vec4 momentum = Vec4(), int col = 0, int anticol = 0) + : pid(pid), mom(momentum), col(col), anticol(anticol) {} + + // Getters and Setters + int GetPid() const { return pid; } + Vec4 GetMom() const { return mom; } + int GetCol() const { return col; } + int GetAntiCol() const { return anticol; } + + void SetPid(int pid) { this->pid = pid; } + void SetMom(Vec4 mom) { this->mom = mom; } + void SetCol(int col) { this->col = col; } + void SetAntiCol(int anticol) { this->anticol = anticol; } + + // Boolean - If two partons are in a Colour Connected Dipole + bool IsColorConnected(Parton p) { + return (col > 0 && col == p.anticol) || (anticol > 0 && anticol == p.col); + } + + private: + int pid; + Vec4 mom; + int col; + int anticol; +}; + +#endif // PARTON_H_ diff --git a/gaps-1.1/cpp-shower/base/include/qcd.h b/gaps-1.1/cpp-shower/base/include/qcd.h new file mode 100644 index 0000000..3ac5682 --- /dev/null +++ b/gaps-1.1/cpp-shower/base/include/qcd.h @@ -0,0 +1,87 @@ +#ifndef QCD_H_ +#define QCD_H_ + +// Base Class, with all the important definitions +#include "base.h" + +const double kNC = 3.; +const double kTR = 0.5; +const double kCA = kNC; +const double kCF = (kNC * kNC - 1.) / (2. * kNC); + +class AlphaS { + private: + int order; + double mc2, mb2, mz2, asmz, asmb, asmc; + + public: + // Constructor + AlphaS(double mz, double asmz, int order = 1, double mb = 4.75, + double mc = 1.27) + : order(order), + mc2(mc * mc), + mb2(mb * mb), + mz2(mz * mz), + asmz(asmz), + asmb((*this)(mb2)), + asmc((*this)(mc2)) {} + + // Beta functions + double Beta0(int nf) const { return (11. / 6. * kCA) - (2. / 3. * kTR * nf); } + + double Beta1(int nf) const { + return (17. / 6. * kCA * kCA) - ((5. / 3. * kCA + kCF) * kTR * nf); + } + + // Alpha_s at order 0 and 1 (One-Loop and Two-Loop) + double As0(double t) const { + double tref, asref, b0; + if (t >= mb2) { + tref = mz2; + asref = asmz; + b0 = Beta0(5) / (2. * M_PI); + } else if (t >= mc2) { + tref = mb2; + asref = asmb; + b0 = Beta0(4) / (2. * M_PI); + } else { + tref = mc2; + asref = asmc; + b0 = Beta0(3) / (2. * M_PI); + } + return 1. / (1. / asref + b0 * log(t / tref)); + } + + double As1(double t) const { + double tref, asref, b0, b1, w; + if (t >= mb2) { + tref = mz2; + asref = asmz; + b0 = Beta0(5) / (2. * M_PI); + b1 = Beta1(5) / pow(2. * M_PI, 2); + } else if (t >= mc2) { + tref = mb2; + asref = asmb; + b0 = Beta0(4) / (2. * M_PI); + b1 = Beta1(4) / pow(2. * M_PI, 2); + } else { + tref = mc2; + asref = asmc; + b0 = Beta0(3) / (2. * M_PI); + b1 = Beta1(3) / pow(2. * M_PI, 2); + } + w = 1. + b0 * asref * log(t / tref); + return asref / w * (1. - b1 / b0 * asref * log(w) / w); + } + + // Call operator to calculate alpha_s + double operator()(double t) { + if (order == 0) { + return As0(t); + } else { + return As1(t); + } + } +}; + +#endif // QCD_H_ \ No newline at end of file diff --git a/gaps-1.1/cpp-shower/base/include/vec4.h b/gaps-1.1/cpp-shower/base/include/vec4.h new file mode 100644 index 0000000..d4b032e --- /dev/null +++ b/gaps-1.1/cpp-shower/base/include/vec4.h @@ -0,0 +1,131 @@ +#ifndef VEC4_H_ +#define VEC4_H_ + +// Base Class, with all the important definitions +#include "base.h" + +class Vec4 { + private: + double E, px, py, pz; + + public: + // Constructor - Define key attributes Energy and Momentum + Vec4(double E = 0., double px = 0., double py = 0., double pz = 0.) + : E(E), px(px), py(py), pz(pz) {} + + // Get Method to Obtain Attribute Value + double operator[](int i) const { + switch (i) { + case 0: + return E; + case 1: + return px; + case 2: + return py; + case 3: + return pz; + default: + return 0; + } + } + + // Print a Column Vector with the attributes + friend std::ostream& operator<<(std::ostream& os, const Vec4& v) { + os << "(" << v.E << "," << v.px << "," << v.py << "," << v.pz << ")"; + return os; + } + + // Simple Mathematics with Four vectors + Vec4 operator+(const Vec4& v) const { + return Vec4(E + v.E, px + v.px, py + v.py, pz + v.pz); + } + + Vec4 operator-() const { return Vec4(-E, -px, -py, -pz); } + + Vec4 operator-(const Vec4& v) const { + return Vec4(E - v.E, px - v.px, py - v.py, pz - v.pz); + } + + // Multiplication (and Dot Product) + double operator*(const Vec4& v) const { + return E * v.E - px * v.px - py * v.py - pz * v.pz; + } + + Vec4 operator*(double v) const { return Vec4(E * v, px * v, py * v, pz * v); } + + // Division + Vec4 operator/(double v) const { return Vec4(E / v, px / v, py / v, pz / v); } + + // Magnitude of the Vector + double M2() const { return (*this) * (*this); } + + double M() const { + double m2 = M2(); + return m2 > 0 ? sqrt(m2) : 0; + } + + // 3 Momenta + double P2() const { return px * px + py * py + pz * pz; } + + double P() const { + double p2 = P2(); + return p2 > 0 ? sqrt(p2) : 0; + } + + // Transverse Momenta + double PT2() const { return px * px + py * py; } + + double PT() const { + double pt2 = PT2(); + return pt2 > 0 ? sqrt(pt2) : 0; + } + + // Angles + double Theta() const { + double p = P(); + return p != 0 ? acos(pz / p) : 0; + } + + double Phi() const { + if (px == 0 && py == 0) { + return 0.; + } else { + return atan2(py, px); + } + } + + double Rapidity() const { + double denominator = (E - pz); + return denominator != 0 ? 0.5 * log((E + pz) / denominator) : 0; + } + + double Eta() const { + double theta = Theta(); + return -log(tan(theta / 2.)); + } + + // Three Momenta Dot and Cross Product + double Dot(const Vec4& v) const { return px * v.px + py * v.py + pz * v.pz; } + + Vec4 Cross(const Vec4& v) const { + return Vec4(0., py * v.pz - pz * v.py, pz * v.px - px * v.pz, + px * v.py - py * v.px); + } + + // Boosts + Vec4 Boost(const Vec4& v) const { + double rsq = M(); + double v0 = (E * v.E - px * v.px - py * v.py - pz * v.pz) / rsq; + double c1 = (v.E + v0) / (rsq + E); + return Vec4(v0, v.px - c1 * px, v.py - c1 * py, v.pz - c1 * pz); + } + + Vec4 BoostBack(const Vec4& v) const { + double rsq = M(); + double v0 = (E * v.E + px * v.px + py * v.py + pz * v.pz) / rsq; + double c1 = (v.E + v0) / (rsq + E); + return Vec4(v0, v.px + c1 * px, v.py + c1 * py, v.pz + c1 * pz); + } +}; + +#endif // VEC4_H_ diff --git a/gaps-1.1/cpp-shower/main.cpp b/gaps-1.1/cpp-shower/main.cpp new file mode 100644 index 0000000..17b7c11 --- /dev/null +++ b/gaps-1.1/cpp-shower/main.cpp @@ -0,0 +1,174 @@ +// To Measure Wall Clock Time and Write to File +#include <chrono> +#include <fstream> + +// Base Components +#include "base.h" + +// ME +#include "matrix.h" + +// Shower +#include "shower.h" + +// Analysis +#include "observables.h" + +/** + * GAPS: C++ Shower for Comparison + * ------------------------------------ + * + * This program is a translation of S. Höche's "Introduction to Parton Showers" + * Python tutorial[1], with added functionality for parallelisation, a Event + * class and event shape analyses. + * + * The purpose of this program is to compare the performance of the C++ and + * CUDA versions of the shower, and to compare the performance of the C++ with + * parallelisation and CUDA. + * + * [1] https://arxiv.org/abs/1411.4085 and MCNET-CTEQ 2021 Tutorial + */ + +// ----------------------------------------------------------------------------- + +void runGenerator(const int& N, const double& E, const std::string& filename) { + // --------------------------------------------------------------------------- + // Give some information about the simulation + + std::cout << "-------------------------------------------------" << std::endl; + std::cout << "| GAPS: C++ Shower for Comparison |" << std::endl; + std::cout << "-------------------------------------------------" << std::endl; + std::cout << "Process: e+ e- --> q qbar" << std::endl; + std::cout << "Number of Events: " << N << std::endl; + std::cout << "Centre of Mass Energy: " << E << " GeV" << std::endl; + std::cout << "" << std::endl; + + // --------------------------------------------------------------------------- + // Inititalisation + + std::cout << "Initialising..." << std::endl; + std::vector<Event> events(N); + + // --------------------------------------------------------------------------- + // Matrix Element Generation + + std::cout << "Generating Matrix Elements (C++)..." << std::endl; + auto start = std::chrono::high_resolution_clock::now(); + + Matrix xs(asmz, E); + + for (int i = 0; i < N; i++) { + xs.GenerateLOPoint(events[i]); // Random Seed + // (same seed option is off in matrix.cpp!) + } + + auto end = std::chrono::high_resolution_clock::now(); + std::chrono::duration<double> diff_me = end - start; + + // --------------------------------------------------------------------------- + // Showering + + std::cout << "Showering Partons (C++)..." << std::endl; + start = std::chrono::high_resolution_clock::now(); + + Shower sh; + + for (int i = 0; i < N; i++) { + sh.Run(events[i]); // Random Seed + // (same seed option is off in shower.cpp!) + } + + end = std::chrono::high_resolution_clock::now(); + std::chrono::duration<double> diff_sh = end - start; + + // --------------------------------------------------------------------------- + // Analysis + + std::cout << "Analysing Events (C++)..." << std::endl; + start = std::chrono::high_resolution_clock::now(); + + // Remove existing file + std::remove(filename.c_str()); + + Analysis an; + + // Analyze events (Including Validation of Colour and Momentum Conservation) + for (int i = 0; i < N; i++) { + an.Analyze(events[i]); + } + + // Storage + an.Finalize(filename); + + end = std::chrono::high_resolution_clock::now(); + std::chrono::duration<double> diff_an = end - start; + + // --------------------------------------------------------------------------- + // Results + + double diff = diff_me.count() + diff_sh.count() + diff_an.count(); + + std::cout << "" << std::endl; + std::cout << "EVENT GENERATION COMPLETE" << std::endl; + std::cout << "" << std::endl; + std::cout << "ME Time: " << diff_me.count() << " s" << std::endl; + std::cout << "Sh Time: " << diff_sh.count() << " s" << std::endl; + std::cout << "An Time: " << diff_an.count() << " s" << std::endl; + std::cout << "" << std::endl; + std::cout << "Total Time: " << diff << " s" << std::endl; + std::cout << "" << std::endl; + + // Open the file in append mode. This will create the file if it doesn't + // exist. + std::ofstream outfile("cpp-time.dat", std::ios_base::app); + + // Write diff_sh.count() to the file. + outfile << diff_me.count() << ", " << diff_sh.count() << ", " + << diff_an.count() << ", " << diff << std::endl; + + // Close the file. + outfile.close(); + + std::cout << "Histograms written to " << filename << std::endl; + std::cout << "Timing data written to cpp-time.dat" << std::endl; + std::cout << "------------------------------------------------" << std::endl; +} +// ----------------------------------------------------------------------------- + +int main(int argc, char* argv[]) { + // Import Settings + int N = argc > 1 ? atoi(argv[1]) : 10000; + double E = argc > 2 ? atof(argv[2]) : 91.2; + + // If more than maxEvents, run in batches + if (N > maxEvents) { + std::cout << "-------------------------------------------------" + << std::endl; + std::cout << "More Events than GPU Can Handle at Once!" << std::endl; + std::cout << "Running in batches..." << std::endl; + std::cout << "Please use rivet-merge to combine runs" << std::endl; + + // Split into batches + int nBatches = N / maxEvents; + int nRemainder = N % maxEvents; + std::cout << "Number of Batches: " << nBatches << std::endl; + std::cout << "Size of Remainder: " << nRemainder << std::endl; + + // Run in batches + for (int i = 0; i < nBatches; i++) { + std::string filename = "cpp-" + std::to_string(i) + ".yoda"; + runGenerator(maxEvents, E, filename); + } + + // Run remainder + if (nRemainder > 0) { + std::string filename = "cpp-" + std::to_string(nBatches) + ".yoda"; + runGenerator(nRemainder, E, filename); + } + } else { + runGenerator(N, E, "cpp.yoda"); + } + + return 0; +} +// ----------------------------------------------------------------------------- diff --git a/gaps-1.1/cpp-shower/matrix/CMakeLists.txt b/gaps-1.1/cpp-shower/matrix/CMakeLists.txt new file mode 100644 index 0000000..fa77830 --- /dev/null +++ b/gaps-1.1/cpp-shower/matrix/CMakeLists.txt @@ -0,0 +1,9 @@ +cmake_minimum_required(VERSION 3.10) +project(matrix) + +set(CMAKE_CXX_STANDARD 17) + +include_directories(include ../base/include) +file(GLOB SOURCES "src/*.cpp") + +add_library(matrix ${SOURCES}) \ No newline at end of file diff --git a/gaps-1.1/cpp-shower/matrix/include/matrix.h b/gaps-1.1/cpp-shower/matrix/include/matrix.h new file mode 100644 index 0000000..ab27db2 --- /dev/null +++ b/gaps-1.1/cpp-shower/matrix/include/matrix.h @@ -0,0 +1,23 @@ +#ifndef MATRIX_H_ +#define MATRIX_H_ + +// Parton includes Base, which has the CUDA libraries +#include "event.h" + +// Matrix class +class Matrix { + private: + double alphas, ecms, MZ2, GZ2, alpha, sin2tw, amin, ye, ze, ws; + + public: + // Constructor + Matrix(double alphas = asmz, double ecms = 91.2); + + // Leading Order Matrix Element Generation + double ME2(int fl, double s, double t); + + // Generate a leading order point + void GenerateLOPoint(Event &ev); +}; + +#endif // MATRIX_H_ \ No newline at end of file diff --git a/gaps-1.1/cpp-shower/matrix/src/matrix.cpp b/gaps-1.1/cpp-shower/matrix/src/matrix.cpp new file mode 100644 index 0000000..1ce1720 --- /dev/null +++ b/gaps-1.1/cpp-shower/matrix/src/matrix.cpp @@ -0,0 +1,80 @@ +#include "matrix.h" + +// Constructor +Matrix::Matrix(double alphas, double ecms) + : alphas(alphas), + ecms(ecms), + MZ2(pow(91.1876, 2.)), + GZ2(pow(2.4952, 2.)), + alpha(1. / 128.802), + sin2tw(0.22293), + amin(1.e-10), + ye(0.5), + ze(0.01), + ws(0.25) {} + +// Leading Order Matrix Element Generation +double Matrix::ME2(int fl, double s, double t) { + double qe = -1.; + double ae = -0.5; + double ve = ae - 2. * qe * sin2tw; + double qf = (fl == 2 || fl == 4) ? 2. / 3. : -1. / 3.; + double af = (fl == 2 || fl == 4) ? 0.5 : -0.5; + double vf = af - 2. * qf * sin2tw; + double kappa = 1. / (4. * sin2tw * (1. - sin2tw)); + double chi1 = kappa * s * (s - MZ2) / (pow(s - MZ2, 2.) + GZ2 * MZ2); + double chi2 = pow(kappa * s, 2.) / (pow(s - MZ2, 2.) + GZ2 * MZ2); + double term1 = (1. + pow(1. + 2. * t / s, 2.)) * + (pow(qf * qe, 2.) + 2. * (qf * qe * vf * ve) * chi1 + + (ae * ae + ve * ve) * (af * af + vf * vf) * chi2); + double term2 = (1. + 2. * t / s) * (4. * qe * qf * ae * af * chi1 + + 8. * ae * ve * af * vf * chi2); + return pow(4. * M_PI * alpha, 2.) * 3. * (term1 + term2); +} + +// Generate a point +void Matrix::GenerateLOPoint(Event &ev) { + thread_local std::random_device rd; + thread_local std::mt19937 gen(rd()); + + // Same seed option. Turn off by commenting when not in use! + // Having an if statement if no seed is given would not be a fair comparison + // to the GPU, so commented out is better for now. Maybe in the future. + // thread_local std::mt19937 gen(seed); + + std::uniform_real_distribution<> dis(0., 1.); // Uniform distribution + + double ct = 2. * dis(gen) - 1.; + double st = std::sqrt(1. - ct * ct); + double phi = 2. * M_PI * dis(gen); + + int fl = std::rand() % 5 + 1; // Faster than using dis(gen) + double p0 = 0.5 * ecms; + + Vec4 pa(p0, 0., 0., p0); + Vec4 pb(p0, 0., 0., -p0); + Vec4 p1(p0, p0 * st * cos(phi), p0 * st * sin(phi), p0 * ct); + Vec4 p2(p0, -p0 * st * cos(phi), -p0 * st * sin(phi), -p0 * ct); + + double lome = ME2(fl, (pa + pb).M2(), (pa - p1).M2()); + + // Calculate the differential cross section + // 5 = 5 flavours (?) + // 3.89379656e8 = Convert from GeV^-2 to pb + // 8 pi = Standard Phase Space Factor + // pow(matrix->GetECMS(), 2.) = center of mass energy squared, s + double dxs = + 5. * lome * 3.89379656e8 / (8. * M_PI) / (2. * std::pow(ecms, 2.)); + + Parton p[4] = {Parton(-11, -pa, 0, 0), Parton(11, -pb, 0, 0), + Parton(fl, p1, 1, 0), Parton(-fl, p2, 0, 1)}; + + // Set the Partons + for (int i = 0; i < 4; i++) { + ev.SetParton(i, p[i]); + } + + // Set the ME Params + ev.SetDxs(dxs); + ev.SetHard(4); +} \ No newline at end of file diff --git a/gaps-1.1/cpp-shower/observables/CMakeLists.txt b/gaps-1.1/cpp-shower/observables/CMakeLists.txt new file mode 100644 index 0000000..b085393 --- /dev/null +++ b/gaps-1.1/cpp-shower/observables/CMakeLists.txt @@ -0,0 +1,9 @@ +cmake_minimum_required(VERSION 3.10) +project(observables) + +set(CMAKE_CXX_STANDARD 17) + +include_directories(include ../base/include) +file(GLOB SOURCES "src/*.cpp") + +add_library(observables ${SOURCES}) \ No newline at end of file diff --git a/gaps-1.1/cpp-shower/observables/include/dalitz.h b/gaps-1.1/cpp-shower/observables/include/dalitz.h new file mode 100644 index 0000000..e3eb325 --- /dev/null +++ b/gaps-1.1/cpp-shower/observables/include/dalitz.h @@ -0,0 +1,9 @@ +#ifndef DALITZ_H_ +#define DALITZ_H_ + +#include "event.h" + +// Dalitz Plot +void CalculateDalitz(Event& ev); + +#endif // DALITZ_H_ \ No newline at end of file diff --git a/gaps-1.1/cpp-shower/observables/include/eventshapes.h b/gaps-1.1/cpp-shower/observables/include/eventshapes.h new file mode 100644 index 0000000..0e82a72 --- /dev/null +++ b/gaps-1.1/cpp-shower/observables/include/eventshapes.h @@ -0,0 +1,11 @@ +#ifndef EVENTSHAPES_H_ +#define EVENTSHAPES_H_ + +#include "event.h" + +// Event Shapes +void bubbleSort(Vec4* moms, int n); +void CalculateThrust(Event& ev); +void CalculateJetMBr(Event& ev); + +#endif // EVENTSHAPES_H_ \ No newline at end of file diff --git a/gaps-1.1/cpp-shower/observables/include/jetrates.h b/gaps-1.1/cpp-shower/observables/include/jetrates.h new file mode 100644 index 0000000..ff34834 --- /dev/null +++ b/gaps-1.1/cpp-shower/observables/include/jetrates.h @@ -0,0 +1,10 @@ +#ifndef JETRATES_H_ +#define JETRATES_H_ + +#include "event.h" + +// Jet Rates using the Durham Algorithm +double Yij(const Vec4& p, const Vec4& q); +void Cluster(Event& ev); + +#endif // JETRATES_H_ \ No newline at end of file diff --git a/gaps-1.1/cpp-shower/observables/include/observables.h b/gaps-1.1/cpp-shower/observables/include/observables.h new file mode 100644 index 0000000..d202855 --- /dev/null +++ b/gaps-1.1/cpp-shower/observables/include/observables.h @@ -0,0 +1,47 @@ +#ifndef DURHAM_H_ +#define DURHAM_H_ + +#include "dalitz.h" +#include "event.h" +#include "eventshapes.h" +#include "histogram.h" +#include "jetrates.h" + +/** + * Slight Difference between C++ and CUDA codes + * -------------------------------------------- + * + * Here, we don't need Analyse and Finalize functions to be outside the class. + * So we can just include them in the class definition. Also we have to use the + * same class for all events! + */ +class Analysis { + public: + Histo1D hists[10]; + Histo2D dalitz; + + double wtot; // Scale by Weight for 1/sigma d(sigma)/d Observable + double ntot; // Scale by Number for d(sigma)/d Observable + + public: + Analysis() : wtot(0.), ntot(0.) { + hists[0] = Histo1D(-4.3, -0.3, "/gaps/log10y23\n"); + hists[1] = Histo1D(-4.3, -0.3, "/gaps/log10y34\n"); + hists[2] = Histo1D(-4.3, -0.3, "/gaps/log10y45\n"); + hists[3] = Histo1D(-4.3, -0.3, "/gaps/log10y56\n"); + hists[4] = Histo1D(0., 0.5, "/gaps/tvalue\n"); + hists[5] = Histo1D(0., 0.5, "/gaps/tzoomd\n"); + hists[6] = Histo1D(0., 1., "/gaps/hjm\n"); + hists[7] = Histo1D(0., 0.5, "/gaps/ljm\n"); + hists[8] = Histo1D(0., 0.5, "/gaps/wjb\n"); + hists[9] = Histo1D(0., 0.2, "/gaps/njb\n"); + + dalitz = Histo2D(0., 1., 0., 1., "/gaps/dalitz\n"); + } + + // Member Functions Here, but not in CUDA + void Analyze(Event& ev); + void Finalize(const std::string& filename); +}; + +#endif // DURHAM_H_ \ No newline at end of file diff --git a/gaps-1.1/cpp-shower/observables/src/dalitz.cpp b/gaps-1.1/cpp-shower/observables/src/dalitz.cpp new file mode 100644 index 0000000..978e65b --- /dev/null +++ b/gaps-1.1/cpp-shower/observables/src/dalitz.cpp @@ -0,0 +1,23 @@ +#include "dalitz.h" + +// Dalitz Plot + +void CalculateDalitz(Event& ev) { + if (!ev.GetValidity() || ev.GetPartonSize() != 3) { + return; + } + + // Obtain Energy from incoming partons + double E = abs(ev.GetParton(0).GetMom()[0] + ev.GetParton(1).GetMom()[0]); + + // By default, element 2 is quark and 3 is antiquark + // i.e. emission will be element 4 + Vec4 p1 = ev.GetParton(2).GetMom(); + Vec4 p2 = ev.GetParton(3).GetMom(); + + // Calculate x1 and x2 + double x1 = 2 * p1.P() / E; + double x2 = 2 * p2.P() / E; + + ev.SetDalitz(x1, x2); +} \ No newline at end of file diff --git a/gaps-1.1/cpp-shower/observables/src/eventshapes.cpp b/gaps-1.1/cpp-shower/observables/src/eventshapes.cpp new file mode 100644 index 0000000..59566c6 --- /dev/null +++ b/gaps-1.1/cpp-shower/observables/src/eventshapes.cpp @@ -0,0 +1,156 @@ +#include "eventshapes.h" + +// Event Shapes + +void bubbleSort(Vec4* moms, int n) { + for (int i = 0; i < n - 1; i++) { + for (int j = 0; j < n - i - 1; j++) { + if (moms[j].P() < moms[j + 1].P()) { + Vec4 temp = moms[j]; + moms[j] = moms[j + 1]; + moms[j + 1] = temp; + } + } + } +} + +void CalculateThrust(Event& ev) { + if (!ev.GetValidity() || ev.GetPartonSize() < 3) { + return; + } + + Vec4 moms[maxPartons]; + for (int i = 2; i < ev.GetSize(); ++i) { + moms[i - 2] = ev.GetParton(i).GetMom(); + } + + bubbleSort(moms, maxPartons); + + double momsum = 0.; + for (int i = 0; i < ev.GetPartonSize(); ++i) { + momsum += moms[i].P(); + } + + double thr = 0.; + Vec4 t_axis = Vec4(); + + for (int k = 1; k < ev.GetPartonSize(); ++k) { + for (int j = 0; j < k; ++j) { + Vec4 tmp_axis = moms[j].Cross(moms[k]); + Vec4 p_thrust = Vec4(); + Vec4 p_combin[4]; + + for (int i = 0; i < ev.GetPartonSize(); ++i) { + if (i != j && i != k) { + if (moms[i].Dot(tmp_axis) >= 0) { + p_thrust = p_thrust + moms[i]; + } else { + p_thrust = p_thrust - moms[i]; + } + } + } + + p_combin[0] = (p_thrust + moms[j] + moms[k]); + p_combin[1] = (p_thrust + moms[j] - moms[k]); + p_combin[2] = (p_thrust - moms[j] + moms[k]); + p_combin[3] = (p_thrust - moms[j] - moms[k]); + + for (int i = 0; i < 4; ++i) { + double temp = p_combin[i].P(); + if (temp > thr) { + thr = temp; + t_axis = p_combin[i]; + } + } + } + } + + thr /= momsum; + thr = 1. - thr; + + t_axis = t_axis / (t_axis).P(); + if (t_axis[3] < 0) { + t_axis = t_axis * -1.; + } + + if (thr < 1e-12) { + thr = -5.; + } + + ev.SetThr(thr); + ev.SetTAxis(t_axis); +} + +void CalculateJetMBr(Event& ev) { + if (!ev.GetValidity() || ev.GetPartonSize() < 3) { + return; + } + + Vec4 moms[maxPartons]; + for (int i = 2; i < ev.GetSize(); ++i) { + moms[i - 2] = ev.GetParton(i).GetMom(); + } + + double momsum = 0.; + for (int i = 0; i < ev.GetSize(); ++i) { + momsum += moms[i].P(); + } + + Vec4 p_with, p_against; + int n_with = 0, n_against = 0; + double e_vis = 0., broad_with = 0., broad_against = 0., + broad_denominator = 0.; + + for (int i = 0; i < ev.GetPartonSize(); ++i) { + double mo_para = moms[i].Dot(ev.GetTAxis()); + double mo_perp = (moms[i] - (ev.GetTAxis() * mo_para)).P(); + double enrg = moms[i].P(); + + e_vis += enrg; + broad_denominator += 2. * enrg; + + if (mo_para > 0.) { + p_with = p_with + moms[i]; + broad_with += mo_perp; + n_with++; + } else if (mo_para < 0.) { + p_against = p_against + moms[i]; + broad_against += mo_perp; + n_against++; + } else { + p_with = p_with + (moms[i] * 0.5); + p_against = p_against + (moms[i] * 0.5); + broad_with += 0.5 * mo_perp; + broad_against += 0.5 * mo_perp; + n_with++; + n_against++; + } + } + + double e2_vis = e_vis * e_vis; + + double mass2_with = fabs(p_with.M2() / e2_vis); + double mass2_against = fabs(p_against.M2() / e2_vis); + + double mass_with = sqrt(mass2_with); + double mass_against = sqrt(mass2_against); + + broad_with /= broad_denominator; + broad_against /= broad_denominator; + + double mH = fmax(mass_with, mass_against); + double mL = fmin(mass_with, mass_against); + + double bW = fmax(broad_with, broad_against); + double bN = fmin(broad_with, broad_against); + + if (n_with == 1 || n_against == 1) { + ev.SetHJM(mH); + ev.SetWJB(bW); + } else { + ev.SetHJM(mH); + ev.SetLJM(mL); + ev.SetWJB(bW); + ev.SetNJB(bN); + } +} \ No newline at end of file diff --git a/gaps-1.1/cpp-shower/observables/src/jetrates.cpp b/gaps-1.1/cpp-shower/observables/src/jetrates.cpp new file mode 100644 index 0000000..840fec6 --- /dev/null +++ b/gaps-1.1/cpp-shower/observables/src/jetrates.cpp @@ -0,0 +1,95 @@ +#include "jetrates.h" + +// Jet Rates + +// Yij function Used for the Durham analysis +double Yij(const Vec4& p, const Vec4& q, double ecm2) { + double pq = p[1] * q[1] + p[2] * q[2] + p[3] * q[3]; + double min_pq = std::min(p[0], q[0]); + double max_pq = std::max(pq / std::sqrt(p.P2() * q.P2()), -1.); + return 2. * std::pow(min_pq, 2) * (1. - std::min(max_pq, 1.)) / ecm2; +} + +// Durham Clustering Algorithm +void Cluster(Event& ev) { + if (!ev.GetValidity()) { + return; + } + // For C++, one can use the std::vector class to store the parton 4-momenta. + // Howver, this would be inefficient for CUDA, so we use a pre-set array size + // To make the comparison fair, we make this class use the same array size + // as well. + + // Get the center of mass energy squared + double ecm2 = (ev.GetParton(0).GetMom() + ev.GetParton(1).GetMom()).M2(); + + // Extract the 4-momenta of the partons + Vec4 p[maxPartons]; + for (int i = 2; i < ev.GetSize(); ++i) { + p[i - 2] = ev.GetParton(i).GetMom(); + } + + // kt2 will store the kt2 values for each clustering step + // If not changed, set to -1 so we can ignore when histogramming + double kt2[maxPartons] = {-1.}; + int counter = 0; + + // Number of partons (which will change when clustered), lower case to avoid N + int n = ev.GetPartonSize(); + + // imap will store the indices of the partons + int imap[maxPartons]; + for (int i = 0; i < ev.GetPartonSize(); ++i) { + imap[i] = i; + } + + // kt2ij will store the kt2 values for each pair of partons + double kt2ij[maxPartons][maxPartons] = {0.}; + double dmin = 1.; + int ii = 0, jj = 0; + for (int i = 0; i < n; ++i) { + for (int j = 0; j < i; ++j) { + double dij = kt2ij[i][j] = Yij(p[i], p[j], ecm2); + if (dij < dmin) { + dmin = dij; + ii = i; + jj = j; + } + } + } + + // Cluster the partons + while (n > 2) { + --n; + kt2[counter] = dmin; + counter++; + int jjx = imap[jj]; + p[jjx] = p[jjx] + p[imap[ii]]; + for (int i = ii; i < n; ++i) { + imap[i] = imap[i + 1]; + } + for (int j = 0; j < jj; ++j) { + kt2ij[jjx][imap[j]] = Yij(p[jjx], p[imap[j]], ecm2); + } + for (int i = jj + 1; i < n; ++i) { + kt2ij[imap[i]][jjx] = Yij(p[jjx], p[imap[i]], ecm2); + } + dmin = 1.; + for (int i = 0; i < n; ++i) { + for (int j = 0; j < i; ++j) { + double dij = kt2ij[imap[i]][imap[j]]; + if (dij < dmin) { + dmin = dij; + ii = i; + jj = j; + } + } + } + } + + // Store the kt2 values in the output arrays + ev.SetY23(counter > 0 ? log10(kt2[counter - 1 - 0]) : -50.); + ev.SetY34(counter > 1 ? log10(kt2[counter - 1 - 1]) : -50.); + ev.SetY45(counter > 2 ? log10(kt2[counter - 1 - 2]) : -50.); + ev.SetY56(counter > 3 ? log10(kt2[counter - 1 - 3]) : -50.); +} diff --git a/gaps-1.1/cpp-shower/observables/src/observables.cpp b/gaps-1.1/cpp-shower/observables/src/observables.cpp new file mode 100644 index 0000000..8a1621e --- /dev/null +++ b/gaps-1.1/cpp-shower/observables/src/observables.cpp @@ -0,0 +1,69 @@ +#include "observables.h" + +// Observable Analysis + +void Analysis::Analyze(Event& ev) { + // Validate Event + ev.SetValidity(ev.Validate()); + + if (!ev.GetValidity()) { + printf("Invalid Event\n"); + return; + } + + // Cluster + Cluster(ev); + + // Calculate Thrust + CalculateThrust(ev); + + // Calculate JetMBr + CalculateJetMBr(ev); + + /** + * Why is the Dalitz Plot off? + * --------------------------- + * + * While the Dalitz analysis also benefits from the GPU parallelisation, the + * writing of the data to file severely limits the performance, as instead of + * the usual 100 bins, we have 100^2 = 1000 bins. This takes around 0.04s, + * which is minute in the C++ case, but is in fact 40% of the total analysis + * time! So for our tests, we keep this off, to keep our comparisons fair, + * and relvant to the actual GPU effect. + * + * If you want to turn it on, uncomment the lines in this file, and it's + * equivalent in the 'observables.cpp' file. + */ + // Calculate Dalitz + // CalculateDalitz(ev); + + // Fill Histograms + hists[0].Fill(ev.GetY23(), ev.GetDxs()); + hists[1].Fill(ev.GetY34(), ev.GetDxs()); + hists[2].Fill(ev.GetY45(), ev.GetDxs()); + hists[3].Fill(ev.GetY56(), ev.GetDxs()); + hists[4].Fill(ev.GetThr(), ev.GetDxs()); + hists[5].Fill(ev.GetThr(), ev.GetDxs()); + hists[6].Fill(ev.GetHJM(), ev.GetDxs()); + hists[7].Fill(ev.GetLJM(), ev.GetDxs()); + hists[8].Fill(ev.GetWJB(), ev.GetDxs()); + hists[9].Fill(ev.GetNJB(), ev.GetDxs()); + + // Dalitz Plot is OFF + // dalitz.Fill(ev.GetDalitz(0), ev.GetDalitz(1), ev.GetDxs()); + + // Weighted Total + wtot += ev.GetDxs(); + ntot += 1.; +} + +void Analysis::Finalize(const std::string& filename) { + for (auto& hist : hists) { + hist.ScaleW(1. / ntot); + hist.Write(filename); + } + + // Dalitz Plot is OFF + // dalitz.ScaleW(1. / ntot); + // dalitz.Write(filename); +} \ No newline at end of file diff --git a/gaps-1.1/cpp-shower/shower/CMakeLists.txt b/gaps-1.1/cpp-shower/shower/CMakeLists.txt new file mode 100644 index 0000000..eaeab58 --- /dev/null +++ b/gaps-1.1/cpp-shower/shower/CMakeLists.txt @@ -0,0 +1,9 @@ +cmake_minimum_required(VERSION 3.10) +project(shower) + +set(CMAKE_CXX_STANDARD 17) + +include_directories(include ../base/include) +file(GLOB SOURCES "src/*.cpp") + +add_library(shower ${SOURCES}) \ No newline at end of file diff --git a/gaps-1.1/cpp-shower/shower/include/shower.h b/gaps-1.1/cpp-shower/shower/include/shower.h new file mode 100644 index 0000000..39e1a7d --- /dev/null +++ b/gaps-1.1/cpp-shower/shower/include/shower.h @@ -0,0 +1,51 @@ +#ifndef SHOWER_H_ +#define SHOWER_H_ + +#include "event.h" +#include "qcd.h" + +// Splitting Function Codes - Only FF for now (Removed Zeroes) +// ------------------------------------------ +const int sfCodes[] = {1, 2, 3, 4, 5, 11, 12, 13, + 14, 15, 200, 301, 302, 303, 304, 305}; + +// Shower Class - NOT IN GPU as kernels cannot be member functions +class Shower { + private: + AlphaS as = AlphaS(mz, asmz); + + public: + Shower(); // tC and asmax are preset in base + + // In CUDA, we cannot point by reference, so we use + // pointers (*) instead of references (&). + + // Splitting Functions + double sfValue(double z, double y, int sf); + double sfEstimate(double z, int sf); + double sfIntegral(double zm, double zp, int sf); + double sfGenerateZ(double zm, double zp, double rand, int sf); + + // Utilities + bool validateSplitting(int ij, const int sf); + void sfToFlavs(int sf, int* flavs); + + // Select the Winner Emission + void SelectWinner(Event& ev, std::mt19937& gen); + + // Kinematics + void MakeKinematics(Vec4* kinematics, const double z, const double y, + const double phi, const Vec4 pijt, const Vec4 pkt); + + // Colours + void MakeColours(Event& ev, int* coli, int* colj, const int flavs[3], + const int colij[2], const int colk[2], const double r); + + // Veto Algorithm + Perform the Splitting + void GenerateSplitting(Event& ev, std::mt19937& gen); + + // Run the Shower + void Run(Event& ev); +}; + +#endif // SHOWER_H_ \ No newline at end of file diff --git a/gaps-1.1/cpp-shower/shower/src/colours.cpp b/gaps-1.1/cpp-shower/shower/src/colours.cpp new file mode 100644 index 0000000..54648c8 --- /dev/null +++ b/gaps-1.1/cpp-shower/shower/src/colours.cpp @@ -0,0 +1,55 @@ +#include "shower.h" + +void Shower::MakeColours(Event& ev, int* coli, int* colj, const int flavs[3], + const int colij[2], const int colk[2], + const double r) { + // Increase variable ev.GetShowerC() by 1 + ev.IncrementShowerC(); + + if (flavs[0] != 21) { + if (flavs[0] > 0) { + coli[0] = ev.GetShowerC(); + coli[1] = 0; + colj[0] = colij[0]; + colj[1] = ev.GetShowerC(); + } else { + coli[0] = 0; + coli[1] = ev.GetShowerC(); + colj[0] = ev.GetShowerC(); + colj[1] = colij[1]; + } + } else { + if (flavs[1] == 21) { + if (colij[0] == colk[1]) { + if (colij[1] == colk[0] && r > 0.5) { + coli[0] = colij[0]; + coli[1] = ev.GetShowerC(); + colj[0] = ev.GetShowerC(); + colj[1] = colij[1]; + } else { + coli[0] = ev.GetShowerC(); + coli[1] = colij[1]; + colj[0] = colij[0]; + colj[1] = ev.GetShowerC(); + } + } else { + coli[0] = colij[0]; + coli[1] = ev.GetShowerC(); + colj[0] = ev.GetShowerC(); + colj[1] = colij[1]; + } + } else { + if (flavs[1] > 0) { + coli[0] = colij[0]; + coli[1] = 0; + colj[0] = 0; + colj[1] = colij[1]; + } else { + coli[0] = 0; + coli[1] = colij[1]; + colj[0] = colij[0]; + colj[1] = 0; + } + } + } +} \ No newline at end of file diff --git a/gaps-1.1/cpp-shower/shower/src/kinematics.cpp b/gaps-1.1/cpp-shower/shower/src/kinematics.cpp new file mode 100644 index 0000000..597c6a1 --- /dev/null +++ b/gaps-1.1/cpp-shower/shower/src/kinematics.cpp @@ -0,0 +1,31 @@ +#include "shower.h" + +void Shower::MakeKinematics(Vec4* kinematics, const double z, const double y, + const double phi, const Vec4 pijt, const Vec4 pkt) { + Vec4 Q = pijt + pkt; + + // Generating the Momentum (0, kt1, kt2, 0) + double rkt = sqrt(Q.M2() * y * z * (1. - z)); + + Vec4 kt1 = pijt.Cross(pkt); + if (kt1.P() < 1.e-6) { + Vec4 xaxis(0., 1., 0., 0.); + kt1 = pijt.Cross(xaxis); + } + kt1 = kt1 * (rkt * cos(phi) / kt1.P()); + + Vec4 kt2cms = Q.Boost(pijt); + kt2cms = kt2cms.Cross(kt1); + kt2cms = kt2cms * (rkt * sin(phi) / kt2cms.P()); + Vec4 kt2 = Q.BoostBack(kt2cms); + + // Conversion to {i, j, k} basis + Vec4 pi = pijt * z + pkt * ((1. - z) * y) + kt1 + kt2; + Vec4 pj = pijt * (1. - z) + pkt * (z * y) - kt1 - kt2; + Vec4 pk = pkt * (1. - y); + + // No need to do *kinematics[0], for arrays the elements are already pointers + kinematics[0] = pi; + kinematics[1] = pj; + kinematics[2] = pk; +} \ No newline at end of file diff --git a/gaps-1.1/cpp-shower/shower/src/shower.cpp b/gaps-1.1/cpp-shower/shower/src/shower.cpp new file mode 100644 index 0000000..50eee11 --- /dev/null +++ b/gaps-1.1/cpp-shower/shower/src/shower.cpp @@ -0,0 +1,187 @@ +#include "shower.h" + +Shower::Shower() {} + +/** + * This Function is Different from S.H's Tutorial, we keep it the same as the + * GPU version for a fair test + */ +void Shower::SelectWinner(Event& ev, std::mt19937& gen) { + std::uniform_real_distribution<> dis(0., 1.); + + // Default Values + double win_tt = tC; // Lowest possible value is Cutoff Scale (in base.cuh) + int win_sf = 0; // 0 = No Splitting + int win_ij = 0; + int win_k = 0; + double win_zp = 0.; + double win_m2 = 0.; + + // We start at 2 because elements 0 and 1 are electrons - To change with ISR + for (int ij = 2; ij < ev.GetSize(); ij++) { + for (int k = 2; k < ev.GetSize(); k++) { + // Sanity Check to ensure ij != k + if (ij == k) { + continue; + } + + // Need to check if ij and k are colour connected + if (!ev.GetParton(ij).IsColorConnected(ev.GetParton(k))) { + continue; + } + + // Params Identical to all splitting functions + double m2 = (ev.GetParton(ij).GetMom() + ev.GetParton(k).GetMom()).M2(); + if (m2 < 4. * tC) { + continue; + } + + double zp = 0.5 * (1. + sqrt(1. - 4. * tC / m2)); + + // Codes instead of Object Oriented Approach! + for (int sf : sfCodes) { + // Check if the Splitting Function is valid for the current partons + if (!validateSplitting(ev.GetParton(ij).GetPid(), sf)) { + continue; + } + + // Calculate the Evolution Variable + double g = asmax / (2. * M_PI) * sfIntegral(1 - zp, zp, sf); + double tt = ev.GetShowerT() * pow(dis(gen), 1. / g); + + // Check if tt is greater than the current winner + if (tt > win_tt) { + win_tt = tt; + win_sf = sf; + win_ij = ij; + win_k = k; + win_zp = zp; + win_m2 = m2; + } + } + } + } + + // Store the results + ev.SetShowerT(win_tt); + ev.SetWinSF(win_sf); + ev.SetWinDipole(0, win_ij); + ev.SetWinDipole(1, win_k); + ev.SetWinParam(0, win_zp); + ev.SetWinParam(1, win_m2); +} + +/** + * In the GPU version, this would be split into multiple CUDA Kernels + */ +void Shower::GenerateSplitting(Event& ev, std::mt19937& gen) { + std::uniform_real_distribution<> dis(0., 1.); + + while (ev.GetShowerT() > tC) { + SelectWinner(ev, gen); + + if (ev.GetShowerT() > tC) { + // Get the Splitting Function + int sf = ev.GetWinSF(); + + double rand = dis(gen); + + // Generate z + double zp = ev.GetWinParam(0); + double z = sfGenerateZ(1 - zp, zp, rand, sf); + + double y = ev.GetShowerT() / ev.GetWinParam(1) / z / (1. - z); + + double f = 0.; + double g = 0.; + double value = 0.; + double estimate = 0.; + + // CS Kernel: y can't be 1 + if (y < 1.) { + value = sfValue(z, y, sf); + estimate = sfEstimate(z, sf); + + f = (1. - y) * as(ev.GetShowerT()) * value; + g = asmax * estimate; + + if (dis(gen) < f / g) { + ev.SetShowerZ(z); + ev.SetShowerY(y); + + double phi = 2. * M_PI * dis(gen); + + int win_ij = ev.GetWinDipole(0); + int win_k = ev.GetWinDipole(1); + + Vec4 moms[3] = {Vec4(), Vec4(), Vec4()}; + MakeKinematics(moms, z, y, phi, ev.GetParton(win_ij).GetMom(), + ev.GetParton(win_k).GetMom()); + + int flavs[3]; + sfToFlavs(sf, flavs); + + int colij[2] = {ev.GetParton(win_ij).GetCol(), + ev.GetParton(win_ij).GetAntiCol()}; + + int colk[2] = {ev.GetParton(win_k).GetCol(), + ev.GetParton(win_k).GetAntiCol()}; + + int coli[2] = {0, 0}; + int colj[2] = {0, 0}; + MakeColours(ev, coli, colj, flavs, colij, colk, dis(gen)); + + // Modify Splitter + ev.SetPartonPid(win_ij, flavs[1]); + ev.SetPartonMom(win_ij, moms[0]); + ev.SetPartonCol(win_ij, coli[0]); + ev.SetPartonAntiCol(win_ij, coli[1]); + + // Modify Recoiled Spectator + ev.SetPartonMom(win_k, moms[2]); + + // Add Emitted Parton + Parton em = Parton(flavs[2], moms[1], colj[0], colj[1]); + ev.SetParton(ev.GetSize(), em); + + // Increment Emissions (IMPORTANT) + ev.IncrementEmissions(); + + return; + } + } + } + } +} + +void Shower::Run(Event& ev) { + /** + * Thread Local + * ------------ + * + * We observed significant slowdown due to the rng - this is because the + * code was re initialising the RNG. Using thread_local means that it is + * initialised once and then reused, giving a massive speed-up! + */ + thread_local std::random_device rd; + thread_local std::mt19937 gen(rd()); + + // Same seed option. Turn off by commenting when not in use! + // Having an if statement if no seed is given would not be a fair comparison + // to the GPU, so commented out is better for now. Maybe in the future. + // thread_local std::mt19937 gen(seed); + + // Set the starting shower scale + double t_max = (ev.GetParton(0).GetMom() + ev.GetParton(1).GetMom()).M2(); + ev.SetShowerT(t_max); + + // Set the initial number of emissions + ev.SetEmissions(0); + + // Set the Colour Counter to 1 (q and qbar) + ev.SetShowerC(1); + + while (ev.GetShowerT() > tC) { + GenerateSplitting(ev, gen); + } +} diff --git a/gaps-1.1/cpp-shower/shower/src/splittings.cpp b/gaps-1.1/cpp-shower/shower/src/splittings.cpp new file mode 100644 index 0000000..83efd48 --- /dev/null +++ b/gaps-1.1/cpp-shower/shower/src/splittings.cpp @@ -0,0 +1,240 @@ +#include "shower.h" + +/** + * Splitting Functions as a function - safer but less sophisticated + * ---------------------------------------------------------------- + * + * This is a safer and more straightforward way to implement the splitting + * functions for the shower. Although the class-based approach is good for + * C++, in CUDA many issues arise that mean that OOP might not always be the + * best strategy in coding. As a simpler approach, we will use switch-case + * statements to select the correct splitting function. + * + * We have a LOT of splitting functions: + * - Four types (FF, FI, IF, II) + * - Three or Four Possible DGLAP Splittings (q->qg, q->gq, g->gg, g->qq) + * - Five Flavours of Quarks (d, u, s, c, b) and each of their antiquarks + * - At most, In total: 4 * (10 + 10 + 1 + 5) = 104 splitting functions + * + * So we need to organise ourselves with some kind of structure. As a first + * attempt lets use four digit codes to identify the splitting functions: + * + * - 1st digit: Type of Split-Spect (FF, FI, IF, II) - 0, 1, 2, 3 + * - 2nd digit: Type of DGLAP (q->qg, q->gq, g->gg, g->qq) - 0, 1, 2, 3 + * - 3rd digit: Emitter is a Particle or Antiparticle - 0, 1 (gluon is 0) + * - 4th digit: Flavor of the Emitter - 1, 2, 3, 4, 5; 0 for gluon + * + * Examples: + * - FF u -> ug = 0 0 0 2 + * - FF ubar -> ubar g = 0 0 1 2 + * - FF g -> gg = 0 2 0 0 + * - FF g -> ccbar = 0 3 0 4 + * + * - FI u -> ug = 1 0 0 2 + * - FI g -> ccbar = 1 3 0 4 + * + * - IF d -> dg = 2 0 0 1 + * - IF d -> gd = 2 1 0 1 + * - IF sbar -> sbar g = 2 0 1 3 + * - IF g -> uubar = 2 3 0 2 + * + * - II g -> gg = 3 2 0 0 + * - II g -> bbbar = 3 3 0 5 + * + * This way we can easily identify the splitting functions and select the + * correct one using a switch-case statement. This can be used for value, + * estimate, integral and generateZ functions. + */ + +double Shower::sfValue(double z, double y, int sf) { + switch (sf) { + // FF Splittings --------------------------- + + // FF q -> qg + case 1: + case 2: + case 3: + case 4: + case 5: + case 11: + case 12: + case 13: + case 14: + case 15: + return kCF * (2. / (1. - z * (1. - y)) - (1. + z)); + break; + + // FF g -> gg + case 200: + return kCA / 2. * (2. / (1. - z * (1. - y)) - 2. + z * (1. - z)); + break; + + // FF g -> qqbar + case 301: + case 302: + case 303: + case 304: + case 305: + return kTR / 2. * (1. - 2. * z * (1. - z)); + break; + } + return 0.; +} + +double Shower::sfEstimate(double z, int sf) { + switch (sf) { + // FF Splittings --------------------------- + + // FF q -> qg + case 1: + case 2: + case 3: + case 4: + case 5: + case 11: + case 12: + case 13: + case 14: + case 15: + return kCF * 2. / (1. - z); + break; + + // FF g -> gg + case 200: + return kCA / (1. - z); + break; + + // FF g -> qqbar + case 301: + case 302: + case 303: + case 304: + case 305: + return kTR / 2.; + break; + } + return 0.; +} + +double Shower::sfIntegral(double zm, double zp, int sf) { + switch (sf) { + // FF Splittings --------------------------- + + // FF q -> qg + case 1: + case 2: + case 3: + case 4: + case 5: + case 11: + case 12: + case 13: + case 14: + case 15: + return kCF * 2. * log((1. - zm) / (1. - zp)); + break; + + // FF g -> gg + case 200: + return kCA * log((1. - zm) / (1. - zp)); + break; + + // FF g -> qqbar + case 301: + case 302: + case 303: + case 304: + case 305: + return kTR / 2. * (zp - zm); + break; + } + return 0.; +} + +double Shower::sfGenerateZ(double zm, double zp, double rand, int sf) { + switch (sf) { + // FF Splittings --------------------------- + + // FF q -> qg + case 1: + case 2: + case 3: + case 4: + case 5: + case 11: + case 12: + case 13: + case 14: + case 15: + return 1. + (zp - 1.) * pow((1. - zm) / (1. - zp), rand); + break; + + // FF g -> gg + case 200: + return 1. + (zp - 1.) * pow((1. - zm) / (1. - zp), rand); + break; + + // FF g -> qqbar + case 301: + case 302: + case 303: + case 304: + case 305: + return zm + (zp - zm) * rand; + break; + } + return 0.; +} + +bool Shower::validateSplitting(int ij, int sf) { + // Obtain the splitting function code + // int firstDigit = sf / 1000; + int secondDigit = (sf / 100) % 10; + int thirdDigit = (sf / 10) % 10; + int fourthDigit = sf % 10; + + // Insert FF, FI, IF, II checks here + // --------------------------------- + + // Skip if ij is a quark and the sf is not a quark sf (2nd digit), or + // if ij is a gluon and the sf is not a gluon sf (2nd digit) + if ((ij != 21 && secondDigit >= 2) || (ij == 21 && secondDigit < 2)) { + return false; + } + + // Skip if ij is a particle and sf is an antiparticle sf (3rd digit), or + // if ij is an antiparticle and sf is a particle sf (3rd digit) + if ((ij < 0 && thirdDigit == 0) || (ij > 0 && thirdDigit == 1)) { + return false; + } + + // q->qg case: Skip if the flavor of ij is different from the flavor of the sf + // g->gg and g->qq case: No need to check the flavor + if ((ij != 21 && abs(ij) != fourthDigit)) { + return false; + } + + return true; +} + +void Shower::sfToFlavs(int sf, int* flavs) { + if (sf < 16) { + if (sf < 6) { + flavs[0] = sf; + flavs[1] = sf; + flavs[2] = 21; + } else { + flavs[0] = -1 * (sf - 10); + flavs[1] = -1 * (sf - 10); + flavs[2] = 21; + } + } else if (sf == 200) { + flavs[0] = 21; + flavs[1] = 21; + flavs[2] = 21; + } else if (sf < 306) { + flavs[0] = 21; + flavs[1] = sf - 300; + flavs[2] = -1 * (sf - 300); + } +} diff --git a/gaps-1.1/doc/README.md b/gaps-1.1/doc/README.md new file mode 100644 index 0000000..7d0d95c --- /dev/null +++ b/gaps-1.1/doc/README.md @@ -0,0 +1,15 @@ +# GAPS - Documentation Home + +Welcome to the GAPS Documentation! Here, we go into the computational depths of the GPU algorithm, explaining what everything means and how it all works. + +We'll divide the documentation into a few sections: + +- [Getting Started](sections/getting-started.md): Similar to [README.md](../README.md), this page covers the setting up and basic usage +- [Code Structure](sections/code-structure.md): This contains details of where all params and settings are defined +- [Matrix](sections/matrix-element.md), [Shower](sections/parton-shower.md) and [Observables](sections/observables.md): This contains the descriptions of the different GPU components + +Additionally, the 'tutorials' folder contains introductory CUDA codes available online, which we have commented on. (Links to the Original codes are also provided!) + +For more information/help, feel free to contact [siddharth.sule@manchester.ac.uk](mailto:siddharth.sule@manchester.ac.uk) + +Happy Simulating! diff --git a/gaps-1.1/doc/extra/acceptveto.csv b/gaps-1.1/doc/extra/acceptveto.csv new file mode 100644 index 0000000..724d941 --- /dev/null +++ b/gaps-1.1/doc/extra/acceptveto.csv @@ -0,0 +1,116 @@ +1, 1000000, 999985, 15 +2, 1000000, 999856, 144 +3, 1000000, 999561, 439 +4, 1000000, 998749, 1251 +5, 1000000, 997321, 2679 +6, 1000000, 994948, 5052 +7, 1000000, 991838, 8162 +8, 1000000, 987655, 12345 +9, 999999, 983085, 16914 +10, 999998, 977434, 22564 +11, 999987, 971937, 28050 +12, 999974, 965649, 34325 +13, 999932, 959482, 40450 +14, 999845, 952889, 46956 +15, 999678, 946216, 53462 +16, 999353, 939089, 60264 +17, 998692, 931821, 66871 +18, 997563, 924423, 73140 +19, 995659, 916316, 79343 +20, 992718, 907665, 85053 +21, 988307, 897644, 90663 +22, 981971, 886133, 95838 +23, 973220, 873161, 100059 +24, 961687, 857094, 104593 +25, 946832, 838767, 108065 +26, 928216, 818203, 110013 +27, 906379, 795303, 111076 +28, 880536, 768942, 111594 +29, 851298, 740511, 110787 +30, 818801, 709177, 109624 +31, 783677, 676693, 106984 +32, 746218, 642369, 103849 +33, 707289, 607062, 100227 +34, 667263, 571330, 95933 +35, 626727, 535600, 91127 +36, 586427, 499773, 86654 +37, 546688, 464755, 81933 +38, 507944, 431426, 76518 +39, 470231, 398306, 71925 +40, 434309, 367053, 67256 +41, 399704, 337120, 62584 +42, 366947, 309257, 57690 +43, 336330, 283062, 53268 +44, 307838, 258481, 49357 +45, 280984, 235541, 45443 +46, 255876, 214290, 41586 +47, 232433, 193874, 38559 +48, 210830, 175847, 34983 +49, 190589, 158917, 31672 +50, 172071, 143034, 29037 +51, 155009, 128631, 26378 +52, 139260, 115518, 23742 +53, 124920, 103625, 21295 +54, 112128, 92998, 19130 +55, 100202, 82590, 17612 +56, 89330, 73908, 15422 +57, 79464, 65601, 13863 +58, 70386, 57856, 12530 +59, 62336, 51247, 11089 +60, 55098, 45301, 9797 +61, 48524, 39831, 8693 +62, 42601, 34924, 7677 +63, 37297, 30527, 6770 +64, 32703, 26773, 5930 +65, 28502, 23266, 5236 +66, 24881, 20268, 4613 +67, 21538, 17617, 3921 +68, 18780, 15283, 3497 +69, 16219, 13168, 3051 +70, 14019, 11381, 2638 +71, 12070, 9853, 2217 +72, 10430, 8525, 1905 +73, 8972, 7303, 1669 +74, 7718, 6289, 1429 +75, 6630, 5392, 1238 +76, 5663, 4567, 1096 +77, 4834, 3977, 857 +78, 4083, 3285, 798 +79, 3463, 2813, 650 +80, 2908, 2331, 577 +81, 2432, 2006, 426 +82, 2025, 1636, 389 +83, 1709, 1386, 323 +84, 1425, 1142, 283 +85, 1214, 988, 226 +86, 1003, 800, 203 +87, 841, 653, 188 +88, 701, 565, 136 +89, 591, 475, 116 +90, 489, 402, 87 +91, 413, 349, 64 +92, 348, 288, 60 +93, 293, 240, 53 +94, 243, 188, 55 +95, 199, 155, 44 +96, 162, 127, 35 +97, 133, 115, 18 +98, 108, 89, 19 +99, 93, 72, 21 +100, 67, 54, 13 +101, 58, 48, 10 +102, 47, 36, 11 +103, 36, 27, 9 +104, 28, 26, 2 +105, 19, 14, 5 +106, 17, 14, 3 +107, 16, 13, 3 +108, 14, 10, 4 +109, 10, 6, 4 +110, 9, 6, 3 +111, 7, 6, 1 +112, 4, 3, 1 +113, 2, 2, 0 +114, 1, 0, 1 +115, 1, 1, 0 +116, 0, 0, 0 \ No newline at end of file diff --git a/gaps-1.1/doc/extra/acceptveto.py b/gaps-1.1/doc/extra/acceptveto.py new file mode 100644 index 0000000..8261104 --- /dev/null +++ b/gaps-1.1/doc/extra/acceptveto.py @@ -0,0 +1,35 @@ +import numpy as np +import matplotlib.pyplot as plt +import matplotlib as mpl + +mpl.rc_file("../../test/mplstyleerc") + +data = np.genfromtxt('acceptveto.csv', delimiter=',') + +data = data[data[:,1] > 0] + +x = data[:,0] +n = data[:,1] +y1 = data[:,2] +y2 = data[:,3] + +fig, ax = plt.subplots(1, 2, figsize=(9, 3.75)) + +ax[0].plot(x, y1, label='Vetoed Emissions', color='C3') +ax[0].plot(x, y2, label='Accepted Emissions', color='C2') + +ax[1].plot(x, y1/n, label='Vetoed Emissions', color='C3') +ax[1].plot(x, y2/n, label='Accepted Emissions', color='C2') + +for i in range(2): + ax[i].set_xlabel('Number of Events') + ax[i].set_ylabel('Emissions') + ax[i].legend() + ax[i].grid(True) + +ax[0].set_title('Accepted and Vetoed Emissions') +ax[1].set_title('Accepted and Vetoed Emissions, (Rescaled by $N_{Active Events}$)') + +fig.tight_layout() +fig.savefig('acceptveto.pdf') +fig.savefig('acceptveto.png') \ No newline at end of file diff --git a/gaps-1.1/doc/extra/gaps.sh b/gaps-1.1/doc/extra/gaps.sh new file mode 100755 index 0000000..8ea1629 --- /dev/null +++ b/gaps-1.1/doc/extra/gaps.sh @@ -0,0 +1,123 @@ +#------------------------------------------------------------------------------ +#!/bin/bash +# ------------------------------------------------------------------------------ + +# GAPS - Run Script +# ----------------- +# This script is used to compile and run the GAPS and C++ Shower codes. It +# provides a number of options to control the number of events, the number of +# cores to use, and the type of run to perform. The run types are: +# - gaps: Run the GAPS simulation +# - cpp: Run the C++ Shower simulation +# - compare: Run both the GAPS and C++ Shower and compare the results +# - full: Run both the GAPS and C++ Shower for a range of event numbers + + +# ------------------------------------------------------------------------------ +# Default Parameters + +events=10000 +energy=91.2 +ncores=1 + +# Defaults to just the CUDA simulation +runtype="gaps" + +# ------------------------------------------------------------------------------ +# Use optargs to adjust default values and define run + +while getopts "n:e:c:r:h" opt; do + case $opt in + n) events=$OPTARG ;; + e) energy=$OPTARG ;; + c) ncores=$OPTARG ;; + r) runtype=$OPTARG ;; + h) echo "Usage: $0 [-n nevents] [-e energy] [-c cores] [-r runtype] [-h help]" + echo " -n: set the number of events (default: 10000)" + echo " -e: set the CoM energy of the system (default: 91.2)" + echo " -c: set the number of cores (default: 1)" + echo " -r: set the run type (default: gaps, options: gaps, cpp, compare, full)" + echo " -h: display this help message" + exit 0 + ;; + esac +done + +# ------------------------------------------------------------------------------ +# Compile Code + +compile() { + dir=$1 + echo "Compiling $dir" + (cd $dir && mkdir -p build && cd build && cmake .. && make -j $ncores) +} + +if [ "$runtype" = "gaps" ] || [ "$runtype" = "compare" ] || [ "$runtype" = "full" ]; then + compile "gaps" +fi + +if [ "$runtype" = "cpp" ] || [ "$runtype" = "compare" ] || [ "$runtype" = "full" ]; then + compile "cpp-shower" +fi + +# ------------------------------------------------------------------------------ +# Default: Just run GAPS + +if [ "$runtype" = "gaps" ]; then + echo "Running GAPS" + ./gaps/bin/gaps $events $energy +fi + +# ------------------------------------------------------------------------------ +# Run C++ Shower + +if [ "$runtype" = "cpp" ]; then + echo "Running C++ Shower" + ./cpp-shower/bin/cpp-shower $events $energy +fi + +# ------------------------------------------------------------------------------ +# Compare GAPS and C++ Shower + +if [ "$runtype" = "compare" ]; then + echo "Running GAPS" + ./gaps/bin/gaps $events $energy + echo "Running C++ Shower" + ./cpp-shower/bin/cpp-shower $events $energy +fi + +# ------------------------------------------------------------------------------ +# Do a full analysis, comparing GAPS and C++ Shower at many values of N + +if [ "$runtype" = "full" ]; then + + # Remove previous results and make folder + rm -rf results + mkdir -p results + + # Clear previous log files + rm cpp-time.dat + rm gaps-time.dat + + # Run the comparison 100 times, for different number of events + neventsarray=(1 2 5 10 20 50 100 200 500 1000 2000 5000 10000 20000 50000 100000 200000 500000 1000000) + for n in "${neventsarray[@]}" + do + # Run and store the output in a log file + for i in {1..100} + do + echo "Running GAPS with $n events" + ./gaps/bin/gaps $n $energy + echo "Running C++ Shower with $n events" + ./cpp-shower/bin/cpp-shower $n $energy + done + done + + # Move the log files to the results directory + mv cpp-time.dat results/ + mv gaps-time.dat results/ + mv cpp.yoda results/ + mv gaps.yoda results/ + +fi + diff --git a/gaps-1.1/doc/extra/results-in-paper.tar.gz b/gaps-1.1/doc/extra/results-in-paper.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..fb10d79114b3a6050abbf54ab82ad1719601d45a GIT binary patch literal 104425 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%0D2=A<?}jB*(phl^<xuTC>O*N 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℘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 B<PQJ< literal 0 HcmV?d00001 diff --git a/gaps-1.1/doc/extra/splittings-test.cuh b/gaps-1.1/doc/extra/splittings-test.cuh new file mode 100644 index 0000000..c40cd44 --- /dev/null +++ b/gaps-1.1/doc/extra/splittings-test.cuh @@ -0,0 +1,100 @@ +#ifndef SPLITTINGS_CUH_ +#define SPLITTINGS_CUH_ + +// #include "qcd.cuh" + +// Splitting functions as a class - Here be dragons! + +class Kernel { + public: + int flavs[3]; + __device__ virtual double Value(double z, double y) = 0; + virtual ~Kernel() {} +}; + +class Pqq : public Kernel { + public: + __device__ double Value(double z, double y) override { + return CF * (2. / (1. - z * (1. - y)) - (1. + z)); + } + __device__ static Pqq* getInstance() { + __shared__ Pqq instance; + return &instance; + } +}; + +__global__ void initKernels(Kernel** Kernels) { + if (threadIdx.x == 0 && blockIdx.x == 0) { + // Quarks + for (int i = 0; i < 5; i++) { + Kernels[i] = Pqq::getInstance(); + Kernels[i]->flavs[0] = i + 1; // id = i + 1 + Kernels[i]->flavs[1] = i + 1; + Kernels[i]->flavs[2] = 21; + } + + // Anti-quarks + for (int i = 5; i < 10; i++) { + Kernels[i] = Pqq::getInstance(); + Kernels[i]->flavs[0] = i - 11; // id = i - 11 + Kernels[i]->flavs[1] = i - 11; + Kernels[i]->flavs[2] = 21; + } + } +} + +// Kernel to perform computations +__global__ void computeValues(Kernel** Kernels, double* input, double* output, + int n) { + int idx = blockIdx.x * blockDim.x + threadIdx.x; + if (idx < n) { + double temp = 0; + double max = 0; + for (int i = 0; i < 10; i++) { + temp = Kernels[i]->Value(input[idx], input[idx + 1]); + if (temp > max) { + max = temp; + } + } + output[idx] = max; + } +} + +int main() { + Kernel** deviceKernels; + cudaMalloc(&deviceKernels, 10 * sizeof(Kernel*)); + + // Initialize Kernels on device + initKernels<<<1, 1>>>(deviceKernels); + cudaDeviceSynchronize(); // Ensure initialization is completed + + // Input data + double input[2] = {0.1, 0.2}; + double* deviceInput; + cudaMalloc(&deviceInput, 2 * sizeof(double)); + cudaMemcpy(deviceInput, input, 2 * sizeof(double), cudaMemcpyHostToDevice); + + // Output data + double output[1]; + double* deviceOutput; + cudaMalloc(&deviceOutput, 1 * sizeof(double)); + + // Compute values + computeValues<<<1, 1>>>(deviceKernels, deviceInput, deviceOutput, 1); + cudaDeviceSynchronize(); + + // Copy output back to host + cudaMemcpy(output, deviceOutput, 1 * sizeof(double), cudaMemcpyDeviceToHost); + + // Print output + printf("Output: %f\n", output[0]); + + // Free memory + cudaFree(deviceKernels); + cudaFree(deviceInput); + cudaFree(deviceOutput); + + return 0; +} + +#endif // SPLITTINGS_CUH_ diff --git a/gaps-1.1/doc/extra/versioncontrol.py b/gaps-1.1/doc/extra/versioncontrol.py new file mode 100644 index 0000000..d04688e --- /dev/null +++ b/gaps-1.1/doc/extra/versioncontrol.py @@ -0,0 +1,36 @@ +import numpy as np +import pandas as pd +import matplotlib.pyplot as plt +# from scipy.stats import iqr + +# Load the data +cpp0 = pd.read_csv('cpp-time-0.dat') +cud0 = pd.read_csv('gaps-time-0.dat') +cpp1 = pd.read_csv('cpp-time-1.dat') +cud1 = pd.read_csv('gaps-time-1.dat') + +# Name the Columns Matrix, Shower, Observables, and Total +cpp0.columns = ['Matrix', 'Shower', 'Observables', 'Total'] +cud0.columns = ['Matrix', 'Shower', 'Observables', 'Total'] +cpp1.columns = ['Matrix', 'Shower', 'Observables', 'Total'] +cud1.columns = ['Matrix', 'Shower', 'Observables', 'Total'] + +# Get the median speedup between cpp and cud for the two versions +speedup0 = cpp0.median() / cud0.median() +speedup1 = cpp1.median() / cud1.median() + +# Get the median speedup between the two versions for cpp and cud +speedup_cpp = cpp0.median() / cpp1.median() * 100 +speedup_cud = cud0.median() / cud1.median() * 100 + +# Concatenate all results +speedup0 = pd.concat([speedup0, speedup1], axis=1) +speedup1 = pd.concat([speedup_cpp, speedup_cud], axis=1) +speedup = pd.concat([speedup0, speedup1], axis=1) + +# Name the columns +speedup.columns = ['Old Speedup', 'New Speedup', + 'Cpp Old/New (%)', 'CUDA Old/New (%)'] + +# Print the results to 3 decimal places +print(speedup.round(3)) diff --git a/gaps-1.1/doc/sections/code-structure.md b/gaps-1.1/doc/sections/code-structure.md new file mode 100644 index 0000000..8ceac22 --- /dev/null +++ b/gaps-1.1/doc/sections/code-structure.md @@ -0,0 +1,24 @@ +# Code Structure + +> **Version 1.0.0**: All code in `include` and `src` to be split by component later + +While the focus of the paper is the parton shower, there are several necessary components that are exciting in their own right. Below is a figure showing the structure of the classes. + +**Note**: The code structure is identical for the C++ and CUDA generators. We want to demonstrate that one can get a speedup without altering the code much. + + + +Let's go through the Classes: + +- Base: All the necessary definitions and settings are provided here. For now, you can adjust the Centre of Mass Energy and Cutoff and the physical contents here. + +- Vec4 contains the definition of the four vectors—the primary tool for all our kinematics. This is one of many header-only files! This is because the code inside a .cu file might not be accessible to another .cu file (weird, I know; it could be me struggling to do things the C++ way, though!). + +- Parton and Event: This is the backbone of the Generator. Unlike the original tutorial, we choose to store all and any properties of the code in these objects. The parton class holds the ID, momentum and colour of the parton. The event class stores an array of partons (it has to be static because CUDA won't allow dynamic arrays/unsuitable for speed). It also stores several parameters like the differential cross section and observable values and acts as a temporary store for shower parameters. It's good to have everything in there rather than in separate arrays! + +- Histogram: This has a class for Bins and Histograms. Fun feature: CUDA allows you to do Atomic operations, i.e., I can bin all my events at the same time! It makes things unbelievably fast! + +- Physics Classes + - Matrix: Computes the matrix element for $ee \to qq$ + - Shower: Runs the final state shower + - Observable: Calculates the observable and bins the Histogram diff --git a/gaps-1.1/doc/sections/getting-started.md b/gaps-1.1/doc/sections/getting-started.md new file mode 100644 index 0000000..01fd128 --- /dev/null +++ b/gaps-1.1/doc/sections/getting-started.md @@ -0,0 +1,65 @@ +# Getting Started + +The code simulates just one experiment, so this should take a little time. + +The file `rungaps` can be used to build and operate both the C++ and CUDA generators. It has been coded with all the routines (including the one for paper results). + +To run GAPS, you will need the following: + +- An NVIDIA V100, A100 or above: These are the only GPUs with the required features +- CMake: To create the makefile +- NVCC and GCC: to build the two generators +- Python: To make plots of the results + +Simply execute the command: + +```bash +./rungaps +``` + +NB: If you get a permission denied error, please run ```chmod +x rungaps```. + +This should build the program and generate 10000 events on the GPU. The output should look something like this: + +```bash +------------------------------------------------- +| GAPS: a GPU-Amplified Parton Shower | +------------------------------------------------- +Process: e+ e- --> q qbar +Number of Events: 10000 + +Initialising... +Generating Matrix Elements... +Showering Partons... +Analysing Events... + +EVENT GENERATION COMPLETE + +ME Time: 0.000666688 s +Sh Time: 0.0235208 s +An Time: 0.00896093 s + +Total Time: 0.0331484 s + +Histograms written to gaps.yoda +Timing data written to gaps-time.dat +------------------------------------------------ +``` + +Then you have free reign over what you need. Like [README.md](../../README.md), here are all the possible ways you can run gaps: + +```bash +# Simulate different numbers of events and build the code using multiple CPU cores +./rungaps -n nevents -c ncores + +# Run C++ Simulation +./rungaps -n nevents -c ncores -r cpp + +# Run the same number of events on C++ and CUDA and compare times +./rungaps -n nevents -c ncores -r compare + +# Run a multitude of number of events 100 times, as seen in the paper +./rungaps -c ncores -r full +``` + +And that's all there is to it! In upcoming versions, we'll add features like increasing the number of events, different centres of mass energies, new analyses, and potentially some matching! diff --git a/gaps-1.1/doc/sections/matrix-element.md b/gaps-1.1/doc/sections/matrix-element.md new file mode 100644 index 0000000..78fad3e --- /dev/null +++ b/gaps-1.1/doc/sections/matrix-element.md @@ -0,0 +1,13 @@ +# Matrix Element Calculation + +This part of the code resembles the classic example of axpy (a*x + p = y). The matrix element is in charge of doing some calculations of pre-computed matrix elements and applying random numbers to create authentic events. + +Here are the steps involved: + +- The code generates a random number for the flavour of the quark-antiquark pair and for the angles theta and Phi. + +- Then it does an analytical calculation, which might be complicated for us but is simple for the device as it is designed for this. This calculation gives the matrix element and the differential cross-section. + +- It generates the momenta of the e+e- pair and the quark-antiquark pair and adds all of this information to the event variable + +And that's all! The shower and observables sections are a lot more complicated. For more sophisticated calculations, look at the PEPPER [2311.06198](https://arxiv.org/abs/2311.06198.pdf) and MG4GPU [2303.18244](https://arxiv.org/abs/2303.18244) projects! diff --git a/gaps-1.1/doc/sections/observables.md b/gaps-1.1/doc/sections/observables.md new file mode 100644 index 0000000..7548685 --- /dev/null +++ b/gaps-1.1/doc/sections/observables.md @@ -0,0 +1,15 @@ +# Calculating Observables and Histogramming + +After the parton shower stage, we are left with multiple events of different sizes (meaning different numbers of partons in the final state). Like the shower, we write our code to treat each event independently and use the as-prescribed algorithm to calculate the observables. + +The observables that are currently available are: + +- Durham Jet Rates: These are the 2->3, 3->4, 4->5 and 5->6 Jet rates on a log scale. These tell us how many jets a particular event possibly has, along with intricate details like the transverse momentum spectra [Phys. Lett. B 269 (1991)](https://inspirehep.net/literature/317695) + +- Thrust: This tells us how pencil-like or spherical a final state is [Phys. Rev. Lett. 39 (1977)](https://link.aps.org/doi/10.1103/PhysRevLett.39.1587). There are two possible algorithms for calculating thrust: one that is more time-consuming but consistent for all event shapes and a simplified, faster algorithm that incorrectly calculates thrust for highly spherical events [(Reported in Pythia)](https://pythia.org/latest-manual/EventAnalysis.html). We used the more time-consuming algorithm, first seen in [Z. Physik C 1, 61 (1979)](https://link.springer.com/article/10.1007/BF01450381) + +- Jet Masses and Broadenings: These split the momenta of the partons with and against the thrust direction and yield properties of each hemisphere. [Phys. Lett. B 272 (1991)](https://www.sciencedirect.com/science/article/pii/037026939191845M) [Phys. Lett. B. 295 (1992](https://www.sciencedirect.com/science/article/pii/037026939291565Q) + +- **New** Dalitz Plot: This studies the emitter and spectator momentum in a single emission event [Phil. Mag. 44 (1953)](https://www.tandfonline.com/doi/abs/10.1080/14786441008520365) (OFF by default though, as the writing time dominates the GPU analysis time!) + +One exciting thing that happens during the stage is binning. CUDA has a feature called atomic operations, where a variable can be operated on simultaneously. In our case, this means that once an observable is calculated for all events, every value of that observable is binned at once! (Pretty cool, right?) diff --git a/gaps-1.1/doc/sections/paraveto.png b/gaps-1.1/doc/sections/paraveto.png new file mode 100644 index 0000000000000000000000000000000000000000..f9b265ed72e212201341629e31c13483933a563f GIT binary patch literal 142633 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 literal 0 HcmV?d00001 diff --git a/gaps-1.1/doc/sections/parton-shower.md b/gaps-1.1/doc/sections/parton-shower.md new file mode 100644 index 0000000..a5fc8c4 --- /dev/null +++ b/gaps-1.1/doc/sections/parton-shower.md @@ -0,0 +1,21 @@ +# Parton Shower + +Now I won't really go too much in depth with this page, there's a whole paper on it... you're most likely here after reading it, too... + +Either way, here is a breakdown: Due to Independent Thread Scheduling [1](https://developer.nvidia.com/blog/inside-volta/), we have access to for and while loops. This means that we can adapt our original veto algorithm: + + + +Into something like this: + + + +The GPU handles each event independently and works regardless of its size. As a security measure, the "Sync GPU and Check Everything" function is run after each step so that there are no spills. Furthermore, when a thread encounters a veto event, it can skip it. + +Just a few things to point out that may not have made it to the paper: + +- Max number of Partons: It is much faster to have a static event size than a dynamic size, as most of the time is used to manage memory. So we set the maximum number of partons to about 30 (we usually see at most 17-18 partons from the shower). While we are in the LEP phase, we shouldn't have a problem, but once we soon come to LHC, we'll have to be careful of this + +- Splitting Kernels as a "shared" object: I have had a LOT of trouble making the splitting kernel an object that can be shared across the device without making a copy. So, instead, as a first solution, we manually sample through all kernels and have the relevant functions written into the Cuda kernel. One possible improvement to this could be a code system where the code determines the splitting, the case (FF, FI, IF, and II) and the relevant partons (see v1.1.0) + +Besides that, the code is thoroughly commented on so a potential developer can find it helpful. diff --git a/gaps-1.1/doc/sections/structure.png b/gaps-1.1/doc/sections/structure.png new file mode 100644 index 0000000000000000000000000000000000000000..d0e53cff95d26323a00ef47bf17fcc15b9beae80 GIT binary patch literal 168743 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�+;CPrIq{}Xt$=i%=v`zW2IU*-JqL5SRjyLBv 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 Z%o}*>a;m~*t#iOXRYfg@QhBT3{|~6Oq8$JL literal 0 HcmV?d00001 diff --git a/gaps-1.1/doc/sections/veto.png b/gaps-1.1/doc/sections/veto.png new file mode 100644 index 0000000000000000000000000000000000000000..312ff9e386705523c7da92b94026e4b0a2764589 GIT binary patch literal 166556 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
x)xafUx4GdIX(8n-5V0+ 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�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 AS^xk5 literal 0 HcmV?d00001 diff --git a/gaps-1.1/doc/tutorials/basicExample.cu b/gaps-1.1/doc/tutorials/basicExample.cu new file mode 100644 index 0000000..8187262 --- /dev/null +++ b/gaps-1.1/doc/tutorials/basicExample.cu @@ -0,0 +1,32 @@ +int main(void) { + // DOES NOT RUN - JUST TO SHOW THE STRUCTURE OF A BASIC CUDA PROGRAM + + // Declare Variables + // h_ = on host, d_ = on device + int *h_c, d_c; + + // Allocate memory on the device + // cudaMalloc( Location of the Memory, Size of the Memory ) + cudaMalloc((void **)&d_c, sizeof(int)); + + // If h_c initialised, copy info from h_c to d_c + // cudaMemcpy( destination, host, numBytes, Direction ) + cudaMemcpy(d_c, h_c, sizeof(int) cudaMemcpyHostToDevice); + + // Kernel Configuration Parameters + dim3 grid_size(1); + dim3 block_size(1); + + // Launch the Kernel + kernel<<<grid_size, block_size>>>(...); + + // Copy data back to host + // cudaMemcpy( destination, device, numBytes, Direction ) + cudaMemcpy(h_c, d_c, sizeof(int), cudaMemcpyDeviceToHost); + + // Deallocate Memory + cudaFree(d_c); + free(h_c); + + return 0; +} diff --git a/gaps-1.1/doc/tutorials/parallelFor.cu b/gaps-1.1/doc/tutorials/parallelFor.cu new file mode 100644 index 0000000..f29a3a3 --- /dev/null +++ b/gaps-1.1/doc/tutorials/parallelFor.cu @@ -0,0 +1,106 @@ +// Adapted from https://github.com/olcf-tutorials/vector_addition_cuda +#include <stdio.h> + +// Large array, 2^20 +#define N 1048576 + +// Kernel that adds the element +// Global = Called on Host, Ran on Device +__global__ void add_vectors(double *a, double *b, double *out) { + /* + Indexing within Grids + --------------------- + + Can use dim3 variables to get the index of a block/thread, + as well as the size of a grid/block + + dim3 blockIdx - unique + dim3 threadIdx - unique in own block + dim3 gridDim - size of grid + dim3 blockDim - size of block + + A useful indexing command is + blockDim.x * blockIdx.x + threadIdx.x + - blockDim.x * blockIdx.x allows going from 0 to block_size one at a time + - + ThreadIdx.x allows acces to threads in a block + */ + + // Shared Memory Example + /* + __shared__ int shared_array[N]; + shared_array[i] = in[i] // Each Thread writes to one element of s_a + */ + + int id = blockDim.x * blockIdx.x + threadIdx.x; + if (id < N) out[id] = a[id] + b[id]; +} + +// Main Program +int main() { + // Time the execution + cudaEvent_t start, stop; + float time; + cudaEventCreate(&start); + cudaEventCreate(&stop); + + // Number of bytes to allocate for N Doubles + size_t bytes = N * sizeof(double); + + // Allocate memory for arrays A, B and Out on host + // malloc casts to void*, use (double*) to match the pointers + double *h_a = (double *)malloc(bytes); + double *h_b = (double *)malloc(bytes); + double *h_out = (double *)malloc(bytes); + + // Allocate memory for arrays A, B and Out on Device + double *d_a, *d_b, *d_out; + cudaMalloc(&d_a, bytes); + cudaMalloc(&d_b, bytes); + cudaMalloc(&d_out, bytes); + + // Fill A and B + for (int i = 0; i < N; i++) { + h_a[i] = 1.; + h_b[i] = 2.; + } + + // Copy data from host to device + cudaMemcpy(d_a, h_a, bytes, cudaMemcpyHostToDevice); + cudaMemcpy(d_b, h_b, bytes, cudaMemcpyHostToDevice); + + // Grid and Block Size + int block_size = 256; + int grid_size = ceil(float(N) / block_size); + + // Start Timer + cudaEventRecord(start, 0); + + // Launch kernel + add_vectors<<<grid_size, block_size>>>(d_a, d_b, d_out); + + // End Timer + cudaEventRecord(stop, 0); + cudaEventSynchronize(stop); + + // Get Elapsed Time + cudaEventElapsedTime(&time, start, stop); + cudaEventDestroy(start); + cudaEventDestroy(stop); + + // Copy data from device to host + cudaMemcpy(h_out, d_out, bytes, cudaMemcpyDeviceToHost); + + // Free Memory + free(h_a); + free(h_b); + free(h_out); + cudaFree(d_a); + cudaFree(d_b); + cudaFree(d_out); + + // Print if everything works + printf("\n---------------------------\n"); + printf("SUCCESS\n"); + printf("%d\n", time); + printf("---------------------------\n"); +} diff --git a/gaps-1.1/doc/tutorials/saxpy.cu b/gaps-1.1/doc/tutorials/saxpy.cu new file mode 100644 index 0000000..1aa2fba --- /dev/null +++ b/gaps-1.1/doc/tutorials/saxpy.cu @@ -0,0 +1,45 @@ +// Adapted From +// https://developer.nvidia.com/blog/easy-introduction-cuda-c-and-c/ +#include <stdio.h> + +// Large array, 2^20 +#define N 1048576 + +// Kernel function to add the elements of two arrays +__global__ void saxpy(int n, float a, float *x, float *y) { + int i = blockIdx.x * blockDim.x + threadIdx.x; + if (i < n) y[i] = a * x[i] + y[i]; +} + +int main(void) { + // Host input vectors + float *h_x, *h_y, *d_x, *d_y; + h_x = (float *)malloc(N * sizeof(float)); + h_y = (float *)malloc(N * sizeof(float)); + + // Device input vectors + cudaMalloc(&d_x, N * sizeof(float)); + cudaMalloc(&d_y, N * sizeof(float)); + + // Initialize x and y arrays on the host + for (int i = 0; i < N; i++) { + h_x[i] = 1.0f; + h_y[i] = 2.0f; + } + + // Copy data from host to device + cudaMemcpy(d_x, x, N * sizeof(float), cudaMemcpyHostToDevice); + cudaMemcpy(d_y, y, N * sizeof(float), cudaMemcpyHostToDevice); + + // Perform SAXPY on 1M elements + saxpy<<<(N + 255) / 256, 256>>>(N, 2.0f, d_x, d_y); + + // Copy data from device to host + cudaMemcpy(y, d_y, N * sizeof(float), cudaMemcpyDeviceToHost); + + // Cleanup + cudaFree(d_x); + cudaFree(d_y); + free(h_x); + free(h_y); +} diff --git a/gaps-1.1/gaps/.vscode/settings.json b/gaps-1.1/gaps/.vscode/settings.json new file mode 100644 index 0000000..23fd35f --- /dev/null +++ b/gaps-1.1/gaps/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "editor.formatOnSave": true +} \ No newline at end of file diff --git a/gaps-1.1/gaps/CMakeLists.txt b/gaps-1.1/gaps/CMakeLists.txt new file mode 100644 index 0000000..0a70137 --- /dev/null +++ b/gaps-1.1/gaps/CMakeLists.txt @@ -0,0 +1,43 @@ +# Minimum required version of CMake +cmake_minimum_required(VERSION 3.10) + +# Enable CUDA +enable_language(CUDA) + +# Project name and languages used +project(gaps LANGUAGES CXX CUDA) + +# Set C++ standard +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +# Add the --expt-extended-lambda flag to the CUDA flags +set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} --expt-extended-lambda") + +# List of subdirectories +set(SUBDIRS base matrix shower observables) + +# Include the directories for the headers +foreach(subdir ${SUBDIRS}) + include_directories(${subdir}/include) + add_subdirectory(${subdir}) +endforeach() + +# Set the directory for the executable +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin) + +# Add executable +add_executable(gaps main.cu) + +# Link the libraries from the subdirectories +target_link_libraries(gaps base matrix shower observables) + +# Set CUDA architecture to 7.0 for Tesla V100 +set_property(TARGET gaps PROPERTY CUDA_ARCHITECTURES 70) + +# Set CUDA properties +set_target_properties( + gaps + PROPERTIES + CUDA_SEPARABLE_COMPILATION ON +) \ No newline at end of file diff --git a/gaps-1.1/gaps/base/CMakeLists.txt b/gaps-1.1/gaps/base/CMakeLists.txt new file mode 100644 index 0000000..8f87bb3 --- /dev/null +++ b/gaps-1.1/gaps/base/CMakeLists.txt @@ -0,0 +1,18 @@ +cmake_minimum_required(VERSION 3.10) +project(base) + +# Enable CUDA +enable_language(CUDA) + +set(CMAKE_CXX_STANDARD 17) + +include_directories(include) +file(GLOB SOURCES "src/*.cu") + +# Set all source files to compile with CUDA +set_source_files_properties(${SOURCES} PROPERTIES LANGUAGE CUDA) + +add_library(base ${SOURCES}) + +# Set CUDA architecture to 7.0 for Tesla V100 +set_property(TARGET base PROPERTY CUDA_ARCHITECTURES 70) \ No newline at end of file diff --git a/gaps-1.1/gaps/base/include/base.cuh b/gaps-1.1/gaps/base/include/base.cuh new file mode 100644 index 0000000..cdee987 --- /dev/null +++ b/gaps-1.1/gaps/base/include/base.cuh @@ -0,0 +1,69 @@ +#ifndef BASE_CUH_ +#define BASE_CUH_ + +/** + * The Base Class + * -------------- + * + * This file contains the neccessary includes and definitions that are used + * throughout the program. This includes CUDA Libraries, Thrust Libraries, + * C++ Libraries, and some global variables. Make changes here if you want to + * change the global settings of the program! + * + * (but also be careful with what you change, as it may break the program...) + */ + +// ----------------------------------------------------------------------------- +// Import Libraries + +// CUDA Libraries +#include <cuda_runtime.h> // CUDA Runtime +#include <curand_kernel.h> // CURAND Library + +// Thrust Libraries +#include <thrust/device_vector.h> // ALL EVENTS ON DEVICE + +// C++ Libraries (Genreally Used) +#include <cmath> // Math Functions +#include <cstdlib> // SYS EXIT Command +#include <fstream> // File I/O +#include <iostream> // Standard I/O + +// ----------------------------------------------------------------------------- +// Program Settings - CAREFUL WITH CHANGES + +// Debugging - only debug levels 0 and 1 (true or false) +const bool debug = false; + +// Max Number of Partons, set to save memory +// at 10^6 Events: +// 50 works for all, but observables calc is slow +// 100 works for ME + PS, but not for Observables +// 30 is more than enough to do e+e- at 91.2 GeV +const int maxPartons = 30; + +// LEP 91.2 settings +const double mz = 91.1876; +const double asmz = 0.118; + +// Cutoff and its value of alpha_s (pre-calculated) +const double tC = 1.; +const double asmax = 0.440886; + +// Number of Histogram Bins: Common for all Plots (for now...) +const int nBins = 100; +const int nBins2D = 100; // NxN Grid + +// Maximum Number of Events, beyond which program will be done in batches +const int maxEvents = 1000000; + +// ----------------------------------------------------------------------------- +// Common Functions + +// Sync Device and Check for CUDA Errors +void syncGPUAndCheck(const char *operation); + +// Debugging Function - Available in Kernels too! +__host__ __device__ void DEBUG_MSG(const char *msg); + +#endif // BASE_CUH_ \ No newline at end of file diff --git a/gaps-1.1/gaps/base/include/event.cuh b/gaps-1.1/gaps/base/include/event.cuh new file mode 100644 index 0000000..6c4d398 --- /dev/null +++ b/gaps-1.1/gaps/base/include/event.cuh @@ -0,0 +1,242 @@ +#ifndef EVENT_CUH_ +#define EVENT_CUH_ + +#include "parton.cuh" + +/** + * The Event Class + * --------------- + * + * This is the backbone of the program. An event contains the differential cross + * section calculated from the ME, the hard partons and the showered partons. + * It also contains the shower parameters which are constantly updated during + * the showering process. The event also contains the analysis variables, which + * are calculated after the showering process is complete. + */ + +class Event { + private: + // Temporary Solution - Allows a limited number of partons + // Better Solution would be to use a dynamic array, but not GPU friendly + Parton partons[maxPartons]; + + // ME Params ----------------------------------------------------------------- + + double dxs = 0.; // Differential Cross Section + int nHard = 0; // Number of Hard Partons + // int nInitial = 0; // Number of Initial Partons (Prep for ISR) + // int nNonParton = 0; // Number of Non-Parton Partons (Prep for ISR) + + // Shower Params ------------------------------------------------------------- + + int nEmission = 0; // Number of Emissions + double showerT = 0.; // Evolution and Splitting Variables + double showerZ = 0.; + double showerY = 0.; + int showerC = 0; // Colour Counter + + // Selecting Winner Emission - Defaults Values which represent no winner + int winSF = 16; + int winDipole[2] = {-1, -1}; + double winParams[2] = {0., 0.}; + + // End Shower Flag + bool endShower = false; // Shower End Flag - used if T < 1 GeV + + // Analysis Variables -------------------------------------------------------- + + // Event Validity - Momentum and Colour Conservation + bool validity = true; + + // Jet Rates using the Durham Algorithm + double y23 = -50., y34 = -50., y45 = -50., y56 = -50.; + + // Event Shape Variables - Thrust, Jet Masses and Broadenings + double thr = -50., hjm = -50., ljm = -50., wjb = -50., njb = -50.; + Vec4 t_axis = Vec4(); + + // Dalitz Plot + double dalitz[2] = {-50., -50.}; + + public: + // Constructor --------------------------------------------------------------- + + // Empty, so that we can build our ME, PS onto it + __device__ Event() {} + + // Getters ------------------------------------------------------------------- + + // Access Partons in the Event + __device__ Parton GetParton(int i) const { return partons[i]; } + __device__ int GetSize() const { return nHard + nEmission; } + __device__ int GetHard() const { return nHard; } + __device__ int GetEmissions() const { return nEmission; } + __device__ int GetPartonSize() const { + // -2: e+, e- + return (nHard + nEmission) - 2; + } + + // Get Differential Cross Section + __device__ double GetDxs() const { return dxs; } + + // Get Shower Params + __device__ double GetShowerT() const { return showerT; } + __device__ double GetShowerZ() const { return showerZ; } + __device__ double GetShowerY() const { return showerY; } + __device__ int GetShowerC() const { return showerC; } + + __device__ int GetWinSF() const { return winSF; } + __device__ int GetWinDipole(int i) const { return winDipole[i]; } + __device__ double GetWinParam(int i) const { return winParams[i]; } + + __device__ bool GetEndShower() const { return endShower; } + + // Analysis Getters + __device__ bool GetValidity() const { return validity; } + + __device__ double GetY23() const { return y23; } + __device__ double GetY34() const { return y34; } + __device__ double GetY45() const { return y45; } + __device__ double GetY56() const { return y56; } + __device__ double GetThr() const { return thr; } + __device__ double GetHJM() const { return hjm; } + __device__ double GetLJM() const { return ljm; } + __device__ double GetWJB() const { return wjb; } + __device__ double GetNJB() const { return njb; } + + __device__ Vec4 GetTAxis() const { return t_axis; } + + __device__ double GetDalitz(int i) const { return dalitz[i]; } + + // Setters ------------------------------------------------------------------- + + // Add / Replace Parton + __device__ void SetParton(int i, Parton parton) { partons[i] = parton; } + + // Set Parton Data + __device__ void SetPartonPid(int i, int pid) { partons[i].SetPid(pid); } + __device__ void SetPartonMom(int i, Vec4 mom) { partons[i].SetMom(mom); } + __device__ void SetPartonCol(int i, int col) { partons[i].SetCol(col); } + __device__ void SetPartonAntiCol(int i, int anticol) { + partons[i].SetAntiCol(anticol); + } + + // Set Differential Cross Section and nHard + __device__ void SetDxs(double dxs) { this->dxs = dxs; } + __device__ void SetHard(int nHard) { this->nHard = nHard; } + + // Adjust and Increment Number of Emissions + __device__ void SetEmissions(int nEmission) { this->nEmission = nEmission; } + __device__ void IncrementEmissions() { nEmission++; } + + // Set Shower Params + __device__ void SetShowerT(double showerT) { this->showerT = showerT; } + __device__ void SetShowerZ(double showerZ) { this->showerZ = showerZ; } + __device__ void SetShowerY(double showerY) { this->showerY = showerY; } + + __device__ void SetShowerC(int showerC) { this->showerC = showerC; } + __device__ void IncrementShowerC() { showerC++; } + + __device__ void SetWinSF(int winSF) { this->winSF = winSF; } + __device__ void SetWinDipole(int i, int winParton) { + this->winDipole[i] = winParton; + } + __device__ void SetWinParam(int i, double winParam) { + this->winParams[i] = winParam; + } + + __device__ void SetEndShower(bool endShower) { this->endShower = endShower; } + + // Set Analysis Variables + __device__ void SetValidity(bool validity) { this->validity = validity; } + + __device__ void SetY23(double y23) { this->y23 = y23; } + __device__ void SetY34(double y34) { this->y34 = y34; } + __device__ void SetY45(double y45) { this->y45 = y45; } + __device__ void SetY56(double y56) { this->y56 = y56; } + __device__ void SetThr(double thr) { this->thr = thr; } + __device__ void SetHJM(double hjm) { this->hjm = hjm; } + __device__ void SetLJM(double ljm) { this->ljm = ljm; } + __device__ void SetWJB(double wjb) { this->wjb = wjb; } + __device__ void SetNJB(double njb) { this->njb = njb; } + + __device__ void SetTAxis(Vec4 t_axis) { this->t_axis = t_axis; } + + __device__ void SetDalitz(double x1, double x2) { + dalitz[0] = x1; + dalitz[1] = x2; + } + + // Member Functions ---------------------------------------------------------- + + // Validate the Event - Check Momentum and Colour Conservation + __device__ bool Validate() { + Vec4 psum = Vec4(); + + int csum[100] = {0}; + + for (int i = 0; i < GetSize(); i++) { + Parton p = GetParton(i); + + Vec4 pmom = p.GetMom(); + int pcol = p.GetCol(); + int pAntiCol = p.GetAntiCol(); + + psum = psum + pmom; + + if (pcol > 0) { + csum[pcol] += 1; + } + + if (pAntiCol > 0) { + csum[pAntiCol] -= 1; + } + } + + bool pcheck = (psum[0] < 1e-12 && psum[1] < 1e-12 && psum[2] < 1e-12 && + psum[3] < 1e-12); + + /* // No need to print for GPU, it counts number of invalid events + if (!pcheck) { + printf("%f %f %f %f\n", psum[0], psum[1], psum[2], psum[3]); + } + */ + + bool ccheck = true; + for (int i = 0; i < maxPartons - 1; i++) { + if (csum[i] != 0) { + // printf("Colour %d is not conserved.\n", i); + ccheck = false; + break; + } + } + + return pcheck && ccheck; + } + + __device__ void print_info() const { + printf("Event Information:\n"); + printf("Dxs: %f\n", GetDxs()); + printf("Number of Emissions: %d\n", GetEmissions()); + printf("Shower Parameters:\n"); + printf(" T: %f\n", GetShowerT()); + printf(" Y: %f\n", GetShowerY()); + printf(" Z: %f\n", GetShowerZ()); + printf(" C: %d\n", GetShowerC()); + printf("Shower Winner:\n"); + printf(" Kernel Number: %d\n", GetWinSF()); + printf(" Partons: [%d, %d]\n", GetWinDipole(0), GetWinDipole(1)); + printf(" Params: [%f, %f]\n", GetWinParam(0), GetWinParam(1)); + printf("Partons:\n"); + for (int i = 0; i < GetSize(); i++) { + Parton parton = GetParton(i); + printf(" Parton %d:\n", i); + printf(" Pid: %d\n", parton.GetPid()); + printf(" Mom: %f\n", parton.GetMom().P()); + printf(" Col: %d\n", parton.GetCol()); + printf(" AntiCol: %d\n", parton.GetAntiCol()); + } + } +}; + +#endif // EVENT_CUH_ \ No newline at end of file diff --git a/gaps-1.1/gaps/base/include/histogram.cuh b/gaps-1.1/gaps/base/include/histogram.cuh new file mode 100644 index 0000000..2fe9540 --- /dev/null +++ b/gaps-1.1/gaps/base/include/histogram.cuh @@ -0,0 +1,259 @@ +#ifndef HISTOGRAM_CUH_ +#define HISTOGRAM_CUH_ + +#include "base.cuh" + +/** + * Binning and Histogramming + * ------------------------- + * + * This file contains tools needed for binning and histogramming data. The data + * is binned and then stored as a Yoda file[1] + * + * Yoda: https://yoda.hepforge.org/ + */ + +class Bin1D { + public: + double xmin, xmax, w, w2, wx, wx2, n; + + __host__ __device__ Bin1D(double xmin = 0., double xmax = 0.) + : xmin(xmin), xmax(xmax), w(0.), w2(0.), wx(0.), wx2(0.), n(0.) {} + + __host__ __device__ double Width() const { return xmax - xmin; } + + __device__ void AtomicFill(double x, double weight) { + atomicAdd(&w, weight); + atomicAdd(&w2, weight * weight); + atomicAdd(&wx, weight * x); + atomicAdd(&wx2, weight * weight * x); + atomicAdd(&n, 1.); + } + + __host__ __device__ void ScaleW(double scale) { + w *= scale; + w2 *= scale * scale; + wx *= scale; + wx2 *= scale * scale; + } +}; + +class Bin2D { + public: + double xmin, xmax, ymin, ymax, w, w2, wx, wx2, wy, wy2, wxy, n; + + public: + __host__ __device__ Bin2D(double xmin = 0., double xmax = 0., + double ymin = 0., double ymax = 0.) + : xmin(xmin), + xmax(xmax), + ymin(ymin), + ymax(ymax), + w(0.), + w2(0.), + wx(0.), + wx2(0.), + wy(0.), + wy2(0.), + wxy(0.), + n(0.) {} + + __host__ __device__ double WidthX() const { return xmax - xmin; } + __host__ __device__ double WidthY() const { return ymax - ymin; } + + __device__ void AtomicFill(double x, double y, double weight) { + atomicAdd(&w, weight); + atomicAdd(&w2, weight * weight); + atomicAdd(&wx, weight * x); + atomicAdd(&wx2, weight * weight * x); + atomicAdd(&wy, weight * y); + atomicAdd(&wy2, weight * weight * y); + atomicAdd(&wxy, weight * x * y); + atomicAdd(&n, 1.); + } + + __host__ __device__ void ScaleW(double scale) { + w *= scale; + w2 *= scale * scale; + wx *= scale; + wx2 *= scale * scale; + wy *= scale; + wy2 *= scale * scale; + wxy *= scale * scale; + } +}; + +/** + * Name component of Histo1D + * ------------------------- + * + * Unfortunately, std::string is not a feature in CUDA, so we have to provide + * the name additinally whern writing to file. This is the only difference + * between the CUDA and C++ versions of the code. + */ +// Histo1D class +class Histo1D { + public: + Bin1D bins[nBins]; // Array of Bin1D objects on the device + Bin1D uflow; + Bin1D oflow; + Bin1D total; + double scale; + // static constexpr int nbin = nBins; // SET IN BASE.CUH + + public: + __host__ __device__ Histo1D(double xmin = 0., double xmax = 1.) + : uflow(xmin - 100., xmin), + oflow(xmax, xmax + 100.), + total(xmin - 100., xmax + 100.), + scale(1.) { + double width = (xmax - xmin) / nBins; + for (int i = 0; i < nBins; ++i) { + double xlow = xmin + i * width; + double xhigh = xlow + width; + bins[i] = Bin1D(xlow, xhigh); // Initialize Bin1D object on the device + } + } + + // Atomic Binning! Each event is binned simultaneously here + __device__ void Fill(double x, double w) { + int l = 0; + int r = nBins - 1; + int c = (l + r) / 2; + double a = bins[c].xmin; + + while (r - l > 1) { + if (x < a) { + r = c; + } else { + l = c; + } + c = (l + r) / 2; + a = bins[c].xmin; + } + + if (x > bins[r].xmin) { + if (x > bins[r].xmax) { + oflow.AtomicFill(x, w); + } else { + bins[r].AtomicFill(x, w); + } + } else if (x < bins[l].xmin) { + uflow.AtomicFill(x, w); + } else { + bins[l].AtomicFill(x, w); + } + + total.AtomicFill(x, w); + } + + __host__ __device__ void ScaleW(double scale) { + for (int i = 0; i < nBins; ++i) { + bins[i].ScaleW(scale); + } + uflow.ScaleW(scale); + oflow.ScaleW(scale); + total.ScaleW(scale); + this->scale *= scale; + } +}; + +class Histo2D { + public: + Bin2D bins[nBins2D][nBins2D]; + Bin2D uflow; + Bin2D oflow; + Bin2D total; + double scale; + + public: + __host__ __device__ Histo2D(double xmin = 0., double xmax = 1., + double ymin = 0., double ymax = 1.) + : uflow(xmin - 100., xmin, ymin - 100., ymin), + oflow(xmax, xmax + 100., ymax, ymax + 100.), + total(xmin - 100., xmax + 100., ymin - 100., ymax + 100.), + scale(1.) { + double widthX = (xmax - xmin) / nBins2D; + double widthY = (ymax - ymin) / nBins2D; + for (int i = 0; i < nBins2D; ++i) { + for (int j = 0; j < nBins2D; ++j) { + double xlow = xmin + i * widthX; + double xhigh = xlow + widthX; + double ylow = ymin + j * widthY; + double yhigh = ylow + widthY; + bins[i][j] = Bin2D(xlow, xhigh, ylow, yhigh); + } + } + } + + __device__ void Fill(double x, double y, double w) { + // Find the bin for the x-coordinate + int lx = 0; + int rx = nBins2D - 1; + int cx = (lx + rx) / 2; + double ax = bins[cx][0].xmin; + + while (rx - lx > 1) { + if (x < ax) { + rx = cx; + } else { + lx = cx; + } + cx = (lx + rx) / 2; + ax = bins[cx][0].xmin; + } + + // Find the bin for the y-coordinate + int ly = 0; + int ry = nBins2D - 1; + int cy = (ly + ry) / 2; + double ay = bins[0][cy].ymin; + + while (ry - ly > 1) { + if (y < ay) { + ry = cy; + } else { + ly = cy; + } + cy = (ly + ry) / 2; + ay = bins[0][cy].ymin; + } + + // Fill the appropriate bin + if (x > bins[rx][0].xmin && y > bins[0][ry].ymin) { + if (x > bins[rx][0].xmax || y > bins[0][ry].ymax) { + oflow.AtomicFill(x, y, w); + } else { + bins[rx][ry].AtomicFill(x, y, w); + } + } else if (x < bins[lx][0].xmin || y < bins[0][ly].ymin) { + uflow.AtomicFill(x, y, w); + } else { + bins[lx][ly].AtomicFill(x, y, w); + } + + total.AtomicFill(x, y, w); + } + + void ScaleW(double scale) { + for (auto& binRow : bins) { + for (auto& bin : binRow) { + bin.ScaleW(scale); + } + } + uflow.ScaleW(scale); + oflow.ScaleW(scale); + total.ScaleW(scale); + this->scale *= scale; + } +}; + +// Writing is done outside of the class in CUDA implementation +std::string ToString(Histo1D h, std::string name); +void Write(Histo1D h, std::string name, const std::string& filename); + +// Overload for Histo2D +std::string ToString(Histo2D h, std::string name); +void Write(Histo2D h, std::string name, const std::string& filename); + +#endif // HISTOGRAM_CUH_ \ No newline at end of file diff --git a/gaps-1.1/gaps/base/include/parton.cuh b/gaps-1.1/gaps/base/include/parton.cuh new file mode 100644 index 0000000..f251911 --- /dev/null +++ b/gaps-1.1/gaps/base/include/parton.cuh @@ -0,0 +1,45 @@ +#ifndef PARTON_CUH_ +#define PARTON_CUH_ + +// Partons have Vec4 Momentum, Vec4 #includes Base +#include "vec4.cuh" + +/** + * The Parton Class + * ---------------- + + * This file contains the Parton Object, which has attributes ID, momentum and + * colour. For now we use it for Electrons too. + */ + +class Parton { + public: + // Constructor + __device__ Parton(int pid = 0, Vec4 momentum = Vec4(), int col = 0, + int anticol = 0) + : pid(pid), mom(momentum), col(col), anticol(anticol) {} + + // Getters and Setters + __device__ int GetPid() const { return pid; } + __device__ Vec4 GetMom() const { return mom; } + __device__ int GetCol() const { return col; } + __device__ int GetAntiCol() const { return anticol; } + + __device__ void SetPid(int pid) { this->pid = pid; } + __device__ void SetMom(Vec4 mom) { this->mom = mom; } + __device__ void SetCol(int col) { this->col = col; } + __device__ void SetAntiCol(int anticol) { this->anticol = anticol; } + + // If two partons are in a Colour Connected Dipole + __device__ bool IsColorConnected(Parton p) { + return (col > 0 && col == p.anticol) || (anticol > 0 && anticol == p.col); + } + + private: + int pid; + Vec4 mom; + int col; + int anticol; +}; + +#endif // PARTON_CUH_ \ No newline at end of file diff --git a/gaps-1.1/gaps/base/include/qcd.cuh b/gaps-1.1/gaps/base/include/qcd.cuh new file mode 100644 index 0000000..416c75f --- /dev/null +++ b/gaps-1.1/gaps/base/include/qcd.cuh @@ -0,0 +1,55 @@ +#ifndef QCD_CUH_ +#define QCD_CUH_ + +// Parton includes Base, which has the CUDA libraries +#include "event.cuh" + +/** + * The Strong Coupling Constant + * ---------------------------- + * + * This file contains the QCD constants and the alpha_s class. The alpha_s class + * is a simple class that calculates the strong coupling constant at a given + * scale. The class is designed to be used in a CUDA kernel, so it is a simple + * class with no dynamic memory allocation. + */ + +// QCD Constants, maybe you can use for SU(Not 3) ? +const double kNC = 3.; +const double kTR = 0.5; +const double kCA = kNC; +const double kCF = (kNC * kNC - 1.) / (2. * kNC); + +// A lot of the member functions can be defined here, but we need a .cu file to +// define the kernels, so might as well define everything in the .cu file! +class AlphaS { + private: + int order; + double mc2, mb2, mz2, asmz, asmb, asmc; + + public: + // Constructor + __device__ AlphaS(double mz, double asmz, int order = 1, double mb = 4.75, + double mc = 1.27); + + // Setup function for device code + __device__ void setup(double mz, double asmz, int order = 1, double mb = 4.75, + double mc = 1.27); + + // All the required functions to calculate the strong coupling constant + __device__ double Beta0(int nf); + __device__ double Beta1(int nf); + __device__ double As0(double t); + __device__ double As1(double t); + __device__ double operator()(double t); +}; + +// Setup the alpha_s class +__global__ void asSetupKernel(AlphaS *as, double mz, double asmz, int order = 1, + double mb = 4.75, double mc = 1.27); + +// Calculate the strong coupling constant +__global__ void asValue(AlphaS *as, double *asval, double t); +__global__ void asShowerKernel(AlphaS *as, Event *events, double *asval, int N); + +#endif // QCD_CUH_ \ No newline at end of file diff --git a/gaps-1.1/gaps/base/include/vec4.cuh b/gaps-1.1/gaps/base/include/vec4.cuh new file mode 100644 index 0000000..43f05a4 --- /dev/null +++ b/gaps-1.1/gaps/base/include/vec4.cuh @@ -0,0 +1,160 @@ +#ifndef VEC4_CUH_ +#define VEC4_CUH_ + +// Base Class, with all the important definitions +#include "base.cuh" + +/** + * Four Momenta + * ------------ + * + * This file contains the definition of the Four Momenta class, which is used to + * represent the four-momentum of particles in the event. It is a simple class + * with the four attributes (E, px, py, pz) and some basic operations that can + * be performed with them. + * + * + * Why is this Header Only? + * ------------------------ + * + * When you declare a __device__ function in a .cuh (header) file and define it + * in a .cu file, that function's definition is only available to the .cu file + * in which it is defined. This is because __device__ functions are compiled by + * nvcc into the device code, and unlike host functions, they do not have + * external linkage that allows them to be seen or linked across different .cu + * files after individual compilation. + */ + +class Vec4 { + private: + double E, px, py, pz; + + public: + // Constructor - Define key attributes Energy and Momentum + // Used in ME and out [HOST + DEVICE] + __device__ Vec4(double E = 0., double px = 0., double py = 0., double pz = 0.) + : E(E), px(px), py(py), pz(pz) {} + + // Get Method to Obtain Attribute Value + __device__ double operator[](int i) const { + switch (i) { + case 0: + return E; + case 1: + return px; + case 2: + return py; + case 3: + return pz; + default: + // CUDA does not support exceptions, so we just return 0 + return 0; + } + } + + // Print a Column Vector with the attributes + friend std::ostream& operator<<(std::ostream& os, const Vec4& v) { + os << "(" << v.E << "," << v.px << "," << v.py << "," << v.pz << ")"; + return os; + } + + // Simple Mathematics with Four vectors + __device__ Vec4 operator+(const Vec4& v) const { + return Vec4(E + v.E, px + v.px, py + v.py, pz + v.pz); + } + + __device__ Vec4 operator-() const { return Vec4(-E, -px, -py, -pz); } + + __device__ Vec4 operator-(const Vec4& v) const { + return Vec4(E - v.E, px - v.px, py - v.py, pz - v.pz); + } + + // Multiplication (and Dot Product) + __device__ double operator*(const Vec4& v) const { + return E * v.E - px * v.px - py * v.py - pz * v.pz; + } + + __device__ Vec4 operator*(double v) const { + return Vec4(E * v, px * v, py * v, pz * v); + } + + // Division + __device__ Vec4 operator/(double v) const { + return Vec4(E / v, px / v, py / v, pz / v); + } + + // Magnitude of the Vector + __device__ double M2() const { return (*this) * (*this); } + + __device__ double M() const { + double m2 = M2(); + return m2 > 0 ? sqrt(m2) : 0; + } + + // 3 Momenta + __device__ double P2() const { return px * px + py * py + pz * pz; } + + __device__ double P() const { + double p2 = P2(); + return p2 > 0 ? sqrt(p2) : 0; + } + + // Transverse Momenta + __device__ double PT2() const { return px * px + py * py; } + + __device__ double PT() const { + double pt2 = PT2(); + return pt2 > 0 ? sqrt(pt2) : 0; + } + + // Angles + __device__ double Theta() const { + double p = P(); + return p != 0 ? acos(pz / p) : 0; + } + + __device__ double Phi() const { + if (px == 0 && py == 0) { + return 0.; + } else { + return atan2(py, px); + } + } + + __device__ double Rapidity() const { + double denominator = (E - pz); + return denominator != 0 ? 0.5 * log((E + pz) / denominator) : 0; + } + + __device__ double Eta() const { + double theta = Theta(); + return -log(tan(theta / 2.)); + } + + // Three Momenta Dot and Cross Product + __device__ double Dot(const Vec4& v) const { + return px * v.px + py * v.py + pz * v.pz; + } + + __device__ Vec4 Cross(const Vec4& v) const { + return Vec4(0., py * v.pz - pz * v.py, pz * v.px - px * v.pz, + px * v.py - py * v.px); + } + + // Boosts + __device__ Vec4 Boost(const Vec4& v) const { + double rsq = M(); + double v0 = (E * v.E - px * v.px - py * v.py - pz * v.pz) / rsq; + double c1 = (v.E + v0) / (rsq + E); + return Vec4(v0, v.px - c1 * px, v.py - c1 * py, v.pz - c1 * pz); + } + + __device__ Vec4 BoostBack(const Vec4& v) const { + double rsq = M(); + double v0 = (E * v.E + px * v.px + py * v.py + pz * v.pz) / rsq; + double c1 = (v.E + v0) / (rsq + E); + return Vec4(v0, v.px + c1 * px, v.py + c1 * py, v.pz + c1 * pz); + } +}; + +#endif // VEC4_CUH_ diff --git a/gaps-1.1/gaps/base/src/base.cu b/gaps-1.1/gaps/base/src/base.cu new file mode 100644 index 0000000..256dbb8 --- /dev/null +++ b/gaps-1.1/gaps/base/src/base.cu @@ -0,0 +1,25 @@ +#include "base.cuh" + +// Sync Device and Check for Errors +void syncGPUAndCheck(const char *operation) { + // synchronize with the device + cudaDeviceSynchronize(); + + // check for an error + cudaError_t error = cudaGetLastError(); + if (error != cudaSuccess) { + // print the CUDA error message + std::cerr << "CUDA error @" << operation << ": " + << cudaGetErrorString(error) << std::endl; + + // abort the program + std::exit(EXIT_FAILURE); + } +} + +// Debug messages +__host__ __device__ void DEBUG_MSG(const char *message) { + if (debug) { + printf("DEBUG: %s\n", message); + } +} \ No newline at end of file diff --git a/gaps-1.1/gaps/base/src/histogram.cu b/gaps-1.1/gaps/base/src/histogram.cu new file mode 100644 index 0000000..5c6deab --- /dev/null +++ b/gaps-1.1/gaps/base/src/histogram.cu @@ -0,0 +1,83 @@ +#include "histogram.cuh" + +// Libraries needed for file writing +#include <fstream> +#include <iomanip> +#include <sstream> +#include <string> + +// Text for the Yoda File +std::string ToString(Histo1D h, std::string name) { + std::stringstream ss; + ss << "BEGIN YODA_HISTO1D " << name << "\n\n"; + ss << "Path=" << name << "\n\n"; + ss << "ScaledBy=" << h.scale << "\n"; + ss << "Title=\nType=Histo1D\n"; + ss << "# ID\tID\tsumw\tsumw2\tsumwx\tsumwx2\tnumEntries\n"; + ss << std::scientific << std::setprecision(6); + ss << "Total" + << "\t" << h.total.w << "\t" << h.total.w2 << "\t" << h.total.wx << "\t" + << h.total.wx2 << "\t" << static_cast<int>(h.total.n) << "\n"; + ss << "Underflow" + << "\t" << h.uflow.w << "\t" << h.uflow.w2 << "\t" << h.uflow.wx << "\t" + << h.uflow.wx2 << "\t" << static_cast<int>(h.uflow.n) << "\n"; + ss << "Overflow" + << "\t" << h.oflow.w << "\t" << h.oflow.w2 << "\t" << h.oflow.wx << "\t" + << h.oflow.wx2 << "\t" << static_cast<int>(h.oflow.n) << "\n"; + ss << "# xlow\txhigh\tsumw\tsumw2\tsumwx\tsumwx2\tnumEntries\n"; + for (size_t i = 0; i < nBins; ++i) { + ss << std::scientific << std::setprecision(6); + ss << h.bins[i].xmin << "\t" << h.bins[i].xmax << "\t" << h.bins[i].w + << "\t" << h.bins[i].w2 << "\t" << h.bins[i].wx << "\t" << h.bins[i].wx2 + << "\t" << static_cast<int>(h.bins[i].n) << "\n"; + } + ss << "END YODA_HISTO1D\n\n"; + return ss.str(); +} + +// Write the Yoda File +void Write(Histo1D h, std::string name, const std::string& filename) { + std::ofstream file; + file.open(filename, std::ios::out | std::ios::app); + file << ToString(h, name); + file.close(); +} + +std::string ToString(Histo2D h, std::string name) { + std::stringstream ss; + ss << "BEGIN YODA_HISTO2D " << name << "\n\n"; + ss << "Path=" << name << "\n\n"; + ss << "ScaledBy=" << h.scale << "\n"; + ss << "Title=\nType=Histo2D\n"; + ss << "# " + "ID\tID\tsumw\tsumw2\tsumwx\tsumwx2\tsumwy\tsumwy2\tsumwxy\tnumEntries" + "\n"; + ss << std::scientific << std::setprecision(6); + ss << "Total" + << "\t" << h.total.w << "\t" << h.total.w2 << "\t" << h.total.wx << "\t" + << h.total.wx2 << "\t" << h.total.wy << "\t" << h.total.wy2 << "\t" + << h.total.wxy << "\t" << static_cast<int>(h.total.n) << "\n"; + ss << "# " + "xlow\txhigh\tylow\tyhigh\tsumw\tsumw2\tsumwx\tsumwx2\tsumwy\tsumwy2\ts" + "umwxy\tnumEntries\n"; + for (size_t i = 0; i < nBins2D; ++i) { + for (size_t j = 0; j < nBins2D; ++j) { + ss << std::scientific << std::setprecision(6); + ss << h.bins[i][j].xmin << "\t" << h.bins[i][j].xmax << "\t" + << h.bins[i][j].ymin << "\t" << h.bins[i][j].ymax << "\t" + << h.bins[i][j].w << "\t" << h.bins[i][j].w2 << "\t" << h.bins[i][j].wx + << "\t" << h.bins[i][j].wx2 << "\t" << h.bins[i][j].wy << "\t" + << h.bins[i][j].wy2 << "\t" << h.bins[i][j].wxy << "\t" + << static_cast<int>(h.bins[i][j].n) << "\n"; + } + } + ss << "END YODA_HISTO2D\n\n"; + return ss.str(); +} + +void Write(Histo2D h, std::string name, const std::string& filename) { + std::ofstream file; + file.open(filename, std::ios::out | std::ios::app); + file << ToString(h, name); + file.close(); +} \ No newline at end of file diff --git a/gaps-1.1/gaps/base/src/qcd.cu b/gaps-1.1/gaps/base/src/qcd.cu new file mode 100644 index 0000000..5739ea6 --- /dev/null +++ b/gaps-1.1/gaps/base/src/qcd.cu @@ -0,0 +1,110 @@ +#include "qcd.cuh" + +// Constructor +__device__ AlphaS::AlphaS(double mz, double asmz, int order, double mb, + double mc) + : order(order), + mc2(mc * mc), + mb2(mb * mb), + mz2(mz * mz), + asmz(asmz), + asmb((*this)(mb2)), + asmc((*this)(mc2)) {} + +// Setup +__device__ void AlphaS::setup(double mz, double asmz, int order, double mb, + double mc) { + this->order = order; + this->mc2 = mc * mc; + this->mb2 = mb * mb; + this->mz2 = mz * mz; + this->asmz = asmz; + this->asmb = (*this)(mb2); + this->asmc = (*this)(mc2); +} + +// Beta and Alpha S functions +__device__ double AlphaS::Beta0(int nf) { + return (11. / 6. * kCA) - (2. / 3. * kTR * nf); +} + +__device__ double AlphaS::Beta1(int nf) { + return (17. / 6. * kCA * kCA) - ((5. / 3. * kCA + kCF) * kTR * nf); +} + +// Alpha_s at order 0 and 1 (One-Loop and Two-Loop) +__device__ double AlphaS::As0(double t) { + double tref, asref, b0; + if (t >= mb2) { + tref = mz2; + asref = asmz; + b0 = Beta0(5) / (2. * M_PI); + } else if (t >= mc2) { + tref = mb2; + asref = asmb; + b0 = Beta0(4) / (2. * M_PI); + } else { + tref = mc2; + asref = asmc; + b0 = Beta0(3) / (2. * M_PI); + } + return 1. / (1. / asref + b0 * log(t / tref)); +} + +__device__ double AlphaS::As1(double t) { + double tref, asref, b0, b1, w; + if (t >= mb2) { + tref = mz2; + asref = asmz; + b0 = Beta0(5) / (2. * M_PI); + b1 = Beta1(5) / pow(2. * M_PI, 2); + } else if (t >= mc2) { + tref = mb2; + asref = asmb; + b0 = Beta0(4) / (2. * M_PI); + b1 = Beta1(4) / pow(2. * M_PI, 2); + } else { + tref = mc2; + asref = asmc; + b0 = Beta0(3) / (2. * M_PI); + b1 = Beta1(3) / pow(2. * M_PI, 2); + } + w = 1. + b0 * asref * log(t / tref); + return asref / w * (1. - b1 / b0 * asref * log(w) / w); +} + +__device__ double AlphaS::operator()(double t) { + if (order == 0) { + return As0(t); + } else { + return As1(t); + } +} + +// Set up Kernel on the Device +__global__ void asSetupKernel(AlphaS *as, double mz, double asmz, int order, + double mb, double mc) { + as->setup(mz, asmz, order, mb, mc); +} + +// Calculate AlphaS on the Device for ONE input +__global__ void asValue(AlphaS *as, double *asval, double t) { + int idx = blockIdx.x * blockDim.x + threadIdx.x; + + if (idx >= 1) return; + + asval[idx] = (*as)(t); + printf("asVal: %f\n", (*as)(t)); +} + +// Calculate AlphaS on the Device for MANY inputs +// Exclusively used for Parton Shower Veto Algorithm +__global__ void asShowerKernel(AlphaS *as, Event *events, double *asval, + int N) { + int idx = blockIdx.x * blockDim.x + threadIdx.x; + + if (idx >= N) return; + Event &ev = events[idx]; + + asval[idx] = (*as)(ev.GetShowerT()); +} diff --git a/gaps-1.1/gaps/main.cu b/gaps-1.1/gaps/main.cu new file mode 100644 index 0000000..b63570e --- /dev/null +++ b/gaps-1.1/gaps/main.cu @@ -0,0 +1,166 @@ +// To Measure Wall Clock Time and Write to File +#include <chrono> +#include <fstream> + +// Base Components +#include "base.cuh" + +// Matrix Element +#include "matrix.cuh" + +// Parton Shower +#include "shower.cuh" + +// Jet and Event Shape Analysis +#include "observables.cuh" + +/** + * GAPS: a GPU-Amplified Parton Shower + * ----------------------------------- + * + * This program is a simple event generator for e+e- -> partons. It is designed + * to be a simple example of how to use the GPU to calculate matrix elements and + * perform parton showering. The program is designed to be a proof of concept as + * well as a intuitive example of how to use the GPU for event generation. + * + * This program is based on S. Höche's "Introduction to Parton Showers" Python + * tutorial[1]. This program calculates ee -> qq and then showers the partons. + * + * [1] https://arxiv.org/abs/1411.4085 and MCNET-CTEQ 2021 Tutorial + */ + +// ----------------------------------------------------------------------------- + +void runGenerator(const int& N, const double& E, const std::string& filename) { + // --------------------------------------------------------------------------- + // Give some information about the simulation + + std::cout << "-------------------------------------------------" << std::endl; + std::cout << "| GAPS: a GPU-Amplified Parton Shower |" << std::endl; + std::cout << "-------------------------------------------------" << std::endl; + std::cout << "Process: e+ e- --> q qbar" << std::endl; + std::cout << "Number of Events: " << N << std::endl; + std::cout << "Center of Mass Energy: " << E << " GeV" << std::endl; + std::cout << "" << std::endl; + + // --------------------------------------------------------------------------- + // Initialisation + + std::cout << "Initialising..." << std::endl; + thrust::device_vector<Event> d_events(N); + + // --------------------------------------------------------------------------- + // ME Generation + + std::cout << "Generating Matrix Elements..." << std::endl; + auto start = std::chrono::high_resolution_clock::now(); + + calcLOME(d_events, E); + + auto end = std::chrono::high_resolution_clock::now(); + std::chrono::duration<double> diff_me = end - start; + + // --------------------------------------------------------------------------- + // Do the Showering + + std::cout << "Showering Partons..." << std::endl; + start = std::chrono::high_resolution_clock::now(); + + runShower(d_events); + + end = std::chrono::high_resolution_clock::now(); + std::chrono::duration<double> diff_sh = end - start; + + // --------------------------------------------------------------------------- + // Analyze Events + + std::cout << "Analysing Events..." << std::endl; + start = std::chrono::high_resolution_clock::now(); + + // Analysis + doAnalysis(d_events, filename); + + end = std::chrono::high_resolution_clock::now(); + std::chrono::duration<double> diff_an = end - start; + + // --------------------------------------------------------------------------- + // Empty the device vector (Not neccessary, but good practice) + + d_events.clear(); + d_events.shrink_to_fit(); + + /** + * Maybe in the future, to allow > 10^6 events, we can split the large number + * into smaller batches. Right now, we write events to file directly from the + * do... functions, so the code is not ready for this. + */ + + // --------------------------------------------------------------------------- + // Results + + double diff = diff_me.count() + diff_sh.count() + diff_an.count(); + + std::cout << "" << std::endl; + std::cout << "EVENT GENERATION COMPLETE" << std::endl; + std::cout << "" << std::endl; + std::cout << "ME Time: " << diff_me.count() << " s" << std::endl; + std::cout << "Sh Time: " << diff_sh.count() << " s" << std::endl; + std::cout << "An Time: " << diff_an.count() << " s" << std::endl; + std::cout << "" << std::endl; + std::cout << "Total Time: " << diff << " s" << std::endl; + std::cout << "" << std::endl; + + // Open the file in append mode. This will create the file if it doesn't + // exist. + std::ofstream outfile("gaps-time.dat", std::ios_base::app); + + // Write diff_sh.count() to the file. + outfile << diff_me.count() << ", " << diff_sh.count() << ", " + << diff_an.count() << ", " << diff << std::endl; + + // Close the file. + outfile.close(); + + std::cout << "Histograms written to " << filename << std::endl; + std::cout << "Timing data written to gaps-time.dat" << std::endl; + std::cout << "------------------------------------------------" << std::endl; +} +// ----------------------------------------------------------------------------- + +int main(int argc, char* argv[]) { + // Import Settings + int N = argc > 1 ? atoi(argv[1]) : 10000; + double E = argc > 2 ? atof(argv[2]) : 91.2; + + // If more than maxEvents, run in batches + if (N > maxEvents) { + std::cout << "-------------------------------------------------" + << std::endl; + std::cout << "More Events than GPU Can Handle at Once!" << std::endl; + std::cout << "Running in batches..." << std::endl; + std::cout << "Please use rivet-merge to combine runs" << std::endl; + + // Split into batches + int nBatches = N / maxEvents; + int nRemainder = N % maxEvents; + std::cout << "Number of Batches: " << nBatches << std::endl; + std::cout << "Size of Remainder: " << nRemainder << std::endl; + + // Run in batches + for (int i = 0; i < nBatches; i++) { + std::string filename = "gaps-" + std::to_string(i) + ".yoda"; + runGenerator(maxEvents, E, filename); + } + + // Run remainder + if (nRemainder > 0) { + std::string filename = "gaps-" + std::to_string(nBatches) + ".yoda"; + runGenerator(nRemainder, E, filename); + } + } else { + runGenerator(N, E, "gaps.yoda"); + } + + return 0; +} +// ----------------------------------------------------------------------------- diff --git a/gaps-1.1/gaps/matrix/CMakeLists.txt b/gaps-1.1/gaps/matrix/CMakeLists.txt new file mode 100644 index 0000000..7b5722c --- /dev/null +++ b/gaps-1.1/gaps/matrix/CMakeLists.txt @@ -0,0 +1,21 @@ +cmake_minimum_required(VERSION 3.10) +project(matrix) + +# Enable CUDA +enable_language(CUDA) + +set(CMAKE_CXX_STANDARD 17) + +include_directories(include ../base/include) +file(GLOB SOURCES "src/*.cu") + +# Set all source files to compile with CUDA +set_source_files_properties(${SOURCES} PROPERTIES LANGUAGE CUDA) + +add_library(matrix ${SOURCES}) + +# Set CUDA architecture to 7.0 for Tesla V100 +set_property(TARGET matrix PROPERTY CUDA_ARCHITECTURES 70) + +# Link to Base +target_link_libraries(matrix base) \ No newline at end of file diff --git a/gaps-1.1/gaps/matrix/include/matrix.cuh b/gaps-1.1/gaps/matrix/include/matrix.cuh new file mode 100644 index 0000000..eca6061 --- /dev/null +++ b/gaps-1.1/gaps/matrix/include/matrix.cuh @@ -0,0 +1,43 @@ +#ifndef MATRIX_CUH +#define MATRIX_CUH + +// Parton includes Base, which has the CUDA libraries +#include "event.cuh" + +/** + * Matrix Element Generation + * ------------------------- + * + * This class is used to generate the leading order matrix element for the + * e+e- -> q qbar process. The ME^2 is calculated simulataneously for all + * events, but with a few random numbers for flavour and direction. This is a + * massless shower, so the system generates theoretical identical events for + * all flavours. + */ +class Matrix { + private: + double alphas, ecms, MZ2, GZ2, alpha, sin2tw, amin, ye, ze, ws; + + public: + // Constructor + Matrix(double alphas = asmz, double ecms = 91.2); + + // Setup function for device code + __device__ void setup(double alphas = asmz, double ecms = 91.2); + + // Leading Order Matrix Element Generation + __device__ double ME2(int fl, double s, double t); + + // Getters + __device__ double GetECMS() { return ecms; }; +}; + +// CUDA Kernels to Setup Matrix and make LO Points +// TIP: CUDA KERNELS CANNOT BE MEMBER FUNCTIONS +__global__ void matrixSetupKernel(Matrix* matrix, double E); +__global__ void loPointKernel(Matrix* matrix, Event* ev, int N); + +// All tasks wrapped in a function +void calcLOME(thrust::device_vector<Event>& d_events, double E); + +#endif // MATRIX_CUH \ No newline at end of file diff --git a/gaps-1.1/gaps/matrix/src/matrix.cu b/gaps-1.1/gaps/matrix/src/matrix.cu new file mode 100644 index 0000000..2babef4 --- /dev/null +++ b/gaps-1.1/gaps/matrix/src/matrix.cu @@ -0,0 +1,131 @@ +#include "matrix.cuh" + +// Host constructor +Matrix::Matrix(double alphas, double ecms) + : alphas(alphas), + ecms(ecms), + MZ2(pow(91.1876, 2.)), + GZ2(pow(2.4952, 2.)), + alpha(1. / 128.802), + sin2tw(0.22293), + amin(1.e-10), + ye(0.5), + ze(0.01), + ws(0.25) {} + +// Device setup function - Default Values in matrix.cuh +__device__ void Matrix::setup(double alphas, double ecms) { + this->alphas = alphas; + this->ecms = ecms; + this->MZ2 = pow(91.1876, 2.); + this->GZ2 = pow(2.4952, 2.); + this->alpha = 1. / 128.802; + this->sin2tw = 0.22293; + this->amin = 1.e-10; + this->ye = 0.5; + this->ze = 0.01; + this->ws = 0.25; +} + +// ME^2 Formula +__device__ double Matrix::ME2(int fl, double s, double t) { + double qe = -1.; + double ae = -0.5; + double ve = ae - 2. * qe * sin2tw; + double qf = (fl == 2 || fl == 4) ? 2. / 3. : -1. / 3.; + double af = (fl == 2 || fl == 4) ? 0.5 : -0.5; + double vf = af - 2. * qf * sin2tw; + double kappa = 1. / (4. * sin2tw * (1. - sin2tw)); + double chi1 = kappa * s * (s - MZ2) / (pow(s - MZ2, 2.) + GZ2 * MZ2); + double chi2 = pow(kappa * s, 2.) / (pow(s - MZ2, 2.) + GZ2 * MZ2); + double term1 = (1. + pow(1. + 2. * t / s, 2.)) * + (pow(qf * qe, 2.) + 2. * (qf * qe * vf * ve) * chi1 + + (ae * ae + ve * ve) * (af * af + vf * vf) * chi2); + double term2 = (1. + 2. * t / s) * (4. * qe * qf * ae * af * chi1 + + 8. * ae * ve * af * vf * chi2); + return pow(4. * M_PI * alpha, 2.) * 3. * (term1 + term2); +} + +// Kernel to set up the Matrix object on the device +__global__ void matrixSetupKernel(Matrix *matrix, double E) { + matrix->setup(asmz, E); +} + +// Kernel to generate the Event +__global__ void loPointKernel(Matrix *matrix, Event *events, int N) { + int idx = blockIdx.x * blockDim.x + threadIdx.x; + + curandState state; + + // Every events[idx] has a seed idx + // curand_init(idx, 0, 0, &states[idx]); + + // Every events[idx] has a seed idx and clok64() is used to get a seed + curand_init(clock64(), idx, 0, &state); + + if (idx >= N) { + return; + } + + Event &ev = events[idx]; + + double ct = 2. * curand_uniform(&state) - 1.; + double st = sqrt(1. - ct * ct); + double phi = 2. * M_PI * curand_uniform(&state); + + int fl = curand(&state) % 5 + 1; + double p0 = matrix->GetECMS() / 2.; // Need to use Get because outside class + + Vec4 pa(p0, 0., 0., p0); + Vec4 pb(p0, 0., 0., -p0); + Vec4 p1(p0, p0 * st * cos(phi), p0 * st * sin(phi), p0 * ct); + Vec4 p2(p0, -p0 * st * cos(phi), -p0 * st * sin(phi), -p0 * ct); + + double lome = matrix->ME2(fl, (pa + pb).M2(), (pa - p1).M2()); + + // Calculate the differential cross section + // 5 = 5 flavours (?) + // 3.89379656e8 = Convert from GeV^-2 to pb + // 8 pi = Standard Phase Space Factor + // pow(matrix->GetECMS(), 2.) = center of mass energy squared, s + double dxs = 5. * lome * 3.89379656e8 / (8. * M_PI) / + (2. * pow(matrix->GetECMS(), 2.)); + + Parton p[4] = {Parton(-11, -pa, 0, 0), Parton(11, -pb, 0, 0), + Parton(fl, p1, 1, 0), Parton(-fl, p2, 0, 1)}; + + // Set the Partons + for (int i = 0; i < 4; i++) { + ev.SetParton(i, p[i]); + } + + // Set the ME Params + ev.SetDxs(dxs); + ev.SetHard(4); +} + +// Function to generate the LO Matrix Elements + Momenta +void calcLOME(thrust::device_vector<Event> &d_events, double E) { + // Number of Events - Can get from d_events.size() + int N = d_events.size(); + + // Allocate memory for a Matrix object on the device + Matrix *d_matrix; + cudaMalloc(&d_matrix, sizeof(Matrix)); + + // Set up the device Matrix object + DEBUG_MSG("Running @matrixSetupKernel"); + matrixSetupKernel<<<1, 1>>>(d_matrix, E); + syncGPUAndCheck("matrixSetupKernel"); + + // Generate the LO Matrix Elements + DEBUG_MSG("Running @loPointKernel"); + loPointKernel<<<(N + 255) / 256, 256>>>( + d_matrix, thrust::raw_pointer_cast(d_events.data()), N); + syncGPUAndCheck("loPointKernel"); + + // Free Memory + cudaFree(d_matrix); + + return; +} diff --git a/gaps-1.1/gaps/observables/CMakeLists.txt b/gaps-1.1/gaps/observables/CMakeLists.txt new file mode 100644 index 0000000..2beb936 --- /dev/null +++ b/gaps-1.1/gaps/observables/CMakeLists.txt @@ -0,0 +1,21 @@ +cmake_minimum_required(VERSION 3.10) +project(observables) + +# Enable CUDA +enable_language(CUDA) + +set(CMAKE_CXX_STANDARD 17) + +include_directories(include ../base/include) +file(GLOB SOURCES "src/*.cu") + +# Set all source files to compile with CUDA +set_source_files_properties(${SOURCES} PROPERTIES LANGUAGE CUDA) + +add_library(observables ${SOURCES}) + +# Set CUDA architecture to 7.0 for Tesla V100 +set_property(TARGET observables PROPERTY CUDA_ARCHITECTURES 70) + +# Link to Base +target_link_libraries(observables base) \ No newline at end of file diff --git a/gaps-1.1/gaps/observables/include/dalitz.cuh b/gaps-1.1/gaps/observables/include/dalitz.cuh new file mode 100644 index 0000000..ecb92cd --- /dev/null +++ b/gaps-1.1/gaps/observables/include/dalitz.cuh @@ -0,0 +1,9 @@ +#ifndef DALITZ_CUH_ +#define DALITZ_CUH_ + +#include "event.cuh" + +// Dalitz Plot +__global__ void calculateDalitz(Event* events, int N); + +#endif // DALITZ_CUH_ \ No newline at end of file diff --git a/gaps-1.1/gaps/observables/include/eventshapes.cuh b/gaps-1.1/gaps/observables/include/eventshapes.cuh new file mode 100644 index 0000000..f1ef393 --- /dev/null +++ b/gaps-1.1/gaps/observables/include/eventshapes.cuh @@ -0,0 +1,11 @@ +#ifndef EVENTSHAPES_CUH_ +#define EVENTSHAPES_CUH_ + +#include "event.cuh" + +// Event Shapes +__device__ void bubbleSort(Vec4* moms, int n); +__global__ void calculateThr(Event* events, int N); +__global__ void calculateJetMBr(Event* events, int N); + +#endif // EVENTSHAPES_CUH_ \ No newline at end of file diff --git a/gaps-1.1/gaps/observables/include/jetrates.cuh b/gaps-1.1/gaps/observables/include/jetrates.cuh new file mode 100644 index 0000000..95f5566 --- /dev/null +++ b/gaps-1.1/gaps/observables/include/jetrates.cuh @@ -0,0 +1,10 @@ +#ifndef JETRATES_CUH_ +#define JETRATES_CUH_ + +#include "event.cuh" + +// Jet rates using Durham algorithm +__device__ double Yij(const Vec4& p, const Vec4& q, double ecm2); +__global__ void doCluster(Event* events, int N); + +#endif // JETRATES_CUH_ \ No newline at end of file diff --git a/gaps-1.1/gaps/observables/include/observables.cuh b/gaps-1.1/gaps/observables/include/observables.cuh new file mode 100644 index 0000000..0db3d97 --- /dev/null +++ b/gaps-1.1/gaps/observables/include/observables.cuh @@ -0,0 +1,60 @@ +#ifndef DURHAM_CUH_ +#define DURHAM_CUH_ + +// Histogram and Parton include relevant headers +#include "event.cuh" +#include "histogram.cuh" + +// Add Analyses Here +#include "dalitz.cuh" +#include "eventshapes.cuh" +#include "jetrates.cuh" + +/** + * Observables and their Anaylsis + * ------------------------------- + * + * This file contains the necessary classes and functions to perform a Durham + * algorithm analysis on a set of events, as well as thrust and Jet massses + + * broadenings. The observables are calculated here and then analysed using + * Rivet[1] + * + * [1] Rivet: https://rivet.hepforge.org/ + */ + +class Analysis { + public: + // Similar to Histo1D in C++/Rivet, just split into Host / Device Components + Histo1D hists[10]; + Histo2D dalitz; + + double wtot; // Scale by Weight for 1/sigma d(sigma)/d Observable + double ntot; // Scale by Number for d(sigma)/d Observable + + // Can't have strings as device variables, in future could use char* + __host__ __device__ Analysis() : wtot(0.), ntot(0.) { + hists[0] = Histo1D(-4.3, -0.3); // /gaps/log10y23 + hists[1] = Histo1D(-4.3, -0.3); // /gaps/log10y34 + hists[2] = Histo1D(-4.3, -0.3); // /gaps/log10y45 + hists[3] = Histo1D(-4.3, -0.3); // /gaps/log10y56 + hists[4] = Histo1D(0., 0.5); // "/gaps/tvalue" + hists[5] = Histo1D(0., 0.5); // "/gaps/tzoomd" + hists[6] = Histo1D(0., 1.); // "/gaps/hjm" + hists[7] = Histo1D(0., 0.5); // "/gaps/ljm" + hists[8] = Histo1D(0., 0.5); // "/gaps/wjb" + hists[9] = Histo1D(0., 0.2); // "/gaps/njb" + + dalitz = Histo2D(0., 1., 0., 1.); // '/gaps/dalitz" + } +}; + +// Validate Events - Colour and Momentum Conservation +__global__ void validateEvents(Event* events, int* invalid, int N); + +// Fill Histograms simultaneously +__global__ void fillHistos(Analysis* an, Event* events, int N); + +// Analysis wrapped in a function +void doAnalysis(thrust::device_vector<Event>& d_events, std::string filename); + +#endif // DURHAM_CUH_ \ No newline at end of file diff --git a/gaps-1.1/gaps/observables/src/dalitz.cu b/gaps-1.1/gaps/observables/src/dalitz.cu new file mode 100644 index 0000000..639693d --- /dev/null +++ b/gaps-1.1/gaps/observables/src/dalitz.cu @@ -0,0 +1,31 @@ +#include "dalitz.cuh" + +// Dalitz Plot + +__global__ void calculateDalitz(Event* events, int N) { + int idx = blockIdx.x * blockDim.x + threadIdx.x; + + if (idx >= N) { + return; + } + + Event& ev = events[idx]; + + if (!ev.GetValidity() || ev.GetPartonSize() != 3) { + return; + } + + // Obtain Energy from incoming partons + double E = abs(ev.GetParton(0).GetMom()[0] + ev.GetParton(1).GetMom()[0]); + + // By default, element 2 is quark and 3 is antiquark + // i.e. emission will be element 4 + Vec4 p1 = ev.GetParton(2).GetMom(); + Vec4 p2 = ev.GetParton(3).GetMom(); + + // Calculate x1 and x2 + double x1 = 2 * p1.P() / E; + double x2 = 2 * p2.P() / E; + + ev.SetDalitz(x1, x2); +} \ No newline at end of file diff --git a/gaps-1.1/gaps/observables/src/eventshapes.cu b/gaps-1.1/gaps/observables/src/eventshapes.cu new file mode 100644 index 0000000..4a9001b --- /dev/null +++ b/gaps-1.1/gaps/observables/src/eventshapes.cu @@ -0,0 +1,175 @@ +#include "eventshapes.cuh" + +// Event Shapes + +// Bubble sort to sort the momenta in descending order of P() +__device__ void bubbleSort(Vec4* moms, int n) { + for (int i = 0; i < n - 1; i++) { + for (int j = 0; j < n - i - 1; j++) { + if (moms[j].P() < moms[j + 1].P()) { + Vec4 temp = moms[j]; + moms[j] = moms[j + 1]; + moms[j + 1] = temp; + } + } + } +} + +// Thrust calculation from TASSO +__global__ void calculateThr(Event* events, int N) { + int idx = blockIdx.x * blockDim.x + threadIdx.x; + + if (idx >= N) { + return; + } + + Event& ev = events[idx]; + + if (!ev.GetValidity() || ev.GetPartonSize() < 3) { + return; + } + + Vec4 moms[maxPartons]; + for (int i = 2; i < ev.GetSize(); ++i) { + moms[i - 2] = ev.GetParton(i).GetMom(); + } + + bubbleSort(moms, maxPartons); + + double momsum = 0.; + for (int i = 0; i < ev.GetPartonSize(); ++i) { + momsum += moms[i].P(); + } + + double thr = 0.; + Vec4 t_axis = Vec4(); + + for (int k = 1; k < ev.GetPartonSize(); ++k) { + for (int j = 0; j < k; ++j) { + Vec4 tmp_axis = moms[j].Cross(moms[k]); + Vec4 p_thrust = Vec4(); + Vec4 p_combin[4]; + + for (int i = 0; i < ev.GetPartonSize(); ++i) { + if (i != j && i != k) { + if (moms[i].Dot(tmp_axis) >= 0) { + p_thrust = p_thrust + moms[i]; + } else { + p_thrust = p_thrust - moms[i]; + } + } + } + + p_combin[0] = (p_thrust + moms[j] + moms[k]); + p_combin[1] = (p_thrust + moms[j] - moms[k]); + p_combin[2] = (p_thrust - moms[j] + moms[k]); + p_combin[3] = (p_thrust - moms[j] - moms[k]); + + for (int i = 0; i < 4; ++i) { + double temp = p_combin[i].P(); + if (temp > thr) { + thr = temp; + t_axis = p_combin[i]; + } + } + } + } + + thr /= momsum; + thr = 1. - thr; + + t_axis = t_axis / (t_axis).P(); + if (t_axis[3] < 0) { + t_axis = t_axis * -1.; + } + + if (thr < 1e-12) { + thr = -5.; + } + + ev.SetThr(thr); + ev.SetTAxis(t_axis); +} + +// Jet Mass and Broadening +__global__ void calculateJetMBr(Event* events, int N) { + int idx = blockIdx.x * blockDim.x + threadIdx.x; + + if (idx >= N) { + return; + } + + Event& ev = events[idx]; + + if (!ev.GetValidity() || ev.GetPartonSize() < 3) { + return; + } + + Vec4 moms[maxPartons]; + for (int i = 2; i < ev.GetSize(); ++i) { + moms[i - 2] = ev.GetParton(i).GetMom(); + } + + double momsum = 0.; + for (int i = 0; i < ev.GetSize(); ++i) { + momsum += moms[i].P(); + } + + Vec4 p_with, p_against; + int n_with = 0, n_against = 0; + double e_vis = 0., broad_with = 0., broad_against = 0., + broad_denominator = 0.; + + for (int i = 0; i < ev.GetPartonSize(); ++i) { + double mo_para = moms[i].Dot(ev.GetTAxis()); + double mo_perp = (moms[i] - (ev.GetTAxis() * mo_para)).P(); + double enrg = moms[i].P(); + + e_vis += enrg; + broad_denominator += 2. * enrg; + + if (mo_para > 0.) { + p_with = p_with + moms[i]; + broad_with += mo_perp; + n_with++; + } else if (mo_para < 0.) { + p_against = p_against + moms[i]; + broad_against += mo_perp; + n_against++; + } else { + p_with = p_with + (moms[i] * 0.5); + p_against = p_against + (moms[i] * 0.5); + broad_with += 0.5 * mo_perp; + broad_against += 0.5 * mo_perp; + n_with++; + n_against++; + } + } + + double e2_vis = e_vis * e_vis; + + double mass2_with = fabs(p_with.M2() / e2_vis); + double mass2_against = fabs(p_against.M2() / e2_vis); + + double mass_with = sqrt(mass2_with); + double mass_against = sqrt(mass2_against); + + broad_with /= broad_denominator; + broad_against /= broad_denominator; + + double mH = fmax(mass_with, mass_against); + double mL = fmin(mass_with, mass_against); + + double bW = fmax(broad_with, broad_against); + double bN = fmin(broad_with, broad_against); + + if (n_with == 1 || n_against == 1) { + ev.SetHJM(mH); + ev.SetWJB(bW); + } else { + ev.SetHJM(mH); + ev.SetLJM(mL); + ev.SetWJB(bW); + ev.SetNJB(bN); + } +} \ No newline at end of file diff --git a/gaps-1.1/gaps/observables/src/jetrates.cu b/gaps-1.1/gaps/observables/src/jetrates.cu new file mode 100644 index 0000000..0014af9 --- /dev/null +++ b/gaps-1.1/gaps/observables/src/jetrates.cu @@ -0,0 +1,110 @@ +#include "jetrates.cuh" + +// Jet Rates + +// Yij function Used for the Durham analysis +__device__ double Yij(const Vec4& p, const Vec4& q, double ecm2) { + double pq = p[1] * q[1] + p[2] * q[2] + p[3] * q[3]; + double min_pq = min(p[0], q[0]); + double max_pq = max(pq / sqrt(p.P2() * q.P2()), -1.); + return 2. * pow(min_pq, 2) * (1. - min(max_pq, 1.)) / ecm2; +} + +// Durham Clustering Algorithm +__global__ void doCluster(Event* events, int N) { + int idx = blockIdx.x * blockDim.x + threadIdx.x; + + if (idx >= N) { + return; + } + + Event& ev = events[idx]; + + if (!ev.GetValidity()) { + return; + } + + /** + * On the size of arrays during the clustering process: + * + * The number of partons in the event is not known at compile time, so we + * cannot use a fixed size array. We could use a dynamic array, but that + * would require a lot of memory management, and we would have to use + * malloc and free. Instead, we will use a fixed size array, and we will + * assume that the number of partons will not exceed maxPartons. This is + * not a great solution, but ok for now. + */ + + // Get the center of mass energy squared + double ecm2 = (ev.GetParton(0).GetMom() + ev.GetParton(1).GetMom()).M2(); + + // Extract the 4-momenta of the partons + Vec4 p[maxPartons]; + for (int i = 2; i < ev.GetSize(); ++i) { + p[i - 2] = ev.GetParton(i).GetMom(); + } + + // kt2 will store the kt2 values for each clustering step + // If not changed, set to -1 so we can ignore when histogramming + double kt2[maxPartons] = {-1.}; + int counter = 0; + + // Number of partons (which will change when clustered), lower case to avoid N + int n = ev.GetPartonSize(); + + // imap will store the indices of the partons + int imap[maxPartons]; + for (int i = 0; i < ev.GetPartonSize(); ++i) { + imap[i] = i; + } + + // kt2ij will store the kt2 values for each pair of partons + double kt2ij[maxPartons][maxPartons] = {0.}; + double dmin = 1.; + int ii = 0, jj = 0; + for (int i = 0; i < n; ++i) { + for (int j = 0; j < i; ++j) { + double dij = kt2ij[i][j] = Yij(p[i], p[j], ecm2); + if (dij < dmin) { + dmin = dij; + ii = i; + jj = j; + } + } + } + + // Cluster the partons + while (n > 2) { + --n; + kt2[counter] = dmin; + counter++; + int jjx = imap[jj]; + p[jjx] = p[jjx] + p[imap[ii]]; + for (int i = ii; i < n; ++i) { + imap[i] = imap[i + 1]; + } + for (int j = 0; j < jj; ++j) { + kt2ij[jjx][imap[j]] = Yij(p[jjx], p[imap[j]], ecm2); + } + for (int i = jj + 1; i < n; ++i) { + kt2ij[imap[i]][jjx] = Yij(p[jjx], p[imap[i]], ecm2); + } + dmin = 1.; + for (int i = 0; i < n; ++i) { + for (int j = 0; j < i; ++j) { + double dij = kt2ij[imap[i]][imap[j]]; + if (dij < dmin) { + dmin = dij; + ii = i; + jj = j; + } + } + } + } + + // Store the kt2 values in the output arrays + ev.SetY23(counter > 0 ? log10(kt2[counter - 1 - 0]) : -50.); + ev.SetY34(counter > 1 ? log10(kt2[counter - 1 - 1]) : -50.); + ev.SetY45(counter > 2 ? log10(kt2[counter - 1 - 2]) : -50.); + ev.SetY56(counter > 3 ? log10(kt2[counter - 1 - 3]) : -50.); +} \ No newline at end of file diff --git a/gaps-1.1/gaps/observables/src/observables.cu b/gaps-1.1/gaps/observables/src/observables.cu new file mode 100644 index 0000000..08f4ede --- /dev/null +++ b/gaps-1.1/gaps/observables/src/observables.cu @@ -0,0 +1,160 @@ +#include <fstream> + +#include "observables.cuh" + +// ----------------------------------------------------------------------------- +// Validate Events before binning + +__global__ void validateEvents(Event* events, int* invalid, int N) { + int idx = blockIdx.x * blockDim.x + threadIdx.x; + + if (idx >= N) { + return; + } + + Event& ev = events[idx]; + ev.SetValidity(ev.Validate()); + + if (!ev.GetValidity()) { + // printf("Invalid Event\n"); + atomicAdd(invalid, 1); + } +} + +// ----------------------------------------------------------------------------- +// Analysis + +// Fill theHistograms (Atomically!) +__global__ void fillHistos(Analysis* an, Event* events, int N) { + int idx = blockIdx.x * blockDim.x + threadIdx.x; + + if (idx >= N) { + return; + } + + Event& ev = events[idx]; + + an->hists[0].Fill(ev.GetY23(), ev.GetDxs()); + an->hists[1].Fill(ev.GetY34(), ev.GetDxs()); + an->hists[2].Fill(ev.GetY45(), ev.GetDxs()); + an->hists[3].Fill(ev.GetY56(), ev.GetDxs()); + an->hists[4].Fill(ev.GetThr(), ev.GetDxs()); + an->hists[5].Fill(ev.GetThr(), ev.GetDxs()); + an->hists[6].Fill(ev.GetHJM(), ev.GetDxs()); + an->hists[7].Fill(ev.GetLJM(), ev.GetDxs()); + an->hists[8].Fill(ev.GetWJB(), ev.GetDxs()); + an->hists[9].Fill(ev.GetNJB(), ev.GetDxs()); + + // Dalitz Plot is OFF + // an->dalitz.Fill(ev.GetDalitz(0), ev.GetDalitz(1), ev.GetDxs()); + + atomicAdd(&an->wtot, ev.GetDxs()); + atomicAdd(&an->ntot, 1.); +} + +// Run the above kernels +void doAnalysis(thrust::device_vector<Event>& d_events, std::string filename) { + /** + * Only Place for a Host Object + * ---------------------------- + * + * While most of the work is done on the device, one cannot directly write + * to a file from the device. Therefore, we will create a host object to + * store the histograms, and then copy the results back to the host for + * writing to file. + */ + + // Device Analysis Object + Analysis *h_an, *d_an; + + // Allocate memory for the device analysis object + h_an = new Analysis(); + cudaMalloc(&d_an, sizeof(Analysis)); + cudaMemcpy(d_an, h_an, sizeof(Analysis), cudaMemcpyHostToDevice); + + // Get Event Data + int N = d_events.size(); + Event* d_events_ptr = thrust::raw_pointer_cast(d_events.data()); + + // Validate the Events + int* d_invalid; + cudaMalloc(&d_invalid, sizeof(int)); + cudaMemset(d_invalid, 0, sizeof(int)); + + validateEvents<<<(N + 255) / 256, 256>>>(d_events_ptr, d_invalid, N); + syncGPUAndCheck("validateEvents"); + + int h_invalid; + cudaMemcpy(&h_invalid, d_invalid, sizeof(int), cudaMemcpyDeviceToHost); + cudaFree(d_invalid); + + if (h_invalid > 0) { + std::cout << "" << std::endl; + std::cout << "ERROR: Invalid Events Found" << std::endl; + std::cout << "Number of Invalid Events: " << h_invalid << "\n"; + } + + // Calculare the Observables + doCluster<<<(N + 255) / 256, 256>>>(d_events_ptr, N); + syncGPUAndCheck("doCluster"); + + calculateThr<<<(N + 255) / 256, 256>>>(d_events_ptr, N); + syncGPUAndCheck("calculateThr"); + + calculateJetMBr<<<(N + 255) / 256, 256>>>(d_events_ptr, N); + syncGPUAndCheck("calculateJetMBr"); + + /** + * Why is the Dalitz Plot off? + * --------------------------- + * + * While the Dalitz analysis also benefits from the GPU parallelisation, the + * writing of the data to file severely limits the performance, as instead of + * the usual 100 bins, we have 100^2 = 1000 bins. This takes around 0.04s, + * which is minute in the C++ case, but is in fact 40% of the total analysis + * time! So for our tests, we keep this off, to keep our comparisons fair, + * and relvant to the actual GPU effect. + * + * If you want to turn it on, uncomment the lines in this file, and it's + * equivalent in the 'observables.cpp' file. + */ + // calculateDalitz<<<(N + 255) / 256, 256>>>(d_events_ptr, N); + // syncGPUAndCheck("calculateDalitz"); + + // Do the Analysis + fillHistos<<<(N + 255) / 256, 256>>>(d_an, d_events_ptr, N); + syncGPUAndCheck("fillHistos"); + + // Copy the results back to the host + cudaMemcpy(h_an, d_an, sizeof(Analysis), cudaMemcpyDeviceToHost); + + // Normalize the histograms + for (auto& hist : h_an->hists) { + hist.ScaleW(1. / h_an->ntot); + } + + // Dalitz Plot is OFF + // h_an->dalitz.ScaleW(1. / h_an->ntot); + + // Remove existing file + std::remove(filename.c_str()); + + // Write the histograms to file + Write(h_an->hists[0], "/gaps/log10y23\n", filename); + Write(h_an->hists[1], "/gaps/log10y34\n", filename); + Write(h_an->hists[2], "/gaps/log10y45\n", filename); + Write(h_an->hists[3], "/gaps/log10y56\n", filename); + Write(h_an->hists[4], "/gaps/tvalue\n", filename); + Write(h_an->hists[5], "/gaps/tzoomd\n", filename); + Write(h_an->hists[6], "/gaps/hjm\n", filename); + Write(h_an->hists[7], "/gaps/ljm\n", filename); + Write(h_an->hists[8], "/gaps/wjb\n", filename); + Write(h_an->hists[9], "/gaps/njb\n", filename); + + // Dalitz Plot is OFF + // Write(h_an->dalitz, "/gaps/dalitz\n", filename); + + // Clean up + delete h_an; + cudaFree(d_an); +} \ No newline at end of file diff --git a/gaps-1.1/gaps/shower/CMakeLists.txt b/gaps-1.1/gaps/shower/CMakeLists.txt new file mode 100644 index 0000000..e8d7ac6 --- /dev/null +++ b/gaps-1.1/gaps/shower/CMakeLists.txt @@ -0,0 +1,21 @@ +cmake_minimum_required(VERSION 3.10) +project(shower) + +# Enable CUDA +enable_language(CUDA) + +set(CMAKE_CXX_STANDARD 17) + +include_directories(include ../base/include) +file(GLOB SOURCES "src/*.cu") + +# Set all source files to compile with CUDA +set_source_files_properties(${SOURCES} PROPERTIES LANGUAGE CUDA) + +add_library(shower ${SOURCES}) + +# Set CUDA architecture to 7.0 for Tesla V100 +set_property(TARGET shower PROPERTY CUDA_ARCHITECTURES 70) + +# Link to Base +target_link_libraries(shower base) \ No newline at end of file diff --git a/gaps-1.1/gaps/shower/include/colours.cuh b/gaps-1.1/gaps/shower/include/colours.cuh new file mode 100644 index 0000000..d149ab9 --- /dev/null +++ b/gaps-1.1/gaps/shower/include/colours.cuh @@ -0,0 +1,66 @@ +#ifndef SHOWER_COLOURS_CUH_ +#define SHOWER_COLOURS_CUH_ + +#include "qcd.cuh" + +// Colours + +/** + * Why is this function in a header file? See Vec4.cuh + */ + +__device__ void MakeColours(Event &ev, int *coli, int *colj, const int flavs[3], + const int colij[2], const int colk[2], + const double rand) { + // Increase variable ev.GetShowerC() by 1 + ev.IncrementShowerC(); + + if (flavs[0] != 21) { + if (flavs[0] > 0) { + coli[0] = ev.GetShowerC(); + coli[1] = 0; + colj[0] = colij[0]; + colj[1] = ev.GetShowerC(); + } else { + coli[0] = 0; + coli[1] = ev.GetShowerC(); + colj[0] = ev.GetShowerC(); + colj[1] = colij[1]; + } + } else { + if (flavs[1] == 21) { + if (colij[0] == colk[1]) { + if (colij[1] == colk[0] && rand > 0.5) { + coli[0] = colij[0]; + coli[1] = ev.GetShowerC(); + colj[0] = ev.GetShowerC(); + colj[1] = colij[1]; + } else { + coli[0] = ev.GetShowerC(); + coli[1] = colij[1]; + colj[0] = colij[0]; + colj[1] = ev.GetShowerC(); + } + } else { + coli[0] = colij[0]; + coli[1] = ev.GetShowerC(); + colj[0] = ev.GetShowerC(); + colj[1] = colij[1]; + } + } else { + if (flavs[1] > 0) { + coli[0] = colij[0]; + coli[1] = 0; + colj[0] = 0; + colj[1] = colij[1]; + } else { + coli[0] = 0; + coli[1] = colij[1]; + colj[0] = colij[0]; + colj[1] = 0; + } + } + } +} + +#endif // SHOWER_COLOURS_CUH_ \ No newline at end of file diff --git a/gaps-1.1/gaps/shower/include/kinematics.cuh b/gaps-1.1/gaps/shower/include/kinematics.cuh new file mode 100644 index 0000000..5283545 --- /dev/null +++ b/gaps-1.1/gaps/shower/include/kinematics.cuh @@ -0,0 +1,42 @@ +#ifndef SHOWER_KINEMATICS_CUH_ +#define SHOWER_KINEMATICS_CUH_ + +#include "qcd.cuh" + +/** + * Why is this function in a header file? See Vec4.cuh + */ + +__device__ void MakeKinematics(Vec4 *kinematics, const double z, const double y, + const double phi, const Vec4 pijt, + const Vec4 pkt) { + Vec4 Q = pijt + pkt; + + // Generating the Momentum (0, kt1, kt2, 0) + double rkt = sqrt(Q.M2() * y * z * (1. - z)); + + Vec4 kt1 = pijt.Cross(pkt); + if (kt1.P() < 1.e-6) { + Vec4 xaxis(0., 1., 0., 0.); + kt1 = pijt.Cross(xaxis); + } + kt1 = kt1 * (rkt * cos(phi) / kt1.P()); + + Vec4 kt2cms = Q.Boost(pijt); + kt2cms = kt2cms.Cross(kt1); + kt2cms = kt2cms * (rkt * sin(phi) / kt2cms.P()); + Vec4 kt2 = Q.BoostBack(kt2cms); + + // Conversion to {i, j, k} basis + Vec4 pi = pijt * z + pkt * ((1. - z) * y) + kt1 + kt2; + Vec4 pj = pijt * (1. - z) + pkt * (z * y) - kt1 - kt2; + Vec4 pk = pkt * (1. - y); + + // No need to do *kinematics[0], for arrays the elements are already + // pointers + kinematics[0] = pi; + kinematics[1] = pj; + kinematics[2] = pk; +} + +#endif // SHOWER_KINEMATICS_CUH_ \ No newline at end of file diff --git a/gaps-1.1/gaps/shower/include/shower.cuh b/gaps-1.1/gaps/shower/include/shower.cuh new file mode 100644 index 0000000..c41c835 --- /dev/null +++ b/gaps-1.1/gaps/shower/include/shower.cuh @@ -0,0 +1,56 @@ +#ifndef SHOWER_CUH_ +#define SHOWER_CUH_ + +// qcd includes all the necessary headers +#include "qcd.cuh" + +/** + * A Dipole Shower on GPU + * ---------------------- + * + * NOTE: Kernel = CUDA function, Splitting Function = QCD function + * + * This is the main result of the published work. It is a full implementation of + * a dipole shower on the GPU. It is designed to be as fast as possible*, and + * uses a number of tricks to achieve this. The main trick is to use a single + * kernel to perform the entire shower, and to use a number of optimisations to + * make the code as fast as possible. + * + * With the Event Object storing all the neccessary information and with the + * fact that kernel's can't be member functions, the Shower Class has been + * removed + * + * *: as possible as a second year PhD student can make it ;) + */ + +// Initialise the curandStates +__global__ void initCurandStates(curandState *states, int N); + +// Prepare Events for the Shower +__global__ void prepShower(Event *events, int N); + +// Selecting the Winner Emission +__global__ void selectWinnerSplitFunc(Event *events, curandState *states, + int N); + +// Check the Cutoff +__global__ void checkCutoff(Event *events, int *d_completed, double cutoff, + int N); + +// Veto Algorithm +__global__ void vetoAlg(Event *events, double *asval, bool *acceptEmission, + curandState *states, int N); + +// Perform the Splitting +__global__ void doSplitting(Event *events, bool *acceptEmission, + curandState *states, int N); + +// Kinematics +__device__ void MakeKinematics(Vec4 *kinematics, const double z, const double y, + const double phi, const Vec4 pijt, + const Vec4 pkt); + +// All tasks wrapped into a function +void runShower(thrust::device_vector<Event> &d_events); + +#endif // SHOWER_CUH_ diff --git a/gaps-1.1/gaps/shower/include/splittings.cuh b/gaps-1.1/gaps/shower/include/splittings.cuh new file mode 100644 index 0000000..a5b5bcb --- /dev/null +++ b/gaps-1.1/gaps/shower/include/splittings.cuh @@ -0,0 +1,266 @@ +#ifndef SPLITTINGS_CUH_ +#define SPLITTINGS_CUH_ + +#include "qcd.cuh" + +/** + * Splitting Functions as a function - safer but less sophisticated + * ---------------------------------------------------------------- + * + * This is a safer and more straightforward way to implement the splitting + * functions for the shower. Although the class-based approach is good for + * C++, in CUDA many issues arise that mean that OOP might not always be the + * best strategy in coding. As a simpler approach, we will use switch-case + * statements to select the correct splitting function. + * + * We have a LOT of splitting functions: + * - Four types (FF, FI, IF, II) + * - Three or Four Possible DGLAP Splittings (q->qg, q->gq, g->gg, g->qq) + * - Five Flavours of Quarks (d, u, s, c, b) and each of their antiquarks + * - At most, In total: 4 * (10 + 10 + 1 + 5) = 104 splitting functions + * + * So we need to organise ourselves with some kind of structure. As a first + * attempt lets use four digit codes to identify the splitting functions: + * + * - 1st digit: Type of Split-Spect (FF, FI, IF, II) - 0, 1, 2, 3 + * - 2nd digit: Type of DGLAP (q->qg, q->gq, g->gg, g->qq) - 0, 1, 2, 3 + * - 3rd digit: Emitter is a Particle or Antiparticle - 0, 1 (gluon is 0) + * - 4th digit: Flavor of the Emitter - 1, 2, 3, 4, 5; 0 for gluon + * + * Examples: + * - FF u -> ug = 0 0 0 2 + * - FF ubar -> ubar g = 0 0 1 2 + * - FF g -> gg = 0 2 0 0 + * - FF g -> ccbar = 0 3 0 4 + * + * - FI u -> ug = 1 0 0 2 + * - FI g -> ccbar = 1 3 0 4 + * + * - IF d -> dg = 2 0 0 1 + * - IF d -> gd = 2 1 0 1 + * - IF sbar -> sbar g = 2 0 1 3 + * - IF g -> uubar = 2 3 0 2 + * + * - II g -> gg = 3 2 0 0 + * - II g -> bbbar = 3 3 0 5 + * + * This way we can easily identify the splitting functions and select the + * correct one using a switch-case statement. This can be used for value, + * estimate, integral and generateZ functions. + */ + +// Splitting Function Codes - Only FF for now (Removed Zeroes) +// ------------------------------------------ +__constant__ int sfCodes[] = {1, 2, 3, 4, 5, 11, 12, 13, + 14, 15, 200, 301, 302, 303, 304, 305}; + +// ----------------------------------------------------------------------------- + +__device__ double sfValue(double z, double y, int sf) { + switch (sf) { + // FF Splittings --------------------------- + + // FF q -> qg + case 1: + case 2: + case 3: + case 4: + case 5: + case 11: + case 12: + case 13: + case 14: + case 15: + return kCF * (2. / (1. - z * (1. - y)) - (1. + z)); + break; + + // FF g -> gg + case 200: + // Asymmetric Splitting Function: Fixed Emitter and Emission in our code + return kCA / 2. * (2. / (1. - z * (1. - y)) - 2. + z * (1. - z)); + break; + + // FF g -> qqbar + case 301: + case 302: + case 303: + case 304: + case 305: + // Divide by 2 to avoid double counting of the same splitting + return kTR / 2. * (1. - 2. * z * (1. - z)); + break; + } + return 0.; +} + +// ----------------------------------------------------------------------------- + +__device__ double sfEstimate(double z, int sf) { + switch (sf) { + // FF Splittings --------------------------- + + // FF q -> qg + case 1: + case 2: + case 3: + case 4: + case 5: + case 11: + case 12: + case 13: + case 14: + case 15: + return kCF * 2. / (1. - z); + break; + + // FF g -> gg + case 200: + return kCA / (1. - z); + break; + + // FF g -> qqbar + case 301: + case 302: + case 303: + case 304: + case 305: + return kTR / 2.; + break; + } + return 0.; +} + +// ----------------------------------------------------------------------------- + +__device__ double sfIntegral(double zm, double zp, int sf) { + switch (sf) { + // FF Splittings --------------------------- + + // FF q -> qg + case 1: + case 2: + case 3: + case 4: + case 5: + case 11: + case 12: + case 13: + case 14: + case 15: + return kCF * 2. * log((1. - zm) / (1. - zp)); + break; + + // FF g -> gg + case 200: + return kCA * log((1. - zm) / (1. - zp)); + break; + + // FF g -> qqbar + case 301: + case 302: + case 303: + case 304: + case 305: + return kTR / 2. * (zp - zm); + break; + } + return 0.; +} + +// ----------------------------------------------------------------------------- + +__device__ double sfGenerateZ(double zm, double zp, double rand, int sf) { + switch (sf) { + // FF Splittings --------------------------- + + // FF q -> qg + case 1: + case 2: + case 3: + case 4: + case 5: + case 11: + case 12: + case 13: + case 14: + case 15: + // int = - 2CF * log(1 - z); inv = 1 - exp(-x/2CF) + return 1. + (zp - 1.) * pow((1. - zm) / (1. - zp), rand); + break; + + // FF g -> gg + case 200: + // int = - CA * log(1 - z); inv = 1 - exp(-x/CA) + return 1. + (zp - 1.) * pow((1. - zm) / (1. - zp), rand); + break; + + // FF g -> qqbar + case 301: + case 302: + case 303: + case 304: + case 305: + // int = TR/2 * z; inv = x / (TR/2) + return zm + (zp - zm) * rand; + break; + } + return 0.; +} + +// ----------------------------------------------------------------------------- +// Utility Functions + +__device__ bool validateSplitting(int ij, int sf) { + // Obtain the splitting function code + // int firstDigit = sf / 1000; + int secondDigit = (sf / 100) % 10; + int thirdDigit = (sf / 10) % 10; + int fourthDigit = sf % 10; + + // Insert FF, FI, IF, II checks here + // --------------------------------- + + // Skip if ij is a quark and the sf is not a quark sf (2nd digit), or + // if ij is a gluon and the sf is not a gluon sf (2nd digit) + if ((ij != 21 && secondDigit >= 2) || (ij == 21 && secondDigit < 2)) { + return false; + } + + // Skip if ij is a particle and sf is an antiparticle sf (3rd digit), or + // if ij is an antiparticle and sf is a particle sf (3rd digit) + if ((ij < 0 && thirdDigit == 0) || (ij > 0 && thirdDigit == 1)) { + return false; + } + + // q->qg case: Skip if the flavor of ij is different from the flavor of the sf + // g->gg and g->qq case: No need to check the flavor + if ((ij != 21 && abs(ij) != fourthDigit)) { + return false; + } + + return true; +} + +__device__ void sfToFlavs(int sf, int* flavs) { + if (sf < 16) { + if (sf < 6) { + flavs[0] = sf; + flavs[1] = sf; + flavs[2] = 21; + } else { + flavs[0] = -1 * (sf - 10); + flavs[1] = -1 * (sf - 10); + flavs[2] = 21; + } + } else if (sf == 200) { + flavs[0] = 21; + flavs[1] = 21; + flavs[2] = 21; + } else if (sf < 306) { + flavs[0] = 21; + flavs[1] = sf - 300; + flavs[2] = -1 * (sf - 300); + } +} + +#endif // SPLITTINGS_CUH_ diff --git a/gaps-1.1/gaps/shower/src/shower.cu b/gaps-1.1/gaps/shower/src/shower.cu new file mode 100644 index 0000000..4d43ebc --- /dev/null +++ b/gaps-1.1/gaps/shower/src/shower.cu @@ -0,0 +1,462 @@ +#include "shower.cuh" + +// Need to be here to avoid multiple definitions +#include "colours.cuh" +#include "kinematics.cuh" +#include "splittings.cuh" + +// ----------------------------------------------------------------------------- +// Random Number Generator + +// No need during matrix as initialised once and used once only +// But for shower used 80 to 100 times +__global__ void initCurandStates(curandState *states, int N) { + int idx = threadIdx.x + blockIdx.x * blockDim.x; + if (idx >= N) { + return; + } + // Every events[idx] has a seed idx + // curand_init(idx, 0, 0, &states[idx]); + + // Every events[idx] has a seed idx and clok64() is used to get a seed + curand_init(clock64(), idx, 0, &states[idx]); +} + +// ----------------------------------------------------------------------------- +// Preparing the Shower + +__global__ void prepShower(Event *events, int N) { + int idx = threadIdx.x + blockIdx.x * blockDim.x; + + if (idx >= N) { + return; + } + + Event &ev = events[idx]; + + // Set the starting shower scale + double t_max = (ev.GetParton(0).GetMom() + ev.GetParton(1).GetMom()).M2(); + ev.SetShowerT(t_max); + + // Set the initial number of emissions + ev.SetEmissions(0); + + // Set the Colour Counter to 1 (q and qbar) + ev.SetShowerC(1); + + // Set the initial end shower flag - No need, default value is false + // ev.SetEndShower(false); +} + +// ----------------------------------------------------------------------------- + +/** + * Selecting the Winner Splitting Function + * --------------------------------------- + * + * When you profile the code, you will notice that this is the process that + * takes up half of the shower time. This method below is a first attempt at + * parallelizing the process. + */ + +__global__ void selectWinnerSplitFunc(Event *events, curandState *states, + int N) { + int idx = blockIdx.x * blockDim.x + threadIdx.x; + + if (idx >= N) { + return; + } + + curandState state = states[idx]; + + Event &ev = events[idx]; + + // Do not run if the shower has ended + if (ev.GetEndShower()) { + return; + } + + // Default Values + double win_tt = tC; // Lowest possible value is Cutoff Scale (in base.cuh) + int win_sf = 0; // 0 = No Splitting + int win_ij = 0; + int win_k = 0; + double win_zp = 0.; + double win_m2 = 0.; + + // We start at 2 because elements 0 and 1 are electrons - To change with ISR + for (int ij = 2; ij < ev.GetSize(); ij++) { + for (int k = 2; k < ev.GetSize(); k++) { + // Sanity Check to ensure ij != k + if (ij == k) { + continue; + } + + // Need to check if ij and k are colour connected + if (!ev.GetParton(ij).IsColorConnected(ev.GetParton(k))) { + continue; + } + + // Params Identical to all splitting functions + double m2 = (ev.GetParton(ij).GetMom() + ev.GetParton(k).GetMom()).M2(); + if (m2 < 4. * tC) { + continue; + } + + // Phase Space Limits + double zp = 0.5 * (1. + sqrt(1. - 4. * tC / m2)); + + // Codes instead of Object Oriented Approach! + for (int sf : sfCodes) { + // Check if the Splitting Function is valid for the current partons + if (!validateSplitting(ev.GetParton(ij).GetPid(), sf)) { + continue; + } + + // Calculate the Evolution Variable + double g = asmax / (2. * M_PI) * sfIntegral(1 - zp, zp, sf); + double tt = ev.GetShowerT() * pow(curand_uniform(&state), 1. / g); + + states[idx] = state; // So that the next number is not the same! + + // Check if tt is greater than the current winner + if (tt > win_tt) { + win_tt = tt; + win_sf = sf; + win_ij = ij; + win_k = k; + win_zp = zp; + win_m2 = m2; + } + } + } + } + + // Store the results + ev.SetShowerT(win_tt); + ev.SetWinSF(win_sf); + ev.SetWinDipole(0, win_ij); + ev.SetWinDipole(1, win_k); + ev.SetWinParam(0, win_zp); + ev.SetWinParam(1, win_m2); +} + +// ----------------------------------------------------------------------------- + +__global__ void checkCutoff(Event *events, int *d_completed, double cutoff, + int N) { + int idx = blockIdx.x * blockDim.x + threadIdx.x; + + if (idx >= N) { + return; + } + + Event &ev = events[idx]; + + // Do not run if the shower has ended + if (ev.GetEndShower()) { + return; + } + + /** + * End shower if t < cutoff + * + * ev.GetShowerT() <= cutoff is equally valid + * I just prefer this way because this way is + * how we usually write it in Literature + */ + if (!(ev.GetShowerT() > cutoff)) { + ev.SetEndShower(true); + atomicAdd(d_completed, 1); // Increment the number of completed events + } +} + +// ----------------------------------------------------------------------------- + +__global__ void vetoAlg(Event *events, double *asval, bool *acceptEmission, + curandState *states, int N) { + int idx = blockIdx.x * blockDim.x + threadIdx.x; + + if (idx >= N) { + return; + } + + Event &ev = events[idx]; + curandState state = states[idx]; + + // Do not run if the shower has ended + if (ev.GetEndShower()) { + return; + } + + // Set to False, only set to True if accpeted + acceptEmission[idx] = false; + + // Get the Splitting Function + int sf = ev.GetWinSF(); + + double rand = curand_uniform(&state); + states[idx] = state; + + // Generate z + double zp = ev.GetWinParam(0); + double z = sfGenerateZ(1 - zp, zp, rand, sf); + + double y = ev.GetShowerT() / ev.GetWinParam(1) / z / (1. - z); + + double f = 0.; + double g = 0.; + double value = 0.; + double estimate = 0.; + + // CS Kernel: y can't be 1 + if (y < 1.) { + value = sfValue(z, y, sf); + estimate = sfEstimate(z, sf); + + f = (1. - y) * asval[idx] * value; + g = asmax * estimate; + + if (curand_uniform(&state) < f / g) { + acceptEmission[idx] = true; + ev.SetShowerZ(z); + ev.SetShowerY(y); + } + states[idx] = state; + } +} + +// ----------------------------------------------------------------------------- + +// Do Splitting +__global__ void doSplitting(Event *events, bool *acceptEmission, + curandState *states, int N) { + int idx = blockIdx.x * blockDim.x + threadIdx.x; + + if (idx >= N) { + return; + } + + Event &ev = events[idx]; + + // Do not run if the shower has ended + if (ev.GetEndShower()) { + return; + } + + if (!acceptEmission[idx]) { + return; + } + + curandState state = states[idx]; + + double phi = 2. * M_PI * curand_uniform(&state); + states[idx] = state; + + int win_ij = ev.GetWinDipole(0); + int win_k = ev.GetWinDipole(1); + + // Make Kinematics + Vec4 moms[3] = {Vec4(), Vec4(), Vec4()}; + + MakeKinematics(moms, ev.GetShowerZ(), ev.GetShowerY(), phi, + ev.GetParton(win_ij).GetMom(), ev.GetParton(win_k).GetMom()); + + // Adjust Colors + + // Get Flavs from Kernel Number + int sf = ev.GetWinSF(); + int flavs[3]; + sfToFlavs(sf, flavs); + + int colij[2] = {ev.GetParton(win_ij).GetCol(), + ev.GetParton(win_ij).GetAntiCol()}; + + int colk[2] = {ev.GetParton(win_k).GetCol(), + ev.GetParton(win_k).GetAntiCol()}; + + int coli[2] = {0, 0}; + int colj[2] = {0, 0}; + + double rand = curand_uniform(&state); + states[idx] = state; + + MakeColours(ev, coli, colj, flavs, colij, colk, rand); + + // Modify Splitter + ev.SetPartonPid(win_ij, flavs[1]); + ev.SetPartonMom(win_ij, moms[0]); + ev.SetPartonCol(win_ij, coli[0]); + ev.SetPartonAntiCol(win_ij, coli[1]); + + // Modify Recoiled Spectator + ev.SetPartonMom(win_k, moms[2]); + + // Add Emitted Parton + Parton em = Parton(flavs[2], moms[1], colj[0], colj[1]); + ev.SetParton(ev.GetSize(), em); + + // Increment Emissions (IMPORTANT) + ev.IncrementEmissions(); +} + +// ----------------------------------------------------------------------------- + +/* +__global__ void countBools(Event *events, int *trueCount, bool *acceptEmission, + int *falseCount, int N) { + int idx = threadIdx.x + blockIdx.x * blockDim.x; + if (idx >= N) { + return; + } + + Event &ev = events[idx]; + + if (ev.GetEndShower()) { + return; + } + + if (!acceptEmission[idx]){ + atomicAdd(trueCount, 1); + } else { + atomicAdd(falseCount, 1); + } +} +*/ + +// ----------------------------------------------------------------------------- + +void runShower(thrust::device_vector<Event> &d_events) { + // Number of Events - Can get from d_events.size() + int N = d_events.size(); + + // Set up the device alphaS + AlphaS *d_as; + cudaMalloc(&d_as, sizeof(AlphaS)); + asSetupKernel<<<1, 1>>>(d_as, mz, asmz); + syncGPUAndCheck("asSetupKernel"); + + // Allocate device memory for completed events counter + int *d_completed; + cudaMalloc(&d_completed, sizeof(int)); + cudaMemset(d_completed, 0, sizeof(int)); + + // as(t) and veto + double *d_asval; + cudaMalloc(&d_asval, N * sizeof(double)); + bool *d_acceptEmission; + cudaMalloc(&d_acceptEmission, N * sizeof(bool)); + + // Allocate space for curand states + curandState *d_states; + cudaMalloc(&d_states, N * sizeof(curandState)); + + // Initialize the states + initCurandStates<<<(N + 255) / 256, 256>>>(d_states, N); + + // Store the number of finished events per cycle + std::vector<int> completedPerCycle; + + // Use a pointer to the device events + Event *d_events_ptr = thrust::raw_pointer_cast(d_events.data()); + + // --------------------------------------------------------------------------- + // Prepare the Shower + + DEBUG_MSG("Running @prepShower"); + prepShower<<<(N + 255) / 256, 256>>>(d_events_ptr, N); + syncGPUAndCheck("prepShower"); + + // --------------------------------------------------------------------------- + // Run the Shower + + int completed = 0; + int cycle = 0; + while (completed < N) { + // Run all the kernels here... + // ------------------------------------------------------------------------- + // Select the winner kernel + + DEBUG_MSG("Running @selectWinnerSplitFunc"); + selectWinnerSplitFunc<<<(N + 255) / 256, 256>>>(d_events_ptr, d_states, N); + syncGPUAndCheck("selectWinnerSplitFunc"); + + // ------------------------------------------------------------------------- + // Check Cutoff + + DEBUG_MSG("Running @checkCutoff"); + checkCutoff<<<(N + 255) / 256, 256>>>(d_events_ptr, d_completed, tC, N); + syncGPUAndCheck("checkCutoff"); + + // ------------------------------------------------------------------------- + // Calculate AlphaS for Veto Algorithm + + DEBUG_MSG("Running @asShowerKernel"); + asShowerKernel<<<(N + 255) / 256, 256>>>(d_as, d_events_ptr, d_asval, N); + syncGPUAndCheck("asShowerKernel"); + + // ------------------------------------------------------------------------- + // Veto Algorithm + + DEBUG_MSG("Running @vetoAlg"); + vetoAlg<<<(N + 255) / 256, 256>>>(d_events_ptr, d_asval, d_acceptEmission, + d_states, N); + syncGPUAndCheck("vetoAlg"); + + // ------------------------------------------------------------------------- + // Splitting Algorithm + + DEBUG_MSG("Running @doSplitting"); + doSplitting<<<(N + 255) / 256, 256>>>(d_events_ptr, d_acceptEmission, + d_states, N); + syncGPUAndCheck("doSplitting"); + + // ------------------------------------------------------------------------- + // Import the Number of Completed Events + + cudaMemcpy(&completed, d_completed, sizeof(int), cudaMemcpyDeviceToHost); + cycle++; + + // Until Paper is Published, we will use this + completedPerCycle.push_back(completed); + + // ------------------------------------------------------------------------- + // Print number of Accepted / Vetoed Events - for A. V. + + /* + // TRUE means that the event is vetoed + // FALSE means that the event is accepted + + int *d_trueCount, *d_falseCount; + cudaMalloc(&d_trueCount, sizeof(int)); + cudaMalloc(&d_falseCount, sizeof(int)); + cudaMemset(d_trueCount, 0, sizeof(int)); + cudaMemset(d_falseCount, 0, sizeof(int)); + + DEBUG_MSG("Running @countBools"); + countBools<<<(N + 255) / 256, 256>>>(d_events_ptr, d_acceptEmission, + d_trueCount, d_falseCount, N); syncGPUAndCheck("countBools"); + + int h_trueCount(0), h_falseCount(0); // Number of vetoed events + cudaMemcpy(&h_trueCount, d_trueCount, sizeof(int), cudaMemcpyDeviceToHost); + cudaMemcpy(&h_falseCount, d_falseCount, sizeof(int), + cudaMemcpyDeviceToHost); + + std::cout << cycle << ", " << N - completed << ", " << h_trueCount << ", " + << h_falseCount << std::endl; + */ + } + + // --------------------------------------------------------------------------- + // Write completedPerCycle to file + std::ofstream file("gaps-cycles.dat"); + for (auto &i : completedPerCycle) { + file << i << std::endl; + } + + // --------------------------------------------------------------------------- + // Clean Up Device Memory + cudaFree(d_asval); + cudaFree(d_acceptEmission); + cudaFree(d_completed); +} diff --git a/gaps-1.1/rungaps b/gaps-1.1/rungaps new file mode 100755 index 0000000..91d36f1 --- /dev/null +++ b/gaps-1.1/rungaps @@ -0,0 +1,104 @@ +#!/usr/bin/env python3 + +# ------------------------------------------------------------------------------ + +# GAPS - Run Script +# ----------------- +# This script is used to compile and run the GAPS and C++ Shower codes. It +# provides a number of options to control the number of events, the number of +# cores to use, and the type of run to perform. The run types are: +# - gaps: Run the GAPS simulation +# - cpp: Run the C++ Shower simulation +# - compare: Run both the GAPS and C++ Shower and compare the results +# - full: Run both the GAPS and C++ Shower for a range of event numbers + +# ------------------------------------------------------------------------------ + +import argparse +import os +import shutil +import subprocess + +# ------------------------------------------------------------------------------ + +# Set up argument parser +parser = argparse.ArgumentParser(description='Run GAPS or C++ Shower') +parser.add_argument('-n', '--nevents', type=int, default=10000, + help='set the number of events (default: 10000)') +parser.add_argument('-e', '--energy', type=float, default=91.2, + help='set the CoM energy of the system (default: 91.2)') +parser.add_argument('-c', '--cores', type=int, default=1, + help='set the number of cores (default: 1)') +parser.add_argument('-r', '--runtype', type=str, default='gaps', + help='set the run type (default: gaps, options: gaps, cpp, compare, full)') + +args = parser.parse_args() + +# ------------------------------------------------------------------------------ +# Compile code + + +def compile(dir): + print(f'Compiling {dir}') + os.chdir(dir) + os.makedirs('build', exist_ok=True) + os.chdir('build') + subprocess.run(['cmake', '..']) + subprocess.run(['make', '-j', str(args.cores)]) + os.chdir('../..') + +# ------------------------------------------------------------------------------ +# Run GAPS or C++ Shower + + +def run(runtype, events, energy): + print(f'Running {runtype}') + subprocess.run([f'./{runtype}/bin/{runtype}', str(events), str(energy)]) + + +# ------------------------------------------------------------------------------ +# Compile and run based on runtype + +if args.runtype in ['gaps', 'compare', 'full']: + compile('gaps') + +if args.runtype in ['cpp', 'compare', 'full']: + compile('cpp-shower') + +if args.runtype in ['gaps', 'compare']: + run('gaps', args.nevents, args.energy) + +if args.runtype in ['cpp', 'compare']: + run('cpp-shower', args.nevents, args.energy) + +if args.runtype == 'full': + # Remove previous results and make folder + if os.path.exists('results'): + shutil.rmtree('results') + os.makedirs('results', exist_ok=True) + + # Clear previous log files + if os.path.exists('cpp-time.dat'): + os.remove('cpp-time.dat') + if os.path.exists('gaps-time.dat'): + os.remove('gaps-time.dat') + + # Run the comparison 100 times, for different number of events + neventsarray = [1, 2, 5, 10, 20, 50, 100, 200, 500, 1000, 2000, + 5000, 10000, 20000, 50000, 100000, 200000, 500000, 1000000] + for n in neventsarray: + # Run and store the output in a log file + for i in range(1, 101): + print(f"Running GAPS with {n} events") + subprocess.run(['./gaps/bin/gaps', str(n), str(args.energy)]) + print(f"Running C++ Shower with {n} events") + subprocess.run( + ['./cpp-shower/bin/cpp-shower', str(n), str(args.energy)]) + + # Move the log files to the results directory + shutil.move('cpp-time.dat', 'results/') + shutil.move('gaps-time.dat', 'results/') + shutil.move('cpp.yoda', 'results/') + shutil.move('gaps.yoda', 'results/') + +# ------------------------------------------------------------------------------ diff --git a/gaps-1.1/test/SH-Tutorial.yoda b/gaps-1.1/test/SH-Tutorial.yoda new file mode 100644 index 0000000..c902c96 --- /dev/null +++ b/gaps-1.1/test/SH-Tutorial.yoda @@ -0,0 +1,464 @@ +# BEGIN YODA_HISTO1D /gaps/log10y23 +Path=/gaps/log10y23 +ScaledBy=1.5213690739441659e-07 +Title= +Type=Histo1D +XLabel= +YLabel= +# Mean: -2.272216e+00 +# Area: 4.069205e+04 +# ID ID sumw sumw2 sumwx sumwx2 numEntries +Total Total 4.069205e+04 1.736849e+04 -9.246111e+04 2.330336e+05 95336 +Underflow Underflow 1.707311e+00 7.287275e-01 -7.543883e+00 3.333822e+01 4 +Overflow Overflow 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +# xlow xhigh sumw sumw2 sumwx sumwx2 numEntries +-4.300000e+00 -4.260000e+00 4.268278e-01 1.821819e-01 -1.828374e+00 7.832089e+00 1 +-4.260000e+00 -4.220000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-4.220000e+00 -4.180000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-4.180000e+00 -4.140000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-4.140000e+00 -4.100000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-4.100000e+00 -4.060000e+00 4.268277e-01 1.821819e-01 -1.738981e+00 7.084955e+00 1 +-4.060000e+00 -4.020000e+00 8.536553e-01 3.643638e-01 -3.459724e+00 1.402169e+01 2 +-4.020000e+00 -3.980000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-3.980000e+00 -3.940000e+00 2.134138e+00 9.109094e-01 -8.460362e+00 3.353980e+01 5 +-3.940000e+00 -3.900000e+00 1.280483e+00 5.465456e-01 -5.011295e+00 1.961258e+01 3 +-3.900000e+00 -3.860000e+00 4.268278e+00 1.821819e+00 -1.652896e+01 6.400908e+01 10 +-3.860000e+00 -3.820000e+00 5.292663e+01 2.259055e+01 -2.030135e+02 7.787153e+02 124 +-3.820000e+00 -3.780000e+00 1.289020e+02 5.501893e+01 -4.898154e+02 1.861270e+03 302 +-3.780000e+00 -3.740000e+00 1.506702e+02 6.431020e+01 -5.664653e+02 2.129725e+03 353 +-3.740000e+00 -3.700000e+00 1.784140e+02 7.615203e+01 -6.637134e+02 2.469086e+03 418 +-3.700000e+00 -3.660000e+00 2.095724e+02 8.945131e+01 -7.710762e+02 2.837036e+03 491 +-3.660000e+00 -3.620000e+00 2.364626e+02 1.009288e+02 -8.606023e+02 3.132182e+03 554 +-3.620000e+00 -3.580000e+00 2.731697e+02 1.165964e+02 -9.832301e+02 3.539014e+03 640 +-3.580000e+00 -3.540000e+00 2.543893e+02 1.085804e+02 -9.056297e+02 3.224087e+03 596 +-3.540000e+00 -3.500000e+00 3.149988e+02 1.344502e+02 -1.108818e+03 3.903160e+03 738 +-3.500000e+00 -3.460000e+00 3.316451e+02 1.415553e+02 -1.154187e+03 4.016828e+03 777 +-3.460000e+00 -3.420000e+00 3.747547e+02 1.599557e+02 -1.289185e+03 4.434944e+03 878 +-3.420000e+00 -3.380000e+00 4.029254e+02 1.719797e+02 -1.370001e+03 4.658246e+03 944 +-3.380000e+00 -3.340000e+00 4.212789e+02 1.798135e+02 -1.415479e+03 4.756005e+03 987 +-3.340000e+00 -3.300000e+00 4.498764e+02 1.920197e+02 -1.493384e+03 4.957412e+03 1054 +-3.300000e+00 -3.260000e+00 4.801812e+02 2.049546e+02 -1.574809e+03 5.164831e+03 1125 +-3.260000e+00 -3.220000e+00 4.806080e+02 2.051368e+02 -1.556770e+03 5.042704e+03 1126 +-3.220000e+00 -3.180000e+00 4.759129e+02 2.031328e+02 -1.523220e+03 4.875321e+03 1115 +-3.180000e+00 -3.140000e+00 5.092055e+02 2.173430e+02 -1.608873e+03 5.083429e+03 1193 +-3.140000e+00 -3.100000e+00 5.160347e+02 2.202579e+02 -1.609875e+03 5.022400e+03 1209 +-3.100000e+00 -3.060000e+00 5.561565e+02 2.373830e+02 -1.712860e+03 5.275367e+03 1303 +-3.060000e+00 -3.020000e+00 5.979856e+02 2.552368e+02 -1.817744e+03 5.525622e+03 1401 +-3.020000e+00 -2.980000e+00 6.009734e+02 2.565121e+02 -1.802986e+03 5.409239e+03 1408 +-2.980000e+00 -2.940000e+00 6.334123e+02 2.703579e+02 -1.874667e+03 5.548409e+03 1484 +-2.940000e+00 -2.900000e+00 6.022539e+02 2.570586e+02 -1.758938e+03 5.137221e+03 1411 +-2.900000e+00 -2.860000e+00 6.372538e+02 2.719976e+02 -1.834839e+03 5.283118e+03 1493 +-2.860000e+00 -2.820000e+00 6.833512e+02 2.916731e+02 -1.940674e+03 5.511484e+03 1601 +-2.820000e+00 -2.780000e+00 6.812170e+02 2.907623e+02 -1.907389e+03 5.340731e+03 1596 +-2.780000e+00 -2.740000e+00 7.221925e+02 3.082518e+02 -1.993194e+03 5.501156e+03 1692 +-2.740000e+00 -2.700000e+00 7.285949e+02 3.109845e+02 -1.981971e+03 5.391586e+03 1707 +-2.700000e+00 -2.660000e+00 7.435339e+02 3.173609e+02 -1.992374e+03 5.338867e+03 1742 +-2.660000e+00 -2.620000e+00 7.405461e+02 3.160856e+02 -1.954813e+03 5.160201e+03 1735 +-2.620000e+00 -2.580000e+00 7.785337e+02 3.322998e+02 -2.024242e+03 5.263277e+03 1824 +-2.580000e+00 -2.540000e+00 7.174974e+02 3.062477e+02 -1.836498e+03 4.700772e+03 1681 +-2.540000e+00 -2.500000e+00 7.332900e+02 3.129885e+02 -1.847727e+03 4.655958e+03 1718 +-2.500000e+00 -2.460000e+00 7.674362e+02 3.275630e+02 -1.903412e+03 4.720981e+03 1798 +-2.460000e+00 -2.420000e+00 7.776801e+02 3.319355e+02 -1.897378e+03 4.629309e+03 1822 +-2.420000e+00 -2.380000e+00 7.653021e+02 3.266521e+02 -1.836655e+03 4.407904e+03 1793 +-2.380000e+00 -2.340000e+00 7.729850e+02 3.299314e+02 -1.823983e+03 4.304083e+03 1811 +-2.340000e+00 -2.300000e+00 7.793874e+02 3.326641e+02 -1.808450e+03 4.196337e+03 1826 +-2.300000e+00 -2.260000e+00 7.968873e+02 3.401335e+02 -1.817041e+03 4.143273e+03 1867 +-2.260000e+00 -2.220000e+00 7.499363e+02 3.200936e+02 -1.679825e+03 3.762834e+03 1757 +-2.220000e+00 -2.180000e+00 7.542046e+02 3.219154e+02 -1.659304e+03 3.650687e+03 1767 +-2.180000e+00 -2.140000e+00 7.460948e+02 3.184540e+02 -1.611323e+03 3.480033e+03 1748 +-2.140000e+00 -2.100000e+00 7.157900e+02 3.055190e+02 -1.517353e+03 3.216625e+03 1677 +-2.100000e+00 -2.060000e+00 6.991438e+02 2.984140e+02 -1.454305e+03 3.025228e+03 1638 +-2.060000e+00 -2.020000e+00 7.209120e+02 3.077052e+02 -1.470529e+03 2.999704e+03 1689 +-2.020000e+00 -1.980000e+00 7.349973e+02 3.137172e+02 -1.469807e+03 2.939333e+03 1722 +-1.980000e+00 -1.940000e+00 6.667049e+02 2.845681e+02 -1.307091e+03 2.562668e+03 1562 +-1.940000e+00 -1.900000e+00 6.726805e+02 2.871187e+02 -1.291873e+03 2.481111e+03 1576 +-1.900000e+00 -1.860000e+00 6.688390e+02 2.854790e+02 -1.257647e+03 2.364900e+03 1567 +-1.860000e+00 -1.820000e+00 6.594488e+02 2.814709e+02 -1.213600e+03 2.233502e+03 1545 +-1.820000e+00 -1.780000e+00 6.432293e+02 2.745481e+02 -1.157664e+03 2.083610e+03 1507 +-1.780000e+00 -1.740000e+00 6.445099e+02 2.750947e+02 -1.134317e+03 1.996445e+03 1510 +-1.740000e+00 -1.700000e+00 5.996929e+02 2.559656e+02 -1.031302e+03 1.773631e+03 1405 +-1.700000e+00 -1.660000e+00 5.928637e+02 2.530507e+02 -9.960368e+02 1.673462e+03 1389 +-1.660000e+00 -1.620000e+00 5.868881e+02 2.505001e+02 -9.625968e+02 1.578902e+03 1375 +-1.620000e+00 -1.580000e+00 5.634126e+02 2.404801e+02 -9.013291e+02 1.441996e+03 1320 +-1.580000e+00 -1.540000e+00 5.407907e+02 2.308244e+02 -8.436723e+02 1.316262e+03 1267 +-1.540000e+00 -1.500000e+00 4.878640e+02 2.082339e+02 -7.417458e+02 1.127812e+03 1143 +-1.500000e+00 -1.460000e+00 5.322541e+02 2.271808e+02 -7.879504e+02 1.166552e+03 1247 +-1.460000e+00 -1.420000e+00 4.818885e+02 2.056833e+02 -6.941000e+02 9.998282e+02 1129 +-1.420000e+00 -1.380000e+00 4.912787e+02 2.096914e+02 -6.876112e+02 9.624702e+02 1151 +-1.380000e+00 -1.340000e+00 4.473154e+02 1.909266e+02 -6.084743e+02 8.277518e+02 1048 +-1.340000e+00 -1.300000e+00 4.328033e+02 1.847324e+02 -5.714894e+02 7.546728e+02 1014 +-1.300000e+00 -1.260000e+00 4.379252e+02 1.869186e+02 -5.604155e+02 7.172243e+02 1026 +-1.260000e+00 -1.220000e+00 4.033522e+02 1.721619e+02 -5.002264e+02 6.204217e+02 945 +-1.220000e+00 -1.180000e+00 3.888400e+02 1.659677e+02 -4.666680e+02 5.601240e+02 911 +-1.180000e+00 -1.140000e+00 3.713401e+02 1.584982e+02 -4.309385e+02 5.001507e+02 870 +-1.140000e+00 -1.100000e+00 3.491451e+02 1.490248e+02 -3.911219e+02 4.381895e+02 818 +-1.100000e+00 -1.060000e+00 3.132916e+02 1.337215e+02 -3.382910e+02 3.653281e+02 734 +-1.060000e+00 -1.020000e+00 3.098769e+02 1.322640e+02 -3.223734e+02 3.354175e+02 726 +-1.020000e+00 -9.800000e-01 2.919502e+02 1.246124e+02 -2.920970e+02 2.922856e+02 684 +-9.800000e-01 -9.400000e-01 2.770111e+02 1.182360e+02 -2.661491e+02 2.557498e+02 649 +-9.400000e-01 -9.000000e-01 2.590844e+02 1.105844e+02 -2.382954e+02 2.192093e+02 607 +-9.000000e-01 -8.600000e-01 2.364626e+02 1.009288e+02 -2.081998e+02 1.833470e+02 554 +-8.600000e-01 -8.200000e-01 2.134139e+02 9.109094e+01 -1.793725e+02 1.507885e+02 500 +-8.200000e-01 -7.800000e-01 1.831091e+02 7.815603e+01 -1.465709e+02 1.173476e+02 429 +-7.800000e-01 -7.400000e-01 1.664628e+02 7.105093e+01 -1.267104e+02 9.647328e+01 390 +-7.400000e-01 -7.000000e-01 1.557921e+02 6.649639e+01 -1.124971e+02 8.125291e+01 365 +-7.000000e-01 -6.600000e-01 1.374385e+02 5.866257e+01 -9.357336e+01 6.372601e+01 322 +-6.600000e-01 -6.200000e-01 1.109752e+02 4.736729e+01 -7.110283e+01 4.556981e+01 260 +-6.200000e-01 -5.800000e-01 8.493871e+01 3.625420e+01 -5.099670e+01 3.063068e+01 199 +-5.800000e-01 -5.400000e-01 6.530464e+01 2.787383e+01 -3.664402e+01 2.057112e+01 153 +-5.400000e-01 -5.000000e-01 3.073159e+01 1.311710e+01 -1.609667e+01 8.434279e+00 72 +-5.000000e-01 -4.600000e-01 2.560966e+00 1.093091e+00 -1.267354e+00 6.271989e-01 6 +-4.600000e-01 -4.200000e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-4.200000e-01 -3.800000e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-3.800000e-01 -3.400000e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-3.400000e-01 -3.000000e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +# END YODA_HISTO1D + +# BEGIN YODA_HISTO1D /gaps/log10y34 +Path=/gaps/log10y34 +ScaledBy=1.5213690739441659e-07 +Title= +Type=Histo1D +XLabel= +YLabel= +# Mean: -2.955824e+00 +# Area: 3.505536e+04 +# ID ID sumw sumw2 sumwx sumwx2 numEntries +Total Total 3.505536e+04 1.496260e+04 -1.036175e+05 3.185104e+05 82130 +Underflow Underflow 4.016449e+02 1.714332e+02 -1.905189e+03 9.121964e+03 941 +Overflow Overflow 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +# xlow xhigh sumw sumw2 sumwx sumwx2 numEntries +-4.300000e+00 -4.260000e+00 4.652422e+01 1.985783e+01 -1.991134e+02 8.521675e+02 109 +-4.260000e+00 -4.220000e+00 4.823153e+01 2.058655e+01 -2.044932e+02 8.670214e+02 113 +-4.220000e+00 -4.180000e+00 5.762174e+01 2.459455e+01 -2.421109e+02 1.017291e+03 135 +-4.180000e+00 -4.140000e+00 5.463395e+01 2.331928e+01 -2.271905e+02 9.447592e+02 128 +-4.140000e+00 -4.100000e+00 6.402415e+01 2.732729e+01 -2.637788e+02 1.086776e+03 150 +-4.100000e+00 -4.060000e+00 6.914609e+01 2.951346e+01 -2.822597e+02 1.152216e+03 162 +-4.060000e+00 -4.020000e+00 9.560940e+01 4.080874e+01 -3.862197e+02 1.560169e+03 224 +-4.020000e+00 -3.980000e+00 9.603623e+01 4.099093e+01 -3.841338e+02 1.536505e+03 225 +-3.980000e+00 -3.940000e+00 1.062801e+02 4.536329e+01 -4.208226e+02 1.666287e+03 249 +-3.940000e+00 -3.900000e+00 1.404263e+02 5.993784e+01 -5.504107e+02 2.157391e+03 329 +-3.900000e+00 -3.860000e+00 1.924993e+02 8.216403e+01 -7.466274e+02 2.895895e+03 451 +-3.860000e+00 -3.820000e+00 2.441454e+02 1.042080e+02 -9.372402e+02 3.597966e+03 572 +-3.820000e+00 -3.780000e+00 3.239622e+02 1.382760e+02 -1.230712e+03 4.675443e+03 759 +-3.780000e+00 -3.740000e+00 4.234131e+02 1.807244e+02 -1.591719e+03 5.983735e+03 992 +-3.740000e+00 -3.700000e+00 4.648154e+02 1.983961e+02 -1.728976e+03 6.431341e+03 1089 +-3.700000e+00 -3.660000e+00 5.634126e+02 2.404801e+02 -2.073259e+03 7.629303e+03 1320 +-3.660000e+00 -3.620000e+00 5.676808e+02 2.423019e+02 -2.066057e+03 7.519429e+03 1330 +-3.620000e+00 -3.580000e+00 6.214611e+02 2.652568e+02 -2.237056e+03 8.052756e+03 1456 +-3.580000e+00 -3.540000e+00 6.974364e+02 2.976852e+02 -2.482464e+03 8.836198e+03 1634 +-3.540000e+00 -3.500000e+00 7.123754e+02 3.040616e+02 -2.507229e+03 8.824372e+03 1669 +-3.500000e+00 -3.460000e+00 7.559119e+02 3.226441e+02 -2.630332e+03 9.152816e+03 1771 +-3.460000e+00 -3.420000e+00 7.887776e+02 3.366721e+02 -2.713231e+03 9.333055e+03 1848 +-3.420000e+00 -3.380000e+00 8.890821e+02 3.794849e+02 -3.023193e+03 1.028005e+04 2083 +-3.380000e+00 -3.340000e+00 8.711553e+02 3.718332e+02 -2.927181e+03 9.835779e+03 2041 +-3.340000e+00 -3.300000e+00 9.321916e+02 3.978852e+02 -3.094975e+03 1.027577e+04 2184 +-3.300000e+00 -3.260000e+00 9.360331e+02 3.995248e+02 -3.069929e+03 1.006864e+04 2193 +-3.260000e+00 -3.220000e+00 9.518259e+02 4.062656e+02 -3.084172e+03 9.993675e+03 2230 +-3.220000e+00 -3.180000e+00 9.360331e+02 3.995248e+02 -2.995515e+03 9.586438e+03 2193 +-3.180000e+00 -3.140000e+00 9.731672e+02 4.153746e+02 -3.075145e+03 9.717387e+03 2280 +-3.140000e+00 -3.100000e+00 9.206675e+02 3.929663e+02 -2.871914e+03 8.958721e+03 2157 +-3.100000e+00 -3.060000e+00 9.496916e+02 4.053547e+02 -2.925011e+03 9.009042e+03 2225 +-3.060000e+00 -3.020000e+00 9.057284e+02 3.865900e+02 -2.753249e+03 8.369496e+03 2122 +-3.020000e+00 -2.980000e+00 9.492649e+02 4.051725e+02 -2.847736e+03 8.543159e+03 2224 +-2.980000e+00 -2.940000e+00 8.967650e+02 3.827642e+02 -2.654302e+03 7.856494e+03 2101 +-2.940000e+00 -2.900000e+00 9.091430e+02 3.880474e+02 -2.654565e+03 7.751067e+03 2130 +-2.900000e+00 -2.860000e+00 9.014601e+02 3.847682e+02 -2.596162e+03 7.476942e+03 2112 +-2.860000e+00 -2.820000e+00 8.643261e+02 3.689183e+02 -2.454806e+03 6.972103e+03 2025 +-2.820000e+00 -2.780000e+00 8.485335e+02 3.621776e+02 -2.376002e+03 6.653223e+03 1988 +-2.780000e+00 -2.740000e+00 8.203628e+02 3.501536e+02 -2.264000e+03 6.248194e+03 1922 +-2.740000e+00 -2.700000e+00 8.020092e+02 3.423198e+02 -2.181819e+03 5.935618e+03 1879 +-2.700000e+00 -2.660000e+00 7.900581e+02 3.372186e+02 -2.117265e+03 5.674137e+03 1851 +-2.660000e+00 -2.620000e+00 7.354241e+02 3.138993e+02 -1.941803e+03 5.127208e+03 1723 +-2.620000e+00 -2.580000e+00 7.303022e+02 3.117133e+02 -1.898754e+03 4.936772e+03 1711 +-2.580000e+00 -2.540000e+00 6.982901e+02 2.980495e+02 -1.787753e+03 4.577070e+03 1636 +-2.540000e+00 -2.500000e+00 6.628634e+02 2.829284e+02 -1.670347e+03 4.209189e+03 1553 +-2.500000e+00 -2.460000e+00 6.419489e+02 2.740016e+02 -1.592108e+03 3.948702e+03 1504 +-2.460000e+00 -2.420000e+00 5.745101e+02 2.452168e+02 -1.401716e+03 3.420050e+03 1346 +-2.420000e+00 -2.380000e+00 5.412175e+02 2.310066e+02 -1.298770e+03 3.116757e+03 1268 +-2.380000e+00 -2.340000e+00 5.151810e+02 2.198935e+02 -1.215839e+03 2.869475e+03 1207 +-2.340000e+00 -2.300000e+00 5.015226e+02 2.140637e+02 -1.163692e+03 2.700201e+03 1175 +-2.300000e+00 -2.260000e+00 4.639617e+02 1.980317e+02 -1.057842e+03 2.411964e+03 1087 +-2.260000e+00 -2.220000e+00 4.293887e+02 1.832750e+02 -9.616848e+02 2.153903e+03 1006 +-2.220000e+00 -2.180000e+00 4.003644e+02 1.708866e+02 -8.807010e+02 1.937372e+03 938 +-2.180000e+00 -2.140000e+00 3.867059e+02 1.650568e+02 -8.349481e+02 1.802812e+03 906 +-2.140000e+00 -2.100000e+00 3.243891e+02 1.384582e+02 -6.878354e+02 1.458531e+03 760 +-2.100000e+00 -2.060000e+00 3.239622e+02 1.382760e+02 -6.738023e+02 1.401471e+03 759 +-2.060000e+00 -2.020000e+00 2.834136e+02 1.209688e+02 -5.784531e+02 1.180672e+03 664 +-2.020000e+00 -1.980000e+00 2.676210e+02 1.142280e+02 -5.352522e+02 1.070559e+03 627 +-1.980000e+00 -1.940000e+00 2.569503e+02 1.096735e+02 -5.035793e+02 9.869650e+02 602 +-1.940000e+00 -1.900000e+00 2.189626e+02 9.345931e+01 -4.202817e+02 8.067282e+02 513 +-1.900000e+00 -1.860000e+00 2.146943e+02 9.163749e+01 -4.038162e+02 7.595623e+02 503 +-1.860000e+00 -1.820000e+00 1.762798e+02 7.524111e+01 -3.243858e+02 5.969508e+02 413 +-1.820000e+00 -1.780000e+00 1.562189e+02 6.667857e+01 -2.813286e+02 5.066551e+02 366 +-1.780000e+00 -1.740000e+00 1.417068e+02 6.048439e+01 -2.493923e+02 4.389292e+02 332 +-1.740000e+00 -1.700000e+00 1.297556e+02 5.538329e+01 -2.231547e+02 3.837999e+02 304 +-1.700000e+00 -1.660000e+00 1.084142e+02 4.627420e+01 -1.821012e+02 3.058846e+02 254 +-1.660000e+00 -1.620000e+00 8.920698e+01 3.807601e+01 -1.463894e+02 2.402381e+02 209 +-1.620000e+00 -1.580000e+00 8.579237e+01 3.661856e+01 -1.373283e+02 2.198341e+02 201 +-1.580000e+00 -1.540000e+00 8.109726e+01 3.461455e+01 -1.264421e+02 1.971519e+02 190 +-1.540000e+00 -1.500000e+00 6.317050e+01 2.696292e+01 -9.610781e+01 1.462264e+02 148 +-1.500000e+00 -1.460000e+00 5.506077e+01 2.350146e+01 -8.156273e+01 1.208272e+02 129 +-1.460000e+00 -1.420000e+00 4.780470e+01 2.040437e+01 -6.893583e+01 9.941371e+01 112 +-1.420000e+00 -1.380000e+00 3.201208e+01 1.366364e+01 -4.476444e+01 6.260089e+01 75 +-1.380000e+00 -1.340000e+00 3.457304e+01 1.475673e+01 -4.704116e+01 6.401019e+01 81 +-1.340000e+00 -1.300000e+00 2.432918e+01 1.038437e+01 -3.222315e+01 4.268140e+01 57 +-1.300000e+00 -1.260000e+00 2.304870e+01 9.837822e+00 -2.952935e+01 3.783521e+01 54 +-1.260000e+00 -1.220000e+00 1.323166e+01 5.647639e+00 -1.642233e+01 2.038424e+01 31 +-1.220000e+00 -1.180000e+00 1.493897e+01 6.376366e+00 -1.791882e+01 2.149532e+01 35 +-1.180000e+00 -1.140000e+00 8.536554e+00 3.643638e+00 -9.908212e+00 1.150167e+01 20 +-1.140000e+00 -1.100000e+00 3.841449e+00 1.639637e+00 -4.301635e+00 4.817251e+00 9 +-1.100000e+00 -1.060000e+00 5.548760e+00 2.368364e+00 -6.017099e+00 6.525701e+00 13 +-1.060000e+00 -1.020000e+00 3.414621e+00 1.457455e+00 -3.558022e+00 3.708047e+00 8 +-1.020000e+00 -9.800000e-01 1.707311e+00 7.287275e-01 -1.712616e+00 1.718031e+00 4 +-9.800000e-01 -9.400000e-01 4.268276e-01 1.821819e-01 -4.145039e-01 4.025361e-01 1 +-9.400000e-01 -9.000000e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-9.000000e-01 -8.600000e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-8.600000e-01 -8.200000e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-8.200000e-01 -7.800000e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-7.800000e-01 -7.400000e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-7.400000e-01 -7.000000e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-7.000000e-01 -6.600000e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-6.600000e-01 -6.200000e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-6.200000e-01 -5.800000e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-5.800000e-01 -5.400000e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-5.400000e-01 -5.000000e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-5.000000e-01 -4.600000e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-4.600000e-01 -4.200000e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-4.200000e-01 -3.800000e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-3.800000e-01 -3.400000e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-3.400000e-01 -3.000000e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +# END YODA_HISTO1D + +# BEGIN YODA_HISTO1D /gaps/log10y45 +Path=/gaps/log10y45 +ScaledBy=1.5213690739441662e-07 +Title= +Type=Histo1D +XLabel= +YLabel= +# Mean: -3.322106e+00 +# Area: 2.626698e+04 +# ID ID sumw sumw2 sumwx sumwx2 numEntries +Total Total 2.626698e+04 1.121147e+04 -8.726170e+04 2.973293e+05 61540 +Underflow Underflow 1.017557e+03 4.343216e+02 -4.821037e+03 2.303868e+04 2384 +Overflow Overflow 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +# xlow xhigh sumw sumw2 sumwx sumwx2 numEntries +-4.300000e+00 -4.260000e+00 9.091430e+01 3.880474e+01 -3.890031e+02 1.664474e+03 213 +-4.260000e+00 -4.220000e+00 1.118289e+02 4.773166e+01 -4.741670e+02 2.010537e+03 262 +-4.220000e+00 -4.180000e+00 1.297556e+02 5.538329e+01 -5.449119e+02 2.288390e+03 304 +-4.180000e+00 -4.140000e+00 1.280483e+02 5.465457e+01 -5.327211e+02 2.216304e+03 300 +-4.140000e+00 -4.100000e+00 1.600604e+02 6.831820e+01 -6.594999e+02 2.717372e+03 375 +-4.100000e+00 -4.060000e+00 1.707311e+02 7.287275e+01 -6.964693e+02 2.841156e+03 400 +-4.060000e+00 -4.020000e+00 1.852432e+02 7.906694e+01 -7.482914e+02 3.022751e+03 434 +-4.020000e+00 -3.980000e+00 2.257918e+02 9.637422e+01 -9.030245e+02 3.611558e+03 529 +-3.980000e+00 -3.940000e+00 2.403040e+02 1.025684e+02 -9.516179e+02 3.768492e+03 563 +-3.940000e+00 -3.900000e+00 2.928038e+02 1.249768e+02 -1.147685e+03 4.498554e+03 686 +-3.900000e+00 -3.860000e+00 3.461572e+02 1.477495e+02 -1.342846e+03 5.209344e+03 811 +-3.860000e+00 -3.820000e+00 3.931083e+02 1.677895e+02 -1.509379e+03 5.795469e+03 921 +-3.820000e+00 -3.780000e+00 5.032299e+02 2.147924e+02 -1.912095e+03 7.265347e+03 1179 +-3.780000e+00 -3.740000e+00 5.360956e+02 2.288205e+02 -2.015507e+03 7.577580e+03 1256 +-3.740000e+00 -3.700000e+00 6.120709e+02 2.612489e+02 -2.276614e+03 8.468007e+03 1434 +-3.700000e+00 -3.660000e+00 7.123754e+02 3.040615e+02 -2.621205e+03 9.644887e+03 1669 +-3.660000e+00 -3.620000e+00 7.234730e+02 3.087983e+02 -2.633214e+03 9.584170e+03 1695 +-3.620000e+00 -3.580000e+00 7.542045e+02 3.219154e+02 -2.715003e+03 9.773635e+03 1767 +-3.580000e+00 -3.540000e+00 7.977410e+02 3.404980e+02 -2.840076e+03 1.011120e+04 1869 +-3.540000e+00 -3.500000e+00 9.018869e+02 3.849503e+02 -3.174553e+03 1.117423e+04 2113 +-3.500000e+00 -3.460000e+00 8.809724e+02 3.760234e+02 -3.065353e+03 1.066605e+04 2064 +-3.460000e+00 -3.420000e+00 8.946309e+02 3.818532e+02 -3.077435e+03 1.058617e+04 2096 +-3.420000e+00 -3.380000e+00 9.232283e+02 3.940594e+02 -3.139006e+03 1.067285e+04 2163 +-3.380000e+00 -3.340000e+00 9.326185e+02 3.980675e+02 -3.133574e+03 1.052886e+04 2185 +-3.340000e+00 -3.300000e+00 9.193869e+02 3.924198e+02 -3.052583e+03 1.013542e+04 2154 +-3.300000e+00 -3.260000e+00 8.942040e+02 3.816711e+02 -2.933012e+03 9.620475e+03 2095 +-3.260000e+00 -3.220000e+00 8.903626e+02 3.800314e+02 -2.884871e+03 9.347409e+03 2086 +-3.220000e+00 -3.180000e+00 8.553627e+02 3.650925e+02 -2.737458e+03 8.760934e+03 2004 +-3.180000e+00 -3.140000e+00 8.058507e+02 3.439595e+02 -2.546375e+03 8.046292e+03 1888 +-3.140000e+00 -3.100000e+00 7.588996e+02 3.239194e+02 -2.367674e+03 7.386951e+03 1778 +-3.100000e+00 -3.060000e+00 7.017047e+02 2.995070e+02 -2.161320e+03 6.657179e+03 1644 +-3.060000e+00 -3.020000e+00 7.217656e+02 3.080695e+02 -2.194015e+03 6.669443e+03 1691 +-3.020000e+00 -2.980000e+00 6.765219e+02 2.887583e+02 -2.029554e+03 6.088711e+03 1585 +-2.980000e+00 -2.940000e+00 6.090831e+02 2.599736e+02 -1.803068e+03 5.337699e+03 1427 +-2.940000e+00 -2.900000e+00 5.659735e+02 2.415732e+02 -1.653009e+03 4.827930e+03 1326 +-2.900000e+00 -2.860000e+00 5.454858e+02 2.328285e+02 -1.570972e+03 4.524391e+03 1278 +-2.860000e+00 -2.820000e+00 4.934128e+02 2.106023e+02 -1.401553e+03 3.981216e+03 1156 +-2.820000e+00 -2.780000e+00 4.767666e+02 2.034972e+02 -1.334846e+03 3.737352e+03 1117 +-2.780000e+00 -2.740000e+00 4.174375e+02 1.781739e+02 -1.152484e+03 3.181891e+03 978 +-2.740000e+00 -2.700000e+00 3.849986e+02 1.643281e+02 -1.047100e+03 2.847902e+03 902 +-2.700000e+00 -2.660000e+00 3.546938e+02 1.513931e+02 -9.507592e+02 2.548564e+03 831 +-2.660000e+00 -2.620000e+00 3.158525e+02 1.348146e+02 -8.338809e+02 2.201569e+03 740 +-2.620000e+00 -2.580000e+00 2.979258e+02 1.271629e+02 -7.747753e+02 2.014896e+03 698 +-2.580000e+00 -2.540000e+00 2.770112e+02 1.182360e+02 -7.090866e+02 1.815140e+03 649 +-2.540000e+00 -2.500000e+00 2.159748e+02 9.218403e+01 -5.442547e+02 1.371548e+03 506 +-2.500000e+00 -2.460000e+00 2.146943e+02 9.163749e+01 -5.326361e+02 1.321446e+03 503 +-2.460000e+00 -2.420000e+00 1.809750e+02 7.724512e+01 -4.417733e+02 1.078425e+03 424 +-2.420000e+00 -2.380000e+00 1.681701e+02 7.177966e+01 -4.036536e+02 9.688995e+02 394 +-2.380000e+00 -2.340000e+00 1.408531e+02 6.012002e+01 -3.325143e+02 7.849900e+02 330 +-2.340000e+00 -2.300000e+00 1.126825e+02 4.809601e+01 -2.616231e+02 6.074420e+02 264 +-2.300000e+00 -2.260000e+00 1.015850e+02 4.335929e+01 -2.316704e+02 5.283507e+02 238 +-2.260000e+00 -2.220000e+00 9.134114e+01 3.898692e+01 -2.046705e+02 4.586235e+02 214 +-2.220000e+00 -2.180000e+00 7.640216e+01 3.261056e+01 -1.681483e+02 3.700756e+02 179 +-2.180000e+00 -2.140000e+00 5.975588e+01 2.550547e+01 -1.290406e+02 2.786672e+02 140 +-2.140000e+00 -2.100000e+00 5.676808e+01 2.423020e+01 -1.204278e+02 2.554824e+02 133 +-2.100000e+00 -2.060000e+00 4.097546e+01 1.748946e+01 -8.523877e+01 1.773233e+02 96 +-2.060000e+00 -2.020000e+00 4.225594e+01 1.803601e+01 -8.626589e+01 1.761185e+02 99 +-2.020000e+00 -1.980000e+00 3.073159e+01 1.311710e+01 -6.153447e+01 1.232162e+02 72 +-1.980000e+00 -1.940000e+00 2.262187e+01 9.655639e+00 -4.440178e+01 8.715383e+01 53 +-1.940000e+00 -1.900000e+00 1.664628e+01 7.105093e+00 -3.193404e+01 6.126450e+01 39 +-1.900000e+00 -1.860000e+00 1.963408e+01 8.380367e+00 -3.690659e+01 6.937698e+01 46 +-1.860000e+00 -1.820000e+00 1.152435e+01 4.918912e+00 -2.122259e+01 3.908336e+01 27 +-1.820000e+00 -1.780000e+00 9.817037e+00 4.190183e+00 -1.767355e+01 3.181910e+01 23 +-1.780000e+00 -1.740000e+00 5.975587e+00 2.550547e+00 -1.048800e+01 1.840849e+01 14 +-1.740000e+00 -1.700000e+00 5.548760e+00 2.368364e+00 -9.545105e+00 1.642027e+01 13 +-1.700000e+00 -1.660000e+00 2.560966e+00 1.093091e+00 -4.314286e+00 7.268198e+00 6 +-1.660000e+00 -1.620000e+00 2.987794e+00 1.275273e+00 -4.889778e+00 8.002809e+00 7 +-1.620000e+00 -1.580000e+00 5.975588e+00 2.550546e+00 -9.577661e+00 1.535178e+01 14 +-1.580000e+00 -1.540000e+00 2.134138e+00 9.109094e-01 -3.338561e+00 5.222807e+00 5 +-1.540000e+00 -1.500000e+00 4.268276e-01 1.821819e-01 -6.485781e-01 9.855350e-01 1 +-1.500000e+00 -1.460000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-1.460000e+00 -1.420000e+00 4.268278e-01 1.821819e-01 -6.229367e-01 9.091490e-01 1 +-1.420000e+00 -1.380000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-1.380000e+00 -1.340000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-1.340000e+00 -1.300000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-1.300000e+00 -1.260000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-1.260000e+00 -1.220000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-1.220000e+00 -1.180000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-1.180000e+00 -1.140000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-1.140000e+00 -1.100000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-1.100000e+00 -1.060000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-1.060000e+00 -1.020000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-1.020000e+00 -9.800000e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-9.800000e-01 -9.400000e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-9.400000e-01 -9.000000e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-9.000000e-01 -8.600000e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-8.600000e-01 -8.200000e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-8.200000e-01 -7.800000e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-7.800000e-01 -7.400000e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-7.400000e-01 -7.000000e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-7.000000e-01 -6.600000e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-6.600000e-01 -6.200000e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-6.200000e-01 -5.800000e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-5.800000e-01 -5.400000e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-5.400000e-01 -5.000000e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-5.000000e-01 -4.600000e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-4.600000e-01 -4.200000e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-4.200000e-01 -3.800000e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-3.800000e-01 -3.400000e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-3.400000e-01 -3.000000e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +# END YODA_HISTO1D + +# BEGIN YODA_HISTO1D /gaps/log10y56 +Path=/gaps/log10y56 +ScaledBy=1.5213690739441659e-07 +Title= +Type=Histo1D +XLabel= +YLabel= +# Mean: -3.582652e+00 +# Area: 1.714780e+04 +# ID ID sumw sumw2 sumwx sumwx2 numEntries +Total Total 1.714780e+04 7.319158e+03 -6.143460e+04 2.250285e+05 40175 +Underflow Underflow 1.466153e+03 6.257949e+02 -6.990336e+03 3.364129e+04 3435 +Overflow Overflow 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +# xlow xhigh sumw sumw2 sumwx sumwx2 numEntries +-4.300000e+00 -4.260000e+00 1.459751e+02 6.230620e+01 -6.248300e+02 2.674536e+03 342 +-4.260000e+00 -4.220000e+00 1.438409e+02 6.139530e+01 -6.098786e+02 2.585877e+03 337 +-4.220000e+00 -4.180000e+00 1.609140e+02 6.868257e+01 -6.756488e+02 2.836947e+03 377 +-4.180000e+00 -4.140000e+00 1.788408e+02 7.633421e+01 -7.438346e+02 3.093780e+03 419 +-4.140000e+00 -4.100000e+00 1.895115e+02 8.088876e+01 -7.807761e+02 3.216777e+03 444 +-4.100000e+00 -4.060000e+00 2.142675e+02 9.145530e+01 -8.741523e+02 3.566328e+03 502 +-4.060000e+00 -4.020000e+00 2.385967e+02 1.018397e+02 -9.638848e+02 3.893942e+03 559 +-4.020000e+00 -3.980000e+00 2.710356e+02 1.156855e+02 -1.084007e+03 4.335519e+03 635 +-3.980000e+00 -3.940000e+00 2.902428e+02 1.238837e+02 -1.149071e+03 4.549207e+03 680 +-3.940000e+00 -3.900000e+00 3.423158e+02 1.461099e+02 -1.341684e+03 5.258685e+03 802 +-3.900000e+00 -3.860000e+00 3.692060e+02 1.575873e+02 -1.431958e+03 5.553871e+03 865 +-3.860000e+00 -3.820000e+00 4.157302e+02 1.774452e+02 -1.595929e+03 6.126602e+03 974 +-3.820000e+00 -3.780000e+00 4.532910e+02 1.934772e+02 -1.722544e+03 6.545867e+03 1062 +-3.780000e+00 -3.740000e+00 5.207298e+02 2.222619e+02 -1.957939e+03 7.361898e+03 1220 +-3.740000e+00 -3.700000e+00 5.279859e+02 2.253590e+02 -1.963836e+03 7.304531e+03 1237 +-3.700000e+00 -3.660000e+00 5.809125e+02 2.479496e+02 -2.137552e+03 7.865511e+03 1361 +-3.660000e+00 -3.620000e+00 6.107904e+02 2.607023e+02 -2.223118e+03 8.091654e+03 1431 +-3.620000e+00 -3.580000e+00 6.419489e+02 2.740015e+02 -2.310580e+03 8.316597e+03 1504 +-3.580000e+00 -3.540000e+00 6.782292e+02 2.894870e+02 -2.414566e+03 8.596200e+03 1589 +-3.540000e+00 -3.500000e+00 6.598756e+02 2.816532e+02 -2.323104e+03 8.178621e+03 1546 +-3.500000e+00 -3.460000e+00 6.526196e+02 2.785561e+02 -2.270888e+03 7.901986e+03 1529 +-3.460000e+00 -3.420000e+00 6.419489e+02 2.740015e+02 -2.208415e+03 7.597416e+03 1504 +-3.420000e+00 -3.380000e+00 6.223148e+02 2.656211e+02 -2.116107e+03 7.195649e+03 1458 +-3.380000e+00 -3.340000e+00 5.941441e+02 2.535972e+02 -1.996645e+03 6.709884e+03 1392 +-3.340000e+00 -3.300000e+00 6.001198e+02 2.561478e+02 -1.992515e+03 6.615623e+03 1406 +-3.300000e+00 -3.260000e+00 5.241444e+02 2.237194e+02 -1.719456e+03 5.640746e+03 1228 +-3.260000e+00 -3.220000e+00 5.079250e+02 2.167964e+02 -1.645891e+03 5.333448e+03 1190 +-3.220000e+00 -3.180000e+00 4.652422e+02 1.985783e+02 -1.489004e+03 4.765612e+03 1090 +-3.180000e+00 -3.140000e+00 4.199985e+02 1.792670e+02 -1.327201e+03 4.194030e+03 984 +-3.140000e+00 -3.100000e+00 3.807303e+02 1.625062e+02 -1.188115e+03 3.707709e+03 892 +-3.100000e+00 -3.060000e+00 3.576816e+02 1.526684e+02 -1.101774e+03 3.393865e+03 838 +-3.060000e+00 -3.020000e+00 2.979258e+02 1.271630e+02 -9.060402e+02 2.755455e+03 698 +-3.020000e+00 -2.980000e+00 2.898160e+02 1.237015e+02 -8.696831e+02 2.609794e+03 679 +-2.980000e+00 -2.940000e+00 2.300601e+02 9.819604e+01 -6.810366e+02 2.016073e+03 539 +-2.940000e+00 -2.900000e+00 2.189626e+02 9.345930e+01 -6.394456e+02 1.867432e+03 513 +-2.900000e+00 -2.860000e+00 1.916456e+02 8.179966e+01 -5.520373e+02 1.590174e+03 449 +-2.860000e+00 -2.820000e+00 1.843896e+02 7.870257e+01 -5.235936e+02 1.486824e+03 432 +-2.820000e+00 -2.780000e+00 1.519507e+02 6.485676e+01 -4.254782e+02 1.191404e+03 356 +-2.780000e+00 -2.740000e+00 1.344507e+02 5.738730e+01 -3.711245e+02 1.024435e+03 315 +-2.740000e+00 -2.700000e+00 9.945085e+01 4.244838e+01 -2.705964e+02 7.362808e+02 233 +-2.700000e+00 -2.660000e+00 8.749969e+01 3.734729e+01 -2.346092e+02 6.290589e+02 205 +-2.660000e+00 -2.620000e+00 7.810947e+01 3.333929e+01 -2.063096e+02 5.449327e+02 183 +-2.620000e+00 -2.580000e+00 6.317050e+01 2.696292e+01 -1.641781e+02 4.267018e+02 148 +-2.580000e+00 -2.540000e+00 5.463395e+01 2.331928e+01 -1.398750e+02 3.581185e+02 128 +-2.540000e+00 -2.500000e+00 4.182911e+01 1.785382e+01 -1.054938e+02 2.660636e+02 98 +-2.500000e+00 -2.460000e+00 3.201207e+01 1.366364e+01 -7.941134e+01 1.969976e+02 75 +-2.460000e+00 -2.420000e+00 3.243890e+01 1.384582e+01 -7.923107e+01 1.935237e+02 76 +-2.420000e+00 -2.380000e+00 1.878042e+01 8.016003e+00 -4.505429e+01 1.080879e+02 44 +-2.380000e+00 -2.340000e+00 1.963407e+01 8.380367e+00 -4.635020e+01 1.094217e+02 46 +-2.340000e+00 -2.300000e+00 1.621945e+01 6.922911e+00 -3.761231e+01 8.722329e+01 38 +-2.300000e+00 -2.260000e+00 8.536554e+00 3.643638e+00 -1.947298e+01 4.442134e+01 20 +-2.260000e+00 -2.220000e+00 1.195117e+01 5.101093e+00 -2.675066e+01 5.987843e+01 28 +-2.220000e+00 -2.180000e+00 4.268277e+00 1.821819e+00 -9.384951e+00 2.063610e+01 10 +-2.180000e+00 -2.140000e+00 4.268277e+00 1.821819e+00 -9.226594e+00 1.994531e+01 10 +-2.140000e+00 -2.100000e+00 2.134138e+00 9.109094e-01 -4.530094e+00 9.616247e+00 5 +-2.100000e+00 -2.060000e+00 1.280483e+00 5.465456e-01 -2.671949e+00 5.575768e+00 3 +-2.060000e+00 -2.020000e+00 2.134138e+00 9.109094e-01 -4.345335e+00 8.847881e+00 5 +-2.020000e+00 -1.980000e+00 8.536554e-01 3.643638e-01 -1.705871e+00 3.408881e+00 2 +-1.980000e+00 -1.940000e+00 4.268276e-01 1.821819e-01 -8.388888e-01 1.648756e+00 1 +-1.940000e+00 -1.900000e+00 1.707311e+00 7.287275e-01 -3.273572e+00 6.277061e+00 4 +-1.900000e+00 -1.860000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-1.860000e+00 -1.820000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-1.820000e+00 -1.780000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-1.780000e+00 -1.740000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-1.740000e+00 -1.700000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-1.700000e+00 -1.660000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-1.660000e+00 -1.620000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-1.620000e+00 -1.580000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-1.580000e+00 -1.540000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-1.540000e+00 -1.500000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-1.500000e+00 -1.460000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-1.460000e+00 -1.420000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-1.420000e+00 -1.380000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-1.380000e+00 -1.340000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-1.340000e+00 -1.300000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-1.300000e+00 -1.260000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-1.260000e+00 -1.220000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-1.220000e+00 -1.180000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-1.180000e+00 -1.140000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-1.140000e+00 -1.100000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-1.100000e+00 -1.060000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-1.060000e+00 -1.020000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-1.020000e+00 -9.800000e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-9.800000e-01 -9.400000e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-9.400000e-01 -9.000000e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-9.000000e-01 -8.600000e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-8.600000e-01 -8.200000e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-8.200000e-01 -7.800000e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-7.800000e-01 -7.400000e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-7.400000e-01 -7.000000e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-7.000000e-01 -6.600000e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-6.600000e-01 -6.200000e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-6.200000e-01 -5.800000e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-5.800000e-01 -5.400000e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-5.400000e-01 -5.000000e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-5.000000e-01 -4.600000e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-4.600000e-01 -4.200000e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-4.200000e-01 -3.800000e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-3.800000e-01 -3.400000e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +-3.400000e-01 -3.000000e-01 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0 +# END YODA_HISTO1D + diff --git a/gaps-1.1/test/completedevents.sh b/gaps-1.1/test/completedevents.sh new file mode 100644 index 0000000..938aa46 --- /dev/null +++ b/gaps-1.1/test/completedevents.sh @@ -0,0 +1,25 @@ +# Algorithm to get all the completed events data +# Not really worth putting in rungaps, so in Test + +# Move to the root directory +cd .. + +# Remove the old and make the new results directory +rm -rf results +mkdir -p results + +# Run for 1000, 10000, 100000 events and get results +for i in 1000 10000 100000 +do + echo "Running for $i events" + # Run the algorithm + ./bin/gaps $i + mv gaps-cycles.dat results/gaps-cycles-$i.dat +done + +# For 1000000 events, profile and store the results +echo "Running for 1000000 events" +# Run the algorithm +nsys profile --stats=true ./bin/gaps 1000000 > profile.log +mv gaps-cycles.dat results/gaps-cycles-1000000.dat +mv profile.log results/profile.log \ No newline at end of file diff --git a/gaps-1.1/test/mplstyleerc b/gaps-1.1/test/mplstyleerc new file mode 100644 index 0000000..6297440 --- /dev/null +++ b/gaps-1.1/test/mplstyleerc @@ -0,0 +1,21 @@ +# To match with LaTeX Paper +font.family: serif +font.serif: Times New Roman +font.size: 7 +font.weight: 400 +text.usetex: True +text.latex.preamble: \usepackage{amsmath} +mathtext.fontset: cm +mathtext.rm: Times New Roman +mathtext.it: Times New Roman:italic +mathtext.bf: Times New Roman:bold +mathtext.cal: Times New Roman:caligraphic + +# Common settings +axes.titlesize: 12 +axes.labelsize: 10 + +# Savefig settings +savefig.bbox: tight +savefig.pad_inches: 0.1 + diff --git a/gaps-1.1/test/plot-completedevents.py b/gaps-1.1/test/plot-completedevents.py new file mode 100644 index 0000000..702c9b1 --- /dev/null +++ b/gaps-1.1/test/plot-completedevents.py @@ -0,0 +1,62 @@ +import numpy as np +import matplotlib.pyplot as plt +import pandas as pd + +import matplotlib as mpl +mpl.rc_file("mplstyleerc") + +# Plotting Number of Completed Events per cycle and Number of newly Completed +# Events per cycle + +# Plot +fig, ax = plt.subplots(1, 2, figsize=(9, 3.75)) + +nev = [1000, 10000, 100000, 1000000] + +for n in nev: + + filename = "../results-events/gaps-cycles-" + str(n) + + temp = np.genfromtxt(filename + ".dat", delimiter='\n') + temp /= n # Divide by number of events + + comp = np.zeros((200)) + diff = np.zeros((200)) + max = 0 + + comp[:len(temp)] = temp + comp[len(temp):] = temp[-1] + + for i in range(1, len(temp) - 1): + + diff[i] = temp[i] - temp[i-1] + + if len(temp) > max: + max = len(temp) + + comp = comp[:max] + comp = np.append(comp, 0.) + + diff = diff[:max] + diff = np.append(diff, 0.) + + cycles = np.arange(1, len(comp) + 1) + + ax[0].scatter(cycles, comp, label=str(n) + ' Events ') + ax[0].plot(cycles, comp, alpha=0.5) + ax[0].set_xlabel('Cycle') + ax[0].set_ylabel('Number of Completed Events / Total') + ax[0].set_title('Number of Completed Events per Cycle') + ax[0].legend() + ax[0].grid(True) + + ax[1].scatter(cycles, diff, label=str(n) + ' Events ') + ax[1].plot(cycles, diff, alpha=0.5) + ax[1].set_xlabel('Cycle') + ax[1].set_ylabel('Number of Newly Completed Events / Total') + ax[1].set_title('Number of Newly Completed Events per Cycle') + ax[1].legend() + ax[1].grid(True) + +fig.tight_layout() +plt.savefig("completedEvents.pdf") diff --git a/gaps-1.1/test/plot-executiontime.py b/gaps-1.1/test/plot-executiontime.py new file mode 100644 index 0000000..5e561d3 --- /dev/null +++ b/gaps-1.1/test/plot-executiontime.py @@ -0,0 +1,147 @@ +import numpy as np +import matplotlib.pyplot as plt +import pandas as pd +from scipy.stats import iqr + +import matplotlib as mpl +mpl.rc_file("mplstyleerc") + +# Data to plot +nev = np.array([1, 2, 5, 10, 20, 50, 100, 200, 500, 1000, + 2000, 5000, 10000, 20000, 50000, + 100000, 200000, 500000, 1000000]) + +# Params +nreps = 100 + +dir_to_results = "../results-times/" + +# import data +cpp_full = np.genfromtxt(dir_to_results + "cpp-time.dat", delimiter=',') +cud_full = np.genfromtxt(dir_to_results + "gaps-time.dat", delimiter=',') + +# Calculate the average and standard deviation for all repetitions +cpp_median = np.zeros((len(nev), 4)) +cud_median = np.zeros((len(nev), 4)) + +cpp_iqr = np.zeros((len(nev), 4)) +cud_iqr = np.zeros((len(nev), 4)) + +for i in range(len(nev)): + + """ + # To Check if there are any outliers + if nev[i] == 5000: + print(cud_full[i*nreps:i*nreps+nreps]) + + fig, ax = plt.subplots() + ax.hist(cud_full[i*nreps:i*nreps+nreps, 0], bins=50) + fig.savefig("histo.pdf") + """ + + cpp_median[i] = np.median(cpp_full[i*nreps:i*nreps+nreps], axis=0) + cud_median[i] = np.median(cud_full[i*nreps:i*nreps+nreps], axis=0) + + cpp_iqr[i] = iqr(cpp_full[i*nreps:i*nreps+nreps], axis=0) + cud_iqr[i] = iqr(cud_full[i*nreps:i*nreps+nreps], axis=0) + +cpp = cpp_median +cud = cud_median + +# Convert the arrays to pandas DataFrames for easier printing +columns_lin = ['Matrix Element', 'Parton Shower', 'Observables', 'Total'] +cpp_df = pd.DataFrame(cpp, index=nev, columns=columns_lin) +cud_df = pd.DataFrame(cud, index=nev, columns=columns_lin) + +# Calculate the ratios and convert to integer +cpp_cud_ratio = (cpp / cud) + +# Convert the ratio arrays to DataFrame +cpp_cud_ratio_df = pd.DataFrame(cpp_cud_ratio, index=nev, columns=columns_lin) + +# Print the DataFrame +print("CPU / GPU Ratio for different Number of Events:") +print(cpp_cud_ratio_df) +print("\n") + +# Initialize p as a 3D array +p = np.zeros((2, 2, 2)) + +# Define the labels for printing +labels = ["GPU Matrix Element Gradient", "GPU Parton Shower Gradient", + "GPU Observables Gradient", "GPU Total Gradient"] + +# Loop over the columns - to prevent lots of repeated statements +""" +For i = 0, i // 2 is 0 and i % 2 is 0. +For i = 1, i // 2 is 0 and i % 2 is 1. +For i = 2, i // 2 is 1 and i % 2 is 0. +For i = 3, i // 2 is 1 and i % 2 is 1. + +Kept it here because I thought it was a neat way of doing loops! +""" +for i in range(4): + + # Linea Fit + p1, c1 = np.polyfit(np.log(nev[14:]), np.log(cud[14:, i]), 1, cov=True) + + # Linear Fit + p[i//2, i % 2, :] = p1 + + # Print the results + print(labels[i], ":", round(p1[0], 3), "±", round(np.sqrt(c1[0, 0]), 3)) + +# print(p) + +# Create a new figure with a 4x2 grid of subplots +fig, axs = plt.subplots(2, 2, figsize=(10, 6.4)) + +# Define the column names +columns = [['Matrix Element', 'Parton Shower'], ['Observables', 'Total']] + +# Add this line to adjust the space between subplots +fig.subplots_adjust(wspace=1, hspace=1) + +# Add linspace for the linear fit +x = np.linspace(40000, 1300000, 1000) + +# Loop over the columns and plot the data +for i in range(2): + for j in range(2): + ax = axs[i, j] + cpp_errorbar = ax.errorbar( + nev, cpp[:, 2*i + j], yerr=cpp_iqr[:, 2*i + j], fmt='o', color='C0') + cud_errorbar = ax.errorbar( + nev, cud[:, 2*i + j], yerr=cud_iqr[:, 2*i + j], fmt='o', color='C2') + cpp_plot = ax.plot(nev, cpp[:, 2*i + j], color='C0', alpha=0.3) + cud_plot = ax.plot(nev, cud[:, 2*i + j], color='C2', alpha=0.3) + fit_plot = ax.plot(x, np.exp(p[i, j, 1]) * x**p[i, j, 0], color='C1', + linestyle='--') + + ax.set_xscale('log') + ax.set_yscale('log') + ax.set_xlabel('Number of events') + ax.set_ylabel('Execution time (s)') + ax.set_title(columns[i][j]) + ax.grid(True) + + # Add a vertical line + ax.axvline(x=5120, color='C2', linestyle='--') + + # Create a proxy artist for the axvline to use in the legend + v100_gpu_cores_line = mpl.lines.Line2D( + [], [], color='C2', label="V100 GPU Cores") + + # Create a list of handles and labels manually, including the proxy artist + handles = [cpp_errorbar, cud_errorbar, + v100_gpu_cores_line, fit_plot[0]] + labels = ['CPU', 'GPU', "V100 GPU Cores", + "Linear Fit, Gradient = " + str(round(p[i, j, 0], 2))] + + # Add the legend with the updated handles and labels + ax.legend(handles, labels) + + ax.legend(handles, labels) + +fig.tight_layout() +plt.savefig('executionTime.pdf') diff --git a/gaps-1.1/test/plots.conf b/gaps-1.1/test/plots.conf new file mode 100644 index 0000000..00b8bcf --- /dev/null +++ b/gaps-1.1/test/plots.conf @@ -0,0 +1,88 @@ +# BEGIN PLOT /.* +LegendXPos=0.74 +LegendYPos=0.95 +# END PLOT + +# BEGIN PLOT /gaps/log10y23 +Title=Differential $2 \to 3$ jet resolution (Durham algorithm) at 91.2 GeV +XLabel=$\log_{10}(y_{23})$ +YLabel=$\text{d}\sigma/\text{d}\log_{10}(y_{23})$ +LegendXPos=0.7 +LegendYPos=0.95 +XMin=-4 +XMax=-0.4 +YMin=4e2 +# END PLOT + +# BEGIN PLOT /gaps/log10y34 +Title=Differential $3 \to 4$ jet resolution (Durham algorithm) at 91.2 GeV +XLabel=$\log_{10}(y_{34})$ +YLabel=$\text{d}\sigma/\text{d}\log_{10}(y_{34})$ +XMin=-4 +XMax=-0.8 +# END PLOT + +# BEGIN PLOT /gaps/log10y45 +Title=Differential $4 \to 5$ jet resolution (Durham algorithm) at 91.2 GeV +XLabel=$\log_{10}(y_{45})$ +YLabel=$\text{d}\sigma/\text{d}\log_{10}(y_{45})$ +XMin=-4 +XMax=-1.2 +# END PLOT + +# BEGIN PLOT /gaps/log10y56 +Title=Differential $5 \to 6$ jet resolution (Durham algorithm) at 91.2 GeV +XLabel=$\log_{10}(y_{56})$ +YLabel=$\text{d}\sigma/\text{d}\log_{10}(y_{56})$ +XMin=-4 +XMax=-1.6 +# END PLOT + +# BEGIN PLOT /gaps/tvalue +Title=Thrust $(1 - T)$ at 91.2 GeV +XLabel=$1 - T$ +YLabel=$\text{d}\sigma/\text{d}(1 - T)$ +# END PLOT + +# BEGIN PLOT /gaps/tzoomd +Title=Thrust $(1 - T)$ at 91.2 GeV - zoomed in +XLabel=$1 - T$ +YLabel=$\text{d}\sigma/\text{d}(1 - T)$ +XMin=0 +XMax=0.1 +# END PLOT + +# BEGIN PLOT /gaps/hjm +Title=Heavy Jet Mass at 91.2 GeV +XLabel=$\rho_H$ +YLabel=$\text{d}\sigma/\text{d}\rho_H$ +XMax=0.65 +# END PLOT + +# BEGIN PLOT /gaps/ljm +Title=Light Jet Mass at 91.2 GeV +XLabel=$\rho_L$ +YLabel=$\text{d}\sigma/\text{d}\rho_L$ +XMin=0 +XMax=0.4 +# END PLOT + +# BEGIN PLOT /gaps/wjb +Title=Wide Jet Broadening at 91.2 GeV +XLabel=$B_W$ +YLabel=$\text{d}\sigma/\text{d}B_W$ +XMax=0.3 +# END PLOT + +# BEGIN PLOT /gaps/njb +Title=Narrow Jet Broadening at 91.2 GeV +XLabel=$B_N$ +YLabel=$\text{d}\sigma/\text{d}B_N$ +# END PLOT + +# BEGIN PLOT /gaps/dalitz +Title=Dalitz plot at 91.2 GeV +XLabel=$x_1$ +YLabel=$x_2$ +PlotSize=8,8 +# END PLOT \ No newline at end of file diff --git a/gaps-1.1/test/rivet-command.sh b/gaps-1.1/test/rivet-command.sh new file mode 100644 index 0000000..1d504d6 --- /dev/null +++ b/gaps-1.1/test/rivet-command.sh @@ -0,0 +1,6 @@ +# Command to Make Plots of Jet and Event Shapes +# Write something similar in the terminal +rivet-mkhtml -s --mc-errs -c plots.conf \ + ../cpp.yoda:"C++" \ + ../gaps.yoda:"GAPS" \ + SH-Tutorial.yoda:"S. H." \ \ No newline at end of file -- GitLab